Solving the upload progress bar problem–The History of Node.js

If you would have asked me how Node.js came to be I probably would have guessed something along the lines of a Stanford research lab. That is, until I stumbled across this youtube video ‘Ryan Dahl – History of Node.js’ from a Pheonix user group back in Oct 11. I intended to watch just a few minutes, but it was really interesting and I ended up watching the whole thing. If you are into Node I recommend you check it out too.

A few points from the video:

  • Ryan was working on a math PhD (Algebraic Topology), dropped out and moved to South America with no money
  • Ryan thinks Ruby has the most beautiful syntax, but all the assumptions about it are based on lies (Ruby is f*cked because it can only run on one thread)
  • Node was heavily influenced by Zed Shaw’s Mongrel. The idea that a webserver can be just a simple lib which does request/response (not necessarily a directory of files tied to file system)
  • Node was started trying to find the best way of notifying a user, real time, about the status of file upload over the web (who would have thought?)
  • The best thing about javascript on the server is that no one had used it. No way way to open a file, open a socket etc. This is good, because if there was, they would have done it wrong
  • Ryan quit his job and worked on node for 6 mos straight convinced it was ‘a thing’. Begged for a slot at JSConf in Berlin. Blew people away with an IRC chat server written in 400 lines of JS (had to demo on a different laptop and no idea if the demo would even work)
  • Some new up-and-coming node features like Node domains
  • Ryan and his team makes finger gestures and sound effects when talking about things like latency and load balancing Winking smile
    Ryan tells a great story, and as with any great story comes great lessons. The ones that really struck home with me:
  1. Sometimes you have to quit good things in order to achieve great things
  2. The obvious solution to your problem might be right in front of your face

    12 thoughts on “Solving the upload progress bar problem–The History of Node.js”

    1. Whilst I am deeply interested in Node, the ideas of lightweight HTTP servers etc. I think the jury is still “out” on whether or not Node is a “great” thing.

      At the moment it is marketing itself entirely wrong – nobody cares about Async I/O, programmers have been doing those for years thanks to things like .NET. 

      The real advantages of Node is quick’n’dirty JavaScript application servers, embracing of the HTTP/REST/WebSocket model for application design and, as its name suggests, being truly “cloud ready” through the separation of concerns via deploying separate and network-distributed “nodular” components which mesh together to form an integrated system.

      Node is fundamentally a architectural pattern that can be applied to countless technologies. What is to stop somebody producing a NetNode or JavaNode? A mini-HTTP cloud-ready server directly paired with a JVM or CLR? Sounds good to me.

      So let us wait and see first what actually comes out of it before resorting to hype and superlatives 🙂

      1. “Whilst I am deeply interested in Node, the ideas of lightweight HTTP servers etc. I think the jury is still “out” on whether or not Node is a “great” thing.”

        I share your perspective. The post was not intended to endorse node. The superlatives in question (and this post) were regarding the story of how node came to be. The metoeric rise of the community, the most watched repo on github, the fact that a blog post now makes you a fanboy (the divide), etc. 

    2. >I probably would have guessed something along the lines of a Stanford research lab.

      And this would be why everyone mocks node fanboys.  Why on earth would you think applying an ancient technique like event driven programming to web development would come from a research lab?  Not even getting into the obvious fact that event driven programming is a terrible match for web development, it has been used for network servers for decades.

      1. You want to know who’s to blame for the wheel getting constantly reinvented in IT? It’s all the old programmers who absolutely *suck* at getting their ideas across, leaving them to be reinvented by better communicators later. Unix greybeards have a reputation for a reason.

        1. One of the best ways to get ideas across in software is by crafting good designs.  Of course, that falls on deaf ears if newcomers don’t actually study existing software (good and bad) to understand its design rationales at a deep level.

          I’m also curious what class of people you are referring to specifically as “unix greybeards”.  That stereotype, when used in the pejorative, connotes the BOFH sysadmin type, who are merely users in the Unix ecosystem, and which is a far cry from the Dennis Ritchie/Bill Joy/Richard Stallman sort of folk that actually built the software that runs much of the world.  (And whose designs and code bear studying.)

    3. Node was not by any means the first app server written in JavaScript. That would be Netscape Livewire.

    4. For the record, I like Node.js. I also like Lego. With Lego I can building something simple quickly. With Node.js I can build something simple quickly. Both are clever ideas. Of course, I would use neither for something I have to rely on.
      I also have to say that it was because of this video that I got excited when Ryan Dahl announced he was stopping down from Node.js.

    5. FYI: Norton WebSafe has your site listed as a threat.  Anybody that has Norton Internet Security Installed and gets a search return with your site in it, sees a caution flag.  More info: SafeWeb.Norton.com

    Comments are closed.