

Node.js Interview: 4 Questions with Creator Ryan Dahl - kmccarth
http://bostinnovation.com/2011/01/31/node-js-interview-4-questions-with-creator-ryan-dahl/

======
silentbicycle
My first question is "why not coroutines?!"

I _love_ Lua (IMHO, Lua is Javascript, if JS hadn't spent its formative years
huffing glue). I get where he's coming from with the "most libraries are
blocking" bit, because hey, most libraries _ARE_ blocking -- making a fully
event-loop-centric system really is a niche case. If you want to focus on that
100%, cool, _use Erlang_ , damn it. They did it right! Failing that, make a
clear point of running "non-async" code externally and message-passing.

But I _really_ don't see the point of deluding JS programmers into writing
hand-written-CPS "to be asynchronous". I wish they knew better. See e.g.
<http://news.ycombinator.com/item?id=2150800>

------
mjs
The two most interesting points for me:

* JavaScript wasn't the original language choice: he originally tried C, Lua and Haskell. He especially liked Lua but "it already had a lot of libraries written with blocking code."

* He regrets using the CommonJS module system. ("Far too complex and wildly different from how the browser works.")

~~~
requinot59
_> He especially liked Lua _

Well, not as much as Haskell : _"Haskell is pretty ideal but I’m not smart
enough to hack the GHC. Lua is_ less ideal _but a lovely language [...]"_ (at
the beginning of the 2nd answer.)

 _> He regrets using the CommonJS module system_

Yes, and this is pretty interesting. Also, he regrets using WAF as the build
system ( _"it introduces more WTFs than necessary"_.)

I have a great respect for Ryan Dahl. He is not orthodox. He is not a blind
parrot.

~~~
mjs
Heh, I got the impression that he tried harder to get Lua working, partly
because he felt is was a more pragmatic choice, but I take your point.

~~~
requinot59
And I do take yours. The fact than Node is actually using Javascript, which is
more similar to Lua than to Haskell, makes your impression very sensible ;-)

