Three unique features of Lisp in 2010 - <AUTHOR> http://john.freml.in/lisp-features

<comment><USER2> Perl has #1, it's called "local". Any "our" global variable can be automatically overridden for anything in the current scope, and is automatically returned to its original value once the scope ends. One of my favorite uses is to store some concept of the "user's role" in such a variable, but when I temporarily need superuser access for some reason, I give myself a scope, "local" the superuser role, do my thing, close the scope, and don't spend a lot of time worrying about whether the user will get accidentally upgraded to a superuser.

I'm not sure any other language has the exact Lisp behavior for #3, but all the pieces in various combinations are certainly around. Perl actually has the ability to do some kooky leaping around its closures, though it requires some syntax:

       sub x {
           my $y = sub { goto TEST; };

           $y->();

           print "will not see\n";

           TEST: print "here we are\n";
        }

        x();

Which is not exactly what was described, but can be used in some of the places where you'd use that.

<comment><USER3> _Perl has #1, it's called "local". Any "our" global variable can be automatically overridden..._

And not just _our_ variables but also subroutine calls can be localised in the scope:

        sub bar { 'bar' }
        sub baz { bar() }

        sub foo {
            no warnings 'redefine';
            local *bar = sub { 'My Bar' };
            baz();
        }

        say foo();   # => 'My Bar'
        say bar();   # => 'bar'
        say baz();   # => 'bar'

Thus you have localised _monkey patching_.

<comment><USER4> Once you have dynamically scoped variables, you can implement dynamically scoped functions. There's a really great paper by Pascal Costanza showing how to to this, and why it's the mechanism behind aspect-oriented programming (no, it's not just monkey-patching!): [http://www.scribd.com/doc/47747298/Dynamically-Scoped- Functi...](http://www.scribd.com/doc/47747298/Dynamically-Scoped-Functions-as- the-Essence-of-AOP)

You can generalize this to dynamically scoped object slots or whatever else you want, which Pascal does in the ContextL library: <http://common- lisp.net/project/closer/contextl.html>

Actually, you don't even need built-in dynamic scoping, you can emulate it using unwind-protect (try-finally), which can itself be emulated: <http://home.pipeline.com/~hbaker1/MetaCircular.html>

Once you have all that, you can implement Common Lisp's condition system. Here's Red Daly's implementation for JavaScript (Parenscript): [https://github.com/gonzojive/paren- psos/commit/6578ad223515d...](https://github.com/gonzojive/paren- psos/commit/6578ad223515dc2c1ddf49346f4baf7c3bee37c4)

Of course, none of this is very useful without macros. For the condition system, you also have to be careful because any intermediate function that doesn't follow the protocol might swallow the exception.

The reason you want dynamic scoping is because it completely obviates the need for dependency injection or the service locator pattern. DI is IMO by far the stupidest fad in object-oriented programming, which is no small feat.

The Common Lisp condition system is great for doing things like writing network libraries. For example, an HTTP client library can throw any exception, like timeout, transfer error, encoding error, whatever, and offer a restart to let your retry the request (in just one place, independent of the exceptions). If you just want to retry but don't care why the thing failed, you do that. If you don't care about retrying, you just catch the error and report it, or whatever you want.

The other thing about the Common Lisp condition system is that it provides introspection on conditions and restarts. This means I can do things like offer correct condition support for programs running across thread (and, eventually, network) boundaries transparently in Eager Future2 (<http://common-lisp.net/project/eager-future/>), in a portable way. By contrast, it's going to be impossible for C++ libraries using C++0x futures to be correct wrt exceptions without leaking their abstractions all over the calling code (if you don't wrap the exception, the information is not correct because who knows what thread/environment the future executed in, and if you do wrap it, you change the entire API).

</comment></comment></comment><comment><USER5> Clojure brings a couple other unique features to the table:

      * Pervasive use of performant persistent data structures.
      * Pervasive "time" (state/identity) management.
      * Dynamic type classes (w/o punting on the expression problem)

And in 2010 Clojure has something unique among _other Lisps_ \- it's core data structures are built on proper abstractions. They are extensible and you can even swap in your own implementations.

EDIT: modified the points to make them more specific. From what I can tell Haskell doesn't ship with persistent datastructures w/ Clojure's perf guarantees. And the concurrency stuff (STM etc) is tucked away in libraries that need to be imported. So _pervasive_ here is key in the sense that these features are considered core languages primitives.

<comment><USER6> > And in 2010 Clojure has something unique among other Lisps - it's core data > structures are built on proper abstractions. They are extensible and you can > even swap in your own implementations.

To the extent this makes sense, it's equally true of Common Lisp.

<comment><USER7> > To the extent this makes sense, it's equally true of Common Lisp.

I'm afraid not. Christophe Rhodes has a proposal for an extensible sequence protocol, but AFAIK it is implemented only in SBCL. There's no portable way in CL to extend the built-in hash tables. And you certainly can't have your own cons class that responds to the built-in CAR and CDR.

Of course you can always shadow the builtin names and redefine them in your package as generic functions; this is what I did in my FSet functional collections library. But that's not quite the same thing as having extensibility designed in.

</comment></comment></comment><comment><USER8> 1\. Special variables are pretty unique, but I think that's because people designing languages these days don't think they are a good idea. Debug flags seem to be the "killer app", as it were, and I do often wish I could have a special variable in another language for just that reason.

Of course, it's pretty easy to implement that functionality on top of C++ if you really want to. It's a little ugly, but it works.

2\. I've never used that before, but it looks _really nice_. It seems pretty straightforward to implement in any language with full continuations, but such languages are sadly very rare.

3\. That's kind of vague. He mentions mutating the state of the lexical closure, which doesn't appear to have any downsides, save potentially making a program harder to reason about and dangerous race conditions (say, with pmap). I'd be all for getting those in more languages.

The other thing he mentions looks like basically a multi-level return, which (while certainly a powerful feature) seems like a great way to break encapsulation. That sounds like one of those features that we might be better off having, but only if most people don't know about it. Fortunately, it's pretty straightforward to implement in terms of continuations (even the limited continuations some JVM languages have based on the throw/catch primitives).

</comment><comment><USER9> Why not mention

\- macros

\- compiler macros

\- reader macros

What other languages have these? What was done with compiler macros in cl- ppcre is something that doesn't seem possible anywhere else.

<comment><USER10> As was mentioned in the last Lisp macros thread, Forth's defining words. All of the flow control constructs and any words that use a unique syntax are defined through this mechanism.

</comment></comment><comment><USER11> 1\. Special variables seems really like a take it or leave it idea. I'm really not convinced that keeping these as explicit arguments of a function are a bad idea. I really like the ability to reason about a function by simply knowing its arguments (including the mplicit self/this).

2\. Condition handling seems generally useful. There are definitely cases I could have used this. It's probably pretty straightforward to add to languages that have exceptions. Although I'd be surprisd to see it appear (pleasantly surprised).

3\. I'm a little confused about this one... He's talking about just modifying the bound variables? C# and VB do this. And presumably Ruby and Python can too -- although he seems to allude to the fact that Python can't, which doesn't make sense (otherwise it seems odd to call them closures) -- or did I miss what he is really talking about (which I suspect I am)?

<comment><USER12> > Condition handling seems generally useful. There are definitely cases I > could have used this. It's probably pretty straightforward to add to > languages that have exceptions.

Actually, it's not. In "normal" exceptions by the time an exception gets to you the computation that threw it is gone. The exception mechanism has to travel up the call stack to find the handler, and can't get back to where it was.

You can _fake it_ in many languages, but you can't retroactively make the language support the behavior. You end up with a nasty mess that, although it may be powerful, is so far removed from the normal idioms of the language everyone you work with will want to kill you for doing it.

<comment><USER11> _Actually, it's not. In "normal" exceptions by the time an exception gets to you the computation that threw it is gone._

This depends on how you model control flow. What's become more common now is to have very explicit control flow modeling so you have pseudo-edges from every place an exception can occur to the catch block (of course fewer with synchronous exceptions).

So when the exception is thrown you keep the frame on the stack, shove your IP, and go to the new handler -- like a function call. From the handler you have five potential exit points:

1) Pop stack, jmp... continue control flow from where the exception took place,if recovery succeeds.

2) Fall out the bottom if it was handled, but not "recovered".

3) Go to next recovery handler in list, if there is one.

4) Unwind.

5) New exception.

With that said, there are as many ways to implement exception handling as there EH mechanisms. Every one of mine I've done pretty differently, but in everyone of them I think could implement condition handling pretty easily.

<comment><USER12> The point I was making was more about the prospect of adding condition handling as a language user to an existing language. Basically that most language implementations make it impossible to add something like this using the tools provided by the language. I suppose at points go it was a bit of a silly one.

The difficulty in adding it to the language when modifying the language implementation is an open option is much lower.

<comment><USER11> OK, gotcha. I misunderstood. With that I agree.

</comment></comment></comment></comment></comment><comment><USER13> Ruby has at least 1. and 3.

1\. "usable global variables" exist in two forms; the rarely used $ sigil, as in $foo (automatically global), and the more commonly used hack of defining attributes and accessors on a class (for which there's standard macrology, cattr_accessor, in Rails).

3\. Everything he mentions as properties of Lisp closures is commonly done with Ruby blocks (modifying variables in enclosing scopes; use of "return" in a block to return from the enclosing method).

That leaves the condition system. I'm not aware of another commonly used environment that lets you say, for instance, "if you were about to throw a FileNotFound exception, try doing this instead first". But unlike the other two, I'm not sure that's a feature of Lisp dialects in general, as Common Lisp in particular...

<comment><USER14> You're missing the point of 1. It's not simply "you can use globals", it's that you can rebind them in a thread-isolated way that stacks.

Ruby blocks aren't really first-class without getting converted into procs, and it's pretty un-idiomatic to pass these around like actual values. Even then they're not "first-class" as most calls happen via method calls rather than function invocation.

</comment></comment><comment><USER15> What he describes in the condition system is also available in many implementations of Exceptions. Everything he describes has been available in Smalltalk for longer than a decade.

<comment><USER16> Dynamic variables can be done in Smalltalk via restartable exceptions but they aren't part of the language. Also, restartable exceptions are not nearly as nice as the condition system. That being said, Smalltalk is a beautiful language.

</comment></comment><comment><USER17> I'm not sure I get the global variables bit?

I know in Clojure you can rebind a var in a certain context with the 'binding' form... is that what they mean?

<comment><USER18> Yes. They're often called "special variables" or "dynamic variables" in a Lisp context - their value is checked within the current scope, not the (lexical) context in which they were defined.

</comment></comment><comment><USER19> These are great features of Lisp. But I am going to make a bold statement and say: although they are extremely great features, you do not need any of them to build awesome applications.

</comment><comment><USER20> "It would be great if some these ideas would be massaged into other languages."

Of course, this would be possible if they had macros!

<comment><USER18> Not really. The first has to do with how variable scope is managed. The second involves exception handling, and if your language unwinds the stack while looking for a handler, it's usually already too late.

The third has to do with how local variables are managed for functions defined at runtime - while you _could_ rewrite code with macros to pass an implicit closure value array to the function at all points of use, it would be quite a bit less awkward to have it part of the language proper. Heck, it's not that unusual to have C functions that take a void * argument for "userdata"; the function/userdata combination is one way of representing closures when compiling to C.

<comment><USER20> Yeah I was waiting for someone to call me on this. I thought it might not be possible but wasn't sure. Mostly it was cool to see a "unique features of Lisp" blog post which didn't even mention macros.

</comment></comment></comment><comment><USER21> But isn't the definition of global at #1 a local thread closure captured variable?

I don't see why this is global...

<comment><USER18> Modifications to the global variable have local scope: "as long as we're within the body of this function (including function calls), modify stdout to this file buffer instead". It's distinct from global and lexical variables.

</comment></comment><comment><USER22> intersting, more so than most lisp is better articles.

like others here commented #1 sounds meh

#2 sounds awesome

#3 re Python (and intial mention that languages arent written in themselves) just sounds like author is not up to date with modern python.

<comment><USER18> #1 is definitely not meh, it's actually really practical if you're doing real work in Lisp. It seems meh if you're doing academic "basic CS concepts" exercises in Lisp, though.

> #3 re Python (and intial mention that languages arent written in themselves) > just sounds like author is not up to date with modern python.

        Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32
        Type "copyright", "credits" or "license()" for more information.

        >>> def foo():
        	x = 0
        	def bar(y):
        		x += y
        		return x
        	return bar

        >>> baz = foo()
        >>> baz(3)

        Traceback (most recent call last):
          File "<pyshell#10>", line 1, in <module>
            baz(3)
          File "<pyshell#7>", line 4, in bar
            x += y
        UnboundLocalError: local variable 'x' referenced before assignment

Is 2.7.1 not "modern" enough? I was under the impression that a lot of people are still on 2.7 rather than switching to Python 3. (I switched to Lua for scripting; it has working closures, lambdas, tail recursion, etc.)

<comment><USER22> the way original was worded it didn't sound like author was describing that particular wart, but, rather believing closures didn't exist. Generators, yield.

PyPy</comment></comment></comment>


The British amateur who debunked the mathematics of happiness (2014) - <AUTHOR> https://www.theguardian.com/science/2014/jan/19/mathematics-of-happiness-debunked-nick-brown <comment><USER2> My wife is working on a PhD in psychology (she intends to do clinical work) and after hearing about the mathematical "training" they receive in order to do research, I was astonished at the lack of rigour. One personal anecdote stands out. Myself being a professional statistician, she would sometimes come to me for help with her assignments. On one assignment, her professor had misunderstood one particular statistic and had given then a problem that wasn't well defined. I helped her craft a polite email to her professor explaining the ambiguity and asking for a resolution. The professor got extremely defensive and did not answer the question, and none of her colleagues realized that the question was incorrect either. And don't get me started on the conclusions they draw from the smallest of trials... /rant Sorry.

<comment><USER3> Related to your last point, the slow-burning controversy about P-hacking/Data Dredging:.

\- [https://en.wikipedia.org/wiki/Data_dredging](https://en.wikipedia.org/wiki/Data_dredging) \- [https://fivethirtyeight.com/features/science-isnt- broken/](https://fivethirtyeight.com/features/science-isnt-broken/)

One particular favorite (used in the above): [https://projects.fivethirtyeight.com/p-hacking/](https://projects.fivethirtyeight.com/p-hacking/)

<comment><USER4> quick question, how well does pre-registration protect against p-hacking?

<comment><USER5> P-hacking can be done by analyzing the data in different ways until a significant effect is found, and then failing to report all of the analyses done. There is no universal way to analyze data (especially what collected data to include); there are choices that are made and this leads to a "garden of forking paths" where if you look around the garden enough noise alone will give you 'signicance'. Preregistration makes this impossible by declaring your analysis before collecting data.

</comment></comment></comment></comment><comment><USER6> "The second-century Stoic sage Epictetus argued that "Your will needn't be affected by an incident unless you let it". In other words, we can be masters and not victims of fate because what we believe our capability to be determines the strength of that capability."

That is absolutely _not_ what Epictetus meant. In fact, like other Stoics, he taught his students a technique called negative visualization that is _literally_ the opposite of positive thinking. The author couldn't have picked a worse example of an ancient precursor to positive psychology.

<comment><USER7> I have read almost all of the biographies and works covering Epictetus. Just want to confirm you are correct. Stoicism at it's true core was how to react to a life that was foretold. Most stoics believed their date was predetermined but now how they dealt with it. In context, Stoicism was the cure to being dealt a rough hand by "fate". It holds up so well that many modern therapies, such as CBT, can be directly connected. Now, we of course don't think probably believe in destiny here on HN (in general). Anyway just providing some color for how off the author was.

Stoics lived with death as a way to take the right course of action. E.g. if I knew this was my last day with my daughter how would I act? Could I claim to have made good choices or would I have regrets.

</comment></comment><comment><USER8> It's interesting how positive psychology is coming under attack from all directions, and I think reflects many of the shortcomings that have been festering in the field.

From the very liberal / progressive side, Barbara Ehrenreich (author of "Nickel and Dimed") has been making the case for the last 10 years that positive psychology is simply the last ditch effort of capitalists to "maintain morale" while Western living standards triumphantly continue their 5th decade in decline.

From a conservative side, a lot of religious leaders have made the case that positive psychology is simply an attempt by secularists/humanists to dethrone the notion of morals, suffering (a big thing in Christianity) etc. and put human pleasure as the highest of all goals.

<comment><USER9> > while Western living standards triumphantly continue their 5th decade in > decline.

Are living standards really lower continually over the last 50 years? At least in the UK I think that absolute poverty is down over a shorter time, median household incomes at up significantly, life expectancy is up. What's continually gone down?

<comment><USER10> All of those things for white men, at least since 2008.

Which you can read either way ( _oy, I must have karma to burn?_ ). On the one hand, the anti-capitalist left in the US has historically had a contingent with racial undertones. On the other hand, literally every other group's station was improved at least in part through government mechanisms (equal protection under law, civil rights, etc.) rather than market mechanisms.

<comment><USER11> As a pasty white man myself, life has been improving steadily since 2008. My income I think has doubled since then, I've lost about 20lbs of fat and I've picked up some cool new hobbies!

True, I did have to get a relevant degree and not be an idiot at work to advance, but life is pretty good overall.

Now if you mean that being a White Man by itself isn't enough anymore to get you a cushy life style, then yes, it's not. Welcome to the place _everyone else has been in since forever_.

<comment><USER12> There's a lot of people who weren't invited to the party.

The "able bodied, but aren't working number is close to an all time high. I believe it's higher than when women stayed at home while hubby worked?

I have never seen this amount of homelessness. I see daily. Im becoming too hardened to the suffering.

People used to have the privilege of having two shitty jobs. Now--those jobs are coveted, as careers, by hard working immigrants--that see nothing wrong with fitting six people in a 10 x 12 foot room.

Look at the jobs on Craigslist. Work with us for three hours a day, or on call? So many are just rediculious. Buy a four door, late model car, we approve of, and go into a slow debt death. Or, the amount of thieving bastards who know they can get away with terrible work conditions, and pay that makes showing up debatable.

Crime is down. Cameras are everywhere. People/business don't use cash like they used too. Surveillance is everywhere. And like always, the rich seem to get treated better by the justice system? Fees/fines have never been so high. Only the wealthy can afford to commit crimes? Oh, and they do run afoul of so many laws.

Look at all the young scholars who are living at home. Many living at a family home that will probally not be passed down because mom and dad will be forced into a reverse mortgage.

In tech--yes, the party is fierce. I do notice the new cars. I notice the carefree attitude. There's a liberal air of "Hay--it's just hard work? I'm just more clever than that guy?".

I hope it all lasts.

I guarantee so many of you will be right here wondering what the hell happened, on a old device? I think a new version of the punk movement will pop up. The hippie movement won't be the joke it currently is. Hell--the denial might protect a lot of you when the money dries up?

</comment></comment></comment></comment></comment><comment><USER13> The "Amateur" is a PhD student now and has lot of citations on his google scholar. I am happy for him to have such a good impact on the field even though he started late.

[https://scholar.google.com/citations?user=feMcJ4UAAAAJ&hl=en](https://scholar.google.com/citations?user=feMcJ4UAAAAJ&hl=en)

<comment><USER14> It seems he has found his niche: finding flags in Psychology papers. His most recent publications are refutations of other papers:

* No Evidence That Twitter Language Reliably Predicts Heart Disease: A Reanalysis of Eichstaedt et al.(2015a)

* Through a womb, darkly: Methodological problems in a recent study of fetal visual perception

* Emodiversity: Robust predictor of outcomes or statistical artifact?

<comment><USER15> Sounds like he's directly addressing the lack of replication that we bemoan so much.

</comment></comment></comment><comment><USER16> Sigh.

"British semi-retired network engineer educated in mathematics at Cambridge finds mathematical flaw in popular psychology paper and enlists Alan Sokal's help to debunk it."

Sure wish folks would quit sucking on the "amateur vs. the establishment" teat.

That aside, this was a fun read, and I think it's another example of why scientific progress in the future is going to have to be more multidisciplinary than it has been in the past.

<comment><USER17> > Sure wish folks would quit sucking on the "amateur vs. the establishment" > teat.

I think it's an awesome narrative. What do you dislike about it?

<comment><USER18> The problem I have with it is that it helps to legitimize the view that an uneducated person's opinions and intuitions are more valid than expertise. In the current political climate, it's dangerous to continue stoking that narrative. As the parent said, the guy was hardly an amateur, but an antivaxer/global warming denier/etc. will view it as confirmation that establishment science is corrupt.

<comment><USER19> > it's dangerous to continue stoking that narrative.

What, even in cases where it is right? You are steering dangerously close to saying "We the Elite should close ranks". And that sort of thing is the fuel of the very fire that you are trying to put out.

The fact is as humans we have no option but to trust our own judgement on things: either by studying them directly or by judging which experts to trust. And this article shows you can't assume experts are right just because society puts them in a particular position.

In the article we told that Nick Brown, an IT guy who knew high-school level maths, who discovered that an important paper by well respected psychology prof was BS when it was presented to him at a university psych class.

Why had the profession swallowed it? Apparently because their maths is so bad that they just swallowed what they were told, and (according to _The Guardian_ ) the few with qualms didn't feel anyone would be interested in hearing the contrary view.

<comment><USER15> I don't think it's necessarily that everyone in the whole psychology profession has worse than highschool level math skills. I think it's more just that, at some level, you have to trust that your colleagues have done their work correctly. You focus on the important parts of the paper (ie. the hypothesis, the method, and the results) because there's not enough time in your life to give full scrutiny to every detail of every paper you read. So sometimes, something slips through the cracks, until it's caught.

<comment><USER20> At which level in the sciences are you ever supposed to trust that your colleagues have done their work correctly? That sounds more like the opposite of what you are supposed to be doing.

<comment><USER15> At the level where it takes more than one lifetime's research to reinvent your field from ground zero, it's literally impossible to progress the field without taking _something_ on faith.

Well before that, though, it becomes impractical to re-check every single thing. And the longer-established a field is, the more you have to take on faith.

<comment><USER20> So then you have to go to other people in that field and have them look at it. Sure, you have to take them on faith too, but a little bit less each time unless they all wildly disagree, and they can explain their reasoning to you in layman terms when you canvas their opinion. Now, none of this guarantees success, but it is a long way from trusting others to just do their work properly.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> >"Just as zero degrees celsius is a special number in thermodynamics," wrote Fredrickson in Positivity, "the 3-to-1 positivity ratio may well be a magic number in human psychology."

Well this statement still stands.

<comment><USER22> I don't understand, what is the special status of 0C?

<comment><USER14> The author is confused. 0C is special to _us_ because it is the freezing point of water, but that doesn't really make it special within thermodynamics -- it's just the freezing point of some arbitrary substance at an arbitrary pressure (ATP). 0C isn't even the _only_ freezing point of water -- if you add impurities or change the pressure, you can change the freezing point!

Maybe 0K (Kelvin) is special, since that implies zero gas entropy, but 0C doesn't have any magical properties.

<comment><USER23> Interestingly, unlike the boiling point, the melting point is not that dependent on the atmospheric pressure: for a wide range around 100kPa, it stays at 0C [1].

[1] Wikipedia: [https://en.wikipedia.org/wiki/Pressure_melting_point](https://en.wikipedia.org/wiki/Pressure_melting_point)

</comment></comment></comment></comment><comment><USER24> [https://arxiv.org/pdf/1307.7006.pdf](https://arxiv.org/pdf/1307.7006.pdf) Such an amusing read!

<comment><USER25> You have to respect (fear?) a paper that Sokal and Pinker have helped with.

<comment><USER26> With Gelman in there too? Definitely fear.

</comment></comment></comment><comment><USER27> Fun fact, one of the big guys in positive psychology accidentally inspired the Bush torture program, which was similarly based on scientific-sounding nonsense.

[https://www.newyorker.com/science/maria-konnikova/theory- psy...](https://www.newyorker.com/science/maria-konnikova/theory-psychology- justified-torture/amp)

<comment><USER17> That's like saying that our understanding of respiratory anatomy inspired water boarding.

I'm glad _New Yorker_ has improved its journalistic standards a little since then.

</comment></comment><comment><USER28> Typically in U.S. psychology majors, statistics is required and is taken in the Spring of the student's senior year. I've been playing with the idea of having statistics be the second course (after intro) in a psychology major so that all other courses could build on the students' quantitative understanding.

<comment><USER29> It seems to me that stats and scientific method are the core of psychology. All the domain-specific content is just common sense. This quote from Brown says something "Not many psychologists are even good at the maths and statistics you have to do as a psychologist.". Perhaps even rename psychology to "statistical study of fuzzy ideas" or something.

<comment><USER30> Statistics is not the core of psychology, it is the core of having a publishable result. Psychologists want to do just enough statistics that they can claim to have a p-value<0.05 so they can get it into a journal. They don't care if their assumption of normality is correct, or if their assumption of independence is correct, or if the question they asked on the survey is actually measuring the thing they want to measure (spoiler alert: it usually doesn't, but we have a hard time measuring the brain). So they willfully ignore the assumptions because acknowledging that they were violated would mean that they would have to learn more complicated statistical methods. The current use of stats in psychology is just an attempt to make it look like their research is rigorous, when in reality it is usually broken.

The ideas of the scientific method are fine in psychology, but since most studies use WIERD samples, don't be surprised that many of those results don't generalize to other demographics.

</comment></comment></comment><comment><USER31> I am the person featured in the Observer article (for "proof", see the account with this username on Twitter). AMA. :-)

<comment><USER32> What are your thoughts on the "rest" of Frederickson's research? You seem content to debunk only Losada's math (charitably characterized as a "brain fart"), where this article seems more willing to lambast positivity research on the whole as self-serving mumbo-jumbo.

<comment><USER31> At the time that interview was published I didn't know too much about it. Since then I have published about 5 articles critiquing various other work from the same lab. It mostly seems very weak, but I'm not sure if it's any worse than most of research in the wider field of social psychology (and peripheral subfields that use similar underpowered research methods). For example, I have also been involved in looking at the work coming out of the Cornell Food and Brand Lab (GIYF) and much of that seems to be catastrophically bad.

<comment><USER31> Link to the Cornell story: [https://news.ycombinator.com/item?id=15351006](https://news.ycombinator.com/item?id=15351006)

</comment></comment></comment></comment><comment><USER33> It's great that this has been picked up recently, it's something I've been following along with for a while. If anyone is interested, James Heathers runs a podcast called Everything Hertz ([https://twitter.com/hertzpodcast](https://twitter.com/hertzpodcast)) with Dan Quintana and Nick has been a guest on it - it's well worth listening to if you're interested in science full stop.

These guys aren't researchers in my area of interest but the topics they cover are interesting and done very entertainingly!

</comment><comment><USER34> Nice to see Sokal's name come up, he's the first person I thought of when the article outlined the obvious bullshit use of advanced maths in a psychology paper. It's amazing how far stuff like this can get within a field before someone gets round to calling it out.

<comment><USER35> Another physicist, David Deutsch, also does a good job in _The Beginning of Infinity_ , Chapter 12 'A Physicist's History of Bad Philosophy'. I can't do it justice here but part of the problem is that we don't understand what 'happiness' is yet and therefore it's a problem how to measure it, let alone self-report it.

</comment></comment><comment><USER36> An amateur who did the work. He was doing a relevant degree and collaborated with people with more experience or expertise in relevant fields. That's how you provide useful critique of scientific theories.

</comment><comment><USER26> One thing I'm confused about is why most of the criticism has come on the Positive Affect paper and not the original "The complex dynamics of high performance teams" paper, which the most of the math is drawn from.

</comment><comment><USER37> A common topic I see is the surfeit of trained scientists, and how many of them are unable to find employment in their field (professor or other acceptably remunerative research position). Maybe many of these guys out there are simply not good enough to do science, and we should raise the bar for entry to these training programs if so many of their graduates fundamentally misunderstand the mathematics their analyses rely upon.

</comment><comment><USER38> > "Each of them appeared to quote and promote one another, creating a virtuous > circle of recommendation."

There should be a word for this - is there? It runs like a red thread in all sorts of dubious endeavors in the public sphere.

<comment><USER39> _self-congratulatory ring_?

<comment><USER40> Circle jerk?

</comment></comment></comment><comment><USER41> I read to the end of the article hoping to find out what exactly the error in the math and/or reasoning was. Apart from some vague mentions of how the "tipping point" might be influenced by other factors, there was no detail. This article is largely content-free.

</comment><comment><USER42> 95% of published papers are bulls __t and you know it the moment you read the abstract. The problem is having the time and energy along with a healthy disregard for the gatekeepers on your academic path to keep pursuing this.

That's why it usually takes an outsider to publicize this stuff.

<comment><USER43> When I think about how most papers are written by a student, with credit given to their professor, and I think of what a mess is code written by developers the same age as those grad students... It's amazing we get as much right as we do.

And I know we are getting things right because I have a phone in my pocket that has surmounted thousands upon thousands of puzzles in physics and chemistry over the last twenty years to do what it does.

<comment><USER44> I'd wager that most papers in most fields are bullshit, but it doesn't matter because no one reads them or bothers to attempt applying them or building on them.

</comment></comment></comment><comment><USER45> > If your ratio was greater than 2.9013 positive emotions to 1 negative > emotion you were flourishing in life.

I cannot fathom how honest, intelligent people end up thinking they've "solved" for something like happiness or flourishing in a mathematically meaningful way. And to 4 decimal places!

<comment><USER43> I am just picturing someone haranguing a person for dropping them from 2.92 to 2.90 and 'ruining everything.'

<comment><USER46> You should watch Black Mirror s3e1 "Nosedive"!!

</comment></comment></comment><comment><USER47> It's too bad the field of positive psychology is left to people like this, because it asks useful questions and would benefit a lot from serious research.

</comment><comment><USER48> >"Just as zero degrees celsius is a special number in thermodynamics," wrote Fredrickson in Positivity, "the 3-to-1 positivity ratio may well be a magic number in human psychology."

I can't tell if he does or doesn't understand thermodynamics.

<comment><USER49> I'm assuming she was thinking of zero degrees kelvin.

</comment></comment><comment><USER25> Here's the nub of it:

> _" Not many psychologists are very good at maths," says Brown. "Not many > psychologists are even good at the maths and statistics you have to do as a > psychologist."_

It's amazing -- well not at all amazing really! -- that the most successful people in any scientific field come from an engineering and physics background.

One of my favourite quotes is from Kelvin:

> _I often say that when you can measure what you are speaking about, and > express it in numbers, you know something about it; but when you cannot > measure it, when you cannot express it in numbers, your knowledge is of a > meagre and unsatisfactory kind; it may be the beginning of knowledge, but > you have scarcely, in your thoughts, advanced to the stage of science, > whatever the matter may be. "_

And ... mentioning Kelvin is a nice segue to this quote from the article:

> _" Just as zero degrees celsius is a special number in thermodynamics," > wrote Fredrickson in Positivity, "the 3-to-1 positivity ratio may well be a > magic number in human psychology."_

Almost Sokal-ish in its attempt to borrow some relevance. Zero C is not very special. Zero Kelvin is!

<comment><USER50> > Almost Sokal-ish in its attempt to borrow some relevance. Zero C is not very > special. Zero Kelvin is!

I am sorry if I give the impression of nitpicking but I live in a Celsius world and zero c is special because it means water freezes. (and snow instead of rain)

<comment><USER51> It's special in our human world, but not in thermodynamics / physics. Water is just a molecule like all the others, it's not special.

Whereas 0K is the absolute minimum temperature, so that's a really special value!

<comment><USER50> I'd say water freezing is still interesting thermodynamics/physics :). (But I agree 0K is another kind of mark)

</comment></comment></comment></comment><comment><USER14> I've always thought that English / many other humanities departments learned to avoid much of the controversy that plagued Psychology departments by simply avoiding any data altogether.

If Fredericks and Losada had written nearly the same thing, using the same evidence but without the fancy maths, it would no doubt be accepted and lauded within English departments. Any attempts to fight it could be battled in the same way the humanities departments responded to Sokal in the 90's: by derriding him as "a pedant, a literalist and a cultural imperialist".

<comment><USER52> I do not think your argument fair. In fact I find it disappointing. Some things lend themselves to collecting numbers and figures and measurements, and other things quite simply do not. Philosophy, history, literature, and human languages are what first come to my mind as important fields of study that have significant impact on our outlook on the universe, but we can't scientifically measure them. Indeed it is philosophical thought and ideas that underpin our modernity. Moreover, much of our collective advancement is in significant peril because 'the arts' have been devalued so much. (Although William H. Miller just donated a significant sum to the John Hopkins philosophy department since he felt his degree in philosophy made him so successful.)

What you go on to speak of in your second paragraph is the art of rhetoric, and ironically you have unwittingly engaged in the very sort of ad hominem attack which you are complaining that you think that liberal arts scholars would use to defend their position.

An ad hominem attack is a classic logical fallacy and that is something that I suggest you research.

<comment><USER22> Unfortunately, in order to make certain claims, you have to have metrics. Just because something is hard to measure doesn't mean you can forego it.

<comment><USER52> How do you measure the impact of John Locke, David Hume and Adam Smith?

</comment></comment></comment></comment><comment><USER53> When are we as a society going to clearly point out that psychology and related disciplines are not science, and that young people shouldn't confuse them with science?

<comment><USER54> Probably never given how broad the field of psychology is. The demarcation line probably runs somewhere through the field, but to separate the two sides between science and not science is an open problem. Hell, it cosmology and evolution also suffer from similar problems, but those fields are far less controversial.

<comment><USER55> Yes. As a psych major in college, I was astonished to find that the same major included, say, quantifying the changes in neurons in rat brains after rats were exposed to specific stimuli, and empirically unmoored speculation about supposed universal desires to have sex with one's mother.</comment></comment></comment>


Call of Duty Elite security issue - <AUTHOR> http://www.reddit.com/r/gaming/comments/mc1yj/call_of_duty_elite_has_amazing_security/

<comment><USER2> Wow, and to think I just signed up for an elite account an hour ago. Luckily I used my "I don't want to give you my real password" password.

</comment><comment><USER3> Is that Reddit thread typical of the lack of awareness of password security?

<comment><USER4> Doubtful. The post was made to /r/gaming and was vaguely about COD, which is a very politically charged subject there.

Had it been posted to virtually any other subreddit the thread would have been less stupid and troll-y.</comment></comment>


Looking for a co-founder for a SaaS startup.  - <AUTHOR>

If you feel this idea would make the world better and could see yourself as one of the founders please send me a email at email@example.com
So the idea is that your company can register an account and have your own PRIVATE twitter on our site. So for instance, you run Tatango...for this example lets say that there are four team members. You register an account for tatango, and get a unique subdomain like: tatango.getteamspeak.com and you as an administrator can grant user accounts for tatango. So you basically have your own private twitter running for your company, Tatango.
You can upload files to posts and setup quick todos. For instance for a todo it'd look something like this: @todo for emilhajric: please fix navigation on #projectname.
In terms of pricing, I was thinking we'd offer two options. You have the free option(only comes with the standard twitter for your business) and you have the paid version/premium which includes the standard twitter for your business along with the @todo feature, adding files inside your updates, etc..
Best of luck,
Emil Hajric. <comment><USER2> Can't you do this with <http://drop.io/>?

<comment><AUTHOR> You've missed the point. Drop.io isn't Team collaboration software. This application would be focused on helping teams collaborate, drop.io is (based on what I saw) more focused on file sharing collaboration.

<comment><USER3> I really think that it should not matter so much with this idea that there are similar existing startups. Since most of the time the actual product changes anyway, it is important that you have a good direction. I would be interested to see how many users Drop.io and Yammer have. That could actually be a validation that you have users that desire what you want to build.

</comment></comment></comment><comment><USER4> What's the difference between your idea and Yammer.com?

<comment><AUTHOR> a) Different functionality. b) Yammer is an enterprise.

</comment></comment><comment><USER5> have you heard of asana.com?</comment>


How a Pyramid Scheme Doomed the World's Largest Amphibians - <AUTHOR> https://www.theatlantic.com/amp/article/560786/?single_page=true <comment><USER2> Wow. What a sad fucking read.</comment>


The 'clean plate' mentality drives us to overeat? - <AUTHOR> https://news.vanderbilt.edu/2018/11/27/the-clean-plate-mentality-drives-us-to-overeat-to-go-bags-can-help/ <comment><USER2> I've come to believe that singular scientific papers should be consider "only slightly above noise". Like ants leaving weak pheromones when they find food: It works well in scale but close to random in the particular case. I feel this is even more true nowadays, when the marginal utility of improved rigorousness is so low.

This article reads to me like a PR piece for the (marketing) professor more than an honest showcasing of scientific findings: The results are very relatable and feel intuitively true so as a reader it's easy to pick it up as "ammunition" for future family dinner discussions and thus are also good for the media to publish. So there's no need for rigorous science. (I mean come on, "participants were asked to imagine eating a certain number of cookies (...) and then asked how much they wanted one more cookie.")

</comment><comment><USER3> My wife's grandparents are very much the "you aren't leaving until you clear your plate" kind of people and it's given her mother a lot of anxiety around food and weight. I grew up in a family of 7 where food was scarce and some nights you were lucky to get anything at all for dinner so I'm also inclined to eat way too much at each meal.

Because of this (and for other reasons) we never ever make our daughter clear her plate. If she says she's full she can walk away. We also keep healthy snacks around the house (fruits, vegetables, whole grains, a very small amount of "junk" food) so she does "graze" throughout the day. But we don't force food habits on her because I don't want her growing up with a complex around food or her weight. It's more important to me that she make healthy nutrition choices overall and keeps in touch with her body about when she's hungry. I feel like pushing for a clean plate goes against that.

<comment><USER4> I have exactly the same story. My grandparents gave my mother a borderline eating disorder. Happily she became a nutritionist and helps lots of people … but the depression-era trauma still affects us today.

<comment><USER5> Same story here too. It took me a long time to untrain myself from clearing my plate, so we try not to let our kids think that the quantity of food available should affect how much food they eat. It sounds so obvious when it's phrased that way.

</comment></comment></comment><comment><USER6> Our household rule was "if you put it on your plate you had to finish it; if someone else put it on your plate you don't have to" (with some parental modulation such as "yes you are having some of these Brussels sprouts" or "finish the beans before you go for seconds").

Parents don't like to see food wasted (it took money to buy and time to prepare and the alternatives aren't good for kids) but these rules were also on us: don't put an unreasonable amount of food on the kids' plates.

<comment><USER7> That makes sense as a training mechanism for kids to not just overfill their plates regardless of how hungry they are.

But it is important to realize that food that you force someone to eat after they feel properly full is worse than wasted. Not only have you already spent time and money to prepare it, which you won't get back, but you also just made their stomach ache. And you have taken whatever little agency they have as a kid - now they freaking don't even get to decide how hungry they are.

(This is not directed at you, as you seem to have a reasonable system in place. Your comment just seemed like a good place to plug this rant) :)

<comment><USER6> They do learn to have agency: think plan ahead and make your own decision. Live with the consequences of your decision.

As I noted every decision is modulated by parental intervention — if a kid made an obvious mistake, possibly intervene early "are you sure you want six bao? Just take a couple — you can always have more" or late "ok, but see the problem? Next time let's be more careful."

Yeah, parenting is non-algorithmic, and once (if?) you get good at it it's too late to do it again.

<comment><USER8> > Yeah, parenting is non-algorithmic, and once (if?) you get good at it it's > too late to do it again.

Arguably multi-generational households with grandparents on hand are able to take advantage of this. This is perhaps not as useful as it was centuries ago, due to how fast society and the situations a family might face have shifted.

<comment><USER6> Good point. This is one hypothesis for why human females live beyond the end of fertility (so-called "grandmother thesis")

</comment></comment></comment></comment></comment><comment><USER9> At the risk of sounding preachy, I was raised with the "clean plate" philosophy and avoided overeating by planning beforehand what I could reasonably eat, and never putting anything more on my plate. Once you get rid of the incentive at the very end to eat just a bit more, I don't see this as being a huge problem anymore.

<comment><USER10> It works when you serve yourself or otherwise have control over your own portions. When I moved away to college I found that suddenly I usually cleaned my plate _and_ didn't overstuff myself. Ditto when I cook for myself.

Not everybody eats under those conditions. When I was a kid my parents would always put food on my plate, and I was expected to eat it all. They usually put too much, because nobody wants to be the parent who starves their kid. Similarly, restaurants always tend to err on the side of serving too much rather than too little, as do family gatherings or dinner parties where the guests do not serve themselves.

<comment><USER9> Interestingly, the my parents were the ones serving me for the majority of my childhood. I guess they had already internalized this rule and knew how much food I needed ;)

At restaurants, we would usually skimp on appetizers and other "fluff" before the main course, which I have found makes the total amount of food not overly large.

<comment><USER11> Tbh your post reads as 'I avoided overeating by me learning how much I needed to eat and me never putting extra on the plate'

In reality I guess you had unusual parents who were good at telling how much you needed, so you didn't avoid this problem in any way at all, you were just not subject to it.

<comment><USER9> I need to serve myself now, so I still think the suggestion applies?

</comment></comment></comment></comment></comment><comment><USER12> At least where I live in Norway I would argue that it is not the amount of food you eat during a meal that is a problem but everything else in between regular meals (coke, chocolate, chips etc.).

<comment><USER13> I've eliminated all snacking and soda calories from my life and I still have a big problem with maintaining/losing weight. Definitely should be helping though.

<comment> black-tea So you're eating 4-5 meals a day, I suppose? Eat two meals and you will lose weight. Simple as that.

<comment><USER13> I'm usually two or three meals. Just hard to control portion consistently.

<comment> black-tea Try weighing out your carbs and the rest of the meal should sort itself out. Pasta and rice should be about 100-125g for a normal man.

</comment></comment></comment></comment></comment><comment><USER14> I wonder if this has been replicated - wasn't immediately obvious to me, and I'm now perhaps overly suspicious of any and all food science claims after the Wansink disaster:

[https://www.vox.com/science-and- health/2018/9/19/17879102/br...](https://www.vox.com/science-and- health/2018/9/19/17879102/brian-wansink-cornell-food-brand-lab-retractions- jama)

</comment><comment><USER15> Mom: "There are starving kids in China, eat all your food!". Thanks Mom; kids are still starving there, and now America is fat. --unkown comedian.

I was told, as a kid, that it was rude to not eat all the food put in front of you, especially at other people's houses. Other parents would comment on how polite we children were for clearing our plates.

<comment><USER16> > "There are starving kids in China, eat all your food!"

This does not make much sense to me. If eating all your food is the only alternative to throwing food out, it is sort of OK, but even then, it does not solve the issue at all because you are the one eating all the food, not the starving kids in China.

Additionally, why come up with such nonsense? This is one of the worst things you could do to your kid. You should instead educate them and tell them the actual reasons for why one should not waste food.

Mind you, if you cook less instead, then you would not have to eat them, nor throw them out. :)

<comment><USER17> The missing implication, that even parents completely missed, was "you should be grateful to have food, and you show that gratitude by eating all the food on your plate."

Still completely unhelpful to the starving, and still orthogonal...

<comment><USER18> And also that eating all your food implies that you thought it tasted good. Leaving a bunch behind says: I didn't like it.

</comment></comment></comment></comment><comment><USER19> My grandparents were poor Oklahoman migrants. You ate your food when you had it; you and your neighbors were close to starvation. You cooked your meat (when you had it) thououghly because it wasn't always fresh. You kept every little thing so you have something later.

These behaviors are passed down through generations, but what was adaptive is now maladaptive.

</comment><comment><USER20> The best that ever happened to my health was gaining complete control over what I eat.

I eat only what I want, when I want. And how much I want.

The trade off, of course, is dying alone. But hey, health!

<comment><USER21> > dying alone

I don't think it's unreasonable to have a partner and eat differently to them. It's pretty common where someone has a dietary requirement.

</comment></comment><comment><USER22> I feel like that, I am from a violent family who would force me to finish my plate, now it's very hard for me not to finish at the restaurant.

</comment><comment><USER23> Beeminder taking this to characteristic extremes: [https://blog.beeminder.com/waisted](https://blog.beeminder.com/waisted)

</comment><comment><USER24> I was affected by a similar philosophy for a long time. For me, it's an aversion to wastefulness for the theoretical sake of ecology and economics. The logical flaw I'm seeing now is that overeating to the point of obesity or indigestion is more of a waste and throwing the food away, and what I need to do is purchase less or give it to someone else.

Even worse, I have celiac and an esophagus condition that is much worse with overeating, and habitually at restaurants I'd clean my plate because I thought getting a takeout box was a waste, but I did not want to see the food be thrown out. I also see a similar pattern with containers of packaged food. I'm much more likely to finish that last one or two cookies or handfuls of chip crumbs and leave them for later.

I'm not sure that this study contains any new useful advice, but it is a real phenomenon.

</comment><comment><USER25> This was annoying growing up in a household with a stay-at-home european mother who cooked huge, delicious, but calorie-dense meals. We were taught to always clean our plates, but were expected to say "when" while the chef served and _never_ actually stopped immediately upon hearing "when".

In adulthood though, having completely restructured my diet to something devoid of calorie-dense, quickly-digested fillers, none of this matters. I never have leftovers of whatever I'm eating, just to avoid the hassle; food going bad, or simply less cleanup. It's of no lasting negative consequence to my weight.

I think this issue is largely a red herring as a result. _What_ you're eating dictates the significance of _how much_. If you fix the what, how much becomes irrelevant.

</comment><comment><USER26> The real innovation here is - to-go bags.

Just keep a spare zip-loc bag in your pocket, ready for the sudden and embarrassing situation when you are full with food left on the plate.

</comment><comment><USER27> The almond experiment sounds ridiculous! Asking people to imagine eating ten chocololate-covered almonds then to guess how much they'd like to eat another after their hypothetical consumption? Does this produce results as reliable as actually eating the almonds in the first place?

</comment><comment><USER28> The reminds me of the "bottomless bowls" experiment [0]. I know it from a TV show where it was recreated a few years ago but it was actually a real study.

> Using self-refilling soup bowls, this study examined whether visual cues > related to portion size can influence intake volume without altering either > estimated intake or satiation.

> Participants who were unknowingly eating from self-refilling bowls ate more > soup than those eating from normal soup bowls. However, despite consuming > 73% more, they did not believe they had consumed more, nor did they perceive > themselves as more sated than those eating from normal bowls. This was > unaffected by BMI.

[0] [https://www.ncbi.nlm.nih.gov/pubmed/15761167](https://www.ncbi.nlm.nih.gov/pubmed/15761167)

</comment><comment><USER29> So either you eat yourself into a depression or you get depressed because your constant throwing away is fucking up [your ability to stay on] the planet. Such great times to be alive.

<comment><USER30> Because not putting more on your plate than you're going to eat isn't an option?

<comment><USER29> There's a whole mechanic in the art of buying, preparing and cooking just enough. I've lived for nearly 40 years and I'm still not great at it.

</comment></comment></comment><comment><USER31> It also happens in reverse: you tend to fill the size of plate you have, the size of glass, etc.

At buffets I either pick small plates or intentionally pick a small number of items regardless of how much of the plate is used.

With soda for instance I eventually realized that the main reason I was drinking a certain amount was a combination of the cup size and the straw. I switched to tiny cups that I drank from directly and found I could _easily_ make that last a meal and have some left. Now I barely drink soda.

</comment><comment><USER32> As a rule of thumb, I tell myself that it's better to throw away food than to overeat. (Preparing just the right amount is even better, but more difficult.)

<comment><USER33> What about saving for the next day, composting or donating?

As a former professional cook it burns me to see such a casual suggestion to waste food. I've worked for people who would weigh the food you swept up off the floor at the end of the day to illustrate waste.

<comment><USER34> For myself at least, saving food for the next day is rather difficult. Mainly because nowadays I very seldom cook food for myself, a lot of my food consumption is through ready made meals that I can just put in the oven or microwave. The packaging almost always warns that this type of food cannot be reheated so I don't save it. I think a lot of people do this.

Even if I do cook for myself I am often unsure whether it is safe to reheat the food, and for how long.

<comment><USER35> As long as you keep the food in the fridge and heat it properly when you reheat it (so it gets boiling hot) the vast majority of food keeps for several days in the fridge.

I leave pea soup and pot currys at room temp (19-23c) for 24-48 hours before I eat them; after that they keep for several days in the fridge.

If you live in a warm climate and/or leave food uncovered all day then you're asking for problems. In those cases I wouldn't reheat them..

</comment></comment></comment></comment><comment><USER36> The finish-your-plate mentality can be especially troublesome in a household where food disappears quickly. I had an older brother and a dad who ate a lot, so if I didn't take enough food in my first serving then I might not get any more.

It took me well into college to realize that (especially in a dining hall) I could serve myself a conservative-sized portion and get more later if I was still hungry.

</comment><comment><USER37> Coming from south asia, I wish cleaning your plate was enough in my family. If you don't take seconds and thirds it's an insult to the host.

</comment><comment><USER38> If I go out for dinner and get served a big meal, I'm going to stuff myself silly and if I eat breakfast at all the next morning it'll be a banana or something. It really isn't hard to balance out your calorie intake across meals. I have a hard time believing that the insidious 'clean plate' mentality is the real culprit behind why so many people are fat.

</comment><comment><USER39> I never really understood why one shouldn't waste food. On other hand there are several reasons why one might waste a bit of it (may be it wasn't as tasty as expected/you overestimated your hunger).

It's not like food prices fluctuate based on everyone wasting certain portion of food. Global food prices are usually dependent on the supply side more than demand side.

</comment><comment><USER40> Simple rule: if you put food on your own plate you should eat it all, if someone else puts food on your plate you are allowed to leave as much or as little of it as you want. That way you will hopefully learn to take only as much food as you will want to eat.

</comment><comment><USER41> Another solution is making smaller portions. The sizes restaurants give you are ginormous.

<comment><USER33> Ridiculous idea to downvote. I almost never finish restaurant meals, I'll take the second half for lunch the next day or give it to someone on the walk home.

But suggesting portion control would be advocating more personal responsibility, so maybe that explains peoples' "disagreement." So much easier to toss in the trash, right?

<comment><USER42> I always feel bad when asking to pack the leftovers at the restaurant.

is it rude or a sign of being poor? I'm unsure.

<comment><USER43> > Is it rude or a sign of being poor?

Thinking about wether or not it is a sign of being poor is a sign of being poor. What would Scrooge McDuck do?

<comment><USER44> > What would Scrooge McDuck do?

Whatever the f __* he wants.

</comment></comment></comment></comment></comment><comment><USER45> I'll never totally give up the clean plate mentality but at the same time, giving up the clean plate mentality was instrumental for me losing weight. Just put less on your plate. Then add more, judiciously.

</comment><comment><USER46> This should be common sense.

Obviously, wasting food is bad. But if you've already served yourself too much, it's a sunk cost. This should be taught to kids, even if it's a somewhat more complicated lesson.

</comment><comment><USER47> I never leave anything on the plate, unless it's so bad I wouldn't eat it even if I was starving. I do this even at all-you-can-eat buffets.

To avoid overeating, I only eat once a day.

</comment><comment><USER42> the leftovers are food for my enemies <\- my mom

so I always had to finish.

</comment><comment><USER48> An abundance of food and a willingness to take more than you need if the cause. "Clean plate" would not be an issue if there wasn't too much already on the plate.

Furthermore, what's on the plate matters as well. Three fried pieces of chicken and mashed potatoes with gravy is not the same as broiled chicken with steamed vegetables.

I suspect - based on anecdotal evidence - people who often over eat also too often eat badly.

</comment><comment> your-nanny just get smaller plates. large plates encourage over eating by encouraging you to put more food on them than is reasonable.

<comment><USER49> That was the key for me. I switched to smaller plates, and I quit gaining weight. It helped enforce portion control, which I am horribly bad at if left to my own devices.

</comment></comment><comment><USER50> the takeaway it's to order children portions when eating outside and use smaller plates when at home

</comment><comment> black-tea When you eat only two meals a day, every plate is clean. Trust me. You shouldn't eat anything at all outside of meal time.</comment>


New Math for Artificial Neurons - <AUTHOR> http://spectrum.ieee.org/computing/embedded-systems/new-math-for-artificial-neurons

<comment><USER2> At first, I thought this was going to be a software idea, which would be exciting. The fact that it's hardware is even more important; this could mean faster-than-human parts in the not-too-distant future.

Of course, when your desktop develops schizophrenia, you'll wish for a classical processor.

</comment><comment><AUTHOR> After a coding day like I've had today, I feel like my neurons could be effectively replaced by Lincoln Logs.

</comment><comment><USER3> So does this put computers up with humans on the sentience quotient?

<http://en.wikipedia.org/wiki/Sentience_quotient>

<comment><USER4> Nowhere close, since the quotient you linked to is based on the processing speed and mass of the processing unit. The wikipedia articles uses 0.1 ugrams as the average weight of a neuron - this device, of purported similar processing speed, sits on a small pcb. Even if you threw out everything but the FPGA silicon, it's going to weigh a great deal more.

<comment><USER3> Coming soon: PCBs made of neurons.</comment></comment></comment>


Hans Peter Luhn and the Birth of the Hashing Algorithm - <AUTHOR> https://spectrum.ieee.org/tech-history/silicon-revolution/hans-peter-luhn-and-the-birth-of-the-hashing-algorithm <comment><USER2> Hashing functions are cool and all, but let's talk about that groovy "Cocktail Oracle" he invented. It's basically a clever physical representation of bitwise arithmetic.

The oracle works with bit strings all of the same length. Each bit position represents a single cocktail.

Each ingredient card is a bit string. Each bit is 1 (opaque) if the ingredient is needed for the cocktail at that bit position.

You take all the ingredients you have and discard their bitstrings ("turn down their cards"). Then you or together the remaining bitstrings of all of the ingredients you _don 't_ have (look through their overlapping cards). In other words, _not_ having an ingredient _forbids_ certain cocktails. Any bit positions that remain zero (transparent all the way through to the key card on the back showing the names of the cocktails at each position) are cocktails that you have enough ingredients to make.

Using opacity to represent bitwise "or" is pretty clever. Turning down the ingredient cards you don't have is really clever. I kind of want to make one of these now.

<comment><USER3> I mean this is really about set operations; thinking of it in terms of bits and integers doesn't really add anything.

<comment><USER2> The mechanics _do_ matter because it's fundamentally a mechanical device.

<comment><USER3> What about it involves thinking of elements as bits and sets as whole numbers? I'm not seeing it. Everything you just described is just a physical representation of sets and operations on sets. I don't see any step where elements are mapped to powers of 2 and added up (unless you for some reason insist on thinking that way of aggregating elements into a set), nor any step where a number is broken into bits (again, unless you for some reason insist on thinking that way of breaking a set into its elements).

<comment><USER2> > What about it involves thinking of elements as bits and sets as whole > numbers?

I said bitwise arithmetic, not binary numbers. :)

> Everything you just described is just a physical representation of sets and > operations on sets.

Sure, and how is the _set_ represented and its operations implemented? In the Oracle, each set is represented by a bitmask with a bit position for each element in the set. Set operations are implemented as bitwise operations on those bitmasks.

</comment></comment></comment></comment></comment><comment><USER4> It's a real shame they don't talk more specifically about Luhn's role in the 'record addressing' problem.

Back in 1953, IBM was investigating disk storage for record retrieval in large volumes of data. Seek/read time on these machines was on the order of a second, so a 10 level binary search could take around 10 seconds of total time. Unfortunately for IBM, this wasn't an improvement over the best human- driven manual lookup processes... which is an issue if you're trying to sell/lease expensive computer hardware.

With this as motivation, Luhn then essentially invented what we now would know as a hash table, which was key to the 1956 RAMAC release.

<comment><USER5> >"Seek/read time on these machines was on the order of a second, so a 10 level binary search could take around 10 seconds of total time. Unfortunately for IBM, this wasn't an improvement over the best human-driven manual lookup processes"

I am curious what human-driven manual lookup processes existed that could be in a single second?

<comment><USER4> A tub file:

[https://en.wikipedia.org/wiki/Tub_file](https://en.wikipedia.org/wiki/Tub_file)

(Note that the overall search takes 10 seconds, not the one second of an individual seek... so the human had a bit more time to be competitive with the disk than a single second. :-) )

</comment></comment></comment><comment><USER6> Always amazing to realize that at some point in the past everything we know was unknown, and someone had to figure it out the first time. For everything we do today we stand on the shoulders of giants.

<comment><USER7> This is my biggest gripe with hardcore self-made/individualist evangelists. Pretty much everything anyone has ever achieved was because of the hard work and determination of thousands if not millions of geniuses and craftspeople whose work enabled the future.

<comment><USER4> That's true, but there's also something unique about being able to take an existing idea and turn it into something relevant and marketable. Look at everything Xerox did to advance the state of the art, and compare that with their inability to turn any of it into viable products. As much as it's easy to say "Xerox messed up", that diminishes the value added by the likes of Jobs and Gates when they turned those ideas into something valuable for the masses. (Which is there the money is, among other things.)

I'm not saying it's necessarily fair, just that there's value in that 'last mile' between a long line of development and the end user of an idea or product.

<comment><USER7> I don't think you observation is in contradiction to my anecdote. I appreciate the last milers as much as anyone.

</comment></comment></comment></comment><comment><USER8> I have a strange recollection playing with Linux text processing command line tools in the 90s and stumbling upon something that looks like the "concordance" output and having no idea why it might be useful, nor any way to find out. Now I know! (And I can finally fix a dangling reference in my brain.)

</comment><comment><USER9> >Much like a culinary hash of corned beef and potatoes, a hash algorithm chops and mixes up data in various ways

Perfectly obvious in hindsight but I never made the connection.

</comment><comment><USER10> It would be interesting to read about how he came up with that specific checksum algorithm. Trial and error?

</comment><comment><USER11> Should be: Hans Peter Luhn and the Birth of the Checksum Algorithm

Ctrl+F the article for "hash". What Luhn invented was a checksum, one that is apparently still used today in IMEIs (among other things), but the article says nothing about him furthering checksums into hash functions (and there is quite a distinction). Sure, a hash function can hardly be invented without going through the checksum stage, but it's like saying the person who discovered there's oil in the ground invented cars just because he laid the foundation.

<comment><USER12> Aren't checksum functions suitable hash functions though?

<comment><USER13> They are. I suspect GP is confused with _cryptographic_ hash functions which are a strict subset.

</comment></comment></comment><comment><USER14> Handkerchief in the suit pocket, tie, cool haircut. When engineers knew how to dress.

<comment><USER15> From the article:

> Within this nascent computer world, Luhn cut an unusual figure. An elegant > dresser throughout his life, Luhn knew more about the textiles industry than > computer science when he arrived at IBM in 1941.

So it might be more the exception than the rule there as well.</comment></comment>


Ask HN: Strategies to develop front-end apps with incomplete requirements - <AUTHOR>

I work for a large e-commerce company. We routinely find ourselves, despite our best intentions in the following situation:
1. We have an incomplete schema for our API, it's mostly stable but some changes will happen. 2. We know most of the front-end interactions we want, but more will be discovered and some might be changed. 3. Despite 1 and 2, we want to begin front-end development right away (in Angular or Backbone).
We can't be the first team to have encountered this pattern of software development. Are there technical solutions you've seen/implemented/read about to solve these issues? I'm talking more along the lines of app architectures, gang of four patterns or scripts/tasks etc.
I realize this is an open ended question, but while we pursue process and social solutions (more communication, earlier stakeholder engagement etc), are we missing out on technical solutions as well? <comment><USER2> _we want to begin front-end development right away_

I think that beginning of the development is pretty easy task. Maintaining and modifying existing codebase it's hard. If project is starting and codebase is small you can rewrite whole project from scratch in few days. But when project grows it is wiser to refactor than rewriting. But if you want to refactor your project has to be maintainable.

 _We know most of the front-end interactions we want, but more will be discovered and some might be changed._

You can make quick prototypes before you begin serious coding. Start new branch in your repository and don't try to write some beautiful code. Just hack and tweak features. Mock some features if you need it. I think that prototype phase / sandbox phase is often necessary to gain technical knowledge and gather business requirements, to decide which features are useful and which are not (off course you may need to consult these decisions with your stakeholders, your client, etc. But having working prototype makes this easier than operate on *.psd based designs and unclear guidelines).

And after prototype phase you can delete your sandbox branch and start some serious coding for production.

</comment><comment><USER2> _Are there technical solutions you 've seen/implemented/read about to solve these issues?_

There is no silver bullet but from my experience these things let you to maintain (and modify) project more easily:

1\. Separation of concerns

 _We have an incomplete schema for our API, it 's mostly stable but some changes will happen_

It's better to create some specialized service/module to connect with backend API end-points than have something like $.get('/get/user/' \+ id) spread across the project. If you follow SoC, when backend API changes you have to update only one file.

2\. Modularize

If you have proper modularization (achieved by proper design or/and incremental refactoring) you can make global changes very quickly (you have to update just one module to apply changes everywhere) but you can also make local changes also quickly (you just have to decide what submodules you have to use in your parent module). If you treat project not as a monolith but as a interconnected set of decoupled components/modules developing is like building with Lego bricks.

3\. Refactor constantly

Is there some code that can be written better? Refactor. Avoid unnecessary complexity. Simple and succinct code is easier to maintain and modify. And make your code reusable.

4\. File/directory structure based on components rather than filetype.

I never understood why so many people create directories like "controllers", "directives", javascripts", "stylesheets". The truth is that if you work on some part of your code you will usually edit all of these files. And you end up jumping over 3-4 different directories to make very small change. Directory structure based on components / views / modules / other _logical_ part of project / seems to be better than put 10 files in one directory only because they all have _.js or_.css extension.

5\. keep third part library code separate (if possible).

For example you need to inject some third party slider/carousel/chart etc. on one of sub-sites. It's better to make directive for this and insert 1 line of directive <my-slider> than just throw some 20 lines of code in your HTML and JS. Imagine that you need to change library X to library Y. Wrappers/adapters add some additional layer of complexity but I think that outcome is still positive in many cases.</comment>


Converge (Python-like language with macro-like facilities) 1.0 released - <AUTHOR> http://convergepl.org/

<comment><USER2> When you're implementing macros anyway, why not go all-out and just embrace LISP? You've got to make a pretty convincing argument to make me agree that whatever language implementing macros is better than LISP. From what I gather, the main issue that makes people not want to use a LISP dialect is library support, and no new language is going to have that.

<comment><AUTHOR> It's not an issue of libraries - you're clearly right that new languages are likely to have less impressive libraries.

It's partly a matter of syntax - frankly, I can't deal with Lisp's syntactic minimalism (my problem, maybe, but there's a lot of other people like me). So there's an immediate argument for adding at least Lisp-like macros to a syntactically rich language (a task which, historically, has proved very difficult).

It's also, as suggested by henning, because there is more to meta-programming than just Lisp-esque macros.

</comment></comment><comment><USER3> Does Python-like simply means uses python indentation? I was expecting something closer to Python. So it's not quite Python (easy to read, executable pseudocode) and it's not quite Lisp (real macros).

<comment><USER4> Well, they use ':' and indenting for defining blocks, but they also seem to have taken the 'nonlocal' keyword from Python 3000.

Also, I haven't looked too deeply into it, but my assumption is that classes in Converge are implemented similarly to Python.

They've borrowed a bunch of ideas it seems, but aside from multi-line lambdas and the "macro" facility, they seem to have changed syntax for the worse. ':=' for assignment, using what have become standard bitwise operators for logical or and logical and--those types of things turn me off right away.

<comment><AUTHOR> Interestingly, nonlocal was part of Converge before it was proposed for Python 3000 (see [http://tratt.net/laurie/tech_articles/articles/designing_san...](http://tratt.net/laurie/tech_articles/articles/designing_sane_scoping_rules)).

It doesn't seem sensible to me to imply that every programming language has to have the same syntax as what came before it: no syntax is perfect and future generations won't thank us if we don't improve things when we can. Using "=" confuses new-comers to programming who think it's some form of comparison thingy. Converge doesn't have logical "or" and "and", so the & and | operators (taken syntactically and semantically) are there to point that out (although, in general, they operate in analogous fashion to "and" and "or"). In this day and age, having special syntax for bitwise operators seems odd: they're so rarely used that moving them to functions / methods and reclaiming & and | for other purposes seems reasonable.

Converge is a full meta-circular system (based on ObjVLisp), and at the VM level is actually prototyping based (the VM doesn't really know about classes). So classes seem superficially similar to Python but are actually quite different. You can see this as new objects are created via Object.new() rather than the Python-esque Object(). The object system in Converge is simpler and more consistent than Python.

<comment><USER4> > Interestingly, nonlocal was part of Converge before it was proposed for > Python 3000

Ah! That's interesting.

</comment></comment></comment></comment><comment><USER5> See also: <http://boo.codehaus.org/> (e.g. <http://jira.codehaus.org/browse/BOO-95>)

<comment><USER6> I was thinking the same thing. Boo is decidedly more Pythonic than converge: you can write more programs that run in both Boo and Python than you can for converge and Python. Boo is pretty much a statically, implicitly typed Python. I wish there was a version of Boo that was not tied to the CLR; the closest thing we have to a high-performance language with Python syntax is Pyrex, which is good, but not quite as nice as Boo.

<comment><AUTHOR> It isn't a goal of Converge to be Pythonic as such (particularly as Python 2.x is a philosophically different beast to Python 1.4/1.5-ish).

My impression of Boo is that its macros are a very different kettle of fish to Converge's compile-time meta-programming. Boo seems much more similar to Nemerle than Converge. As far as I can tell, there's no quasi-quoting (which would mean building ASTs by hand all the time) and no support for things like hygiene. I'd be happy to be corrected though.

<comment><USER5> Pre 0.8.1 there was no backtick and it was all manual AST afaict. 0.8.1 has [| |] which is similar to ` I believe. See second link above. Not sure about hygiene though, I guess not.

</comment></comment></comment></comment><comment><USER7> I feel the urge for a poll. "Orientated" vs. "Oriented" [http://www.askoxford.com/asktheexperts/faq/aboutgrammar/orie...](http://www.askoxford.com/asktheexperts/faq/aboutgrammar/oriented)

</comment><comment><USER8> Meh it's got some butt ugly syntax!</comment>


Confessions of Marcus Hutchins, the hacker who stopped the WannaCry attack - <AUTHOR> https://www.wired.com/story/confessions-marcus-hutchins-hacker-who-saved-the-internet/ <comment><USER2> Marcus - thanks for stopping WannaCry. Be well.

</comment><comment><USER3> It's a long piece, and quite interesting. Thanks for sharing @Malwaretech.

<comment><USER4> Yeah this piece is especially long, interesting and nuanced.

If only people could take time to actually read it before reacting with simplistic and pre-existing opinions that would be awesome.

</comment></comment><comment><USER5> It's interesting to see how trusting another criminal with your address opens you up to serious blackmail... maybe I should set up a PO Box for Bitcoin business :)

</comment><comment><USER6> I cringed when it came to describing how he'd try to tell the FBI half truth. Even if they hadn't had enough evidence to get him for his involvement in the Kronos malware, they'd still throw the lying to a Fed charge at him.

</comment><comment><USER7> If you fellow HN'ers feel as compelled to thank Marcus as much as I did, I recommend supporting his Patreon:

[https://www.patreon.com/MalwareTech/](https://www.patreon.com/MalwareTech/)

</comment><comment><USER8> This was a long and yet one of the most interesting reads from WIRED I have seen in a long time.

</comment><comment><USER9> Why wouldn't the wannacry malware writers register the domain first? Should be possible to simply update the name servers or dns records should the kill switch need to be engaged?

<comment><USER10> Perhaps it wasn't a kill switch but rather a way to exempt certain organizations or countries from the effects of the malware.

</comment></comment><comment><USER11> Ah that explains his tweet this morning

</comment><comment><USER12> This is a bit over the top. He is not a master hacker who "saved the Internet"; He _accidentally_ neutered WannaCry by registering a domain he found in the binary, which as it turned out, acted as a kill switch.

<comment><USER13> > He accidentally neutered

he did not "accidentally neuter WannaCry". He stopped WannaCry by registering the kill-switch domain. Nothing accidental about that.

> He is not a master hacker

he is a kid. what makes his experience interesting, and his story worth listening to is that he had first-hand experience with the legal system as a hacker that went too far (because he is/was a kid). that is worth more than the arm-chair analysis of law (by wannabe skript kiddies and theoretical security experts).

<comment><USER14> He didn't know it was the kill-switch domain. He expected it would _enable_ him to kill the malware, though, and was trying to figure out how to send the kill command before it turned out that simply sitting a server behind the domain was enough to kill it.

<comment><USER15> What a pointlessly flippant argument. Hutchins discovered, and engaged, the WannaCry killswitch. Irrevocable fact.

<comment><USER16> The question is, what would he have done if it wasn't a kill switch, but happened to be a server that received bitcoin payments from ransomware victims?

He was still selling banking trojans the year before, so who knows?

</comment></comment></comment></comment></comment><comment><USER17> cybersecurity professionals are the closest things to superheroes we have

<comment><USER18> There are a lot more grey-hats than the industry is generally willing to admit.

<comment><USER11> Batman's pretty grey hat as a Super Hero as is Oliver Queen

</comment></comment></comment><comment><USER19> Hutchins was busted for committing bank fraud. Him doing one good thing does not absolve him of having committed another crime...he's still a criminal. Rather than protest him being arrested we should advocate for him getting a reduced sentence for having at least done some good.

<comment><USER20> Shouldn't the system be set up to reward the good thing more than the bad thing when possible? If someone is in a position of power from doing bad things, how could you expect them to stop of their own volition?

<comment><USER21> One problem with rewarding an action is that humans are very good at gaming rules. For example, let's say I get X for donating to charity. I can for example setup my own charity, donate to it, pay myself all its income as salary and then just collect lot's of X.

The US tax system is a perfect example of this I'd say.

<comment><USER22> Not really any benefit from that

But the charity you setup would shelter your assets better than any prenup or other asset planning (or lack thereof) when you divorce your spouse

<comment><USER23> I am not a lawyer but I'm guessing a judge would look pretty badly on doing this too obviously.

<comment><USER22> One of the most useful monetary goals in life is being able to afford US federal appeal's court. It's the only part of the system where arbiters of the law actually begin to analyze the law. There is no dog and pony show for jurors there, no instructions that a prosecutor can tell the judges and sway them.

So it wouldn't matter what a single judge thought in lower court, if you were compliant.

</comment></comment></comment></comment></comment></comment><comment><USER24> Security is about control. Shame on the malware writers for having left a single point of failure.

</comment><comment><USER25> Title was intentionally misleading before mods updated it.

This is a very one-sided article meant to make Hutchins look good.

The valuable bit of the article is a a reminder of why it's important not to start being criminal/evil, because it traps you in a postive-feedvack loop of criminality as you feel a need to commit ever-greater criminal acts to cover up past acts.

The only escape from this is to create a culture where criminals know that it safer to turn themselves in and turn informant on their co-conspirators, than to try to evade the authorities.

<comment><USER26> I carefully read the entire article and I don't think it made Hutchins look good. But it does describe, accurately in my view, the kind of rationalizations people apply to cross line after line until they see no way out.</comment></comment>


It's Never Late to Learn Coding - <AUTHOR> I wrote this piece on how I taught myself to code and launched a complete product, 18-months later. I could have done it faster if I didn't have to work for clients. I mostly had to learn to code, it wasn't a choice so I could tell everyone how I did it on my own. I couldn't hire any employees. I was cornered with lack of finances from investing all my savings on a previous product which outpaced itself with expenses faster than it could grow.<p>I hope it inspires you to learn coding and make a product of your own. Starting could be hard, but once you get a hang of it, you'll run faster. <comment><AUTHOR> Here's the link: [https://firstname.lastname@example.com/how-i-taught-myself-how-to- code...](https://email@example.com/how-i-taught-myself-how-to-code-build-a- full-fledged-product-from-scratch-and-how-you-can-too-e1a47b8a3d9e)

</comment><comment><USER2> How is Claritask doing today? Is it making enough money to support you? I'd love to have a lifestyle business and I have ideas but I'm afraid to commit the time.

<comment><AUTHOR> Hey nimonian / sorry just noticed your comment some 11 days later...

Claritask just launched to the public, some 25 days ago. I'm already passed first payments, but yet to make it to the point I want it to be ($5K/month) while running solo.

It hasn't been easy to get here. Fear is real.

So far, Claritask it's proving itself very 'sticky' with new clients who are trying it / these signals are super helpful to keep me motivated in these early days.

With all the frameworks out there (Laravel/vue) you can put together something quite quickly, if you have at least 2hrs per night to commit.</comment></comment>


XMPP creator's "Locker" -- personal social media aggregation platform - <AUTHOR> https://github.com/quartzjer/Locker <comment><USER2> I like this idea a lot. I wish the guy the best of luck.

In my opinion, somebody is going to have to do something -- probably coding but perhaps an embedded mixed app -- to start tearing down all these walled gardens companies are creating. It's hurting both people and innovation when tons of folks get lock-in on Facebook, or Twitter, or whatever will come next. Decentralizing it, making the person the hub, is not only the natural state of things, but if it works will be enormously disruptive (in a good way). If I didn't have a zillion things on my plate right now this is something I'd like to participate/help with.

<comment><USER3> "Making the person the hub" sounds more like these projects; rather than pulling in your data from numerous sources, you push.

Dave Winer's reallysimple.org: [http://scripting.com/stories/2011/01/05/upcomingTheMinimalBl...](http://scripting.com/stories/2011/01/05/upcomingTheMinimalBlogging.html)

Tantek Celik's falcon: <http://tantek.pbworks.com/w/page/21743425/Falcon>

</comment></comment><comment><USER4> This is what I want, and I'd love to work on a project like this:

One place to store my blog, pages, messages (long and short), emails, save my IMs and SMSs, pictures, albums, ebooks, docs, files of any kind, all in one place. My whole web presence in one place instead of spread all over the web. Like my own VPS but public, or at least where I can control its levels of privacy.

or perhaps myspace can adopt this idea, well, at least they have the right domain. Perhaps Mozilla? or Ubuntu? they sure would be great hosts, and this would increase traffic to their properties a thousand fold plus other ways of monetization.

<comment><USER5> Checkout tonido (<http://www.tonido.com>). You can do everything you have asked for except the email.

</comment></comment><comment><USER6> Jeremie Miller is also working on TeleHash, a P2P protocol based on JSON and UDP: <http://www.telehash.org/>

</comment><comment><USER7> I came in here because I wanted to comment that I think that this has a lot of potential, alas I'm not the first one to quip that. Given how many people already wrote that they like the idea or could imagine working on such a project I'd wager that there's huge growth ahead. It would be incredibly awesome if this project would gain lots of traction.

Mozilla Labs has something vaguely similar (albeit only for messages) called 'Raindrop' (<http://mozillalabs.com/raindrop>). I played around with that when it came out but didn't like it too much.

</comment><comment><USER8> > Contexts - A context is a place where I have data about myself, such as an > account on a site or service, or in some desktop app, on my phone, or even > from a device.

This part doesn't feel appropriately named. The place a data is stored should be a 'Location' or a 'Destination'. A 'Context' might be a better name for where that data is used to express a bigger idea than just itself.

For example, I would look to my phone as a Destination for my contacts and these contacts showing up next to an event i'm going to with others as a Context. This feels more intuitive to me. I know I'm splitting hairs, but would love your opinions.

All that aside, really love this idea! Happy to see people becoming more aware of these issues and finding interesting solutions around them.

<comment><USER9> We are also struggling with the word Context. The thought was "a Connector is a dumb pipe and it needs a Context in which to run" (e.g. the auth credentials, etc.). Not perfect, and possibly something that will change in the not too distant future, but it works for now.

The whole project is still very young, but we are _incredibly excited_ about all the cool apps that will be created on top of it.

<comment><USER10> How about "smart pipe" (in contrast to a dumb pipe)?

<comment><USER9> :).

It's not really a separate pipe, its's simply the bits of information that tell the dumb pipe where/how to run. For example, the Google Docs connector knows generically how to connect to a hypothetical person's Gdocs account, but the auth credentials provide the information that is required to connect to a real person's account.

A "smart pipe" is actually a lot more like the Collections. They bring data in from sets of similar Connectors (dump pipe) and collect, de-dupe, and normalize it.

</comment></comment></comment></comment><comment><USER11> I'm excited about project. Hope I'll get rid of custom scripts that download contact data and place into repository.

</comment><comment><USER12> related: [http://www.avc.com/a_vc/2011/01/building-better-social- graph...](http://www.avc.com/a_vc/2011/01/building-better-social-graphs.html)

</comment><comment><USER13> Don't really understand what this is for or why it's valuable. Would anyone care to explain?

<comment><USER14> I believe this is a decentralized social media platform - "Diaspora" but by someone who knows what they are doing.

<comment><USER15> XMPP? Knows what they are doing?

Does not compute.

Using document markup as a packet based message protocol is just perverse.

<comment><USER16> These type of comments are pointless. If you have a point to make then make it.

I think the protocol is actually quite nice, I have an aversion to anything XML but that's just a personal preference. Have you used it in development? It works quite well... I know it sucks for binary data but that's not what it's designed for.

edit: I made my comment before axod edited in the last line "Using document markup as a packet based message protocol is just perverse." I somewhat agree with his point so ignore my reply.

<comment><USER15> Yes I've written XMPP libs at the base level. It's mental. There's 15 hoops to jump through just to say "hello!", forms must be filled out in triplicate, several nested stanzas must be entered into. It's absolutely ridiculous at the protocol level.

I agree it's probably pointless, but I find it odd that XMPP is now apparently 'cool'. I thought it was commonly thought to be an abomination of the highest order.

<comment><USER17> deal with it, it's established at the RFC level so at this point I'd prefer XMPP to <insert proprietary protocol here>

</comment></comment></comment></comment></comment></comment><comment><USER18> Why this rather than Camlistore? Are there major differences in their use cases? I really want to write a "platform" on top of either Camlistore or Locker.</comment>


Fat Binaries - <AUTHOR> https://en.wikipedia.org/wiki/Fat_binary

<comment><USER2> So on mobile this link just took me to a Wikipedia page with absolutely zero context. Am I missing something?

</comment><comment><USER3> What about 'em?

<comment><AUTHOR> Space is cheaper than ever. There two "competing" architectures (arm vs. x86). NetBSD has solution the distinct platform compilation problem.

What is a compelling argument against having fat binaries everywhere? Especially given tools that can unpack/strip/lipo to the right architecture.

<comment><USER4> NetBSD isn't mentioned in the wiki article at all. You appear to be using wiki to support an argument that you haven't made?

A little context could go a long way here.</comment></comment></comment>