Notes from Ryan Dahl's NodeConf 2012 Talk


These are my notes from a talk given by Ryan Dahl on July 9, 2012 at NodeConf 2012.

I was a Graduate student studying Algebraic Topology. For some reason I thought this was a good thing to do with my life. One interesting project that came out of this was related to point-set topology. I was interested in the fact that you had a simple topological space with all these adjectives, and all these interesting interrelationships between them.

After a few years in grad school I was getting more and more annoyed and eventually I dropped out and bought a one-way ticket to Chile with no money to my name. I got an apartment and sat down and worked on a few projects, including a website to describe the different topological spaces and the adjectives that described them, with an automated theorem-prover to fill in the gaps. I used Ruby on Rails to build this. The website was a failure, but I got into Ruby on Rails.

I later moved to Buenos Aires and met an American who gave me a project working on a snowboarding website. I was finally making money. I got really into the upload progress bar problem, which in 2006 was not really a "thing" yet. Previously, you got no feedback: you'd hit submit on a form and it would just freeze up for a while. Feedback to the user while a file was uploading was hot stuff back in 2006.

Then, I moved to Germany. I started working on web servers; I can't remember exactly why but I think it's because I saw thin. I was so impressed with how small and compact this web server was, so I made this web server called Ebb which was pretty much the same as thin. Ebb didn't go anywhere; I couldn't really deal with Ruby.

In 2008 and 2009, EngineYard contracted me to start building some stuff for them, including this nginx load balancer. They wanted to allow nginx to load balance, because when you have a load on Rails, it gets slower and slower (at least, in 2009 this was the case.) My boss at EngineYard knew that Rails couldn't handle concurrent users stacked up on it. It would continue to accept new connections, but it was only able to handle one request at a single time. Because Ruby's (MRI) threading model was so bad, somehow it would take resources away from the main request.

My next project was to build a FUSE file system on top of a DynamoDB clone. It was killed after a few weeks but the origin of the JS "comma-first" style began with how I styled the C in this project.

On february 9, I wrote on my LiveJournal that I was going to write a thin webserver tied to V8 JavaScript interpreter, write a special evented TCP library for V8, and bundle them with an HTTP wrapper. Tim Becker was the original person who put me onto V8. On March 1, I wrote an email with some simple syntax to Tim, and we wrote the original readme the same day. Tim was there in spirit, and I worked there feverishly for months on end. The first application that I built on node, and never released, was an IRC client in the web browser.

The initial announcement was in June 2009 in Cologne.

1 Comment

Did you enjoy this post? Please spread the word.