Late Bloomers: Why Do We Equate Genius with Precocity? (2008) - <AUTHOR> https://www.newyorker.com/magazine/2008/10/20/late-bloomers-malcolm-gladwell <comment><USER2> I believe this really depends on the field you're looking at. In pursuits where extraordinary levels of raw ability is absolutely paramount, precocity will be there 9/10 (or more). The best example is the quintessential chess genius. It's hard to find a chess champion who wasn't a precocious talent. It's the same with concert pianists.

In other fields, some raw ability (but not necessarily an obvious precocious talent) is still necessary but other factors are also paramount. In the field of literature, richness of experience and maturity can take an author to a higher level. In various fields of scientific research, decades of accumulated knowledge/experience can be pivotal to success.

My point is that in some fields, it makes complete sense to equate genius with precocity, but in others it makes little sense.

<comment><USER3> > _" The best example is the quintessential chess genius. It's hard to find a > chess champion who wasn't a precocious talent."_

Hold on a second there. Becoming a chess champion is effectively a full time job, and it takes a tremendous amount of work to acquire the skill to do so. Who, as an adult, is going to pursue that as a career if they haven't been playing chess tournaments since childhood? I would argue that there really isn't a path to becoming a chess champion except via being a precocious talent. Without that hope the family and the individual isn't going to pursue it as an option. Nobody is out there earning degrees in professional chess and then going into office work or silicon valley or what-have-you, it's just an extremely specialized field.

<comment><USER4> I agree, the causation is likely due to the fact that kids who are good at playing chess early on keep playing chess, which by default gives them years of additional training and experience more. As opposed to someone who has only started at 18, they are going to have a hard time competing not due to their intelligence or genius-factor, but lack of training.

</comment></comment></comment><comment><USER5> I recently had the pleasure of reading the book Outliers, also by Malcolm Gladwell. In this book, one of his techniques is to present the typical "genius" or "rags-to-riches" type story and pick it apart, showing that success comes more frequently from environment and having the opportunity to work hard than from some innate genius. Here he uses the same technique. He presents the popular conception of Ben Fountain's story - a man quits his job and becomes a successful author through talent and motivation. Then, throughout the rest of the article, he adds nuance and exposes some of the overlooked details - that man was supported financially by his wife, had free time throughout the day to work, developed his talent excruciatingly slowly and took almost twenty years to catch his first break. While the focus of this article was more to discuss what it means to be or become a genius, I find it refreshing to think that these kinds of success stories often have hidden details that allow them to feel more realistic and attainable.

On a more personal level, I really appreciated this article. I recently made the decision to study music at a conservatory rather than go into programming as I had originally planned. Programming has always been something I've been naturally good at (I used to think of myself as a very technical, STEMmy kind of person - I laugh at that now), whereas performing music is a passion I've only recently rekindled. As a result, I've had a few doubts about my ability to become a good musician or whether I've made the right choice. This article, however, reassures me that being born with innate talent is not the only path to becoming a good musician (although it sure would have been nice).

<comment><USER6> Just understand these stories are still focused on the winners. You can be a top 1% musician and still need a day job.

<comment><USER7> You can be the most skilled musician in the world, and still not have a job. Luck and politics matters a lot in music, and the margins between the best musician and everyone else is such a small percent that the king makers (record labels, opera houses, etc.) can afford to not have the most skilled musician if they see fit.

<comment><USER8> A lot in music depends on the kind of music you want to make. Certain music genres are able to support a much larger section of musicians, regardless of their innate talent. A top 10% violinist doesn't have as many opportunities as a top 10% EDM producer.

Music is also strange that you can be a top 1% musician (in terms of sales and popularity) without having the skills of a top 1% musician. As long as you can write pop hits (which doesn't require the strongest technical skills, that is.

<comment><USER9> Agreed on all your points except for that it is strange.

I'd say in most fields, expertise is second to sales & politics ability for generating revenues & popularity.

</comment></comment></comment></comment></comment><comment><USER10> I think our educational system is flawed as well. I know a lot of talented people who would be able to do great things in science and research if there was a way for them to enter academia after they've become full fledged adults.

Often it's people who matured late or spend their youths trying to figure out what they wanted, and now they can't really enter into academia because the institutions were build to educate the same way we educate children.

I know there are masters programs, but a lot of those, and a lot of people who take the time to re-educated, are solely focused on getting more valuable for business, not for research.

It's a shame, because I think we lose a lot of potential by almost entirely focusing our higher learning systems on young people.

<comment><USER3> It is flawed, flawed to the point of being broken. What education should be: teaching children to become mature adults and functional members of a cooperative society, teaching coping skills for adulthood, cultivating and encouraging a sense of curiosity and interest in reading, learning, etc. What education tends to be: a brutal factory that is not unlike prison that babysits children until they are legally (but not emotionally or intellectually) adults while burning out every ounce of curiosity in science and learning in all but a precious few individuals.

There are tons of ways the system can be improved. One little thing I'll point out is that in school the expectation is perfection and deviation from "perfection" (orthodoxy, memorization, etc.) is punished. If you "fail" a midterm or a big project but end the course with a high degree of mastery of the material you are punished with a lower grade. If you excel in certain subjects but only passably good in some others then you are again punished. Which is exactly the opposite of the way real life works. If you are a superstar (perhaps literally) in even just one area (science, music, art, writing, comedy, machine tools, what-have-you) whereas in other areas you merely have a basic level of competency, well in that case you can become hugely, wildly successful. And yet the educational system would lead you to believe that you would have a dim future in that case and you should stop focusing on what you are best at and most passionate about to improve your "grades" on everything else.

<comment><USER11> _> educational system [...] stop focusing on what you are best at and most passionate about to improve your "grades"_

Yes. Precocious boys follow a sequence of obsessions. The way to foster achievement, then, is to find out what a child loves and help him to do more of it. Ultimately this may involve finding a master who can act as mentor. It's not going to happen in conformity factories dominated by ideologies (and often policed by bullies).

<comment><USER12> That is not true. Kids who develop abilities or inclinations at an earlier age than is usual or expected don't necessary follow obsessions. Their brains often simply develop a bit faster then brains of other kids, hence sooner abilities and inclinations.

It does not mean they will end up more skilled in adulthood nor that they are necessary obsessed types.

Conversely, obsessed personality types are not always that much better then others if their obsession is not channeled in an effective way. The obsession is not necessary combined with larger talent or effective learning methods.

<comment><USER11> Well I'm not talking about obsession in the sense of a mental disorder -- but in the sense of that one thing X that a particular person happens to be in love with at the moment (could be piano, could be tennis, could be computer programming or could be something socially disapproved of like pokemon or skateboarding or whatever). The obsession creates a _depth_ of knowledge. Even when you try to make such people do other stuff, they'll still be daydreaming about X. So better to work with it.

<comment><USER12> Obsession creates time spent by topical activity. If does not create depth of knowledge unless channeled right. Kid won't go far in piano or tennis or math unless having good teacher no matter how obssesed. All those fields are too competitive for that.

> Even when you try to make such people do other stuff, they'll still be > daydreaming about X. So better to work with it.

That is point where it is approaching mental problem. Most kids, evenovanej those with strong hobbies are fully able to learn other things too.

Also, the competition winning programmers among my peers had wide knowledge in non coding areas. Then again, our environment and camps encouraged that sort of thing.

</comment></comment></comment></comment></comment></comment><comment><USER13> Because geniuses are often precocious.

Here's a critical review from Steven Pinker that criticizes the kind of reasoning Gladwell uses in this article: [https://www.nytimes.com/2009/11/15/books/review/Pinker-t.htm...](https://www.nytimes.com/2009/11/15/books/review/Pinker-t.html)

<comment><USER14> Thank you, that was a great example of a critical review. I need to find my Igon Values.

<comment><USER15> "Readers have much to learn from Gladwell the journalist and essayist. But when it comes to Gladwell the social scientist, they should watch out for those igon values."

I didn't know Steven Pinker was tactful!

</comment></comment></comment><comment><USER16> More interested in why we need to believe in genius in the first place.

I find it can be a kind of secular sainthood that has a mythology around it that serves as a post-hoc justification of certain social outcomes. Few understand the contributions of minds like Feynman, Davinci, Einstein, but we hold them up as symbols of a kind of mystery cult around science, which should make people at least a bit curious.

There are a lot of prolific artists who aren't included in the genius canon, and it's an almost exclusively masculine archetype, which means it either tells us something about who we are, or it's the noisy artifact of a crude model. My bet is on the latter.

While the particular acumen for appreciating and operating on abstractions is probably pareto distributed (like everything), what it represents is much more interesting.

When you believe in genius, you likely believe it is meaningful that there are people you will never compare to, who have advantages you are physically incapable of obtaining, who were chosen to receive a gift while you were not, that there are people whose nature or perceived potential means they should be held to different standards, or that someones success can be less legitimate because of a perceived intellectual advantage. Not saying any of those statements are true, but they are definitely the effects of how people relate themselves to the belief in genius.

Without those beliefs, we've got some much harder questions to answer. Personally, I think precosity can be cultivated and refined into something great, but genius itself is an artifact reflected from others beliefs, and not an intrinsic quality.

<comment><USER17> >Without those beliefs, we've got some much harder questions to answer. Personally, I think precosity can be cultivated and refined into something great

Very much so, and sometimes ascribing genius is just shorthand for "I don't plan to try".

More insidious is "talent", also held to be an intrinsic quality. But it turns out that "talent" is a trap for those who are talented.

Talent is a trap: I came across this when watching a digital painting video, the host was relating how some of the people in art school were obviously talented and some were just slugging it out like he was. He noticed over time that the talented ones were more likely to give up at some point, and the sloggers were more likely to keep going and become successful making art a profession.

The problem is that the talented are characterized by things seeming to come easily, but it's not an infinite ability and sooner or later they come up against some technique or assignment that is a problem and that will take real patience and work to get through. That comes as a real shock that can shake your confidence in your "talent", which was an illusion anyway.

The sloggers have the advantage of always having to work hard to make progress, so everything is a struggle and the only surprises are when something goes easily. Those kind of expectations set you up better for success in a profession, which is just hard work in the end.

</comment></comment><comment><USER18> My two biggest counter examples when people say that geniuses are not born are John von Neuman and Srinivasa Ramanujan. These two were surrounded by other people who were regarded as geniuses in their own right, and yet these people viewed von Neuman and Ramanujan as being on a completely different level.

<comment><USER19> Warren Buffett is an interesting example of specialized genius. He has a gifted memory and based on what has been described about him in several books, from birth he was of a certain emotional tilt that would serve him very well in consistently not making investment decisions based on emotion across decades. Buffett is an investment/financial genius, whose quite abnormal birth traits were a prerequisite to his extreme success in the investment world.

I favor the notion that genius potential is a combination of specific narrow traits, such that if you swap any of them out, you're very likely to lose the genius outcome (rather than the pop caricature that genius is mentally broad; ie if someone says: he/she is a genius! - the only proper response is: in what narrow regard?). The popular successful genius outcome then further requires a number of external environmental factors, such as luck (where you were born, who your parents were, who you went to school with, who your friends were, what time in history you were born, all the way down to the tiniest of minutia).

<comment><USER20> Like the saying goes "better lucky than good." Being born a white man in America at the time he was to a politically connected, financially stable family were all things that benefited him greatly and which he had 0 control over.

The older I get, the more of a fatalist I become. The whole universe is just luck and entropy, and anyone telling you otherwise is probably just trying to sell you something.

</comment></comment></comment><comment><USER21> Media plays such a huge part in this. How often do we see young people saving the world versus old people? I like the Marvel movies because the protagonists are mostly reasonably aged.

I try to remind myself at times that Gaston Glock didn't design his first gun until age 52.

</comment><comment><USER22> Because it's a lot easier for someone to convince himself that "genius" is a born trait, lest he look in the mirror and ask himself why he's not working harder to achieve something.

</comment><comment><USER23> Precocity means early identification of potential in a given field.

Early identification of that potential means individuals and institutions around the individual start to dedicate resources towards their development.

Having resources dedicated to that development means such individuals can specialize and focus without having to spend as much (or, perhaps, anything) in terms of time/resources on normal life-supporting activities.

Early identification also means investment of attention which accrues in _reputation_ (and probably compounds in much the same way early financial investment does), which means less time spent having to convince people to give you opportunities.

Basically: there's a path-dependent element to success / prestige. Precocity is not the only route but it helps so much that of course it's often correlated with recognized genius.

</comment><comment><USER24> What a great story. The most intriguing person was Sharon, Ben Fountain's wife. She seems like an outstanding human being.

</comment><comment><USER25> I'm not sure if this is true. For example, Nobel prizes are usually assigned at quite an old age, and this leads people to think the opposite. Also people usually associate the word "professor" with an old guy. The picture of Einstein that people have in their minds is not of his younger years. Etc. etc.

<comment><USER26> But the relevant research is usually done when these people are much younger. Einstein has made his major contributions to physics by the time he was 36. Fame and prestige are lagging indicators.

</comment></comment><comment><USER27> This podcast by Gladwell also expands on his article: [http://revisionisthistory.com/episodes/07-hallelujah](http://revisionisthistory.com/episodes/07-hallelujah)

</comment><comment><USER28> Well I can't be one(Genius) - I had to google "precocity"

<comment><USER29> I figured it came from "precocious" but I was like, "is that actually a word?"

</comment></comment><comment><USER30> Discussed in 2014: [https://news.ycombinator.com/item?id=8229385](https://news.ycombinator.com/item?id=8229385)

<comment><USER31> Isn't that what the "past" link is for at the top of the page?

</comment></comment><comment><USER32> You learn the best when you're young and if you aren't distracted by social stuff you have more time?</comment>


Hard-won lessons: Five years with Node.js - <AUTHOR> https://blog.scottnonnenberg.com/hard-won-lessons-five-years-with-node-js/ <comment><USER2> I can't imagine _choosing_ to write Javascript on the server, but considering its popularity I'm wondering if I'm wrong. So I'm curious as to the reasons people chose Node.js and whether you would recommend it, anybody willing to share their experiences?

<comment><USER3> NodeJS has a handful of things that tend to get brought up. Callback soup and difficult error handling. Both are resolved by promises. Once you get the hang of promises, you are capable of doing concurrent asynchronous tasks in a manner that would be significantly more difficult in any other language.

On top of that, NodeJS is very, very fast. Compared to Python or Ruby, straight computing is significantly faster, but that's not even where the meaningful gains come from. Because NodeJS is non-blocking, the core is IMMEDIATELY available to serve the next request once an asynchronous call is made (read from DB/Cache/HTTP call). Because of this, each core can serve thousands of simultaneous connections.

Because JS is single threaded, in order to take advantage of multi core hardware, you just run the cluster module to effectively launch a concurrent instance of your application for each core.

As far as the language itself, once I understood it, I loved it. At first, I thought it was terrible, but when I went to ES6 syntax, and fully groked how to write asynchronous code, it rocketed to my favorite language.

I started with Java, moved to Python, and although it took me a while to come around to JS, I would absolutely never go back.

<comment><USER4> > Once you get the hang of promises, you are capable of doing concurrent > asynchronous tasks in a manner that would be significantly more difficult in > any other language.

FYI, anyone who has worked with Elixir or Erlang views these sort of statements about Node as completely ridiculous. The only languages right now that are making a serious effort to bring real concurrency to modern programming are Go and Elixir. Node with its single threadedness and global heap doesn't come close, since those are fundamental problems with JS. The papering over the defienct language concepts with attempts like promises don't address these issues at all.

<comment><USER3> For concurrent asynchronous tasks, being single threaded or multithreaded shouldn't make any meaningful difference. To make a million concurrent asynchronous calls on a single thread takes couple MS, to make on multiple threads takes about the same. For concurrent SYNCHRONOUS tasks, being single threaded or multithreaded makes a huge difference, but that's not what we're talking about here. It's also not at all fair to call NodeJS single-threaded in regards to its concurrency model, as it utilizes all cores through parallel application instances.

<comment><USER4> The multiprocess Node concurrency model is brittle and fault intolerant. The event loop scan actually has real bottlenecks at a certain level of fds in flight. A real scheduler really wins here; libuv sits below the knowledge of the runtime to really be optimal. You become CPU bound far sooner than you expect.

With a global heap, you also become memory bound far sooner than you expect as well.

<comment><USER5> Your typical Node instance is using an order of magnitude less memory than the beastly JVM. We use Java microservices with Spring at my job and each "micro" service consumes close to 1GB of memory. I've never written a Node service that had more than 100MB footprint.

<comment><USER6> The default maximum heap size for the JVM on systems with 4GB or more of RAM is one gigabyte. Has this been changed in your microservices' startup parameters? If not, it is no surprise that Java uses the memory that you have allocated to it before garbage collecting.

Spring Boot microservices that don't do much shouldn't need more than 32MB heap -- see [https://spring.io/blog/2015/12/10/spring-boot-memory- perform...](https://spring.io/blog/2015/12/10/spring-boot-memory-performance) for details.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Reading up on all these Node.JS posts I'm surprised at just _how many gotchas_ the platform has and how there's no single standardized way to solve them.

It's not encouraging stuff. On paper the platform looks decent but aside from a few use cases it seems that there's more hype than it merits.

<comment><USER8> What really scares me about the Node ecosystem is bugs like these:

[https://github.com/npm/npm/issues/10999](https://github.com/npm/npm/issues/10999)

[https://github.com/npm/npm/issues/9633](https://github.com/npm/npm/issues/9633)

I have personally hit both while trying to _build_ (not even write!) Node software.

The former bug is an example of "broken by design", and it's interesting that it remains open (therefore admitting that it is a problem?), but no solution came yet. Although I believe Yarn doesn't have it - but then why doesn't the entire Node community move to Yarn?

The latter bug is, to me, just insane. Several dozen bug reports (and even more if you google for the error message); and when it shows up, it can be an outright blocker. It was for me - I plainly couldn't build the software that I wanted, and no workarounds helped. And no fix, 1.5 years later and counting.

<comment><USER9> Technically those are NPM bugs, not Node bugs. And Yarn seems to do a much better job these days.

<comment><USER8> That's why I said "Node ecosystem". NPM is definitely a part of said ecosystem, and it still the de facto standard package manager (which, also - why, when there's Yarn?).

</comment></comment></comment></comment><comment><USER10> > Verify All Assumptions

When you have to worry about the environment unexpectedly reusing internal variables, when is it considered foolish to use a framework where you have to question every relationship between every concept? Just stop using it.

<comment><USER11> Or one could learn how `this` works, which is that example is really talking about. I was unimpressed by these lessons. There are no dark corners of Node, or JS in general, here. It's more of a narration of the author's growth as an engineer. The "call the callback last" recommendation is particularly odd.

<comment><USER12> The counterintuitive behavior of "this" in JavaScript doesn't need any defending. I've never heard a justification for this or any other of JavaScript's quirks that wasn't just a thinly veiled lecture on how it works.

<comment><USER13> They should name it arg0, as that is more indicative of what it is than "this".

</comment></comment></comment></comment><comment><USER14> This looks like how I used to work with BASIC back in the 80s:

> I finally added extremely verbose logging ... started adding logging ... > Verbose logging to the rescue ... I had the right logging in place ... My > first step was to jump in and add some key logging statements ... added > extremely verbose logging

Weird to see people happy to be limited to such stone-age work-flows when fully capable debuggers have existed for almost all proper languages out there the last 30 years.

Based on this, it's hard not to state that current Node-developer are the new PHP-developers: Unsophisticated, completely unable to see when the tools at hand are lacking, and happy with a with whatever they can get running.

<comment><USER15> > Based on this, it's hard not to state that current Node-developer are the > new PHP-developers: Unsophisticated, completely unable to see when the tools > at hand are lacking, and happy with a with whatever they can get running.

Comments like this are not the problem with HN.

The fact that they get voted, literally, to the top, is.

<comment><USER16> It's not a bad comment, it's just blunt. I also have a similar stories as the parent commentator, 8-10 years ago when you had even more awful programmers I would sometimes agree to fix something for someone desperate as their own coder had disappeared/failed/etc.. Sometimes even in a language I'd never even used. I'd open some random PHP project, or VBScript, or whatever and find loads of commented out print statements surrounded by some godawful code.

And it'd often be quite a simple logic bug that I could see straight away.

Regularly using logging for debugging is often an inexperienced developer's crutch. It's a red flag, the sign of the desperate, that they can't comprehend their own code or don't seem to understand the business logic.

It _can be_ a bad substitute for replicating the problem, reading the code + using a debugger.

Sometimes it really is justified. The author seems to have relied on it a lot though.

<comment><USER17> >Sometimes it really is justified.

Like in the situations in the article. That's why the comment in question is not just blunt. It's a bad comment.

A good comment would take a specific instance of using logging and said why setting a breakpoint / using a debugger would have solved that particular mystery faster.

<comment><USER16> I've read the article. Obviously I haven't seen the actual problem, but as an experienced developer, I feel that:

        NaN bug doesn't sound like it needed logging
        Mutability bug doesn't sound like it needed logging
        Dependencies and versions bug doesn't sound like it needed logging
        The Documentation and versions bug doesn't sound like it needed logging

Obviously we're not seeing the whole picture or the whole bug. But that's 4/5\. Most of those _sound_ like they needed a simple step-through.

For example, in the documentation and versions async.js bug, he added "extremely verbose" logging where it appears that a simple step-through would have immediately revealed to him the passed arguments were wrong and the signature of the method didn't match the documentation. Which would have made him realize he had the wrong version.

The only one where I would expect to have to use logging is the tests bug.

<comment><USER18> Interactive debugging is a useful tool, but it can encourage lazy reasoning. People just write something and step through until they notice some change they don't expect. That's fine and everything, but talking about "crutches" and tooling, it sounds like you may be a little biased toward big-IDE style development that makes the debugger the automatic answer v. some reasoning over the code and extra logging of potential trouble spots. There's nothing wrong with logging output v. stepping through in an interactive debugger _per se_.

<comment><USER16> Logging is lazy reasoning. Stepping through is simply seeing what is happening with a bug you can replicate. Stepping through is the step in debugging _after_ reading the code.

Even after you've read the code and think you've spotted the problem, you should step through to 100% confirm you've understood the problem.

It's simply confirming the bug and the solution, it's good science, it's good practice. It's empirical.

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> The biggest hard lessons I've had with Node.js have been around handling errors - when I first deployed [https://www.findlectures.com](https://www.findlectures.com), I was shocked to realize that uncaught errors could take down the whole site. Not handling error callbacks is also a big problem - TypeScript has been an awesome solution though, because it can show compilation errors if you screw up function arguments.

<comment><USER20> That's not Node.js. That's Express or a similar abstraction.

You can execute everything inside a promise like with Koa, which amounts to something like:

        http.createServer((req, res) => {
          handle(req)
            .then((response) => res.send(response))
            .catch(() => res.send(500))
        })

Where `handle` is an async function and thus all your application logic is in async/await space.

<comment><USER21> It's Node.js - the root of the problem is also Node's strength, which is that there's effectively no stack. You can manage zillions of concurrent connections, but there's no easy way for the system to unwind bad behavior by one of those connections.

In a Java app you except all the way to the request response.

In a Go app you return all the way to the request response.

In a Node app, you have to call your way back to the request response. Or you don't, potentially leaving the whole _process_ in an inconsistent state. The amazing concurrency of node comes at a price.

<comment><USER22> Domains were Node's answer to that, and it seemed to work pretty well. I adopted the approach for my own web framework (not JS based) and it has been an extremely useful abstraction.

They're soft-deprecated in Node now though, and AFAICT work on a replacement has stalled.

[https://nodejs.org/api/domain.html](https://nodejs.org/api/domain.html)

</comment></comment></comment></comment><comment><USER23> Something I found surprising was the 1.5 GB limit per process when used on Heroku ([https://devcenter.heroku.com/articles/node- concurrency](https://devcenter.heroku.com/articles/node-concurrency)), which afaik can be circumvented elsewhere ([https://futurestud.io/tutorials/node-js- increase-the-memory-...](https://futurestud.io/tutorials/node-js-increase-the- memory-limit-for-your-process)).

This can be problematic at times if you need to open a very large number of concurrent connections (crawlers, slack connections etc), and can force you to organize a "cluster" of processes before you really want it.

<comment><USER24> You can have quite a number of concurrent connections in 1GB of RAM, 10k at least? That seems allright for a single node, and scaling horizontally after that. For something like crawling, which has a lot of time spent on CPU intensive parsing and I with unpredictable times (hitting external service) I would throw that in a background worker from the start.

<comment><USER23> I do not have the numbers handy, but it was below 10k (by quite a margin), unfortunately.

</comment></comment></comment><comment><USER25> Wow, working with Node sounds like a huge pain in the ass.

<comment><USER26> This is always my take away. Quoting from an above post

>>Ie. Be okay if a syntax error crashes your server.

Really? I need to set something up to stop a syntax error not crashing __the server __

These rapid prototype arguments don 't hold either imo. I can knock out quick and dirty java / c# apps plenty quick enough that work fine for their needs. In my forays into dynamic languages there is no rapid development due to all the errors, the lack of IDE capability, the compiler replacing tests I have to write

</comment></comment><comment><USER27> I have a hypothesis - I think elixir,golang and java+vertx are carefully designed, highly productive and high performance frameworks.

However with Reactjs + React Native, you have an unavoidable component of your company that is in javascript (or will have soon). Why would you not do JS based server runtime ? With typescript/flow, you actually have an excellent language with no compile steps. Plus, and probably the most important, you have a cross pollination of engineering talent and time .

I think its the same case with data science - it is much more productive to build a python based data science startup, because of flask+sqlalchemy+jupyter+pyspark+numpy+tensorflow+keras. Yes, you can use scala or java... but you lose that one-language-to-rule-them-all productivity multiplier.

From a quick prototyping point-of-view, i think golang would have theoretically killed nodejs.

</comment><comment><USER28> Regarding throw and NaN, when the program throws an error, make sure it's restarted! When JavaScript throws, it stops doing whatever it was doing. But the rest of the program will continue to run like if nothing happened. NodeJS does the right thing by "crashing" / exit.

When you asume something in JavaScript, for example that the second parameter in the function is a callback _function_ make sure it is!

      if(typeof callback != "function") throw new Error("Expected callback=" + callback + " to be a callback function!");

      if(isNaN(someNumber)) throw new Error("someNumber=" + someNumber + " is NaN! someState=" + someState);

      if(something == undefined) throw new Error("something=" + something + " is undefined!");

</comment><comment><USER29> spent 2+ years learning js/nodejs etc I finally turned to PHP for server side, it just seems easier for me to get the job done with php, or it's just me.

<comment><USER30> Not a big fan of PHP, but it has certainly improved it's performance. Wouldn't be surprised if PHP 7.1 isn't competitive with Node.

</comment></comment><comment><USER31> I can't help but feel like this reads as Stockholm syndrome. Everything about Node is hard, but I'll keep on struggling.

<comment><USER32> Author calls it 'emotional' :)

</comment></comment><comment><USER33> These read almost like Zen koans. Such good stuff.

<comment><USER34> I agree. I wouldn't quite call it koan-level but the breezy style is definitely attractive to me.

</comment></comment><comment><USER35> I have had occasion to work on a Node.js based app in the last while. Well actually mostly a React/Redux-based app served out of Node.js, so 90% client- side but ... I think it's great! For quickly hammering something together and getting something bootstrapped and up and running it is so easy and straightforward.

But .. I have this niggling feeling .. as my code develops I'm noticing the expressiveness of Javascript lets me do things that look nice, and impressive but that I know will come back to bite me when it comes to enhancement and maintenance.

In this respect Javascript kind of feels like perl with OO and functional semantics built in from the ground up. It really is a lovely language but I wonder how well a JS-based system will scale over time. I've heard people say _" never use ruby in production"_ and I wonder does the same reasoning apply here.

The argument goes that building apps that use the same language client- side/server-side carries the virtue that you can write _" pure"_ apps - i.e. that share code front-end and back-end. That is definitely something that makes sense, especially if you need shared libraries you won't need to write the same code twice for each end.

But beyond that, I feel the expertise required at both ends is quite different. As a systems programmer I feel that strongly-typed rigid languages are very much the way to go because they give you a better sense of how robust the code is. Typically on the back-end you want to get something to work once, and leave it, so you need to be sure it's right.

My more limited experience working client-side suggests that you need far more flexibility there. Issues are far more easy to spot front-end and the key virtue is to be able to make changes and enhancements quite quickly and you don't have the same stringent code-confidence needs as you do on the backend because the quality requirements are different. Niggles and gotchas can be spotted, diagnosed and worked around on the front-end but on the back-end they become a royal pain.

So this, is what I think Javascript is great for on the front-end. I do love the simplicity of bootsrapping Node.js on the backend and the actual reactive framework for building apps is really cool. But yeah, for systems code "at large" I see limitations there for sure: The same we had with Perl, Ruby and Python. Perhaps what we need is some alternative language support e.g. Haskell or something that gives the same code-confidence, but which can interoperate perhaps with the "pure" javascript libraries similar to how say Scheme and Java can interoperate.

</comment><comment><USER28> The article mentions synchronous performance, but there are no mentions of optimizations. You can do a lot of optimizations in JavaScript and the VM itself is already well optimized. If your naive implementation is slow, my experience says _you can speed it up 100x_. Then it's not really worth switching to C/C++ assembly for another 10x performance. Then it's better to take the step to pure hardware.

</comment><comment><USER36> I would have like more detail on what they were doing with node. Building lots of small apps or one big one? Green fields or brown?

<comment><USER19> I've only worked on a large side project, but from that experience I have a theory that it is one of the triggers for microservices as a pattern, because the pain of debugging a Javascript server application seems to scale a lot more than linearly.

</comment></comment><comment><USER37> The sheer number of responses/comments here (hell, even the article itself) justify Node by community alone in my opinion.

I like the fact that I've been able to follow along as it's matured and this gradual bit by bit learning process has made me a better developer because of it.

</comment><comment><USER38> Too many lessons learned and arbitrary rules to follow equals flaws with design/language design

<comment><USER39> What language does not have these kinds of problems? I have encountered them with every programming language.

<comment><USER7> There are certainly _huge_ differences in the number of gotchas different plaforms have.

I have been absolutely disappointed by Node's tremendous number of gotchas in deployment and massive complexity of build pipelines needed to get around the inherent issues of the platform.

My deployment with Django, for example, have been _much_ simpler to handle.

<comment><USER39> For your information: to assess what projects you might be referring to, I clicked on your profile, but your hackernews profile points me to a URL with a broken security certificate belonging to Ukrainians, and even when I bypass the security warnings in the browser, I am sent to a page which gives me the message "404 not found".

<comment><USER16> Hackernewsers was a thing from a few years ago, not his fault it's shut-down.

<comment><USER39> The above message is purely for the person above's information. I have no way of contacting them off this noticeboard, so I wrote a private message to them about that as a reply, and marked it as such with the words "For your information". As far as it being someone's fault, the profile on news.ycombinator.com is editable, so he or she could edit it as they please. What a nuisance it is to continually have to deal with people who misinterpret what other people have written.

</comment></comment></comment></comment></comment></comment><comment><USER40> I'm seeing a lot of Node hate here, especially for large projects in Enterprises, but I've been watching a lot of Node Interactive talks, and companies such as Walmart, Netflix, GoDaddy, Paypal are switching. so why are they happy with it?

</comment><comment><USER41> Super interesting the part about converting to SSR and React synchronicity. Thank you!

</comment><comment><USER42> I just want to thank the author for a very well-written piece. I found it incredibly interesting and really connected with the format/flow of the post. I would love to see similar posts for various frameworks and languages.

</comment><comment><USER43> Isn't the whole section about Classes just due to the cache mechanism when you use require? I.e. all modules are singletons automatically. Is it really CoffeeScript causing it?

</comment><comment><USER44> Use elixir on the server side and elm on the client side, done.

</comment><comment><USER45> > Re: "New Relic doesn't get it"

Can someone recommend a Nodejs performance monitoring solution that works great?

</comment><comment><USER46> Sorry to say. Node.js isn't the problem. It is a symptom.

Devs these days are craptastic coming from dev->systems with devops nonsense. Just stop forcing this terrible language into server and js is as fine as it will ever be client side.

</comment><comment><USER47> so... many... links...</comment>


Battle In The Boardroom: Why Groupon Probably Paid Off Its Early Employees - <AUTHOR> http://dshipper.posterous.com/battle-in-the-boardroom-why-groupon-probably

<comment><USER2> What I'd really like to know is what the G round investors were thinking: did they not expect Groupon to use that round to pay off early investors and employees, or was that part of the plan?

<comment><USER3> The G round investors are buying their way into the IPO.

They believe that the IPO will be huge regardless of Groupon's health, and there's a lot of money to be made on it, so they're purchasing -- from the early investors -- access to pre-IPO stock.

<comment><USER4> If that's true, it lends more weight to the charge that the whole thing is a Ponzi scheme (later investors paying off early investors).

<comment><USER5> That's not the definition of a Ponzi Scheme. A Ponzi scheme is a confidence scam that requires deception. This is a bubble.

The investors in the last round _knew_ that the money was being used to cash out the early shareholders. No one is claiming fraud.

<comment><USER6> Yes, but the G round investors still have a personal stake in ensuring the public are deceived into buying those IPO shares so they themselves can turn a profit. Deceiving is deceiving either way you cut it.

<comment><USER5> How can they be "deceived", when the entire internet is talking about it? Nobody is hiding anything; they filed an S1, just like _every other public company_.

<comment><USER6> Yes, but Groupon is deliberately excluding certain expenses, such as online marketing, from their CSOI in order to inflate their profitability. Excluding this figure seems quite deceiving since their figures imply they don't rely heavily on online marketing when, in fact, they do. They even contradict themselves in their filing by stating, "We spent $179.9 million on online marketing initiatives relating to subscriber acquisition for the first quarter of 2011 and expect to continue to expend significant amounts to acquire additional subscribers." Well if they are expected to continue to expend "significant" amounts to acquire subscribers, why are they excluding those costs in the CSOI?

<comment><USER5> If you can make this argument, so can potential investors. It isn't a secret.

<comment><USER6> Isn't a secret...to some. If Groupon knew all potential investors would come to these same conclusions, why inflate the CSOI figures in the first place? They may believe that their marketing costs may not stay high once they've locked users into their e-mail list, but there is a growing influx of companies diluting the concentration of their daily deals such as LivingSocial, GiltCity, BuyWithMe, and countless other clones. Even Google Offers and Facebook Deals are entering the market with a huge network at their disposal. With this growing competition, Groupon is going to need to continue spending more on marketing well into the future in order to replace lost sales and a deteriorating retention rate. Their marketing costs are going to continue to be significant and, until they prove otherwise, they should report them as such.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> Drilling into his specifics, one issue is that they didn't actually keep the team together (and may well not have wanted to, given the comp package the new COO at least got), the COO and CTO both left in March. [http://money.cnn.com/2011/06/03/technology/groupon_ipo_quirk...](http://money.cnn.com/2011/06/03/technology/groupon_ipo_quirks/index.htm)

<comment><AUTHOR> Groupon raised the 1 billion in January which means that both the COO and CTO stayed long enough to cash in on the Series G round and then left.

<comment><USER8> Does that indicate that they thought the company's value was peaking?

More importantly, are we actually at the point where blogs in which a guy is admittedly just making things up about Groupon makes it to the front page?</comment></comment></comment>


Ask HN: Blogging in English or in native language? - <AUTHOR> <comment><USER2> [Hi from Argentina!]

I usually write the articles in Spanish and English. The English version usually has 10x move visits than the Spanish version. So I strongly recommend to write the English version too.

(I also like to write in my native language. Why use only English?)

Also, I can read in Spanish and English, some Portuguese and Italian, and a little of French and German. I had some formal education of German in primary school, but I don't remember too much. Each user has a different set of languages, but most people understand English and something else.</comment>


Angela Merkel agrees to prosecution of comedian over Erdoğan poem - <AUTHOR> http://www.theguardian.com/world/2016/apr/15/angela-merkel-agrees-prosecution-comedian-erdogan-poem <comment><USER2> Typical spineless bureaucratic political BULLHOCKEY, my condolences to fellow Germans.

</comment><comment><USER3> Wow, that's terrible.</comment>