 Welcome back to Node Summit Live from San Francisco, California. I'm John Furrier, the founder of SiliconANGLE.com and SiliconANGLE.tv, and this is theCUBE, our flagship telecast where we go out to the events, live stream and talk to the smartest people we can find, entrepreneurs, thought leaders, executives, venture capitalists, and extract the knowledge and share that with you. And I'm joining with Clint Finley, the editor of DevOps Angle, which we launched today. And we're here at Node Summit, the inaugural conference for Node.js. And we try to talk to the smart people and sometimes we get the inventors. And we're here with Ryan Dahl, the inventor of Node.js. Ryan, welcome to theCUBE. Hello. Hi. Okay, so we've interviewed Doug Cutting in the past, inventor of creator of Hadoop. You created Node.js. Obviously, huge success. We had a chance to talk on Monday night at the Thirsty Bear and tell some of the story, but really want to say just congratulations for just doing some great work and it's evolved into its own budding ecosystem and industry. So I want to first say congratulations. Thanks. So tell us the story of Node.js. Why did it all came together for you? Just for us, tell the folks kind of how it all started and take us through the life of how it all began. What problem were you trying to solve originally? So I guess the original, original problem was a long time ago when people were trying to figure out how to do uploads via HGP. And it used to be that if you uploaded a file, you would kind of post to the form and it would just kind of freeze up on you. You wouldn't gain interaction. Maybe at best you get a little spinny dial or something. But these days you get a progress bar that kind of says how much you're uploading. And at some point I would guess 2006 or so. I saw a demo in probably Flickr, although I can't remember exactly, where they actually showed this. You would post an image and you saw the progress bar going and it's just like blown away. Like, oh my God, how do they do that? And you would think like, oh, the web browser obviously is sending a file via some socket to some server. The web browser obviously knows how much of the file has been sent. So it's exposed by the DOM. But it's actually not exposed client side to the user. The way that these progress bars are, is that as you're uploading a file, you reach around on the side and ask the server, how much have I uploaded? How much have I uploaded? And the server responds, okay, 3%, 5%. And so in this way the user can kind of see how the progress bar is going, how the upload is going. Solving this problem, doing this sort of thing in the web stacks that were around at the time is difficult because it requires handling multiple requests at the same time, right? Somebody's uploading this file that could be going on for several minutes and at the same time you have this extra request coming in that needs to respond concurrently to the upload. Turns out that a lot of the frameworks were designed in a way that they made the assumption that a request response is something that kind of happens instantaneously and that your entire web development experience should be abstracted in as a function that you get a request and you return a response and that is the extent of your context. So Node was originally born out of this problem in thinking about this and how can you handle these two things at the same time and obviously there's many different ways of doing this but non-blocking sockets is one way. And so Node is more or less the idea that exploring the idea of what if everything was non-blocking? What if you never waited for any I.O. to happen? You just use only non-blocking I.O. What falls out of that and pairing that with JavaScript? And turns out you can make a web upload progress bar with this, among other things. But it basically comes out of the, turns out a lot of problems can basically be summed up as this sort of interactive websites where you need to do more than one thing at a time whether it's a chat where one person sends a message and you broadcast it out to everybody else or if it's a game where you're moving around and you need to relay those movements to other people it's all more or less the same problem. You need a programming environment that somehow abstracts, it gives you the right abstraction for dealing with all of these different events happening. When did you see Node start to really get the lift up? And I'll see you where you're taking it around you're playing with Node doing these things you're mentioning. When did it kind of start clicking like wow, this is really going on? So in early 2009 I had this idea I was like okay, JavaScript and on blocking IO, great. Let's put those together and see if we can build something useful with it. And I worked on that for about six months, maybe a bit less, four months or so before I had like a demo that I could start using and kind of as I was developing this I built a chat application at the same time. So kind of with the framework I was building this chat thing. And after some time I just realized like wow this is like 200 lines of code and I've got this chat server and it's purely JavaScript. There's nothing other than JavaScript in here. It's just like oh wow, wow this is actually going from something, just kind of playing around with the idea, neat idea, kind of academic maybe even to something where you realize that holy crap you can actually build things in a reasonable amount of time with this. So it was a performance like at that time you're like wow this is actually fast? Yeah I mean it was good enough to handle tens of clients and have no lag basically. So good enough. Performance with Node, we spent a lot of time making sure that we're not doing anything overly stupid inside of it. So we care about performance a lot. Turns out that that original, the 10x improvement that we got by doing non-blocking I.O. That was the big choice. Since then we've been trying and trying and trying to explore other ways of doing performance but you know and we've gotten some wins here and there but more or less the performance has been the same since the original design. So what happened next? Okay you got to show people this right? You call your best buddies and say hey look at this. Right so at this time like JavaScript I think these days it's recognized as kind of a language but a couple of years ago it was not really that way. It was this weird browser thing but it was just beginning to be recognized as you know Crockford came out with this book JavaScript the Good Parts and people started thinking oh you know actually this is actually a programming language. People you could actually design programs with it. Gmail was written. You had these big complex applications being written in JavaScript and with that some sort of respect for the language. So the JSConf was created by Chris Williams in 2008 I believe and the European version of that came out in 2009 and so I wrote them and it's like oh I got this demo. I really want to show this off at your conference and they wrote back and they're like yeah yeah sure you know got me a slot there and so I finally showed it off at this European conference and it went really well. I gave the... The standing ovation wasn't there? Yeah supposedly that's what they tell me. I was extremely nervous. I mean I had been working on this thing for just like many months and I was like super nerdy about it and it's just like I had been practicing my presentation for like weeks before that. It's just like very very wanting to show off you know what I meant by this because I felt like if I started talking about non-blocking IO and blah blah blah everybody's just going to like zone out entirely. What was great was that I had a demo of a IRC server written in Node so people could connect with non web browsers just with their IRC clients and connect to the Node IRC server and start chatting which thank God I mean this demo worked because I felt like the entire talk was very philosophical and kind of abstract but then you see like oh holy shit here is an IRC server written in fucking JavaScript and it's 400 lines of code and this is something that kind of... It was mine. Yeah people are like wow that is really something new actually. Awesome. You've been doing JavaScript on the server side since the 90s so what was it about V8 and Node.js that made the difference that now people are really excited about doing JavaScript on the server side? Right so yeah as you said there's been a lot of server side JavaScript. None of them have stuck several reasons. One they kind of had this very traditional model of how you present the server to the user right? This request response you know you get a request you do a bunch of stuff then you return the response but you don't acknowledge the presence of other requests going on concurrently to you so it has this very simplified model which is fine and works but was not enough of a differentiator from Ruby on Rails and Django and PHP to really mean anything to people. It was like oh cool I could do it in JavaScript but you know I've got Rails here it works fine it's not that big of a deal to think in Ruby and in JavaScript. The other aspect was it was all in Rhino which the JavaScript interpreter on top of the JVM which is notoriously slow and it wasn't until 2008 when Chrome came out that people started realizing that oh wow companies are putting a lot of effort into improving the JavaScript performance to the degree that you had the very professional teams working on these virtual machines. So now you have in 2008 Chrome comes out with V8 and you realize oh wow okay so Google is really pushing JavaScript performance and they see this as a way of dominating the market. If they can make JavaScript faster people will start using their web browser because Gmail runs faster and suddenly Mozilla is put on edge and they have to now make their JavaScript their spider monkey, yanger monkey stuff work faster and suddenly it becomes this benchmark contest and Microsoft as well needs to now step up its game and start making this fast and then suddenly JavaScript is faster than Ruby and Python like basically overnight and so it seems like in 2008 this is a very good language to start investing in you get very good compute performance out of it. And so it was at JSConf you presented all this at JSConf here's no JS here's how it's different than the old server side stuff and that's how it took off it was just people saw it there and just went nuts with it. Yeah so as I said I had been working on this for a long time and by this conference I was basically like out of money like I could no longer afford to work on this project full time just on my own. So I went around looking for sponsors for the project so that I could continue to work on it and various people were interested in doing this and I went around and talked to a lot of people but the most promising one came from Joian who were like oh you know we build this data center software and what we want is we actually want node to be used for our data center software like we don't really have an interest in monetizing node itself but we want our software to run well and this is a perfect thing for building our own data center stuff. This sounded great to me because little programs sitting there responding to events little demons sitting around the data center doing various things sounded like a very good use case for node so I teamed up with Joian and moved to San Francisco and have been working on it full time since then and it's just been kind of a constant progression of pushing this technology since then fixing bugs and introducing it to new companies and convincing people and talking to them about it and I think we've had a fairly good linear growth for two years or so which is pretty crazy. What have you learned for the folks out there who are open source is great for a lot of innovation so what can you share with the other folks out there who are working on open source that work hard and want to do a project might have a success like a node not directly competing but you know what I'm saying like people out there working hard what can you share with them of lessons learned or things you wish you could get back and do differently or not do differently so what would you share with the folks out there working on some of these great new open source stuff? I think there's a lot of people who feel I think one thing that we've done very well in node is integrate other people into the community and just be very open about what we're working on and trying to bring people into the project so I've spent a lot of time people will contribute a patch which is not necessarily appropriate for node. Style is bad, it introduces other bugs it's really big or whatever. It's some feature that I could hammer out in a couple minutes because I'm totally familiar with the code base but I'll spend the next week going back and forth with these people saying okay fix this and fix that and then they'll give me another revision I'll say fix this and fix that and just kind of going back and forth and talking about how they could get it into the code base because when you come to a new code base when you're just a random person on the internet and you're contributing to an open source project you don't know all of the things going on in that code base right? So there's something that needs to You need to be stewardship. You need to get introduced to it and I think that a lot of projects will kind of reject these sort of contributions or not take the time to really integrate these people to it. But you know if you do this and you spend a week with somebody and get their patch in and you know make sure that they're on the authors list and everything then you have a person who now knows how the code base is going and can start contributing more. So what you're saying is spend the time embraced the people coming in who want to work and work them through it. Help people get involved and help show them how to contribute to the project. If they want to spend an hour of their time doing a patch for your project you should spend a week of your time pulling them in and hopefully you're going to get somebody who then contributes more. That's great and that's always great about communities shows your commitment and brings them socializes them into the project. Yeah I mean the community of note is really where it's at right? The runtime itself is possibly nice but you know the community modules and all of the people that we have is what's important. Okay so now this is where I put you on the spot and you could be political okay I won't be offended if you don't say any names but of all the companies here which ones are your favorite that you say not from a company standpoint but like coolness like that's a cool thing of implementation of node. Okay so the one that shocked me yesterday was TileMilk which is doing a mapping application so you can make custom Google Maps type mapping applications with data points and whatnot but you actually build these things locally on your desktop so they made a Windows application using the node port to Windows have this desktop application with node inside of it that allows you to kind of create a map and then generates this file that can then be uploaded to a server where they're hosting it also with node and display these maps so they have this great database of all these different maps that you can kind of overlay with each other and this great desktop product and it just looks amazing it's just something that I don't know I'm always amazed seeing these things just like wow I would have never thought node would be used. We actually had those guys on the cube yesterday so anyone who's watching right now you can find that interview Mapbox is the name of the company. Mapbox? I thought it was TileMilk? TileMilk is the program Mapbox is the company and yeah you can find our interview with them on Silicon Angle TV. Yeah and we also talk with Voxer too which is getting a lot of traction as well what do you think of those guys? Oh yeah so Voxer is our biggest customer so to speak because they are just pushing massive amounts of data through node. They have this big distributed system with hundreds of node instances doing voice over IP through this thing so they have this walkie-talkie app you click the button you say hey what's up blah blah blah and it gets distributed to your followers but voice it goes up through node and gets spread out and then down into React and so they're just pushing massive amounts of data through node and they're finding problems they just recently in November started really blowing up with many users and so they're finding a lot of our biggest problems at scale so they'll find seg faults way before anybody else does and so we're in close contact with Voxer they are- Quite impressive. They're driving our kind of emergency fixes. I think they're embedded in the code base now that's the greatest, we had Matt's great guy we talked to him last night too we shared some kind of inside baseball and some of the numbers which we didn't talk about in the cube we wanted to respect this privacy but very big success story, great growth there so anything that surprised you here at this conference that you go wow, not just companies just in general? Just the pure, I mean this conference was really about showcasing what's going on and making sure that it's visible to outside of the node community like the number of projects going on and I of course am in this community and I've talked to a lot of these people here but even so like sitting there in the last session here and just seeing company after company after company