Ryan Dahl - History of Node.js

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

Now I understand Node.js much better seeing where Ryan is coming from.

👍︎︎ 1 👤︎︎ u/marcfasel 📅︎︎ Nov 30 2011 🗫︎ replies

I love node, having been using it recently. But I wish Ryan was a better speaker...listening to him is like nails on a board sometimes...

👍︎︎ 1 👤︎︎ u/reflectiveSingleton 📅︎︎ Nov 30 2011 🗫︎ replies
Captions
uh if you have any questions well assuming that I'll be able to hear you anyway can you guys hear me raise your hands yes okay great and the latency is good okay anyway so my name is Ryan Dolph I am the creator know I started node back in 2009 early 2009 now I'm an engineer at Giant and I manage the project so it basically making releases and telling people what sort of bugs to fix so let's see how does this thing start well so originally I'm not a computer scientist by by training I started out as a math student and I was in a ph.d program trying to become a math professor for 4 mini for a long time wait hold on a second see if I can make this better ok yeah yeah so so I was a I was a math student in upstate New York in Rochester New York and kind of toiling away at a out of PhD in in algebraic topology when you know three years into into my PhD yeah I decided you know the am I doing here like it seems like the this is like I got kind of a weird thing to be sitting here spending your life doing I mean you you really sit in a room and just kind of write on on a pad of paper all day long and try to do math which is fun it's interesting you know it's like solving puzzles and stuff it's a lot like programming but with the pad of paper not a computer but kind of at the end of the day you're you're just kind of like what am i doing like I have no idea what I what I'm doing with my life like you're just working on all this this kind of nonsense very much like programs but programming you you can at least uh you know show your mom the website that you made at the end of the day and you know there's there's something people can relate to math is not like that nobody can relate to it so Rowley I dropped out and I bought a one-way ticket to South America and had winter with with very little money and what was a bit surprising was it was summer in the US I mean I should have thought of this like like I am I am aware that there are Emma spheres and it's not summer everywhere but I went there it was cold and it was it was a bit surprising to me and I only had a very small amount of money like a thousand dollars or something and basically had nowhere to stay and and just found a small apartment with some students and moved in with them it was cold and it was a long cold winter in July which which surprised me and so I started trying to figure out how I could you know hey first stuff like because I had no money left and so I I tried to get a job and doing teaching English because you know if you're if you're in Chile in teaching English seems too good job but that didn't turn out so well instead I met a programmer another American that was hanging out there and he was doing PHP websites and so I thought it would well sure I I can help you do that of course I had been doing some programming and in university experiments and and whatnot so great it wasn't rude but idea of like programming for work and doing web base this was somewhat net so so that's that's how I got started uh I got started doing a you know very basic PHP websites at this time this was 2006 or something they rails was starting to get popular and I got very interested in excited about rails unfortunately I only ever built one website with this stuff my career as a web developer wasn't very long I was very excited about building websites but very quickly realized that these websites you were pretty slow and would like just keep my computer's CPU is hot like all the time which was a little bit strange to me and and so I you know you go digging and you try to figure out what's going on and there was a lot of people who were doing trying to make rails better with time and there was a project called work where they were trying to redo the basically make real better make rails faster by by kind of reaaargh attacking it Murr was stupid they never got anywhere but for a long time this wasn't clear right it wasn't it wasn't totally clear that that their problem with rails why it was so slow wasn't that you know they were doing something good in the Ruby code it was it was Ruby itself actually and it was kind of the entire step but very far down like all of the assumptions that rails made were based on lies and they can't make it fast it's it's it's not really possible I mean of course you can make real spats right and you can cache it you can you can load balance it you can do all sorts of stuff I mean you can you can serve Twitter it but that's not that's not right what what was really concerning the concerning thing is how you can serve a dynamic page from rails how fast does a new dynamic page serve so back to the story um so also I hope this is not boring guys probably you can ask technical problem technical things later it's going to relax her okay so um so yeah let's see so what happened um well there was this guy there was a couple of people doing this stuff right so there was Azra who ran the murder project and there was this white hats guy who's who's very famous now working on the rails project and a lot of other people kind of involved in the scene of of trying to make rails faster there was that Shah who was working on long rope which was was really a inspirational project right I mean this was kind of the first time that you could throw together a web server as if it were were just a library right it was it was extremely trivial to set it up before that I mean yeah I guess there was girl and some other things but I don't know I feel like mom will really really changed the scene when people started conceptualizing web server in a different way they weren't before this a web server was a directory with a document root and you put files there and like sometimes they are CGI scripts times they are PHP files but you had to have like you know each file and to have like a special extension and based on that extension Apaches going to go look at it and decide what to do with it and you know all the files a network where where the files you're injured on your website somehow it was extremely tied to the file system and I feel like until longer lit it wasn't clear at least to me that that like the web a web server could be anything different I thought a web server was a factory of files and longer was mongrel page that it was it was a livery and what does a web server do it's not a directory of files it's it's it's a way to respond to requests you get a request coming in and you respond to it and there's nothing else involved if you want to serve files well that's that's you have to go look in the disk and load up that file and send it back to the server that didn't just that wasn't part of the web server necessarily so rails had this problem which was that for every request coming into the server they did a big log they said ok until this request complete like request comes in and until this this this responsive made or with this request we're not going to do anything else like nothing where we are shutting down operations until until the response cost and a lot of people recognize this s as the major problem with rails it at zero concurrency they put Endel exactly one concurrent client and so we recognize this and and spend a lot of time trying to get away from from the request lock that that rails was doing but it turned out that problem was deeper than because Ruby's threading help was was so horribly so deeply it's so so broke and and add that it didn't even matter if you could run multiple Ruby threads and noble Quest had time because in the end Ruby actually is a single-threaded program it is it it can only want run one thing at a time it has a lock around all of its thread so so you have actually don't get anything I and I mean Ruby as ruby is not every other programming language but Ruby and Python I mean they they do not get away with parallel execution the end they can't execute you know - it's a it at the same time so all the work that merge did kind of get rid of the rails recluses lock around every request really didn't buy them anything because there was a deeper inside the interpreter well so about this time of ajax was declared and people started doing interesting things with websites um they you could you could do things out be loading the website which was which was exciting and the most exciting thing to me was that people started uploading files to web servers previously this this you've been upload a file over HTTP HTTP is about serving fiber types right it's there there's no concept of uploading files to a web server higher to 2005 what you did was to you could you could upload a file from via FTP which which made sense it was the vibe Transfer Protocol and you could upload very small files via HTTP but it was it didn't work like your whole your whole of the page that you're uploading to you're like doing a post and but the whole thing freezes up while uploading so so it wasn't reasonable to upload a movie to a website these days it seems totally normal the key difference that was needed was the ability it says some how would they observe what is going on on their upload right an upload progress bar do you guys how upload progress bars are lament probably raise your hand if you do yes kind of yeah so I was I saw this demo I think I saw it first flicker where you would like up Oh upload upload image and it showed you a proc RS oh holy what are you guys doing like hell how did that work how did you guys just show me a progress bar while I'm uploading this thing because so very well that the Dom does not give you any information about how much of the belly upload so how exactly is it at the website showing you know this progressive barge anyhow try to upload it so here's how it works when you're when you start uploading a file at least this is how the original and sparked what you would start the upload but at the same time you would make little Ajax requests the web server you think how much have I uploaded how much have I uploaded how much have I uplifted how much have I uploaded like every second and most web servers had no quite yet how to pickle this request but long group was pretty cool it could actually there was a early plugin I by techno meanie I think who did did this so your your Europe actually upload the file to the web server just writing it to disk and every once in a while you would do you would make an AJAX request to a certain URL and it would check that file and see how how much has been up and return that information to the user and then script you could update the progress bar I mean this was amazing this this was this was very cool technology I mean suddenly websites are interactive suddenly you can upload things like this changes everything right like before this year you needed to write a custom app GUI application to upload file and it was kind of so I would say that note stems primarily from trying to solve the upload progress of our problem I was faceted and I wanted to know every possible way of doing this how it could be done the best and originally this was all with it I wanted to find every way you would do this and there was a couple of ways you could do things where you would have a little hidden iframe and the iframe would would load a certain URL and you would send little script tappings back like a kind of a progressive page that was then blow very slowly and a little script tag every once in a while would would come in and with those script tags you could you could upload this progress you could you could adjust the progress bar um you could do the Ajax thing where you're hitting the server with these requests every once in a while that was also possible um but then there was this new technique which was long polling which is a little different than hitting the server with an ajax request all the time rather you would hit it and if not they had been loaded like if the file hadn't changed size or hadn't changed enough and it wouldn't return immediately which was great because back with mongrel and and Mervyn stop hitting the hitting the server with with another Ajax request was was was heavy I mean you're you're you're really consuming massive resources to service a request like that so so long polling was was was very interesting like how could the server not respond to to something hey wrong polling and and kind of doing this this progressive script tags in a nice frame or the same like as as the server but in Tibet you would reply right the server the server had some concept of what was happening to it and that's what I wanted to do that's that's what that's what I wanted a web server that was optimized for its behavior and I went through any iterations of this first with mongrel and then I started my own Ruby sir project which was called AB um and if this BB but I I just couldn't make it fast it was it was a very ruby is just a very slow language like you would run these benchmarks and she would just notice like yes so I mean it was like happen C and happen Ruby and every time I added a line of Ruby the web server would get five percent slower and be like oh alright well put that line of Ruby back in the seat and it would get five percent faster be like okay great but research you realize like the help like Ruby is is really uh really screwing up my operation here like like what am I getting out of this okay I get this really beautiful link but I mean this is this gleamin sorry so so I abandoned the movie much to my dismay because I think it is I still believe it is the most beautiful syntax of of any programming language and I looked around for for other options so I tried to make this web server but just lien see yeah you know maybe people just write their little web progress bar no the surfers diet this operation is a lot of stuff maybe they can just do that in C and it's going to be super nice and we're fast but you know nobody nobody was very interested in this I did this but you know you can you can't excite about this library it's just it's to grow it's true it's true to strange it's too unfamiliar to the average web developer so I realized that it did some sort of high level language if I was you know if I was actually going to get real users using this and I looked around and I spent some time with Todd and I spent some time with you uh and I spent some time with Haskell and in each of these basically trying to do the same thing I want to present the server I want to present the user with this with this non-blocking sort of system I invited by this time it was that was the concept what if we could go completely non-blocking what if we could put everybody into a single thread does that make it easier can they can they handle that because if we can and we can avoid all these issues that you have with dynamic languages where they have global interpreter lock you can put it all in one thread that doesn't matter you're not relying on the interpreter to be super super good at concurrency all you're doing is making sure that you can handle handle function calls very well and I think around January of 2000 like it just like I was sing with my friend and I just had this idea like oh JavaScript JavaScript like what it was it was like so perfectly clear at that moment that like like oh my god this is the link like I mean I'm surprised now like nobody else was what seeing this this this thing as it was like in 2008 because I mean by 2008 there was already a lot of interest in JavaScript there were already little JavaScript community springing up v8 was released in December 2000 it was clear at that point that these companies Google and Apple and Microsoft and Mozilla were going to be having an arms race for for JavaScript importance it was realized that this was actually the crucial thing and to me it was perfectly clear that this was how you could build really cool web applicants interactive web applications because you have the right features you had anonymous functions you had you closures and I think the most important about about javascript which is I'm really absorb it it's just that if nobody used it it didn't have any preconceived notions of what it meant to be a server-side code there was no way to open a file there was no way to open have a web server there was no there is no libraries to do these things and that was great because if there was they would have them wrong and if they did them wrong then then the system would have been screwed in a non-blocking system as soon as you introduce a single blocking component in the whole the whole system's screwed right these seven threads have a way to deal with this blocking components of the system then that's broken but what was beautiful about javascript was it was pure it was only functions it was only addition like when I when I got the v8 library what does v8 me functions math and no phase but nothing nothing about opening sockets nothing about opening files I think about anything related to the operating system and so that was um so so so with that I by this time I was doing a bit of contract work I was living in living in Germany this was a couple years after I had to South America and as I was working earlier in Jakarta just kind of doing the little contracts little I did like a little engine X module and kind of specializing in and making little non-blocking servers though I mean these things kind of hand in hand with with what I was trying to do my job which was you know make servers but less painfully um so so I quit my my work and I worked on node for six months basically straight it was completely convinced that this would be a thing and you know wrote very nicely to the j/s comp people and and begged them to give me a slot at where I could present it at j/s coffee you and I did that at in November 2009 and the the conference was was what I mean I had been to conferences before but not as a speaker not not to programming conferences as as you know as somebody who was presenting something and I was extremely scared presenting this thing that I've been working on for four six months I remember I went up there with my with my crappy Lenox laptop and try to plug into the sound system and there's there's 300 people there like expecting expectedly waiting for me to do something and of course you know the video drivers did not with the projector and I was like oh my god what's going on and so we switched out the laptop the last minute with the Macintosh and of course that work but I was all thrown up and and they're just like whatever whatever we only meantime go and then just suddenly like like I had to speak it was really scary I gave that talk it was an hour long I think these days people try to keep their talks down to like you know 30 minutes or something like Jays cough doesn't have the alum talks anymore but it this was an hour-long talk and so I was just up there you know just blindly blabbering about about this this this crap that I was thinking about and had been working on and just the whole time thinking oh my god what am I doing here like I I have to out of this is going terrible like like obviously I'm a crackpot and no I'm I've got my like stupid joke that like doesn't even work and I'm just well what if I just walked out of this room I'm in Berlin like what if I just walk out of this room walked out to the train station get on trans leap I'm like you know I don't even know these people like like it wouldn't be so bad I can just go back home and it will be okay this talk turned so what was great was I had prepared a demo before end of a little IRC server in JavaScript and like with how my left I had I had it running on a on a server somewhere and amazingly this demo worked I mean this was like the crappiest demo ever it could have blown up at any second and like amazingly during this conference I like was able to connect to it with the foreign laptop run it on there and have people connect over you know the shitty conference Wi-Fi to to my server running you know this very very early version of node and connect on IRC with their IRC clients and people were just like astonished no holy and you know I put up the code and it's 400 lines of of JavaScript and I mean this could have gone so bad could have been like yeah well it's supposed to work but it doesn't you know you can imagine it being an IRC server but when you actually are here in like the year 2009 and nectar or IRC server and you're like adding with other people and then somebody's like this thing's written in JavaScript 400 lines of JavaScript you're like and you're like at the first JavaScript conference ever in your you're kind of like little fanboy you know you're into you're in the JavaScript but you know it's kind of the odd language out you know most people are doing B and Python and stuff and this is just not this is not considered like a real language and you know suddenly there's a there's an IRC server they connected to and you're like well holy there's plenty of people in here chatting like this was this was a dumb I am I'm very glad that it worked so so the talk actually went really well although I as I said I was I was late might end up time so yeah as I said I had taken six months off to do this initial mo I mean it was it wasn't work I was basically out of money by the end of the six months and so I I was like alright well no either I'm going to stop this project and just go do something else or enjoy pointing to try to find funding for it and so I talked to a lot of people after the conference people were very excited about it and so I talked to a lot of different companies and and many people were interested in sponsoring this project in some hat but then you know didn't want to you know they said okay well you can do this in your twenty percent time or you know you can do this but this is going to be our product and you know you're you know it's work we're going to sell this thing in some way and you know it didn't seem right you know it's it's this open sort project but you know talking to a joint which was one of these companies they based Institute of a reasonable story like them know we're building these data center things and which seems like a good system for us to build this we really like server-side JavaScript you know can can we use node to build our data center so software on this it was like well you know if you're stupid you can obviously it's not working right they're like no no come and work on it please just come and work on and what we're going to do is we're going to sell hosting you know maybe we can do a node hosting thing maybe we can just build our data center but you know like this the server-side JavaScript stuff and let's let's see where we can take it and so hope so I'm I moved out to San Francisco to work edge go in and have been here for a year and a half working on notable time which is great so these days notice no is a big there's there's let's see an unknown core currently we we have a full and people working on it so so there's there's in and there's Isaac he's the author of NPM and there's Bert then they're two guys in the Netherlands and there's a guy at my her self-assigned you know x plus with the windows port so it's it's a good-sized project or for an open-source project that's that's you know not making any money we're a nice team but you know it's it's very exciting because there's a lot of different people who are building websites with it and startups who are using this as as their platform so sorry it's a lot of fun okay well sorry you guys are the first people to ever hear the history of note so there you go uh do you have any questions I talk about anything I just I thought a technical presentation might be fun yes you like what up here otherwise it can yeah so I have two questions one what is 1.0 of note going to look like different from how it is now and two what are the most common objections you hear two people adopting it and and are there valid objections to using note as a web application server replacement okay did could you guys hear that this question is your hand if you could hear those questions okay so what this is one point on the flight well definitely Windows support we've been working on for a long time and it's getting there and you know well we're going to have our first stable release of Windows in the near future like in a couple weeks now so windows compatibility is definitely one of the components of 1.0 another component it's unclear let me just say that we don't have like a strict guideline of what's of what exactly 1.0 is going to be hold on a second let me turn the light so there's some other things so so one thing is debugging there's a lot of things in v8 that allow people to examine their programs and see what's going on and at the moment for the most part they're not exposed you know so for example the it has a debugger we kind of have a little command-line debugger in node but it doesn't really work so what it's kind of crappy I would like to improve that there's a profiler in the I would like to expose that allow them to see you know which JavaScript functions are hot that would be nice you know that but we have office hours here in San Francisco one week and people are always coming in with with their websites that which what's wrong and we can usually answer these questions but we have to we have to do some trickery it would be nice to kind of this as exposed as a really easy way to figure out what's what what are the hot paths in your in your program there's also a heap profiler NVA all of this is they are right it is their in from we would like to expose that we would like to be able to take snapshots of the heap and do dips between snapshots so that you can search for memory leaks all this stuff is there it's to be exposed to the users in in a decent way so those are that will probably be the main the main effort after the window to stable release in the next couple weeks it's is improving improving the debug ability of of note programs um there is some other ideas on the table as well one of the new ideas is called domains which let me set it up this way sometimes so there's there's this I feel and he he has a web server where people upload large movies to it as written EndNote and so these uploads been taken a long time like an hour or something and so he's got his you know he's got a distributed system he's got many notes but each node handles multiple uploads right it would be ridiculous for one node to handle each be job load so you know he's got you know tens of uploads on each node device its node process um but occasionally he it's an uncaught exception and the note the note process goes obviously this is a bug in his coat he knows that he's not blaming anybody about that but at the same time he is not really happy with the fact that you know the 20 loads that work in progress being uploaded to the server all go down he wants the ability to trap that exception and tear down a single download instead of the entire the entire process with all of its connections and so we've been throwing around ideas about this and the the newest idea is is something called domme paint which which we put some some work on and domains is a a a way of grouping IO into into a group it's a group so now if you get a connection to a web server that connection goes into a new domain and if that connection call back then starts a timer that timer also goes into it into this this.look domain and you know if you then make a connection to the web server to the database or something then now you have like like it dies in in this domain and if something goes wrong in this in this side the the key property of the domain is that you can tear it all down you can say all right all of those things that I don't know what's going on but something wrong with those guys we're going to close all of it we're never going to get a call back we're never going to get the timer call back we'll never get the database call back we'll never get anything we don't know what's going on but all those guys go away now so that is what a domain do up and so the the idea is that you know if you're having an upload to create a domain for the up and if something ended up going wrong with one of those uploads right down without destroying everybody else unclear how that will go it's a new idea so we're so depending on you know kind of the experimental part in that area will what version 1.0 might be very simple might just be windows plus better debugging or it might be you know windows plus better debugging plus domains unclear yet with domains uh we I think we can address a larger problems face than we are currently which would be nice ok and now I've got this important it was what the biggest objections are to adopting note and oh yeah I think any of those are valid oh yeah so um biggest objections to note well you know people originally really disliked the whole all that super they were like and can't do this like this is not into work there's a reason why all of our programming languages are blocking and it's because you can't write programs like this that perception and has largely gone away we have a lot of people writing note programs now and a lot of people find this style programming as to myself as do I a better and more it's easier to think about especially with with things where you know servers where there's lots of things happening right very many asynchronous things happening obviously for her very synchronous tasks it becomes painful know if you are writing a batch script for a server and it's just doing one thing after another after another then callbacks become pretty painful we're not addressing that problem space our problem is writing network servers easily and so I think that that that is probably the major complaint but largely people are not not addressing that anymore not not talking about that so much anymore another complaint has to do with immaturity of the project I mean it's it's new there's bugs you uhit seg faults occasionally but that's also getting better and people are feeling a lot more comfortable with with node running it on port 80 and you know doing just just kind of treating it as a normal piece of software rather than a totally new piece of software you know there's there's kind of a set method of publishing a module and laying out your your modules and how you design your projects and stuff and that was unclear for a while and people complained about it they're like how can i you know in Ruby it's like clear how I do this stuff how do I do it in note like well I don't know but now we we've kind of figured that out so I mean that's around a bit so I mean we still have bugs and we're we're less stable and Java obviously but you know that will change with time where we're only two years old here there there are other complaints about [Music] so so basically the the two things that I brought up of like things that need to address for one you know are our major complaints one is that debugging these these systems are is difficult especially because you're kind of always destroying your step you don't really have in in threaded programs you often have a big stack that says okay you know I was here in here in here in here in here and you can see where you were when you get an exception in node you don't have that so much because you're always you're always going back to the event do you understand when I do this it's the steps so you know it's good to have like hand signals for all sorts of programming things like steps or this and load balancers are and to do it like this and and like people connecting to a web server is like fingers going like this and also hand and also you have to have like some sound effects with this right like if people are hitting your web server like crazy like static right you have to imagine that's happening because otherwise you know you don't have the sound effect when you're programming you get a little confused because it's real quick okay so yeah the other so one complaint is debug ability and hopefully we'll be able to address that the other complaint which i think is pretty valid is is this upload problem and i think it manifests itself in many ways and this this is really where we're airline is a superior system you can in airline you have these really cheap ways of sanctioning off bits of your bits of your server and that's nice if you know you have some some method of preventing your whole server from from going down I also hope that we best that problem we addressed it somewhat by saying you know just start a new process and that's that that does prevent you you know if you start a child if you have a your note process and start a child process and handle all of your logic in that child process that's fine if that guy blows up then you'll be able to survive but you know starting a child process it's pretty heavy it's like 30 milliseconds start a new note process and that's that's just a bit too heavy for for doing it for every request what you really want is something that's super cheap and can sanction off a bit of your program and and kind of prevent you from from doing faults so at the moment we have a lot of notice is somewhat unforgiving right if you hit an exception you're going down you're going down and you're taking connections with it so hopefully hopefully we can we can do a bit better but that other question so I had a question about multiple processes yeah what should I take into consideration besides you know starting up VA when I'm starting multiple processes like what are the bottlenecks there and also is there going to be anything in core that's going to help us communicate across processes so that we're not like serializing deserializing in in JavaScript yeah so so starting local processes is is going to become easier in n06 there's a new there's a new function called child process cork which starts a new node process and opens a channel between it where you can send objects like little chase sound objects back and forth because this is a common thing you know not only do you want to start like a little shell out to LS or whatever you want to shell out to note and talk to that other note so yeah we're adding a little convenience function to to start new node processes the thing to remember with these guys as I said is is that they're they're somewhat expensive right there it takes takes something like 43 milliseconds to start note on a on a modern hardware um 43 milliseconds is a good amount of time it's it's enough that you know you can notice it as a person and so it's not really acceptable to be starting a new process for if you're if you're writing a very very tiny web server that's doing really small amount of stuff and you're responding in less than a millisecond you don't really want to add 40 milliseconds to that to start a new process for each for each request additionally you put a lot of strain on the scheduler if you if you start having you know hundreds or thousands of processes so these these processes are really meant as meant to not handle a single connection but are meant to handle many connections so when you start eight of them right because you have eight cores or however however many cores you have it you can load balanced your traffic across them but each of these processes is meant to handle hundreds of connections at a time and not just one so so the I guess the thing to remember about these guys is that they're somewhat heavy they're there they're heavy they're they they take 40 milliseconds to start they take 13 megabytes of memory initially at minimum there they're not they're not super cheap to start unlike a connection in a note which takes one kilobyte of memory and starts in you know almost zero zero measurable time I mean it's very very fast so so that's not going to change and also when you talk between these processes the data has to be serialized so we're going to have convenience methods for sending JSON between these these processes but still your your serializing data there's there's no magic way of taking an object from one process and giving it to another process and not have it go through a pipe of some sort somehow it has to somehow it has to get over there and the VA keeps are never going to be shared that's that's way too magical so so what we hope is that you know we can we can get away with with kind of cheaper constructions cheaper cheaper ways of kind of making a process like object but that that is that is cheaper one way of doing this is with VA contexts where the where the time for those guys is something like 1.5 milliseconds so a lot cheaper but also you know 1.5 milliseconds still is pretty heavy you know if you're if you're already responding sub-millisecond so you know you don't really want to add 200% just to just to have some fault tolerance there so that's that's kind of where these domains come in again like this this is the the cheapest possible form of a kind of sanctioning off stuff and and in domains they're they're very ephemeral they're they're they're nothing really and you can share objects between them so yeah so multi-process stuff is going to get easier to do in in the future so so a lot of this stuff that is in the clustered library where you kind of you can start multiple processes and load balancer cross them probably that sort of functionality will come into court another question alright this is Tony I don't think you've ever seen me yet so um so like I've seen I work at an agency and I've seen now companies like LinkedIn adopting no what would you say are some of the best ways to try to convince clients in an agency environment that node is the way to go never so good at answering I never know the right way to enter this question because you're always always kind of talking to somebody who's who's non-technical and you can't really describe to them that the awesomeness that it is to work in a non-blocking environment um I I think the best way to do that is pulling up some of the examples of big companies that that are adopting you know if you really have to go to your and and convinced them to use note and you're like yeah this is going to be a really good thing for project you know we're going to be able to move really fast and and it's awesome and yada yada yada you know pull up pull up the the press release about Microsoft contributing to it pull up the press release about LinkedIn using it pull up the you know one of the vice presidents of Yahoo talking about note I think these these sort of points of reference help in making case per for using a new framework like note thank you and I'm hoping all the owners of businesses are listening to that right now all right this is Oulu and uh pre question for you um how long have you been developing writing applications programming whatnot um I've been programming Burt for a long time since I don't know fifteen years or something but I've only started doing web stuff for the last five years a lot of us here like different stages in our careers or not even programming yeah what what are the three tips you could give a developer today like what what are the t-33 top lessons you've learned as a programmer um okay all right so three okay well I have to think I'm not very prepared for this I mean think so I I would say the number one thing is to be curious and when you have a question and you don't know how something works follow through with it find out what's going on there like don't don't be discouraged and don't be frightened from seemingly technical you know to technical things I mean always at some point you know you go lower in the stack and you realize you know Jesus Christ I'm out of my league here it always happens nobody understands the computer like that that is that this this Macintosh that that I have here is it's too much technology for one person to understand so I mean you can never you can never understand everything but you should push yourself to go deep into the system and and you should push yourself to understand what what the bugs what is causing the problem - you're seeing and you should push yourself - to understand the system as well as you can I think that if you're in school or you're you're thinking of being in school you should study Electrical Engineering and nothing else no matter what you want to do in your life i I I studied mathematics and I regret it every day it's a there's nothing like a degree in electrical engineering they will they will push you and you know cut your skin off and throw salt on you and you I think knowing pain is is very important to to being a good programmer right you you just need to know what agony is and if you get a degree in electrical engineering you'll you will know agony probably probably a good computer science program is as good as well I think it's important to have your own projects so that was number one number two I think is important to make your own investigations and do your own projects and work I mean it's really nice open source landscape right now I mean you can contribute to everything you should you should work on stuff all the time and with that I think people should be very courteous I think I think that's an important part of being a good developer is not being an like the way what I I think when I was fifteen I thought I was hot because I could write you know a good ohm application and and published on the internet and just thought I'd like the program on earth but I mean you just realize after time and time again that that Jesus Christ I mean there are smart people in the world and you know you're just never you are never watched it never ever ever like nobody is hot everybody is is supported in to somebody else and just I think I don't know I I hang out in the note IRC channel a lot and and there's a lot of teenagers there that you know get testosterone II occasionally and and I just don't think that that is is good for people okay and number three is a that's all I am sorry I don't know thanks I actually have another question um a lot of time when I try to talk people into note or show people note or JavaScript this is take on arm oh it's JavaScript you know like javascript is not cool enough it's not flexible enough I still had to talk here briefly with a friend of mine and like there's this um regarding CoffeeScript I'm sure you've heard a lot about CoffeeScript what what's your take on uh it looks really cool um I I mean I wish I wish CoffeeScript was JavaScript I did not I'm not a particularly huge fan of JavaScript I mean it's it works it's simple it's it's it's a decent language and forth for my task of writing simple network servers it works really really well like I said before I mean I I really like Ruby it's just too bad the interpreter is such total otherwise you know we could actually use it for real programs because it's it's a beautiful language I would like to use CoffeeScript as well but this point in its life cycle which is nothing against CoffeeScript it's just very young it adds another layer of complexity and and at least for myself working with already you know very unstable software I don't I can't introduce another piece of of that just just for just for the syntax probably in a few years that's going to change and and CoffeeScript will be you know very well supported and when you debug it you'll get the right line numbers and you know node will be stable and you can just kind of rely up on this this infrastructure a bit better but at the moment I like I said absolutely nothing against it I think it's great it's just for my taste and I think for people who are trying to finish a project on time you know if you're already working with node you know we be reasonable don't don't don't introduce too much unstable listen into your world I just wanted to say that I just got into node like a month ago and this is amazing so thanks I have three questions all ask one at a time unless someone else wants to ask you've talked a lot about the windows stable release is there any word from kind of inside knowledge if it's going to be on Azure um is this recorded yeah I didn't know there's there's no inside knowledge sorry I can't I can't talk about that um I don't see that so so there there is um there recently there was a project announced called a is node which is a binding to IAS which allows note run behind the Microsoft web server and uh we're getting more in into the Microsoft step but I can't talk about what what's happening in the future with the Sun all right well thanks anyways um my next question was what do you how do you feel about the few bits of information we've had on dark tour - Google's new JavaScript replacement oh yeah I haven't read so much about it uh but I don't know Lars Lars is a smart dude so so no I don't take the news lightly I mean you know a lot of people announce programming languages but but this guy knows how to how how to put together a VM I mean bas is a master piece of software so so it will be extremely interesting to see what that entails I assume that it's going to be running on the Native Client stuff in Chrome and I think in general the idea of Native Client is extremely cool and is going to be a big thing in the future who knows I mean we'll see if it actually takes off or not I mean we we still need to get Microsoft in and Mozilla and Apple to to kind of come on board with with their own versions of Native Client but the idea of actually shipping LLVM byte code to as a web site I mean this is really cool and this this can be a big game changer and so what I think they're like I said I haven't read so much about this maybe maybe you guys know but I kind of assumed that they have written their VM in targeting the the Native Client does anybody know yeah I don't know either so I guess we'll find out in a couple weeks all right well my third question was do you build any platy software on top of node like a node server and if you do what packages do you use like what's your stack uh yeah I mean I Joanne we we use a node a lot and we've got dozens of node servers running around our stack and I have worked on a couple of them so for example we have a DHCP server written in note and we have an LDAP server written in node and we have several websites written in node and our websites typically use Express and and yeah well I mean we're kind of boring from that perspective I think generally we're using our our own modules but we do use Express okay thank you yeah
Info
Channel: phxtagsoup
Views: 74,944
Rating: undefined out of 5
Keywords: Ryan Dahl, Node.js, Node, Javascript, Server Side, Development
Id: SAc0vQCC6UQ
Channel Id: undefined
Length: 63min 41sec (3821 seconds)
Published: Wed Oct 05 2011
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.