[00:06] JimBastard has joined the channel [00:06] isaacs_ has joined the channel [00:06] WALoeIII has joined the channel [00:37] saikat has joined the channel [00:41] ChrisPartridge has joined the channel [00:41] ChrisPartridge: Evening all, just trying to have a play with node.js/express/perstore - how can i get express to listen on external IP of my test server? Currently can only access it via localhost on the machine? [00:49] polotek has joined the channel [00:49] admc_ has joined the channel [00:49] admc has joined the channel [00:50] WALoeIII has joined the channel [00:51] JimBastard: sup ChrisPartridge [00:51] JimBastard: where are you hosting your node app @ [00:52] JimBastard: where is your test server? [00:54] isaacs has joined the channel [01:15] keeto_ has joined the channel [01:16] ditesh|cassini has joined the channel [01:19] tilgovi has joined the channel [01:19] softdrink has joined the channel [01:22] mikeal1 has joined the channel [01:28] ChrisPartridge: JimBastard: The test server is a CentOS box I have running on the network [01:29] ChrisPartridge: The app is running (can access it via SSH+Lynx) - however trying to access the app via the network appears to render no result on port 3000 [01:30] franksalim has joined the channel [01:32] JimBastard: back [01:32] JimBastard: ChrisPartridge: who is your network admin [01:32] kriskowal has joined the channel [01:32] JimBastard: where is your server located? [01:32] ChrisPartridge: JimBastard: next to me :) [01:32] JimBastard: its probaly a firewall [01:33] ChrisPartridge: Hm, so by default it listens on all IPs? [01:33] JimBastard: can you connect to the machine if you run a normal web server on that port? [01:33] JimBastard: do you have multiple IP addresses on the machine? [01:34] ChrisPartridge: Single ip address, can connect to apache and tomcat servers fine [01:34] JimBastard: is port 3000 open? [01:34] JimBastard: do you know how to config your ip tables? [01:35] ChrisPartridge: Yeah, it's definately not ip tables, its configured to allow all from internal [01:35] JimBastard: can you change node to listen on port 80? [01:35] JimBastard: and shut down apache? [01:35] JimBastard: to test? [01:35] JimBastard: ive got to assume whatever issue you are having isnt related to node [01:36] ChrisPartridge: I'm using 'express' - does that change anything? [01:36] JimBastard: no [01:36] JimBastard: im trying to determine if you are a noob or not though [01:36] JimBastard: that will change a lot of things [01:36] ChrisPartridge: I'm certainly a nodejs noob :) [01:37] inimino: hehe [01:37] JimBastard: fair enough [01:38] JimBastard: i mean [01:38] JimBastard: if you can access your express app over http locally [01:38] JimBastard: then you should be able to access it over the wire [01:38] JimBastard: unless there is a firewall / routing issue [01:38] inimino: netstat [01:38] JimBastard: inimino? what you think [01:38] JimBastard: lol [01:39] ChrisPartridge: netstat is certainly not showing *:3000 (or *:80 when i change the port) - its showing localhost:3000 [01:40] inimino: ok, how did you start the server? [01:40] ChrisPartridge: node app.js & [01:40] inimino: I'm not familiar with express but when you create an HTTP server you have to tell node what port to listen on [01:41] JimBastard: i feel like im having a network-fu moment [01:42] inimino: ChrisPartridge: so there should be a createServer() call somewhere in express, and near there a .listen() call [01:42] ChrisPartridge: Yeah the core file says port 3000, host = null if you want to listen on all network addresses. By default its null and port 3000 [01:42] keyvan has joined the channel [01:42] JimBastard: if netstat is showing localhost:3000 then node is running [01:43] JimBastard: maybe you need to config your box [01:43] ChrisPartridge: Yeah its definately running - just not behaving as express says it should (i think) [01:43] inimino: yeah, maybe it's a bug somewhere in express or an API change in node... it does happen... [01:44] ChrisPartridge: Ok, just ran through the code - leaving host = null only listens on localhost, changed the run command to run(3000,my.ip.address) and it works [01:44] JimBastard: ChrisPartridge: you can try http://github.com/Marak/node.js---hello-world-web-server as a control [01:44] inimino: I'd add sys.debug(hostname) to wherever .listen() is called in express and make sure it is getting the right value [01:44] JimBastard: ahhh [01:44] inimino: ChrisPartridge: are you on Solaris? [01:44] JimBastard: his box is not config'd [01:44] ChrisPartridge: Latest stable CentOS [01:45] ChrisPartridge: JimBastard: What would I need to config for it to recognise my internal network address? [01:45] JimBastard: i dunno [01:45] JimBastard: im a noob [01:45] JimBastard: and use ubuntu accordingly [01:45] JimBastard: centos is for people with suspenders [01:45] ChrisPartridge: I think I'll get some suspenders :) [01:45] inimino: hehe [01:46] ChrisPartridge: I mean, I've got mail/apache/tomcat etc all running on *all* ips and they work fine, must be something express specific. Because if I do a manual createServer on port 8000, it listens on my network IP. [01:46] ChrisPartridge: Using express, no go [01:47] inimino: huh, interesting [01:47] ChrisPartridge: Oh well, atleast it's running now and I can play :) [01:47] inimino: :) [01:49] BryanWB has joined the channel [01:51] JimBastard: huzaah [01:52] JimBastard: we gotta start doing analytics on the irc traffic, its been getting busier [01:52] JimBastard: >.< [01:54] steadicat has joined the channel [01:56] isaacs: anyone wanna ask a question for _ry? [01:56] isaacs: i'm sitting at bayjax [01:56] isaacs: he's talking atm. [01:58] tk: ChrisPartridge: if the IP address was what was missing, typically 0.0.0.0 works for "listen to everything" [02:04] ChrisPartridge: tk: I think i've just realised my mistake [02:04] ChrisPartridge: I git cloned express, and then later started using kiwi [02:05] ChrisPartridge: the git clone had null set as host, where as the one kiwi grabbed was using "localhost" by default [02:05] ChrisPartridge: when I was diagnosing, I was looking at the git clone core.js file instead of the kiwi core.js - so it's all sorted :) [02:07] tk: ChrisPartridge: heh [02:08] boaz_ has joined the channel [02:09] franksalim has joined the channel [02:10] franksalim: hello from bayjax [02:11] pkrumins: has anyone experienced buffer getting trashed with random binary data? [02:12] pkrumins: i am still debugging, but seems like a bug with nodejs buffers. [02:12] pkrumins: i have a buffer that is supposed to be filled with plain ascii data, but at some point it garbages with binary data. [02:13] pkrumins: i have set the encoding for the buffer to 'ascii' and also have set the response's res.setEncoding to 'ascii' [02:13] tlrobinson_ has joined the channel [02:13] pkrumins: gonna try not to use buffer, and see if the same happens. [02:15] BryanWB: pkrumins: sorry to be a fanboy, but I use the tips i got from your bash emacs mode cheatsheet every day [02:15] BryanWB: pkrumins: tks again [02:15] BryanWB: pkrumins: and i use the a lot w/ node-repl ;) [02:15] pkrumins: you're very welcome! [02:15] pkrumins: yes, they are very handy [02:18] BryanWB: ACTION highly recommends noders checkout the cheatsheet http://bit.ly/9BymgI [02:18] pkrumins: thank you! [02:18] pkrumins: talking about my suspicions about the bug, it seems like there is a bug with buffer [02:19] pkrumins: i replaced the buffer that stores ascii data with `var foo` and did `foo += data` and i am not seeing this behavior [02:20] fizx has joined the channel [02:21] isaacs has joined the channel [02:21] robrighter has joined the channel [02:24] mjr__ has joined the channel [02:25] mjr___ has joined the channel [02:25] airportyh has joined the channel [02:26] fictorial has joined the channel [02:26] mjr__ has joined the channel [02:26] softdrink has joined the channel [02:27] mjr__: Yahoo's wifi I guess won't let me connect reliably. [02:28] _ry: mjr__: mine is okay [02:34] joshbuddy has joined the channel [02:35] quirkey has joined the channel [02:35] pkrumins: _ry, i have discovered a case where ascii data garbage an 'ascii' buffer for some reason [02:35] pkrumins: _ry, making a test case now [02:36] pkrumins: _ry anyone reported anything similar? [02:36] pkrumins: _ry see what i wrote 20 mins ago. [02:40] JimBastard_ has joined the channel [02:40] boaz_ has joined the channel [02:41] phazm has joined the channel [02:42] isaacs: mjr_: it helps if you have a laptop image that was originally a yahoo laptop... [02:42] isaacs: mjr_: pioneer is way more reliable [02:44] freshtonic has joined the channel [02:45] saikat has joined the channel [02:45] nym has joined the channel [02:45] Yuffster has joined the channel [02:46] nym: ACTION dances around a Sombrero [02:48] fictorial: isaacs: I still have one of those (hmm, actually 2) old Macbooks that are half-dead [02:49] isaacs: i decided that i'm gonna demo npm [02:49] isaacs: screw talking. [02:49] isaacs: talking is over rated [02:49] fictorial: Are you guys all @ Y! now then I suppose? [02:49] isaacs: yeah [02:51] nym: yep [02:57] nym: isaacs is taking the stage [02:57] tmpvar has joined the channel [02:57] tmpvar: yo [02:57] nym: hey [02:57] nym: "i'm here to talk to you today" [02:58] tmpvar: oh boy. [02:58] nym: "oooh" [02:58] nym: "so i'm here to talk about npm" [02:58] tmpvar: heh [02:58] nym: "which is a node package manager" [02:58] tmpvar: how'd i do? [02:58] nym: "I'm not going to talk about the other node package managers because i didn't write them" [02:58] tmpvar: hah [02:58] nym: tmpvar: are you the guy who was just up? [02:58] tmpvar: im Elijah [02:58] tmpvar: jsdom guy [02:59] nym: ah [02:59] nym: i want code examples for jsdom [02:59] nym: i went to jsdom.org and didn't see any there either [02:59] tmpvar: http://github.com/tmpvar/jsdom/tree/master/example/ [02:59] tmpvar: oh, you mean of it working. me too ;) [02:59] tmpvar: jquery == no go, but everything else is good [02:59] nym: ok, well that would be really awesome for your next talk [03:00] tmpvar: ill keep that in mind, i've got one on the 13th at nyc.js. in person this time :) [03:00] nym: cool, you were good but i really would have wanted to see your stuff in action [03:01] tmpvar: yeah, i was told i had 15 mins [03:01] tmpvar: so i kept it brief heh [03:01] pkrumins: _ry: i am now 100% certain it's a bug in node.js's buffers. i saved the data from the stream before it was written to buffer, and i saved the data after it was written to buffer, and in the 2nd case it was garbaged. [03:01] tmpvar: and by brief i mean, a full sprint [03:01] nym: isaacs just showed us npm pulling down jsdom [03:02] tmpvar: im sitting on the laptop by a camera ;) [03:02] tmpvar: right side of the room [03:02] nym: oh hi [03:02] tmpvar: hai [03:02] nym: tmpvar: i thought you were the jsdom guy? [03:03] nym: tmpvar: he was remote... ? [03:03] tmpvar: yeah.. [03:03] tmpvar: he/I was remote lol [03:03] nym: ACTION is confused [03:03] tmpvar: im remote. im watching via the laptop [03:04] tmpvar: download the version thats stable.. [03:04] nym: oh [03:04] tmpvar: "how does the package manager specify.." [03:04] nym: that makes a lot more sense [03:05] jdknezek: should I be concerned if a Buffer#unpack test is failing? [03:07] pkrumins: _ry: i take my words back. [03:07] pkrumins: _ry: write() always overwrote the buffer, i was not taking care of offset myself. [03:09] boaz_ has joined the channel [03:09] nym: ok i am tired i'll come back on here later, good to meet you guys [03:12] PyroPete1 has joined the channel [03:17] isaacs has joined the channel [03:17] isaacs: tmpvar: yeah, need to change that "no periods" rule [03:17] isaacs: it's dumb [03:25] tmpvar: good stuff man, thanks :) [03:26] tmpvar: aww, im no longer the laptop in the corner [03:33] joshbuddy has joined the channel [03:45] ditesh|cassini has joined the channel [03:48] saikat has joined the channel [03:51] bpot has joined the channel [03:54] phazm: tmpvar: how'd it go? [03:54] phazm: wish I could have seen it :-/ [03:56] stevendavie has joined the channel [03:57] tmpvar: it went alright, was a bit nervous [03:57] tmpvar: was weird talking to myself as well lol [03:57] phazm: lol, I hear ya -- I watched ryan's presentation from a few months back (last year sometime) -- he seemed extremely nervous :-P [03:58] tmpvar: yeah, but he's a smart dude [03:58] tmpvar: ^_^ [03:58] phazm: indeed [03:59] jdknezek: Is there a way to execute a snippet from the command line? i.e. some -e switch [03:59] phazm: any ideas on if the presentation was/is being recorded to be put on the yahoo theatre? [03:59] tmpvar: yeah it is [03:59] tmpvar: i have a recording as well [03:59] tmpvar: so i could throw up the bootleg low quality version ;) [04:00] phazm: jdknezek: http://nodejs.org/api.html#child-processes-79 [04:01] jdknezek: phazm: I really meant as an entry point... node -e "require('sys').puts('hello');" [04:01] fernmicro has joined the channel [04:01] phazm: tmpvar: I think I'll wait for the bluray release ;) As for Iron Man 2 however... [04:02] phazm: jdknezek: I have no idea -- I was really happy that I might have actually helped someone, but now you've crushed my dream :'( [04:02] tmpvar: jdknezek, something like http://nodejs.org/api.html#repl-247 ? [04:02] tmpvar: thats "close" [04:03] siculars has joined the channel [04:03] jdknezek: tmpvar: problem is I've bisected the error down to the fs library, specifically readAll, so anything that reads a file locks up [04:04] jdknezek: tmpvar: result being node-repl never launches :[ [04:11] fizx has joined the channel [04:11] isaacs has joined the channel [04:12] derferman has joined the channel [04:12] mjijackson has joined the channel [04:12] JimBastard_ has joined the channel [04:13] JimBastard_: you know thats kinda funny that reddit is down the day one of my node projects is on the front page of prog http://www.reddit.com/r/programming/ [04:13] JimBastard_: so its frozen there since no one can login / vote [04:13] JimBastard_: :-) [04:17] mikeal1 has joined the channel [04:17] micheil has joined the channel [04:18] isaacs: hey [04:19] stevendavie has joined the channel [04:21] micheil: hey isaacs [04:21] isaacs: for anyone who saw my npm demo tonight, the fix for that bug turned out to be a one-line change. [04:21] isaacs: pushing now, and you'll be able to install jsdom with one line. [04:21] saikat has joined the channel [04:24] JimBastard_: nice isaacs [04:24] brianmario has joined the channel [04:25] tk: ohh npm repo actually downloaded tonight [04:26] mape: mornin [04:27] tk: hmm [04:27] tk: node(11399,0x7fff70f55be0) malloc: *** error for object 0x10085f81b: pointer being freed was not allocated [04:28] dgathright has joined the channel [04:31] tk: isaacs: dont su ppose thats the bug? :P [04:31] isaacs: tk nope [04:32] tk: darn [04:33] tk: are there known issues with OS X? :/ [04:36] micheil: _ry: slides? [04:36] micheil: _ry: or video, if it was available? [04:37] BryanWB has joined the channel [04:37] micheil: oh, just found them on twitter. [04:38] JimBastard_: are there any fucking node routing frameworking that will just clone and start and serve static files out the box? [04:38] JimBastard_: what the fuck [04:38] JimBastard_: if anyone says express ill be upset [04:40] JimBastard_: anyone? [04:40] JimBastard_: like is there not just a node webserver that can server files? [04:41] jdknezek: want me to write one? :D [04:41] JimBastard_: i mean [04:41] boaz_ has joined the channel [04:41] JimBastard_: ive got like 4 of them here i did [04:41] JimBastard_: im tired of this shit [04:41] JimBastard_: like [04:41] JimBastard_: i got the mime table good to go [04:41] JimBastard_: what else you need [04:41] JimBastard_: should take 15 minutes [04:41] JimBastard_: i dont think i can create another repo today i might sig fault [04:42] JimBastard_: does anyone know if there is any really lightweight nodejs static webserver? [04:42] JimBastard_: like super unfancy? [04:43] JimBastard_: maybe caches the files [04:46] inimino: I think everybody just wrote their own, JimBastard_ [04:47] JimBastard_: :-( [04:47] inimino: and it's harder to maintain one against all the API changes then to write one from scratch, so... [04:47] JimBastard_: how can you cache file reads in one line [04:47] JimBastard_: into memory [04:47] JimBastard_: until node restart [04:48] inimino: var cache={} [04:48] JimBastard_: 10-4 [04:48] JimBastard_: i got it [04:48] JimBastard_: lol [04:48] JimBastard_: check cache before file read? [04:48] inimino: cache.uri=cache.uri|| ...ok you got it [04:48] inimino: yep [04:48] JimBastard_: aight i guess one more project tonight [04:48] JimBastard_: got a name? [04:48] JimBastard_: node-notarouter [04:48] jdknezek: static [04:49] JimBastard_: node-static [04:49] _ry: whew! [04:49] inimino: points for originality [04:49] jdknezek: \o/ [04:49] _ry: so glad to be done with that talk [04:49] JimBastard_: nice _ry [04:49] JimBastard_: aight snack time, brb [04:49] _ry: talk = 2 days of stressing out and not programming [04:52] jdknezek: is there anywhere we remotes can see the fruits of your stressing? [04:53] _ry: jdknezek: http://nodejs.org/cinco_de_node.pdf [04:53] jdknezek: most excellent :D [04:53] derferman has joined the channel [04:55] jdknezek: also, I think I have most of my ARM woes straightened out [04:56] hassox has joined the channel [04:58] mape: _ry: Nice :) [05:01] _ry: jdknezek: you building on arm? [05:01] jdknezek: _ry: yep, only one failing test, and figured out my v0.1.92 issue [05:02] _ry: jdknezek: which platform are you building for? [05:02] jdknezek: _ry: armv5te, a SheevaPlug [05:02] _ry: ah okay [05:02] _ry: do you have any patches to send up? [05:03] _ry: or was it working out of the box? [05:03] jdknezek: I just forked to commit some patches [05:03] jdknezek: setting up an SSH key on my plug as we speak [05:03] _ry: nice [05:04] _ry: little computer little daemon [05:04] jdknezek: yes :D [05:04] jdknezek: my parallel project is to get mongo running on it, but the lack of atomic integer operations is proving difficult to circumvent [05:06] jdknezek: on a side note, how would one go about intentionally serializing a set of operations from multiple sources? [05:11] derferman has joined the channel [05:11] jdknezek_ has joined the channel [05:14] JimBastard_ has joined the channel [05:14] JimBastard_: http://github.com/mhansen/antinode seems to be about right [05:14] JimBastard_: looks like it has virtual hosts too [05:14] JimBastard_: ACTION clones [05:15] mape: hmm but doesn't proxy? [05:15] JimBastard_: thats easy enough [05:15] JimBastard_: broodmother does that [05:15] JimBastard_: i dont want proxy [05:15] mape: yeah but broodmother isn't open? [05:19] micheil: JimBastard: == marack? [05:19] micheil: * marak [05:19] JimBastard_: halo! [05:19] JimBastard_: you've caught me [05:19] JimBastard_: ACTION gives micheil 50 internet dollars [05:20] micheil: righteo, there's another evil twin on the mailing list: Ryan Fahl [05:20] JimBastard_: i have nothing to do with that [05:20] JimBastard_: my time isnt that worthless [05:20] micheil: :P [05:22] _Fuxx has joined the channel [05:23] mape: Anyone have time to try out http://doc.mape.me/api.html, and hover a headline and click the "submit a patch" text. [05:23] mape: Is it fairly obvious what to do? [05:25] JimBastard_: whose getting maped? [05:26] Aria: Spiffy, mape [05:27] mape: Aria: So makes sence? [05:27] tk: mape: not sure I understand the big white text that pops up.... can you make it any clearer? :P [05:28] mape: tk: Wrap it in a perhaps? [05:28] mape: And use css transform to rotate it [05:28] Aria: Yeah, it makes sense. Though I think having hidden commands like that can be baffling -- what if one never hovered it? [05:29] mape: Think that is how django does it, but I guess that is fair, perhaps an icon to the right instead [05:30] tk: mape: heh [05:31] mape: Guess I should add syntax hilighting to it as well [05:35] _ry: jdknezek_: cool thanks [05:35] CIA-75: node: 03Jonathan Knezek 07master * r874b80b 10/ (3 files): Added c-ares headers for linux-arm - http://bit.ly/cYZEVE [05:35] CIA-75: node: 03Jonathan Knezek 07master * r82c8973 10/ lib/fs.js : Changed undefined pos to null to prevent hanging on SheevaPlug - http://bit.ly/cNlZp6 [05:36] jdknezek_: _ry: my pleasure - glad I could contribute to such a great project :D [05:38] isaacs: that color scheme is hard to look at. [05:38] _ry: isaacs: nice talk - live demos are hard [05:39] isaacs: thanks [05:39] isaacs: i fixed the bug, btw [05:39] mape: isaacs: The bot? [05:39] isaacs: you can publish packages that have . characters in the name. [05:39] isaacs: try it: npm install jsdom [05:39] SamuraiJack has joined the channel [05:39] Fuxx has joined the channel [05:41] mjr_: mape: that submit a patch thing is crazy! [05:41] tk: isaacs: turns out npm only works with a very very up-to-date node [05:41] isaacs: tk: yep. [05:41] tk: isaacs: thats what caused the memory error, (even a build from yesterday) [05:41] isaacs: i solve the "fast changing api" thing by changing with it. [05:42] mape: mjr_: Hopefully useful as well [05:42] isaacs: tk: oh, you were hitting that memory error with npm? i'm sorry, i totally thought it was just some random node erorr. [05:42] tk: isaacs: no it was from install-npm.js [05:42] mjr_: Hey, so here's a thing I saw tonight: Douglas Crockford walks up to _ry and says, "This is really, really great stuff." [05:43] isaacs: mjr_: there are two douglas crockfords. [05:43] jdknezek_: mjr_: D: [05:43] mjr_: isaacs: how do you tell them apart? [05:44] isaacs: mjr_: there's the bearded giant who brings down the hammer on ECMAscript committees, and eats eval and craps json, and taught us all javascript, and is Not To Be Trifled With. [05:44] isaacs: mjr_: then there's the actual person, who is actually quite a normal quiet nerdy guy. [05:44] mjr_: Oh, got it. You can see how I might confuse the two. [05:45] isaacs: well, they are both tall and bearded, so yeah [05:45] mape: mjr_: Added "stronger" syntax hilighting to it now, seems the pervious one lacked a lot of the styles. Not sure it is the correct colorscheme but easier to read [05:47] derferman has left the channel [05:47] mjr_: mape: I love the live updating of markdown syntax. Pretty neat. [05:47] mape: mjr_: And if you click the submit patch you get the diff of your changes [05:48] mjr_: Something about the level 3 headings still doesn't seem right to me. They blend in a bit too much for my tastes. [05:48] mjr_: isaacs: did you work with Crockford at Yahoo? [05:48] sveisvei: mape:the red is way to red:) [05:48] mape: It just pastes them into the textarea now but the idea is that it adds that to a mailto: link and generates a mail that could be sent to maintainer [05:49] isaacs: mjr_: shared a cube wall with the guy [05:49] mape: sveisvei: Hehe yeah, just copypasted a theme from the shjs site, should go through it and make it blend better [05:49] isaacs: mjr_: but we never like collaborated on a project or anything [05:49] isaacs: mjr_: he does code reviews for the yui team. [05:50] stevendavie has joined the channel [05:50] mjr_: isaacs: That's cool. I'm a big fan of his written and spoken words. The man has a really solid command of the English language, which makes talking about computer stuff in public a lot more useful. [05:50] isaacs: mjr_: one of the high points of my career was when i first met him in person, and he said "Oh, you're isaac, I'm glad I finally got a chance to meet you" [05:50] mjr_: dude [05:51] mjr_: That's awesome. [05:51] isaacs: INORITE!? [05:51] mape: mjr_: Better now with the h3? [05:51] isaacs: of course, he might just say that any time he recognizes a name from devel-fronent [05:51] isaacs: *devel-frontend [05:51] sveisvei: mape: i felt like the screen was bleeding :), I might say its not needed, maybe just applyh on mouseover or smth. http://colorschemedesigner.com/#2331TjHstw0w0 [05:51] bdotdub has joined the channel [05:52] JimBastard_: broodmother is suprisingly sturdy [05:52] JimBastard_: ive been crashing drones as hard as i can and it doesnt care [05:52] JimBastard_: since im spawning multiple node.js instacnes [05:52] JimBastard_: instances [05:52] mjr_: mape: yeah, the h3 stands out now more fo sure. I find the indenting a bit awkward. I like a clean left edge for text. But hey, what do I know about typography. [05:52] micheil: hmm.. ws.addListener("connected?" function(){}) should work.. no? [05:53] mjr_: mape: while you are hacking on your viewer, can you figure out some better way to extract hashtag links? I often want to point people to a point in the doc, but have to do this odd right clicking in the nav thing. [05:53] mape: mjr_: Hehe if it feels of knowledge about typography seems overkill, I guess the entire docs could use a little rewamp to fix small things. [05:53] mape: At least you can print it now. ;) [05:54] _ry: mjr_: you around on friday? maybe we can hook up midday then? [05:54] mjr_: BTW, as a joke I mate a "Node screencast" that just scrolls through the documentation. I guess I'm the only one that things this is funny. http://www.youtube.com/watch?v=4OLN2BviFDI [05:55] mjr_: _ry: yeah, Friday would be good. I'll also be at Mikeal's for a bit on Saturday, but I'll have my wife with me, so it might he hard to dig into anything technical. [05:56] _ry: mjr_: cool [05:58] mape: mjr_: If you refresh you can now click on the h2/h3 headings to get the permalink [05:59] mjr_: that's nice [05:59] mjr_: Does the ID have to have the number at the end? Is there a conflict without it? [06:00] mape: Not sure, the person that did the toc before me added it [06:00] mape: Think it has to do with two sections having the same name [06:00] mape: Or rather if two sections had the same name [06:00] mape: Don't think there are two that do [06:01] mape: mjr_: Removed it, guess it can be uncommented if the issue arises [06:01] micheil: yeah, I added it as a failsafe [06:01] mape: Ah k [06:02] mape: Hmm could just prefix them with the parents name [06:02] mape: And it would make sence not to have two sub sections with the same name it wouldn't be an issue [06:03] mape: but then it would be process-process-getuid [06:03] mape: or something close to that [06:03] mape: process/process-getuid isn't to bad though [06:11] joshbuddy has joined the channel [06:18] _ry: we're definitely leaking memory in 0.1.90+ [06:19] _ry: gr [06:19] _ry: very very slowly [06:20] ddollar has joined the channel [06:22] ddollar has joined the channel [06:22] ddollar has joined the channel [06:23] BryanWB has joined the channel [06:24] ddollar has joined the channel [06:25] ddollar has joined the channel [06:27] ddollar has joined the channel [06:27] JimBastard has joined the channel [06:27] JimBastard: http://zzt.nodejitsu.com/ [06:28] JimBastard: first step towards making node zztmmo [06:28] JimBastard: http://github.com/marak/zztmmo [06:28] ddollar has joined the channel [06:28] JimBastard: i seem to remember someone requesting we build more mud based online games [06:28] JimBastard: cant remember who though [06:29] mikeal1 has joined the channel [06:29] JimBastard: anyone with websocket-fu wanna help out? [06:31] saikat has joined the channel [06:33] mscdex: what's the problem? [06:34] javajunky has joined the channel [06:36] JimBastard: ping ryan[WIN] [06:36] JimBastard: sup mscdex [06:36] mscdex: hola [06:37] markwubben has joined the channel [06:40] sveimac has joined the channel [06:43] Nohryb has joined the channel [06:49] towski has joined the channel [06:55] ChrisPartridge: Is there an ORM module for node? [06:56] towski has joined the channel [06:56] JimBastard: its being worked on ChrisPartridge [06:56] JimBastard: but there are lot of solutions [06:56] JimBastard: do you want to query your data or do you want rails? [06:56] JimBastard: err, activerecord [06:57] JimBastard: check the modules page [06:57] JimBastard: on the github [06:57] ChrisPartridge: heh, not fussed - an easy way to get some data from a relational db :) [06:58] mscdex: which db? [06:58] ChrisPartridge: again, not fussed - pref mysql/postgre [06:59] mscdex: well there are mysql and postgres driver modules for node, but none implement AR as far as I know [07:00] ChrisPartridge: Yup using node-mysql at the moment, I can wait for an ORM i think [07:01] ChrisPartridge: NodeJS is very interesting to say the least [07:01] mscdex: yep [07:02] mape: ChrisPartridge: There was a spanish guy in here some time ago that was porting djangoto js [07:02] mape: Including the orm [07:03] ChrisPartridge: django? the python web framework? [07:03] mape: Yeah [07:03] mape: http://www.protopy.com.ar/api/api/doff-dbapi.html [07:03] mape: He wanted to know if it could be of use for node users [07:05] mape: Hopefully he got that it would :) [07:09] teemow has joined the channel [07:11] kjeldahl has joined the channel [07:16] ChrisPartridge: mape: Looks interesting, wish I could read el spaniol [07:16] mape: google translate? :) [07:17] ChrisPartridge: genius [07:21] felixge has joined the channel [07:23] micheil: ah, much better, also disable JS while browsing that page after translating it, so that you don't get the contribute a better translation box. [07:25] JimBastard has joined the channel [07:25] mape: chrome does it automagicly [07:25] micheil: wah? [07:26] mape: if you go to that page chrome shows you a translatebar [07:26] micheil: oh [07:27] micheil: hmm.. would it be useful if node had something that was an include(), which unlike require, persisted the current scope [07:28] micheil: so, in a.js: include("./b"); // b then gets the same current context as a.js has [07:28] mape: or pass arguments? [07:29] mape: require('path', arg1, arg2, arg3) [07:29] micheil: no [07:29] mape: :( [07:29] micheil: I'm thinking in order to create the typical MVC style framewokr [07:30] micheil: like in rails, all the models are pre-loaded in every context, you never need to do: require("models/model_name") [07:30] micheil: so, like create a context (closure?) then tell all the engine to require all of x, y, z into it, then load up anything else [07:31] micheil: because that's the only blocking part of node, requiring files [07:31] micheil: (well, only blocking part by default) [07:31] ChrisPartridge: Thanks for the help/comments today guys :) Bye [07:31] tmpvar: _ry, good job earlier! [07:41] saikat: is it possible to link to a C library from a javascript file running under node? [07:41] tmpvar: saikat, you want addons in the docs [07:41] kjeldahl has joined the channel [07:41] saikat: tmpvar: thanks [07:42] joshbuddy has joined the channel [07:43] tmpvar: saikat, for a super simple example : http://github.com/tmpvar/node-microseconds [07:43] saikat: cool, thanks [07:45] saikat: tmpvar: is there a widely used testing framework right now? I see a bunch under Modules in node [07:46] tmpvar: umm, mjsunit ships with node [07:46] saikat: ah ok [07:46] chakrit has joined the channel [07:47] CIA-75: node: 03Thomas Lee 07master * r3674563 10/ (lib/http.js test/simple/test-http-client-race-2.js): Fix a bug in http.Client where parsers may be prematurely released back to the free pool. - http://bit.ly/dn9tgL [07:49] _ry: tmpvar: thanks - were yu able to see it? [07:49] tmpvar: yep, was a little nervous to really concentrate though haha [07:49] saikat: also, these addons - will what i end up making be node-specific or will this work as an addon to any CommonJS environment? [07:50] tmpvar: saikat, node specific [07:50] _ry: tmpvar: i think your talk went well - virtual talks are always a bit strange though [07:50] tmpvar: thanks man, do you know who the second person who asked me a question was? [07:51] tmpvar: he asked about innerHTML / es3 vs es5 etc [07:52] tmpvar: if not thats cool, I think overall it was a good first talk :) [07:52] _ry: not sure [07:53] micheil: _ry: are there going to be videos of the talks? [07:53] mape: yahoo tend to good with those [07:53] tmpvar: alright folks, i think im tired now. g'night [07:54] mape: nn [07:56] piranha has joined the channel [08:05] JimBastard: aight [08:05] JimBastard: release time then sleepy [08:05] JimBastard: http://github.com/marak/zztmmo [08:06] qFox has joined the channel [08:08] tlrobinson_ has joined the channel [08:08] _ry: JimBastard: cool [08:09] JimBastard: huzaaah [08:09] JimBastard: someone was saying they wanted a mud [08:09] _ry: we need ncurces [08:09] JimBastard: idunno what thta is [08:09] _ry: curses [08:09] JimBastard: ryan[WIN] is the zzt man [08:09] _ry: real console based stuff [08:09] _ry: would be rad to write irssi in node [08:09] JimBastard: you want terminal ? [08:09] _ry: yes [08:10] JimBastard: hahahaha [08:10] _ry: readline, ncurses [08:10] _ry: yo necessito [08:10] JimBastard: like ssh to the game? [08:10] qFox: _ry> i liked your slides. did the presentation go well? [08:10] _ry: qFox: *shrug* it was okay [08:10] JimBastard: i dont think jquery can do that [08:10] qFox: is there a video of it? [08:11] _ry: JimBastard: http://www.google.com/images?q=ncurses&um=1&ie=UTF-8&source=og&sa=N&hl=en&tab=wi [08:11] _ry: qFox: probably eventually [08:11] _ry: ACTION goes to bed [08:11] _ry: night [08:11] qFox: i just heard i wont be at jsconf.eu after all :( due to an office trip. [08:11] qFox: okay. gnite [08:11] micheil: night _ry :) [08:12] JimBastard: ohhh [08:12] JimBastard: i see [08:12] JimBastard: yeah [08:12] JimBastard: menus on the terminal and shit [08:14] qFox: i'm actually planning on writing an (at first simple) irc client for/with node. it'll be a good learning project. [08:15] micheil: JimBastard: how do you shoot? [08:16] JimBastard: with my gun [08:16] JimBastard: figure it out, fork that shit [08:16] JimBastard: read the code [08:16] JimBastard: thats have the fun of zzt [08:16] JimBastard: :-D [08:16] mape: Tutorials? rtfc [08:16] admc_ has joined the channel [08:16] admc has joined the channel [08:18] micheil: oh, right [08:19] BryanWB: anyone working on 0mq (zero mq) bindings? looks like a very cool library [08:26] felixge has joined the channel [08:26] felixge has joined the channel [08:26] JimBastard: its 0-day on zztmmo [08:27] JimBastard: trying to recruit some contributors [08:27] JimBastard: :-D [08:27] JimBastard: also, i do like spawning node instances on broodmother [08:27] JimBastard: i think i got like 40 running [08:27] JimBastard: on a little rackspace box [08:28] javajunky1 has joined the channel [08:30] JimBastard: oops [08:30] JimBastard: i accidentalied it [08:33] JimBastard: aight [08:33] JimBastard: im gonna try to get featured on github again today with a diff project [08:33] JimBastard: jslinq is still holding first place [08:33] JimBastard: :-D [08:38] riottaba_ has joined the channel [08:39] xla has joined the channel [08:41] tobeytailor has joined the channel [08:43] JimBastard: awesome node is crashing [08:43] JimBastard: lol [08:44] JimBastard: wow im getting hammered with traffic [08:44] JimBastard: checking the console for error :\ [08:44] mape: for broodmother? [08:45] dgathright has joined the channel [08:45] JimBastard: yeah [08:45] boaz_ has joined the channel [08:45] JimBastard: its just randomly stopping [08:45] JimBastard: with no message [08:45] JimBastard: wtf is up with that [08:46] JimBastard: it must be a memory leak? [08:46] JimBastard: shit [08:48] dgathright_ has joined the channel [08:50] JimBastard: _ry any idea why node is randomly shutting down with no error message under high load [08:50] mape: he went to sleep [08:50] mape: He did mention a memory leak though [08:50] mscdex: yeah, for 0.1.90+ [08:50] mape: 08:18:56 < _ry> we're definitely leaking memory in 0.1.90+ [08:50] mape: 08:19:08 < _ry> gr [08:50] mape: 08:19:11 < _ry> very very slowly [08:50] rolfb has joined the channel [08:50] JimBastard: this is happening very fast [08:50] JimBastard: lol [08:50] JimBastard: i need monit stat [08:51] JimBastard: i gotta stay up restarting this thing now [08:51] JimBastard: fuck [08:51] JimBastard: i feel like that guy from lost [08:51] mape: don't forget the numbers? [08:52] mscdex: ACTION shakes a fist at IE [08:52] JimBastard: it must be me not closing a resp or something in the proxy [08:52] JimBastard: i gotta test with ab or tsung locally [08:53] phazm: don't suppose anybody has a google wave invite they could spare? [08:53] mape: sure [08:54] mape: mail? [08:54] mscdex: man, if micro$oft could just do one thing like everyone else and go by the XMLHttpRequest standard instead of their proprietary methods, there would be peace on earth [08:54] mscdex: well, among web developers anyway :-) [08:54] mape: Hmm where did my wave invites go.. [08:55] mscdex: or implement websockets, either one [08:55] mape: phazm: Wanted one? [08:56] phazm: mape: indeed [08:56] phazm: mape: sorry, phone [08:58] TomY_ has joined the channel [08:58] JimBastard: TomY_: ! [08:59] dgathright_ has joined the channel [09:06] JimBastard: i guess the only thing i can do now is install monit [09:10] Azeroth-Working has joined the channel [09:10] jfd has joined the channel [09:11] maushu has joined the channel [09:11] sephi-chan has joined the channel [09:11] sephi-chan: Hi [09:12] mape: Hey [09:15] sephi-chan: I plan to develop a webgame (with Ruby on Rails) with realm time components (through WebSocket). Could I use NodeJS as an Interface between Rails and the client (when i need to push data from server to client) ? [09:17] mape: Don't se why not [09:17] sephi-chan: But how can i communicate bewteen NodeJS and Rails ? [09:17] mape: sephi-chan: http://github.com/marak/zztmmo [09:17] N`: sephi-chan: redis can be a cool option for that [09:18] mape: Well I don't know rails but node is pretty open to ways of communicating [09:18] mscdex: zzt! \o/ [09:19] N`: with http://github.com/fictorial/redis-node-client and http://github.com/ezmobius/redis-rb [09:19] N`: and the new pubsub features [09:20] chakrit has joined the channel [09:20] chakrit has left the channel [09:20] chakrit has joined the channel [09:20] chakrit has left the channel [09:21] JimBastard: yeah you could sephi-chan [09:24] sephi-chan: In this case, Rails and NodeJS communicate through the network ? In my rails App, i send data on a internal port (both NodeJS and Rails run on the same machine) ? [09:24] sephi-chan: (i don't want to go on a bad way ^^) [09:25] MattJ has joined the channel [09:30] JimBastard: nice i think im gonna get on the homepage with two projects today [09:30] JimBastard: except i have to keep restarting node randomly ever few mintues [09:32] phazm: fwiw, I had never heard of node.js or redis until a couple weeks ago -- after learning of them, I started writing my own app (about 60% done with the back end now) and I love them both. redis is an amazing nosql database [09:32] JimBastard: hey phazm [09:32] JimBastard: you should blog about that [09:33] phazm: about what? the integration, or just a 'hey ma, look at me' sort of thing? [09:33] JimBastard: alllriiight [09:33] phazm: lol, it's 2:30, sorry.... internal filters are shut down ;) [09:34] JimBastard: 535am [09:34] phazm: let's try that again -- what about my project are you interested in learning more about? [09:34] JimBastard: the part you should blog about [09:34] phazm: allllriiiight [09:35] JimBastard: :-) [09:36] robinduckett has joined the channel [09:36] phazm: my application isn't going to be very applicable to many people, unfortunately -- it's related to logging data from penny auctions. awesome for about 300k people in the world, useless to everyone else :-P [09:36] robinduckett: hey peoples [09:37] phazm: I'll be building an actual auction site with nodejs/redis as well though, and that will be considerably more useful to a larger percentage of people [09:37] phazm: certainly blogworthy, I'd say [09:37] phazm: but that's in like 6-9 months [09:38] phazm: anyhow, time for sleep. [09:38] phazm: ciao [09:38] JimBastard: node http server: Error: Parse Error [09:38] JimBastard: ?!?! [09:40] robinduckett: dunno [09:40] robinduckett: you sending it duff headers? [09:40] JimBastard: i dunno what the internet is doing [09:40] JimBastard: i just posted a live link to my instance all over the place [09:41] robinduckett: ahh someone's sending it duff headers. [09:41] JimBastard: the thing thats annonying [09:41] JimBastard: is node is randomly dying on me [09:41] JimBastard: no message [09:41] JimBastard: so i have no idea [09:41] robinduckett: put a big try catch covering your entire script :P [09:41] robinduckett: I have no idea if that will do anything. [09:42] JimBastard: lol [09:42] robinduckett: doesn't node have an exception event built in? [09:42] JimBastard: its dying without an errors [09:42] JimBastard: silently [09:42] JimBastard: shouldnt do that [09:42] robinduckett: run node with gdb node_g [09:42] robinduckett: run script [09:42] robinduckett: see what happens [09:42] JimBastard: yeah i mean this is a production server [09:42] JimBastard: it only started to happen with high traffic [09:42] robinduckett: how can anything node wise be "production" when node is extremely beta [09:43] JimBastard: truth [09:43] derbumi has joined the channel [09:43] robinduckett: Plus the API changed twice whilst I was learning it [09:43] robinduckett: like, a lot. [09:43] robinduckett: from 0.1.3 to 0.1.9 the API changed dramatically [09:43] robinduckett: Where did promises go? [09:43] JimBastard: thanks boss [09:43] robinduckett: and process.mixin? [09:43] JimBastard: you should blog about that [09:43] robinduckett: OMG YEAH I SHOULD [09:43] JimBastard: alllriiiight [09:44] robinduckett: Seriously though you're a right bastard. [09:44] robinduckett: :D [09:44] robinduckett: joookes [09:44] robinduckett: See this is why people threw rotten vegetables at me during my stand up :( [09:46] mythz has joined the channel [09:46] phazm: JimBastard: http://www.phazm.com/notes/productivity/redis-and-node-js/ -- you are welcome. [09:47] robinduckett: There's uh [09:47] robinduckett: nothing there [09:47] phazm: indeed. But I was told to blog about it [09:47] robinduckett: Ah I see [09:47] robinduckett: What's with the leafs? [09:48] phazm: just updated wordpress (first time in like a year and a half) -- seems to have been a bug [09:48] phazm: I like foliage, so I'm not concerned. [09:48] robinduckett: I like the leafs. [09:49] phazm: alright, really going to bed this time [09:52] kjeldahl has joined the channel [09:52] Gruni has joined the channel [10:00] piranha has joined the channel [10:07] JimBastard_ has joined the channel [10:07] mythz has left the channel [10:12] JimBastard_: wtf is up with my upstart job [10:12] JimBastard_: it keeps saying [10:12] JimBastard_: brood start/running, process 16641 [10:12] JimBastard_: but it exits immediately and doesnt log [10:25] felixge has joined the channel [10:30] JimBastard_: hey felixge does this look wrong to you ? http://gist.github.com/391992 [10:30] JimBastard_: i dont get whats up with declaring the connection first, then the listeners [10:30] JimBastard_: should the listeners go before the connection [10:31] felixge: JimBastard_: what line? [10:32] JimBastard_: i mean the whole block [10:32] JimBastard_: that a proxy code [10:32] felixge: not sure what should be wrong with it? [10:32] mscdex has joined the channel [10:32] JimBastard_: i dunno either [10:32] JimBastard_: im trying to figure out why my shit is crashing [10:32] JimBastard_: it shouldnt [10:32] felixge: why do you think there is something wrong with it? [10:32] felixge: ah [10:32] JimBastard_: cause im getting traffic [10:32] felixge: is node giving you an error? [10:32] JimBastard_: and my server is dying for no reason [10:32] JimBastard_: no [10:32] felixge: Segfault? [10:32] JimBastard_: im kinda losing it here lol [10:32] JimBastard_: no [10:32] JimBastard_: silent [10:32] Gruni has joined the channel [10:32] JimBastard_: no message [10:33] felixge: yeah, you're fucked [10:33] JimBastard_: and i cant get upstart to behave right which is annonying [10:33] felixge: I had problems with this in 0.1.3x [10:33] JimBastard_: if i could just get this respawn script giong i could finally get to sleep [10:33] felixge: and *hoped* it would be fixed in 0.1.9x [10:33] felixge: but I guess there is still some of those awesome bugs lurking [10:33] JimBastard_: do you think you could bless with me an upstart script? i have the template its just not working [10:33] JimBastard_: it starts the script started, but it dies asap with no message [10:33] felixge: JimBastard_: you should go for monit? [10:33] JimBastard_: but if i run the exact same exec from the same dir it works [10:33] felixge: not sure upstart supports automatic restarting [10:33] JimBastard_: i cant even get my upstart script working [10:34] hellp has joined the channel [10:34] JimBastard_: i cant even get it to start [10:34] JimBastard_: via upstart [10:34] JimBastard_: it says the job started and gives me a pid [10:34] JimBastard_: but its dead instantly, no debug output [10:34] felixge: hm [10:34] felixge: paste the script? [10:34] JimBastard_: k [10:35] felixge: JimBastard_: this is what we use: http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/ [10:35] JimBastard_: http://gist.github.com/391994 [10:35] JimBastard_: root@NewFactory:~/nodejitsu# start brood brood start/running, process 16856 [10:36] JimBastard_: :-\ [10:36] tobeytailor has joined the channel [10:39] felixge: JimBastard_: are you sure about: 'exec sudo -u roo' ? [10:39] JimBastard_: i think so [10:39] JimBastard_: maybe not [10:39] JimBastard_: i got that from a slightly diff version of ubu [10:39] JimBastard_: what you thinking [10:41] felixge: oh [10:41] felixge: the logging is wrong [10:41] JimBastard_: ive tried a few format [10:42] felixge: JimBastard_: http://gist.github.com/392002 [10:42] felixge: I think that's the proper version [10:42] felixge: we use that in production [10:43] JimBastard_: it just says start/running and the pid [10:43] JimBastard_: and nothing [10:43] JimBastard_: isnt it suppose to show me an error? [10:43] robinduckett: yey [10:43] JimBastard_: im debating pull the latest node and hoping it doesnt kill everything [10:43] robinduckett: Sannis is using my patch for node-mysql-libmysqlclient :D [10:43] mscdex: heh [10:43] robinduckett: JimBastard: that should output it into the log file [10:43] nsm has joined the channel [10:44] JimBastard_: im on 1.92-15 [10:44] robinduckett: mscdex: did you see my patch? [10:44] mscdex: i think so [10:44] robinduckett: it was an if statement [10:44] robinduckett: I'm amazing. [10:44] JimBastard_: yeah [10:44] JimBastard_: awesome errors [10:44] JimBastard_: i got them [10:44] JimBastard_: node.js 164:9 [10:44] JimBastard_: node.js 164:9 [10:44] JimBastard_: node.js 164:9 [10:45] robinduckett: Jim: that's cool. [10:45] robinduckett: uh [10:45] robinduckett: and he's gone [10:45] robinduckett: lol [10:45] robinduckett: flood [10:45] charlesjolley has joined the channel [10:45] robinduckett: well [10:45] mscdex: yeah i saw that. too bad i ended up not needing mysql after all for the project i was working on :-) [10:46] robinduckett: 164:9 is process.reallyExit(code); [10:46] niko has joined the channel [10:46] robinduckett: mscdex: I really needed to use mysql tho :P [10:46] mscdex: yeah [10:47] mscdex: well, at least it gave me the opportunity to create my first useful node.js module (poormansmysql) [10:48] mscdex: i'm working on socket.io now [10:48] robinduckett: Yeah, I fixed up for node 0.1.9+ / remade the dbslayer module as my first module [10:51] javajunky has joined the channel [10:51] tobeytailor: mscdex, me too [10:51] tobeytailor: :) [10:52] tobeytailor: working on tunneling tcp sockets through socket.io [10:53] robinduckett: returning a function in a function with JS freaks me out [10:53] robinduckett: every time i do it [10:54] robinduckett: :) [10:55] tobeytailor: have you ever worked with fab.js? [10:55] tobeytailor: ;) [10:56] robinduckett: yeah [10:56] robinduckett: it scared the crap out of me [10:56] tobeytailor: it freaks me out when i'm thinking about scope chaining... [11:01] robinduckett: my idea of hell [11:01] robinduckett: var hell = function() {sys.print(arguments[0]); return hell;} hell ('hello') (' ') ('world\n'); [11:01] qFox: intersting alternative to chaining :p [11:02] robinduckett: I don't even know what you would call that other than hell. [11:02] robinduckett: :P [11:02] robinduckett: hell chain [11:05] tobeytailor: :D [11:17] BryanWB has joined the channel [11:22] tlrobinson_ has joined the channel [11:25] marienz has joined the channel [11:59] tlrobinson_ has joined the channel [12:04] kloeri_ has joined the channel [12:05] derbumi has joined the channel [12:06] eyzn has joined the channel [12:10] hassox has joined the channel [12:10] tobeytailor has left the channel [12:15] lobridge has joined the channel [12:16] lobridge: what event do I need to handle to prevent "node http server: Error: ECONNRESET, Connection reset by peer" these from happening? [12:16] lobridge: error event? [12:17] derbumi has joined the channel [12:20] ncb000gt has joined the channel [12:26] felixge has joined the channel [12:32] qFox: there's a catchall error event [12:32] qFox: check the api [12:35] mape: unexpected [12:35] lobridge: uncaughtException? [12:35] mape: yeah [12:36] lobridge: but I won't have all variables in scope that I would like to have right? (like the connection + some more info I need to do a proper cleanup) [12:36] tekky has joined the channel [12:37] qFox: not if they are declared in an inner closure [12:37] qFox: but you could expose them by putting them in an object accessible on the level of your catch [12:37] robinduckett: lobridge: you could make the uncaughtException event cb to a prototype function which returns another function to callback [12:38] qFox: wasnt that the "hell" you mentioned earlier? ;) [12:39] robinduckett: Works though :D [12:39] lobridge: I wasn't having this problem when using 1.33.. [12:40] lobridge: are there plans to fix this (e.g. making it a proper event?) [12:40] robinduckett: That's the only way I've found that easily allows me to put the current object's "this" into a scope that the callback function can see [12:41] robinduckett: MyObject.prototype.ondata = function(thisVar) {return function(data) {thisVar.last_data = data};}; [12:41] robinduckett: Maybe I'm being a dick? [12:43] robinduckett: MyObject.prototype.run = function() {socket.addListener('data', this.on_data(this);}; [12:43] robinduckett: then doing that [12:44] robinduckett: I think there's probably an easier way to do it. [12:46] lobridge: MyObj.prototype.run = function () { var self = this; socket.addListener('data', function (data) { self.on_data(data); }); } [13:02] bweaver has joined the channel [13:03] pavelz has joined the channel [13:03] sephi-chan1 has joined the channel [13:09] stepheneb has joined the channel [13:13] tobeytailor has joined the channel [13:14] davidsklar has joined the channel [13:17] felixge has joined the channel [13:20] jherdman has joined the channel [13:20] riottaba has joined the channel [13:23] ditesh|cassini has joined the channel [13:28] hsuh has joined the channel [13:33] jedschmidt has joined the channel [13:33] mjijackson has joined the channel [13:35] jedschmidt: i love the last few slides of _ry's cinco de node presentation. [13:37] javajunky: yeah s'a good show :) [13:39] KungFuHamster_: got a link to it? [13:39] tlrobinson_ has joined the channel [13:41] javajunky: http://nodejs.org/cinco_de_node.pdf [13:41] jedschmidt: thanks, javajunky. [13:43] KungFuHamster_: yah, thanks [13:45] robrighter has joined the channel [13:45] derbumi has joined the channel [13:48] kriszyp has joined the channel [13:52] kriszyp_ has joined the channel [13:52] ceej has joined the channel [13:56] gf3 has joined the channel [13:59] mikeal1 has joined the channel [14:01] niko has left the channel [14:02] mikeal1 has joined the channel [14:10] riottaba has joined the channel [14:13] tobeytailor has joined the channel [14:15] drostie has joined the channel [14:20] felixge_ has joined the channel [14:20] felixge_ has joined the channel [14:21] Yuffster has joined the channel [14:24] drostie has joined the channel [14:29] scott_gonzalez has joined the channel [14:33] pgriess has joined the channel [14:36] hsuh: why is the pdf named _cinco_ de node ? [14:36] creationix has joined the channel [14:36] creationix: slides to my talk last night http://static.creationix.com/nodejs.pdf [14:37] javajunky: ty tim [14:38] mape: hsuh: the event had cinco in it� [14:40] hsuh: hm, i guess it's because it was on May 5th... (cinco=five in portuguese) [14:41] KungFuHamster_: cinco de mayo is a mexican (and spanish?) holiday [14:41] hsuh: makes sense [14:41] creationix: yeah, very few people showed to my presentation last night for the same reason I think [14:42] creationix: of course the js group here isn't that big to begin with me [14:42] KungFuHamster_: they were out drinking margaritas [14:43] mjr_: The Yahoo thing was really full., [14:43] hsuh: whats easier? to convince server-side people to play with javascript, or client-side js people toplay with server-side programming?... [14:43] mjr_: Maybe 150 people? [14:44] creationix: wow, that's a lot [14:44] creationix: I had like 5 [14:44] creationix: of course, _ry is a better node speaker than me ;) [14:44] alex-desktop has joined the channel [14:45] quirkey has joined the channel [14:46] cerberos has joined the channel [14:47] cerberos: I'm curious about using node.js instead of nginx for serving static pages (css & javascript), I don't need any fancy webserver features, just looking for low memory & cpu. [14:48] cerberos: can anyone hazard a guess as to how they compare? [14:50] mape: cerberos: check _Rys latest slides [14:51] mjijackson_ has joined the channel [14:52] hsuh has left the channel [14:52] mjijackson_ has joined the channel [14:53] mjijackson_ has joined the channel [14:53] mjr_ has joined the channel [14:53] mjr_: ....and a toddler stepped on my computer. [14:55] cerberos: mape: just what I'm looking for, thanks [14:55] cerberos: seems hidden away, should be more prominent :) [14:57] boaz_ has joined the channel [14:58] mape: mjr_: what kinda computer? [14:59] KungFuHamster: a short one? heh [14:59] micheil: anyone know how Socks5 proxies work? [15:00] hsuh has joined the channel [15:00] cerberos: mape: the latest slides are the ones on nodejs.org with the link in the line "See also: slides from jsconf."? [15:01] mape: cerberos: http://nodejs.org/cinco_de_node.pdf [15:01] mape: like a day old [15:04] hellp has joined the channel [15:07] joshbuddy has joined the channel [15:07] cerberos: mape: thanks, so the gist is to use node behind nginx (for security reasons as it's a young project), and that it might be able to serve more concurrent requests than nginx but memory usage is much higher, that's what I wanted to know. Sound great though, love the philosophy :) [15:08] javajunky: yeah I don't particularly get the security angle, surely anything crafted dodgy, e.g. post parameter overflows etc. would just get passed through the node anyway ? [15:08] micheil: I wonder if it'd be possible to make a proxy using node, but then mirror the connection about, so, you can listen on a fake server at ip1, ip1 gets the request, forwards it to ip2, ip2 processes it and passes it back to ip1 [15:10] micheil: cerberos: although, on the same front if you run thin, then you generally also front with nginx [15:10] micheil: just like if I ran MinisterWebserver [15:11] micheil: until I knew I could rely on just Mr Webserver, I'd front it with nginx [15:11] micheil: (however, just don't suggest fronting node with apache. ) [15:11] javajunky: personally I use nginx to handle the caching ;) [15:11] micheil: yeah, that'll be the same as I'll be using it [15:11] micheil: sort of [15:12] micheil: node / rails -> varnish -> nginx [15:12] micheil: unless I need changes instantly, in which case it'll be something like node / rails -> nginx [15:26] robinduckett: What's varnish? [15:27] micheil: robinduckett: a very powerful cache [15:28] micheil: robinduckett: http://tinyurl.com/32ymcgo [15:29] fictorial: robinduckett: resin dissolved in a liquid for applying on wood [15:29] micheil: fictorial: yo. [15:29] micheil: fictorial: wanted something the other day? [15:30] fictorial: hmm, I don't think so. we were discussing websockets briefly I recall. [15:30] micheil: ah, yes [15:30] robinduckett: micheil: hiding lmgtfy behind a tinyurl is so passive agressive that it's surpassed being passive and is now just plainly aggressive :( [15:30] micheil: robinduckett: heh, well? [15:31] micheil: robinduckett: what did you expect me to do? [15:32] robinduckett: micheil: not be so damn aggressive :P [15:32] fictorial: as my wife likes to say: "There is a land called Passivaggresiva, and you are their king." [15:33] robinduckett: as my ex girlfriend liked to say shortly before she left me: "I fucked someone else, stay the fuck away from me." [15:33] mape: fictorial: arga lappar? [15:34] fictorial: robinduckett: you win the internet [15:34] robinduckett: The guy at the end was hard. [15:35] fictorial: speaking of which - I was just looking at JimBastard's ZZT MMO [15:35] fictorial: and saw that Ryzom was now OSS. [15:35] fictorial: which is great but wth, all the assets are for 3DS Max, which is damn expensive last I looked. [15:36] fictorial: ACTION wants a Node.js, WebGL, WebSockets based MMO to come to life ... [15:37] robinduckett: I just want WebGL to be installed on firefox/chrome/ie by default, and for flash to die. [15:37] kevwil has joined the channel [15:37] fictorial: Flash will slowly wither... It will take years. [15:40] binary42 has joined the channel [15:40] robinduckett: Okay so how good would a node -> varnish -> nginx set up be? [15:41] javajunky: why would you bother with nginx in that setup ? [15:41] mape: Anything know of a good "theme" for syntax hilighting? [15:41] javajunky: ..or varnish if the other way around [15:41] javajunky: ;) [15:41] robinduckett: mape: Twilight [15:41] micheil: robinduckett: well, the pure goodness would come from having a massive caching library in front [15:41] mape: That works good on dark backgrounds, not to bright or vibrant [15:42] robinduckett: mape: Twilight [15:42] botanicus has joined the channel [15:42] micheil: robinduckett: it wouldn't matter much for node, and probably not what I'd do for node, but for rails and thin, for sure. [15:42] javajunky: oh good, now I"m searching for teenage vampire flicks. [15:42] robinduckett: hah [15:42] robinduckett: TextMate Twilight [15:42] mape: robinduckett: Hmm,yeah, shjs doesn't do all that though :S [15:42] mape: http://doc.mape.me/api.html [15:43] javajunky: http://userstyles.org/styles/18041 I imagine. [15:43] mape: "do all that" it doesn't add classes to all the parts rather [15:44] robinduckett: ah well [15:44] mape: robinduckett: While youre at it please take a look at the patch feature and give some feedback [15:44] mape: If there is any to give that is [15:45] robinduckett: Patch feature? [15:45] mjijackson has joined the channel [15:45] mape: If you hoover a heading "synopsis" you should get a text, if you click that [15:46] robinduckett: I see [15:46] mape: You should get an interface that allows you to submit patches on the docs but doing realtime editing of the markdown and seeing the result, and when pressing submit patch you get the diff [15:49] mape: Guess the icon to show the ability to edit is crucial [15:51] keyvan has joined the channel [15:52] polo_ has joined the channel [15:53] robinduckett: mape [15:53] robinduckett: dunno if that worked [15:53] robinduckett: but it changed into a diff thing on the left [15:53] BinaryPie has joined the channel [15:53] mape: Yeah the idea (what was implemented earlier) is that it generates a mailto: link with the patch as body [15:54] robinduckett: hmm, that it did not. [15:54] mape: I just changed it into showing in the left edit pane to show the diff [15:54] mape: Since some people don't have a email client setup as default, and then couldn't see the diff [15:54] robinduckett: I wrote some amazing exports documentation then [15:54] robinduckett: :P [15:55] mape: hehe [15:56] mape: But beside the fact that you couldn't find the edit feature and the diff shows in the edit pane it makes more or less sence? [15:58] TobiasFar has joined the channel [15:58] robinduckett: yeah indeed [15:58] mape: Good :) [15:59] robinduckett: so [15:59] robinduckett: I don't want to have to build a massive web framework with node [16:00] robinduckett: what's the best way I can make a small and quick stack [16:00] mape: use an existing? [16:00] robinduckett: that will serve static files [16:00] robinduckett: with caching [16:01] mape: http://wiki.github.com/ry/node/modules [16:01] polo_: I'm trying express' upload example but I am getting an error when uploading! [16:02] polo_: TypeError: Object # has no method 'each' [16:02] polo_: at [object Object]. (/home/polo/Work/project/express-chat/vendor/express/examples/upload/app.js:33:24) [16:02] steadicat has joined the channel [16:02] polo_: sorry if I'm interrupting [16:02] mape: forEach ? [16:02] polo_: I tried [16:02] polo_: didn't work either [16:03] robinduckett: Objects don't have forEach [16:03] robinduckett: forEach is for Arrays only [16:03] polo_: yeah true ! [16:03] robinduckett: for (var prop in object) object[prop] [16:03] polo_: but they don't have each neither ? [16:03] mape: var keys = Object.keys(objectName); for loop the keys? [16:03] polo_: ps: that is not my code [16:03] polo_: that's express example [16:04] polo_: it is a param object [16:04] polo_: maybe it has a each function [16:10] polo_: var keys = Object.keys(objectName); >> [ '0', '1', '2' ] [16:10] javajunky: polo: have you done a git submodule init + update ? [16:11] polo_: mmm I have reinstalled. maybe I did not update [16:11] polo_: :s trying [16:13] polo_: nop nothing happened when updating [16:13] robinduckett: do me a favor polo [16:14] polo_: History says 0.10.0 / 2010-04-30 [16:14] robinduckett: sys.puts(objectName.constructor); [16:15] polo_: function Object() { [native code] } [16:15] robinduckett: hm [16:15] robinduckett: just seems odd [16:15] CIA-75: node: 03Ryan Dahl 07master * r4ce1e1f 10/ lib/http.js : destroy instead of end http connection at end of pipeline - http://bit.ly/cINtD4 [16:17] polo_: it seems the each function is used everywhere in express sources [16:17] creationix has joined the channel [16:17] polo_: so the problem comes from the object [16:18] polo_: on the webpage it is symply : [16:18] polo_: [16:18] polo_: then when call each on this.param('images') [16:20] robinduckett: please sys.puts(this.param.constructor); [16:20] mape: sys.p might be better to use overall [16:20] JAAulde has joined the channel [16:21] qFox has joined the channel [16:22] polo_: just : [Function] [16:22] robinduckett: yeah no worries. [16:22] polo_: this.param does contains the path to the files [16:23] polo_: { '0': [16:23] polo_: { filename: 'jquery.js' [16:23] polo_: , tempfile: '/tmp/express-127316292635440cb9df4cb1b2a29262e56bd952f' [16:23] polo_: } [16:23] polo_: ... [16:24] scudco has joined the channel [16:25] javajunky: polo_ just to be clear you've updated your *SUBMODULES* ? [16:25] javajunky: polo_ are you using kiwi ? [16:25] polo_: yeap [16:25] polo_: no [16:25] polo_: git [16:25] javajunky: so in the express folder you've done git submodules init; git submodules update; [16:25] javajunky: ? [16:25] polo_: yes [16:26] polo_: without the s [16:26] polo_: at submodules [16:26] javajunky: are you running express tip ? …perhaps its broken [16:27] javajunky: git checkout 0.10.1 ? [16:27] javajunky: there was an issue with file uploading in 0.10.0 [16:27] felixge has joined the channel [16:27] polo_: that might be the problem ! [16:28] polo_: but why does git submodule update does not change anything [16:28] javajunky: perhaps its up-to-date.. I don't think the problem fixed was in a submodule [16:28] javajunky: is there anything in the lib/support/ext folder ? [16:29] polo_: not sure [16:29] polo_: in history [16:29] stevendavie has joined the channel [16:29] polo_: my fisrt line is 0.10.0 / 2010-04-30 [16:29] polo_: so not updated [16:29] javajunky: http://github.com/visionmedia/express/commit/970ff87ef65c848e54bbdf230cda9a6a37abb15e [16:29] javajunky: but nothing ext wise. [16:29] polo_: yeah the ext is there [16:31] javajunky: and you're running it from the 'root' as node examples/chat/app.js ..or something similar ? [16:31] polo_: with make [16:31] polo_: make app-upload [16:32] javajunky: hmm should be ok (although I've never tried it) .. [16:32] javajunky: strange... [16:33] polo_: same issue without make [16:33] javajunky: ah, yeah its broken ;) [16:34] polo_: cool [16:34] polo_: I mean not cool [16:34] polo_: but cool it does not come from me [16:34] stephenlb has joined the channel [16:34] javajunky: no wait, my mistake I needed to update my submodules *irony* [16:34] polo_: lol [16:35] javajunky: yeah it works for me fine now github tip now I've updated the submodules [16:35] javajunky: sry [16:35] polo_: (express is itself a submodule of my project maybe it is not right ?) [16:35] polo_: damn [16:35] javajunky: ah yes .. you'll need to go into the express folder and do the submodule command [16:35] javajunky: might I suggest using a package manager such as kiwi to avoid this issue [16:35] polo_: I did it [16:36] sephi-chan1: I can't have many NodeJS server running in same time on a same machine ? [16:36] polo_: Ok let's remove express and clone again [16:37] javajunky: if you clone it into /tmp it will work .. I just did that. [16:37] javajunky: getting it working as a nested submodule you need a git buddy for that [16:37] polo_: sephi-chan1: I think you can [16:37] javajunky: (I usually use kiwi for this stuff as it works well enough for my needs ) [16:38] sephi-chan1: I have a Error: EADDRINUSE, Address already in use when i try to run another nodejs, and the ports of the server.listen(…) are differente in the files [16:39] brainproxy: has anyone tried using coglan's JS.Class w/in a node.js app; i got a reference error from node when trying to require those libraries; [16:40] mikeal1 has joined the channel [16:41] brainproxy: i was able to fix it with a quick hack, but I'm not sure it's a proper fix, not sure why it breaks w/o that fix, and just curious if anyone else here has tried it [16:43] polo_: sephi-chan1: are you sure your new port is not used by any other program ? [16:44] mjr_ has joined the channel [16:45] tmpvar has joined the channel [16:45] tmpvar: howdy [16:45] robinduckett: yo [16:46] sephi-chan1: Yep [16:46] sephi-chan1: But i have an idean [16:46] sephi-chan1: idea [16:47] sephi-chan1: I use Socket.IO-node (http://github.com/LearnBoost/Socket.IO-node) [16:47] sephi-chan1: And it's said that the port 843 is used for flashsocket [16:49] rektide: everyone have a good cinco de node? [16:49] polo_: sephi-chan1: so you're trying to run the second server on port 843 ? [16:50] polo_: sephi-chan1: did you run it as super user ? [16:50] robinduckett: someone explain to me what importance may the 5th has to hispanic people [16:50] brainproxy: http://en.wikipedia.org/wiki/Cinco_de_Mayo [16:50] robinduckett: and why, as a british person, I should give a shit [16:50] sephi-chan1: Yep i run it as root, for port < 1000. [16:51] indiefan has joined the channel [16:51] mjr_: well, the early Mayans big fans of prototypal inheritance, which is controversial to this day. [16:51] mjr_: So that pretty much wraps that up. [16:51] brainproxy: robinduckett: that's EASY! solid excuse to drink large quantities of dos equis [16:51] sephi-chan1: In fact, it run 843 without my ask by default, it's used for flash socket to emulate web socket for non supported browsers [16:52] polo_: sephi-chan1: can't you use another port [16:52] isaacs has joined the channel [16:52] polo_: sorry can't help you more [16:52] polo_: I have my own problem for the moment :( [16:52] towski has joined the channel [16:53] sephi-chan1: i don't know, in fact, it's not a problem, now i know "where" is the problem ;) [16:54] bpot has joined the channel [16:55] mikeal has joined the channel [16:57] sephi-chan1: i open a connection between the client and the WebSocket server. Then my users (connected to the WS server) send Ajax request to the Rails application (it's a webgame). Can the Rails app send data to the WS server (in order to push datas to the clients with this one) ? [16:58] tmpvar: rektide, yeah were you there? [17:01] felixge has joined the channel [17:02] polo_: sephi-chan1: I don't see why you cannot [17:02] polo_: git problem: how do I update my submodules ? [17:03] polo_: I have added express as a submodule of my project [17:03] tmpvar: http://github.com/guides/developing-with-submodules [17:03] polo_: tmpvar: thanks [17:04] tmpvar: google is good [17:04] polo_: but [17:04] jcouture has joined the channel [17:04] rektide: tmpvar: no was not there; wasnt even aware there was a physical event [17:04] polo_: it is not said how to update them [17:04] tmpvar: oh hah, there was [17:04] isaacs: tmpvar: good talk, man. jsdom is cool [17:05] tmpvar: whee! [17:05] kevwil has joined the channel [17:05] tmpvar: isaacs, do you happen to know who asked me the second question? [17:05] isaacs: tmpvar: not sure [17:05] isaacs: do you recall what the question was? [17:05] tmpvar: yeah [17:06] tmpvar: was about es3/5 and he asked how i could do innerHTML without getter/setter support [17:06] mjijackson: tmpvar: where did you talk about jsdom? [17:06] tmpvar: cinco-de-nodejs [17:06] tmpvar: bayjax [17:06] mjijackson: tmpvar: is any of the material online? [17:06] robinduckett: tmpvar: I should probably check if jsdom still gives me segfaults [17:06] tmpvar: i heard the video will be up next week [17:06] tmpvar: robinduckett, you should ;) [17:06] charlesjolley has joined the channel [17:07] mjr_: tmpvar: I didn't see who asked that question, but I didn't actually understand the guy's concern. [17:07] mjijackson: cool. i hope i can remember to go and check it out after a week's time. ;) [17:07] tmpvar: mjr_, yeah I'm just making sure it wasnt Mr Crockford picking on me haha. [17:07] mjr_: You have whatever ES version you want to call what V8 provides. [17:08] mjr_: I'm not sure if he was around by the end of your talk. [17:08] tmpvar: yeah, thats what matters.. i think me claiming platform independence was his concern [17:09] rektide: tmpvar: 2500 miles may have been a little far to go for the celebration [17:09] WALoeIII has joined the channel [17:10] tmpvar: hah, nah I was a laptop in the corner of the room [17:11] rektide: god damn it [17:11] rektide: need Proxy API so badly [17:11] mjijackson: tmpvar: how degrading. they didn't even put you on a projector! [17:11] rektide: stab jsc, make them implement harmony stuff [17:11] rektide: proxy api we need you [17:11] tmpvar: mjijackson, haha i was projected at some point [17:12] mjr_: You were projected the entire time. [17:12] inimino: what, no hologram? [17:13] mjr_: Seriously. Yahoo needs to step up its game. [17:14] mjijackson: i for one think it would be a little nerve-racking to be at yahoo these days [17:14] robinduckett: sigh [17:14] robinduckett: recompiling node in a virtual box [17:14] robinduckett: SLOW [17:14] mjijackson: the crazy hostile almost-take-over by microsoft [17:14] mjijackson: the layoffs [17:15] saikat has joined the channel [17:15] stephenlb: tmpvar: was cool to see you at Yahoo! last night over remote video. jsdom++ [17:17] tmpvar: :) thanks [17:18] brianmario has joined the channel [17:18] stevendavie has joined the channel [17:19] polo_: can't find a solution on the web for git [17:19] polo_: I have added express as a submodule of my project. [17:19] polo_: I suppose when I did that express version was 10.1.0 and now git submodule update is not updating express to 10.1.1. [17:20] polo_: I think this is a cool feature that it does not actually clone the last version of the submodules automatically. [17:20] JimBastard has joined the channel [17:20] polo_: but there should be a git command which says I want to upgrade my sumodules [17:21] polo_: or do I have to remove it and add it again ? [17:21] technoweenie has joined the channel [17:22] airportyh: hi, I am having an issue deploying node w/ couchdb on webfaction [17:22] JimBastard: fucking shit [17:22] JimBastard: i got banned from freenode at home [17:22] mjijackson: polo_: part of the definition of a git submodule is that it's always pointed at a particular commit [17:22] JimBastard: also im trending twice on github today [17:22] JimBastard: http://github.com/explore [17:22] JimBastard: wooooot [17:22] mape: JimBastard: because you were using words like fucking and shit? :P [17:22] robinduckett: JimBastard: haha yeah I wondered where you went [17:23] bananushka has joined the channel [17:23] robinduckett: It was the huge flood [17:23] robinduckett: of that log [17:23] JimBastard: it was 3 fucking lines [17:23] mape: flooding? [17:23] JimBastard: but yeah [17:23] robinduckett: hmm [17:23] robinduckett: that's odd [17:23] polo_: mjijackson: thanks for the info [17:23] robinduckett: that wouldn't usually get you banned [17:23] polo_: mjijackson: so I need to rm and add ? [17:23] robinduckett: bbl [17:24] tmpvar: JimBastard, so thats your secret huh? [17:24] airportyh: it was throwing Error: ENOTCONN, Transport endpoint is not connected when connecting to couch, any ideas why? [17:24] tmpvar: spam up on the ol' irc? [17:24] JimBastard: it was nothing [17:24] JimBastard: 3 messages [17:24] JimBastard: that were like 20 chars long [17:24] JimBastard: not even [17:24] JimBastard: such bullshit [17:24] JimBastard: does anyone know any ircops [17:25] mjijackson: polo_: as far as i know that's the best way to do it [17:26] JimBastard: http://github.com/marak/zztmmo [17:27] polo_: mjijackson: thank you! [17:30] dgathright_ has joined the channel [17:31] mjijackson: polo_: you might want to look into using `git submodule foreach` to do some magic as well [17:31] mjijackson: for example, you could do a `git submodule foreach git pull` to automatically pull the latest version of all your repos [17:31] mjijackson: http://www.kernel.org/pub/software/scm/git/docs/v1.6.1.3/git-submodule.html [17:32] creationix: JimBastard: so when will zztmmo have AI for that monsters? [17:32] mjijackson: but keep in mind this won't update the index in the parent repo, so anybody else who checks out the parent repo will have to know the same trick [17:34] polo_: mjijackson: ok, but rm and add is simple enough for now :) [17:34] JimBastard: creationix: i think there is a simple AI for some stuff [17:34] JimBastard: also whenever you build it [17:34] mjijackson: polo_: ya. that's what i would use [17:34] airportyh has joined the channel [17:34] creationix: JimBastard: then it may be a while [17:37] creationix: isaacs: you link on the npm readme is wrong [17:37] creationix: the tarball link gives a 404 [17:37] aho has joined the channel [17:38] creationix: also, could you make npm use $NODE_PATH if it exists instead of $HOME/.node_libraries ? [17:38] creationix: that would make it play nice with nvm [17:38] creationix: and pub binaries in $NODE_BIN if it exists [17:38] creationix: s/pub/put/ [17:38] airportyh has joined the channel [17:39] shotintoeternity has joined the channel [17:39] creationix: hmm, actually don't worry about $NODE_BIN, I make it the same thing as the bin folder based on node's prefix [17:39] creationix: so you already put npm in the right place [17:40] joshowens has joined the channel [17:40] polo_: javajunky: I have upgraded my submodule and even cloned the last version of express, but I still get the error [17:41] polo_: oups javajunky is not here anymore [17:42] mjijackson: using node's Buffers, it's possible to completely bypass JavaScript's string handling, correct? [17:42] creationix: mjijackson: yep [17:43] creationix: as soon as fs.readFile get's buffer support, serving static files over http will be super easy [17:43] mjijackson: creationix: that is so freaking cool :) [17:44] creationix: supposedly fs.read has buffer support, but I can't seem to get it to give me buffers [17:44] creationix: maybe it's readStream that has the buffers, I'll have to test it later [17:46] xla has joined the channel [17:46] _ry: creationix: you ahve to give it a buffer to read into [17:47] polo_: Am I the only one having this issue? [17:47] polo_: Here is how to reproduce : http://pastebin.com/vT7F531M [17:49] mattly has joined the channel [17:49] mattly_ has joined the channel [17:51] mjijackson: _ry: is that what ReadStream is for? if you don't know ahead of time how large the file is going to be? [17:52] CIA-75: node: 03Ryan Dahl 07master * r6aab6eb 10/ (91 files in 9 dirs): Upgrade V8 to 2.2.8 - http://bit.ly/djzcN9 [17:52] CIA-75: node: 03Ryan Dahl 07master * rf711d53 10/ (AUTHORS ChangeLog doc/api_header.html doc/index.html wscript): bump version - http://bit.ly/9BLcDc [17:53] shotintoeternity: JimBastard: Had to jump on here to tell you how fucking awesome zztmmo is [17:54] tmpvar has joined the channel [17:54] binary42: tmpvar: Hey. [17:54] binary42: tmpvar: Posted about the meetup: http://groups.google.com/group/nycjs/browse_thread/thread/985b08343cdc4d76 [17:54] binary42: Hope cinco de node went well. [17:55] qFox: i believe the response from ryan was "meh" [17:55] creationix: _ry: so it's readStream or read? [17:55] qFox: (but i also believe it went fine ;) [17:55] tmpvar: bryan, saw that [17:55] tmpvar: er.. [17:55] tmpvar: binary42 heh [17:56] qFox: interesting autocomplete ;) [17:56] binary42: tmpvar: :-) My name is Brian so close either way. [17:56] binary42: tmpvar: Cool. I just wasn't sure if you were on list. [17:57] shotintoeternity: ryan[WIN] & nefD: Just realized you guys are credited as authors on zztmmo too. Fucking awesome job... seriously. [17:57] dekroning has joined the channel [17:57] qFox: oh he's awake, didnt see that sorry. [17:57] JimBastard: hey shotintoeternity [17:57] JimBastard: thanks man, a lot of the work was done by ryan[WIN] [17:58] shotintoeternity: Very cool [17:58] JimBastard: im mostly just putting it all together [17:58] shotintoeternity: I have seriously been wanting this to happen for like 12 years, haha [17:58] JimBastard: if you'd like to help out at all let me know [17:58] JimBastard: :-D [17:58] JimBastard: its a bit of a side project for me, but the hosting platform its running on is a main project [17:58] binary42: JimBastard: Totally never played ZZT... Looks like I'm missing out. [17:59] shotintoeternity: Not sure I have the coding skills, but I would love to help out however I can. [17:59] mjijackson: JimBastard: how the heck do i kill one of the bears? [17:59] JimBastard: no clue mjijackson [17:59] mjijackson: i can't shoot my ammo! [17:59] creationix: JimBastard: oh the childhood memories, I played this game for sure [17:59] shotintoeternity: Have you guys fucked around with the ZZT file format? [17:59] shotintoeternity: I mean in terms of importing .zzt files [17:59] JimBastard: shotintoeternity did you check out the JSON data file? [17:59] JimBastard: i think its already doing it [17:59] JimBastard: im waiting for an email back from ryan[WIN] [18:00] JimBastard: mjijackson: its possible there is no event bound for that yet [18:00] JimBastard: dig into the code! [18:00] chakrit_ has joined the channel [18:00] JimBastard: do a pull request! [18:00] shotintoeternity: Awesome [18:00] shotintoeternity: In terms of the multiplayer, how are you thinking about differentiating between the player objects? [18:01] shotintoeternity: I have no JS coding ability but am a lifelong ZZTer [18:01] JimBastard: colors probaly, maybe names [18:01] JimBastard: its all canvas [18:01] shotintoeternity: Hahaha [18:01] shotintoeternity: That's so cool [18:01] JimBastard: so we arent limited to ascii sets [18:01] JimBastard: we can make custom glyphs if we need to [18:01] shotintoeternity: Yeah, I saw the font png [18:01] ryan[WIN]: if you are going to do that then you might be better off just using jzzzt as a base [18:02] ryan[WIN]: because my project (still not finished [18:02] JimBastard: heeeey there he is [18:02] ryan[WIN]: is to be compatible with the original zzt [18:02] shotintoeternity: Hey ryan, what's up? [18:02] shotintoeternity: That's awesome [18:02] ryan[WIN]: and all of its bugs/quirks [18:02] JimBastard: ryan[WIN]: would like to get some time to chat at some point [18:02] shotintoeternity: Hahaha, including board memory limit? [18:02] ryan[WIN]: shotintoeternity, i relaxed that restriction on the client [18:02] shotintoeternity: Oh man, thanks ryan [18:03] shotintoeternity: I can't tell you how many crashes that has caused [18:03] shotintoeternity: Seriously, amazing job on the project [18:03] JimBastard: its just a start, but ryan[WIN] did a great job so far [18:03] shotintoeternity: This has been dreamed about for years [18:03] ryan[WIN]: JimBastard, some things will lend well to a zzt mmo [18:03] shotintoeternity: Haha [18:03] ryan[WIN]: like the board formats, the zzt oop language, etc. [18:03] JimBastard: yeah [18:03] ryan[WIN]: but there are a lot of things that really won't [18:03] JimBastard: of course [18:03] JimBastard: it will be a new game when we are done [18:04] ryan[WIN]: such as pausing, board restarts [18:04] JimBastard: but id like to stick to the OG as much as we can [18:04] shotintoeternity: ryan: There's a pretty good file format doc here: http://nanobox.chipx86.com/mwenc/fileformat.html [18:04] ryan[WIN]: well i can't really commit to a zzt mmo [18:04] shotintoeternity: I'm sure you've already seen it [18:04] shotintoeternity: And it's pretty old [18:05] shotintoeternity: Plus I know a lot of the DreamZZT stuff probably covers it already [18:05] shotintoeternity: But you should get in touch with kvance [18:05] shotintoeternity: He's working on a similar project [18:05] tilgovi has joined the channel [18:05] KungFuHamster: hmm... how about a generic mmo node framework? [18:05] shotintoeternity: And you guys might be able to help each other out [18:06] shotintoeternity: http://kvance.com [18:06] tilgovi: still no http keep-alive in the newest release? [18:06] tilgovi: or did that come and I missed it [18:07] joshr has joined the channel [18:08] shotintoeternity: He's the guy who wrote KevEdit and has done a ton of stuff with the inner workings of ZZT. Also has a video of his project here: http://www.youtube.com/watch?v=-k8v6Q1rHIw [18:09] shotintoeternity: But the kind of MMO stuff you guys are doing is totally up his alley [18:09] shotintoeternity: I'll definitely look through the source and see if there's anything I can contribute [18:09] towski_ has joined the channel [18:10] JimBastard: sup towski [18:16] tobeytailor has joined the channel [18:18] _ry: creationix: check the node_file.cc for docs [18:18] joshr: mornin noders [18:19] isaacs: _ry: any chance of getting the module refactor in time for 0.2.0? [18:22] _ry: isaacs: yes [18:22] _ry: isaacs: it's really on my todo list [18:22] isaacs: _ry: nice [18:22] _ry: it just keeps getting delayed [18:22] isaacs: _ry: since module.js just changed recently, i'll have to do a little rebasing. [18:22] _ry: i really apologize for that [18:22] isaacs: oh, no worreis. [18:23] isaacs: i just plan to keep bugging you occasionally to make sure it doesn't fall off the list. squeaky wheels and all that. [18:23] piranha has joined the channel [18:23] isaacs: there are clearly other bigger issues to resolve. [18:25] sudoer has joined the channel [18:25] _ry: isaacs: good [18:28] JimBastard: sup tobeytailor [18:28] tobeytailor: hey [18:29] tobeytailor: sup [18:29] JimBastard: http://github.com/explore [18:29] JimBastard: check me out :-D [18:30] tobeytailor: oho [18:30] tobeytailor: :) [18:30] tobeytailor: check me out :D [18:30] tobeytailor: http://github.com/popular/watched [18:30] JimBastard: i might try to go 3 for 3 today [18:30] JimBastard: lol [18:30] tobeytailor: :) [18:30] JimBastard: owned [18:30] saikat: I'm getting an error trying to clone node all of a sudden - http://gist.github.com/392509 [18:30] tobeytailor: zztmmo sounds nice [18:31] JimBastard: fun little distraction [18:31] JimBastard: and good way to stress test broodmother [18:31] tobeytailor: looks nice too [18:31] JimBastard: the whole frontend is ryan[WIN] [18:31] JimBastard: we just taking it over a bit :-D [18:32] tobeytailor: did you order a jsconf ticket? [18:32] saikat: actually, just tried to clone over git instead of http and it worked [18:32] JimBastard: not yet, next paycheck [18:32] JimBastard: hopefully it wont be sold out [18:33] tobeytailor: you can mail them for pirate rates [18:33] tobeytailor: :) [18:33] JimBastard: ive been low on cash since switching jobs [18:33] JimBastard: ima email them now [18:34] tobeytailor: dito, i'm totally broke... [18:34] tobeytailor: :) [18:36] tobeytailor: but i haven't to pay 1500 bucks for an apartment... [18:36] tobeytailor: :D [18:37] JimBastard: apartment jail [18:37] JimBastard: i just emailed them [18:37] JimBastard: ill be fine, but we get paid once a month here [18:37] JimBastard: and my first month was contracting, so i gotta wait 30 days [18:37] JimBastard: hopefully i can get a pirate ticket [18:37] JimBastard: or at least reserve one until i can pay [18:37] tobeytailor: or submit a talk [18:38] tobeytailor: "Beeing Peter Higgins" [18:38] JimBastard: i could totally do a talk [18:38] tobeytailor: def [18:38] JimBastard: "how to be a bastard" [18:38] phiggins has joined the channel [18:39] tobeytailor: i'm thinking about gibing my speaker career a second chance... [18:39] tobeytailor: :D [18:39] JimBastard: you'll do fine [18:39] tobeytailor: gibing -> giving [18:40] tobeytailor: have something in the pipeline [18:40] benoitc has joined the channel [18:40] tobeytailor: if i get it done, it will be epic [18:40] tobeytailor: :D [18:40] tobeytailor: hope so [18:41] benoitc: mmm is there a way to extend require, so i can eventually require code from smth other than fs ? [18:42] JimBastard: where you need to require it from benoitc [18:44] benoitc: well i need to require it from myappserver://app/... trhen require would load the app in memory and cache it [18:44] benoitc: maybe that's overkill though, just want to know if it could be possible [18:45] chakrit_: omg. mode is taking over github.com/explore [18:45] chakrit has joined the channel [18:47] markwubben has joined the channel [18:47] chakrit has left the channel [18:47] isaacs: _ry: hey, it seems like wafadmin gets installed in /usr/local/lib/node, too [18:47] franksalim has joined the channel [18:48] JimBastard: benoitc: i think nodules does that [18:48] isaacs: not sure if that's a conflict we care about, but require("wafadmin") could be weird. [18:48] chakrit has joined the channel [18:48] JimBastard: http://github.com/kriszyp/nodules [18:49] _ry: isaacs: lets ignore it for now :) [18:49] JimBastard: yeah chakrit , that marak guy is killing it [18:49] isaacs: _ry: i'm cool with that [18:49] JimBastard: we should give him some internet dollars [18:50] chakrit: give him a jsconf ticket :) [18:50] benoitc: JimBastard: thanks [18:50] JimBastard: you welcome [18:50] joshowens: anyone have a good example of using mongodb-native with node? [18:50] JimBastard: heh, i got a free jsconf ticket last time [18:50] JimBastard: twice might be pushing it [18:50] JimBastard: :-D [18:51] isaacs: ACTION awards 9000 internets to Marak Squires [18:51] admc_ has joined the channel [18:51] admc has joined the channel [18:51] JimBastard: YES IM RICH [18:52] chakrit: I wish I had one :( [18:52] amigrave has joined the channel [18:53] amigrave: is it possible in the middle of a request handling, to call node repl in order to debug the current program execution ? [18:54] chakrit: amigrave: yes, i think REPL can be loaded as a module [18:54] chakrit: not sure how to use it though [18:56] paul__ has joined the channel [18:56] joshr: wow, nice [18:57] joshr: just found a js pack() function [18:57] chakrit: amigrave: see http://nodejs.org/api.html#repl-280 [18:57] joshr: saves me a lot of time [18:57] amigrave: chakrit: thanks [18:57] joshr: and slowly chips away at my reasons to not write this project using node [18:59] kriskowal has joined the channel [18:59] chakrit: josh: What does it do? [18:59] joshr: i need to write binary data to a file [19:00] chakrit: oic ... [19:00] joshr: like perl's pack, for example [19:00] chakrit: got it :) [19:00] chakrit: was thinking about minification ... [19:10] mjijackson has joined the channel [19:12] mattly has joined the channel [19:14] drostie has joined the channel [19:14] scudco has joined the channel [19:16] tobeytailor has left the channel [19:18] mjr_: amigrave: start repl on a unix socket, then you can connect to it whenever you like. [19:20] Toby_ has joined the channel [19:21] tmpvar has joined the channel [19:24] amigrave: mjr_: in fact I'd like the execution of the program to stop when I start the shell. Then I can do whatever I want, and eg type continue so the program continur. I used to do that with ipython and I miss that. [19:25] mjr_: well, you can't do that without using the V8 debugger interface. [19:26] chakrit: js> isNaN([]) [19:26] gbot2: chakrit: false [19:27] chakrit: js> isNaN([1,2,3]) [19:27] gbot2: chakrit: true [19:27] mjr_: that is hilarious [19:27] chakrit: eh...? can someone explain? [19:28] kkaefer: js> typeof [] [19:28] gbot2: kkaefer: "object" [19:28] deanlandolt: chakrit: type coersion...isNaN is evil [19:29] deanlandolt: always use x !== x instead [19:29] JimBastard: sup deanlandolt [19:29] deanlandolt: heya bastard [19:29] deanlandolt: so awesome job on that game! [19:29] JimBastard: battle of the json query languages [19:29] deanlandolt: heh [19:29] JimBastard: round 1 [19:29] JimBastard: fight [19:29] JimBastard: :-D [19:29] JimBastard: thanks man [19:29] chakrit: deanlandolt: oh, thanks. That wasn't the case in node until recently [19:30] deanlandolt: so yeah, i'm adding some of the more helpful linq expressions to resource-query [19:30] mjr_: js> isNan([0,1]) [19:30] gbot2: mjr_: Error: ReferenceError: isNan is not defined [19:30] mjr_: bah [19:30] mjr_: Anyway, so a one item array gets passed to isNaN as a single number, but a multi-item array gets passed to isNaN as, what, a string? [19:30] chakrit: now how the hell do I test for NaN when there's coercion? [19:31] JimBastard: how so deanlandolt ? [19:31] JimBastard: My mission is afive-year mission: to explore strange, new code bases, to seek out new apps and new communites, to boldly code where no man has coded before. [19:31] chakrit: js> isNaN([0,1]) [19:31] gbot2: chakrit: true [19:31] JimBastard: My mission is a five-year mission: to explore strange, new code bases, to seek out new apps and new communites, to boldly code where no man has coded before. [19:32] deanlandolt: js> +[0,1] [19:32] gbot2: deanlandolt: NaN [19:32] JimBastard: i think im trying to focus on getting some A/B speed tests going for JSLINQ [19:32] JimBastard: and better testing framework [19:32] deanlandolt: chakrit: like i said: use x !== x [19:32] deanlandolt: it's the only working way [19:32] deanlandolt: JimBastard: that's an awesome mission, by the way [19:33] deanlandolt: well, once you get your test sweet up for JSLINQ i'll port it to run against resource-query [19:33] Nohryb has joined the channel [19:33] deanlandolt: (at least, what i can -- JSLINQ is obviously more expressive) [19:33] JimBastard: well what do you do for resource-query [19:33] JimBastard: to do speed tests [19:34] chakrit: deanlandolt: oh, thx.. not quite sure wether it's the only case where x !== x [19:34] deanlandolt: it has an executeQuery function [19:34] deanlandolt: chakrit: i'm positive [19:34] chakrit: deanlandolt: ok :) [19:34] deanlandolt: (rather, mark miller's positive...but i'll defer to him :) [19:36] JimBastard: but yeah dean [19:36] deanlandolt: JimBastard: so yeah, you can require("resource-query").executeQuery(query, options, target) [19:37] JimBastard: will that return processing time? [19:37] JimBastard: in MS? [19:37] JimBastard: or just the result set? [19:37] deanlandolt: require("resource-query").executeQuery("foo=bar", {}, [{"foo": "bar"}, {"foo": "quux"}]) ==> [{"foo": "bar"}] [19:37] JimBastard: yeah sure [19:37] JimBastard: so you can assert the value that gets returned [19:37] JimBastard: what about time [19:37] deanlandolt: what about it? [19:37] JimBastard: can you link me to your test suite? would like to take alook [19:37] qFox: hey. quick question. is america going bankrupt right about now? :p [19:37] JimBastard: processing time [19:37] deanlandolt: sure...let me dig it up [19:37] JimBastard: i want to setup A/B performance testing [19:38] JimBastard: and then have the test suites return processing time in MS [19:38] JimBastard: so we can make changes and determine how they affect speed [19:38] deanlandolt: gotcha [19:38] JimBastard: i really really want to dive into the whole ienumerable rabbit hole and work with some N length data sets [19:38] JimBastard: i think there might be something to be done with streaming and json [19:38] deanlandolt: http://github.com/kriszyp/perstore/blob/master/tests/query.js [19:39] deanlandolt: JimBastard: certainly...but something like .Reverse will always blow you up [19:39] JimBastard: you sure? [19:40] JimBastard: indexzero has been telling me about the magic of ienumerable [19:40] deanlandolt: how do you optimize that? [19:40] JimBastard: i dont know enough abou tit yet [19:40] deanlandolt: it has to buffer the whole thing...unless there's some pure magic i'm unaware of [19:40] JimBastard: tits [19:40] deanlandolt: heh [19:40] JimBastard: well you know about IEnumerable right [19:40] JimBastard: and how that works [19:40] JimBastard: and lazy versus eager eval? [19:40] deanlandolt: yeah, i'm aware... [19:41] deanlandolt: it can lazily eval, sure... [19:41] deanlandolt: but it has to buffer the whole set on reverse [19:41] deanlandolt: how /else/ can it do it? [19:41] deanlandolt: alternatively to IEnumerable...let me introduce you to a MONEY implementation that follows more closely your standard javascript idioms... [19:41] deanlandolt: http://github.com/kriszyp/commonjs-utils/blob/master/lib/lazy-array.js [19:42] charlesjolley has joined the channel [19:42] deanlandolt: it looks like a good ol' fashioned array but streams results and does chaining [19:42] derbumi_ has joined the channel [19:43] JimBastard: lazy array looks about right [19:43] JimBastard: but im still trying to steal MS fanbois [19:43] JimBastard: so it will have to be Ienum. lol [19:43] JimBastard: rename time [19:44] deanlandolt: heh :) [19:44] JimBastard: that is not a lot of test coverage [19:44] JimBastard: lol [19:44] deanlandolt: oh, definitely not :) [19:44] kevwil has joined the channel [19:44] deanlandolt: 1% coverage FTL :) [19:45] deanlandolt: that's my mission [19:45] JimBastard: so when you gonna come vist nyc dean [19:45] JimBastard: visit [19:45] JimBastard: you gotta come hang out at apartment jail, we'll have a javascript party [19:45] deanlandolt: that'd be awesome [19:45] JimBastard: anytime you want man [19:46] deanlandolt: i should come up for an nyc js meetup [19:46] JimBastard: next thursday is nyc.js [19:46] tmpvar: JimBastard, you hackin tonight? [19:46] JimBastard: yeah if you want to come out thursday and stay for a few days that cool [19:46] deanlandolt: sweet...yeah, i'll take you up on that [19:46] JimBastard: i gotta warn you though, we do a lot of drinking, smoking, and coding until 4am [19:46] JimBastard: i hope you are okay with that [19:46] JimBastard: tmpvar: always [19:46] tmpvar: yaas [19:46] tmpvar: javascript partay [19:46] JimBastard: you in? [19:47] tmpvar: perhaps [19:47] deanlandolt: heh...well, i'm cool with the smoking and drinking...but the coding until 4am? i don't know about all /that/ [19:47] JimBastard: ahahaha [19:47] tmpvar: i may have dinner plans, if i do then yes [19:47] tmpvar: after dinner. [19:47] deanlandolt: don't think i can do this coming week -- just moved into the house and my girlfriend owuld probably kill me [19:47] JimBastard: aight, i should be back around 730ish, swing by if you want [19:47] deanlandolt: but i'll get my shit together and get up there for june [19:47] JimBastard: yaya, well anytime you want deanlandolt just hit me up [19:48] deanlandolt: thanks JimBastard...will do [19:48] JimBastard: ohh heh, https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array/some [19:49] JimBastard: wow [19:49] JimBastard: did NOT know about that [19:49] mape: the ole crazy shitcharzoooo [19:52] deanlandolt: JimBastard: yeah, some lets you do most of what LINQ angles for [19:54] keyvan has joined the channel [19:56] tmpvar: http://tmpvar.com/cinco-de-nodejs%20-%20bayjax.mov -- bootleg! [19:56] charlesjolley_ has joined the channel [19:57] atmos: tmpvar: woot [19:59] JimBastard: we double-checked: your're quite cool but we don't think that you're a pirate ;) lol [19:59] JimBastard: i guess im not a pirate [20:00] tmpvar: heh [20:04] JimBastard: hee hee [20:09] technoweenie has joined the channel [20:10] mjijackson: tmpvar: cool! downloading now. [20:11] tmpvar: slick :) [20:11] V1 has joined the channel [20:11] amigrave: how can I import a non CommonJS file? [20:12] tmpvar: eval? [20:12] JimBastard: use python? [20:12] V1: require("")? [20:12] JimBastard: amigrave: what are you trying to import [20:12] mjijackson: amigrave: there's a registerExtension thing that CoffeeScript uses [20:12] V1: You can just create your own modules? [20:12] JimBastard: amigrave: why dont you just wrap it in a module [20:12] amigrave: I'd like to use underscore.js [20:12] JimBastard: yeah V1 [20:12] tmpvar: JimBastard, that is an option, but it sucks [20:12] JimBastard: amigrave: underscore works [20:12] tmpvar: you break your upgrade path :( [20:12] V1: add export._ = _ [20:12] JimBastard: clone that bitch and require it [20:13] V1: something liket hat ;) [20:13] tmpvar: i dun like it [20:13] saikat: I just messed around a bit with the Addons example in the Node.JS documentation, and in the docs the example does extern 'C' void [20:13] saikat: that caused a compilation error for me [20:13] saikat: changing it to "C" worked though [20:13] amigrave: yeah but I'd like to keep the file intact so it can be used client side and server side [20:14] deanlandolt: amigrave: you can use a transport format for that, or a module transporter [20:14] JimBastard: heh whats the node.js testing framework [20:14] JimBastard: a good one [20:14] mjijackson: amigrave: exports = exports || {} [20:14] tmpvar: mjsunit comes with node i believe [20:14] V1: Or just use 2 files. [20:14] tmpvar: V1, and eval from the required file? [20:15] JimBastard: do any of the current testing frameworks support timing? [20:15] amigrave: mjijackson: ok got it [20:16] deanlandolt: JimBastard: QUnit does timing [20:16] tmpvar: JimBastard, you mean async stuff right? [20:16] mjijackson: ah! tmpvar's server is sloooowing down! you are using node buffers to serve this video, aren't you? :) [20:17] tmpvar: nah, im using stupid apache [20:17] tmpvar: i know. i know [20:17] JimBastard: qunit [20:17] JimBastard: i think i really just want to roll my own [20:17] JimBastard: is that wrong? [20:17] tmpvar: perhaps [20:17] JimBastard: not a new framework for testing, just a custom suite for this project [20:18] mjijackson: it could be my end. maybe curl sucks at downloading ~30M files. dunno. [20:18] JimBastard: just using assert and getTime() [20:18] tmpvar: mjijackson, it should be 180mb [20:18] deanlandolt: if you want to do a/b stuff you'll probably need to do something custom anyway [20:18] inimino: chakrit: isNaN() coerces to Number before testing, so using it for type checking is just fundamentally wrong... it's *only* useful for testing whether a Number is a NaN value or a well-behaved number [20:18] mjijackson: tmpvar: well then, i've got a ways to go. ;) [20:19] kevwil has joined the channel [20:19] technoweenie: JimBastard: well you could spend all this time evaluating different test frameworks and seeing if they work [20:19] technoweenie: or just write something for your app and ship something [20:19] technoweenie: tough choice! [20:20] jan____: release congrats [20:20] tmpvar: lol [20:20] JimBastard: i think technoweenie wins [20:20] tmpvar: JimBastard, i'd say wrap mjsunit or assert and go go go [20:20] JimBastard: the assert module + new Date.getTime() should be enough [20:20] inimino: chakrit: if you want you can use (typeof x == 'number' && isNaN(x)) which is equivalent to x !== x but much more readable [20:20] ewdafa has joined the channel [20:21] chakrit: inimino: thx :). I just need to way to know that it's *exactly* NaN [20:21] chakrit: s/to/a [20:21] inimino: I would use typeof + isNaN, then [20:21] inimino: the x != x trick is cute but most people don't know it [20:21] JimBastard: hey technoweenie i actually started my first ruby project today. the idea is to turn routes.rb into javascript routing tables for Sammy.js and my route.js project [20:22] technoweenie: cool [20:22] JimBastard: (for the place im working at doing the evented front end stuff) [20:22] JimBastard: what you think? [20:22] JimBastard: does that make sense? [20:22] JimBastard: anything that does this already? [20:22] inimino: (even though ES5 mentions it) [20:23] deanlandolt: inimino: isNaN = function(x) { return x !== x; } [20:23] deanlandolt: why not? :) [20:23] JimBastard: technoweenie ^^ [20:23] chakrit: lol... [20:25] binary42 has joined the channel [20:26] felixge has joined the channel [20:26] felixge has joined the channel [20:26] technoweenie: no idea.. [20:27] TobiasFar has joined the channel [20:27] airportyh has joined the channel [20:27] JimBastard: got ya, thanks [20:27] inimino: deanlandolt: heh, then anybody that knows what isNaN() normally does will be even more confused :) [20:27] JimBastard: maybe ill call it routeyroute [20:28] inimino: deanlandolt: actually, using isNaN a lot of times does make sense... because people want to test it before using it in a context that would convert to number anyway... [20:29] inimino: but... ugh, type coercion is just generally evil [20:29] deanlandolt: inimino: perhaps -- still seems to cause grief [20:29] deanlandolt: heh, yeah -- especially when js gets it so utterly wrong (wtf new String())?!! [20:30] indiefan has joined the channel [20:31] bmizerany has joined the channel [20:32] chakrit: ACTION doing evil XD [20:33] thotypous has joined the channel [20:34] inimino: yes, wrapper objects are an abomination, but ... fortunately most people don't use them even by accident [20:43] DracoBlue has joined the channel [20:44] voodootikigod has joined the channel [20:46] JimBastard: i forget, are the auto spam k lines permanent on freenode? [20:49] darkf has joined the channel [20:52] MattJ: JimBastard: Why? Considering a career move? [20:52] JimBastard: no, i got banned from home last night [20:52] teemow has joined the channel [20:52] JimBastard: hopefully just got unbanned...we'll see [21:02] fizx has joined the channel [21:02] fizx has joined the channel [21:03] mjijackson: tmpvar: what do you mean when you say you'd have to write twice the code? [21:03] tmpvar: you write code to generate the initial template [21:03] tmpvar: then you write more code on the browser to make it dynamic [21:03] mjijackson: tmpvar: not that part [21:04] tmpvar: oh [21:04] mjijackson: the part when you're talking about the future of jsdom [21:04] tmpvar: dom level 1 html elements? [21:04] tmpvar: well, there are no tests [21:04] mjijackson: right [21:04] JimBastard: mjijackson: did you ever figure out about removing that python depend for Min [21:04] JimBastard: t [21:04] tmpvar: so for level 1 core there were (527 per part: xml, svg, core) [21:04] paul__ has joined the channel [21:04] mjijackson: JimBastard: all the javascript syntax tokenizers suck [21:05] tmpvar: mjijackson, i'd have to write both the tests and the implementation [21:05] JimBastard: mjijackson: i think inimino might have something to say about that? [21:05] tmpvar: so i guess technically its 2x the amount of effort that I put into the initial version heh [21:05] tmpvar: s/initial version/first iteration [21:05] mjijackson: did inimino write a good one? i didn't see it [21:05] isaacs: tmpvar: hey, i don't know if you saw, but npm install jsdom actually works now. [21:06] isaacs: tmpvar: installs mjsunit.runner, and then jsdom [21:06] tmpvar: nice :) [21:06] tmpvar: sorry about that heh [21:06] isaacs: tmpvar: nono, it's fine. it was a bug in my code :) [21:06] V1 has left the channel [21:06] mjijackson: tmpvar: how exactly would you go about writing your own tests? i mean, everybody's DOM is so different, right? [21:06] isaacs: tmpvar: serves me right for getting too ambitious with my live demo [21:07] tmpvar: mjijackson, there are specifications.. for example.. [21:07] tmpvar: isaacs, haha [21:07] mjijackson: oh...wait. i'm thinking about it all wrong :) i understand now [21:07] tmpvar: http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html [21:07] tmpvar: does not include html elements unfortunately [21:07] tmpvar: however.. [21:08] tmpvar: http://www.w3.org/TR/REC-DOM-Level-1/idl-definitions.html [21:08] tmpvar: shows html elements [21:08] tmpvar: so, where are the tests? or the spec for that matter [21:08] tmpvar: nm, spec is there, but where are the tests [21:08] tmpvar: http://www.w3.org/TR/REC-DOM-Level-1/level-one-html.html = spec [21:09] mjijackson: tmpvar: where did you get the tests for level 1 core? [21:09] tmpvar: http://www.w3.org/DOM/Test/ [21:10] tmpvar: used some wget spidering magic to collect them all, then used php to clean and combine them [21:11] mjijackson: i see there are tests for level 2 html elements [21:11] tmpvar: yeah [21:11] tmpvar: but not level 1 [21:11] mjijackson: huh. that's odd [21:11] fernmicro has joined the channel [21:12] kriskowal: _ry, would be nice if node_buffer.h were installed [21:13] _ry: kriskowal: yes good point [21:15] CIA-75: node: 03Ryan Dahl 07master * rd241594 10/ wscript : Install node_buffer.h on make install - [21:15] CIA-75: node: 03Ryan Dahl 07master * r62b642a 10/ AUTHORS : fix authors file - [21:15] kriskowal: thanks [21:16] darkf has joined the channel [21:21] mjijackson: JimBastard: do you have a suggestion for a good js tokenizer? [21:21] mjijackson: sorry, code tokenizer written in js [21:21] JimBastard: i think inimino knows [21:21] JimBastard: he has a PEG implementation [21:22] JimBastard: also, o-meta [21:22] JimBastard: right? [21:22] keyvan has joined the channel [21:22] mjijackson: JimBastard: those are parsing libraries. I'm talking about something that's already able to tokenize various languages (without me needing to write the grammars for all of them!) [21:24] gwoo has joined the channel [21:24] JimBastard: got ya [21:25] joshowens: which mongoDB library is best for node.js? [21:27] gf3: JimBastard: jcoglan has one, as well: http://github.com/jcoglan/canopy [21:27] gf3: also there is Kouprey [21:32] mjijackson: gf3: interesting. have you used canopy? [21:32] gf3: mjijackson: no, I've only used Kouprey [21:32] JimBastard: canopy> is that suppose to be like treetop? [21:32] JimBastard: yep [21:32] JimBastard: nice [21:33] JimBastard: so im gonna try to get 3 of my repos on the trending list today, but i think zztmmo is about to fall off [21:33] JimBastard: im gonna release my first ruby gem tonight, get_routey [21:33] JimBastard: routes.rb in, routes.js out [21:33] JimBastard: for now [21:35] felixge: implementing a streaming boyer moore algorithm is hard [21:35] JimBastard: ACTION nods [21:35] felixge: but I almost got it [21:35] felixge: will make my multipart parser ~10x faster [21:35] felixge: ~200 mb/sec [21:35] felixge: that would make me happy [21:35] felixge: :) [21:36] felixge: saturating a gbit connection [21:38] voodootikigod: VOLCANO [21:38] voodootikigod: sorry man [21:38] voodootikigod: had to do it [21:39] tmpvar: felixge, nice [21:39] felixge: voodootikigod: you know I made that volcano erupt so I wouldn't have to finish my slides, right? :) [21:39] voodootikigod: hahaha [21:39] voodootikigod: asshooollllllll111111222eeee [21:39] felixge: procrastination makes people to strange things :) [21:40] tmpvar: felixge, you are writing this in c, right? [21:40] felixge: tmpvar: no, JS [21:40] tmpvar: ah, interesting [21:40] tmpvar: should be fast enough anyhow :) [21:40] felixge: tmpvar: I got 16mb / sec in JS even when looking at every single byte [21:40] tmpvar: not too shabby [21:40] felixge: now given a long boundary sequence (they are usually 20+ bytes), a clever algorithm can really speed things up [21:40] felixge: :) [21:40] kkaefer: how are you measuring throughput? [21:41] felixge: kkaefer: https://gist.github.com/d394728a525369dd6d2b [21:41] tmpvar: felixge, ive never implemented boyer moore, seems interesting! [21:42] felixge: tmpvar: I'm only doing a cheap-ass horspool version for now, but that should be fine for the use case [21:42] felixge: since I'm actually expecting the best-case scenario most of the time [21:42] tmpvar: yeah [21:43] felixge: http://gist.github.com/392738 [21:43] felixge: the real thing is much more complex [21:44] chakrit: you don't need full string search most of the time. [21:44] felixge: yeah [21:44] chakrit: a simple CRLF scans is usually enough :) [21:44] felixge: anyway, writing streaming parsers is a tricky affair for sure [21:45] felixge: since you never know when the network decides to give you the boundary-finger [21:45] felixge: :D [21:45] felixge: s/boundary/package/ [21:45] chakrit: haha lol [21:46] felixge: I actually managed to explain that algorithm to my girlfriend in 5 minutes and she "got it". Which makes me worry why I'm on this since a few hours [21:46] felixge: :( [21:47] chakrit: you're spending the time to make it simple so your gf can "gets it" :) [21:47] felixge: by "got it" I mean that I showed the basic problem to her and she derrived the idea of moving in steps of needle.length by herself [21:47] felixge: chakrit: nah, I really just explained the problem to her [21:47] felixge: maybe I should study medicine and she does my programming :) [21:48] felixge: (I mean I guess skipping needle.length bytes is a natural idea to start with, I was more impressed with her getting the idea of processing a string right away) [21:49] chakrit: I generally find that chemical people "gets" computer more than other folks [21:49] chakrit: e.g. Math folks [21:49] felixge: I never got chemestry ... [21:50] felixge: :) [21:50] airportyh: Hi all, I think I uncovered a bug in node version 0.1.93 [21:50] mjr_: airportyh: Great! Please supply a test case and a fix. [21:50] airportyh: I would get this error: Server running at http://127.0.0.1:56881/ [21:50] airportyh: Error: ENOTCONN, Transport endpoint is not connected [21:50] airportyh: at Client._shutdown (net:877:22) [21:50] airportyh: at Client.flush (net:674:12) [21:50] airportyh: at Client.end (net:904:12)... [21:50] mjr_: or, just a test case. [21:50] chakrit: not sure if there's something in chemistry that makes them good at computer [21:50] airportyh: alrighty, one minute [21:51] stephenlb: airportyh: yah.. theres lots of those. i've revereted to 0.1.91 which seems happier at the moment. [21:51] felixge: It seemed like (school) chemestry was meant for people who didn't get physics and just wanted a meaningless system of rules they couldn't fully derive by themselves to learn by heart [21:51] chakrit: meaningless system of rules <== lol, i totally agreed on that [21:51] airportyh: stephenlb: yes, that's what I did to fix as well [21:52] felixge: chakrit: I mean I'm not saying Chemestry isn't a well-defined study, I'm just saying you probably need to fully understand physics before you should study it [21:52] chakrit: yah, i "got it" :) [21:52] felixge: ha [21:53] chakrit: well, where I'm living you had to learn some chemistry before you can start computer science. [21:53] felixge: airportyh: a test case would be awesome, otherwise derriving a simplified version of your script for manual execution and mailing that to the mailing list would be nice [21:54] felixge: chakrit: where I live you had do language interpretation on translated greek mythology before getting out of high school - fucked up shit :) [21:55] felixge: When I raised the question about whether we'd study the language of the translator or the author the teacher had trouble explaining :) [21:55] chakrit: felixge: lol haha you meant latins and those things right? [21:56] felixge: chakrit: I mean stuff like this: http://en.wikipedia.org/wiki/Antigone_(Sophocles) [21:56] felixge: we seriously were asked to study the text for style & use of language (using the german translation) [21:56] felixge: :) [21:57] chakrit: oh jeez [21:57] chakrit: haha [21:57] felixge: the teacher had probably never questioned this very problem for the past 20 years or so :) [21:58] felixge: if I ever get kids I'll make sure they have whatever drugs they need to not suffer too much through governmental education :) [21:58] phazm has joined the channel [21:58] mjr_: At least make sure they learn JavaScript. [21:58] chakrit: felixge: Or you can teach them this thing call programming. [21:58] felixge: yeah, I'll name my first kid Assembler [21:58] felixge: the second C [21:59] felixge: and the last one JS [21:59] chakrit: nice :) [21:59] felixge: ;) [21:59] felixge: Thinking of it, assembler isn't that bad of a name ... [21:59] felixge: If I have a girl she'll be named Lua [22:00] mjr_: Lua. Nice. [22:00] ncb000gt: o.0 [22:00] chakrit: Imagine when they have a fight... [22:00] phazm: like.. "lew - uhh"? [22:00] felixge: runtime error [22:00] felixge: you mean? [22:00] mjr_: Lua is like an actual name. [22:00] frodenius: lua is like, a real word [22:00] frodenius: duh [22:01] frodenius: wtf did they think, a programming language name that doesnt stink [22:01] chakrit: hey C, would you take care of the garbage please? [22:01] felixge: ACTION needs to remember not to drink if he ever gets to name children [22:01] ncb000gt: chakrit: you'd need to be careful there...memory leaks [22:01] ncb000gt: bloat [22:01] mjr_: naming actual human children is actually pretty awesome. You get to pick their name for the REST OF THEIR LIVES. [22:02] chakrit: lolz XD [22:02] felixge: mjr_: until they get GC'ed hat is [22:02] felixge: * that [22:02] felixge: that sounded non-caring :| [22:02] ncb000gt: lol [22:02] felixge: not sure if non-caring is as good as non-blocking [22:02] mjr_: chakrit: surely your daughter JavaScript would be the best at Garbage Collection [22:02] ncb000gt: oh, babies are def blocking operations [22:03] felixge: ncb000gt: hah [22:03] ncb000gt: they don't become async till about 18 or so [22:03] mjr_: Yeah, they are "preemptive" for sure. [22:03] frodenius: rofl [22:03] ncb000gt: and they use ALL your resources [22:03] ncb000gt: def gotta be java [22:03] chakrit: but they got your brains [22:03] chakrit: they gotta be faster than java [22:03] chakrit: XD [22:03] ncb000gt: i don't wish that on anyone [22:03] ncb000gt: :) [22:04] ncb000gt: and with that i'm out. later. [22:04] ncb000gt has left the channel [22:12] charlesjolley has joined the channel [22:12] derbumi has joined the channel [22:13] airportyh: actually, it looks be a bug on my side [22:13] airportyh: http://pastie.org/949258 [22:14] airportyh: i did a request.write() on a get request [22:15] airportyh: and then the other side gives varies different error codes depending on what kind of server it is [22:15] gf3 has joined the channel [22:22] pkrumins has joined the channel [22:24] Gralamin has joined the channel [22:24] xla has joined the channel [22:25] Gralamin: So interesting issue. [22:26] hellp has joined the channel [22:26] Gralamin: With my current project for work, which I asked about in here before, I need a way to get around the Single Connection Policy. [22:26] Gralamin: For XHR requests. [22:27] Gralamin: Unless I want all my users to simply use Google Chrome. [22:27] mscdex has joined the channel [22:27] JimBastard: hey Gralamin [22:27] JimBastard: you mean http-pipeling? [22:27] mjr_: You mean the "same origin policy"? [22:27] mikeal1 has joined the channel [22:27] unomi has joined the channel [22:28] Gralamin: mjr_: Yes, my mistake [22:28] JimBastard: ohh [22:28] JimBastard: you dont break that friend [22:28] JimBastard: unless im a retard [22:28] gf3 has joined the channel [22:28] Gralamin: I know that is kinda the issue [22:28] JimBastard: you can do JSONP , but that is only get requests [22:29] sudoer has joined the channel [22:29] JimBastard: thats the solution [22:29] JimBastard: or write a proxy [22:29] mjr_: Surely modern versions of FireFox and Safari support CORS. [22:29] JimBastard: but thats assuming you control the server [22:29] Gralamin: We thought about Proxing. [22:29] charlesjolley_ has joined the channel [22:29] JimBastard: if you control your server, you should proxy [22:29] JimBastard: its very very easy [22:29] JimBastard: JSONP or proxy [22:30] mscdex: yes [22:30] Gralamin: mjr_: CORS? [22:30] mscdex: firefox 3.5+, safari 4+, and chrome 2+ support CORS [22:30] mscdex: and IE8 has XDR which is partial CORS [22:30] tlrobinson_ has joined the channel [22:30] mjr_: So IE8 is sort of a CORS Lite? [22:30] mjr_: The Silver Bullet? [22:31] kriszyp has joined the channel [22:31] JimBastard: Gralamin: if you need to build a real site, you cant do CORS [22:31] JimBastard: if you control the browser, you are good to go [22:31] JimBastard: IMO [22:31] JimBastard: aight im outta here [22:31] JimBastard: if i dont come back it means im still banned from freenode [22:31] mscdex: well, XDR is essentially another proprietary object that implements few CORS features, but not all of them [22:32] N`: Gralamin: Cross-Origin Resource Sharing [22:32] mscdex: i'm knee deep in this stuff right now in socket.io [22:32] mscdex: heh [22:33] xer0x has joined the channel [22:33] Gralamin: mscdex: Haha, I know how thats like. [22:35] mscdex: XDR limitations: only GET and POST methods, no multipart support (but streaming via onprogress is possible), only async, all successful http status codes except 200 are rejected, cannot send credentials (i.e. cookies and/or http auth), and several other things [22:35] mjr_: Gralamin: sadly, proxying is the only way to make it work for the largest number of people. Node is pretty good at proxying, as it turns out. [22:36] mscdex: oh, and you can't send additional request headers, which i thought was pretty dumb [22:36] Gralamin: mjr_: There is one other possibility we've thought of - using a load balancer and controlling it from there. [22:40] mscdex: there's also flash websockets too, but yeah, useful cross-domain support is pretty new yet [22:41] mscdex: for native implementations anyway [22:41] mjr_: The state of XHRs in general is pretty sad. When fetching single, short requests on fast networks, everything is great, but for long polling and error handling they are terrible. [22:41] mjr_: Oh, you got an 'error'? What kind of error? DNS? Connection refused? timed out? hard to say. Just "error". [22:43] Gralamin: I just wonder why Firefox doesn't support Websockets yet. [22:43] mscdex: well XHR Level 2 is a bit better, it supports a few exceptions at least [22:43] franksalim: Gralamin, http://hacks.mozilla.org/2010/04/websockets-in-firefox/ [22:44] franksalim: Gralamin, firefox won't have websockets until the spec stabilizes [22:44] mscdex: XDR has an ontimeout event, but XHR L2 does not [22:44] mjr_: is xhr2 more than just a proposed standard at this point? [22:45] mscdex: no, it's what's implemented in CORS-capable browsers AFAIK [22:45] Gralamin: Well, I guess I better get to work on proxying [22:45] mscdex: i've tested with chromium and ff 3.6 so far and they've supported the features i've thrown at them thus far [22:45] saikat: In v8, is the Value type the type that should be used if a function in my node addon returns binary data? [22:46] mscdex: i dunno about safari 4 or what opera supports [22:54] mjr_: mscdex: Safari is a bit more tolerant of CORS things, especially if you try to do cookies or authentication. [22:54] mjr_: But the whole thing is a mess. [22:54] mjr_: That just barely works. Best to proxy, unless you are a masochist or you can control which browsers people use. [22:54] mscdex: well, it wouldn't be so bad if IE were on the same page at least [22:59] mscdex: i'm reading now that opera 10 apparently has a configuration option that can be toggled to allow cross-domain access [22:59] mscdex: but it's not documented [23:03] xla: trying to make a binding an getting this error: dyld: lazy symbol binding failed: Symbol not found [23:04] xla: anyone familiar with this? [23:05] hassox has joined the channel [23:07] creationix has joined the channel [23:17] JimBastard has joined the channel [23:17] JimBastard: ahhh to not be banned [23:17] JimBastard: *sigh* [23:17] jsilver has joined the channel [23:21] mscdex: heh [23:24] tlrobinson_ has joined the channel [23:27] inimino: JimBastard: you can make your case in #freenode [23:28] inimino: and there's a form you have to fill out, I think... [23:32] robinduckett has joined the channel [23:32] robinduckett: evening [23:32] robinduckett: So [23:33] robinduckett: Will node compile on iPhone? [23:35] charlesjolley_ has joined the channel [23:35] mscdex: i'd like to see it running on Android :> [23:38] JimBastard: inimino: im at home, unbanned [23:41] robinduckett: mscdex: did my fix for node-mysql-libmysqlclient work for you? or did you end up not using it [23:41] ssteinerX has joined the channel [23:49] ChrisPartridge has joined the channel [23:54] sudoer has joined the channel [23:57] saikat has joined the channel [23:57] mjijackson has joined the channel [23:59] creationix: isaacs: how do I get npm to give me dist-tags in the registry [23:59] creationix: npmjs [23:59] isaacs: creationix: npm tag package version tag [23:59] creationix: http://registry.npmjs.org/haml-js