A better critique would have included talks about callback hell, or the general philosophical issues of non-block/evented work versus synchronous programming: see the classic http://www.youtube.com/watch?v=bzkRVzciAZg .
This isn't even that great a rant.
(I appreciate my fellow Rails devs probably upvoting it out of spite, but c'mon...)
Mostly, because it's funny. What's even funnier is how people take this sort of stuff personally.
I use Node, I know its limitations. I also use PHP. And Ruby. And Python. I use everything. I like having a full toolbox.
These languages are just that. Tools. If you went up to a carpenter and made fun of his hammer, do you really think he'll be pissed? He knows what his hammer is capable of and doesn't need anyone else to tell him.
A better question would be why this sort of commentary starts flame wars?
Languages , libraries , frameworks and runtimes on the other hand literally become a part of the end product. In many (maybe most) programs the total LOC count for the project is dominated by third party code vs original work.
So in this case they are not the tools, they are the nails.
hammer : painting :: tool : finished_product
Though cliche, it's not like the analogy is misleading. Nails might not be "tools" since they can't normally be used on the next project, like a hammer can. But nails are still a means to an end, e.g. "hang painting on wall". If we really wanted to, we could stretch the analogy ad infinitum. "What's the nail represent? What's the room represent? Who bought the painting? etc." But the purpose of an analogy isn't to draw parallels between the objects' irrelevant particulars. Its purpose is to abstract from the objects an equivalency of relationship (i.e. means/end). In this case, I think the equivalency is preserved even after we extended our analogy in ways it was never intended to be.
Deciding to switch something like a hammer (or text editor) mid project is likely not a big deal but switching to another language or framework can be an ordeal that requires planning. Since software projects are almost never "done" until they are obsolete the choice of language can have significant implications down the road that you wouldn't have if it was simply a "tool".
Any time you feel inclined to dig-in and tear apart an analogy, it's wise to consider whether you're contributing to the refinement of the underlying idea, or just bikeshedding.
Says the guy with the wooden name!
"I know there's a closed form solution. Shouldn't you be in front of a mirror somewhere, figuring out how to introduce yourself to her?"
is pretty great.
"I kinda remember this guy," I thought to myself. "Let me read what else he has to say."
Then I found this: http://teddziuba.com/post/24585610978/starting-over
Maybe he just didn't want to import his old posts into Tumblr somehow. Or maybe something else.
I dunno. Just thinking.
I can provide similar arguments about PHP, Ruby, Python as well as JAVA and say they are cancer too but they are not. Every technology has its limitations but there is no doubt that NodeJS has opened up many new possibilities when it comes to doing thing on web. It will never be able to do everything that say JAVA does but it will always do a few things lot better than say Java or Ruby.
A good developer will always pick the best tool for the job without being "emotionally attached" to any one tool.
This is what loses me- how is that cool or good? I would much rather write a static html/css/angular frontend and have it talk to a Go webservice on my server. I want to use the best language for the client and server side, why do I care if they are the same? I want them to be basically completely independent apps where I could replace one or the other with a new implementation.
I'm curious what Ted's view on Node.js is now that it (and he) has matured a bit.
Or blissfully, unapologetically unformatted content?
But that is hilariously written. I love a well-executed embittered screed.