Negative comments - <AUTHOR> https://www.hackerschool.com/blog/64-negative-comments <comment><USER2> This is pretty subjective, but I honestly enjoy a certain amount of negative comments.

When I click a link on hacker news and end up on a project page, it's generally all positive. You go to some new kickstarter and you don't see "This product I want to build is _alright_." You see "This new thing I've got is AMAZING!". Every startup landing page tells you, at length, why it's the best thing since sliced bread. Most github project list off all the things they're good for.

When I click on an HN project link, I generally get a page telling me how awesome that project is.

So when I go back to the comments afterwards, I want a counterpoint. I'd like a list of things wrong with the glowing self-review I just read. I handful of "Gee, that's nifty!" comments might be nice, but they don't really help me evaluate the thing I just read about, and they're not terribly useful for fostering interesting discussion.

This isn't as critical for some software products where I can reasonably evaluate their merit on my own, but there are a lot of areas where I'm not an expert. If some post comes along with a tool that it claims will revolutionize farming, I'd _love_ to have someone with a strong agriculture background come by and explain why it's not nearly as good as advertised.

Of course, there's a long ways between "this is shit!" and "This is neat, but here are some flaws." I'm all for criticism being constructive, rather than destructive, but let's not throw out useful negativity. When people put up sites telling me how awesome something is, it's quite valuable to have reasonably well informed people arguing the other side.

<comment><USER3> Likewise, one reason that there are so many negative comments on (for example) HN is that the article probably already said most of the positive things. There's no need to simply repeat what the article already says, unless it's to explain things that might be unclear.

Again, this isn't an endorsement for pointless or mean-spirited criticism.

<comment><USER4> Yeah, if you agree entirely with someone's point, then a comment saying so is not typically very worthwhile. That's what the upvote is for!

(And yes, I'm aware of the irony in making a comment agreeing with someone that just agreeing with someone is typically not worth a comment.)

<comment><USER5> You are using the valid use of a positive comment: Not just agreeing, but also expanding on the idea.

<comment><USER6> Interesting, so could one say being negative is easier, but expanding/adding to an idea is harder? I personally find that somewhat true.

The issue is people look at upvotes but read comments. An upvote doesn't say as much as a comment does (quite literally).

<comment><USER7> I agree that adding to an idea or expanding on one is harder. The first thing I think of is a college class, when none of the students will explain an answer or add to discussion.

</comment></comment></comment></comment></comment></comment><comment><USER8> How can one start to criticise such an article without proving it right? :)

>So next time you read something, try this: Instead of looking for the parts you can prove are false, try to find pieces you can learn from.

Who says the two are mutually exclusive? If you seek the truth of something, then as a reader you should do both, and as the writer you should welcome constructive criticism. If I were to write something that had inconsistencies, false assumptions, or driven by an agenda other than seeking the truth, no one would be doing me any favours by not pointing it out.

I suggest that the problem is not criticism, but what drives it, and that there are two different motives for criticism (although both can exist simultaneously in an individual): One is the pure search for truth. What drives this is a strong sense of wonder and curiosity at everything. The other is ego, whose trademark is that it usually ruins everything it touches and turns everything into a fight/competition instead of learning and cooperation.

The blend of ego vs. integrity behind criticism is usually evident in the ratios of information vs. demagoguery that are used.

I'd therefore change the suggestion to "next time you read something, check whether it's you ego or your curiosity speaking before you reply, and if it's more of the former, double check that you really have something to contribute before hitting 'send'".

And of course, I welcome any criticism regarding the above opinion :)

<comment><USER9> I agree :-) But I suspect the (correct) distinction you made between the two different motivations for criticism are irrelevant to Hacker School because criticism of any kind is seen as an impediment because some groups find criticism intimidating, and a primary goal of Hacker School is inclusivity and diversity. That is why the conclusion of the essay was to stop being so critical rather than be more judicious about what you criticize. I totally agree with them that there is too much worthless criticism, but what works for them can't be a universal prescription. But maybe I'm reading to much into it.

</comment></comment><comment><USER10> The negativity of the internet bothers me as well. Somewhat amusingly, I find it is often difficult to express agreement with someone without confusing them, there seems to be an assumption that if you are replying to someone you are probably disagreeing with them.

Despite feeling this way, any time I go back and read my own recent comment history, I am shocked to find that most of my comments are still corrections/disagreements.

<comment><USER11> I am in the habit of persistently deleting comments. Sometimes my disagreements are just one half of a conversation I should be having in my head, alone.

<comment><USER5> "Essay writing" is a nice habit to help with this. Sometimes, my brain is too small to store the extent of a conversation, so I pull up a text editor, and write comments there, respond to them, and so on.

</comment></comment></comment><comment><USER12> The Internet is a medium full of ads and self-promotion. A sizable number of articles on blogs, including this one, are of the form "why X is great", by someone selling X. We have plenty of boosterism on line already. Some negativity is useful.

This is a big problem on Wikipedia. In the old days, five years ago, most of the self-promotion on Wikipedia was by bands and DJs. Now it's companies and rich people. There are at least three rich convicted felons, famous for their crimes, with their own paid Wikipedia editors trying to launder their history.

It helps if the negativity is not anonymous. That's why I edit under my own real name.

<comment><USER13> Real names (as opposed to anonymity and pseudonymity) are double-edged sword, too. In a less civilized countries you can get physically hurt if someone didn't agree with your writings, no matter whenever they're valid and constructive or not. Maybe on civilized ones too, since a joke about punching on s face over TCP/IP didn't happened out of nowhere.

<comment><USER14> Real names keeps unintentional trolling down. Besides, I live too far away for anyone to punch me.

</comment></comment></comment><comment><USER15> Critical thinking is overrated, constructive thinking is underrated.

Too many turn into critics rather than creators because saying to the world "this is what I stand for, this is what I created" is so much harder than to simply tear someone elses down.

The US is actually much better than Europe but unfortunately academic disciplines and craftmanship are mostly separated in the education system when they should never have been separated to begin with.

Its a shame really cause creation is what matters. And yes I understand the irony of my comment :)

<comment><USER16> "It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat." \- Theodore Roosevelt

<comment><USER17> I'd much rather read from film critics about which films are good to see, rather than bloody myself and waste my time seeing five terrible films to find the one good one.

Folks have too narrow a view of what critics do. Critics critique. That can be a hugely beneficial thing. Ever had anyone proofread something for you? That's criticism. Ever had a mentor or an advisor? That involves criticism. And contrary to Roosevelt's comment, criticism can be a very worthy thing.

'Criticism' is not synonymous with 'disparagement'.

<comment><USER18> Film critics almost never do what online pseudonymous posters do; invariably, in every thread on HN, the top comment shits on the article. Film critics love film- they try to get others to go watch the films they love (or at least read their articles). The HN top comment just functions to show how smart the poster is.

<comment><USER17> I disagree. Frequently the top comment on HN is continuing the conversation. Often that involves some disagreement, but that's not the same as shitting on the article.

Looking at the first ten articles on the front page right now:

      Streem: "I am glad that someone is working on a new stream processing language, it is a very interesting paradigm. "
      Margaret Hamilton: "What a truly inspiring human being. I can only dream of aspiring to her levels of contribution."
      Sony Hack: "This is the angle on the Sony hack that I find most interesting/troubling/etc. "
      DeepDive: "It does probabilistic inference![1]"
      Youth metabolism: "I don't really understand the comments here, and especially on the article itself, deriding this research because "people should just get off their butts and exercise" or similar."
      Other Money Problem: "One of his essays from a couple of months ago [shows philosophical opposition from essays from 10 years ago]"
      Irregular Verbs: "As Steven Pinker points out in this very interesting article... [discussion of verbs]"
      LLVM developers meeting: "For those who are curious, Part 1 of Chandler Carruth's Pass Manager talk is avaliable here:"
      Overhaul law enforcement: "I'm getting to the point where I can't stand local law enforcement."
      Prismatic Android app: "As someone who is rapidly becoming an old-timer, I have to say I miss the old days of Make."

One of the comments disagrees with the article (the last one). One of the comments is questioning the quality of other comments. All of the comments are contributing to the conversation, and none of them can be characterised to be shitting on the article.

The trends continue on with the following articles, but I couldn't be bothered setting up the quoting - this is left as an exercise for the reader.

<comment><USER15> This discussion is not just about HN.

<comment><USER17> Are you aware of the irony of this comment as well?

<comment><USER15> Sure it's all meta. That doesn't change that we aren't talking about HN only though :)

<comment><USER17> The irony I saw is that I was responding to a point made by kansface, rebutting a misconception that really isn't true. In doing so, I provided evidence to that, pulling in quotes and citing my methods. I _created content_. Yes, it's not a prize essay, but it took some minor effort, and more importantly it added information to the conversation. It also wasn't derogatory - I didn't imply kansface was a fool, I only discussed the misconception itself.

Then, despite your earlier protestations of people tearing down instead of creating, you just dismissed what I did out of hand with a mere "we're not talking about that". You added nothing to the conversation with that comment, and tried to stifle a conversation branch in process.

While the greater conversation is about more than HN, a specific point on HN was made, and the same specific point was rebutted. Cutting off that conversation is doing exactly what you were complaining about originally.

<comment><USER15> And now you continue the irony!

As I said. It's all meta :)

<comment><USER17> Claiming 'meta' is orthogonal to behaving hypocritically.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> My initial reaction to this post was similar to many of the other commenters here. There's a real danger in making "negative" comments taboo.

But I don't think Nick's saying "don't make critical comments" here. This sentence encapsulates the idea quite well:

        But I fear emphasis has shifted from critically
        reflecting on and examining our own beliefs to simply
        criticizing and pointing out errors in other people's work.

If someone proposes an idea and you think it's terrible, it's worth taking a few minutes to think about whether you're wrong or misunderstanding or missing some part of the bigger picture. It's not about accepting ideas un-critically, but instead about examining your own ideas and beliefs just as critically as you're examining others.

I suspect it's just always been the case that many people are bad at this. It's just that the internet has democratized and scaled up the process of getting poorly thought out negative opinions about your work.

</comment><comment><USER20> I like three general types of comments: 1. Personal stories that expand on the submitted article. 2. Corrections or expansions to the submitted article in details. 3. Corrections or expansions to the submitted article in the core theme.

The ones I dislike are uninformed or overly emotional.

</comment><comment><USER21> Sorry but some negative comments are necessary and very good for society. People constantly try to peddle lies in the media and on the internet for their own benefit.

The sooner those lies are shot down the better. I have been reading a lot of financial articles lately, and i have to say at least half of the financial editorials i see peddle some idea that is false and/or extremely harmful to anyone that believes it.

A critical mind is absolutely necessary to survive in modern society. And when one expresses critical thinking one is just helping others.

Of course as with anything one can always go overboard. Some people exhibit a type of reflexive negativity, they simply dismiss everything that is new and different without thinking much about it. I think PG called this "the middlebrow putdown." One should always consider things carefully before criticizing in public.

But saying negative comments are bad in general is just wrong.

<comment><USER22> The "middlebrow dismissal", yes. I don't think negative comments are bad, but I think our mental dials are set to 80% negative. In a way, we end up looking for reasons why something won't work, vs. why it could. That attitude tends to shut down discussion and iteration.

</comment></comment><comment><USER23> I don't really buy the theory of this all being due to the education systems of Western culture. In my 20 years of education there was very little emphasis on challenging ideas or proving them wrong. I'm almost tempted to say that there was absolutely none. But as you can see from this very message, I'm totally happy to write a knee-jerk negative reply.

What I believe is really happening is that it's hard for a yes-man to add any value to the conversation. "What great points you have! Totally agree! +1" is going to be just noise. It takes a large amount of effort to simultaneously agree and add something to the original article. In contrast it's very easy to add value by pointing out any parts that are actually wrong, or by highlighting areas of disagreement since that's likely where the meat of the issue lies. (Of course there's going to be a threshold at which the value of pointing out errors is lower than the cost of the reply aggregated across all readers, such as pointing out insignificant typos or grammar mistakes).

Finally, I strongly disagree with this: "But pointing out all the places other people are wrong rarely teaches us anything". It probably doesn't teach anything to the person who disagrees, since they hopefully are already familiar with whatever issue they're disagree with. But it does teach something to others. And a place where people go to learn but nobody teaches sounds pretty miserable.

<comment><USER24> > In my 20 years of education there was very little emphasis on challenging > ideas or proving them wrong. I'm almost tempted to say that there was > absolutely none.

In your 20 years of education you were never asked to write an essay? Or invited to partake in a class debate about this or that thing in a piece of literature?

<comment><USER23> Needing to present a cogent argument for whatever point you've chosen to make, sure. Being told to rip apart someone else's argument just for the purpose of disagreeing? Never.

</comment></comment></comment><comment><USER25>
      > The cynical explanation for this is that people write negative comments to
      > show off how clever they are or how much they know. But I don't think
      > that's enough to explain how dedicated many commenters are to posting
      > negative feedback. Instead, I think people do it because they believe it's
      > the right thing. Our cultural obsession with critical thinking compels us
      > to point out errors when we perceive them; errors are injustices that we
      > must right.

That explains why we tend to be so critical online, but I would expand upon the theory as to why we tend to do so so _often_.

Most of the web falls into three categories: Trying to Get Page Views, Trying to Sell You Something, or Trying to Proselytize. Just looking at the front page of HN, many story titles are intentionally vague, if not inflamatory. Read any thread on reddit, and many comments try to filter or twist facts to support an opinion rather than make an insight. Whether you call it mediaspeak, doublespeak, or bulshytt, it is still an offensive tactic for attention at the cost of truth, and our cognitive capacity is a resource worth defending.

      > I think this in part explains why the Hacker School community is so much
      > more positive than the world at large: People come here firstly to learn
      > new things, not to dispute them. This suggests an interesting question:
      > Could you build a site like Hacker News with a community focused on
      > learning above all else?

If it is possible, the system would need to go beyond current implementations of moderation that boil down to "up/down, flag/don't flag" and address the difference between disagreement and fact-checking (slashdot tried this by differentiating between "insightful, interesting, and informative"). I also suspect it would take a moderation team that vigilantly replaces link-bait summary articles with original sources and carefully considers the validity of paid content or opinion pieces.

Tangential Postscript: I would pay money for a news site like HN or /. that focused exclusively on news, information, and data. Nothing is worse than the almost-daily links we get from someone who thinks they know how to improve a business, technology, or process, but offers no hard data to back up their ideas or observations. Hypothesis is fine in comments, but I expect a bit more from articles.

</comment><comment><USER26> _Incidentally, I think this in part explains why the Hacker School community is so much more positive than the world at large: People come here firstly to learn new things, not to dispute them. This suggests an interesting question: Could you build a site like Hacker News with a community focused on learning above all else?_

Sigh.

I have no idea how big this Hacker School community is, but I imagine it is a good bit smaller than the traffic one sees on Hacker News. It is much, much, much easier to have a "positive" atmosphere when you have a community of under roughly 150 active members. I have seen stats that suggest that Internet forums typically have about 10% of the community very active and another 10% intermittently active and the rest lurkers. So, my experience has been that at around 700 members or so, you hit that roughly 150 mark of active members, above which you start seeing spin off communities, sub-communities and so on as some of the ways the community copes with having exceeded normal human bandwidth for community-making (based on the size of some brain part, etc).

This post strikes me as being written by someone who has zero appreciation for the sheer scale of Hacker News. It felt a LOT more like a real community when I initially joined it several years ago. In recent months, it seems to me it is a bit more female-friendly, and I suspect there are multiple reasons why it is evolving in that direction. So there are some good points and bad points, but it seems it has not managed to return to that same sense of community it once had.

The fact of the matter is that in all of human history, being able to bring together so very many people from such diverse backgrounds in real time is unprecedented. It should hardly shock people that this involves a high degree of friction and a fundamental need to invent new ways to interact, new cultural paradigms that have some hope of keeping things in that zone of warm sense of community. I think Hacker News is a victim of it's own success. It's sheer scale and level of traffic make this challenging. That doesn't mean it cannot be done. But that does mean it is kind of crappy to thump your own chest and brag about your pet theory as to why your undoubtedly much smaller community is running more smoothly at this time than Hacker News.

</comment><comment><USER27> As a writer of critical comments of "hacker" school, I think this is typical of the times. If you call out somebody you are dismissed as a debbie-downer, cynical asshat, or other things like that. This comes from a culture now dominated by PR/marketing/sales, getting crazier by the growing viral marketing and astroturfing craze.

I strongly recommend you to watch Smile or Die, a talk by Barbara Ehrenreich.

[https://www.youtube.com/watch?v=u5um8QWWRvo](https://www.youtube.com/watch?v=u5um8QWWRvo)

The parallel with that is a delusion SOLD to the community. In the case of "hacker" school I criticize it as I did with the "MBA" program by Seth Godin. And I consider that I might be _completely_ wrong in both cases, but what is telling is how aggressive people got with me for speaking up my opinion.

<comment><USER28> That does not appear to be true of Hacker School.

<comment><USER27> May I differ with my opinion? That's the point of my comment. Thanks for the downvotes proving my point.

Edit: clarifying, I got very, very angry replies and dozens of downvotes at the time. Monoculture leads to fixed mindset and drives smart people away.

Edit 2: I didn't downvote you (I prefer words in this case). My comment was in the negative when you replied, but surprisingly it's risen to positive. Thank you, whoever you are. This gives me hope on HN community.

</comment></comment></comment><comment><USER29> Jim Morgan [1] had this (relevant) mantra:

"Bad news is good news. Good news is no news. No news is bad news."

Essentially, it means:

Bad news (criticism) done right will show you where you need to focus to improve. That's why we upvote those comments.

Good news will give you little or no actionable items to improve.

No news means you are not getting any feedback, which means your progress will stall.

[1] I worked (far) under Jim Moran when he was the long-time CEO of a huge hardware tech company: [http://www.appliedmaterials.com/en-in/profiles/james- c-morga...](http://www.appliedmaterials.com/en-in/profiles/james-c-morgan)

</comment><comment><USER30> [http://www.paulgraham.com/disagree.html](http://www.paulgraham.com/disagree.html)

<comment><USER31> tl;dr Paul Graham's Hierarchy of Disagreement [image]

[http://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Gra...](http://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Graham%27s_Hierarchy_of_Disagreement.svg/1280px- Graham%27s_Hierarchy_of_Disagreement.svg.png)

<comment><USER32> I wish you kids would use "summary:" instead of "tl;dr" though kudos for putting it at the beginning rather than the end.

I mean this in a friendly constructive way, and realize you may not be a kid. But while there's lots of positive innovation happening in culture and esp related to the Internet, I feel strongly that "tl;dr" is not one of them, its a step backward. It's typically placed in the worst possible location (the very end rather than the very top/beginning) and it's far less likely to be understandable than "summary". It's also reinventing the wheel. Again, not a criticism of your comment, meant more for other readers, esp younger or less educated ones, who don't know about the word summary and how it is traditionally used to solve the need well already. :-)

<comment><USER33> I actually find tl;dr to be more immediately dismissive in tone (and therefore occasionally negative, whether it is intended to be or not). A summary implies you actually _read_ something and are trying to boil it down.

<comment><USER32> good observation. agree I've seen that correlation. as a prefix for snark.

</comment></comment></comment></comment></comment><comment><USER34> >Here's a theory for why there are so many negative comments on the Internet: We train people to write them.

I agree.

>Indeed, Western culture trains us to disagree as part of learning to be critical thinkers.

I disagree.

I don't think Western culture teaches critical thinking at all. My wife just took a Critical Thinking course at college. I never took such a thing in all my years of schooling. The key to Critical Thinking, if anything, is to develop in oneself the ability to _not_ react automatically, and to start from a position of no-bias.

On the other hand, any child who has ever sat in a Western class room knows that many teachers (for some children, all their teachers) "teach" by asking students a question and then telling them they are wrong.

I think the fundamental problem, however, is fantasy vs reality. I find I do this with my development team: I have this idea in my head of what the product should look like; I ineffectively deliver this vision to my team; the team delivers (well) on this ineffective vision; I berate them for what is wrong with it. I, in my role as teacher, perpetuate the awful process, by teaching it to my team as I learned it from my teachers.

It is hard to turn fantasies into reality through communication. We have learned to solve this through "trial and error", with an emphasis on "error".

Perhaps changing the conversation from, "This sucks! This isn't at all what I wanted!" to "This is great! Now how about if it does this...!"

</comment><comment><USER35> On the topic of negative comments, this article prompts me to leave what the author assuredly would consider one. Frankly, if our society fails in education it's that students make it through without acquiring critical thinking skills.

The idea that we are critical because "it's so much easier to challenge other people's thinking than our own" is hard to take. If anything, this speaks to a failure to be self-critical more than a surplus of outward negativity.

More generally, I'm frustrated by what I see as an increasing tendency of people to parse the world into "positive" and "negative". This by itself speaks to a lack of truly critical thinking.

Further, I believe that the idea that critically taking apart other ideas is somehow a fundamentally distinct activity from developing one's own ideas is incorrect. In mathematics you develop ideas precisely by searching for what might be unsatisfying in the arguments and theories of others. And most successful start-ups seem to have some roots in looking at how what others are doing is sub-optimal.

</comment><comment><USER36> This is related to something I occasionally think about.

I used to take a lot of pride in 'critical' thought. Certainly I frequently take this attitude toward the things floating around in my head, and I like that.

But I've learned not to do the same for ideas from others, especially in short comments on the internet, where it's basically a given that the other didn't fully express themselves anyway.

'critical' thought isn't all there is. 'constructive' thought is important too; maybe even more important. It's easy to be a critic and find 10 things wrong with another idea. It's harder, riskier, but more rewarding to then prioritize which of those 10 things should be worked out first and in what way.

If someone throws out a half baked idea. You can critique it. Most people stop there. But you can also continue forward and construct on top of it, propose changes, make it better.

I now try now to be not just critical but constructive in most parts of my life.

</comment><comment><USER37> Another factor: people with negative moods have marginally more time to comment, and more need for the affirmation of quick-reactions (positive or negative) – feeding a cycle of adverse selection on the most-active threads.

</comment><comment><USER38> For individuals, negative comments might be ego-boosting to write and heart- breaking to read. We cannot deny that many people write negative comments for less than healthy reasons, and that many others suffer psychologically as a result of such comments.

As a society, on the other hand, negative comments are indispensible for maintaining a balanced conversation, protecting human rights, and generally improving the state of our civilization.

> _Western culture trains us to disagree as part of learning to be critical > thinkers._

And that's one of the most important reasons why liberal democracy has such a hard time taking root in other cultures.

In (idealized) Western courtrooms, it's the job of each attorney to try to tear apart every single thing that the other attorney says. It's unpleasant, of course. It often wastes time and resources. But it's the only way we've found so far to make sure that the process as a whole reaches a balanced conclusion. It's our worst solution except all the others.

Like the market economy, the power of this process comes from the fact that it harnesses the power of human selfishness for the greater good. Really, it's genius. The system is not only fault-tolerant (where "fault" means moral fault), it actually thrives on the faults of its participants.

A society that treats negative comments as a taboo will stagnate and go corrupt. Because you can't eliminate selfishness, cynicism, and blind spots from human nature. To pretend that such traits don't exist, or even worse, to try to suppress them, is bound to fail. (Yeah, we tried that with human sexuality.) The only solution is to acknowledge that we are often selfish, cynical, and partially blind, and to channel that energy into productive use.

> _writing negative comments feels good: It exercises our critical thinking > skills without challenging anything we hold dear ... pointing out all the > places other people are wrong rarely teaches us anything._

Exactly. And when I do that, it's YOUR job to challenge what I hold dear by exercising your critical thinking skills. At the end of the day, we can both learn! The more we do this to one another, the better it will be for all of us. Learning by criticism is not an individual task, it's a social project.

Of course, some people can't handle this. Ever been to DeviantArt? Everybody there praises everyone else's work all the time, no matter how shitty it is. Given the delicate sensibilities of a certain demographic that frequents DeviantArt, this policy probably saves lives. But should we all act like emo teenagers just because some of us behave like emo teenagers?

</comment><comment><USER39> See also: Why our kind can't cooperate. [http://lesswrong.com/lw/3h/why_our_kind_cant_cooperate/](http://lesswrong.com/lw/3h/why_our_kind_cant_cooperate/)

</comment><comment><USER40> Is the author trying to say only people who agree should write comments? The whole point of a discourse is to discuss various sides of an issue. Life would be boring if everyone agreed

</comment><comment><USER35> Broadly speaking, I think there is a fundamental misunderstanding in much of this thread of what "critical thinking" means.

</comment><comment><USER41> >Some errors are injustices and should be corrected, but most are not.

How do you decide which are which?

</comment><comment><USER42> Of course comments are going to be mostly negative. Including this one.

HN doesn't really have a problem with vacuous comments like "this is great" or "this is shit" which are equally as bad as each other since they add nothing of value. Those get downvoted. Commenters shouldn't be putting people down without saying anything constructive, but it's not our job to bolster anyone's ego with boundless support and positivity either.

The main purpose of comments is to provide criticism, or point out things that are similar that others might be interested in as a follow-up on a good article.

As a result that's going to come across as either negative (picking holes, focusing on what's wrong - since that's what criticism mainly consists of), or derisory (this isn't new, here's a bunch of similar stuff). In both cases there may not be any intention of malice or even a negative tone to the comment, but unless the author sugar-coats everything by adding weasel phrases like "this is awesome but...", it's going to come across as negative by default.

Comments can also contain questions, which can often read as criticism/negativity. E.g. "why does this exist when there is already Foo?". How one chooses to interpret comments like these is up to the reader. I find it's best to give everyone the benefit of the doubt. Never attribute to malice that which can be attributed to poor communication.

It's always nice to see or be able to comment along the lines of "this is awesome and here's why it's awesome" in a way that the explanation adds some value. But usually it's just redundant fluff and more ego stroking.

The reason these comments are less common isn't because western culture is broken, the education system is broken, or because the illuminati wants to oppress us by keeping us all demotivated. It's just because the opportunity for insightful, positive comments is much rarer than the opportunity for insightful, negative comments.

Positivity is nice and all, but I'd rather have zero comments than waste my time reading dozens of "this is great" me-too comments. Insightfulness is a million times more important than positivity.

It's not about people showing off how clever they are, it's about commenters doing what commenters are supposed to do: provide commentary and criticism that _adds value_. If you want to immerse yourself in positive comments, there are plenty of Reddit circlejerks that do just that. HN is not that. If you think HN is negative, try reading Slashdot for a month instead. You'll appreciate just how good HN comments really are when you come back.

The system works. Mostly.

</comment><comment><USER43> i think that when we type, we use a different part of the brain than when we speak. I have no evidence to back this up but sure as hell know that people won't say half the crap they spew on youtube etc.

I actually find the "negative" comments refreshing on YC. Youtube comments are the bane of existence...

</comment><comment><USER44> The article is completely wrong. There's hardly any negativity on the Internet at all, and none of it comes from our training.

<comment><USER45> Your comment is worthless without at least one footnote with a link to a published study.

<comment><USER46> In this case, academic research is totally irrelevant to the parent commenter's point.

<comment><USER45> I've seen countless instances where an anecdote is perfectly reasonable and interesting by itself, yet the anecdote itself is denigrated or at least devalued. [1] I don't like it. I don't think it's reasonable to expect people to have research at arms length in the general case.

1\. I say this anecdotally, of course.</comment></comment></comment></comment>


Building an efficient neural language model over a billion words - <AUTHOR> https://code.facebook.com/posts/1827693967466780/ <comment><USER2> Oh, that was so yesterday I did that last year with my laptop...oh wait I can't eavesdrop on a billion people's private conversations.

<comment><USER3> The corpus was published in 2013. [https://github.com/ciprian- chelba/1-billion-word-language-mo...](https://github.com/ciprian- chelba/1-billion-word-language-modeling-benchmark) (And it seems to only have 0.8 billion words?)

Edit: Here's one mentioned in one of the other papers, it has over 7 billion "tokens" which I think includes words and punctuation. [https://ibm.ent.box.com/v/booktest-v1](https://ibm.ent.box.com/v/booktest-v1)</comment></comment>


Is Slack down? - <AUTHOR> Status page also fails to load. <comment><USER2> Seems like it...

[https://twitter.com/search?f=tweets&vertical=news&q=slack&sr...](https://twitter.com/search?f=tweets&vertical=news&q=slack&src=typd)

</comment><comment><USER3> [https://status.slack.com/2017-03/c0923f37c54988ec](https://status.slack.com/2017-03/c0923f37c54988ec)

</comment><comment><USER4> For me their status page: [https://status.slack.com/](https://status.slack.com/) and slack itself is unavailable

</comment><comment><USER5> Yes, including their status page.

<comment><USER6> So although it's the same domain, slack.com, the records still resolve which seems to rule out a DNS related issue. DNS is served by AWS Route53 in all cases and only by Route53 (which might or might not be a great idea considering what happened to Dyn late last year).

Slack.com and the API are hosted by EC2, status.slack.com points to Rackspace.

I wonder what happened to take both down.

</comment></comment><comment><USER7> Yes, It was down this morning but it should be up now.

</comment><comment><USER8> Yes.

I switched to Microsoft Teams.

</comment><comment><USER9> for me, yes

</comment><comment><USER10> no

</comment><comment><USER11> yes

</comment><comment><USER10> ya</comment>


Apartment Radiator Temperature - <AUTHOR> http://terg.is/?p=228

<comment><USER2> _Single Pipe Steam Radiator_ [1] – what a quaint solution. I see how they got there, cheaper to build and can, in optimal conditions, be made to work within certain limitations.

I think I might try a no-moving-parts solution and attach an electric heating element to my bleed valve. By heating it just before the steam cycle starts you could prevent steam from entering your radiator, then after a suitable interval, stop heating it, let the air out, and begin your personal, abbreviated cycle.

You might also have success with partial air entrapment in the radiator by heating a little early and keeping the bleed valve closed for the rest of the heat cycle, thereby reducing the available power from the radiator but spread over the entire heating cycle.

In any event, you will want to let the air bleed open after each heat cycle to let your water go.

Oh, and incidentally if you don't have thermistors laying about: <http://www.maximintegrated.com/datasheet/index.mvp/id/2815> there is Arduino code. One pin, two wires, one resistor, a bunch of probes, all calibrated and 0.5°C accuracy from -55°C to 125°C. A couple bucks each, you mostly save that in ancillary component costs.

EOM

[1] <http://en.wikipedia.org/wiki/Hydronics#Single-pipe_steam>

<comment><USER3> Interesting! I was thinking of attaching a small geared DC motor to the main steam valve on the radiator, but controlling via the auto-bleed is a really cool idea. I've been a little worried about damaging the bleed valve, but it's an elegant solution.

EDIT - could you elaborate on how heating the bleed valve is a good way of controlling it? Isn't it moisture based? \--Andrew (Terg.is)

<comment><USER2> My understanding of the bleed valves is that they are normally open devices which close when heated. The cycle goes something like this:

at rest: radiator full of air, valve open

steam begins flowing: steam is displacing air from radiator, bleed valve begins heating up

bleed valve closes: radiator is now full of steam, some of which condenses and ideally runs back down pipe, if your building hasn't shifted too much over the years. any condensed steam is replaced with new steam from pipe

boiler stops: steam is no longer coming up the pipe. As the steam in the radiator condenses we suck air back in through the bleed valve. radiator is cooling.

bleed valve opens: at some point the radiator cools enough that the bleed valve opens. We are now ready to begin the cycle again.

Additionally, I think there is a time delay component in the bleed valve to let it get the air good and purged before it closes.

<comment><USER4> From the wikipedia page:

The valves close when steam reaches them, due to a small amount of alcohol in them turning into vapor and exerting mechanical force to close the valve.

</comment></comment></comment></comment><comment><USER5> What am I missing here? Thermistors are inherently nonlinear. Using a Wheatstone bridge or a current mirror won't change that. The reason Wheatstone bridges were so popular is that they made differential measurements easier in an age where dynamic range was limited and subtraction had to be done by analog means.

Configuring your thermistor with a precision resistor in a voltage divider, driven from the same reference voltage as the Arduino (or whatever) will give you equally good performance. If you want linearity, apply the Steinhart-Hart equation.

<comment><USER3> I had some issues correctly biasing (selecting the divider) for the voltage divider circuit on a previous project, so this was just an experiment with a different technique. But that project had other issues (resistive load sensors that were out of their load range), and reading into it now I agree that the voltage divider should be just as fine. I glanced at the Steinhart-Hart equation, and i'll give a shot at implementing it when I try to calibrate the sensors, thanks! --Andrew (Terg.is)

</comment></comment><comment><USER6> Heh, this looks a lot like my steam radiator plots! I used 1-wire DS18B20 probes on radiators, the risers, and on the boiler itself.

Your radiator valves may be adjustable, which makes it possible to set how fast they let the air out. That way you can heat up rads in cold rooms faster than in hot rooms and do a rough temperature balancing.

Btw, if you want to learn more about steam systems and how they work, I can recommend the book "We've got steam heat" ([http://www.heatinghelp.com/products/Steam-Heating- Books/25/6...](http://www.heatinghelp.com/products/Steam-Heating- Books/25/61/We-Got-Steam-Heat-A-Homeowners-Guide-to-Peaceful-Coexistence)). It explains how things are supposed to work and what can cause problems, I found it very helpful when I first moved to a place with steam heat.

<comment><USER3> Thanks for the tip! I'd love to see your plots.

<comment><USER6> Unfortunately I don't live there anymore so the high-res plots have expired from the RRD, I just have the daily averages.

</comment></comment></comment><comment><USER7> I was just thinking about doing this. I always find it weird that the riser pipes in my apartment heat up at times unrelated to when my radiators are on. The time-of-day temperature fluctuations also annoy me (because if I open a window to cool off and then the heat turns off for the night, I can never get warm again).

All in all, HVAC was my biggest surprise when moving to NYC. I lived in Chicago before where every structure I ever lived in had central heating and air conditioning. Set the thermostat, enjoy. Moving to NYC, I have to screw around with steam heating and window AC units. (The corollary is that nobody in NYC has anything nice because NYC _is_ the thing that's nice. If only I cared in the slightest.)

<comment><USER3> Exactly! I'm also working with an old NYC apartment building. Once I get radiator control working, I also would love to automate opening and closing my window, but actuators to do that can get pricey...

<comment><USER7> How about a fan that normally exhausts, but when you want it colder, changes direction?

</comment></comment></comment><comment><USER8> Looking forward to seeing the additional measurements.

Can anyone explain why "I can't leave it partially open or the radiator will fill with water and start spitting it out of the auto-bleed valve."? Why is partially open different from completely closed?

<comment><USER9> The way I understand <http://en.wikipedia.org/wiki/Hydronics#Single- pipe_steam>, he has a system where the heater pumps water vapor into his radiator, the vapor condenses, producing heat, and the water flows back _through the same pipe that pumps in the vapor_.

If the valve is closed, no steam enters the radiator, so no heat is produced, and no water is produced in the radiator.

If the valve is half-open, I guess the steam flows in fine (in reduced quantities), but the water does not flow back (looks like a design error in the radiator, or maybe it wasn't installed correctly; I guess that such radiators are fairly sensitive to being installed level)

With ever more water in the radiator, the water eventually exits through an overflow valve.

<comment><USER3> Yeah, this is my read on it as well. I don't have a lot of experience with steam heating systems, but I noticed that I had some issues with water dribbling out of the auto-bleed valve when the main steam valve was half closed. For all I know, my observations could also be caused by maintenance issues with the radiator... --Andrew (Terg.is)

<comment><USER6> No, it's standard. The pipe needs to have room for both the steam to come in and the water to flow back. If you partially obstruct it, the steam comes in (because it has higher pressure), but the water can't flow back down and fills the radiator.

</comment></comment></comment></comment><comment><USER10> Why wouldn't something like this [http://www.armstronginternational.com/thermostatic-valves- rv...](http://www.armstronginternational.com/thermostatic-valves-rv-4-one- pipe) work in your case?

<comment><USER3> Neat, that would probably work really well. Now that i've gotten my mind set on electronic control, though, i'd love something that I can also put on a timer. The idea of controlling the radiator via the bleed valve seems to be a solid one though... Duly noted.

<comment><USER11> Your website seems to have died, FYI. I tried at some point to post this as a comment there some of which is redundant given this thread, but the hazards I believe are still a new contribution:

For one pipe steam you can control the radiator by controlling the air vent on the non-steam side. This prevents steam from entering the radiator in order to disable it for some cycles. I was lazy and used the parts below in my apartment, which is a mechanical thermostatic regulator. In my experience, by cutting off the airflow manually part way through, you can have some measure of control over the amount of steam the radiator allows in. I imagine that if you placed thermistors at several points along the length of the radiator, and had the valve portion below, you might be able to cut the steam at 1/3 2/3 full on heat. Keep in mind that when a real cold snap hits, heat is a safety issue and a possible cause of lots of damage if pipes freeze. There is something to be said for old designs of reliable mechanical systems like those below, especially if you go on vacations.

[http://www.pexsupply.com/Danfoss-013G0140-Thermostatic- Rad-V...](http://www.pexsupply.com/Danfoss-013G0140-Thermostatic-Rad-Valve-w- Vac-Breaker-1-Pipe-Steam-5551000-p) [http://www.pexsupply.com/Danfoss-013G8250-Direct-Mount- Opera...](http://www.pexsupply.com/Danfoss-013G8250-Direct-Mount- Operator-5558000-p) [http://www.pexsupply.com/Danfoss-013L8011-1-Pipe-Steam- Air-V...](http://www.pexsupply.com/Danfoss-013L8011-1-Pipe-Steam-Air-Vent)</comment></comment></comment>


7 Reasons Your Succulents Are Dying – A Few Shortcuts - <AUTHOR> http://afewshortcuts.com/2016/05/7-reasons-your-succulents-are-dying/ <comment><USER2> I suck at succulents. This might help. :)</comment>


Pixie – A small, fast, native Lisp - <AUTHOR> http://pixielang.org/ <comment><USER3> I'm the original author of pixie, and yeah, I'm a bit surprised to see this hit HN today.

It should be mentioned that I put about a year of work into this language, and then moved on about a year or so ago. One of the biggest reasons for my doing so is that I accomplished what I was looking for: a fast lisp that favored immutability and was built on the RPython toolchain (same as PyPy). But in the end the lack of supporting libraries and ecosystem became a battle I no longer wanted to fight.

Another goal I had was to see how far I could push immutability into the JIT. I learned a lot along the way, but it turns out that the RPython JITs aren't really that happy with VMs that are 99.99% pure. At one point I had a almost 100% immutable VM running for Pixie...as in each instruction executed created a new instance of the VM. It worked, but the JIT generated by RPython wasn't exactly happy with that execution model. There was so much noise in the maintenance of the immutable structures that the JIT couldn't figure out how to remove them all, and even when it could the JIT pauses were too high.

So anyways, after pouring 4 hours a day of my spare time into Pixie for a full year, I needed to move on.

Some other developers have commit rights and have pushed it along a bit, but I think it's somewhat a language looking for usecase.

And these days ClojureScript on Node.js could probably be made to handle most peoples needs.

<comment><USER4> As a somewhat different data point, we've been developing pycket, an implementation of Racket on top of rpython, for the past 3 years, and while it faces many of the same challenges, we've been very happy with the results. The JIT can remove almost all of the intermediate data structures caused by the functional nature of the language, and we support tail calls and first class continuations. Overall, pycket is almost as fast as chez scheme on average, and faster than every other scheme system we've compared with.

<comment><USER5> Interested in the speed you're seeing.

I use Gambit-C scheme for most of my scheme needs because of the speed, but it seriously lacks in libraries, that Racket has in abundance.

<comment><USER6> [https://github.com/pycket/pycket-bench](https://github.com/pycket/pycket- bench)

<comment><USER7> Much of the data in that repo is old/outdated. This ([https://github.com/pycket/pycket- bench/blob/master/output/20...](https://github.com/pycket/pycket- bench/blob/master/output/20150610_fbc4c2d_CrossBenchmarks-norm.pdf)) figure was the one used in the paper, which includes Gambit.

</comment></comment></comment></comment></comment><comment><USER8> > _And it 's small. Currently the interpreter, JIT, GC, and stdlib clock in at > about 10.3MB once compiled down to an executable._

Oh how the definition of "small" has changed. I actually would like to know how they managed to make something like this so _big_.

To compare, LuaJIT is about 400 KB, and that includes the Lua standard library, a JIT almost certainly more advanced than Pixie's current one, an incremental GC, and a C FFI.

Neither compilers (well, except C++ ones), nor stuff you usually find in standard libraries, nor a GC should require much code to implement, relatively speaking (e.g. compared to a WYSIWYG word processor). These things are _usually_ small. The compilers for almost every language were < 1 MB in size for the longest time.

I am not saying that Pixie being 10 MB in size is a problem. We have a lot more bandwidth and disk space nowadays, 10 MB is nothing. My point is that a "JIT, GC, and stdlib" package weighing this much cannot claim to be "small" for what it does.

<comment><USER9> _To compare, LuaJIT is about 400 KB, and that includes the Lua standard library, a JIT almost certainly more advanced than Pixie 's current one, an incremental GC, and a C FFI._

Back in the day, Smalltalk was criticized as bloated because one ended up with stripped binary+image of about 2MB. Someone around that time got SqueakVM+image down to just under 400k. There were specialized Smalltalks in company R&D that got their image down to 45k.

<comment><USER10> Don't forget, even 2 MB was still a somewhat inconvenient size when floppy disks were only at 1.44 MB capacity.

<comment><USER9> Floppy disks were well on their way out, and people were still complaining about a 2 MB footprint.

<comment><USER11> I thought Smalltalk's hayday was early-mid 80s. That would imply 5.25" floppies would still be in use and 3.5" floppies overtaking them circa 1988.

<comment><USER9> _I thought Smalltalk 's hayday was early-mid 80s._

My involvement with Smalltalk started in the 90's. Then it still had high penetration in the Fortune 500, and it was a niche language for complex financial programs. It was also used in Energy.

</comment></comment></comment></comment></comment></comment><comment><USER12> [http://www.red-lang.org](http://www.red-lang.org) for those who doesn't necessarily need Lisp, but appreciates homoiconicity and other nice things.

> This executable is a full blown native interpreter with a JIT, GC, etc.

> A small, fast, native lisp

I have issue with the use of the word 'native' here. For me 'native' mostly means AOT compiling.

<comment><USER13> They said that the _interpreter_ was native. It is - it's AOT compiled. They didn't say that your _program_ was natively compiled. Your program is interpreted - by the interpreter - the native intepreter - and then JIT compiled by meta-tracing the interpreter.

Their terminology is totally consistent with how the field uses these terms.

This technology operates at multiple levels of meta-implementation, so it is easy to get confused what is tracing what, and what is implemented using what at a given time.

<comment><USER12> It's useless information then, any real executable is native. In that sense you can say Perl is native (Python, Ruby, JavaScript/nodejs).

<comment><USER13> Well yes any real executable is native. The perl executable is indeed a native program. It's a native interpreter for Perl.

But there are also interpreted interpreters aren't there? Which aren't real executables, and aren't native. It would be possible to write an interpreted interpreter for Perl, maybe in a language like Ruby. Jython is a real example of an interpreted interpreter (if you ignore that the JVM has a JIT, but it isn't AOT, which you've said that you think is an important criteria).

And so it isn't useless information.

The distinction is particularly relevant here because the RPython technology they are using to build their interpreter means they can either interpret their interpreter using the Python interpreter, or they can make a native interpreter by compiling their interpreter to native AOT. That's probably why they used that particular wording.

So, again, not only is their terminology consistent with the rest of the industry, they are also making a specific and interesting point here, and it isn't useless information.

<comment><USER12> They put that in a headline - A small, fast, native Lisp. It's missleading/clickbaity.

<comment><USER14> I think it's meant as in comparison to Scala and the like, which run on the JVM, and thus aren't "native" in the same way (right? or am I misinformed about Scala?). There's a lot of languages that sit on top of the JVM at this point, so they might have seen it as a distinguishing characteristic.

<comment><USER15> > thus aren't "native" in the same way

Sorry, no, this is nonsense. Scala source code is compiled to Java bytecode, which is interpreted and JITed by the JVM. Pixie source code is compiled to the Pixie bytecode which is interpreted and JITed by the Pixie VM. chrisseaton claims that "native" refers to the interpreter, but this is rubbish ... that's not what the industry means by "native".

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> Any language claiming to be a fast Lisp should be required to show benchmark comparisons against SBCL and a few commercial Common Lisps.

A native compiler for Clojure would be an interesting project, but completely new languages competing on speed or size are going to have a really tough time beating the existing Common Lisp implementations, not to mention the CL library ecosystem.

Not to say the CL library world is very big compared to Python or Javascript, but it has most of the important bases covered, and it's certainly bigger than a brand new language like Pixie.

</comment><comment><USER17> Alas, this ambitious project appears to be not currently under active development.

My largely uninformed armchair opinion as to why, is that the author is very performance-driven, and in the end it's very difficult to beat the JVM performance-wise. Lesson: if you want high-perf Clojure, you already have it on the JVM.

Personally, I think there's room for a simple small native Clojure implementation where performance is not top-priority. Small footprint, quick startup, access to native C libs. Still holding out hope for that one.

<comment><USER18> I'm generally in demand of small, quick startup, easy-to-embed languages that aren't Lua (I can't stand Lua; I feel like every time I've had to deal with Lua code was far more painful than reasonably possible). There's mruby and maybe a couple others. I was hoping Pixie might be another contender in that space, but it doesn't seem to be after all (or if it is, it's very poorly documented to that effect).

I've been tinkering with some ideas for another language in that space (the Crafting Interpreters book is looking to be pretty helpful in getting me there: [http://www.craftinginterpreters.com/](http://www.craftinginterpreters.com/)), but it'd be really nice if there were enough options for me to not feel the need to create my own.

<comment><USER19> A list that I maintain might help you find one: [https://github.com/dbohdan/embedded-scripting- languages](https://github.com/dbohdan/embedded-scripting-languages). Personally, I am a fan of Jim Tcl ([http://jim.tcl.tk](http://jim.tcl.tk)), especially for when you need a small interpreter that knows how to interact with its Unixy environment (i.e., the file system, processes, sockets and UTF-8 text data) out of the box.

<comment><USER18> Jim Tcl actually looks about damn perfect. I'll definitely have to give that one a whirl.

</comment></comment></comment></comment><comment><USER20> So this is great, but note that development has seemingly fallen off to close to zero over the last year:

[https://github.com/pixie- lang/pixie/graphs/contributors](https://github.com/pixie- lang/pixie/graphs/contributors)

</comment><comment><USER21> Interestingly, this is (some of) the output of running the makefile: [https://sr.ht/zMyE.png](https://sr.ht/zMyE.png)

<comment><USER7> The RPython translator generates views of the Mandelbrot set by default, presumably to give you something to look at during the long wait.

<comment><USER22> That's pretty cool.

I kinda wish the likes of NPM would output cool skeletons and heavy-metal vampire chicks while I wait ten minutes for it to install stuff.

</comment></comment></comment><comment><USER23> I find it very hard to work with a mixture of brackets and parentheses. Does anyone else prefer an all-parentheses syntax for reading and typing?

<comment><USER24> Well, in most cases `[]` is used just like you'd use a quoted list `'()`. Clojure vectors are nice for the performance they give.

Having maps with `{}` syntax is also nice if you ask me. Makes reading a little bit faster.

<comment><USER25> > Clojure vectors are nice for the performance they give.

What difference does it make when representing code?

<comment><USER24> What I meant was that [] when glancing just means the same as '().

I was thinking about it over the day, and realized maybe having special syntax actually is confusing - maybe "normal" lisp with only parens is better. Thanks for the eye-opener.

<comment><USER25> Thanks for your comment.

The idea behind the Lisp reader approach is that custom syntax is used for reading/printing objects of different types, not to demarcate syntactic elements. For example, double quotes are for strings, #P"" will read pathnames, and so on. In Common Lisp, some characters like [ and { are reserved for the user, meaning that no conforming implementation defines a custom syntax based on those characters. And you can define [a b c] to mean (vector a b c), which will build a vector, when executed, to hold the current values of a, b and c. The existing #(a b c) vector syntax is a literal vector that contains symbols.

From this point of view, for Clojure, I don't think it is a bad idea to have a short syntax for vectors, set and map literals. But then, those objects are used when representing code, not because it has a real added value but because the visible syntax is a little bit nicer (maybe, maybe not). That IMO complexifies tools that work with code and does not really fulfill a practical purpose. If that was for practical reasons, I think bindings would had been better defined as maps: as far as I know, they seem to fit more naturally than vectors for this task. For example:

        (let {a 20 b 10} ...)

Somehow when compiling or interpreting the code, you could do "(get symbol env)" where "env" is the surrounding lexical environment associated with the let, which would be computed partly from a parent lexical environment and {a 20 b 10}. The environment and the map could be of the same type and be easy to combine. But there is no such consideration, and it is actually a good thing that there is no link between how the code is represented and how it is interpreted (also, there can be different interpretations).

Basically, I find Clojure a little bit confused about its use of external data representation for code. I would have preferred a simpler syntax for code and keeping those notations for data, where they are self-describing without additional context.

<comment><USER26> Hash maps wouldn't work for bindings because they don't guarantee order, whereas the order of the bindings is very important.

<comment><USER25> You are right, I forgot about that (the example was not great anyway). Thanks

</comment></comment></comment></comment></comment></comment></comment><comment><USER27> > _If you like Clojure, but are unhappy with the start-up time, or if you want > something outside of the JVM ecosystem, then Pixie may be for you_

YES! :D

<comment><USER28> In that case... what about just regular plain old Common Lisp?

<comment><USER29> I'm not intending to criticize Common Lisp, which I loved back in the early 90's, but there are things to like about Clojure over Common Lisp.

<comment><USER30> Such as?

<comment><USER29> A big one is persistent data structures. Where 'persistent' may not mean what you think it means.

In Clojure it is impossible to surgically modify a data structure. That is, you can't do something like:

(SETF (CAR (CDR x)) 'foo)

which would alter a data structure.

You can modify a data structure, but it returns a new data structure, yet the old one remains if it is not GC'able.

All of the common data structures have this property. Sequences (eg, lists), arrays, maps and sets. If you change the 50 thousandth element of an array, this returns a new array. The old array is unaffected. Yet it gives the performance you expect of an array. (Meaning no apparent cost of copying.)

If you're writing a search procedure, it is trivial to transform one chessboard into a different chessboard, but without concern about the cost of copying (close to zero), or having altered the original value (you haven't). Other variables that have a pointer to that first chessboard don't see any changes.

There are other things such as a great story about concurrency.

Hope that helps.

<comment><USER31> How is the cost of copying close to zero or not apparent?

<comment><USER32> The data structures in Clojure are built on shallow 32-way trees. When you "change" a map or a vector, the algorithm only copies from the root node down to the parent of the leaf you're changing. That's log32(N) copied nodes in a tree of N nodes total.

</comment></comment></comment></comment></comment></comment></comment><comment><USER33> As someone who loves both PyPy and Clojure, I wish Pixie was right up my alley. But I don't understand why the choice was made to be ... sort-of like Clojure, but not all the way, as opposed to just-another-Clojure- implementation. Why can't I have a .cljc file that runs on Pixie?

(Not voluntelling halgari to do things! I would just like tn understand.)

<comment><USER20> > sort-of like Clojure, but not all the way,

I tend to agree... but doesn't 'all the way Clojure' imply at least some exposure of an underlying runtime, be it either Java (Clojure) or JavaScript (ClojureScript)?

I'm admittedly a bit behind the curve wrt the latest developments in the Clojure along these lines.

<comment><USER33> Yes! Being able to call PyPy things natively would be a godsend; PyPy is a great runtime and already has a good Python implementation. It has significantly fewer compatibility issues than, say, Jython.

<comment><USER34> I'm taking a shot in the dark, but have you looked at the Hy language? I imagine it must be relatively straightforward to port this over to RPython.

<comment><USER33> Hy is also great, but it is even further away from Clojure than Pixie is.

</comment></comment></comment></comment></comment><comment><USER35> As always, for all these small languages (MicroPython comes to mind, but even "real-world" languages such as Lua) - unless they grow a debugger, they'll always be silly toy languages nobody can use for serious work.

I'd settle for a gdb backend, really. But printf-debugging is unacceptable.

</comment><comment><USER36> I like it, will definitely take a look at it. The name is also good, it reminds of its similar cousin Pico lisp and the website is nice. Now we need libraries, many of them, and better docs. Good work!

</comment><comment><USER37> What's the state of development of this? Did somebody use it with Raspberry pi? I want to use this over Clojure(only on pi) because I have read Clojure is slow on Raspberry pi(even 3, not sure how true that is).

Also, how fast is this? How does it compare to other lisps(or schemes) in terms of speed? Can someone port the benchmarks to [https://benchmarksgame.alioth.debian.org](https://benchmarksgame.alioth.debian.org).

<comment><AUTHOR> I posted the link, but am not one of the developers. This got a little attention a couple of years ago, and I thought to look it up today. It has a nice website now at least. I really like the idea behind it (small install, lightweight, fast), but don't know how effective it will be without a larger community. I can honestly do without a lot of libraries as long as there are decent built-ins.

I really wish Pixie just had a REPL and compiled to native code via LLVM so I could give coworkers a .exe.

Edit:

Just looked at the github page. It doesn't look very active to me although I wouldn't say dead. The only small lisps I know of in development are Picolisp and Newlisp.

<comment><USER38> PicoLisp is very small and extremely powerful at the same time. It has a built in Prolog...

<comment><AUTHOR> Do you use it though? I really like the concepts, but the speed could be better (I know Alexander talked about this), and docs could be more beginner friendly. It's a small expert community.

<comment><USER38> I have used it in commercial embedded hardware shipping tens of thousands of units, in the USD 1000 range. Speed is excellent for the most part - <USER2> it's not it's trivial to call out to C libraries. Agree about docs but what would really help at this point would be more QA on Stackoverflow. And a good Windows port.

<comment><AUTHOR> Agreed on the Windows thing. I tend to stay away from Cygwin. I like the new Picolisp site btw. The code on Rosetta code is terse, and uses slightly different idioms than I'm used to.

<comment><USER38> Come to think of it, some docker and other fancy container magic could also help adoption. And other such things people use nowadays. Maybe a nodejs integration? Stuff like that.

<comment><AUTHOR> My dream would be to just use something like Picolisp on Windows without the workarounds. Maybe that can be done via the new Bash on Windows10? Idk.

<comment><USER38> Must be possible with the new Ubuntu layer whatever its called. Edit: [https://blogs.windows.com/buildingapps/2016/03/30/run- bash-o...](https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on- ubuntu-on-windows/)

They say WSL apps can not interact directly with Windows apps. So yes and no to your question. I would say it would be similar to running in a virtual machine but more integrated.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER39> Very neat but documentation is _very sparse_ , from what I can tell.

</comment><comment><USER40> Why does the web site refer to "Lisp interpreters?" That phrasing perpetuates mistaken assumptions about Lisp-family languages, both about their implementation and their performance.

</comment><comment><USER41> Do I understand correctly that pixie is using clojure's lisp dialect and the only difference is that it is not running on JVM?

</comment><comment><USER42> This is going to get confused with Pixi, the more and more popular 2D rendering engine for Javascript: [http://www.pixijs.com/](http://www.pixijs.com/)

<comment><USER43> So what? Everything has a suffix in js-land.

</comment></comment><comment><USER44> In my experience, whether code like summing integers takes 6 instructions or 600 doesn't influence the speed of 95% of code and 95% of systems.

If you could magically port real Python or ruby or JavaScript code to pixie, but keep the same algorithms and architecture, I doubt it would change much.

Slowness is more influenced by things like data structure layout, allocation patterns, serial vs parallel I/O, context switches, and just plain not understanding your code once it reaches a certain size.

There seems to be a fetish for JIT compilation in a lot of new language designs and it confuses me. Julia is probably the language making the best and most appropriate use of it. It actually has good data structures and types which complement it.

<comment><USER45> What do you mean in your experience? Summing integers can take two orders of magnitude more time and it doesn't matter? I think it goes without saying in discussions of performance, we narrow our focus to performance sensitive applications and not CRUD database web frontends. I can tell you in the vast majority of performance sensitive numerical applications, that would matter. It would have to be massively disk bound for it to be overshadowed completely by I/O. Just saying. :)

<comment><USER44> I don't follow. Why aren't database web front ends performance sensitive? They seem like one of the slowest things out there, and some of the most widely used. My comments here on Steve Souders' realization is basically what I'm talking about: [https://news.ycombinator.com/item?id=13346635](https://news.ycombinator.com/item?id=13346635)

If you want to make systems fast, you work on the bottleneck. I'm saying that people think too often that summing integers is the bottleneck, when it plainly isn't.

Although I have worked in the domain of numerical applications, thus my nod to Julia. Anybody who works in that domain isn't going to be using something like Pixie; it's too impoverished in terms of types and data representation.</comment></comment></comment>


Tree-sitter – a new parsing system for programming tools [video] - <AUTHOR> https://thestrangeloop.com/2018/tree-sitter---a-new-parsing-system-for-programming-tools.html <comment><USER2> Hey, author of Tree-sitter here. Thanks for sharing this! I'd be happy to answer any questions people have about the project.

<comment><USER3> First up, thanks for dedicating a big chunk of your life to building tree- sitter! I had a go making a similar parser last year (fast, dynamic-grammar, self-correcting) and had to give up when I started to realize what a ludicrously complex undertaking this is. The fact that tree-sitter works at all is nothing short of amazing.

Question: do you have any plans to integrate tree-sitter with the language- server project(s)? If fast, accurate parsing of any programming language is now easily implemented in language servers via tree-sitter, it seems to make sense for LSP to expand its protocol to include syntax highlighting as well.

<comment><USER2> Thanks for the kind words!

I haven't specifically pursued integration with LSP, but Tree-sitter has been used to build a couple of language servers which work with both VSCode and Atom (and probably other editors):

* Bash - [https://github.com/mads-hartmann/bash-language-server](https://github.com/mads-hartmann/bash-language-server) * Ruby - [https://github.com/rubyide/vscode-ruby/tree/master/server](https://github.com/rubyide/vscode-ruby/tree/master/server)

</comment></comment></comment><comment><USER4> It's interesting that this appears based on Wagner and Graham's papers/work.

A bunch of that was eventually open sourced, but for years it was very state of the art for incremental parsing, but imho languishing, because all the implementations were closed[1]

[1] ensemble, pan, etc.

</comment><comment><USER5> The project website is here: [http://tree-sitter.github.io/tree- sitter/](http://tree-sitter.github.io/tree-sitter/), and the Github repo is here: [https://github.com/tree-sitter/tree-sitter](https://github.com/tree- sitter/tree-sitter).

</comment><comment><USER6> Here's the js grammar[1].

Despite the worrying talk of tokenization, it looks scannerless. Yay.

One big grammar. JSX is blended in. And ecmascript versions aren't segregated. Which I didn't expect... but the motivation wasn't writing picky compilers.

[1] [https://github.com/tree-sitter/tree-sitter- javascript/blob/m...](https://github.com/tree-sitter/tree-sitter- javascript/blob/master/grammar.js)

<comment><USER2> It's not actually implemented as a scannerless parser, but the grammar API mostly abstracts away the parser/lexer distinction.

We have to handle JSX and all language versions combined because for our use case, users need to be able to open up `.js` files and have them Just Work.

It's a similar story with Python and Ruby - we have to handle the union of all language versions.

<comment><USER6> > It's not actually implemented as a scannerless parser, but the grammar API > mostly abstracts away the parser/lexer distinction.

Any aspects of the 'not' part of 'mostly' which one should bear in mind?

<comment><USER2> Yeah, the grammar author does fully control the division between the parser and lexer: every literal (string or regex) in the grammar corresponds to a token. There's also a `token()` function that you can use to specify that an arbitrary rule should be handled by the lexer as a single token.

In most cases, you don't have to think about it; the obvious way to write something is the right way. There are cases where its helpful to have a mental model of how lexing works.

<comment><USER6> > grammar author does fully control the division between the parser and lexer

Nifty. So explicit GLR forks at rule level (`conflicts:`), non-forking token "conflict" resolution[1], no token regex backtracking pressure across tokens, and token resolution at a single code position can(?) differ across conflicting rules? I'm uncertain on that last bit.

> In most cases, you don't have to think about it

Well yes, but, some of us crave _much_ more syntactically flexible languages. :)

[1] [https://tree-sitter.github.io/tree-sitter/creating- parsers#c...](https://tree-sitter.github.io/tree-sitter/creating- parsers#conflicting-tokens)

</comment></comment></comment></comment></comment><comment><USER7> The Strange Loop videos are in the process of being uploaded still. There are a lot that deserve a look. I was there at this talk as well. This is one of the most diverse and high level conferences out there.

[https://www.youtube.com/channel/UC_QIfHvN9auy2CoOdSfMWDw/vid...](https://www.youtube.com/channel/UC_QIfHvN9auy2CoOdSfMWDw/videos)

</comment><comment><USER8> Fascinating work!

This talk is a part of an archive not accessible from the site's menus: [https://thestrangeloop.com/2018/sessions.html](https://thestrangeloop.com/2018/sessions.html)

</comment><comment><USER9> TIL Tim Wagner did a thesis on IDEs before the serverless thing. The man has a passion for developer user experience.

</comment><comment> Avi-D-coder This is great. Has any one implemented utilized Tree-sitter in another editor? How does the performance of atom compare to vscode these days?

</comment><comment><USER10> Pretty cool! I found impressive the way Max refactor a bunch of code using extend selection (16 mn 45).

</comment><comment><USER11> Ok, now I just need to get this working in emacs.</comment>


The Real Cost of Acquisitions: the Zimbra Story - <AUTHOR> http://blogs.zoho.com/general/the-real-cost-of-acquisitions-the-zimbra-story <comment><USER2> Depends what Yahoo! bought Zimbra for, really.

You may have noticed that Yahoo! has quite a big internal mail platform... perhaps they actually wanted the technology expertise and the people more than the enterprise business. Perhaps they already extracted that value.

Disclaimer: I work for Y! but not for mail and I have no insight into mail at all. Also these opinions are my own and not Y!'s.

<comment><USER3> Article says $350 million.

<comment><USER4> I think that was "for" as in purpose, not as in cost.

</comment></comment></comment><comment><USER5> From a certain perspective, the startup complex is and extremely bizarre value creation and destruction machine. You have acquisitions like this funding (in the sense that founders and investors do this in order to achieve an acquisition like this) scores of startups who are creating real value come into being. The "successful" ones that get acquired are actually destroyed. Maybe there is some opaque value (expertise acquisition) passed to the buyer, but overall the value seems to be destroyed.

The side effect though is value created via all the other startups that get founded.

<comment><USER6> I think often-times those types of acquisitions are just to get the talent, or the IP from the product, moreso than to launch a new product outright.

Where I see problems of course is that so often startups are acquired by bigger competitors who probably have the best of intentions, but can't help but stifle the newly acquired employees into doing things 'their way'... Their way of course being the way that allowed the startup to eat up so much of their market share with minimal funding, yadda yadda.

</comment></comment><comment><USER7> Does anyone know how Zoho scaled to 300 people and 20+ products with no outside investment?</comment>


Ask HN: Free dataset of IP and location? - <AUTHOR>

I want to quickly look up the city/state/country of a visitor by their IP. Anyone know of a good dataset I could download to do this locally on my server? <comment><USER2> <http://www.hostip.info/>

<comment><AUTHOR> Thanks! Surprisingly the unknown rate I am getting is real high(40%), but this is a decent solution for now. HN saves me so much time.

</comment></comment><comment><USER3> Maxmind comes to mind. They have a free solution with paid packages that offer additional features.

<comment><USER4> I user Maxmind and it's great.

</comment></comment><comment><USER5> Look at this blog post - despite what it says (Django) it's fairly generic Python.

<http://boomby.com/?p=3></comment>


Show HN: RepoRemover – Easily archive and delete multiple GitHub repos - <AUTHOR> http://reporemover.xyz <comment><AUTHOR> This is a little tool I made to ease my Spring repo cleaning. It's not possible to archive or delete multiple GitHub repos at once on GitHub.com, and I noticed many people were passing around scripts as a way to achieve this. I figured it would be even easier with a nice UI, and I was looking for an excuse to play around with Vue.js

I hope other devs find this useful! Feel free to send feedback, or open issues on GitHub.

Thanks.</comment>


Where the Creative Class Earns the Most - <AUTHOR> http://www.theatlanticcities.com/jobs-and-economy/2012/07/where-creative-class-earns-most/2234/

<comment><USER2> It would be nice if the wages were standardized against cost of living. This would show where the wage truly equates to higher compensation.</comment>


The Hunt for Aliens Is a Grassroots Movement Funded by Billionaires - <AUTHOR> https://www.inverse.com/article/25908-hunt-for-aliens-grassroots-movement-funded-by-billionaires <comment><USER3> You know that recent "pill shaped" craft that the F-18 pilot saw in the Pacific Ocean?

What I don't understand is why it seems NOBODY is asking about DIVING beneath where it was hovering. If you read the more detailed account of the encounter (not the NYT article), the pilot clearly describes that the craft was hoving above the water.

Why not dive straight down where it was hoving and see if there's something special down there? I mean, maybe it was hovering there for a reason?

<comment><USER4> From the details I've read it was hovering at a very low altitude above the water. From normal cruising height down to right above the waves at visual range in a short period of time is probably a bit aggressive. As I've heard one former fighter pilot describe, the military has no interest in losing trained pilots and jets. If you really follow all the rules they have to keep you away from risky areas when it isn't necessary, there's a very low chance you'll ever encounter an enemy Mig, etc. So with that said, following procedure when encountering a UFO, a steep dive to very low altitude in close proximity to an unidentified phenomenon is probably not something many crewmen would immediately jump at.

<comment><USER5> I think the suggestion was scuba diving, FYI.

<comment><USER3> It was indeed... Use a robot, for all I care... But dive down to the ocean floor!

<comment><USER4> Oh you mean dive down there now, after the fact? That makes more sense... Doesn't sound like it was there for very long at all.

</comment></comment></comment></comment></comment><comment><USER6> The premise of "The Three Body Problem" is that the fastest way to make a technological leap is to find another species that has already developed the technology. Even seeing what can be done would make a huge impact. China's effort in the article parallels what happens in the book. Surprising that they don't mention this when talking about the motivations of billionaires and nation-states.

<comment><USER7> I don't think that was the premise at all; what you're describing sounds closer to "Signal to Noise" [1], another book that covers a lot of the same themes as Three Body Problem (first contact, the dark forest hypothesis, etc.)

[1]: [https://www.goodreads.com/book/show/700919.Signal_to_Noise?f...](https://www.goodreads.com/book/show/700919.Signal_to_Noise?from_search=true)

<comment><USER8> Agreed.

</comment></comment></comment><comment><USER9> This article is a breathless rush which conflates SETI with exploring the solar system. I can't speak for Elon Musk, but I highly doubt he wants to land a SpaceX crew on Mars to meet intelligent life (obviously finding any life would be an astonishing discovery, plenty to go down in history). Yuri Milner might have a little more luck in that regard with Breakthrough Starshot, if it works (just in the sense that it's slightly - though only very slightly - <USER2> likely there'd be intelligent life in another solar system). The universe is big - my instinct is there's lots of life out there, likely even lots of intelligent life, but we're all so spread out it'd be remarkable to find one another...

</comment><comment><USER10> I absolutely believe in extra-terrestrial intelligence. The fact that recurring themes (oval shape, weather disturbences and seemingly instant movements) dating back even before a long haired dude who claimed to have defied the laws of biology and physics (every religious prophet ever).

This suggests the following three scenarios:

\- They don't necessarily care about being seen but will not interact with us.

\- Whatever it is they think we have, they keep coming back.

\- Just because we decide to pour billions, they aren't going to suddenly change their minds.

To me this is a typical behavior of a civilization that exceeds us technologically and their behavior suggests they are here to observe or gather data somehow.

So is it colonial ambitions or just fascination with what they found--tiny parasites with inferior intelligence and technology but entertaining to watch.

It would be like finding worms on some random planet. Not very useful to attempt communication or establish trade. Maybe they come back every once in a while to check if there has been any progress....

We could be many such "worms" find throughout the universe that these guys are just cataloging, to figure out and understand it better.

edit: One final crazy out there theory is that these UFOs are just time traveling machines operated by future versions of us. But if they interact or spend too much time beyond being "UFOs", they might cause some type of catastrophic failure in the fabric of time and space triggering another big bang.

edit2: okay one really even more crazy but plausible idea is that we diverged from a common intelligent being, and the OG smart guys are now discovering a much more stupid version of them running around thinking they are smart.

</comment><comment><USER11> It surprises me a little to hear that billionaires would even WANT to establish contact with aliens.

For one, disregarding the aliens' dispositions towards us, the mere fact of alien contact would probably introduce all kinds of unpredictable behavior, especially in markets.

Moreover, once you build scenarios around possible alien intents, it doesn't look good for humanity, much less the billionaires, in some of them.

Hostile - enslavement or extermination = no good for markets. Hostile - exploitation = depends on what the aliens want, what they'll do to get it, and how much of it one can control (e.g. 3rd world dictators) Benevolent - capitalist = might actually work out for those who can act as gatekeepers for the alien stuff. Benevolent - socialist = unlikely to grant anyone a monopoly on alien stuff distribution.

</comment><comment><USER12> The hunt for aliens suddenly cropping up in the nytimes has the feel of a distraction.

The video itself felt like one of those old bigfoot vidoes.

I want to believe in aliens as a huge fan of star trek (TNG is best :) ), but I feel skeptical for now.

<comment><USER13> Yep, as much as I want to believe, which is more likely?

1\. Our understanding of physics is very wrong and this is the very first time we've seen any phenomena that overwhelmingly demonstrates that; OR

2\. Someone shopped up some videos for distraction and/or marketing? Perhaps there's going to be an expensive military-industrial spending activity that needs public support?

<comment><USER14> "Our understanding of physics is very wrong" \- this seems very likely to me. Pretty much all scientists have been proven wrong so far in significant ways. The entire structure of the universe makes no sense without tons of dark matter and dark energy we can't observe, which sounds a lot like the way we used to balance the equations of orbits so the earth was the center of the galaxy.

[https://youtu.be/Zgk8UdV7GQ0?t=71](https://youtu.be/Zgk8UdV7GQ0?t=71)

2\. I think this alleges a pretty large conspiracy theory on the order of 9/11 being faked. There is a wide body of evidence from a lot of reputable witnesses of unexplained phenomena. The idea that the military fabricated that video and the pilots who are the witnesses is more ridiculous to me than "Our understanding of physics is very wrong"

<comment><USER15> >The entire structure of the universe makes no sense without tons of dark matter and dark energy we can't observe

It's not _directly_ observable, but it's effects are certainly observable in the surrounding organization of baryonic matter. It could very well be an incorrect assumption, but we would need some evidence to the contrary to change our minds, no?

edit: spelling

<comment><USER16> > It's not directly observable, but it's [sic] effects are certainly > observable

You could say the same thing about the ether, the centrifugal force, and the argument about flat earth.

My money is on dark matter's effects being due to some as-yet-undetectable acclerative force, maybe due to deformative effects of gravity that are only apparent at massive scales. Some sort of extension of GR that takes into account local clustering of energy that it isn't yet doing. But I'm no cosmologist.

Is that what the cosmological constant is all about?

</comment></comment></comment></comment></comment><comment><USER17> I'm not sure it's possible for a movement to be both "grassroots" and also "funded by billionaires".

</comment><comment><USER18> They Live

<comment><USER19> Love that movie. I would almost wish they would make a remake of it , but Hollywood would ruin it with their myopic political views.

<comment><USER20> It's kinda funny that this comment could equally apply to the original - there's nothing apolitical or anti-contemporary about it either.

</comment></comment></comment><comment><USER21> Are we the pinnacle of intellect in all the history of space and time?

<comment><USER22> One thing I've though about is that it isn't just intelligence that matters. It's also available resources. In order for a galactic civilization to spawn, the intelligence must evolve on a planet or group of local bodies with natural resources sufficient to allow it to spread. Spacecraft have to be built out of something. Fuel has to come from somewhere.

I wonder if there have been countless other lifeforms and civilizations that evolved and then subsequently died out because they used up all the natural resources available to them.</comment></comment>