[00:01] pkrumins: how do you catch Error: ECONNREFUSED, Connection refused when doing net.createConnection? [00:01] pkrumins: trying 'error' [00:01] atmos: JimBastard: looks like you found an example ? [00:02] JimBastard: sup [00:02] pkrumins: it seems faster to write than find an example JimBastard [00:02] JimBastard: yeah i know [00:02] SvenDowideit has joined the channel [00:02] JimBastard: im just gonna do that [00:02] pkrumins: and you can then release a module of your own for it [00:02] JimBastard: meh [00:02] JimBastard: lol [00:02] pkrumins: it wasn't a joke [00:03] JimBastard: i dont want to start a project for a project im working on to enable another project to happen [00:03] JimBastard: im too many levels deep already [00:03] JimBastard: :p [00:03] pkrumins: that's the right way to write software, all modular [00:03] JimBastard: mayb ei will its a one liner [00:03] JimBastard: 7 liner [00:03] JimBastard: brb [00:07] sprsquish has joined the channel [00:07] isaacs: _ry: getting some test failures on the latest ry/master [00:07] isaacs: _ry: test-http-full-response and test-remote-module-loading [00:08] isaacs: _ry: nvm, i should read commit logs. 1ecb11f Ryan Dahl Add failing test - http responses not all complete (2 hours ago) [00:10] pkrumins: Any way to create locks in nodejs? [00:11] isaacs: JimBastard: i have a gist kicking around to do that. [00:11] isaacs: JimBastard: you want something like the unix tree command, right? [00:12] JimBastard: i think so? [00:12] JimBastard: i just want a nested object with all the dirs and files [00:12] JimBastard: was going to write shortly [00:12] isaacs: JimBastard: http://gist.github.com/377246 [00:13] JimBastard: thanks ill try it out! [00:13] isaacs: JimBastard: returns a nested object of fs.Stats objects, with a "children" array tacked onto any directories. [00:13] isaacs: JimBastard: beware, it can potentially do a LOT of stat calls. [00:13] JimBastard: yeah i think id rather just do a nested readdir [00:13] mikeal: man, allergies suck [00:14] isaacs: JimBastard: well, you still need to stat the things from readdir to know that they're directories [00:14] isaacs: JimBastard: so you end up in the same boat. tree is a lot of statting [00:14] isaacs: JimBastard: setting a max depth is left as an exercise for the reader :) [00:15] pandark_ has joined the channel [00:17] Tim_Smart has joined the channel [00:20] cloudhead: JimBastard: also have a look at this: http://gist.github.com/395526 [00:20] cloudhead: it returns a flat array [00:20] cloudhead: of all the files, with their relative paths [00:21] JimBastard: cool thanks [00:21] cloudhead: just make sure you remove the checks for .js etc [00:22] isaacs: _ry: sent to you, herby, and the list. [00:23] mikeal has joined the channel [00:23] pkrumins: this reversal of port:host is disturbing to me [00:24] pkrumins: you don't write `telnet 9000 host.com` [00:29] pkrumins: anyhow, how does one do locking in nodejs? [00:29] pkrumins: here is an example where it's needed [00:29] pkrumins: i have var vm_connection_map = {}, and when a client connects, i either lookup in it, or create a new connection and install it in the map. [00:30] pkrumins: now if 2 clients connect at the same time, this code will create two connections. [00:31] atmos: use an identifier for the client that isn't sequential ? [00:31] _ry: pkrumins: nothing happens at the same time [00:31] ryan[WIN]: nodejs is single threaded [00:32] ryan[WIN]: there is no need for locking if you are cognizant of certain things [00:32] _ry: pkrumins: that is - your logic sounds fine [00:32] ryan[WIN]: _ry, i assume that non-i/o calls in node are eval()'d [00:33] pkrumins: _ry, hmm, let me think about it. [00:33] ryan[WIN]: as in whatever event you have is processed completely before the next one is started [00:33] pkrumins: right! [00:33] ryan[WIN]: so if you have a while(1) it should hang [00:34] pkrumins: thanks guys [00:34] pkrumins: was thinking multi-threadedly :) [00:34] ryan[WIN]: pkrumins, what you're thinking about isn't wrong, perse [00:34] pkrumins: it would be wrong in a multi-threaded application. [00:35] pkrumins: but as you noted, nodejs is single-threaded. i was just thinking in wrong categories - single threaded vs. multi threaded. [00:35] charlesjolley has joined the channel [00:35] jedschmidt has joined the channel [00:49] towski has joined the channel [00:51] isaacs has joined the channel [00:55] gwoo has joined the channel [00:55] V1 has joined the channel [00:55] V1: good evening [00:56] robinduckett: wtf [00:56] robinduckett: oh i remember [00:59] towski_ has joined the channel [01:00] mikeal has joined the channel [01:17] hsuh has joined the channel [01:19] robinduckett has left the channel [01:24] charlesjolley has joined the channel [01:29] robinduckett has joined the channel [01:35] alexiskander has joined the channel [01:37] alexiskander has joined the channel [01:45] charlesjolley has joined the channel [01:50] taf2 has joined the channel [01:50] taf2: is there a DOM parser for node.js ? [01:51] taf2: ah i found: http://libxmljs.squishtech.com/ [01:52] taf2: how about the worker from html5? [01:53] taf2: maybe a child process will work? [01:55] jpld has joined the channel [01:56] technoweenie has joined the channel [01:56] aho: taf2, jquery for node: http://github.com/tmpvar/jsdom/blob/master/example/jquery/run.js [01:56] aho: there is also env.js [01:57] aho: eh never mind [01:57] aho: env is rhino [01:57] aho: :> [01:57] _ry: taf2: html parser or dom? [01:58] CIA-75: node: 03Ryan Dahl 07master * r15bb392 10/ (2 files in 2 dirs): [01:58] CIA-75: node: Disable test-remote-module-loading [01:58] CIA-75: node: In ab068db9b12a9fb8619f6a94299a8d7a35d4695b this test was broken because (I [01:58] CIA-75: node: think) compile/run errors are set to crash the program instead of being [01:58] CIA-75: node: passed back. [01:58] CIA-75: node: Error reporting is more important than remote loading. Disabling until there [01:58] CIA-75: node: is a fix - http://bit.ly/cuQwBc [01:59] hsuh has left the channel [02:02] ditesh|cassini has joined the channel [02:02] jedschmidt has joined the channel [02:08] taf2: _ry, good quetion, i think html parser [02:08] taf2: trying to compile libxmljs now, it's not finding libxml2, but i know it's installed... [02:16] V1 has joined the channel [02:20] mscdex has joined the channel [02:22] mscdex: taf2: do you have the libxml2-dev package installed? [02:22] mscdex: er that's a bit late heh [02:28] beejeebus has joined the channel [02:29] beejeebus: hi, i'm trying to get the chat demo from Socket.IO-node going [02:29] beejeebus: http://github.com/LearnBoost/Socket.IO-node/blob/master/test/chat.html [02:30] mscdex: what problem are you having? [02:30] beejeebus: the page is stuck at "Connecting..." [02:30] mscdex: what browser? [02:31] beejeebus: looking at the docs, i'm not sure i've set the 'resource' options correctly, but i don't really get what it should be [02:31] beejeebus: chrome [02:31] beejeebus: sorry, chromium, ubuntu 10.04 [02:31] mscdex: if you didn't change the resource options on the client or server side, then that isn't the problem [02:32] mscdex: hmm [02:32] mscdex: does the same thing happen in firefox? [02:33] beejeebus: i'll try [02:33] beejeebus: i just restored the code, still doesn't work [02:33] beejeebus: works in firefox [02:34] beejeebus: ok, so its a chromium issue [02:34] mscdex: hmmm [02:34] beejeebus: mscdex - thanks [02:34] mscdex: out of curiousity, what build of chromium? [02:35] beejeebus: https://launchpad.net/~chromium-daily/+archive/ppa [02:35] beejeebus: daily build [02:35] beejeebus: maybe today's was a bad drop :-) [02:35] mscdex: ah [02:36] beejeebus: well, i only need it working in one browser to try a few things [02:36] mscdex: well, fwiw i'm using 6.0.397 [02:36] mscdex: and it works with that [02:36] beejeebus: hmm [02:36] mscdex: on Windows though [02:36] beejeebus: 6.0.397.0 (46539) Ubuntu [02:36] mscdex: 46553 here [02:37] beejeebus: maybe the fixed it between 46539 and 46553 [02:37] mscdex: not sure if that's the issue though [02:40] beejeebus: mscdex: is there a way to turn up the debug on the server end? [02:40] mscdex: it's a shame there isn't a good debugging utility like firebug for chrome/chromium... but on Windows you could use Fiddler2 to spy on the connections/traffic [02:40] beejeebus: the developer tools are getting much better in chromium [02:40] mscdex: i don't think there is a way to turn up debugging [02:41] mscdex: i had run into some issues of my own on the server-side and had to make some fixes here and there [02:41] mscdex: i'm going to upload those changes soon [02:41] mscdex: but for the most part, i just had to insert my own debug statements to find out what was wrong :/ [02:42] beejeebus: right. i'm looking to build a proof of concept where the node server is a conduit for a CMS [02:43] mscdex: ah [02:43] beejeebus: writes go client --> CMS --> node.js --> client(s) [02:43] keyvan has joined the channel [02:44] beejeebus: and connections go client --> node.js -- auth --> CMS -- yes or no --> node.js -- accept or reject --> client [02:46] mscdex: is this a homemade CMS? [02:46] beejeebus: nope, drupal [02:47] mscdex: oh ok [02:47] beejeebus: i want to allow module developers to still be able to hook into the stream [02:47] beejeebus: but handling the realtime stuff with php and drupal is just not going to work beyond a small number of connections [02:48] mscdex: true [03:01] taf2: node always messes up vim when !node app.js [03:02] robinduckett: heh [03:02] robinduckett: i love node [03:02] robinduckett: just made a multiserver irc bot [03:03] robinduckett: but it IS 4am! [03:03] robinduckett: AHH! [03:03] robinduckett: brb sleep [03:03] robinduckett has left the channel [03:05] micheil: isaacs: added that package file, thanks for that [03:07] bpot has joined the channel [03:07] PyroPete1 has joined the channel [03:08] mrjjwright has joined the channel [03:16] beejeebus has left the channel [03:17] arlolra has joined the channel [03:18] isaacs: micheil: sweet! you should install npm and publish ws to the registry. (if you put it off until tomorrow, though, it'll be easier) [03:18] micheil: docs? [03:18] micheil: isaacs: also, testing frameworks, what do you recommend? [03:18] isaacs: micheil: docs for npm? [03:18] micheil: yeah [03:18] isaacs: install it. then do man npm [03:18] isaacs: or check out the "doc" folder [03:19] micheil: ah [03:19] micheil: okay [03:19] micheil: ACTION is new to the package managers stuff for node [03:20] isaacs: micheil: they're new to you, too [03:20] isaacs: (and everyone else)_ [03:20] micheil: heh [03:21] isaacs: it's been crazy having real users. uncovered all kinds of issues really fast. [03:21] micheil: heh, true [03:21] isaacs: i'll be using couchdb's attachments for tarballs instead of github in the next version, which will be nice. [03:21] micheil: yeah, It's been recommended I write some tests for node-websocket-server [03:22] micheil: neat, I'd seriously recommend mongo's gridfs [03:22] isaacs: so, the kids seem to dig mjsunit.runner and jspec [03:22] micheil: okay [03:22] isaacs: the nice thing about using couch is that i can bug mikeal whenever i run into tricky stuff. [03:22] isaacs: or jan__ [03:23] micheil: true ture [03:23] micheil: some of the mongo gurus are pretty hard to get hold of [03:23] isaacs: gotta run. have fun! [03:35] charlesjolley has joined the channel [03:38] Tim_Smart has joined the channel [03:38] Tim_Smart has left the channel [03:50] saikat has joined the channel [04:08] siculars_ has joined the channel [04:10] siculars__ has joined the channel [04:14] darkf has joined the channel [04:16] saikat has joined the channel [04:23] joshbuddy has joined the channel [04:31] siculars_ has joined the channel [04:33] pandark_ has joined the channel [04:34] CIA-75: node: 03Ryan Dahl 07master * r8ab238e 10/ lib/http.js : [04:34] CIA-75: node: Revert "destroy instead of end http connection at end of pipeline" [04:34] CIA-75: node: This reverts commit 4ce1e1fca59bc6ad6e2d19643db2ed3159ccb7dc. [04:34] CIA-75: node: To fix test-http-full-response.js. Clearly this is not the correct solution. [04:34] CIA-75: node: Probably need idle timeouts. - http://bit.ly/cXASi3 [04:38] gf3 has joined the channel [04:49] pandark_: How should I choose a packages manager for node.js (kiwi, seed.js, �) ? [04:56] darkf_ has joined the channel [04:58] BryanWB has joined the channel [05:01] cloudhead: pandark_: seed.js is pretty stable from what I take [05:01] cloudhead: npm is probably going to be the standard [05:01] cloudhead: some people support both npm and seed.js [05:08] pandark_: cloudhead, thanks [05:10] technoweenie: hey i found a bug parsing a Link: header from. the stack trace shows: at Client.ondata (http:636:30) [05:11] technoweenie: any idea where that file is so that i can inspect it and maybe patch it [05:11] jedschmidt has joined the channel [05:11] technoweenie: my node binary is at /usr/local/bin/node... are the js files compiled in there? [05:13] cloudhead: technoweenie: seems like http.js [05:13] cloudhead: in lib/ [05:14] cloudhead: /usr/local/lib/node/libraries [05:14] technoweenie: so /usr/local/lib/node/libraries/http.js? it only goes up to line # 569 [05:14] cloudhead: hmm [05:15] technoweenie: yea, thats weird. i mean i've installed over node several times as i've upgraded [05:15] technoweenie: git checkout v0.1.93 ; ./configure && make && make install [05:16] Yuffster has joined the channel [05:17] amerine has joined the channel [05:19] cloudhead: it might compile them somehow [05:25] _ry: technoweenie: they're compiled in [05:26] technoweenie: ok that makes sense [05:26] technoweenie: riak sends this giant header like this: Link: ; riaktag="contained", ; riaktag="contained", ETC [05:27] technoweenie: its bigger than the response body, ha [05:27] isaacs has joined the channel [05:27] _ry: is riak cool? [05:27] isaacs: is there any way to tell the difference between a file descriptor and a regular non-important number? [05:28] _ry: isaacs: not really.. [05:28] _ry: isaacs: whay? [05:28] _ry: why? [05:28] isaacs: _ry: well, i'm writing a thing that sends data to couchdb, and right now, if you send it something, it json encodes it, and PUTs it into the db. [05:28] isaacs: _ry: but, now the issue is, i need to upload a file. [05:29] isaacs: _ry: i'd like to just send this same function a file descriptor and have it know what to do [05:29] _ry: oh [05:29] isaacs: _ry: but i can just wrap it in a dummy class or something, and then do if (what instanceof File) [05:29] _ry: nod [05:29] isaacs: and my upload function can do PUT(where, new File(fd), ... [05:30] technoweenie: _ry: riak is interesting -- it has an http api with javascript map/reduce functions, so node is a great fit for it [05:30] isaacs: just wondering if there was already a fs.isFileDescriptor or something, but there doesn't seem to be [05:30] _ry: technoweenie: does it work? [05:30] _ry: isaacs: nope [05:30] _ry: ACTION is closing issues [05:32] technoweenie: _ry: i guess, but i don't know anyone that's using it other than big enterprise clients: http://basho.com/customers.html. i'm just fucking around with some mapreduce shit [05:38] tlrobinson_ has joined the channel [05:48] Phazm has joined the channel [05:48] Phazm: is there any performance benefit to using http://github.com/quiiver/magickal-node vs. using the command-line version via exec? [05:57] _ry: Phazm: i think that is a command line wrapper [05:58] _ry: Phazm: executing it out of process is a good diea [05:58] _ry: Phazm: the image resize can crash without crashing the server [05:58] _ry: etc [06:08] elliottcable: no [06:11] derbumi has joined the channel [06:13] ryan[WIN] has joined the channel [06:18] micheil: technoweenie: riak vs mongodb? [06:19] technoweenie: riak is based on the dynamo paper, so it scales by throwing more riak nodes at it [06:19] micheil: nice [06:19] micheil: sounds like something for that mesh thing to think about [06:19] technoweenie: it's basically s3 with map reduce (though not designed for large files) [06:20] technoweenie: most people will probably store json in it, but you can store anything really. it's all over an http api so you just set content-type to whatever you want [06:20] technoweenie: mongodb has sharding, but afaik it's not production yet? [06:22] micheil: yeah, sharding in mongo isn't yet production, I don't think [06:23] micheil: brb. need a pot of coffee. [06:23] mikeal has joined the channel [06:25] jbrantly has joined the channel [06:27] pandark_ has joined the channel [06:30] mscdex: yey! halfway done with ncurses [06:31] mscdex: now for some massive copying and pasting :-) [06:32] probablyastalker: mscdex: wait, you actually started work on that? I thought you weren}t going to do that [06:33] mscdex: yeah [06:33] probablyastalker: well dang. props. how’s it going? [06:33] probablyastalker: are you writing a direct interface, or are you going for an abstraction? [06:33] probablyastalker: i.e. your own API, or mirroring the `ncurses.h` one [06:33] mscdex: I started the other day with the C api and slowly began to go crazy :P [06:34] probablyastalker: heh, the C API is insane [06:34] mscdex: so now I switched to ncurses++ and this'll be easy [06:34] probablyastalker: O_O ew. [06:34] mscdex: but yeah, a direct interface pretty much [06:34] probablyastalker: lol [06:35] mscdex: i saw some other third party c++ ncurses bindings that were supposedly better than ncurses++, but they hadn't been updated in over 5 years :\ [06:43] mscdex: gave up being a possible stalker eh? ;-) [06:44] teemow has joined the channel [06:53] SamuraiJack has joined the channel [06:58] derbumi has joined the channel [07:00] micheil: ACTION is back [07:02] micheil: mscdex: that ncurses binding for node will be awesome, is it on github? [07:02] mscdex: i have a repo setup, but no code yet [07:02] micheil: okay [07:02] micheil: link? [07:02] mscdex: i'm implementing the functions and stuff as we speak [07:03] mscdex: http://github.com/mscdex/node-ncurses [07:03] micheil: man.. I have about 7 safari windows each with 30 tabs + open, and it isn't lagging a bit <3 safari. [07:04] mscdex: heh, i recently switched to chromium from firefox [07:04] mscdex: i still miss firebug though :\ [07:05] mape: chrome [07:08] brianmario has joined the channel [07:08] colin__ has joined the channel [07:09] colin__: hello, anyone familiar with node-mongodb-native module [07:09] micheil: technoweenie: I like the DSL you use in Rhodes, the idea of proxying requests through a this.request() [07:10] micheil: colin__: no, but last I knew it passed all it's tests. [07:10] technoweenie: micheil: thanks [07:10] colin__: yeah, i'm sure its something i'm doing wrong [07:11] micheil: technoweenie: that's a better way of interfacing with the http.Client IMHO. [07:11] technoweenie: micheil: i dont recall where i got that style from, see db.get in http://github.com/frank06/riak-js [07:12] micheil: oooh.. continuations, right jedschmidt? [07:13] technoweenie: yea, fab is a big influence too [07:13] jedschmidt: micheil: gotta love 'em. [07:13] technoweenie: fab blows my mind every time jed rewrites it [07:13] micheil: jedschmidt: been doing more hacking with protocols last few days, and not doing the fab for client side [07:14] micheil: jedschmidt: would you mind if I stole a few pieces of fab to make a client side style DSL for describing apps? [07:14] jedschmidt: (fab) is kicking my ass right now. [07:14] jedschmidt: micheil: naw, it's all yours. [07:14] micheil: jedschmidt: is a key in fab/builds? [07:15] jedschmidt: a key? [07:15] micheil: as in, you can't just use the collect / reduce from within apps/fab [07:15] micheil: rather, utils/build [07:15] jedschmidt: man, trying to make code totally async is complicated. all of a sudden, simple things like .map become hard. [07:16] micheil: .map hmm.. [07:16] felixge has joined the channel [07:16] felixge has joined the channel [07:16] micheil: jedschmidt: you'd have to use an emitter model around them [07:16] jedschmidt: micheil: no, you can use each app individually. [07:16] micheil: oh? [07:16] jedschmidt: yeah, just require it and use .app to get to the function. [07:16] micheil: it'd require some rewriting [07:17] jedschmidt: micheil: i'm trying to avoid that... thing is, the code ends up much more recursive, which i like and don't like at the same time. [07:17] micheil: jedschmidt: I think the most confusing parts of your code are the double references [07:17] micheil: eg, parent = ret; [07:17] micheil: and then later referencing ret [07:17] micheil: it makes code way less obvious [07:18] jedschmidt: hmmmm. i'll have to take a look at that. [07:18] micheil: first file I see it is in utils/build.js [07:19] jedschmidt: micheil: hmm, seems like a common pattern to me. but that file will be gone in the next version anyway... [07:19] micheil: so, with build, the way it all builds is by mixing into the app or extending the app with the methods, yeah? [07:19] micheil: ugh :P [07:19] micheil: is your dev branch up? [07:20] rektide: technoweenie: WOW [07:20] rektide: nice comic man, nice comic. [07:20] technoweenie: not mine :) [07:20] micheil: comic? [07:20] technoweenie: i tried to find a good reference but i cant tell where it came from [07:20] jedschmidt: micheil: yeah, exactly. dev branch is still a ways off. [07:20] technoweenie: the comic on my blog: http://techno-weenie.net/2010/5/10/rhodes-riak-on-node-js [07:20] jedschmidt: micheil: it's a total rewrite again, alas. [07:20] micheil: I need a feed reader like tweetie. [07:20] micheil: :D [07:21] technoweenie: ha [07:21] technoweenie: man i should turn feeds into twitter streams [07:21] micheil: jedschmidt: could you push your dev branch up? [07:21] jedschmidt: micheil: not yet, it's still a mess. [07:21] rektide: google reader is my twitter archival strategy [07:21] technoweenie: i have a github project that turns a github timeline into a twitter stream so you can read it w/ tweetie [07:21] jedschmidt: micheil: it'll be up by the end of the week tho. [07:21] technoweenie: jedschmidt: you rewrote fab _again_ ? hah [07:21] micheil: yeah, only in tweetie mobile. [07:21] rektide: ok time to start writing a webgl timeline visualizer [07:21] jedschmidt: technoweenie: ayep. hopefully for the last time. [07:21] micheil: jedschmidt: ooh.. *bites lip* :P [07:21] technoweenie: cool, it gets better every time at least [07:22] jedschmidt: jedschmidt: *bites lisp* [07:22] micheil: lol. [07:22] jedschmidt: IRC fail, ha. [07:22] jedschmidt: technoweenie: i'm not sure about the next rev. the async makes the code harder to read. [07:22] micheil: we should really start a github community book, akin to the python book & django book [07:23] technoweenie: ahh [07:23] ineation has joined the channel [07:23] jedschmidt: technoweenie: the only function with a return statement is the fab function itself. and all it does is collect all the arguments and ship them to be processed async. [07:23] technoweenie: the django book existed because someone paid the authors to do it though, right [07:23] technoweenie: jedschmidt: hm interesting [07:23] micheil: jedschmidt: good. damn. period. [07:24] micheil: jedschmidt: that'll be awesome. [07:24] micheil: technoweenie: I didn't actually know that, I thought, well, you know, a "community book" [07:24] micheil: as in the community wrote it. [07:25] technoweenie: micheil: they wrote it in the open and the community definitely chipped in [07:25] micheil: ah [07:25] technoweenie: they had this sweet line by line commenting system [07:25] technoweenie: but yea, it was paid for by some publisher [07:25] micheil: yeah, I wish they'd opensource that. [07:25] technoweenie: i doubt they were paid much though knowing how the tech book scene goes [07:25] technoweenie: i dont mean to discount their efforts, i think its awesome [07:25] jedschmidt: aight, battery's almost out. catch you guys in a bit! congrats on rhodes, technoweenie! [07:25] micheil: well, either way, a book on node.js like that would be awesome [07:26] technoweenie: later jed [07:26] micheil: yeah, have fun jed [07:26] jedschmidt has left the channel [07:27] micheil: technoweenie: is the Riak Fast Track like a Intro to rails in 10 minutes style thing? [07:27] technoweenie: yep [07:28] micheil: neat. [07:28] technoweenie: it gets you started w/ a 3-node cluster and some map reduce functions over some sample data [07:28] micheil: I'll check it out [07:28] micheil: sounds fun [07:30] Tim_Smart has joined the channel [07:31] Tim_Smart has left the channel [07:33] technoweenie: i kind of want a client http wrapper with chained method calls [07:33] micheil: that'd be cool. [07:33] micheil: ACTION may work on something like that one day [07:34] micheil: or we could colloborate? [07:34] pdelgallego has joined the channel [07:35] technoweenie: http.request('GET').path('/foo').query({page: 2}).headers({'content-type': 'application/json'}).body(someRequestBody).end(function(resp, body) {}) [07:35] technoweenie: something like that [07:35] micheil: ooh.. [07:35] micheil: I dunno if that's quite cool. [07:35] technoweenie: whatever, its bad ass [07:36] technoweenie: i hate functions like this: function(method, path, customHeaders, body, callback) [07:36] technoweenie: where you have to memorize the order of the params and pass nulls for optional stuff [07:36] technoweenie: well, i'll build it, and see if it sucks [07:37] micheil: okay [07:37] micheil: technoweenie: I think something more weary-ish or something [07:37] micheil: so you can set an instance baseurl, and baseheaders & a parser [07:37] micheil: then just do: [07:38] micheil: client.get('/foo?page=2', someRequestBody) [07:38] micheil: (maybe include query in there) [07:38] qFox has joined the channel [07:39] technoweenie: yea see, where do you put query [07:39] micheil: then just have an .success(function(req, res){}) [07:39] technoweenie: someRequestBody isnt used for get/delete requests [07:39] micheil: ah, good point [07:39] micheil: body == always last. [07:39] micheil: first param is always the path [07:40] micheil: second param is optional, it's a key/value hash of query elements [07:40] technoweenie: headers? [07:40] micheil: that then keeps all your request instance properties together [07:41] micheil: headers are global [07:41] technoweenie: ??? [07:41] micheil: as in client gets the headers set on it [07:41] technoweenie: yea i dont know [07:41] micheil: so, client = new Request(baseurl, headers) [07:41] technoweenie: i've written a lot of http wrappers, that never pans out for me [07:41] micheil: okay [07:42] technoweenie: some stuff needs per-request headers [07:42] micheil: ACTION has only worked on two so far, on with weary (the giact gem), and the other with httparty (the chargify gem) [07:43] technoweenie: i wrote a good chunk of activeresource, and my latest ruby http thing is http://github.com/technoweenie/faraday [07:43] technoweenie: which i'm hoping will be part of activeresource 3 [07:43] technoweenie: weary looks nice, but too high level for what i wanted [07:43] technoweenie: anyways [07:44] micheil: epic. http://vimeo.com/11610421 [07:44] micheil: Raphael doing multitouch [07:45] technoweenie: boom [07:45] _ry: very cool [07:46] micheil: I wonder if Raphael graphics could be processed on the server. [07:47] _ry: what would that mean? [07:47] _ry: generate the svg on the server? [07:47] _ry: would be cool [07:47] micheil: yeah [07:47] technoweenie: w/ env.js maybe? [07:47] technoweenie: have something that ran the raph code and spit out svg tags [07:47] micheil: also. Dropular is an awesome application of node.js: http://dropular.net/#drops/80jBwTgb12KMDCmjz1jYo86YdAV [07:48] technoweenie: daft punk! [07:48] micheil: man.. ever seen their electroma film? [07:48] technoweenie: no [07:48] micheil: that is tripped. [07:49] micheil: through out the film, there's no words, just a backing track of music [07:49] _ry: i wonder how much of dropular is node [07:49] micheil: technoweenie: http://en.wikipedia.org/wiki/Electroma [07:49] micheil: _ry: all. [07:49] micheil: afaik. [07:50] technoweenie: micheil: ah yea i've wanted to watch that, i think its on itunes [07:50] technoweenie: i just didnt know if it was good [07:50] technoweenie: but now i'll pick it up :) [07:50] micheil: _ry: it's built by github user rsms (of spotify), and it uses his OUI library for node [07:50] sveisvei: qFox: How do I require modules that i put in /usr/local/lib/node ? [07:50] sveisvei: oups, no qfox [07:50] _ry: micheil: ah [07:50] sveisvei: *qFox = question [07:50] micheil: technoweenie: watch it at night, with the lights off and the sound up. you'll loose track of time badly. [07:51] micheil: _ry: I having been bugging rsms for a bit of a tech overview of dropular [07:51] DracoBlue has joined the channel [07:51] _ry: http://twitter.com/michaeln3/statuses/13712686096 <-- looks cool [07:52] mscdex: neat! [07:53] kjeldahl has joined the channel [07:53] tisba has joined the channel [07:53] _ry: ACTION goes to sleep [07:53] micheil: epic. [07:53] mscdex: heh [07:53] micheil: uh, hummingbird, not ry disappearing [07:54] mscdex: :P [07:54] micheil: damn. can't half tell hummingbird must be product of ruby developers [07:56] SvenDowideit has joined the channel [08:03] MattJ has joined the channel [08:03] technoweenie: how can you tell the diff between a hash or an array [08:03] technoweenie: typeof() returns 'object' [08:03] micheil: yeah, um.. there's code for that somewhere... [08:03] micheil: sec. [08:04] technoweenie: i guess if 'push' is a function... [08:04] inimino: technoweenie: if (x instanceof Array) [08:04] technoweenie: ahh [08:04] technoweenie: beautiful, thanks [08:05] inimino: (unless you need to worry about something from another JavaScript context / browser window, then it's complicated) [08:05] micheil: technoweenie: http://github.com/documentcloud/underscore/blob/master/underscore.js#L506-508 [08:05] micheil: inimino: I didn't think that was fail safe [08:05] micheil: but that underscore one wasn't the one I was thinking of [08:06] ineation has joined the channel [08:06] inimino: micheil: it's failsafe unless you have things coming from another context [08:06] micheil: this might be a better implementation: http://github.com/dojo/dojo/blob/master/_base/lang.js#L18 [08:06] inimino: if V8 has ES5 Array.isArray, then you can use that [08:07] micheil: no method [].isArray() [08:07] teemow has joined the channel [08:07] kjeldahl has joined the channel [08:07] jedschmidt has joined the channel [08:07] micheil: you can also do: [].constructor.name == "Array" [08:07] micheil: in a strict node.js context [08:08] inimino: ah, apparently it does have it [08:08] inimino: technoweenie: you can use Array.isArray(x) in node [08:09] technoweenie: ah sweet [08:11] felixge has joined the channel [08:11] felixge has joined the channel [08:11] jedschmidt: i'm a fan of toString.call( obj ).slice( 8, -1 ), myself. [08:12] isaacs: i found out today that Array.isArray( Object.create([]) ) == false [08:12] isaacs: to get sys.inspect working with an evalcx-ed repl, i did some serious duck typing [08:13] isaacs: micheil: you should push your kit to the npm registry now. [08:13] isaacs: micheil: it's not relying on github for anything any more. packages get uploaded and live in the registry as attachments. [08:15] micheil: isaacs: good point [08:16] micheil: still haven't installed npm [08:16] micheil: inimino: oooh. I thought it was instance based [08:18] technoweenie: micheil: omg look at my chunked json parsing: http://github.com/technoweenie/rhodes/commit/6988ed855ced5ef9a7c9c8addd0337023702fcd4 [08:19] micheil: hot. [08:20] brianmario: technoweenie: you had a chance to play with http://bitbucket.org/nikhilm/yajl-js/ yet? curious about it... [08:20] micheil: ACTION turns the Daftpunk up. [08:21] technoweenie: no, but i want to soon [08:21] brianmario: looking at the api now [08:21] technoweenie: still, merging is a problem [08:21] technoweenie: riak sends streamed keys in chunks like {keys: ['a', 'b', 'c']} \n {keys: ['d', 'e']} [08:22] technoweenie: so i have to parse all those and push the values to one keys array [08:22] micheil: technoweenie: you need a mixin [08:22] micheil: I think. [08:22] technoweenie: i need a smart deep mixin [08:22] micheil: yeah [08:22] technoweenie: a naive one will just clobber it [08:22] micheil: I'm pretty sure the Dojo mixin is pretty smart [08:23] technoweenie: i basically wrote one [08:23] N` has joined the channel [08:23] micheil: true [08:24] micheil: I wish github responded to onHashChange [08:24] micheil: http://github.com/dojo/dojo/blob/master/_base/_loader/bootstrap.js#L261-297 [08:24] xla has joined the channel [08:25] micheil: isaacs: npm is a thing of beauty. [08:25] isaacs: micheil: aww, thanks! [08:26] isaacs: micheil: i'm sure you'll have plenty of complaints once you've been using it for a little while. post issues. [08:26] micheil: heh [08:26] brianmario: still learning the api over here - but does someone know if the Emit function on a v8::Handle class is for firing events? [08:27] micheil: isaacs: error. [08:27] isaacs: micheil: ha, see? [08:27] isaacs: i toldyou [08:28] brianmario: nm, looks like it is [08:28] micheil: http://gist.github.com/395812 [08:28] bpot has joined the channel [08:28] isaacs: micheil: yeah, don't do that [08:28] micheil: heh [08:28] isaacs: micheil: they're installed for you automagically [08:28] derRichard: how can i make sure that the js object referenced by argc[0] is a wrapped ClHandle c++ object and nothing else? e.g. in ClHandle *clh = ObjectWrap::Unwrap(args[0]->ToObject()); [08:28] isaacs: micheil: man npm [08:28] micheil: probably — ooh... [08:29] micheil: AWESOME! [08:29] isaacs: i should put a note saying that [08:29] micheil: might want to remove that script from stable then [08:29] isaacs: well, it's part of the install proces. [08:29] isaacs: note the "scripts" entry in package.json [08:29] micheil: ah [08:29] micheil: no. [08:29] micheil: ACTION just saw install-* [08:29] isaacs: if you activate a different version of npm, it'll load *those* docs into the man folder instead [08:29] isaacs: yeah, i should hide it [08:29] micheil: you should put it in a /scripts/ directory then [08:29] isaacs: right [08:29] brianmario: technoweenie: looks like the yajl-js API just exposes the basics of the yajl C api into v8 and looks like fires events for when the parser finds null, boolean, integer, string, startMap, mapKey, startArray, etc [08:30] brianmario: then you'd have to build up the object with a stack or something yourself [08:30] technoweenie: ah cool [08:30] brianmario: I need to mess with node again, shits getting way awesome in the api [08:31] Tim_Smart has joined the channel [08:31] Tim_Smart has left the channel [08:32] micheil: someone should port ronn to node :D [08:32] micheil: or roff [08:36] micheil: isaacs: npm publish failed due to tar [08:36] isaacs: micheil: that's odd [08:36] isaacs: what's the package name? [08:37] micheil: the folder name is node-websocket-server, the package.json declares websocket-server [08:37] isaacs: oh, ok... [08:37] isaacs: gist the log? [08:37] micheil: sec [08:37] isaacs: got it [08:37] micheil: http://gist.github.com/395819 [08:38] isaacs: ack, that's dumb of me... [08:38] isaacs: try npm publish npm publish ./node-websocket-server/ [08:38] isaacs: note the ./ rather than starting with the n [08:38] micheil: same error [08:39] micheil: well, same tar error [08:39] micheil: different emit error [08:39] isaacs: micheil: what about if you do npm publish . inside the folder? [08:39] tobeytailor has joined the channel [08:39] mscdex: ahhhh 20 functions down, 64 to go [08:40] micheil: http://gist.github.com/395819 [08:40] micheil: bigger error [08:40] isaacs: micheil: much more impressive! [08:40] mscdex: bbl [08:40] isaacs: i should really make that only fail once [08:40] isaacs: anyway.. [08:40] isaacs: npm adduser [08:40] isaacs: you need a username in the system to publish [08:41] micheil: really need it to return on missing args [08:41] isaacs: otherwise you could just be some random internet ruffian. i insist that you be a random internet ruffian with an email address. [08:41] micheil: instead of spewing an error log [08:41] TomY has joined the channel [08:41] isaacs: micheil: well, it does return... just... noisily [08:41] isaacs: but yeah, the cli will be loud and obnoxious until about 0.2.0 i think [08:41] micheil: also, echo off for passwords. [08:42] isaacs: yep. no way to do that in node as of today. [08:42] micheil: :( [08:42] micheil: maybe soon [08:42] isaacs: indeed. [08:42] isaacs: also, it makes npm help kinda stupid [08:42] micheil: publishing. [08:42] isaacs: since i can't let you page through the result [08:42] micheil: yeah, true [08:42] micheil: done! [08:43] isaacs: w00t!!! http://registry.npmjs.org/websocket-server [08:43] micheil: is there a list of npm modules? [08:43] micheil: there we go. [08:43] micheil: isaacs: should make something like gemcutter for npm [08:43] isaacs: micheil: yeah, eventually i need (someone else to?) wrap some html around http://registry.npmjs.org [08:44] micheil: link me to the server code. [08:44] micheil: I'll do it over the next few weeks [08:44] mape: I might take a stab at it unless micheil beats me to it :) [08:44] micheil: mape: mine will be more awesome ;P [08:44] micheil: oooh.. deep. [08:45] isaacs: oohh.... super fail. [08:45] micheil: what? [08:45] isaacs: well... so... the tar that it creates, it doesn't create it in a 1-folder-deep nested thingie. [08:45] isaacs: so it fails to install from that tar [08:45] micheil: oh [08:45] isaacs: yeah [08:45] isaacs: ugh.. fixing... [08:46] micheil: so, uh. [08:47] micheil: isaacs: did that package work? [08:47] isaacs: micheil: nope. i'm fixing it now [08:47] micheil: okay, can I un-publish? [08:48] mape: Being able to hide mistakes must be high on the todo-list ;) [08:49] isaacs: mape: srsly. right now the undo path is "i go undo it" [08:49] isaacs: and that's lame [08:50] isaacs: aha. this happens when you do npm publish "." [08:50] isaacs: but not if you do npm publish ./foo [08:50] isaacs: er... no, nvm... [08:51] ashb: you can turn echo off with ansi escape codes i thought [08:51] tbassetto has joined the channel [08:51] botanicus has joined the channel [08:51] tobeytailor has left the channel [08:55] ineation has joined the channel [08:55] micheil: aww.. sad about rhodes technoweenie [08:55] javajunky has joined the channel [08:55] technoweenie: jed just suggested 'nori', which is awesome :) [08:55] technoweenie: nori is the seaweed wrap for sushi [08:56] micheil: that is a cool name [08:56] micheil: nodaik? [08:57] tisba_ has joined the channel [08:57] olegp has joined the channel [08:58] jedschmidt: i also was thinking of RENO (since riak is pronounced REE-ahk). [08:58] micheil: Reno. that's stylish. [08:58] jedschmidt: or ride.js (ridges) [08:58] felixge has joined the channel [08:59] felixge has joined the channel [08:59] technoweenie: the only thing as cool as naming shit after comics is naming it after sushi [09:03] isaacs: micheil: oh, wait a sec, it worked fine with yours, since you didn't do ".", i guess [09:03] isaacs: micheil: anyway, update to npm 0.1.7 before publishing anything else. [09:03] jedschmidt: technoweenie: there's probably some entendre in there too, since it's a node wrapper for riak. [09:04] micheil: isaacs: re tag that please. [09:04] technoweenie: yea, its so perfect :) coming up with great names is tough [09:04] micheil: isaacs: it's as 0.1.7, not v0.1.7 [09:05] isaacs: oh, nice. [09:05] isaacs: thanks [09:05] micheil: no worries [09:06] micheil: isaacs: upon updating: http://gist.github.com/395846 [09:07] isaacs: micheil: that's the error i was talking about. [09:07] isaacs: micheil: try again. i ahdn't tagged it as stable yet. it's way past bedtime, sorry [09:07] micheil: oh? [09:08] isaacs: you don't actually have to update the code to install a new version of npm. just do "npm install npm" [09:08] micheil: oh [09:08] micheil: cool [09:08] micheil: I'll stick to doing the git repo though [09:08] isaacs: if you *want* the bleeding edge, you can do npm link . [09:08] isaacs: and then just update, and you'll get the latest always [09:08] micheil: that's what I've done almost [09:09] isaacs: kewl. ok, it's bedtime for me. g'nite. thanks for playing :) [09:09] micheil: so now on git pull I'll auto have bleeding? [09:09] micheil: dang. [09:11] ineation has joined the channel [09:17] kennon has joined the channel [09:25] dgathright has joined the channel [09:34] Yuffster has joined the channel [09:36] dgathright has joined the channel [09:40] micheil: mnutt: why hello there? [09:49] javajunky: micheil: are yo planning on pushing your websocket server to kiwi as well, or just to npm ? [09:50] micheil: hmm.. what's kiwi like? [09:50] micheil: do I need to do anything special? [09:50] javajunky: pretty much the same as npm ;) [09:50] micheil: okay, where's the docs. [09:50] javajunky: err add a 'seed.yml' file to your project ( like as package.json) [09:50] javajunky: http://kiwijs.com/ [09:50] micheil: hmm.. [09:50] javajunky: http://wiki.github.com/visionmedia/kiwi/publishing-seeds [09:51] javajunky: … the plan as I understand it , is to use package.json like commonJs/ npm as well [09:51] javajunky: the only reason I vaguely care is that I want to play with your server and my current dependencies are managed with kiwi ;) selfish really. [09:51] micheil: okay [09:52] micheil: I'll setup a makefile & tasks to do my publishing then [09:52] micheil: ;P [09:52] javajunky: ;) I need to do this too, keep meaning to publish my stuff up onto npm as well [09:53] charlesjolley has joined the channel [09:58] micheil: javajunky: I can't I get an ISE [09:59] micheil: tar: ./1.0.5.seed: Can't add archive to itself [10:00] micheil: yeah, kiwi doesn't work for me. [10:00] micheil: I just get ISE's back from the server [10:01] derRichard: i'm a bit confused. is there really no documentation for the v8 api? [10:02] micheil: derRichard: pretty much.. uh, yes [10:07] _Fuxx has joined the channel [10:09] derRichard: micheil: hmm, not good. it takes me always hours to find and understand methods :( [10:09] micheil: bbl. dinner [10:12] ithinkihaveacat has joined the channel [10:12] tav has joined the channel [10:22] ithinkihaveacat has joined the channel [10:41] hellp has joined the channel [10:48] robinduckett has joined the channel [10:48] robinduckett: yo [10:57] MattJ: oy [10:58] mscdex has joined the channel [11:02] teemow has joined the channel [11:02] bmizerany has joined the channel [11:02] Tim_Smart has joined the channel [11:02] Tim_Smart has left the channel [11:04] mscdex: derRichard: you can generate some documentation using doxygen [11:05] mscdex: pretty easily actually [11:08] mscdex: derRichard: save (http://gist.github.com/395927) as "Doxyfile" into the v8 root directory (deps/v8 in the nodejs release) and run doxygen from there [11:08] mscdex: it'll create a subdirectory containing all the html files and such [11:09] derRichard: thanks! [11:21] maushu has joined the channel [11:40] ineation has joined the channel [11:40] felixge has joined the channel [11:40] felixge has joined the channel [11:43] charlesjolley has joined the channel [12:25] nsm has joined the channel [12:30] teemow has joined the channel [12:33] hassox has joined the channel [12:34] micheil: This might help a few, converts ruby objects to node formatted json: http://gist.github.com/395989 [12:34] micheil: (roughly.) [12:34] micheil: works for pkgspecs [12:34] shlurbee has joined the channel [12:34] shlurbee has left the channel [12:39] thoolihan has joined the channel [12:48] tbassetto has joined the channel [12:58] robrighter has joined the channel [13:01] fyorl has joined the channel [13:01] jbrantly has joined the channel [13:04] fyorl: Is there any way I can set multiple cookies in the header of a HTTP serverResponse? [13:05] micheil: I believe niot in a way node provides, but you can by spec [13:05] fyorl: By spec? Sorry, I don't understand ._. [13:07] javajunky: you can do it, just not particularly elegantly ... [13:08] fyorl: ok, so, can I edit the header text manually somehow? [13:09] javajunky: something like request.header('Set-Cookie', ['cookie1','cookie2','cookie3'].join('\nSet-Cookie: ')) [13:09] javajunky: unpleasant, but I thikn it works… [13:09] tav_ has joined the channel [13:09] javajunky: if you want to be hidden from the yuk, consider a framework like expressjs.com or one of the alternatives. [13:11] fyorl: right, I'll look into that thanks [13:11] TomY: anything wrong with request.header('Set-Cookie', 'cookie1, cookie2, cookie3')? [13:13] fyorl: well, I was working from the http.serverResponse object [13:13] fyorl: does that have a header method? [13:13] TomY: sorry, was looking at javajunky's example code. But in general you can separate the value of the header with commas, right? [13:14] fyorl: yeah, I did some looking around [13:14] inimino: TomY: in general, yes, but cookies are a special case [13:14] fyorl: but it looked like the only way to do it was with multiple Set-Cookie lines [13:16] jherdman has joined the channel [13:16] javajunky: I'm fairly sure what I've given works. [13:16] fyorl: yeah, I'm gonna run some tests now, thanks [13:16] inimino: '\r\n' should be used to separate headers [13:17] davidsklar has joined the channel [13:17] inimino: I think there's still an alternate way of passing headers as an array which would work also, but that may have been removed by now [13:17] kriszyp has joined the channel [13:18] javajunky: I'm actually a bit confused, reading RFC2109 it suggests that semi-colon delimted cookies should be ok ;) [13:20] inimino: you mean comma-separated? [13:20] javajunky: imimino, no I mean semi-colon separated [13:20] javajunky: comma is optionally supported [13:21] javajunky: *however* your header separation comment is interesting, I'll need to look at that, might be a bug in express there. [13:21] inimino: the semicolon is used to separate something else [13:21] maushu: Does anyone know a simple event framework for javascript? [13:21] maushu: I need one outside node.js [13:21] javajunky: ah yeah [13:22] kkaefer has joined the channel [13:22] javajunky: thats probably where the confusion is that ; cookie-av part says it could be a comma. [13:23] javajunky: the last paragraph of Section 4.3.4 in rfc2109 … throws me ;) [13:26] ncb000gt has joined the channel [13:27] inimino: hehe [13:28] felixge has joined the channel [13:29] inimino: it's been a while since I tested cookie support in browsers [13:29] inimino: but it's my recollection that the RFC was a bit farther from reality even than RFCs usually are [13:30] javajunky: yeah its generally regarded as a confusing header ;) the conversations on the node.js mailing list alone have been amusing to follow ;) [13:34] gf3 has joined the channel [13:39] ssteinerX has joined the channel [13:51] pgriess has joined the channel [13:55] hassox has joined the channel [13:58] pgriess has joined the channel [13:58] fyorl: javajunky: Your join idea worked, thanks again [13:59] javajunky: coolio, did you try the \r\n rather than \n ? [13:59] fyorl: yeah [14:00] javajunky: sweet I'll submit a patch to express, well spotte iniminpo [14:00] javajunky: err inimino … damn your name is hard to type [14:04] fyorl has left the channel [14:06] MattJ: javajunky: yeah, in is so hard :) [14:07] javajunky: holy-crap… I did not know that! doh [14:09] MattJ: ACTION has done his good deed for the day [14:11] riottaba has joined the channel [14:17] freshtonic has joined the channel [14:19] markwubben has joined the channel [14:20] nefD has joined the channel [14:20] markwubben has joined the channel [14:24] robrighter has joined the channel [14:24] charlesjolley has joined the channel [14:25] riottaba_ has joined the channel [14:27] tmpvar has joined the channel [14:28] bweaver has joined the channel [14:31] riottaba has joined the channel [14:40] joshbuddy has joined the channel [14:45] inimino: hehe [14:46] pjb3 has joined the channel [14:46] kriszyp_ has joined the channel [14:51] whiteinge has joined the channel [14:51] maushu: *sigh* [14:51] maushu: I hate my life. [14:52] maushu: Some people would probably think of suicide or something. [14:52] maushu: I'm more optimist. I will just make somebody else's life miserable. [14:53] sveisvei: squash that bug [14:53] kevwil has joined the channel [14:54] mjijackson has joined the channel [14:55] TomY has left the channel [14:56] TomY has joined the channel [15:01] tmpvar: yo [15:02] whiteinge has left the channel [15:04] MattJ: oy [15:05] ineation has joined the channel [15:05] gf3: inimino: I have a question about your whitespace style [15:05] gf3: if you're around [15:11] matzie has joined the channel [15:12] matzie: hi, is there any solution for multiline strings in node? eg heredoc / the e4x cdata trick / ? [15:13] javajunky: /n/ [15:13] matzie: shame. [15:15] javajunky: well to be specific just \ is sufficient to carry across multiple lines [15:15] javajunky: and I mean \n\ before ;) [15:16] matzie: yeah, I was just hoping there was a cleaner way. [15:16] matzie: thx [15:16] tmpvar: "first\nsecond"" ;() [15:16] tmpvar: typing fail lol. [15:16] matzie: :-) [15:17] tmpvar: put your string in another file [15:17] tmpvar: thats pretty clean :) [15:18] tmpvar: or in a db :X [15:18] riottaba_ has joined the channel [15:22] maushu: Anyone knows of an away to have a single button file upload? [15:22] quirkey has joined the channel [15:22] colin__ has joined the channel [15:23] javajunky: maushu: flash ? [15:25] matzie: \q [15:28] mnutt has joined the channel [15:30] Wombert has joined the channel [15:30] Wombert: ohai [15:31] Wombert: I can get the response argument of the http.createServer() callback to be null by sending an Upgrade: header in the request [15:31] Wombert: quite reproducible [15:31] Wombert: is that intentional? [15:32] Wombert: oh durr [15:32] Wombert: should try 0.1.94 ;) [15:32] riottaba has joined the channel [15:40] JimBastard has joined the channel [15:45] rektide: jan____: have you looked at CodeMirror? its more than just a highlighter, its an editor, but its been around for a while and i'm a fan of it [15:46] jan____: I don't need an editor, benoitc recommended it, too [15:46] micheil: hey, anyone got any modules their working on? [15:46] rektide: *nod* [15:46] micheil: link me. [15:46] micheil: I'll tell you later. [15:46] tmpvar: http://github.com/tmpvar/jsdom [15:47] tmpvar: wow, codemirror is horrible looking [15:48] tmpvar: and where are my line numbers? [15:48] nefD: not so much a module, but wtf.. http://github.com/Marak/zztmmo :D [15:49] micheil: well, anything node.js related. [15:50] jan____: micheil: mustache.js is commonjs / node compatible [15:50] excsm has joined the channel [15:50] micheil: jan____: that's cool, got a link? [15:53] steadicat has joined the channel [15:53] jan____: http://github.com/janl/mustache.js [15:53] micheil: oh well, goes for everyone, if you're working on a module for node or are working on a cool site / app built with node, or know of one of either of the two, email me: micheil@brandedcode.com [15:53] jan____: use a release tag: http://github.com/janl/mustache.js/tree/0.2.3 [15:53] excsm has joined the channel [15:54] micheil: okay [15:54] micheil: shall do. [15:55] nefD: micheil: Just out of curiosity, what is this for? Site? Presentation? [15:55] micheil: something like that [15:55] micheil: I'll have more news around the end of the week [15:58] sveimac has joined the channel [15:59] JimBastard: micheil: you doing a community site? [15:59] JimBastard: if so, http://github.com/marak [15:59] micheil: JimBastard: very much sort of [15:59] JimBastard: cool man [16:00] excsm has joined the channel [16:00] micheil: JimBastard: what, take my pick? [16:00] JimBastard: hit me on the gchat if you need help / want to chat about it [16:00] micheil: irc? [16:00] kriszyp: I've got a lot node modules/projects in http://github.com/kriszyp as well [16:00] micheil: I don't have your gchat, iirc. [16:00] kriszyp: if that is what you are looking for [16:00] micheil: kriszyp / JimBastard: let me know of your latest peices. [16:01] JimBastard: ACTION says look at the github and pick everyone that has more then 20 watchers  [16:01] JimBastard: should be all JS [16:01] JimBastard: and 90% node [16:01] riottaba_ has joined the channel [16:02] riottaba__ has joined the channel [16:02] kriszyp: heh, yeah, you could apply that filter to my stuff, micheil [16:03] kriszyp: JimBastard's filter results from kriszyp's git: nodules, pintura, perstore, jsgi-node, node-promise (these are the latest/most active node projects) [16:05] joshowens has joined the channel [16:05] joshbuddy has joined the channel [16:09] pdelgallego has joined the channel [16:09] joshbuddy_ has joined the channel [16:10] keyvan has joined the channel [16:10] ncb000gt has joined the channel [16:11] tlrobinson_ has joined the channel [16:15] stevendavie has joined the channel [16:17] riottaba has joined the channel [16:21] riottaba_ has joined the channel [16:23] cloudhead has joined the channel [16:25] ncb000gt has left the channel [16:27] riottaba has joined the channel [16:30] riottaba__ has joined the channel [16:30] joshbuddy_ has joined the channel [16:30] colin__ has joined the channel [16:31] deanlandolt has joined the channel [16:33] fizx has joined the channel [16:33] fizx has joined the channel [16:34] dgathright has joined the channel [16:36] N`_ has joined the channel [16:36] Yuffster has joined the channel [16:37] amerine has joined the channel [16:37] riottaba has joined the channel [16:38] riottaba_ has joined the channel [16:38] TobiasFar has joined the channel [16:39] derbumi_ has joined the channel [16:45] riottaba has joined the channel [16:47] nefD has joined the channel [16:47] MattJ has joined the channel [16:48] dgathright has joined the channel [16:49] joshowens has joined the channel [16:50] bpot has joined the channel [16:55] SamuraiJack_ has joined the channel [16:58] isaacs has joined the channel [17:01] robrighter_ has joined the channel [17:02] ineation has joined the channel [17:05] kevwil has joined the channel [17:06] _ry: what happens if you throw an error during an event in browser js? [17:07] nefD: depending on the error, I believe execution continues if possible (I could be wrong) [17:08] nefD: bubbling still occurs, im fairly certain [17:09] micheil: isaacs: and you agree? http://github.com/miksago/node-websocket-server/blob/master/Rakefile#L57 [17:09] _ry: micheil: groan - ruby dependency? [17:09] micheil: yeah, bubbling happens, if the error's uncaught, it'll show up in the console [17:10] CIA-75: node: 03Ryan Dahl 07master * r615d890 10/ (92 files in 11 dirs): Upgrade V8 to 2.2.9 - http://bit.ly/a4pYn6 [17:10] micheil: _ry: I'm the only developer, so it's to make my development easier [17:10] _ry: :) [17:10] micheil: _ry: if kiwi ever works, I'll add that in, basically it updates the package.json and pushes to npm, maybe others [17:11] sveisvei has joined the channel [17:11] micheil: v8 trace api? neat [17:12] nefD: one sec, got a demo for ya ry [17:12] binary42 has joined the channel [17:13] nefD: huh.. well, it doesn't continue here (no try/catch involved): http://www.sevrd.com/eventerror.php [17:13] towski has joined the channel [17:14] micheil: it wouldn't continue, but it should log [17:14] nefD: it does, yeah [17:16] micheil: night chaps. [17:16] Gruni has joined the channel [17:20] _ry: i wonder if node should do something similar [17:22] ceej has joined the channel [17:23] jfd_ has joined the channel [17:26] isaacs: _ry: that event chain stops [17:26] isaacs: _ry: but your program is still around [17:27] ineation has joined the channel [17:27] isaacs: micheil: looks nice. [17:27] isaacs: _ry: can that stack trace API help with our rethrow bs? [17:34] _ry: isaacs: not sure [17:35] V1 has joined the channel [17:35] dgathright has joined the channel [17:36] enherit has joined the channel [17:36] stephenlb has joined the channel [17:41] N` has joined the channel [17:41] JimBastard: yo kriszyp , do you know rails at all? im thinking we need an activerecord => json schema coverter [17:41] keyvan has joined the channel [17:41] JimBastard: ive already got the routes.rb => routes.js convertor [17:42] JimBastard: with a few more of these tools we can start making a convincing case for migrating rails apps [17:42] isaacs: _ry: also, you know, you don't need ruby to install micheil's websocket-server [17:42] binary42: JimBastard: Or just back things with CouchDB and avoid AR? [17:42] JimBastard: binary42: legacy applications [17:42] isaacs: _ry: that's just a shortcut for him to push it to npm's registry. but you can install it with just "npm install websocket-server". though, arguably, npm dependency is even worse ;) [17:42] JimBastard: we have a rails app in play [17:42] binary42: JimBastard: Well, in that case, a dump to couchdb option. ;-) [17:42] JimBastard: how would that help [17:42] samsonjs has joined the channel [17:43] binary42: JimBastard: Just sync up with couchdb which would allow reading data and writing data via HTTP. [17:43] binary42: JimBastard: Just a nicer way to deal with your DB. [17:43] JimBastard: im not dealing with a DB [17:43] kriszyp: JimBastard: I don't rails, but activerecord -> json schema seems like to would begreat [17:43] JimBastard: im dealing with a monsterous rails app [17:43] JimBastard: which isnt going away [17:44] binary42: JimBastard: Yeah... with active record right? [17:44] binary42: JimBastard: I'm saying, do a full-time synchronization between the two. I've done it before. It works. [17:44] kriszyp: you mean as way to indicate to a client how to interpret the data from AR? [17:45] JimBastard: kriszyp: me and cloudhead are working on some pretty heavy stuff using json-schema, part of that will be autogenerating forms from json-schema [17:45] JimBastard: so i also need this to work for work [17:45] tlrobinson_ has joined the channel [17:45] JimBastard: and at work we have rails [17:45] binary42: kriszyp: I created what I called super documents which were denormalized records so I could do live sync between dbs with mismatched schemas. [17:45] JimBastard: so id like to be able to easily just rip out the AR models into JSON-schema [17:45] JimBastard: so i dont have to rewrite code [17:45] JimBastard: i could generate the forms based on the JSON im being sent, but its ghetto [17:45] JimBastard: id rather use json-schema [17:45] mrjjwright has joined the channel [17:45] kriszyp: cool, have you seen inputex? [17:45] kriszyp: are you doing something like that? [17:46] binary42: You don't really need schema info other that your need for attribute getters and setters but ES-5 style code gen wouldn't be portable. [17:46] binary42: So I'd do a sproutcore style get/set implementation and that doesn't need a schema. [17:46] kriszyp: http://javascript.neyric.com/blog/2009/01/26/json-schema-and-inputex/ [17:46] JimBastard: similiar to that kriszyp but forms are only one component in the library [17:46] kriszyp: nice [17:47] JimBastard: im just trying to think if there is an easy way to generate json-schema based on an AR model [17:47] JimBastard: i know little about rails [17:48] JimBastard: binary42: i need schema to determine what type of validate behavior get's attached to in my input [17:48] JimBastard: and we are doing IE-6 support [17:48] binary42: JimBastard: Hmm. Validators could be named, yes. Types tend to be implicit from those though. [17:50] binary42: They're all ducks till you start punching the monkeys anyway. [17:50] JimBastard: yeah [17:50] JimBastard: hrmmm this is a bit fucked [17:50] JimBastard: why cant everyone just have a pure js stack, sigh [17:50] sveimac has joined the channel [17:51] binary42: JimBastard: Because JS sucks sometimes? monoglots ftl. [17:51] JimBastard: lol [17:51] JimBastard: i just asked for halp in the RoR room, this will end well im sure [17:52] binary42: Hahah. I hope by end well you mean the room spontaneously combusts? [17:52] JimBastard: yeah [17:52] mertimor has joined the channel [17:53] charlesjolley has joined the channel [17:55] aryounce has joined the channel [17:56] JimBastard: sigh RoR [17:56] JimBastard: [13:56] what does everyoen use for ssh access to a server on linux? [17:57] isaacs: JimBastard: hahahaha [17:57] isaacs: um... ssh? [17:57] binary42: I think I use rm -rf. Just be sure to run it as root or it won't work sometimes. [17:58] isaacs: hehe [17:58] V1: you mean rm -rf * [17:58] brianmario has joined the channel [17:58] binary42: V1: Actually / works better. [17:59] V1: Lets compare them ;) [17:59] binary42: You go first. [17:59] V1: I won't mind i got backups on my slice ;) [17:59] polyrhythmic: JimBastard: you mean an ssh client? for which platform? [17:59] polyrhythmic: PuttyTray is the best on windows [18:00] V1: I use "terminal" <3 [18:00] polyrhythmic: I use ConnectBot on Android and Gnome-Terminal on Ubuntu. On arch I prefer tty1 [18:01] nefD: i really like the terminator launcher for console on linux.. basically a front end to gnome terminal, but lets you do splitting for multiple terminal windows inside each tab [18:01] nefD: plain ole' putty for windows [18:01] binary42: ptty's + tmux = best linux setup. [18:01] polyrhythmic: I've heard terminator mentioned before [18:02] javajunky has joined the channel [18:02] mikeal has joined the channel [18:02] binary42: Though linux has nothing that comes even close to Terminal.app. [18:02] polyrhythmic: what is special about terminal.app ? [18:04] binary42: Reflow, infinite scroll back, antialiasing, keyboard shortcuts don't suck, mouse interaction makes sense in those rare cases (opt+click for example) [18:04] binary42: Split view is nice too. [18:04] nefD: -_- [18:04] binary42: And it's fast. [18:04] nefD: not sure theres anything being offered there that you can do on linux, but alrighty :) [18:04] nefD: *cant [18:05] binary42: nefD: Show me. [18:05] binary42: nefD: They are either a pain, a hack, or not all at the same time. [18:05] binary42: nefD: I've used linux for well over a decade and have tried almost every terminal emulator I could find. [18:05] kevwil has joined the channel [18:06] nefD: mouse interaction is extremely easy, not sure what the problem or lack of functionality is there (copy/paste? opening links? you can do all this stuff with most any terminal launcher), antialiasing is up to your desktop, really.. using compiz, I have it working quite well.. keyboard shortcuts - this is subjective and ultimately customizable [18:07] nefD: infinite scroll back, well, im sure its not *really* infinite, but in any case, this, also, is configurable with most any terminal app [18:07] dgathright has joined the channel [18:07] tlrobinson__ has joined the channel [18:07] binary42: nefD: Navigation in long lines with the mouse. i.e. it knows where the cursor is so I can hit the middle of a 200 character string w/o hitting keys for 5 seconds. [18:07] binary42: nefD: It's infinite. [18:08] nefD: erm.. i can select in the middle of a 200 character string with no problem? no keys involved [18:08] binary42: nefD: It has a smart paging method and has worked fine for many megabytes of text for me. [18:08] binary42: nefD: Not select. Move. [18:08] binary42: It emulates this anywhere because it then does the keystrokes for you. [18:08] nefD: doesn't that depend on what you're trying to move? Its pretty trivial to do this in vi, for example.. do you mean from a bash prompt? [18:09] binary42: Yeah. Anything. [18:09] binary42: It works in anything with a cursor postion. [18:09] nefD: huh [18:09] nefD: i dunno, i guess ive never had a problem with that sort of thing.. cant think of a time when ive said to myself "I hate working with this inferior shell!" :P [18:09] binary42: Little small things. Lots of them. I like linux but they are in denial on certain things. GUIs being the biggest. [18:10] JimBastard: dude [18:10] nefD: oof- gui? [18:10] nefD: really? [18:10] JimBastard: the GUI on ubuntu gives me seizures [18:10] JimBastard: alt tabbing between multiple windows [18:10] binary42: JimBastard: No kidding. [18:10] JimBastard: its literally painful [18:10] nefD: you know its completely and utterly customizable, right? [18:10] JimBastard: lol [18:10] binary42: JimBastard: Not only that but totally inconsistent keyboard bindings. [18:10] nefD: i mean.. [18:10] binary42: You'd think that linux would have the worlds best keyboard support. [18:10] nefD: alright- alright.. nevermind.. not worth it :P [18:10] JimBastard: towski: get on the conf call [18:11] JimBastard: :p [18:11] binary42: nefD: Customization doesn't mean crap. [18:11] binary42: nefD: esp. when you have to do it to each individual program. [18:11] nefD: i'll gladly show you my desktop.. its tuned to give me the most productivity possible while also being really attractive and easy to use [18:11] nefD: and ive never had to bother with specific programs [18:12] nefD: expo? got it.. ive compared with another guys mac who works here.. ive got just about every whizbang feature he has [18:12] jpld has joined the channel [18:12] binary42: nefD: I don't really use that. [18:12] JimBastard: im really in love with the default mac os error sound [18:12] JimBastard: sometimes i play songs with it [18:12] binary42: nefD: I use linux every day. ;-) I just use OS X too. [18:13] nefD: to each his own, right? :D [18:13] JimBastard: *unless you are in an orgy [18:13] nefD: haha [18:13] binary42: I won't go into it here for the sake of others. [18:14] nefD: no matter what we say, no one can deny that OS2/Warp was the best operating system ever made.. [18:14] binary42: hahah. Never used it. [18:14] nefD: oh man, it was awesome (ly awful) [18:14] binary42: I personally miss the days of debug.com in that sense then. [18:15] binary42: You can imagine my wide eyed surprise when I managed to make smoke come out from my CRT. Those were the days (or not). [18:17] towski: JimBastard: thnx [18:17] JimBastard: ;-) [18:21] aryounce has joined the channel [18:24] joshbuddy has joined the channel [18:26] JimBastard: http://github.com/benpickles/js-model [18:26] JimBastard: that looks promising [18:33] inimino: gf3: ping [18:33] gf3: inimino: hey [18:33] mde: JimBastard: You might also want to check out what I've been doing with Geddy's model stuff: http://fleegix.org/articles/2010-04-26-geddy-models-validations-for-node-js [18:33] JimBastard: js-model is pointless [18:34] JimBastard: thanks mde , not what im looking for at all [18:34] robinduckett has joined the channel [18:34] robinduckett: yo yo yo [18:34] gf3: inimino: declaring variables on the same line as the arguments, so you also initialise properties there? [18:34] JimBastard: sup robinduckett [18:34] _ry: we should start thinking about an async ORM layer [18:35] JimBastard: _ry: we are on it [18:35] JimBastard: _ry: you should ask cloudhead [18:35] robrighter has joined the channel [18:35] _ry: is there code up? [18:35] JimBastard: yeah [18:35] JimBastard: i dont want to mispresent what he's on though, it'd be best for him to link you up [18:35] _ry: okay [18:36] robinduckett: I've decided to make an IRC bot in node, because I was bored like that. That's what sup. [18:36] _ry: i see this: http://github.com/cloudhead/resourcer [18:36] JimBastard: yeah thats it [18:36] JimBastard: there is code though [18:36] JimBastard: hes been pasting me [18:36] JimBastard: talking to him on gchat, i think hes inc [18:36] cloudhead: _ry: https://gist.github.com/fa2db53f4817fcf977a0 [18:36] JimBastard: boom [18:37] _ry: i feel that the web framework projects are not addressing the SQL databases of the world [18:37] cloudhead: that's sort of what I'm thinking for the api [18:37] inimino: gf3: actually, usually I don't initialize anything on that line, I just have a variable statement [18:37] cloudhead: SQL is a pain to work with [18:37] inimino: gf3: and then I initialize things closer to where they are used [18:37] _ry: (or actally any databases) [18:37] robinduckett: MySQL is pretty good with DBSlayer [18:37] mikeal: i feel kind of spoiled because I know I'll never have to touch SQL ever again :) [18:37] mde: The problem is coming up with something that will map to both. [18:37] robinduckett: mikeal: you say that, but you try scaling that mongo app :P [18:38] _ry: mde: maybe it doesn't need to map to both [18:38] inimino: gf3: the idea is that you can skip reading the variable declaration most of the time... and a sufficiently smart editor could maintain it for you [18:38] mikeal: i don't use mongo [18:38] JimBastard: lol mikeal is on the couch team [18:38] _ry: but ai think a 'web framework' should have an answer for how to do persistence [18:38] mde: _ry: Yeah, maybe we just need two different things. [18:38] mikeal: and SQL databases aren't known for scaling easily [18:38] robinduckett: I have confused you with some other dude [18:38] robinduckett: With a similar name [18:38] mde: But it's annoying to people who are used to just plugging in the persistence. [18:39] cloudhead: I'm targetting couch primarely [18:39] inimino: gf3: I don't know if that answered your question? Did you mean something else about properties? [18:39] gf3: inimino: ok cool, that makes sense. I'm trying out your whitespace style as I really like the idea of having the ability to visually scan the left edge, to grok a script [18:39] mikeal: it would be interesting to see an API that abstracted all the differeing SQL implementations but didn't map to an object the way traditional ORMs do [18:39] cloudhead: because it's stable, easy, and pretty scalable [18:39] mikeal: something more functional would be really interesting to see [18:39] _ry: i want to drive up adoption this summer - and we can't really ask normal webdevs to use node alone [18:39] _ry: there needs to be a web framework which makes this all easy [18:39] gf3: inimino: I was running intro trouble (line getting too long) because I was also initialising there [18:39] _ry: has a sqlite3 debug mode [18:40] mde: Depending on the definition of "normal," non-relational might even still be a stretch. [18:40] _ry: has a mysql binding [18:40] mikeal: cloudhead: you're targetting at what at couch? [18:40] cloudhead: mikeal: my framework/orm [18:40] mde: Which is why you might want some lowest-common denominator that can do basic CRUD for both. [18:40] mikeal: ok [18:40] cloudhead: mongo doesn't have a concurrency model [18:40] javajunky: _ry: I agree, it'd be ace to sort out some model stuff in the frameworks… I thikn geddy has some model stuff in it. … but express doesn't yet …. node-persistence ? [18:40] mikeal: i wrote one of those for couchdb in Python and then i threw it away in favor of something simpler [18:40] bmizerany has joined the channel [18:40] cloudhead: which makes me not trust it [18:40] mikeal: if you're storing JSON you can just pass around literals [18:41] cloudhead: I'd like to abstract a redis/couch backend [18:41] mikeal: you don't need a lot of the ORM stuff [18:41] JimBastard: node-persistance is a dead lib [18:41] javajunky: poop :( [18:41] JimBastard: kinda [18:41] colin__ has joined the channel [18:41] mde: mikeal: Right, so the non-relational side might not be that hard for basic stuff. [18:41] mikeal: i'm writing a redis/couch replicator :) [18:41] cloudhead: cool [18:41] cloudhead: it's a good combo [18:41] gf3: inimino: thanks [18:41] colin__ has left the channel [18:42] mikeal: mongo doesn't have *any* consistency guarantees, it actually has less that Redis [18:42] inimino: gf3: ah, yeah the only case where I tend to do that is really extremely short functions (3 lines or so) [18:42] colincampbell has left the channel [18:42] mikeal: er than Redis [18:42] inimino: gf3: sure, let me know how it works out for you :) [18:42] cloudhead: mikeal: yea, that's why I wouldn't make it the default backend [18:42] inimino: ACTION happy to be shaking up the norm [18:42] gf3: inimino: will do [18:42] mikeal: at least the mongo guys are getting more honest [18:42] mikeal: they kind of admit now that if you run it long enough you will get a db corruption [18:42] kriszyp: I think deanlandolt is working on a couch adapter for perstore, if you are looking for a persistence framework [18:42] sudoer has joined the channel [18:43] mikeal: here's the thing [18:43] mikeal: all the k/v stores have super simple storage apis [18:43] mikeal: redis, couch, everyone [18:43] mikeal: so simple that a big OO API on top of it just feels like a drag [18:43] mikeal: but once you start to support SQL databases you really need something more [18:44] cloudhead: mikeal: I think the advantage of a wrapper is for validation and simple relationships [18:44] mikeal: i just don't see how you can create an API that will be nice enough for k/v store users to use and also swap out for a SQL db [18:44] cloudhead: yea [18:44] cloudhead: it won't [18:44] mikeal: "simple relationships" [18:44] mikeal: that doesn't scale between stores [18:44] mikeal: there isn't a way to normalize between CouchDB and MongoDB and Redis [18:44] deanlandolt: kriszyp, mikeal: yes, i keep putting it off...i've got a couch adapter for perstore but i need to refacter and keep putting it off [18:45] mikeal: unless you just iterate over every k/v :) [18:45] cloudhead: yea I know that [18:45] deanlandolt: mikeal: there is indeed a way [18:45] mikeal: deanlandolt: adapter? [18:45] deanlandolt: you just support particular features and skip others :) [18:45] mikeal: you should just write a replicator [18:45] mikeal: then you can do push/pull and continuous :) [18:45] mikeal: is perstore a database or an API? [18:45] mikeal: i thought it was a little database for some reason [18:45] mikeal: i could be wrong [18:46] _ry: anyway - node is low-level it desperately needs a framework that can connect to existing mysql libraries and is *simple to install* [18:46] deanlandolt: mikeal: yeah, that would improve matters...i'm working on a _changes listener actually so that we can take changes to couch and serialize them to mongo or sql or whatever [18:46] mde: Lowest common denominator gets you a shit-ton of mileage. [18:46] mikeal: how far along are the SQL apis? [18:46] deanlandolt: mikeal: perstore's an api [18:46] kriszyp: mikeal: it is kind of persistence/model framework [18:46] _ry: mde: i'm looking at you btw ;) [18:46] deanlandolt: mde: lowest common denominator doesn't work, no [18:46] _ry: mde: i think geddy is very promising [18:46] mikeal: mde, _ry: this should target SQL db's *first* [18:46] mde: _ry, after the env-based config stuff, the persistence is next in line. [18:47] mde: mikeal: Right, that's the plan, starting with Postgres. [18:47] kriszyp: so perstore allows you create schemas/validation, define relationships, does some query normalization, do store wrappers for things like validation, pseudo-inheritance, etc. [18:47] _ry: if we can present something to users which is basically the same as rails but in javascript and 100 times faster [18:47] mikeal: couch and redis and all the other NoSQL databases already have really easy to use APIs so it's not a barrier to entry having some kind of ORM [18:47] _ry: it's going to be important [18:48] mde: _ry: Exactly, removing all the friction for adoption. [18:48] kriszyp: and perstore has a SQL adapter as well, so it would be a good fit for working with mySQL and postgre as well [18:48] mikeal: while i'm personally not interested in anything for node that is a copy of a Ruby thing, it's a huge win for adoption [18:48] mikeal: but i think eventually something node specific and awesome like fab will be the biggest win [18:48] _ry: if it takes more than three commands ot gt setup with node and whatever framework - it has failed [18:48] _ry: and node already requires 3 commands [18:48] mikeal: hahahaha [18:48] mde: Heheh [18:48] mikeal: _ry: have ever install SQL bindings for Ruby/Python? [18:49] mikeal: it's a 12 − 24 step process :) [18:49] _ry: yeah gem install mysql [18:49] mikeal: that's *if* mysql libs are already installed [18:49] _ry: they are usually [18:49] brianmario: no no, gem install mysql2 ;) [18:49] mikeal: not on Mac :) [18:49] _ry: i just want to hit the 90% case [18:49] mikeal: maybe homebrew fixed this tho [18:49] _ry: someone needs to package all this software together so people can just use it [18:50] mikeal: agreed [18:50] mikeal: npm install big-fuckin-framework [18:50] JimBastard: "Biggie" [18:50] _ry: yeah - that'd be cool [18:50] JimBastard: *cough* [18:50] _ry: except you have to install node and npm first [18:50] kriszyp: well, basically you can already do that with persevere [18:50] robinduckett has left the channel [18:50] mikeal: who was it that was working on a MySQL client from scratch in TCP? [18:50] kriszyp: you just require pintura with nodules and it downloads the whole thing automaitcallly [18:50] mikeal: node is easy to install [18:50] JimBastard: that bathtub guy mikeal [18:50] kriszyp: the REST handler, the persistence framework, the js utility [18:50] robinduckett has joined the channel [18:50] mikeal: so is npm [18:50] _ry: curl http://myframework.com/install.sh | sh [18:51] _ry: ^-- how it should be done [18:51] _ry: installs node and everything [18:51] mikeal: that could install node/npm/framework [18:51] kriszyp: and you don't need to download/install anything yourself [18:51] mikeal: we need a packager and a registry for the framework thing to work out [18:51] javajunky: _ry: 'kiwi' 'just' requires bash …that can install node and itself, and express from one line I believe ..fwiwi ;) [18:51] _ry: doesn't do it into /usr - -just into ~/.myframework [18:51] brianmario: could the libmysql sources be bundled? [18:51] mikeal: or else it's just a whole mile of pain to install the first plugin for the framework [18:51] kriszyp: zero steps is the optimal number of steps :) [18:52] atmos: just get that shit bundled with new macs [18:52] atmos: ;) [18:52] mikeal: atmos: imagine if we were locked in to a 6 month old version of node :) [18:52] _ry: psh. no one will have macs a year from now [18:52] mikeal: *nothing* would work [18:53] atmos: ALL TH EMORE REASON TO STABILIZE ! [18:53] atmos: get on that _ry! ;) [18:53] _ry: since 0.1.90 we're mostly stable [18:53] _ry: just buggy [18:53] mikeal: freezing the api prematurely is worse that being unstable [18:53] deanlandolt: mikeal++ [18:54] mikeal: s/that/than [18:54] atmos: node has been pretty easy to keep up with since 0.1.90 [18:54] mikeal: yeah, right when i started to get really good at updating libraries for API changes it stops changing :P [18:55] mikeal: javajunky: have you used npm yet? [18:56] javajunky: not recently, I got burned when I first joined the community, I re-wrote it to work with the head node, and then the project stopped getting developed, so I swapped over to kiwi, I've not taken a look at npm since… I do intend to provide my packages to work with whatever package frameworks are out there, but they're all much of a muchness ... [18:56] aryounce has joined the channel [18:57] mikeal: w3.org has the worst email list software every [18:57] olegp has joined the channel [18:57] atmos: i sorta prefer the "kiwi install x" approach versus knowing where the source lives [18:57] mikeal: umn….. that's how npm works as well [18:57] atmos: i haven't checked out npm in a few weeks [18:57] mikeal: npm install softwarename [18:57] atmos: awesome, i'll have to revisit it [18:57] mikeal: they just have to push to the registry [18:58] mikeal: kiwi still has it's own import path doesn't it? [18:58] atmos: pretty much [18:58] mikeal: yeah, i'm just never going to use that [18:58] atmos: also has a virtual env concept though i haven't used it [18:58] mattly has joined the channel [18:58] mikeal: one thing at a time :) [18:58] javajunky: mikeal: what do you mean ? [18:59] atmos: i don't think he likes the load path being fucked with [18:59] javajunky: when you 'seed' things in ,it adds them to teh require.paths array I guess .? [18:59] mikeal: after installing a kiwi module with deps i have to use the kiwi require instead of normal node require [18:59] atmos: as long as i don't have to use submodules i'm cool :) [18:59] javajunky: but you can also just require things in normally. [18:59] mikeal: not multiple versions [18:59] javajunky: mikeal: you shouldn't need to no. [18:59] javajunky: mikeal: if you want to use different versions then yes you would need ot. [19:00] mikeal: npm have the multi-version thing down [19:00] atmos: mikeal: you're in the east bay, right ? [19:00] mikeal: and your dep can be version locked [19:00] mnutt has joined the channel [19:00] mikeal: yes sir [19:00] atmos: is there a bay area js group or was the bayjax thing last week one of the few groups ? [19:00] mikeal: that's what i really care about, dependency locking [19:00] mikeal: there is an SF js group [19:01] mikeal: http://www.meetup.com/jsmeetup/ [19:01] javajunky: mikeal: indeed I believe kiwi does the same thing, but not really my area ;) [19:01] atmos: is it pretty good ? [19:01] mikeal: it's alright [19:01] mikeal: at this point there is just too many people [19:01] mikeal: so no matter what you won't care about what half of the presenters say [19:01] atmos: sucks :( [19:01] mikeal: it's about time to split off an SSJS group and a BrowserJS group [19:02] atmos: i should get a bunch of node hackers together, i bet we could use EY's offices [19:02] atmos: and it'd be hilarious if _ry were to attend since he worked for us like 2+ years ago [19:02] mikeal: if you want it in the east bay you can use the couch.io office [19:02] mikeal: and then we can go to the Trappist after :) [19:02] atmos: tempting [19:02] kevwil has joined the channel [19:03] atmos: there's 3-4 people at work that are really into js and/or node [19:03] atmos: i'm sure a few small meetups could be cool before the masses find out about them :) [19:03] mikeal: the last SFJS meetup had 157people RSVP [19:04] JimBastard: woah [19:04] JimBastard: nyc.js isnt getting numbers like that [19:04] tmpvar: yo JimBastard [19:04] mikeal: it's not just SF [19:04] JimBastard: sup tmpvar [19:05] mikeal: TXJS sold out, doubled their space, then sold out again [19:05] kevwil has joined the channel [19:05] mikeal: the early ticket buyers for jsconfeu when in a few hours [19:05] mikeal: jsconf US was damn near impossible to attend [19:05] atmos: yeah i really wanted to go :( [19:05] tjholowaychuk has joined the channel [19:05] JimBastard: yeah i only got in because i won scurvyconf ^_^ [19:05] mikeal: even jQueryConf had something like 1200 attendees and sold out [19:06] atmos: i guess folks can race to attend jsconf.eu next week :) [19:06] atmos: it's pretty tempting ot try to make it out to it [19:06] mikeal: i got one of the early tickets :) [19:06] Wombert has joined the channel [19:07] mikeal: kriszyp: how is IndexedDB coming along? [19:08] kriszyp: I haven't been paying as much attention to it lately, but it sounds like the mozilla at least is investing time into working out an impl, and think others are at least looking at it [19:08] mikeal: who at Mozilla is working on it? [19:09] kriszyp: Shawn Wilsher has been asking questions on the ML [19:09] javajunky: 'woot' my auth framework for express now provides examples of authentication for http basic, digest, facebook, forms, twitter and yahoo … is that out of the box enough ? ;) [19:09] mikeal: ok [19:09] atmos: javajunky: woot :) [19:10] mikeal: i might just need to go down there for lunch and see what's going on [19:10] JimBastard: fuck does anyone have the Mu snippet for doing sync parsing? [19:10] atmos: javajunky: shipped to heroku yet ? [19:10] atmos: sync parsing ? [19:10] batasrki has joined the channel [19:10] JimBastard: yeah, Mu is all about async mustaching [19:10] JimBastard: i need a plain ole sync mustache [19:10] JimBastard: there is a way to call Mu.compileText [19:10] mikeal: i love that there are competing mustache implementations in javascript [19:10] batasrki: hello, all [19:10] JimBastard: i forgot ehough, its not on the github [19:11] JimBastard: sup batasrki [19:11] atmos: JimBastard: Mu is on github [19:11] JimBastard: yeah i know [19:11] JimBastard: the docs i want are not [19:11] batasrki: I'm having trouble building node on Ubuntu 10.04 from github [19:11] JimBastard: ray sent me one time [19:11] batasrki: I was wondering if anyone else encountered the same issue [19:11] javajunky: atmos: um I don't know ;) I've not push the yahoo strategy to github yet, but I will in the nxt 30 minutes or so... [19:11] JimBastard: builtbot? [19:11] mertimor has joined the channel [19:11] JimBastard: buildbot? [19:11] tmpvar: batasrki, is this a new clone? [19:12] batasrki: tmpvar, yes [19:12] JimBastard: probaly getting an error message, whats the message [19:12] batasrki: it's failing on the make stage [19:12] joshbuddy has joined the channel [19:12] batasrki: Build failed: -> task failed (err #1): [19:12] batasrki: {task: cxx node.cc -> node_4.o} [19:12] atmos: JimBastard: hrmm, yeah i guess when i used it i always used callbacks [19:12] tmpvar: batasrki, can you paste/gist the configure + error? [19:12] batasrki: yeah, give me a sec [19:13] _ry: batasrki: and do "make all-debug" [19:14] batasrki: _ry, and gist that as well? [19:15] batasrki: http://gist.github.com/396396 [19:15] batasrki: configure messages and make all-debug messages gisted [19:17] fictorial has joined the channel [19:18] _ry: batasrki: can you try something for me? [19:18] mscdex: i wonder if it has to do with renaming string.h to strings.h? [19:18] mscdex: at least those latter errors :S [19:18] _ry: batasrki: can you add #include [19:18] _ry: batasrki: to src/node.cc [19:19] _ry: batasrki: #include [19:19] brianmario: has anyone tried http://github.com/masuidrive/node-mysql and/or http://github.com/Sannis/node-mysql-libmysqlclient ? [19:19] _ry: let me know if you want a patch - but just put it in there at the top [19:19] batasrki: _ry, and then make clean && make? [19:19] _ry: batasrki: just make [19:20] mjr_ has joined the channel [19:20] batasrki: _ry, yep that did it [19:20] batasrki: what's the difference between string.h and strings.h [19:22] _ry: no idea. but certain systems define things in one and certain ones in others [19:23] isaacs: mikeal: i got your publish issues worked out. [19:23] isaacs: mikeal: everything's using couchdb attachments now, and you can do "npm publish ." [19:28] tlrobinson_ has joined the channel [19:28] robinduckett: which is better, using buffers and deleting them and remaking them larger (faux resize) or just using a string? [19:29] _ry: batasrki: thanks [19:30] kevwil has joined the channel [19:30] batasrki: _ry, actually *thank you*, for the library as well as this bug fix [19:31] robinduckett: brianmario: I've tried node-mysql-libmysqlclient [19:31] robinduckett: It works fairly well now [19:31] robinduckett: Thanks to me, and my if statement! *superman pose*. [19:45] joshr has joined the channel [19:45] derbumi has joined the channel [19:46] joshr: noders [19:46] batasrki: joshr, [19:49] aryounce_ has joined the channel [19:56] saikat has joined the channel [19:57] aho has joined the channel [20:03] kevwil has joined the channel [20:04] tjholowaychuk: anyone know if npm has remote listing support? [20:04] tjholowaychuk: npm list --remote or something? doesnt seem to be there [20:04] isaacs: tjholowaychuk: not yet [20:04] isaacs: tjholowaychuk: if you have feelings about what that api should look like, please weigh in at http://github.com/isaacs/npm/issues#issue/15 [20:04] isaacs: tjholowaychuk: it's not a hard thing to do. the registry already lists out the data quite nicely. [20:06] dgathright has joined the channel [20:06] isaacs: tjholowaychuk: just haven't gotten to it yet is all. [20:06] tjholowaychuk: cool cool [20:08] tilgovi has joined the channel [20:09] JimBastard: does anyone remember how to do sync calls for Mu? [20:09] creationix has joined the channel [20:10] JimBastard: mu.compileText(textWithMustaches, {})(dataToMerge); [20:10] isaacs: oh, tjholowaychuk, btw, if you just want that info, you can check http://registry.npmjs.org/ to see the list of packages, or http://registry.npmjs.org/haml to see the versions of haml, or http://registry.npmjs.org/haml/0.2.5 to see the data for that version of haml. [20:11] JimBastard: i never got why Mu doesnt have sync templating built in [20:11] atmos: fork that shit [20:11] isaacs: tjholowaychuk: it'd be rad if kiwi could consume npm's registry. i'd really love for more package managers to share that resource eventually. [20:11] JimBastard: might as well just port normal mustache.js to commonjs [20:12] JimBastard: instead of streaming with Mu [20:12] atmos: JimBastard: is there any reason why there's jan's and ray's ? [20:12] JimBastard: jan's doesnt have a commonjs module? [20:12] JimBastard: i remember making mustache.js a commonJS module a while ago it was easy [20:12] JimBastard: ray's is a streaming implementation [20:13] _ry: also compiles to buffers isntead of strings [20:13] tjholowaychuk: isaacs: definitely, I like / dislike things about both but having a really simple / dumb "server" is nice, or lack of server haha [20:13] JimBastard: yeah [20:13] isaacs: tjholowaychuk: it's just a couchapp [20:13] JimBastard: but in my case i dont need any of that, its a one time run script [20:13] JimBastard: not a web app [20:13] isaacs: tjholowaychuk: it's still very beta and has a few issues that i'm still working out, but there's not much to it, really. it's about an afternoon of hacking away from being stable. [20:13] _ry: batasrki: you there? [20:14] _ry: batasrki: can you try a patch for me? [20:14] isaacs: tjholowaychuk: (the registry, that is, npm is still a ways off) [20:14] atmos: isaacs: is the registry online ? [20:14] atmos: err open source ? [20:14] isaacs: atmos: yeah [20:14] atmos: nice [20:14] isaacs: atmos: it's http://github.com/isaacs/js-registry [20:14] teemow has joined the channel [20:15] isaacs: atmos: originally written by mikeal, but mine is the one that's actually running on http://registry.npmjs.org [20:16] atmos: can you ship packages to it ? [20:16] isaacs: atmos: yes! [20:16] atmos: docs online somewher ? [20:16] ewdafa has joined the channel [20:16] isaacs: atmos: npm publish ./my-package-folder/ [20:16] isaacs: atmos: that's what npm uses. [20:16] atmos: word [20:16] isaacs: INORITE!!? [20:16] isaacs: atmos: you can also publish a remote tarball url, or a local tarball [20:16] ineation has joined the channel [20:17] isaacs: atmos: i think npm publish actually also supports stuff like "npm publish pkg 1.2.3", but that'd be dumb, since it'd have to read the registry to get that dat. [20:17] isaacs: *data [20:17] isaacs: atmos: but when we have multiple registries and replication, it might make sense. maybe you have a registry inside the firewall that yo'ure publishing to, and you wanna pull in some specific packages rather than replicating everything, for instance. [20:18] atmos: sounds complex :\ [20:18] atmos: hehe [20:20] NickP has joined the channel [20:20] isaacs: atmos: i'm trying to make it simple for the simple cases. now that you can publish a folder and have it take care of all the tarball/remote/upload stuff for you, it's a lot easier. [20:20] creationix: nice [20:21] isaacs: creationix: hey, man [20:22] creationix: isaacs: hey [20:22] creationix: I'm in Palo Alto, we should have a node meetup sometime [20:22] atmos: i was saying that earlier today :) [20:22] atmos: just come to the city [20:22] bmizerany has joined the channel [20:22] atmos: isaacs: you're in palo alto too ? [20:23] isaacs: atmos: i live in mountain view (working in santa clara right this second) [20:24] atmos: i'm pretty sure i could get the EY offices one evening, we have plenty of space and it's only a couple blocks from bart/caltrain in soma [20:24] mjr_: creationix: we missed you at mikeal's place the other day. Hopefully we can do a node-up while you are here. [20:24] joshr: i'd love to meet up with some noders [20:25] creationix: mjr_: I know, but I didn't get to the hotel till about 10:00 [20:25] creationix: and that's way down in Mountain View [20:25] mjr_: Yeah, that's too late, especially with kids. [20:25] mjr_: Where are you staying? Hotel? [20:25] mjr_: I mean, the entire time in a hotel? [20:26] tmpvar: joshr, where are you? [20:26] creationix: mjr_: I'm hanging out in Palo Alto right now, I don't think I have anything planned tonight, my motel is in the west end of Mountain View [20:26] joshr: work in SF, live in the east bay (albany) [20:27] mjr_: joshr: I, too, work in SF and live in the east bay, Oakland. [20:27] _ry: creationix: yeah - name a night - let's have dinner [20:27] lobridge has joined the channel [20:28] joshr: mjr_: cool, where in SF are you? [20:28] mjr_: creationix: I'm busy tonight, but I can do any other night this week. [20:28] lobridge: hi, I see there now is a clientError event :) [20:28] fictorial: too bad I'm not in CA ever anymore... :( [20:28] fictorial: or GA to Isaacs :) [20:28] rolfb has joined the channel [20:28] mjr_: joshr: My office is 2nd and Bryant, amidst a sea of other startups. [20:28] lobridge: what kind of object is the exception passed to it? [20:29] atmos: mjr_: holy shit, you're really close to me [20:29] isaacs: fictorial: georgia...? [20:29] fictorial: Great America (Y! office) [20:29] xla has joined the channel [20:29] atmos: mjr_: i work in the organic buildin on 3rd and bryant [20:29] fictorial: n/m - I'm on vicodin from the dentist [20:30] joshr: mjr_: i'm at 2nd and folsom, just a few blocks away [20:30] atmos: fictorial: lol [20:30] joshr: SOMANUG [20:30] mjr_: practically a SOMA node meetup happening here. [20:30] joshr: (south of market node users group) [20:30] joshr: nug [20:30] joshr: heh [20:30] isaacs: fictorial: Ahh, i see. [20:31] isaacs: fictorial: i AM working right over there these days, but i'm not with yahoo any more. [20:31] fictorial: right [20:32] joshr: i just inhaled a sandwich from toaster oven [20:33] joshr: and i could totally eat another one [20:33] fictorial: did it burn your nose? [20:33] joshr: heh [20:35] creationix: _ry: my problem right now is my car hasnt gotten here yet, so I'm stuck to walking distances [20:35] creationix: and it's a long drive from your apartment anyway [20:35] atmos: creationix: you just moved out here ? [20:36] creationix: yep [20:36] atmos: where ya workin ? [20:36] creationix: now I'm looking for work, got lots lined up [20:36] javajunky has joined the channel [20:36] atmos: oh awesome, where were you befoere ? [20:37] creationix: I was just working on node at own expense before, and consulting for NYU before that [20:37] atmos: nice, welcome to the bay. :) [20:37] creationix: one of the places out here I'm talking to wants me to work on node [20:37] joshr: nice [20:37] creationix: I would love to get paid to work on node [20:38] _ry: creationix: you can take the train up [20:38] _ry: creationix: caltrain is pretty regular - not sure when the last one back is [20:38] creationix: _ry: good point, I'd probably bring my family up too if I came [20:39] mde: Nice to see other guys with families. :) [20:39] jherdman has joined the channel [20:39] creationix: mde: how did you little ones like the BBQ? [20:40] joshr: mde: family man here, too [20:40] derRichard: how can i make sure that a javascript object referenced by args[0] is a wrapped ClHandle c++ object and nothing else? e.g. when i do something like this: ClHandle *clh = ObjectWrap::Unwrap(args[0]->ToObject()); [20:41] mde: creationix: They had a great time wearing Wolfgang out. :) [20:42] creationix: :D, I'll make the next one at least [20:42] mde: Would be even cooler for them to have other kids to hang with, right. [20:42] mde: Mikeal has a badass little playhouse back there. [20:43] fictorial: ACTION will be a family man around mid-August [20:43] creationix: nice, my kids love slides [20:43] creationix: even my little <1year girl [20:43] joshr: fictorial: congrats [20:43] mde: fictorial: Yeah, congrats. [20:43] fictorial: thanks! [20:43] mde: joshr: How many kids? [20:43] joshr: two boys, 7 and 9 [20:44] mde: Right on, I have a boy who's 7, and 5-year-old twin boys. :) [20:44] mjr_: I fear that if I start talking about my kids that this entire channel will convert from node into SFBA Family Chat. [20:44] joshr: wow [20:44] joshr: 3 boys [20:44] mde: At least we won't be raising teenage girls. [20:44] creationix: I've got an 11 month girl, and a 4 year old boy [20:44] joshr: right [20:44] mde: Yeah, it's bedlam. :) [20:44] NickP has joined the channel [20:44] noonat has joined the channel [20:44] mde: creationix: You have achieved balance. :) [20:45] joshr: ive heard "with boys you pay now, with girls you pay later" [20:45] mde: Haha, exactly. [20:45] lobridge: the clientError is on the http server so you don't get an event for the client itself? (or is the end event called for that client afterwards to do cleanup?) [20:45] creationix: I want about 12 more kids ;) [20:45] mde: You don't have to sit out on the porch and polish your shotgun. [20:45] joshr: yeah, exactly [20:45] mde: creationix: Out here in the Bay Area? That's insanity. [20:45] mjr_: But you CAN still polish your shotgun, right? [20:46] creationix: has anyone here used paperboy? [20:46] joshr: no [20:46] joshr: but i liked that arcade game back in the day [20:47] mde: creationix: I ganked some of the code for the minimal static-file stuff in Geddy. Looked reasonably solid. [20:48] creationix: I'm writing a standalone static file server to be used by node-router [20:48] creationix: just wondering what features people liked from paperboy [20:48] pjb3: When you have a tcpServer, how big will each packet in the stream be? [20:48] atmos: 3EB [20:48] pjb3: I assume for a line-based protocol, it's not save to assume each line will be in one packet [20:49] creationix: pjb3: I'd agree [20:50] creationix: for a line based buffer, just have a layer that buffers input and emits custom messages when each line get's detected [20:50] mjr_: pjb3: when dealing with TCP, especially when dealing with TCP through node, you do really get to pick how big a packet is. [20:50] mjr_: Nor should you build in any assumptions about the packet size. Node may buffer things, and then the kernel may packetize things, all beyond your control. [20:50] stepheneb has joined the channel [20:50] pjb3: creationix: Are there any examples of that you can point to? [20:51] creationix: I tihnk my postgres driver does this [20:51] creationix: but it's not line based [20:51] mjr_: er, you DON'T really get to pick. [20:51] creationix: I just wrote one in c if you want to see it [20:52] creationix: pjb3: http://gist.github.com/396529#LC88 [20:53] joshr: derRichard: some kind of rtti from the c++ side, not sure if there is a v8 specific way or not [20:53] mertimor has joined the channel [20:55] creationix: pjb3: also http://github.com/creationix/sousaball/blob/master/lib/postgres-pure.js#L287 [20:56] fictorial: pjb3: I just whipped this up too: http://gist.github.com/396533 [20:57] siculars has joined the channel [20:58] technoweenie has joined the channel [20:59] pjb3: fictorial: what is this doing? input = input.substr(match[0].length); [21:00] technoweenie: i'm guessing cutting some stuff off the beginning of a string? [21:00] technoweenie: http://www.w3schools.com/jsref/jsref_substr.asp [21:01] pjb3: I get that, trying to figure out from the example why it isn't just input = "" [21:01] pjb3: Here's the code we're discussing technoweenie http://gist.github.com/396533 [21:02] pjb3: parsing data streams in a line based fashion [21:02] DracoBlue has joined the channel [21:02] tlrobinson_ has joined the channel [21:02] technoweenie: no idea [21:02] technoweenie: i didnt write it [21:02] creationix: I would use indexOf("\n") instead of a regex [21:03] technoweenie: that line seems wrong though [21:03] fizx has joined the channel [21:04] creationix: mjr_: Want me to write up an example using buffers? [21:04] creationix: sorry, that was for pjb3 [21:04] ssteinerX has joined the channel [21:05] pjb3: creationix: sure, I'm trying it now [21:05] maushu has joined the channel [21:05] jedschmidt has joined the channel [21:05] atmos: technoweenie: are you in town this week ? [21:06] technoweenie: yea [21:06] technoweenie: we should hang out, i meant to stop by last time i was here [21:06] atmos: already or later ? [21:06] creationix: hmm, buffers don't support indexOf do they? [21:06] N` has joined the channel [21:06] technoweenie: i'm at the github office now [21:07] atmos: ahh cool, i'll track you guys down sometime later this week [21:08] pjb3: Here's what I came up with for parsing data in a line-based manner: http://gist.github.com/396545 [21:08] sveimac has joined the channel [21:08] technoweenie: cool [21:09] pjb3: creationix: But I howtonode article on properly/efficiently parsing streams in a line-based manner would be great [21:10] creationix: good idea [21:10] technoweenie: are these json streams [21:11] technoweenie: there should be a kick ass json stream parsing lib [21:11] creationix: I wonder if doing a for loop over a buffer is faster or slower than converting to a string and using indexOf [21:12] creationix: technoweenie: maybe basic line based JSON streams [21:12] technoweenie: the twitter stream is line based. each tweet object is a separate line [21:12] technoweenie: but the challenge is that sometimes a tweet is broken up into multiple chunks [21:13] technoweenie: so you may bet a chunk like {"a": and another like 1} [21:13] creationix: yeah, you want to abstract the chunks for sure [21:13] technoweenie: yea, i've got some nasty code for it in a couple projects now [21:13] creationix: ok, I'll write up a short article with some sample code [21:14] technoweenie: http://github.com/technoweenie/nori/blob/master/lib/index.js#L111-150 [21:14] technoweenie: actually i plan to dive into the yajl bindings for node.js later this week [21:14] creationix: have fun [21:19] mattly has joined the channel [21:19] joshr: the boost asio stuff had a cool abstraction for dealing with lines [21:19] fictorial: oh hey, that's just eating the line matched - there's a number of ways of doing it. [21:19] joshr: you can tell it to keep filling up the buffer until it finds some pattern [21:20] joshr: and then your cb gets call with that chunk [21:20] joshr: handy as hell for http headers [21:22] Fuxx has joined the channel [21:24] _ry: creationix: for loop over buffer - fast [21:24] _ry: ish [21:24] _ry: :) [21:24] creationix: good, I prefer that method [21:25] _ry: creationix: felixge's multipart parser is very fast now [21:25] _ry: it can do over a gigabit/sec [21:25] creationix: yeah, I remember seeing his tweet about it [21:25] creationix: that's pretty amazing for javascript [21:25] tmpvar: wow, that is impressive [21:25] _ry: which in my opinion is how fast any streaming parser needs to run [21:26] _ry: so that we can safely say that bandwidth is the bottleneck [21:26] creationix: yeah, evented servers break down if you get bogged down in the cpu [21:26] _ry: like everything in node has to be at least gigabit/sec throughput [21:26] _ry: otherwise it's officially a bug [21:27] _ry: :) [21:27] creationix: what hardware is that on? [21:27] tmpvar: haha [21:27] creationix: I only get about 650mb/sec on a small linode [21:27] creationix: and my macbookpro [21:27] creationix: serving buffers from ram [21:27] _ry: creationix: i think he was running it on his macbook [21:27] creationix: that's impressive [21:28] charlesjolley has joined the channel [21:29] javajunky: _ry: does that mean we'll get a multi-part parse back in the official http stack ? :) [21:30] creationix: Ext.js wants to host a node small meetup at their office in Palo Alto [21:30] creationix: anyone interested? [21:30] atmos: i might be [21:30] technoweenie: when [21:30] fictorial: get them to change their license :) [21:30] kriszyp: I assume that multipart parser isn't ready for use yet? [21:30] atmos: i rarely go down to the peninsula :) [21:31] atmos: so what's the difference between ext.js and visionmedia's ext.js on github ? [21:31] fictorial: one's a ui framework, one's probably about extending javascript [21:32] atmos: really crappy choice of names :( [21:32] creationix: atmos: big difference [21:32] technoweenie: ext.js is that prototype ui thing isnt it [21:32] creationix: http://www.extjs.com/ [21:32] bigwavejake has joined the channel [21:32] joshr: possible interest here [21:32] jbrantly: creationix: cool beans, didn't know that. I'm starting with ExtJS next week :) [21:32] atmos: technoweenie: ther'es also an active_support-alike ext.js on github [21:32] joshr: but same thing about the south bay, i don't make it down there very often [21:32] creationix: mjr_: you still around? [21:32] jbrantly: creationix: we spoke quite a bit about node while I was there [21:32] technoweenie: oh weird [21:33] _ry: javajunky: probably [21:33] creationix: _ry: would you be willing to take the train down for a meetup? [21:34] _ry: creationix: sure [21:34] creationix: maybe tomorrow so mjr_ can make it, or tonight? [21:34] _ry: although the city is so much cooler [21:34] tmpvar: _ry, be careful, they are probably going to jump you and try and steal your brain [21:34] creationix: I'm kinda liking it down here [21:34] atmos: creationix: the city is better :) [21:34] joshr: and the east bay? even better than that [21:35] creationix: so when does everyone want to come on down and meet up? [21:35] _ry: :) [21:36] _ry: creationix: i'm open except tomorrow [21:36] creationix: _ry: alright, I'm fine with tonight [21:37] tjholowaychuk has joined the channel [21:38] tmpvar: damn, im jealous [21:38] creationix: isaacs: would you be able to make it to Palo Alto tonight? [21:38] tmpvar: apparently I'm on the wrong side of the country [21:38] creationix: tmpvar: but we did have an awesome hack night when I was up there in NYC [21:38] tmpvar: yeah man, that was great [21:39] siculars has joined the channel [21:39] pointlessjon has joined the channel [21:39] creationix: 525 University Avenue, Suite 23, Palo Alto, CA, 94301 [21:40] tjholowaychuk: assholes lol way to have a meetup there when i leave! [21:40] tjholowaychuk: haha [21:40] _ry: creationix: what time? [21:41] creationix: _ry: what time is good for you [21:41] _ry: creationix: is 8 too late? [21:41] tmpvar: hah, creationix is a party animal [21:41] creationix: fine with me, how about the others coming from that way? [21:41] creationix: I'm staying just down the road [21:42] _ry: creationix: i don't know - you should send a mail to the list - see if anyone one else wnats to come [21:42] creationix: good idea [21:42] _ry: bbiab [21:42] tmpvar: i would like to come. [21:42] tmpvar: lol [21:44] robrighter_ has joined the channel [21:44] isaacs: bmizerany: hey, nice! http://techcrunch.com/2010/05/10/former-microsoft-execs-lead-10-million-round-in-ruby-on-rails-startup-heroku/ [21:44] sztanpet has joined the channel [21:44] bmizerany: isaacs: yeah. thx! [21:45] atmos: bmizerany: :D [21:45] atmos: congrats dude [21:45] bmizerany: isaacs: that wasn't really supposed to go out today, but oh well. hehe. they mentioned our 2 year old, now defunct, online editor [21:45] atmos: i was just gonna ask about that :) [21:45] fictorial: bmizerany: plenty of cash to invest in the node.js support (real-time?) :) [21:46] bmizerany: fictorial: hell yeah! [21:46] bmizerany: I'm pondering how to get CoffeeScript working now [21:46] atmos: bmizerany: any word on that varnish weirdness i was seeing ? [21:46] fictorial: bmizerany: are long-lived tcp/ip and/or websockets connections really on your roadmap? [21:46] bmizerany: fictorial: we'll, that is defiantly a high priority. [21:46] bmizerany: *definitely [21:47] bmizerany: heh [21:47] bmizerany: atmos: oh yeah. one sec [21:47] fictorial: I would bow to the herokuans forever to be able to deploy a node.js based server that could just scale up to handle more client connections [21:48] darkf has joined the channel [21:48] tlrobinson__ has joined the channel [21:48] stephenlb has joined the channel [21:49] brianmario has joined the channel [21:50] tjholowaychuk: creationix: new you would come to the darkside :D (ext) [21:50] creationix: tjholowaychuk: heh [21:51] atmos: both of you guys work there now ? [21:51] bmizerany: atmos: is't varnish for sure. the client request HTTP 1.1 each request, but after a cache-hit, varnish changes it the request to 1.0 so that makes the backend do odd things. If you can force the response to be 1.1 then it's fine; so I'm told [21:51] pedro has joined the channel [21:51] atmos: bmizerany: weird, the headers say 1.1 on the way back from varnish though :\ [21:52] creationix: I don't work anywhere yet [21:52] stephenlb: Guru Question: Max recommended connection count per node/system? Example: 10k/100k -> Ten nodes running 10,000 connections each. (pretend we don't care about payload) [21:53] creationix: 10,000 should be safe, I haven't spent a lot of time working on that though [21:53] aconran has joined the channel [21:53] stephenlb: creationix: good to know [21:54] bmizerany: atmos: what are the headers when varnish makes a request? try a few to see if it happens [21:55] isaacs: creationix: nodejs meetup tonight? on the peninsula no less!? i'm SO there. [21:55] atmos: the headers coming back from curl ? [21:55] creationix: isaacs: :D [21:56] tjholowaychuk: im so... in.. canada haha [21:56] stephenlb: heh [21:57] creationix: tjholowaychuk: if you hopped on a private jet right now, you might make it in time [21:57] tjholowaychuk: im on it [21:57] mscdex: quick question: how can i specify multiple libs in wscript for the build task? [21:57] tjholowaychuk: *my private jet that is [21:57] aconran: tjholowaychuk, you'll be here in spirit ;) [21:57] tjholowaychuk: someday.. haha [21:57] mscdex: right now i have obj.lib = 'foo' but i need 'foo' and 'bar' [21:57] tjholowaychuk: awesome lol [21:58] joshr: rad [21:58] joshr: just got something to work [21:58] _ry: creationix: we can move to tomorrow if that makes more sense [21:58] joshr: that hasn't worked all freakin day [21:58] _ry: creationix: (are you leaving on tuesday?) [21:58] joshr: you know that feeling [21:58] creationix: no, I'm here for three months at least [21:58] _ry: oh [21:59] _ry: what about wednesday? [21:59] creationix: I'm open to whatever [21:59] _ry: :) [21:59] atmos: wednesday works a little better for me [21:59] creationix: I don't know what my schedule will be [21:59] creationix: I've got to get a job first, then get an apartment [21:59] saikat: tomorrow is the big HTML5 meetup, in case people are trying to find a good date [21:59] atmos: saikat: that in the south bay too ? [22:00] saikat: no, SF [22:00] saikat: i believe [22:00] mscdex: nvm, i got it now :D [22:00] saikat: http://www.sfhtml5.org/calendar/13171462/?eventId=13171462&action=detail [22:00] stephenlb: _ry: did Yahoo! beget node? And what was it like meeting Doug Crockford for the 1st time? [22:01] atmos: we should do one on thursday in the city before the github meetup [22:01] _ry: thrusday [22:01] pedro_ has joined the channel [22:01] _ry: ACTION is pro-thrusday meetups [22:02] saikat: instead of hack and slash, we get hack and sloshed [22:02] tmpvar: heh [22:02] atmos: :) [22:02] isaacs: sf has tons of meetups. [22:02] isaacs: meeting in palo alto is more winful. [22:03] joshr: i'll have to wait until next time [22:03] isaacs: in fact, mountain view would be even better. [22:03] creationix: joshr: you busy all week? [22:03] joshr: busy today and tomorrow, then out in the headlands for a field trip with my son's class wed-fri [22:03] aconran: My vote is for Palo Alto, won't even have to leave the office :) [22:04] mscdex: heh there's only one web developer meetup group in my area [22:04] joshr: but i'm definitely interested being a node n00b [22:04] atmos: if we would want to do a regular thing in the city EY said we could use the space [22:04] pedro_ has joined the channel [22:05] franksalim: is anyone going to the html5 meetup tomorrow? [22:05] atmos: just give a week or so heads up and they'll have seats/projector/space etc [22:05] saikat: franksalim: i probably will [22:06] lobridge: * HTTP server emits 'clientError' instead of printing message [22:06] _ry: okay - how about i come down tonight [22:06] lobridge: is that just the message (exception?) [22:06] _ry: seems about equal :) [22:06] lobridge: and does the client get an end event after this happens? [22:07] _ry: but i guess it'll just be me, creationix, isaacs, and extjs? [22:07] isaacs: who's extjs, anyway? [22:07] atmos: technoweenie: interested in riding down to PA tonight? [22:07] tjholowaychuk: isaacs: extjs.com [22:07] aconran: If more people can make it later this week, can certainly push it back a few days... [22:07] isaacs: tjholowaychuk: are you part of extjs? [22:07] _ry: isaacs: aconran is thier leader [22:08] joshr: i looked at extjs' gwt thing a while ago [22:08] tjholowaychuk: isaacs: am now [22:08] DracoBlue has left the channel [22:08] _ry: they're buying up the whole js community [22:08] joshr: we stuck with flex though [22:08] aconran: few people that lurk in here are involed with Ext ;) [22:08] tjholowaychuk: represent! [22:08] isaacs: oh, weird, is this that Ext thing that took the yui library back in the day and illegally released it under GPL? [22:08] isaacs: or is that a different ext? [22:09] lobridge: is there a special channel where you can ask questions? [22:09] creationix: lobridge: no this is it [22:09] isaacs: lobridge: questions about node? you're in it. [22:09] atmos: lobridge: this is the one for those too [22:09] jbrantly: I'm with extjs [22:09] isaacs: or even, apparently, questions about asking questions about node... [22:09] creationix: or the mailing list for a wider audience [22:09] _ry: lobridge: 'clientError' - the client gets 'close' event [22:09] _ry: lobridge: that is req.connection [22:10] lobridge: ok thanks :) [22:10] aconran: isaacs, We'd be glad to discuss any licensing concerns you have... we have had some turmoil surrounding our license in the past. it's pretty clear now, GPL or commercial license. [22:10] fictorial: ... which is sad IMHO. [22:10] isaacs: aconran: i didn't mean to take a side. just that i've heard some ill feelings from a few yui users over that whole issue a while back [22:10] atmos: is MIT not fashionable in the js community? [22:11] _ry: atmos: can you make it tonight? [22:11] isaacs: ACTION <3 MIT [22:11] atmos: _ry: i could, i'm about 40 minutes away [22:11] creationix: I MIT all my personal stuff [22:11] atmos: i'd probably drive down though [22:11] aconran: isaacs, I'm here to support development, create a great framework thats easy to use and all the while get paid to actually continue working on it. Thats the goal [22:11] _ry: atmos: im in the city too - we could share a train [22:12] aconran: get paid to do something we love so that we can continue working on it [22:12] tmpvar: how long is that train ride? [22:12] _ry: ~hour [22:13] atmos: _ry: i don't mind the drive if we're shooting for being down there around 8 [22:13] fictorial: aconran: I suppose you guys are getting a fair number of commerical licensees? [22:13] aconran: Yea, our commercial licensing has been able to support our development. [22:14] isaacs: aconran: ah, ok. was just trying to figure out if it was the same thing. it was slocum's brainchild originally, right? built on yui2 as YAHOO.ext originally? [22:14] isaacs: aconran: however you guys wanna license it is fine with me. [22:14] aconran: isaacs, Yea, originally started out as yui-ext. Grew from there and can run independent of many different core libraries [22:15] aconran: can run on top of 4 diff. core libs (our own) Ext, YUI, jQuery or prototype [22:15] fictorial: aconran: have you gotten a lot of flak for using GPL? [22:16] aconran: The portion that we sell and our value add is all of our componentry/widgetry which has no ancestry from YUI. [22:16] aconran: fictorial, Initially yes. We have a Quid Pro Quid policy... if you are using it under an open source license and not charging money then go ahead and use our stuff [22:16] isaacs: aconran: iirc, the controversy was over the claim that there was yui code in there and jack slocum re-released it under gpl. since yui is BSD, that's not allowed. but meh. [22:16] aconran: if you are building it into a commercial product and charging money for it, buy a commercial license [22:17] fictorial: aconran: I know how it works :) [22:17] fictorial: what I don't know is how much your license is... checking. [22:17] derbumi has joined the channel [22:17] aconran: Enough Ext licensing talk; this is the node channel after all ;) Any questions you have can be sent to licensing@extjs.com and you can cc me directly at aaron@extjs.com [22:18] jsilver has joined the channel [22:19] creationix: so when did we want the meetup? tonight at 8? [22:19] fictorial: aconran: Just curious about it. I don't hear anyone else complaining either. But, OK. [22:20] creationix: we can meet later if more can come [22:21] aconran: My personal vote is for Wed or Thurs. Open to any of the days though. [22:21] isaacs: aconran: same here. i use lots of software that's either gpl or commercially licensed. [22:21] atmos: aconran: same here [22:21] aconran: Give a few more people to jump on the bandwagon too :) [22:21] isaacs: i dig MIT because it's just so simple, but it's more a pragmatic choice than a religious one. [22:22] saikat: i like thursday [22:24] isaacs: oh, wait, i was saying "same here" to fictorial re: licensing. tonight at 8 is great for me. [22:24] mjr_: creationix: I can't make tonight, but I can make any other night this week. My preference would be Wednesday or Thursday. [22:25] mattly has joined the channel [22:25] mjr_: Scheduling is hard. [22:25] creationix: mjr_: ok, how about wednesday then, anyone have problems with that [22:25] mjr_: Like parsing HTTP [22:25] creationix: I'll send a message to the mailing list [22:25] atmos: not me [22:25] isaacs: wednesday works. [22:26] mjr_: quick, lock it in. [22:27] aconran: _ry, that work for you? [22:27] atmos: fwiw i can take 2-3 people down from the city if it helps [22:27] creationix: _ry: I think I still might be able to take up the train tonight to hand out, I'll have to check with my family when I get back to the motel [22:27] creationix: s/hand out/hang out/ [22:28] atmos: creationix: i'd be down to meetup for a bit tonight and hack somewhere [22:28] mjr_: I can also take anybody down from the East Bay, where East Bay is defined to be Oakland/Berkeley. [22:28] creationix: alright, I'll try to meet up in SF with _ry tonight, but we're having a meetup at ext this wednesday unless there are any objections [22:29] joshr: if you say east bay to people in sf [22:29] joshr: they think oakland/berkeley [22:29] joshr: but if you say it to people in the south bay they think fremont [22:29] joshr: at least in my experience [22:29] atmos: they actually think "FUCK, i gotta ride bart?" [22:29] joshr: hahah [22:29] joshr: right [22:29] joshr: that too [22:29] atmos: atleast i do [22:29] mjr_: joshr: that's exactly why I mention in. [22:29] mjr_: it [22:29] joshr: yeah, well [22:30] joshr: we think "crap, i gotta ride caltrain" [22:30] joshr: "but first i have to get to sf" [22:30] joshr: heh [22:30] tekky has joined the channel [22:31] tmpvar: peace! [22:31] joshr: and then we just get in the car and drive instead [22:31] mjr_: We are alienating all of the non SF people. [22:31] atmos: they should just move here :) [22:31] mscdex: heh [22:32] chilts has joined the channel [22:32] chilts: phew, lots of people :) [22:32] chilts: hi everyone! [22:32] rictic has joined the channel [22:33] mscdex: hola [22:33] TobiasFar has joined the channel [22:35] pedro has joined the channel [22:36] technoweenie: atmos: whats going on in PA? palo alto? [22:37] atmos: yeah, node users meetup [22:37] atmos: looks like it'll be wednesday though [22:37] chilts: heh, don't think I can make it from New Zealand :) [22:37] chilts: wish I could though [22:37] technoweenie: atmos: how are you getting there? [22:37] technoweenie: i'm down to go [22:37] atmos: i'll prolly drive [22:38] technoweenie: rock on [22:38] atmos: i'll call ya wednesday afternoon if i don't hear from you [22:38] atmos: where are you staying ? [22:38] technoweenie: i'm crashing w/ kyle [22:38] atmos: cool [22:41] creationix: chilts: yeah, I got so tired of never making the meetups so I moved out here and started one [22:41] creationix: plus I'm hoping to find a job working on node, there are a few here [22:41] chilts: awesome :) [22:42] chilts: hope you get something (and something great) [22:42] creationix: me too, too bad housing is super high here though [22:42] creationix: Texas was way cheaper [22:42] joshr: salaries should be higher, too, though [22:42] mjr_: The job availability / housing cost tradeoff is pretty extreme here. [22:42] joshr: but yeah [22:43] joshr: houses here ain't cheap [22:43] creationix: heh, Arkansas was super cheap, but there is no tech there [22:43] creationix: I bought a house on 2.5 acres for $16k in AR [22:43] joshr: hahah [22:43] atmos: holy shit [22:44] creationix: might get a shoebox here for that much [22:44] mjr_: $16K doesn't even cover my property taxes for a year. [22:44] atmos: that's like < a year's worth of rent in SF [22:44] technoweenie: thats a year of my rent in portland [22:44] joshr: mjr_: where in oakland are you? [22:45] mjr_: I live near Lake Merritt, the neighborhood is called Adam's Point. [22:45] isaacs: creationix: i thought you were in tx? [22:45] creationix: I was, AR was my house before that [22:45] isaacs: ah [22:46] creationix: my condo in Dallas was $75k for about 1000 sq/feet [22:46] isaacs: you know, i could move out there TODAY and own my house outright. [22:46] isaacs: of course, it'd suck a lot. [22:46] creationix: well, most AR houses cost more than that, I got a special deal [22:46] isaacs: i see [22:46] creationix: average is closer to $30k [22:47] joshr: mjr_: ah, so near grand ave [22:48] joshr: nice [22:48] joshr: the market is heating up again around me [22:48] chilts: whoa ... NZ$41 ... my house was NZ$241k (about US$174!!!) [22:48] chilts: and you guys get paid more ... I'm in the wrong country :D [22:48] joshr: saw a bunch of new for sale signs on my run this morning, actually [22:48] joshr: in north berkeley [22:49] creationix: chilts: well, I doubt you'd make more in AR [22:49] joshr: and actually checked out a local open house yesterday in albany as well [22:49] chilts: true [22:49] creationix: I was a supervisor over managers and the co-cto of a newspaper [22:49] joshr: 1200sq ft 3/1 for $750k [22:49] joshr: glad i bought when i did [22:49] creationix: and I was making about $20k/year [22:49] creationix: living in Arkansas is like going back in time [22:50] atmos: hehe [22:50] atmos: i lived in memphis tn for a while, it was a little better but not much [22:56] hassox has joined the channel [23:07] creationix: aww, pjb3 is gone [23:08] creationix: I got a gist for breaking tcp chunks into line messages [23:08] creationix: https://gist.github.com/e6ea8fd42513e449646e [23:12] jsilver has joined the channel [23:14] joshr: cool [23:14] joshr: hmm [23:14] joshr: it would be cool if you could bookmark gists somewhere on github [23:14] joshr: i guess you can fork it [23:15] joshr: oh, duh [23:15] joshr: nevermind, thats exactly what i wanted [23:15] atmos: good luck finding it 2 months later [23:15] joshr: heh [23:15] joshr: well yeah, thats what i was thinking about [23:16] joshr: i was using evernote to store interesting snippets, actually [23:16] joshr: works ok [23:16] joshr: but its just 'one more place' [23:16] atmos: evernote never sync'd properly for me so i gave up on it [23:16] atmos: i'd rather just be able to search my gists [23:17] ceej_ has joined the channel [23:19] joshr: so yeah [23:19] joshr: i forked it and it shows up in my gists [23:19] joshr: if only i could tag it or something [23:20] pedro has joined the channel [23:30] CIA-75: node: 03Ryan Dahl 07master * r35dd0fb 10/ (deps/v8/SConstruct deps/v8/src/platform.h): [23:30] CIA-75: node: Patch v8 build for solaris [23:30] CIA-75: node: Submitted this patch to V8 [23:30] CIA-75: node: http://codereview.chromium.org/1990010/show - http://bit.ly/90MScp [23:30] CIA-75: node: 03Ryan Dahl 07master * r032f651 10/ (10 files in 2 dirs): Check for strings.h - http://bit.ly/bUTDXr [23:35] tmpvar has joined the channel [23:42] kriskowal has joined the channel [23:42] dacc has joined the channel [23:43] CIA-75: node: 03Ryan Dahl 07master * r8e5b91c 10/ (10 files in 2 dirs): [23:43] CIA-75: node: Revert "Check for strings.h" [23:43] CIA-75: node: This reverts commit 032f651824869c429cc24fbd9f7a23e84ed34b1f. - http://bit.ly/cL9FFO [23:43] CIA-75: node: 03Ryan Dahl 07master * rc90e44e 10/ src/node.cc : Just add an extra include for strings.h - don't try to be cute - http://bit.ly/cZmdOh [23:45] batasrki: _ry, I'm here now [23:46] batasrki: _ry, what do you need [23:47] aryounce has joined the channel [23:48] mjijackson has joined the channel [23:48] _ry: batasrki: can you test HEAD [23:49] stepheneb has joined the channel [23:50] batasrki: _ry, sure. [23:53] hellp has joined the channel [23:54] batasrki: _ry, the patch works. node.js install off of HEAD was successful [23:55] _ry: cool thanks [23:58] nym has joined the channel [23:58] mscdex: sigh, now I remember why I dislike programming in C++ [23:58] drudge has joined the channel