node is evented and non-blocking it is very good at handling concurrent requests, so a proxy built on Node will perform much better than one built on say Ruby.
-Jim Patterson, director of platform at Yammer
It is unfortunate that the "director of platform at Yammer" does not understand what Ruby is. Ruby is a programming language and Node.js is a system written in Javascript. It is useless to compare Node.js to Ruby. There is a similar system to Node.js in Ruby, it's called Event Machine. The official Node.js about page states "Node is similar in design to and influenced by systems like Ruby's Event Machine or Python's Twisted."
The original article is so naive, it's no wonder he got a lot of negative feedback.
"The code that makes up node.js is carried out by the V8 javascript engine. This engine (read: the component that processes javascript so that it can be understood by your operating system) [...]"
No need for insults, but should one take advice on programming languages and frameworks from someone explaining them in such terms? He assumes you don't know what a virtual machine is or how programs get executed (or how they interact with the OS), yet he tries to convince people with the benefits of decoupling threads from connections.
I wonder who's the audience for this. And I fear it's people who read articles at such a level and then think they are capable of making technical decisions. Kind of like Gartner, I guess.
Well, it may sometimes lead to unfortunate results, but the fact is there are a lot of people out there without deep technical knowledge who are still interested in reading about languages and frameworks. There's nothing wrong with trying to cater to this demographic.
This article surprised me. Is the state of node.js actually not really that far along?
It seems like the examples in the article (and even in this thread) are all basically proxies or chatbots. Are there better examples of successful applications of node.js?
When you visit search.yahoo.com, some lazy-loaded JavaScript resources are served from a Node.js server.
That server uses YUI server-side to calculate JS module dependencies for that page's autocomplete feature. Since the response is very cacheable, and resolving dependencies doesn't happen on the client anymore, this technique improves loading time for that feature by 40%.
It also delivers less code for modern browsers. Feature tests from the browser are sent in the request, which server-side YUI considers for eliminating code only needed by older browsers.
- Downloading and parsing metadata about modules YUI can load (eliminated)
- Calculating what files to download based on the metadata (moved to the server)
These tasks are usually started by the script loader inside of YUI's seed file, which is a small script that provides the loading API in the browser.
Instead of doing these two steps, the seed simply asks the server for what's needed and gets it back, near-instantly: it's likely in your browser cache, or a Yahoo! CDN edge cache primed from another visitor.
Most savings come from a combination of less code downloaded and cachability of the result. Slower browsers (old IE, mobile phones) also benefit from less execution time, because they are particularly slow at doing the loading themselves -- IE 6 users enjoy 60% faster feature startup after the switch to server-side loading.
My co-workers ran in to the same problem once they started using node.js for a project (it's a chat server!) All the examples out there are very "hello world". Even the chat server library that we attempted to use as a foundation for the chat server had never been used in a production environment. But they got it all working and it runs fine.
Opzi uses Node.js to run our real-time endpoint and live notifications system, been working well so far. Running server + client side JS seems to be one of the niftier aspects of working with Node.js.
It is unfortunate that the "director of platform at Yammer" does not understand what Ruby is. Ruby is a programming language and Node.js is a system written in Javascript. It is useless to compare Node.js to Ruby. There is a similar system to Node.js in Ruby, it's called Event Machine. The official Node.js about page states "Node is similar in design to and influenced by systems like Ruby's Event Machine or Python's Twisted."