The Hardest Program I've Ever Written (2015) - <AUTHOR> http://journal.stuffwithstuff.com/2015/09/08/the-hardest-program-ive-ever-written/ <comment><USER2> I read this before working on prettier and it was a bit scary to be honest :)

I wasn't convinced that the exhaustive approach with weigths was a good idea. It makes it computationally super intensive and hard to predict what the printer would do.

Instead prettier runs on a simple idea: if something doesn't fit in one line, break the outermost parent.

This simple rule (implemented via the Wadler IR) is efficient to implement and makes the output generally look good.

Then the hard part was to go through the very looong (took me ~6 months full time) process of adding special cases for every constructs that human write in a special way.

There is nothing in there that's hard at a computer science level, it's just a lot of special cases. I don't believe that there's a general solution for it, you just need to slog through it.

And the last annoying thing are comments, they can be everywhere and are super annoying to print correctly.

Overall, it wasn't really hard, but a lot of work.

<comment><USER3> _> I wasn't convinced that the exhaustive approach with weigths was a good idea. It makes it computationally super intensive and hard to predict what the printer would do._

Yes, you are right on both accounts. I'm still not entirely sure it's the right approach for dartfmt.

I started with a corpus of code that was hand-formatted by people who I felt had great style. And then I worked backwards to figure out what kinds of formatting mechanics I would need to be able to automate that.

Unfortunately, there are some very common formatting idioms in Dart that really just don't play nice with any simpler formalism. For example, it's common to use embedded function literals as if they were blocks:

        group("test some stuff", () {
          test("test a thing with a very long"
              "multi-line description of the thing being tested", () {
            expect(thing, isSomeThing);
          });
        });

Note here how the body of the innermost function literal does not respect the surrounding expression nesting, even though it is technically all an argument to test().

But in other cases, a function parameter should work like a normal indented expression:

        things
            .map((thing) {
              ...
            })
            .where((thing) => thing.isFoo);
            .toList();

I probably could have said, "Well, these idioms are going away and this code will look different." and then designed a much simpler formatter. A huge part of software engineering is picking the right problem to solve and knowing when to push against requirement and when to take them as given.

For dartfmt, I did my best to keep the original requirements even thought it meant a much more complex formatter. That made my implementation job harder. But it made the political job of convincing everyone inside Google (and most users outside) to use dartfmt much easier because the output was closer to what they wanted.

<comment><USER2> > For dartfmt, I did my best to keep the original requirements even thought it > meant a much more complex formatter. That made my implementation job harder. > But it made the political job of convincing everyone inside Google (and most > users outside) to use dartfmt much easier because the output was closer to > what they wanted.

I couldn't have said it better :)

I added a ton of special cases in the step that takes an AST and outputs the IR to handle those two things (and many many more).

For 1), I special case functions that look like `test(` and completely ignore the 80 column rule so that the name stays in one line. [https://github.com/prettier/prettier/blob/3e0dceda9954658860...](https://github.com/prettier/prettier/blob/3e0dceda9954658860ffdbc7e04465fcf5737d12/src/language- js/printer-estree.js#L1047-L1058)

For 2), member chains is actually the most complex piece of prettier, but it was important to get right. There's plenty of comments in the implementation: [https://github.com/prettier/prettier/blob/3e0dceda9954658860...](https://github.com/prettier/prettier/blob/3e0dceda9954658860ffdbc7e04465fcf5737d12/src/language- js/printer-estree.js#L4222-L4584)

I'm sure you did something similar as well :)

<comment><USER3> Yes! There is a whole separate class just to handle formatting method chains:

[https://github.com/dart- lang/dart_style/blob/master/lib/src/...](https://github.com/dart- lang/dart_style/blob/master/lib/src/call_chain_visitor.dart)

</comment></comment></comment></comment><comment><USER4> Pretty printers are hard.

        "We sat down one morning," recalls Steele. "I was at
        the keyboard, and he was at my elbow," says Steele.
        "He was perfectly willing to let me type, but he was
        also telling me what to type.

        The programming session lasted 10 hours. Throughout
        that entire time, Steele says, neither he nor Stallman
        took a break or made any small talk. By the end of the
        session, they had managed to hack the pretty print
        source code to just under 100 lines. "My fingers were
        on the keyboard the whole time," Steele recalls, "but
        it felt like both of our ideas were flowing onto the
        screen. He told me what to type, and I typed it."

       The length of the session revealed itself when Steele
       finally left the AI Lab. Standing outside the building
       at 545 Tech Square, he was surprised to find himself
       surrounded by nighttime darkness. As a programmer,
       Steele was used to marathon coding sessions. Still,
       something about this session was different. Working with
       Stallman had forced Steele to block out all external
       stimuli and focus his entire mental energies on the task
       at hand. Looking back, Steele says he found the Stallman
       mind-meld both exhilarating and scary at the same
       time. "My first thought afterward was: it was a great
       experience, very intense, and that I never wanted to do
       it again in  my life."  - Guy Steele

Heck! to get a taste one can take a stab at writing a formatter for printing a floating point number.

<comment><USER5> If you require the output to be the shortest possible (e.g. 0.1+0.11 should print as "0.21", not as "0.21000000000000002") and to have your output round- trip (if you read in what you printed, you get back the number you printed) I would think printing floating point numbers is harder than writing a pretty- printer.

Pretty-printers have the advantage never being finished, as there always are cases where some people would say "I would format that differently". That's an advantage because it also means you can declare any version that works decently "finished". For formatting floats, it's much more black or white. Your formatter either works or it is buggy.

The first working formatter for floating point numbers is from 1980, IIRC, and doing it correctly only became somewhat the expected case after Steelers 1990 paper ([https://lists.nongnu.org/archive/html/gcl- devel/2012-10/pdfk...](https://lists.nongnu.org/archive/html/gcl- devel/2012-10/pdfkieTlklRzN.pdf))

<comment><USER6> > and to have your output round-trip

Unless you're simply talking about round-trip _within_ the application itself, that's not possible.

<comment><USER7> It is possible, and most reasonable format systems guarantee it. Javascript guarantees that parseFloat(x.toString()) === x for any fp number x. The same extends to JSON formatting. Python guarantees that eval(str(x)) == x.

<comment><USER6> That's because Javascript doesn't print out the shortest possible output.

OP's requirement is that the output for 0.1 + 0.11 is displayed as 0.21, _and_ that the output survives a round-trip. Your example satisfies the latter but not the former.

</comment></comment></comment></comment></comment><comment><USER8> Reminds me of Steve Yegge's introduction of js2-mode, a new JavaScript mode for Emacs, and how hard it was to get its indentation right:

 _Amazingly, surprisingly, counterintuitively, the indentation problem is almost totally orthogonal to parsing and syntax validation. I 'd never have guessed it. But for indentation you care about totally different things that don't matter at all to parsers. Say you have a JavaScript argument list: it's just (blah, blah, blah): a paren-delimited, comma-separated, possibly empty list of identifiers. Parsing that is pretty easy. But for indentation purposes, that list is rife with possibility!_

[http://steve-yegge.blogspot.com/2008/03/js2-mode-new- javascr...](http://steve-yegge.blogspot.com/2008/03/js2-mode-new-javascript- mode-for-emacs.html)

</comment><comment><USER9> > It reads in a string and writes out a string.

That's usually where a lot of the hard problems lie, in my experience. Parsers, compilers, interpreters, sanitizers, and of course formatters are always a deep dive into formal language theory, where the limits are often fundamental rather than technical and you have to make tradeoffs to get a solution that works well.

</comment><comment><USER10> The hardest thing I ever wrote was an inliner for a language I made myself.

You'd think it is a simple problem, but soon you will have a rabid animal on a leash and you will be struggling to restrain it.

I gave the source to a friend who modified it a bit and commited it to a language that was mentioned a couple of times on HN in the early days. It has since been replaced, but was used for a good 5 years.

<comment><USER11> Can you expand on some of the problems?

I was going to write an inliner for a Lisp I was working on for a couple years. Emacs seems to have a decent one. But I know there are tricky corner cases.

<comment> nappy-doo Writing a simple inliner isn't too bad, writing a good one is hard. Let's pretend you just "copy/paste" the code into place, there's the question of deciding when/if to copy/paste the code in -- what heuristic do you use. Now there's constant propagation, possibly more doing dead code (from constant propagation), dependency reanalysis (because you've changed the basic block, possibly adding more basic blocks). There are reasons the resultant code could even be less efficient (register pressure for locals for the inline code comes to mind), and there's i-cache complexities that come from blowing up your code size.

Inlining is really hard.

</comment></comment></comment><comment><USER12>
      return doughnutFryer
        .start()
        .then((_) => _frostingGlazer.start())
        .then((_) => Future.wait([
              _conveyorBelts.start(),
              sprinkleSprinkler.start(),
              sauceDripper.start()
            ]))
      ...
      ...

> (The funny names are because this was sanitized from internal code.)

And for about 3 seconds I was really excited to learn more about who wrote this code!

</comment><comment><USER13> I really hope the author did some research. There is a very old work from Derek Oppen that has been adapted to the functional world later. The principles sound very similar to the OP's approach. It would be a shame if so much work went into reinventing the wheel...

<comment><USER14> I read once that this is the difference between research and hacking. Research is about researching related work and the field and ensuring that we're not re-inventing the wheel. Hacking is about writing code as fast as possible.

<comment><USER15> A good software engineer should be able to do both of them successfully.

</comment></comment></comment><comment><USER16> I know this is a stupid question, and please forgive me for asking it... but just how wide do monitors need to get or how high do resolutions need to go before longer lines become reasonable?

<comment><USER17> It's not about monitor size or resolution - text just gets hard to read once lines exceed a certain width, because the eye starts losing track of which line it's on as it sweeps from the end of one line to the start of the next. That's true for prose as well as code - and code has the additional complexity of having to keep track of possibly-deeply-nested paired pieces of syntax (parentheses, braces etc); that part can be made easier with indentation, but not if everything's on one line.

Wider screens still have their advantages even if you keep your text narrow, mind - when you want to display multiple things side-by-side; the halves of a diff, or your code & a reference, for example.

</comment></comment><comment><USER18> > Yes, I really did brute force all of the combinations at first. It let me > focus on getting the output correct before I worried about performance.

The programmer spoke correctly.

</comment><comment><USER19> Not nearly as difficult, but I recently did a large project on converting Erlang Dialyzer output into Elixir friendly output in the Dialyxir[0] project, which involved a lot of lexing and parsing and pretty printing, though I was fortunately able to take advantage of the Elixir code formatter for a lot of the heavy lifting for output. My grammar rules, while better than they've been, are still pretty bad, but they seem to work well enough in practice for most programs that I've seen.

The tl;dr for that project is that it runs dialyzer, finds the relevant Warning module for each warning, which will pretty print parts of the error output into a larger explanation, which involves taking the output, lexing it, parsing it, then pretty printing the IR back into Elixir, then running through the formatter.

[0] [https://github.com/jeremyjh/dialyxir](https://github.com/jeremyjh/dialyxir)

</comment><comment><USER20> I hope we can have a library for this kind of formatting so each new $hotlanguage can have $hotlanguagefmt easily..

<comment><USER21> There's an effort to make a plugin system for Prettier so that it can format languages other than JS and company. See [https://prettier.io/docs/en/plugins.html](https://prettier.io/docs/en/plugins.html)

</comment></comment><comment><USER22> On reading this, does it seem like the language parser itself should demand that the code is formatted correctly, rather than relying on a separate tool to format the code? I.e. incorrectly formatted code would be a syntax error.

That way all this hard work is off-loaded on human brains. They'll complain a bit but in practice will pick up very quickly where the line-breaks go.

(This would probably have to be a decision made by the language designers from the outset.)

</comment><comment><USER23> Couldn't you start from Dart's BNF grammar, create a BNF grammar of "formatted" Dart and then format the code accordingly?

<comment><USER3> Maybe. If you think of the formatted output as a grammar that includes whitespace, you'll probably discover it is _very_ context-sensitive. Then determining what context to synthesize when making the translation is probably more or less equivalent to how you'd otherwise write the formatter.

</comment></comment><comment><USER24> i'm a regular reader of this blog; there's always something non-obvious (at least to me) plus just really fine, fine writing--eg,

"Some Dart users really dig a functional style and appear to be playing a game where whoever crams the most work before a single semicolon wins."

sort of the Dave Eggers of software engineering

</comment><comment><USER25> > you'd expect it to do something pretty deep right? ... Nope. It reads in a > string and writes out a string.

If an optimizing compiler takes in a program decides to spit out the executable in a string (in base-64 format) which can later be converted to binary, using xxd for example, that makes the optimizing compiler "not pretty deep"?

Automated code formatting is fairly deep as far as I'm concerned.

</comment><comment><USER26> sounds like a case of bruteforcing a simple task with a pile of hacks.

can't imagine why all that mess is saner then putting a pretty printer on the other end of the language parser.

also this mess will be extremely non deterministic, depending on machine speed etc

</comment><comment><USER27> Side tangent:

He mentioned the algorithm questions he had to study to pass the interview and that knowing the algorithms came in handy.

If you are interviewing for Google, Facebook, Amazon, or Netflix, etc. solving problems that have never been solved at thier scale, algorithm questions are important.

If you just want someone to right the next software as a service CRUD app, don't waste my time.

<comment><USER28> Speaking as a former Googler, many (most?) Googlers never work on complex algorithms at huge scale. The interview questions are often completely irrelevant to their work.

<comment><USER27> Do you think that even at Google the algorithm questions are useless and shouldn't be asked? I was trying to give Google the benefit of the doubt.

<comment><USER28> "At Google" is such a broad category that no single answer suffices. For anyone working on the hot-path of search/ads/knowledge graph back-end, sure, they need to know their algorithms. Same for the language teams like Nystrom is on. For a front-end engineer, which is what I was at Google (exclusively in Dart fwiw)? Probably not. I implemented a graph traversal exactly once.

However, Google uses the same interview process for all software engineers, and mostly decides what job they will do _after_ deciding whether to hire them. So they really can't tailor their questions without changing their entire process. I think they should change it, but I understand why they haven't.</comment></comment></comment></comment>


Recalibrate Your Productivity Sensors - <AUTHOR> http://www.tombartel.de//2016/07/05/recalibrate-your-productivity-sensors/ <comment><USER2> Excellent article, well thought out, a parsimonious distillation of the essence of day-to-day management. However it ignores a crucial issue in all management jobs, and that is credibility erosion. "Boss doesn't have a clue about the code". Which leads to "I'm cleverer than the boss" and creates a big management problem. So once in a while the boss has to _show_ why he's boss, that he's amongst the best at the line-functions of the job. Nothing worse for team morale and productivity, than professional managers who do everything Tom Bartel has said here perfectly, but have no operational competence or credibility in the actual domain that the the team operates in.

<comment><USER3> I'm a Perl dev and at my previous job my PM was an ex java dev, while the department manager didn't even had technical background (he was an economist). This meant that the management had to completely trust us regarding the tech part of the project (estimations, technical solutions, overcoming obstacles, etc) while we trusted them with regards to the non technical issues of the project - mainly the non tech interactions with the customer. The relationship between developers and managers was one of collegiality instead of a boss- subalterns one where everybody knew their role. They were our facilitators and enablers, not our bosses, while we were doing our best to put them in the best position possible to the client.

<comment> tushar-r What you said about the PM and Dept. Manager, reminded me of this article by Rands:

[http://randsinrepose.com/archives/entropy- crushers/](http://randsinrepose.com/archives/entropy-crushers/)

== A good project manager is one who elegantly and deftly handles information. They know what structured meetings need to exist to gather information; they artfully understand how to gather additional essential information in the hallways; and they instinctively manage to move that gathered information to the right people and the right teams at the right time.

There are humans who are really good at this. They thrive on it. Engineers have difficulty believing this – it's the same issue they have with managers. They see these strange humans focusing furiously and scurrying hither and yon and they wonder, "What are they actually building?" They're right. Project managers don't write code, they don't test the use cases, and they're not designing the interface. You know what a good project manager does? They are chaos destroying machines, and each new person you bring onto your team, each dependency you create, adds hard to measure entropy to your team. A good project manager thrives on measuring, controlling, and crushing entropy. ==

</comment></comment></comment><comment><USER4> There's only one measure of management productivity and that's the output of their teams. The go-to book on this subject is High Output Management by Andy Grove [1]. It is hands down the best book on management. I highly recommend this book to anyone who is transitioning into a role where you'll be leading people.

[1] [https://www.amazon.com/High-Output-Management-Andrew- Grove/d...](https://www.amazon.com/High-Output-Management-Andrew- Grove/dp/0679762884)

</comment><comment><USER5> > "Do pair programming with an employee"

If you are a 100% manager, then you will not be able to pair program for a long time as your programming/technologies competences will fade away quite rapidely.

<comment><USER6> Competence required in pair programming may be very different, though. A lot of times, a co-pilot who understands the fundamentals well, but doesn't know particular framework/library would still be a great service, just for asking the right questions.

</comment></comment><comment><USER7> _If you spend a lot of your time coding, you are preferring an activity that also others can do to something that only you can do._

For some reason this sentence took a while to make sense

<comment><USER8> I experienced the same thing. I think moving 'also' like this makes it more clear:

 _If you spend a lot of your time coding, you are preferring an activity that others _also_ can do to something that only you can do._

<comment><USER9> Even better if you move it one word further?

 _If you spend a lot of your time coding, you are preferring an activity that others can _also_ do to something that only you can do._

Or maybe just change the whole phrasing:

 _If you spend a lot of your time coding, you are preferring an activity that someone else could do to one which only you can do._

<comment><USER10> Thank you for your suggestions. I actually adopted your last one, see [http://tombartel.de/2016/07/05/recalibrate-your- productivity...](http://tombartel.de/2016/07/05/recalibrate-your-productivity- sensors/)</comment></comment></comment></comment>


Reasons of State: Why Didn't Denmark Sell Greenland? - <AUTHOR> http://www.gwern.net/Greenland <comment><USER2> Greenland is part and parcel of Danish national identity. It has nothing to do with money, almost everything to do with history and something I need a much better term for than cultural consciousness.

No Danish government would have survived a selling off. In the immidiate aftermath of WW2 and German occupation, you can multiply that with some considerable factor.

Footnote fact: Danes/Norwegians first settled in Greenland about a thousand years ago, at roughly the same time as the present inuit population.

</comment><comment><USER3> There is another possibility: the modern notion that a sovereign's inhabited territory is not a chattel to be disposed of if an economically advantageous transaction can be arranged, but a trust held in benefit of those who live there under the sovereign's protection.

Under this view, it would be an abrogation of the Greenlanders' right of self- determination for them to be passed to the United States without their agreement.

<comment><USER4> Ah, but what if they hold a referendum and 60% want to change sovereign and 40% don't. Is it not an abrogation of that 40%'s right to self-determination? Maybe we should recognize that everybody has different desires and voting exists merely to pacifistically answer the question of if we fought a civil war over this decision, who would be more likely to win.

</comment></comment><comment><USER5> > Greenland is a poor country. Perhaps Denmark simply wants to help out. This > is ethically reprehensible. Greenland is poor, but compared to many African > countries it is fabulously wealthy

Earlier:

> Much of the Greenland population is Danish, unsurprisingly

I don't see that it's "ethically reprehensible" for Denmark to focus its charitable efforts on Danes. What did I miss? Gwern even calls this out:

> if that is Denmark's true reason, shame on them for letting [...] ethnicity > warp their ethical judgement to such a freakish extreme.

I'm pretty sure it's better for 100,000 Africans to die than for my sister to die. That's not warped judgment.

<comment><USER6> > I'm pretty sure it's better for 100,000 Africans to die than for my sister > to die. That's not warped judgment.

I don't see warped judgment but it's something we see frequently these days: An attempt to take down liberalism, with its embrace of reason and compassion, by aggressively making illiberal statements - as if to challenge the very ideas. The crazier and more illiberal the better; it almost becomes a contest to see who can say the craziest thing, which also serves as a proof of ideological purity common in such movements. You can see it in the statements of GOP candidates (Trump is on the same continuum they've been on for a long time) and on Fox. The only solution is to letting these hateful ideas dominate our country is to start calling people on it.

<comment><USER7> We're not machines, we're human beings, and it is humanity's nature for a person to love their own parents more than other parents, and for parents to love their children more than other children. What's _inhumane_ is preventing people from doing what comes to them naturally via excessively high taxes, and force people to provide for everyone else who they hardly know[2].

Love is not equal, and that is just a fact.

Mohism[1] - where everyone love everyone else equally - is dead. It will die once again.

[1] [https://en.wikipedia.org/wiki/Mohism#Morality_and_impartiali...](https://en.wikipedia.org/wiki/Mohism#Morality_and_impartiality)

[2] See nursing homes, poor public schools.

<comment><USER8> This post ignores the massive social movements away from such highly tribalistic human associations. It ignores how technology, state, and economic structures have utterly dictated family structures since the neolithic. It does not actually establish some causal link between 'human nature' and what current familial affiliations people have. It is a statement of 'common sense' dressed up as an unassailable assertion about 'human nature'. How dare anyone question 'human nature'?

Furthermore, the idea that any particular inborn kin affinity implies any particular social structure, falls flat on its face on purely logical grounds: If it is human nature to maximize the utility of one's parents and one's children over other relatives and other human beings, it is still possible that the best way to do so is to create a more egalitarian, free associating society based on large scale cooperation between human beings and compassion for non-kinsmen. The assertion relies on unspoken intuitions which are shaped by the institutions and cultural powers that raise us. Convenient for someone trying to justify their world view, pitiable for anyone trying to understand 'human nature'.

Furthermore: We are all related and the time horizon of this kin favoring behavior has not been established. It is not clear why it is inborn 'human nature' to care for your immediate relatives and not more distant relatives. It is conveniently left implicit as that which makes most sense for the capitalist nuclear family, and maybe a generation or two down. If you care about your offspring into the indefinite future, and if you care about your relatives going back indefinitely, you care about all human beings.

What I truly believe 'human nature' to be, if such a thing could be well defined is our ability to apprehend what lot we have in the common good, what our place in the way of things is. Not just in our communities, but in our species and on our planet.

It's certainly not an excuse to grumble about taxes.

<comment><USER7> You are arguing people should be _prevented_ from prioritising their resources to their kin. You are free to think such an action is contrary to your sense of ethics. My opinion is - if a person can't even love their own children, how can they love others'?

A long time ago all matter originated from the Big Bang, uniform and same in every way. Does that mean that is where we should aim towards? If you care about 'all', why not throw everyone and everything into another giant Big Bang yet again and be done with it? Because that is exactly what globalisation is doing - extinguishing unique cultures, languages and demolishing identity.

<comment><USER8> We don't live in a free society. If we lived in a free society, we would have to, from scratch, determine how best to cooperate. You complained about taxes: Taxes exist for a reason, because they are part of an enormously complex social structure whose main purpose is to support the concept of private property.

I am asking you to consider that if you want more freedom to love your kin, then maybe you ought to abolish the system of coercion that props up capitalism. It's not the taxes at fault. The taxes are there because without them, the system destabilizes. History teaches us that much. If you want private property, you're going to have taxes. The best you can hope for is to be the top of a feudal hierarchy where all the taxes feed into your estate. That does not endure, as we are all aware.

I don't think caring about everything means you want it to be homogeneous. I also reject globalization at a personal level, because I see it as a horribly violent system of interlocking political, social, and economic forces seeking to assimilate more and more of the world into their hierarchy of exploitation.

What I think it means to care about everything, is to not be myopic. It may be your intent to love your children, and even love them more than other children, but it may very well be that the best way to do so is to love all children. Is that unreasonable? It may be that the best way to love your children the most is to care about the entire ecosystem. Is that unreasonable? I think human beings are remarkably good at seeing the connections between things, and even if instinct is what tells us what is important, it is something far more dynamic and intelligent that tells us what is true.

If you want to be an individual, I think, personally, that it means you must find a society that supports the kind of individual you want to be.

I can't imagine being an individual without other human beings around. Realizing that, I see that my individuality is found in my community; my place in my community is part of my individuality.

I can't imagine being an individual without the world I live in. Realizing that, I see that my individuality is also found in my planet; how I treat the Earth is part of how I treat myself.

P.S. If we ever get to the point as a species where we can generate a new universe, I think it would be enormously important for every individual to contemplate what that means about what we are.

<comment><USER7> Everything _is_ connected. Everything and everyone are merely shards of the same universe. And that is exactly the point. By my parents, I and my brother are one. By my grand parents, my cousins and uncles and aunts and I. By my ancestors, I am connected to the rest of humanity. And through me, my children will inherit this same connection. And, so, to take care of the world, I must take care of my parents first, and concentrate my resources on my children.

The same mindset that creates _excessive high_ taxes for redistribution to everyone else, taken to the extreme, would abandon elderly in elderly homes, prevent children from receiving the love of their parents, take babes from the arms of mothers, and in doing so, tear the fabric of society apart, dissolving the connection between nodes and turning humanity into one giant glob, devoid of uniqueness of individuals, by equalising everything.

And the mindset to do that, as hackuser so fervently advocate, at its core, is narcissism. [https://news.ycombinator.com/item?id=10038933](https://news.ycombinator.com/item?id=10038933) The idea that his ideas are all important and others have zero standing, to impose his ideas of how society should be structured on others.

I know nothing. I cannot convince him, and I cannot convince you. Are my ideas the only way people can build societies with? 100% no. What's important is for me to leave others to figure out their own humanity. People will find their own way and from your comment I can see you are already most of the way there. As long as I do nothing to meddle in others, there will be no need for me to meddle.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Sometimes I wish there were "gwern-as-a-service". I give him a topic, and he researches and writes it up. Payment in bitcoin. That would be pretty fucking awesome.

<comment><USER10> This is why, last time I checked, Gwern's site explicitly says that they aren't interested in selling what you want to buy.

</comment></comment><comment><USER3> Another reason has occurred to me: it may well have been that in 1946, with the post-war alliance structure not entirely clear yet, Denmark considered that _selling_ Greenland removed a large part of their continuing value as a US ally.

This would explain why they didn't want to sell it, but were happy to allow US bases to be established without payment. The reciprocity the Danes were counting on was ongoing protection by the USA as a valued ally.

</comment><comment><USER11> _" That's very strange. As an American, would I say Puerto Rico is one of the very last things that ought to ever be cut in the federal budget? Heck no! Puerto Rico has repeatedly decided it'd rather not be a state, but at least it's still genuinely ruled by the USA; if Puerto Rico decided to switch to full home rule, I think I and the average American would care even less about them."_

This is definitely an American point of view. The US is a) a very large country which b) has been growing in power throughout modern history and c) has a cultural aversion to 'empire' (whether they are an empire or not is a different matter, but it seems they don't want to be).

Compare that to many European countries, which are a) very small, b) have lost a lot of power in the last 200 years and c) have a (admittedly not universal) nostalgic streak for the glorious days of empire, when they were world powers.

For Americans to sympathise, imagine if in 2100 various states have seceded and the US has split into multiple nations, with the remnant USA consisting only of the New England states. Then Canada offers to buy Maine, which is otherwise a burden on the treasury. Can you see why you wouldn't want to sell?

<comment><USER12> A better analogy would be an offer to buy Alaska, which would have a good shot at being agreed to.

</comment></comment><comment><USER13> But how much would they get for selling Greenland today? If the answer is higher that $15bn, and I think it might be, then the Danes were shrewd indeed.

<comment><USER14> > If the answer is higher that $15bn, and I think it might be

Why's that?

<comment><USER15> It's a tough hypothetical to consider because a large number of political realities would have to change on the ground, not least of which is the national pride argument you made in your terrific article.

However, let's assume for the time being that they suddenly want to sell to the highest bidder for whatever imaginary reason.

I suspect if sovereignty were up for grabs again, the US would be willing to pay a very significant price to keep it out of the hands of a non-NATO country.

$15bn is a small fraction of annual US federal spending. Seems to me paying a slightly larger or even significantly larger figure would be worth it to the US for sovereignty over such a valuable geostrategic location.

Plus as you noted, it's likely that climate change could increase the value of the land. Sure, maybe not enough to turn a profit for the buyer, but it would offset the costs of buying to some degree.

One particularly interesting implication is that if the US owned both Alaska and Greenland, it could bolster its argument for declaring the northwest passage as international waters in opposition to Canada's territorial waters claim.

<comment><USER16> It seems unlikely that they would sell it to an unfriendly power if they did decide to sell. If the Danes view the Greenlanders as their fellow countrymen, it's unfathomable that they would toss them to the Han Chinese cultural extermination squads at any price. Yet they might be able to see their way to a deal with the US or Switzerland or some other relatively benign owner. This doesn't strike me as an absolute argument but one of degree, much like if you asked me whether the US should sell Florida: to whom, I would ask. I'd gladly be rid of it, but it wouldn't do to have it in Russia's hands.

<comment><USER15> If the Danes wanted a hypothetical something (money, favors, something) badly enough, it's not a completely unreasonable notion that they might entertain selling to a nominally unfriendly power. As I mentioned before, a large number of political realities would have to change on the ground for them domestically for something like that to happen, but assuming that premise I can imagine scenarios where Greenland could fetch well above $15bn.

</comment></comment></comment></comment></comment><comment><USER17> Has a sovereign state selling off land to another sovereign state ever been considered profitable in hindsight?

<comment><USER18> Sweden sold off Swedish Pomerania at the end of the Napoleonic wars in a good piece of business. Initially they wanted to swap it for Norway with Denmark, but as the Norwegians balked they never handed it over and then the Prussians swooped in and bought that and other bits and pieces off Sweden and Denmark.

It was a good piece of business as the defense of it would have cost resources but it still would have been a walkover against a serious opponent. And they would have lost it soon enough, at the latest in 1848 and the upheaval then.

<comment><USER19> You could make almost exactly the same argument for Napoleon's sale to the US of French territories in North America.

</comment></comment></comment><comment><USER20> It may or may not have had something to do with the sale of the Danish West Indies to USA in 1917.

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

</comment><comment><USER21> I can't see why the same logic couldn't applied to any country selling any piece of its land. Why doesn't the United States sell Pennsylvania? Why doesn't the United Kingdom sell Trafalgar Square?

<comment><USER14> It doesn't apply because some areas are worth far more, and are worth far more in conjunction with others.

First, Pennsylvania is a well-developed and rich state, which was at the heart of American industrialization (names like Carnegie will ring a bell), and had and still has many natural resources: Pennsylvania was the start of American oil drilling and even now is yielding lucrative profits in the form of fracking for natural gas (to the point where my uncle remarks on how many of his patients are suddenly rich off royalties). It's in the top 10 of American states by GDP. The net present value of Pennsylvania is enormous. Note the stark contrast with Denmark & Greenland: where Greenland _might_ have commercially exploitable resources and those resources _may_ be substantially profitable one day and _perhaps_ those profits will redound to the Danish people & government and who knows the share _could_ be large enough to repay all the opportunity cost and risk and subsidies, Pennsylvania _has_ been extremely important to the American economy, _is_ now, and _will_ be for quite some time to come.

Secondly, Pennsylvania is worth far more as part of the USA than as part of any other country & an enclave: countless roadways, railways, and rivers flow through it, it's near the ocean, the people of it speak the same language and have the same culture as the surrounding states, which directly border on it with few or no natural barriers, it needs to import and export heavily with them, and so on. If it were part of another country, subject to entirely different regulations and laws and politics and using a different currency and imposing a border on all movements, it would be much poorer than it is now. In the same way that Greece is not in an optimal currency zone combined with Germany and it makes no sense for the USA to still own Puerto Rico and some other places, Pennsylvania is in an optimal currency zone with the USA.

</comment></comment><comment><USER22> maybe they're banking on global warming to turn it into a vacation hotspot, or a continent-sized refugee camp

c'mon you were thinking it too

<comment><USER23> Funnily enough, earlier today I re-read an old article of mine talking about retiring in the 2050s, which includes the quote _" I, for one, will be reaping the rewards of my Greenland Viticulture investments."_</comment></comment>


Why is P3P not used more? - <AUTHOR> http://en.wikipedia.org/wiki/P3P

<comment><USER2> "A key problem that occurs with the use of P3P is that there is a lack of enforcement." You can "promess" one thing through P3P, but do something different with the data you gather.

The only time I used P3P was to get around some restrictions with Internet Explorer.

<comment><USER3> Yup. Building a third party widget that operates via iframe on a customer's site but need access to get/set cookies on your side? P3P time.

CP="NOI ADM DEV COM NAV OUR STP"

<comment><AUTHOR> You sure that policy is right? I don't understand the spec, nor how to read the P3P policy, but looking at <http://www.w3.org/TR/P3P/> seems to indicate these might be problematic:

NOI = Web site does not collect identified data.

OUR = Recipient of the information is your company (only)

STP = The retained information will only ever be used the the currently stated purposes.

<comment><USER4> This is what I use for the same purpose (and I am sure it works), though I am not sure which item or min combo of items is required. Once I beat back the IE demons, I called it a day.

CP="CAO DSP COR CURa ADMa DEVa TAIo PSAo PSDo IVAo IVDo OUR BUS IND UNI COM NAV INT"

<comment><AUTHOR> That's exactly my point. Everyone just Googles and puts random stuff in there until it works.

One day someone will get sued over it, because that policy is telling the browser what you say you will do with that data.

Imagine if financial reporting software worked like this: "Oh, we just tried outputting different values in the balance sheets until our stock went up".

<comment><USER5> > Imagine if financial reporting software worked like this: "Oh, we just tried > outputting different values in the balance sheets until our stock went up".

You're making me wonder if they don't do some kind of A/B testing already....

<comment><USER6> Have you been reading the news the past 15 years? That's precisely what derivatives are used for. Derivatives, and bought-and-paid-for auditors who also provide "consulting services."

<comment><USER5> I've never invested in derivatives. Can't say that I plan to, either.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> Facebook has a decent explanation for why they do not use P3P in the headers for their Like buttons:

P3P CP="Facebook does not have a P3P policy. Learn why here: <http://fb.me/p3p> (URL redirects to <http://www.facebook.com/help/?topic=p3p>).

<comment><USER8> The key bit of that explanation:

"The organization that established P3P, the World Wide Web Consortium, suspended its work on this standard several years ago because most modern web browsers do not fully support P3P. As a result, the P3P standard is now out of date and does not reflect technologies that are currently in use on the web"

<comment><AUTHOR> Yeah, I'm sorry, but that's (mostly) bullshit.

IE does support P3P - perhaps not completely, but to some degree.

 _the P3P standard is now out of date and does not reflect technologies that are currently in use on the web"_

Actually, reading it in conjunction with the new Mozilla privacy icons shows it has held up fairly well.

I'm just troubled by the idea that Mozilla seem to be re-inventing the wheel a bit here.

</comment></comment></comment><comment><USER9> You have to use P3P if you want to set third party cookies (or set cookies from within an iframe) for IE or Safari.

<comment><AUTHOR> When you do that, do you (or your lawyers) check that the P3P policy you use matches that on your site?

Why or why not? (This is a genuine question)

<comment><USER9> Thankfully I've never had to deal with this before, I just so happen to know that P3P is a necessary evil for these things.

</comment></comment></comment><comment><USER10> I think p3p was just an attempt to f' over Google and other ad networks by breaking adsense, etc. It seems Internet Explorer always comes out with some new "feature" every version to try and break adsense. The only time I've ever been able to fully and consistantly crash ie8 was embedding Adsense in a web widget.</comment>


Rotterdam to consider trialling plastic roads - <AUTHOR> http://www.theguardian.com/world/2015/jul/10/rotterdam-plastic-roads-trial-netherlands <comment><USER3> As a person that rides motorcycle avidly I'm always distressed when the most important metric of a road gets a tiny mention, when discussing those new technologies.

Traction. If it's not at least as good as current best asphalt then don't bother.

Cities are already turning into motorcycle deathtraps, with all the "safety" nonsense generously painted everywhere (Which is slippery as hell, even during sunny weather)

<comment><USER4> Because motorcycles are the number one users of road? Because the enjoyment of a small proportion of users outweigh whatever environmental and economic costs of improving infrastructure?

<comment><USER5> Motorcycles and bicycles have a vastly disproportionate impact on improving traffic flow. As traffic density increases, two wheelers fill the gaps left by cars, occupying effectively zero road space when traffic is completely gridlocked. Bikes also occupy very little parking space - five or six motorcycles can fit in the space of a single car.

As pvdebbe points out, motorcycles can be extremely fuel efficient. A 125cc motorcycle or scooter can realistically achieve 90-100mpg. A small motorcycle is much more economical to manufacture than a small car, with about a fifth of the embodied energy. Modern bikes are equipped with catalytic converters and have sophisticated engine management, so produce very low levels of local air pollutants.

Two wheeled vehicles have an essential role to play in solving our current transport problems.

[http://www.acem.eu/images/stories/doc/pressreleases/2011/PTW...](http://www.acem.eu/images/stories/doc/pressreleases/2011/PTW_Belgium_Study_FEBIAC_ENG.PDF)

<comment><USER6> Even if all of this is true and then some, it doesn't change the fact that there are very little motorbikes on the road. Switching to these types of roads, even if it were impossible to ride on for motorbikes might still be a net positive for the environment.

<comment><USER7> Not really. In much of Asia, which is most of the world's population, two wheelers dominate. Traditionally bicycles, which was followed by motorbikes in South and Southeast Asia and electric scooters in China.

There's a reason why they continue to dominate, and it's not just the cost of cars (I've regularly seen people riding bicycles worth more than many people's cars here in China) - it's because they're practical! Parking, repair, exercise, lack of traffic congestion, etc.

</comment></comment></comment></comment></comment><comment><USER8> Note to marketing guys: find a better word than 'plastic'. You lose out because it _sounds_ unenvironmental and is also associated with cheap, shoddy products. Go for something like 'polymer' instead.

<comment><USER9> If he did that it would diminish the clicks for people who can associate plastic with other items. I think very little people are associating polymer to their pop bottles.

</comment></comment><comment><USER10> Plastic in large quantities can become very, very expensive. It's cheap when you make a bottle or any kind of thin package, but as measured in kg, plastics are not cheap at all (but have interesting properties).

<comment><USER11> Other articles about this made it sound like they'd use re-used, granulated plastic, like that fished out of the ocean's 'plastic soups'. I don't know anything about plastic manufacturing or chemistry, but that was supposedly one of the big selling points - that the materials are cheap and needed to be disposed of anyway, some way.

<comment><USER12> China buys used plastic for decent money.

</comment></comment></comment><comment><USER13> Wouldn't that leak significant amounts of endocrine disruptors into the environment?

<comment><USER14> Probably not. Endocrine disruptors in the environment can result from degradation of certain polymers, releasing chemicals such as bisphenol-A (BPA), phthalates and other compounds. For example, materials made with BPA such as polycarbonates, are associated with endocrine disruption hazards, particularly for children.

Generally food and beverage containers are made from polyethylene or polypropylene because these plastics are very inert. They aren't made with compounds associated with endocrine disruption.

Since the proposed roadways were going to use recycled polyethylene pop bottles it shouldn't be a problem. However I'm skeptical about the idea on other grounds, I have real doubts about factors like durability and cost.

<comment><USER13> This is a review of evidence on the subject: [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2854718/](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2854718/)

The road will be exposed to heat and sunlight both of which promote leaching.

<comment><USER15> Perhaps they'll lacquer it to prevent that.

</comment></comment></comment></comment><comment><USER16> Plastic is not a sustainable nor cost-effective material to build roads out of. I am a mechanical designer who designs with plastics daily. All plastic polymer chains break down over time and there is no getting around it. Light, thermal-variations, water-absorption, and mechanical stress can cause microscopic polymer chains to break and this weakens the plastic. If you have ever seen plastic that has become brittle with old age or sunlight you have seen a perfect example of polymer-chain damage in plastics. The rate of polymer chain breakage can be slowed down through various plastic formulations but it can't be stopped, especially in an outdoor environment where it is contending with wild temperature variations, water, oil, sunlight, and cars driving on it.

So yes, lets make a road out of plastic, even though plastic is at it's absolute worst under the stresses roads undergo. I will join the "when will the road break" betting pool at 8 years and 2 months after the road is laid.

</comment><comment><USER17> The Propaganda-Elephant in the Room: there is no such thing as "recycling plastics" \- but still the word "recycling" is commonly used, even if the described process very clearly is not about recycling. Obviously, this is a downcycling process which will lead to dissolved plastic in the food chain after a few decades, so this is far away from an ecologically sustainable or clean solution, that might be acceptable for our next generations, it is plain stupid.

The solution is to reglement plastic production to a set of about max. 50 different recipes for different applications that actually can be recycled. Today we have thousands of patent-protected artificial substances called "plastic" and the plastics lobby is extremely strong in suppressing any discussion that goes into that direction.

</comment><comment><USER18> "It's still an idea on paper at the moment; the next stage is to build it and test it in a laboratory to make sure it's safe in wet and slippery conditions and so on"

EOT

</comment><comment><USER19> So these are produced in large panels, which are laid on a compacted roadbed, or perhaps on concrete supports. The problem I see is that of the joints - <USER2> cars & trucks drive over them, they'll flex the plastic, causing loud "thump thump" noises.

</comment><comment><USER20> What's wrong with asphalt? It can be easily recycled, it's an otherwise pretty useless component of crude oil of which we have plenty. It can be repaired with relative ease.

<comment><USER21> "...recycled plastic, which it said required less maintenance than asphalt and could withstand greater extremes of temperature– between -40C and 80C. Roads could be laid in a matter of weeks rather than months and last about three times as long, it claimed."

"...asphalt is responsible for 1.6m tons of CO2 emissions a year globally – 2% of all road transport emissions."

<comment><USER20> I don't buy the marketing blurn. How are potholes going to be repaired?

As for asphalt's CO2 footprint, that's the figure for asphalt mixed with cement. Extracting asphalt and bitumens from crude oil is literally the bottom of barrel.

Pardon typos, fat sausages on moving bus.

<comment><USER9> I think you're assuming it potholes in the same way as asphalt. Even if it did, it would be repaired most likely the same way potholes are repaired today, by infection new plastic into the hole and forming the previous layer to it, just like we do with asphalt today.

</comment></comment></comment></comment><comment><USER22> Will this make us run out of oil even faster?

<comment><USER23> It's recycled plastic, so I doubt it. Plastic recycling is very expensive process, so very small percentage of currently produced plastic is recycled one.

</comment></comment><comment><USER24> Would be interesting to see how potholes look and how they are repaired.

<comment><USER25> Would potholes still exist? Water can't penetrate plastic and soften it's structure, and tires can't grip onto plastic and rip it up... so it seems like there wouldn't be that problem.

</comment></comment><comment><USER26> Great to see the massive amounts of plastic that I put out every 2 weeks are being put to good use.

</comment><comment><USER27> Url changed from [http://gizmodo.com/this-company-wants-to-test-plastic- roads-...](http://gizmodo.com/this-company-wants-to-test-plastic-roads-that- can-be-ma-1717475902), which points to this.</comment>


Ask HN: What is your favorite event management software? - <AUTHOR>

Seems to me that the event management market is full of many relatively similar competing services.
In ticketing, eventbrite seems to be the undisputed leader and well on its way to totally dominate the market. But in other segments like participant management, event promotion, I don't seem to be able to find any single or even handful of services that enjoy a similar market position.
Just wondering what are some of the event management software you guys use or love. <comment><USER2> You might want to take a look at:

<http://www.pentabarf.org/>

I am not a user, but visited several events managed by with help of this software.

<http://www.pentabarf.org/Conferences_planned_with_Pentabarf></comment>


American Big Brother: A Century of Political Surveillance and Repression - <AUTHOR> http://www.cato.org/american-big-brother <comment><USER2> Mencken once said that many Americans, due to their Puritan roots, live in "The haunting fear that someone, somewhere, may be happy."

This surveillance and its informants, such as are discussed in this article, seem to me to be the embodiment of this fear.

Many people, for whatever reasons I will never be able to fathom, seem to get some sort of thrill on snitching on the activities of others whom I guess they feel are enjoying themselves too much.

Maybe its envy...maybe its some authoritarian streak... I don't know, but it sure exists and many of my old friends have been bitten by its ugly bite.

<comment><USER3> The business about the puritans is a cute intellectual toy based on trivia and truly ancient history.

There is no relationship between a centuries-old minority subculture, and the bestial, militarized nuclear power that projects power into orbit, throughout the skies and across oceans today.

There's enough porn on the internet (mostly originating from the United State) to prove that with an accidental twiddle of your fingers into any search engine.

<comment><USER4> You misunderstand puritanism, it has many tentacles that have stretched to many corners of american culture. It still has a strong presence in our standards of media "decency" where abominable violence is fine but naked bodies, eroticism, or rough language is clamped down on to an extreme degree. It also has lots of little weird echoes and side-effects. Consider, for example, the way that overly happy, "bubblegum" pop music is denigrated, especially by those who think that valuing "sophisticated" and "mature" music (whether it's classical, prog rock, speed metal, or what-have-you) is important. Or look at the legal prohibitions against drug use and sex work. Or look at the modern trend, especially online, of ironic detachment.

There's very much an undercurrent of looking at pure, unfiltered exuberance, enthusiasm, and enjoyment through a skeptical, dour, or peevish lens. The fact that people enjoy looking at porn in private doesn't change that.

<comment><USER5> I would argue that watching porn -in secret- is a symptom of Puritanism.

<comment><USER4> Well, pretending you don't, and especially being critical of others when their private habits are revealed, sure.

</comment></comment></comment></comment></comment><comment><USER6> I think part of the problem in the US is the culture where eg police departments compete for resources basically to make their own department bigger. One of the ideas in the Ron Paul movement was that governments needs to be smaller. Of course, in the real world it probably should not go as far as Ron Paul suggests, but....

<comment><USER7> The main cultural problem in the US is the acceptance, but the white majority at least, that police behaving like they do is part of the job and acceptable.

I refer to the fact that you can be tased, shot, beat, arrested, held down by 4 policemen, beaten etc 10 times more easily than you can in Western Europe -- and people think that's OK, or what "the police is supposed to do".

Even the fact that getting out of your car when stopped by a traffic cop (something totally OK in 99% of the world) means you can be shot in the US...

<comment><USER6> That is not good either, but I was thinking of for example the drug war.

<comment><USER8> A lot of police militarization, at least before 9/11, was driven by Drug War mythology. Now there's a badder bogie man.

</comment></comment></comment></comment><comment><USER9> Whenever I pause to think about surveillance and other activity of the sort that is aimed at stifling peaceful, ideological movements and groups it gives me a chill.

At those points it becomes clear that the predomimant interests that we are serving are not those of "the people", as it is the people who are being targeted. This leads to the obvious question "whose interests are we serving and at what cost?"

<comment><USER10> "...peaceful, ideological movements and groups..."

Just in case, I suppose.

I guess those that have power are also quite sensitive to losing it. But yeah, Burning Man?

</comment></comment><comment><USER11> There's a lot of truth to the information in the posting, but remember this is from the libertarian think tank Cato Institute, which has ties to Koch industries. They often like to use examples of bad government for justification to roll back government programs that help the average citizen in favor of corporate rule, not just the bad ones that hurt everyone.

<comment><USER12> You mean the Koch brothers, the same ones in favor of: ending police militarization, ending mass-incarceration, ending our military adventurism, and are in favor of gay marriage? Sounds pretty great to me.

<comment><USER13> I'm not sure how that addresses OP's comment, others at the opposite end of the political spectrum also share these views.

</comment></comment></comment><comment><USER14> Sexual surveillance and repression goes back to the dawn of civilization and the origin of language. Everybody wants to know who is having sex with who. This is, I fear, the ultimate question of Douglas Adam's Hitchhiker's Guide trilogy. It is difficult for a human being to resist the temptation to ask who is having sex with who, especially after spending decades building a system that is designed to answer exactly that question (a.k.a "artificial intelligence" or perhaps "artificial gossip" would be a better term).

> Gossip, according to Robin Dunbar in his book Grooming, Gossip and the > Evolution of Language, does for group-living humans what manual grooming > does for other primates — it allows individuals to service their > relationships and so maintain their alliances on the basis of the principle: > if you scratch my back, I'll scratch yours. Dunbar argues that as humans > began living in increasingly larger social groups, the task of manually > grooming all one's friends and acquaintances became so time-consuming as to > be unaffordable.[51] In response to this problem, humans developed 'a cheap > and ultra-efficient form of grooming' — vocal grooming. To keep your allies > happy, you now needed only to 'groom' them with low-cost vocal sounds, > servicing multiple allies simultaneously while keeping both hands free for > other tasks. Vocal grooming then evolved gradually into vocal language — > initially in the form of 'gossip.'[51] Dunbar's hypothesis seems to be > supported by the fact that the structure of language shows adaptations to > the function of narration in general.[52]

> Critics of this theory point out that the very efficiency of 'vocal > grooming' — the fact that words are so cheap — would have undermined its > capacity to signal commitment of the kind conveyed by time-consuming and > costly manual grooming.[53] A further criticism is that the theory does > nothing to explain the crucial transition from vocal grooming — the > production of pleasing but meaningless sounds — to the cognitive > complexities of syntactical speech.

[https://en.wikipedia.org/wiki/Origin_of_language#The_gossip_...](https://en.wikipedia.org/wiki/Origin_of_language#The_gossip_and_grooming_hypothesis)

<comment><USER15> _A: 42_

 _Q: How many people that have been a part of my life are having sex at this moment?_

A bit disappointing if so, but it would at least satisfy those mice's desire for a salacious topic to tour the galaxy's talk show circuit.

To the second part, it doesn't seem like that theory of vocal grooming would need to be the genesis of syntactic speech.

Complex verbal communication could have come about for completely other reasons, and, as we standardized around words and sentences and the like, vocal grooming likewise could have grown from simple noises to these similar more-complex mechanisms.

</comment></comment><comment><USER16> Trust a Cato article/infographic/whatever to totally ignore the red scare and rightist motivation for virtually all political surveillance and repression.

<comment><USER17> This is a false dichotomy, you can be right or left leaning and also be libertarian or authoritarian[0].

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

<comment><USER18> 1\. The political compass is oversimplified and not taken seriously by political scientists 2\. This has nothing to do with his argument. In the US, surveillance is largely the product of moral panics, primarily 1. The red scare 2. The race scare 3. The drug scare, which itself is really just a synthesis of 1 and 2; the drug war was essentially invented to attack black and Latino communities as well as anti government "subversives." Maybe that's not true in EVERY state that has used mass surveillance, but it is true in the specific case of the US.</comment></comment></comment>


A sane pdf tool to merge/split/rearrange pages - <AUTHOR> https://github.com/pdfarranger/pdfarranger <comment><AUTHOR> There are so many pdf tools to merge/split/rearrange pages. Most of them are crap, shareware or hardly usable. This one is open source and can even be used to stitch images to a pdf!

It works on linux and windows.

Usually, open source/linux tools are not bullshit, so it is a good advice to not search for "some-tool", but rather for "some-tool open source" or "some- tool linux" (I got this advice from a friend).</comment>


The man behind the Commodore 64 - <AUTHOR> http://www.news.com/The-man-behind-the-Commodore-64/2008-1042_3-6222406.html?tag=nefd.lede <comment><USER2> [http://www.scribd.com/doc/40434/COMMODORE-64-PROGRAMMERS- REF...](http://www.scribd.com/doc/40434/COMMODORE-64-PROGRAMMERS-REFERENCE- GUIDE)

<comment><USER3> It all looks so familiar, and it's been 20 years since I've used BASIC or 6502 assembly. When I pick up Perl or Python after not working with it for six months it looks kind of foreign again. It's weird how those very early experiences seem to be more intensely imprinted than what came later.

<comment><USER2> It's kind of strange how I like mostly 80s music. It's almost like I'm stuck in a time warp. I guess it's that way with a lot of things.

</comment></comment></comment><comment><USER4> sys 64738

<comment><USER5> poke 53280,40

At least, if I recall correctly...

<comment><USER2> [http://cbm.csbruce.com/~csbruce/cbm/transactor/v8/i3/p006.ht...](http://cbm.csbruce.com/~csbruce/cbm/transactor/v8/i3/p006.html)

[http://cbm.csbruce.com/~csbruce/cbm/transactor/v8/i3/p007.ht...](http://cbm.csbruce.com/~csbruce/cbm/transactor/v8/i3/p007.html)</comment></comment></comment>


New Cheaper, Ad-supported Kindles - <AUTHOR> http://www.businessinsider.com/kindle-with-special-offers-2011-4

<comment><USER2> Am I the only one who doesn't believe the $25 drop is worth it? If it was something like, $50 or $75 then yes it would totally be worth it.</comment>


macOS Sierra is now out - <AUTHOR> It's not landed on the featured tab yet but you can download the official final release by following these instructions:<p>1. Go to the Mac App Store. 2. Find any App made by Apple 3. Click "More Apps by Apple" 4. Download macOS Sierra <comment><USER2> I mostly like the changes Apple has been making to OS X. I usually use Ubuntu but I keep an older MacBook Air around and enjoy kicking the tires on new releases.

One thing that I don't like is Apple Photos App. I have what I consider to be an ideal system for managing photos, and it is not Apple's app: I set my cellphone to wait until I am back home on wifi and then send new photos and videos to Google Photos, OneDrive, and Dropbox. I love having triple copies of everything.

I am downloading macOS Sierra right now on my old Mac and I hope they have some flexibility for disabling/uninstalling unwanted built-in apps. On 10.11.6 you can't delete Photos app.

<comment><USER2> UPDATE: I now have macOS Sierra installed. Seems fine enough and I enabled Siri on my laptop. I must say that Siri has some catching up to do with Google Now which answers my questions (usually) and does not just give a few web links like Siri does.

edit: I just tried more "calculation style" Siri queries that kicked in Wolfram Alpha, and those results are nice!

</comment></comment><comment><USER3> What is the minimum requirements? When I click the support link in the app- store for Sierra and then click "upgrade requirements" I am taken to an OSX El Capitan page.

EDIT: Found it myself here: [https://www.apple.com/macos/how-to- upgrade/#hardware-require...](https://www.apple.com/macos/how-to- upgrade/#hardware-requirements)

Does anybody know what is different hardware wise between mid-2009 macbook pro and late-2009 macbook?

The Macbook can run MacOS Sierra, but not the MacBook Pro, but they look the same hardware wise.

</comment><comment><USER4> Yay, but can't be said to many times, be aware that PPTP VPN is gone!

<comment><USER5> Are there companies/individuals using PPTP today?!

<comment><USER6> Many unfortunately.

It isn't that PPTP is very good or even at all secure. It is just that it is completely painless to set up and almost universally supported.

L2TP/IPsec by contrast doesn't traverse NATs well, requires several ports open, and is harder to diagnose when things do go wrong (since it can be on different layers).

OpenVPN is likely the best replacement for PPTP, it just still lacks native support on most major platforms (Windows, MacOS, iOS, Android, etc). You need to install a custom client which adds extra friction to getting it setup.

If Microsoft, Apple, and Google all added native OpenVPN support then PPTP would likely die off much faster than it is.

<comment><USER7> What's wrong with Tunnelblick or Viscocity on macos?

</comment></comment></comment></comment><comment><USER8> MacBook Unibody 2008 not supported either but after 8 years I'm ready to change this year whenever the hell they get round to announcing the new MacBook Pros.

</comment><comment><USER9> I now have macOS Sierra on Macbook Air 13 and it works good. I has any problem with sleep and shutdown. I don see any big changes in system.

</comment><comment><USER10> Not downloadable on 13" mid 2009 macbook pro

</comment><comment><USER5> Apparently late 2008 iMacs are cut out! Too bad! :(

</comment><comment><USER11> Thanks</comment>


Ask HN: What problem does blockchain tech solve that databases don't? - <AUTHOR> To me it seems that every alleged application of blockchain technology can be done by having a trusted organization maintaining a reliable database.<p>Am I missing something? <comment><USER2> Blockchain is in the open so you don't have to trust one organization. Multiple organizations watch each other. And one organization might quit anytime.

You're right that many blockchain projects are based on one organization, let's say that Porsche project, and they could use a distributed database instead.

[https://newsroom.porsche.com/en/themes/porsche- digital/porsc...](https://newsroom.porsche.com/en/themes/porsche- digital/porsche-blockchain-panamera-xain-technology-app-bitcoin-ethereum-data- smart-contracts-porsche-innovation-contest-14906.html)

"All activities are documented in the blockchain, making deletions transparent." Sure, but Porsche is the only provider of data (writes) and can change the rules. I don't see how others are writing in the same blockchain.

</comment><comment><USER3> Nope - you're 100% correct. The "problems" blockchain solves are exactly those two requirements you've identified.

Blockchain tech allows for a distributed and trustless version of whatever you'd otherwise do with a reliable centralised database operated by a trusted party.

</comment><comment><USER4> a. The problem of easily raising money from VCs.

b. The problem of being able to sell your solution while having a shockingly low transaction per second.

</comment><comment><USER5> > To me it seems that every alleged application of blockchain technology can > be done by having a trusted organization maintaining a reliable database.

Congratulations, you have just discovered that every application of a _decentralized_ service can be implemented with an appropriate _centralized_ service without changing much of the protocol running on top of that service. You do know that this is an _obvious_ result, right?

Blockchain is the first cryptographic protocol for document timestamping that _does not need_ the trusted third party to run. This alone is a significant technical success.

<comment><AUTHOR> I guess my point was more that any application on such technology would need a trusted organization to maintain the blockchain to gain the trust of the users.

I wouldn't want, eg my health records stored on a system that isn't trusted. This is one often cited application of blockchain.

<comment><USER5> Note that storing health records is a very dumb try of using blockchain. No wonder that you have trouble seeing how blockchain would be of any help, though probably for reasons different than the proper ones.

Blockchain is a service that adds a (cryptographic) timestamp to documents, so everybody can tell which of the two related documents was issued earlier. Blockchain doesn't do absolutely anything else! If a specific use case is not made easier when you can tell which of the two documents was earlier, then _using blockchain is pointless_.

<comment><AUTHOR> let me rephrase: give me one good use where the majority of potential users would be OK with storing timestamped documents on a system not maintained by a trusted organization.

<comment><USER5> Ownership transfer contracts are one such example. We assume here that the signatures under a contract cannot be forged and the contract itself cannot be modified without the consent of the involved parties, but digital signatures used in (on top of) blockchain satisfy this requirement.

</comment></comment></comment></comment></comment><comment><USER6> anti-government shutdown, anti-censorship</comment>


Google Penalty checker allows for fast SEO analysis - <AUTHOR> http://fruition.net/google-penalty-checker-tool/ Fruition's Google Penalty Checker tool allows for fast (and free) checking of Google penalties. <comment><USER2> Great tool that helps me pinpoint the problem with my traffic. Instantly. Thanks for providing the tool.</comment>


Show HN: A cyberpunk/vaporwave developer portfolio - <AUTHOR> https://zach.dev <comment><USER2> Amazing website. I love the angel investor quote, made me want to invite you to join my startup.</comment>


Facebook F8 Live - Facebook Platform Launch Details - <AUTHOR> http://mashable.com/2007/05/24/facebook-f8-live/ <comment><USER2> Don't get your hopes up about developing for facebook. The guy managing that devision, Dave Morin, isn't one to return emails. Even though he proclaims to be the guy in charge of the only stuff that matters at facebook (f8 & platform) he doesn't act like it.

We got an Mutual NDA from facebook a few months ago, and they never signed their end of it, and this Dave guy hasn't said a word since he failed to return it on any of the multiple dates we agreed upon. Good managers don't let stuff slide off the edge of the plate so unprofessionally on behalf of their company.

Hopefully we have a one time experience, but we are supposedly friends with Dave... or at least one of the 1000+ people he would have believe that.

</comment><comment><USER3> Test drive it here: <http://news.ycombinator.com/comments?id=24516>

</comment><comment><USER4> The list of partners is interesting. Twitter? Scribd? There are a few other I know of that arent on that list too

</comment><comment><USER5> I don't see any way of developing apps for Facebook... do you have to contact them directly? or?

<comment><USER6> <http://developers.f8.facebook.com>

I'm not sure if everyone has access to that yet, or if it's just people who were invited to the launch.

<comment><USER5> thanks, they've updated the site and I found my way :)

</comment></comment></comment><comment><USER7> just to add to this, its dave fetterman who runs the platform, and dave morin works for him. also, i've heard from others how morin failed to deliver on promises of getting dev. access</comment>


Ask HN: How to choose a database for a project? - <AUTHOR> Hi, I am working on an experimental org project that involves running multiple Monte Carlo simulations. The results have to be stored in order to facilitate backtesting and comply with audit.
What database choice seems appropriate in your opinion?
Thanks. <comment><USER2> I'm a junior dev, so I try to stick with things that have been proven to work without problems. This is why I think you can almost never go wrong with SQL. Some say that PostgreSQL is one of the most advanced ones and it's free. Others say and I can confirm, if your projects isn't huge give a try to SQLite. On the other hand there's this "new" trend with no-SQL approach, but the only proven thing I know about it is that there are people out there who made their career from saving other companies from troubles generated by young devs / CTOs / architects wanting let's say MongoDB very much, which occurred to be often a terrible choice. That makes me cautious. Don't ask me about details regarding that - I don't know.

I have personal experience with MariaDB / MySQL and SQLite. A pleasant thing about both is that they are reliable and you are going to find a lot of resources (also help) online, which saved me some headache a couple of times. In more complicated projects I'll be using Postgres. I'll try to keep Mongo- ish stuff away until I'm going to have a very specific reason to use its advantages, which I don't fully understand at this point.

Again, I like things I can rely on. SQL is one of them.

PS: I'd be willing to know more what are you going to simulate @curiousgal. MC simulators are cool!

</comment><comment><USER3> To answer the title question, I always use Postgres [1] because it's free and open source.

To answer the question in your post (which is different), I have no idea.

[1] [https://www.postgresql.org/](https://www.postgresql.org/)

</comment><comment><USER4> Pick the one database you and your team/org have been using so far, so you'd spend close to zero time on database issues.

I think it would be better to remove as many degrees of freedom as possible, simplify aggressively, and delay decisions you don't have to absolutely make at this stage to allow you to focus on proving what it is you're trying to prove.

</comment><comment><USER5> The simplest thing is to use the file system. Basically the file system is a key-value store where the value can be anything (a BLOB).

There are a few space and time and reliability tradeoffs but they don't matter for a lot of workloads. The positive side of the tradeoffs come in the form of simplicity and tooling.</comment>


AlphaLab Demo Day Showcases Pittsburgh's Finest - <AUTHOR> http://www.readwriteweb.com/readwritestart/2009/10/alphalab-demo-day-showcases-pi.php

<comment><USER2> We've "grown" a lot as a startup through out AlphaLab. We've also learned a whole lot during AlphaLab and Demo day itself has definitely brought us a good amount of interests and leads. If I get around to it, I plan to write a blog post on our demo day experience, what went right, what went wrong, etc.

</comment><comment><USER3> Demo day was a lot of fun. I really enjoyed the opportunity to pitch, and we got some great leads for funding and customers. I'd definitely recommend the whole experience to anyone trying to do a startup. -Nick from CloudFab

</comment><comment><USER4> Really nice to see Pittsburgh getting some coverage

</comment><comment><USER5> good to see alphalab cranking out new stuff.

</comment><comment><USER6> alphalab is awesome!</comment>


Performance Shootout: Vista 32-bit versus Vista 64-bit - <AUTHOR> http://www.extremetech.com/article2/0,1697,2280808,00.asp

<comment><USER2> From the article: Even the 3ds Max 9 and POV-Ray rendering tests seem slower in 64-bit mode.

Rendering using many instances of many data structures. This requires a large number of address pointers. When you move from a 32 bit environment to a 64 bit environment, those pointers grow from four bytes to eight byte each. That can reduce the effectiveness of a processor cache by 15% or more. Switch to 64 bit only if you're squeezed.</comment>


Minikanren – An embedded DSL for logic programming - <AUTHOR> http://minikanren.org <comment><USER2> So this appears to be a language to specify logic systems. This makes it especially odd how unstructured the website appears.

If the language is so simple and uses only 3 or 4 operators, why not just start with a short definition of those operators, and maybe a list of short examples? That would go a long way towards explaining to me as a casual visitor why I should care about this.

<comment><USER3> So, this project is a web side of a famous (arguably THE most famous) book on relational programming. It's a book that introduces a dialogue for learning the language, how it's implemented, and its principles. The principles of relational programming are the important part. It's not strictly "Incorrect" to say "MiniKanren specifies logical systems" but it doesn't really capture the spirit of relational programming.

The book is linked from the page, and the book itself is well reviewed on average (and gets an excellent rating from me, personally). The first 3 paragraphs explain this and link to a video with more details.

MiniKanren's had some extremely interesting results presented in it, most famously a relational bidirectional interpreter (which can suggest programs that transform input in a specified way). William Byrd (one of the primary authors of the work) still gives an excellent talk on the subject because it's not well known. [0]

I can't help but notice the link to the book, the exhaustive list of papers and talks, links to videos and an invitation schedule. It seems like there was an awful lot of information you just ignored. As a friendly bit of advice, PLT, PLR, and in general the deeper and more modern end of algorithmic work is not going to present a punch, javascript-framework-esque 60 second animation for you.

So if you are going to pursue more on MiniKanren (and I really recommend it, it's amazing stuff) then I strongly recommend you gird yourself for rifling through references and books as a first resort rather than a last.

<comment><USER4> I disagree with you, but to really understand why you will need to read my book. It may sound like a lot of effort, but I can assure you that my disagreement is as intricate as the celestial orbits, as deep as the darkest ocean, and as as divine as the heavens themselves.

The scholars and holy men have spent years studying why I disagree with you, and they will confirm that, once you too have spent years studying, you will not only disagree with your former self, but understand, with the first true clarity of your adult life, that the sacred knowledge cannot be grasped by the clumsy hands of a dilettante.

"Please, sir", I hear you ask, "can you not spare some crumb of wisdom from the table of your enlightenment? Some small morsel to nourish me on my journey?" I am afraid not. Summaries are nothing but fornications of the mind: easy pleasures to tempt you away from the righteous path of long and laborious study to an uncertain end. The truly wise know that it is better to know nothing than to know a little.

And if, in some fit of insouciance, you begin to think it is not worth your time to engage with the entire depth (as the ocean, recall) of my argument before knowing if it is true, or useful, or relevant to you? Then I can offer nothing but pity. Do you not understand that it is you who must prove yourself worthy of my ideas? You who must justify your relevance to me?

The ego of students these days is astonishing. It's no wonder they never learn anything.

<comment><USER3> I like to imagine a hypothetical, parallel universe where you spent the same amount of time writing your overwrought post and instead focused on the first paragraph of the simple, accessible webpage that is linked, you'd see a link directly to a series of interactive code samples. An exact summary of "what it's good for" is found in the second paragraph (as noted by others in this thread). Such an investment of time would surely get you below the fold, and see the link to multiple talks and papers. There's a whole section just entitled, "Recorded Talks" with dozens of videos offered by professionals far more qualified to talk on the subject than either you or I as implementors of such software systems laid out in an archival format. Talks by such amazing people as Byrd, Freidman, Stokke or Nolan.

I like to think in that same universe, the poster I responded to also took this time. So that I could have instead spent more time on my OTHER, way more fun and interesting post where I go into a use case. Maybe actually reformatted some source code from the prototype I'm contractually forbidden to share to give a more in-depth look in how one might use these principles (which are, as I suggested, not at all obvious) in industry applications.

I think that alternate universe is one I'd like to live in. Instead, I'm stuck here in this one. A universe where instead of doing more cool posts about the electromechanics of power tools and their restoration, you instead write a prickly little post defending someone's request for a thing that was literally offered in the first paragraph of the source page they asked about. One where I spend time writing this boring post as well.

Truly, we live in the darkest timeline. Probably the darkest part about this timeline is that my post you responded to, devoid of novelty and missing the talk link I was going to copypaste leaving a blank footnote annotation? That's gotten over 3x the positive moderation of my other post where I describe an active use case.

But thanks for your feedback. You're right, I shouldn't post here anymore.

</comment></comment></comment></comment><comment><USER5> Slightly more approachable intros to this topic:

Hello, declarative world: [https://codon.com/hello-declarative- world](https://codon.com/hello-declarative-world)

Reasoned PHP: [https://igor.io/2014/08/06/reasoned- php.html](https://igor.io/2014/08/06/reasoned-php.html)

<comment><USER6> I made a Swift library, Logician ([https://github.com/mdiep/Logician](https://github.com/mdiep/Logician)), based on microKanren with the help of these links. I also wrote about how it works with Swift: [https://matt.diephouse.com/2016/12/logic-programming-in- swif...](https://matt.diephouse.com/2016/12/logic-programming-in-swift/)

I haven't had the chance to build anything that uses them. But having become familiar, I think there are lots of potential applications. I always thought that Prolog was strange. Logic programming makes a lot more sense as a library IMO.

</comment></comment><comment><USER7> Minikanren (and core.logic) is very fun to explore. It's such a brain bender and it seems well suited for some PL things. E.g. say you have some custom interpreter. If you implement that interpreter in Minikanren, you can run it backwards and answer the question "what program, if any, evaluates to this result". To generate a quine, you make both the input and the output of the interpreter the same logic var, and have Minikanren solve for it.

On the other hand, I was unable to find a use for it any real world problems (in my case: scheduling and portfolio optimization). I always use a linear constraint solver instead.

</comment><comment><USER8> I've been looking at the Clojure implementation, core.logic, but can never figure out what to use this paradigm for. Can anybody name the cases where logic programming really shines?

<comment><USER9> It is useful for problems where the solution is difficult to find -- any kind of problem with many constraints which conflict, and maybe an optimisation condition. Such problems are very difficult from most programming, when it tends to be way to find what you want (although of course you can always optimise it further).

<comment><USER10> This sounds like a layout engine for a GUI toolkit. If you have a bunch of widgets with optional min and max widths and other constraints and you put them all in the same row, the layout engine needs to compute the real size of each widget (also constrained by the width of the parent widget, which is also dynamic and resolved by the layout engine save for the top level window widget) so it can be rendered.

<comment><USER11> You can use standard constraint solvers for these kinds of problems. Although, you can use minikanren in such an application, you are missing out on a lot of its power if you do that.

An example where such systems shine is program generation, theorem proving, knowledge databases, program verification and other applications where the search space is huge but the rules are relatively simple.

</comment></comment></comment></comment><comment><USER12> From the list of implementtaions, microkanren in Prolog:

[https://github.com/mndrix/microkanren- prolog](https://github.com/mndrix/microkanren-prolog)

(By the indefatigable Michael Hendrix)

</comment><comment><USER13> Be forewarned: MiniKanren has no "not" operator. (I invested a lot of time teaching myself MiniKanren, working through most of "the book" (The Reasoned Schemer), before I found that out.)

<comment><USER14> Some implementations, including Will Byrd's [0], have "=/=" and "absento". This is basically "not".

[0] [https://github.com/webyrd/faster- miniKanren](https://github.com/webyrd/faster-miniKanren)

</comment></comment><comment><USER15> Gentle plug for my literate Haskell implementation that aims to teach the concepts as they are defined: [https://github.com/seantalts/hasktrip/blob/master/doc/MicroK...](https://github.com/seantalts/hasktrip/blob/master/doc/MicroKanren.md)

<comment><USER16> Hey thanks!

</comment></comment><comment><USER17> From 2014: [https://news.ycombinator.com/item?id=8395079](https://news.ycombinator.com/item?id=8395079)

</comment><comment><USER18> How does this relate to Prolog and Datalog?

<comment><USER19> It's right at the end of the first paragraph.

[http://minikanren.org/minikanren-and- prolog.html](http://minikanren.org/minikanren-and-prolog.html)</comment></comment>


The Talented Mr. Madoff  - <AUTHOR> http://www.nytimes.com/2009/01/25/business/25bernie.html <comment><USER2> Talented, yes. But as the forensic psychologist cited in NY Times articles suggests, probably a psychopathic (aka sociopathic) personality: virtually without remorse; quietly reveling in his serial "murder of wallets." There's definitely a lesson here for all business and professional relationships: about not mistaking a person's likability with trustworthiness. ...and not letting subjective impressions or word of mouth consensus overrule basic standards such as diversification of assets and "if it's too good to be true..." skepticism.

A super sad story of a super-sized Ponzi marketer and the pain he can cause :(

<comment><USER3> The headline refers to the 1999 movie _The Talented Mr. Ripley_ about a young psychopath who manages to fool everyone into believing he's the son of a millionaire and eventually becomes a murderer.

<http://www.imdb.com/title/tt0134119/>

<comment><USER4> Oh, thanks for explaining. For a moment I got confused and thought it referenced the 1955 novel that the movie is based on.</comment></comment></comment>


The Deadlock Empire – Slay Dragons, Master Concurrency (2016) - <AUTHOR> https://deadlockempire.github.io/#main <comment><USER2> I enjoyed it, but the levels felt very easy. I'd also suggest some way to work in words like mutex or semaphore more. If you named every variable xxxMutex for example the game would do a better job of teaching the vocabulary (I think). As is, it's easy to just manipulate the threads without really knowing the names of the synchronization elements.

</comment><comment><USER3> Great idea! This might be a fantastic pedagogic tool.

Some minor details that annoyed me (I'm only listing them here for improvement purposes):

\- You can't "Expand" the whole program, only one statement at a time. However, having the fully expanded view is IMHO key to correct concurrent reasoning.

\- Each mission's objective is hidden inside a big explanation text. I already know what mutexes/deadlocks/atomics/monitors/etc. are, I just want to play, thus I only need to know what will be considered as victory (as you can't unambiguously deduce it from the code: sometimes you must reach an Assert(false), sometimes you must deadlock the program, etc.).

\- The confirmation dialog for 'reset level' is annoying (especially considering the 1s visual fade delay).

I'm only expressing those minor quibbles of mine for improvement purposes ; this game is fun and pedagogic and its author cleary did a great job here. Thanks to her/him!

</comment><comment><USER4> This was a great diversion while waiting for dinner to cook!

</comment><comment><USER5> Fun, but maybe not terribly educational.

It'd be easier to internalize the pitfalls of concurrency when shown a problem, and a way to (attempt to) fix it, and the ways the fix breaks, and the correct way.

You can play this game like a zombie without really understanding what the code is trying to do; all you see is a broken attempt at doing _something_ and you don't need to understand much to break it.</comment>


40 year old data on mental patients undermines view on dietary fat - <AUTHOR> https://www.washingtonpost.com/news/wonk/wp/2016/04/12/this-study-40-years-ago-could-have-reshaped-the-american-diet-but-it-was-never-fully-published/?hpid=hp_rhp-more-top-stories_wonkblog-1015am%3Ahomepage%2Fstory <comment><AUTHOR> BMJ paper here : [http://www.bmj.com/content/353/bmj.i1246](http://www.bmj.com/content/353/bmj.i1246) Re-evaluation of the traditional diet-heart hypothesis: analysis of recovered data from Minnesota Coronary Experiment (1968-73)

 _" In meta-analyses, these cholesterol lowering interventions showed no evidence of benefit on mortality from coronary heart disease ..."_</comment>


Lisping at the Jet Propulsion Lab - <AUTHOR> http://www.flownet.com/gat/jpl-lisp.html#resubmit

<comment><AUTHOR> Previous submission from 3.5 years ago: <http://news.ycombinator.com/item?id=304736> (I thought it was worth submitting again.)</comment>


Accidental discovery leads to Parkinson's disease cure in mice - <AUTHOR> https://www.studyfinds.org/accidental-discovery-leads-to-parkinsons-disease-cure-in-mice/ <comment><USER2> This is really exciting! I know that these results generally don't transfer to humans, but it gives me hope that we might be able to address several neurodegenerative diseases at once.</comment>


Way of the Future (WOTF) - <AUTHOR> http://www.wayofthefuture.church/ <comment><AUTHOR> Some context: [http://bigthink.com/paul-ratner/this-new-religion-from-a- sil...](http://bigthink.com/paul-ratner/this-new-religion-from-a-silicon- valley-pioneer-worships-ai-as-an-emerging-godhead)</comment>


Mysql web reporting  - <AUTHOR>

looking for a neat and simple to setup web-based reporting tool for a mysql backend, with custom report and graph capbilities... preferably java / groovy / grails based. Recommendations? <comment><USER2> Pentaho <http://www.pentaho.com></comment>