[00:00] _ry: isaacs: we need to tell v8 about the rethrow thing [00:00] isaacs: _ry: kk [00:00] isaacs: _ry: i've been meaning to write up a simple reduction that just uses v8 and shows the problem, but haven't gotten to it [00:01] _ry: isaacs: it would be really cool to get a little example to put into deps/v8/test/cctest/test-api.cc [00:06] _ry: okay i'm going to trash the old code now [00:06] isaacs: _ry: trash the old code? [00:06] maushu: http://pastebin.com/PSY4iYZ0 [00:06] _ry: evcom http_old [00:07] isaacs: ah, cool [00:10] _ry: 15 files changed, 2 insertions(+), 5672 deletions(-) [00:10] _ry: :P~ [00:21] jedschmidt has joined the channel [00:21] CIA-77: node: 03Ryan Dahl 07master * rc72967d 10/ (19 files in 5 dirs): Remove http_old tcp_old - http://bit.ly/cbG7Rp [00:23] maushu: 5672 deletions(-) [00:23] maushu: AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHhhh- [00:23] maushu: *huff* *huff* [00:23] maushu: -hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh! [00:24] CIA-77: node: 03Ryan Dahl 07master * r3d6ebbd 10/ wscript : Don't look for GnuTLS in wscript - http://bit.ly/bacsXj [00:24] inimino: :D [00:27] maushu: Bye GnuTLS, we will NOT miss you. [00:28] binary42 has joined the channel [00:30] CIA-77: node: 03Ryan Dahl 07master * r9926dac 10/ src/node_net2.cc : Remove getaddrinfo from net2.cc - http://bit.ly/dn4sNh [00:30] _ry: love cutting out stale code [00:31] maushu: Tell me about it. [00:31] _ry: what else can i trash? [00:31] maushu: inimino [00:33] inimino: maushu: yeah? [00:34] maushu: Don't mind me. Just answering ry's question. [00:34] maushu: Humans are so complicated. I can't find any useful API for them! Drat. [00:36] inimino: hehe [00:44] binary42 has joined the channel [00:48] kriskowal has joined the channel [00:54] kriskowal: _ry v0.1.92 does not build, mac os 10.6; similar log to the gist i posted yesterday [00:54] kriskowal: i suspect an ssl config problem [00:55] kriskowal: oh, looks more like a 64/32 bit mismatch [00:56] kriskowal: with /opt/local/lib/libssl.dylib. i'm not even sure what package manager is responsible for my /opt tree [00:58] kriskowal: builds fine if i disable ssl in wscript [01:00] _ry: kriskowal: hm. fuck. [01:00] _ry: i forgot about that problem [01:00] kriskowal: could be specific to my configuration [01:00] _ry: that's mac ports? [01:00] _ry: ssl? [01:01] kriskowal: eh, probably [01:01] kriskowal: i've used macports in the past [01:02] _ry: hm [01:02] _ry: not sure how to solve that issue [01:02] _ry: should i, like, detect what arch libssl is? [01:02] _ry: man. why does apple suck so bad. [01:03] kriskowal: reality distortion field leaves a vacuum [01:05] ssteinerX: kriskowal: if you've got a mixed macports/not-macports env, it could be, um, challenging [01:05] kriskowal: might pose a question to the mailing list; detecting the architecture would probably be the way to go, i just don't know how to do that [01:05] _ry: kriskowal: what if you uninstall ssl and reinstall it [01:05] _ry: ? :) [01:05] ssteinerX: apple should bless one package manager [01:06] kriskowal: yeh, i talked about that during my interview. [01:06] ssteinerX: kriskowal: did you install ssl through macports? If not, port installing it should get it ahead of the other one for building [01:06] kriskowal: my interviewer, now a friend, replied with a question. [01:06] ssteinerX: kriskowal: "why are you so confrontational?" [01:06] ssteinerX: ;-) [01:06] kriskowal: "what do you imagine some of the complications might be?" [01:07] ssteinerX: kriskowal: that it would make it apple's responsibility? [01:07] kriskowal: yeh, it's unfortunate. [01:07] ssteinerX: that would be way more "complicated" than letting package management suck the life out of developing on OS X [01:07] _ry: yes [01:08] _ry: anyway - it's a terrible operating system [01:08] mape: hehe [01:08] mjr_: Is there a recommended way to install openssl for use with node? [01:08] _ry: if it weren't for the beautiful suspend and wifi auto connection, no one would use it [01:08] mjr_: homebrew? [01:08] ssteinerX: _ry: but it sure is pretty...the Megan Fox of operating systems... [01:08] _ry: mjr_: are you also having problems? [01:09] mjr_: no, but I've never tried ssl. [01:09] _ry: mjr_: i use macports [01:09] mjr_: I've been meaning to, so I figured I'd see if I had the same problem. [01:10] ssteinerX: I was able to build node about two weeks ago, with a macports setup -- is some specific .configure option causing all this agita? [01:10] kriskowal: _ry eesh. my port command is broken. i guess i better get my house in order. [01:11] kriskowal: and, yeah. /opt is managed by macports for me [01:13] mjr_: wait, my OSX seems to come with openssl. Is there a need to install it from a package? [01:13] _ry: mjr_: no [01:16] mjr_: hmm, well the tls test passes on my machine. I guess it works then? [01:16] ssteinerX: i just pulled from git, how come .configure's still looking for gnutls >= 2.5.0, i thought that just got ripped out [01:16] maushu: gnutls... fighting to its last breath. [01:16] mjr_: Speaking of last breath, I need to go home. [01:23] bpot has joined the channel [01:29] JimBastard has joined the channel [01:29] JimBastard: hey hey [01:29] JimBastard: javascript party [01:30] JimBastard: im hanging out here with tobey from http://github.com/tobeytailor/gordon [01:30] JimBastard: hes still stranded in the us [01:33] JimBastard: sup binary42 [01:34] binary42: JimBastard: Heya. [01:34] binary42: JimBastard: You know... I'm craving one of those spicy burgers. [01:35] JimBastard: ahaha its dhaba tonight [01:35] JimBastard: im getting hungry though if you are around you should come by [01:35] mape: JimBastard: planes wonky? [01:35] JimBastard: yeah [01:35] mape: still? [01:35] JimBastard: volanownd [01:35] JimBastard: volcanowned [01:35] JimBastard: volcanownd [01:35] JimBastard: ^_^ [01:35] mape: I have multiple friends that were abroad that are back now [01:35] binary42: JimBastard: Yum... that is tempting. [01:35] ssteinerX: volpwnd [01:36] binary42: JimBastard: I was debating the make something vs. go out to eat thing. [01:36] binary42: JimBastard: You guys ordering out? [01:36] binary42: ACTION was going to be in Dublin till that volcano decided to grab attention. [01:37] mape: funconf? [01:37] bacon has joined the channel [01:37] binary42: Yeah. [01:37] polotek has joined the channel [01:38] binary42: mape: Rescheduling to the end of summer it seems. So I have hopes of getting there eventually. [01:38] mape: mm [01:40] polotek has left the channel [01:41] inimino: hm... [01:41] inimino: ACTION looks at docs [01:41] inimino: ooh, pretty [01:41] JimBastard has joined the channel [01:42] _ry: needs anchors [01:42] _ry: i hope mape will redo it with markdown.js [01:42] mape: I'll look at it [01:43] inimino: _ry: is calling response.write() repeatedly supposed to be safe? [01:43] polotek has joined the channel [01:43] _ry: inimino: yes [01:43] inimino: because it looks like bytes are being dropped [01:43] _ry: mape: if i linke to a certain function, it gets covered up: http://nodejs.org/api.html#fs-truncatesync-97 [01:43] inimino: alright, I'll make a test case [01:44] mape: _ry: yeah.. [01:44] MattJ: _ry: I already told him! [01:44] MattJ: and sent a patch :) [01:44] _ry: mape: :) [01:44] _ry: yey open source [01:44] mape: Easiest is probly to just drop the top header moving around [01:44] inimino: _ry: is there a drain event? [01:45] _ry: inimino: on net.Stream, yes [01:45] MattJ: mape: Just remove that header entirely, would suit me fine [01:45] inimino: that would be probably a quick fix, but I should find the bug anyway [01:45] markwubben has joined the channel [01:46] MattJ: mape: The TOC frame could also scroll if you enter a section that is out of view [01:46] _ry: mape: http://github.com/ry/node/blob/9926dacd14c39276299712ced4a83fb043f27162/AUTHORS#L68 [01:46] _ry: is that your correct name? [01:46] JimBastard: mmm cowboy kisses are inc [01:47] mape: _ry: Yeah [01:47] MattJ: I need my name there... *goes to find some trailing whitespace he can remove* [01:47] mape: Why? Are you making fun of it? [01:47] mape: ;) [01:47] JimBastard: thats shrimp and jalepeon wrapped in bacon deep friend served with spicy mayo [01:47] _ry: mape: you should enter it into git so it goes on your commits [01:47] mape: I have? [01:48] mape: oh mape [01:48] Aria has joined the channel [01:49] mape: There we go [01:52] mape: _ry: Btw the site, should that be fixed as well so it matches the api doc page? [01:53] _ry: mape: maybe [01:53] _ry: i actually think opposite? :) [01:54] _ry: i don't know [01:54] mape: Hehe k, so.. Revert doc changes? [01:54] _ry: ACTION sucks at website design [01:54] _ry: i mean what would you change? [01:54] _ry: font? [01:55] siculars has joined the channel [01:55] mape: Yes [01:56] mape: not sure it is a big deal [01:56] mape: Guess it is good for the project to have a nice page to make it more "official" and "serious" [01:57] _ry: yeah [01:57] mape: But since you hate logos I assume you don't put as much time thinking about that [01:58] RayMorgan has joined the channel [02:02] brainproxy: okay so i finally figured out the stupid callback parse thing; it probably should have been obvious to me; but I needed to take the chunk coming back from the redis client and do [02:02] brainproxy: foo = '' + chunk [02:02] brainproxy: and then parse poo [02:02] brainproxy: foo [02:02] brainproxy: :) [02:03] brainproxy: anyway, you guys might be rolling your eyes, but I thought i would share [02:03] brainproxy: (node rocks) [02:04] _ry: brainproxy: chunk.toString() [02:05] brainproxy: gracias [02:06] brainproxy: hmm, that doesn't seem to work when chunk is json [02:14] baconbits has joined the channel [02:29] quirkey has joined the channel [02:32] polotek: hey, has anyone checked out using v8-juice when writing node libraries? [02:33] MattJ: I don't think it's open sauce [02:33] polotek: New BSD [02:34] MattJ: Ah, not http://www.v8juice.co.uk/ then :) [02:35] polotek: http://code.google.com/p/v8-juice/ [02:35] polotek: sorry [02:35] MattJ: Wow that's a stretched acronym :) [02:36] polotek: yeah he REALLY wanted to get that play on words going [02:36] MattJ: I personally haven't looked at the C++ V8 API [02:36] MattJ: and I guess most libs are written in Javascript [02:37] polotek: yeah, I'm realizing that's not obvious. I'm talking about addons with c/c++ bindings [02:38] polotek: libxmljs in particular [02:39] polotek: I've spent the last week really trying to get the lay of the land in terms of the v8 community [02:39] davidwilhelm has joined the channel [02:39] polotek: there's a general consensus that the documentation blows [02:40] polotek: and not a lot of info about people writing libraries with embedded v8 [02:42] davidwilhelm: I found it easy to install and try the demo, but got an 'error connecting to server' using the chatroom demo [02:42] dnolen has joined the channel [02:45] Aria: Yagh, I hate WAF [02:46] davidwilhelm: signoff [02:50] binary42 has joined the channel [02:52] quirkey has joined the channel [02:52] isaacs has joined the channel [02:55] inimino: _ry: failing test case: http://gist.github.com/377412 [02:56] inimino: ACTION tries 0.1.92 [02:57] inimino: _ry: hm... it seems this is fixed since 0.1.90 [02:58] _ry: inimino: ? [02:58] _ry: is it broke [02:59] inimino: _ry: the test case that I just gisted was broken in 0.1.90 but now it seems to work [02:59] inimino: so I guess you already fixed it :) [02:59] _ry: Array(1025).join('x') [02:59] _ry: ^-- this is cool [03:00] inimino: oh, yeah, it's a cute trick [03:00] _ry: kind of unnecessary though [03:00] _ry: :) [03:00] _ry: i mean, the big array object [03:01] inimino: yes [03:01] inimino: before that I had an array full of actual data, this made the test file much smaller ;) [03:02] inimino: alright, time to test my actual server again... [03:02] inimino: _ry: btw, did you know of any recently-fixed bugs that would cause that? [03:05] _ry: inimino: my guess would be 684740c23200be67368fb1b225140e06c1fec295 [03:06] inimino: ah [03:06] creationix: _ry: so there weren't any api changes in this release right? [03:07] creationix: well, I guess the error thing is considered an api change [03:07] creationix: it will break some code [03:07] _ry: creationix: the error thing, yeah [03:07] _ry: other than that, no [03:07] creationix: cool, I've been testing all my stuff and everything seems to run fine [03:08] ncb000gt has joined the channel [03:08] ditesh|cassini has joined the channel [03:09] _ry: creationix: there won't be much more API changes [03:09] inimino: :) [03:09] creationix: nice, stability is on the way [03:09] _ry: just trying ot fix some bugs before 0.2 [03:09] polotek: +1 [03:09] _ry: the 'error' thing is going to be break code [03:09] _ry: but that will be good [03:10] creationix: alright, howtonode.org is running on v0.1.92 :) [03:11] creationix: I'm trying to remember what has error events to catch, I guess streams [03:11] inimino: I think I am going to upgrade from 0.1.25 to 0.1.92 tonight [03:12] creationix: inimino: good luck, that a big jump [03:12] inimino: if anybody wants to talk to possibly one of the oldest living node processes, now's your chance ;) [03:12] inimino: creationix: yeah, I already did most of the work and testing [03:12] creationix: inimino: you should check with felixge, he's got some old ones on transload.it [03:13] creationix: how do you check the age of a process in linux anyway? [03:14] inimino: ps [03:14] inimino: ps u | grep node [03:14] inimino: or something like that [03:14] inimino: ps auxww | grep node [03:23] JimBastard has joined the channel [03:25] rictic has joined the channel [03:27] PyroPete1 has joined the channel [03:38] tekky has joined the channel [03:39] Aria: Woot! html5 parser now round-trips through the parser for my test code. [03:39] _ry: Aria: nice [03:39] _ry: Aria: code [03:40] _ry: ? [03:40] Aria: http://github.com/aredridel/html5 [03:40] Aria: Depends on http://github.com/aredridel/env-js (which is patched to work as commonJS modules, at least for dom) [03:41] hobson has left the channel [03:42] kriskowal has joined the channel [03:42] hobson has joined the channel [03:42] polotek has left the channel [03:44] admc has joined the channel [04:03] steadicat has joined the channel [04:06] admc has joined the channel [04:07] lifo_ has joined the channel [04:10] icey has joined the channel [04:11] crodas has joined the channel [04:20] crodas has joined the channel [04:20] micheil: hey, _ry we no longer need the | sed ... \ line in make doc, as the id's are being added dynamically via javascript. [04:24] Aria: Oh and v0.1.92 fails to build using --system without adding CARES to the list of libraries to compile against, _ry [04:26] crodas has joined the channel [04:32] Ned__: when using the http server, how do I determine if a client has disconnected ? [04:32] Ned__: I figured there would be an event on the response or something to say EOF [04:32] Ned__: ? [04:36] creationix: _ry: where should I put nvm on the node wiki, technically it's not a module and works with any node version, it's written in bash [04:36] creationix: maybe make a separate section for tools like that? [04:37] Yuffster has joined the channel [04:38] RayMorgan has joined the channel [04:38] noonat: Oh man, the new docs are pretty :D [04:39] Aria: Aren't they! [04:39] noonat: Ned__: You should be able to listen for 'end' on the underlying request.connection object, I think [04:39] JimBastard has joined the channel [04:40] Ned__: noonat: okay, thanks :-) [04:40] JimBastard: whats the general approach to adding timeouts to http client requests? i want to stop the request if it doesnt respond after 20 seconds or so [04:43] JimBastard: set a timer outside the request and remove the timer [04:43] noonat: JimBastard: You could probably use the built-in setTimeout on the stream, too [04:44] JimBastard: is there any sample code floating around? [04:47] Aria has joined the channel [04:48] kriskowal has joined the channel [04:49] kriskowal: _ry reinstalled macports and reinstalled openssl; all is well now [04:51] silentrob has joined the channel [04:56] noonat: JimBastard: http://gist.github.com/377476 [04:57] JimBastard: heh that looks way cleaner [04:57] JimBastard: thanks ill try it out noonat [05:01] towski has joined the channel [05:02] JimBastard: sup towski [05:02] JimBastard: :-D [05:02] towski: you JimBastard [05:02] towski: how's it going? [05:03] JimBastard: working on some node reverse proxy stuff [05:03] JimBastard: having a javascript party in nyc right now lol [05:03] Aria: Woot! Several big web pages went through my HTML5 parser without damage! [05:03] JimBastard: me, binary, the gordon guy, and indexzero [05:03] Aria: (Testing with a proxy!) [05:03] JimBastard: flash gordon owns [05:04] towski: github link? :) [05:05] JimBastard: ill do ya one better [05:05] JimBastard: http://paulirish.com/work/gordon/demos/ [05:06] JimBastard: thats SWF => JS in realtime [05:06] JimBastard: on the browser [05:11] micheil: JimBastard: can it override / tags? [05:12] JimBastard: i mean i think that would be a job for your selection engine? [05:12] JimBastard: read the wiki on github [05:12] JimBastard: swf goes in canvas comes out or something [05:12] JimBastard: maybe svg [05:12] JimBastard: its magic [05:12] JimBastard: vml support wouldnt be impossible [05:16] micheil: he should talk to the guy behind Raphaël js [05:18] mikeal1 has joined the channel [05:23] JimBastard: dude [05:23] JimBastard: they are friends [05:23] JimBastard: we all hang out too at jsconf [05:23] JimBastard: :-D [05:23] JimBastard: javascript party [05:38] silentrob has joined the channel [05:40] noonat has joined the channel [05:53] mikeal1 has joined the channel [05:56] bolson has joined the channel [05:57] JimBastard has joined the channel [05:57] JimBastard: mikeal1 you alive [05:57] JimBastard: mikeal [05:58] mikeal1: yeah [05:58] mikeal1: here [05:58] JimBastard: do you think you could take a look at some proxy code i got going? [05:58] JimBastard: http://gist.github.com/377497 [05:59] JimBastard: i dont seem to be catching the timeout correctly [05:59] JimBastard: maybe its closing the request instead of timing out? [06:00] mikeal1: if request.connection the client object? [06:00] mikeal1: is it basically c? [06:00] mikeal1: because i usually only get connection errors on the Client [06:01] JimBastard: not sure [06:01] JimBastard: im adding debug out on every event now [06:01] mikeal1: i never do timeout stuff [06:01] mikeal1: i just add a listener for "error" on the client [06:03] JimBastard: hrmm [06:03] JimBastard: maybe im making this too hard [06:03] JimBastard: the error event might cover it? [06:04] JimBastard: ohh hell yeah that worked [06:04] JimBastard: mad easy [06:05] JimBastard: thanks mikeal1 [06:12] bolson has left the channel [06:12] bolson has joined the channel [06:29] _ry: JimBastard: the timeout might be broken [06:29] JimBastard: its fine [06:29] JimBastard: i got around it [06:29] JimBastard: im working on some of the child process stuff now [06:30] JimBastard: i need to sys.exec('node /path/to/custom.js') or so [06:30] JimBastard: not sys.exec now [06:31] kriskowal has joined the channel [06:32] JimBastard: yeah thats working nicely [06:32] JimBastard: <3 node [06:32] JimBastard: exec = require('child_process').exec, [06:32] JimBastard: now i gotta figure out some linux sandboxing [06:38] bpot has joined the channel [06:44] JimBastard: mmm break time [06:45] binary42 has joined the channel [06:50] cruxst has joined the channel [06:50] binary42 has joined the channel [07:00] sudoer has joined the channel [07:01] isaacs has joined the channel [07:03] kriskowal has joined the channel [07:12] ditesh|cassini has joined the channel [07:12] Nohryb has joined the channel [07:19] JimBastard has joined the channel [07:20] JimBastard: does anyone know any other cool node apps to play with besides like expressjs and fab? i guess wheat the blogging engine thing, but anything else? [07:20] JimBastard: like an application someone might actually use for real stuff? that actually works? [07:31] towski has joined the channel [07:31] teemow has joined the channel [07:37] CodeOfficer has joined the channel [07:39] pdelgallego has joined the channel [07:44] derbumi has joined the channel [07:46] Elfix has joined the channel [07:51] nsm has joined the channel [08:08] jspiros has joined the channel [08:10] pkrumins: anyone experiencing weird behavior with the latest node? particularly sting objects somehow get turned into buffer objects, and I can't call string functions on them anymore, like str.toLowerCase, str.substring, etc. [08:10] jspiros has joined the channel [08:10] pkrumins: s/sting/string/ [08:11] pkrumins: oh! [08:11] pkrumins: it seems that 'data' callback now stores everything in buffer [08:11] pkrumins: so i have to call toString to get it! [08:13] rtomayko has joined the channel [08:13] pkrumins: maybe that is true [08:14] CIA-77: node: 03Jérémy Lal 07master * r610faf7 10/ wscript : Drop UDNS from node.uselib. Add CARES for --system. - http://bit.ly/cPziEC [08:17] pkrumins: yep taht is true. [08:17] pkrumins: got to call stream.setEncoding(). [08:18] pkrumins: or use toString [08:21] ewdafa has joined the channel [08:22] zackattack has joined the channel [08:27] pkrumins: is it now absolutely required to setEncoding for streams? [08:28] pkrumins: I have node itself croak when two stream get proxied through it. [08:32] pkrumins: this fails for me now res.write(data, {'Content-Type': 'text/plain' }); [08:32] pkrumins: with [08:32] pkrumins: the following traceback http://paste.pocoo.org/show/205546/ [08:33] pkrumins: however if I change that line to res.write(data), it succeeds [08:33] isaacs has joined the channel [08:34] kixxauth has joined the channel [08:35] jamesduncan has joined the channel [08:35] pkrumins: Can't set ecoding on it either [08:35] pkrumins: TypeError: Object # has no method 'setEncoding' [08:38] pkrumins: figured it out. [08:38] pkrumins: i had a bug in res.write(data, {'Content-Type': 'text/plain' }); [08:38] pkrumins: you don't send headers in write() [08:39] noonat: writeHead :) [08:39] pkrumins: yes sir [08:39] ahc has joined the channel [08:43] noonat: as for setEncoding: you can pass the encoding in as the second param to write [08:45] qFox has joined the channel [08:45] pkrumins: noonat, roger. [08:49] javajunky has joined the channel [08:50] piranha has joined the channel [09:00] mcarter has joined the channel [09:14] ditesh|cassini has joined the channel [09:18] xla has joined the channel [09:34] towski has joined the channel [09:36] jamesduncan has joined the channel [10:09] zackattack has joined the channel [10:12] xla has joined the channel [10:24] pjb3_ has joined the channel [10:25] ec: ’sup everyone [10:26] ec: I’ve been … away … for a while. [10:26] ec: Seems I missed a lotl 0.1.*92*!? [10:27] qFox has joined the channel [10:28] nefD has joined the channel [10:33] xla has joined the channel [10:39] jamesduncan_ has joined the channel [10:40] ditesh|cassini has joined the channel [10:45] jamesduncan_ has joined the channel [10:51] maritz has joined the channel [11:00] ssteinerX has joined the channel [11:14] Nohryb has joined the channel [11:16] martoche has joined the channel [11:16] botanicus has joined the channel [11:19] jedschmidt has joined the channel [11:20] hellp has joined the channel [11:30] towski has joined the channel [11:44] jamesduncan has joined the channel [11:44] ditesh|cassini has joined the channel [11:54] xla: heya [11:55] xla: which lib in userland has a fast and solid implementation of a mixin function? [12:01] Nohryb has joined the channel [12:09] sveimac has joined the channel [12:10] piranha has joined the channel [12:14] technoweenie has joined the channel [12:16] technoweenie has joined the channel [12:29] herbySk has joined the channel [12:37] botanicus has joined the channel [12:37] tav has joined the channel [12:41] teemow has joined the channel [13:16] pagameba has joined the channel [13:17] pagameba: hi, new to node, trying to install mongodb-native via kiwi (kiwi -v install mongodb-native) and getting invalid seed on 0.7.0 (many tar errors) - anything I can do about this? [13:19] pagameba: sorry 0.7.1 is the version it is trying to install [13:22] creationix has joined the channel [13:23] botanicus has joined the channel [13:32] pagameba: :( [13:39] hsuh has joined the channel [13:49] Nohryb has joined the channel [14:04] creationix: xla: what do you need mixin to do? [14:04] qFox has joined the channel [14:05] creationix: pagameba: have you tried installing the driver manually [14:06] pagameba: creationix: newbie, how would I do that? clone from git? and then? :D [14:06] creationix: I guess so, the mongo driver should say in the readme [14:07] creationix: none of the package managers are complete yet, kiwi is one of the more matured ones, but nothing is official yet [14:07] pagameba: looking at the readme ... [14:08] creationix: Are you using this one? http://github.com/orlandov/node-mongodb [14:08] maushu has joined the channel [14:09] polotek has joined the channel [14:10] creationix: hmm, I'm not sure which is the most stable, there is also http://github.com/christkv/node-mongodb-native.git [14:11] creationix: xla: well, if you just need a shallow copy, then my proto library has a good mixin it adds to Object.prototype http://github.com/creationix/proto [14:11] pagameba: the native one [14:13] creationix: pagameba: I'm afraid I haven't used either, so I'm not too much help, I think this site uses mongo http://nodeblogs.com/ [14:14] creationix: the site is by Christian, so I assume he's using his own driver [14:14] pagameba: I don't really need to use it but I'm following a tutorial on setting up a simple blog using node.js, express and mongodb :) [14:14] polotek: anybody else think it's a little confusing that the conventin is "native" means pure-js and non-native means C addon? [14:15] pagameba: what I'm really looking to do is set up a twitter oauth thing ... this was just a way of getting started with node.js [14:15] creationix: polotek: I agree, I try to use "pure-js" when I mean there are no C parts [14:16] creationix: pagameba: ahh, makes sense, If you do get ahold of tjholowaychuck, ley him know the kiwi build isn't working, he'll probably be interested to know [14:17] pagameba: I posted a comment on the github issue list with the symptoms [14:17] creationix: pagameba: great, are you on the mailing list? There has been discussion of oauth stuff lately [14:18] pagameba: creationix: yes, following the oauth discussions with a bit of interest :) [14:18] pagameba: creationix: there is no 'install' docs, I assume this is something that people just 'know' how to do with nodejs? How do I make a package like mongodb-native accessible in my app.js? [14:19] creationix: well, if there are no C parts, then you just need to get the lib folder into your search path [14:19] pagameba: is it just require('/path/to/git/checkout/location/') [14:19] pagameba: ah - search path ... which is set where? [14:20] creationix: the "Modules" section of the docs explains it http://nodejs.org/api.html [14:20] polotek: creationix: yeah that makes sense re: naming [14:21] creationix: I usually just symlink the lib/* to my ~/.node_libraries/ folder [14:21] creationix: pagameba: ^ [14:22] polotek: pagameba: you can also set NODE_PATH in your environment and add paths there [14:22] polotek: export NODE_PATH=/path/to/your/lib [14:25] Nohryb has joined the channel [14:26] botanicus has joined the channel [14:26] gwoo has joined the channel [14:47] xla: creationix: thx I thought about proto, but I couldn't remember the name [14:48] creationix: xla: was a shallow copy what you wanted? [14:48] xla: creationix: yay [14:49] zackattack has joined the channel [14:49] creationix: I'll take that as a yes :) [14:52] pagameba: ok, I used polotek's suggestion to create NODE_PATH, the example is running now - thanks all [14:52] alex-desktop has joined the channel [14:54] polotek: pagameba: cheers [15:02] Nohryb has joined the channel [15:05] Aria has joined the channel [15:11] pagameba: ok, next question - does anyone know how to get a sass file to be included in a haml template rendered by the express engine? [15:11] pagameba: at least I think that is what I want to know :D [15:12] gwoo has joined the channel [15:15] pagameba: I'm doing this tutorial http://howtonode.org/express-mongodb and the page rendering doesn't seem to use the sass style sheet [15:15] pagameba: so i think something is missing [15:19] maushu has joined the channel [15:20] polotek: haml and sass aren't necessarily connected [15:21] martoche has joined the channel [15:21] polotek: ^-- pagameba [15:21] polotek: Once you set up your route for the css file just add the link tag to your head of your haml file [15:21] pagameba: polotek: ok ... I see a route in my app for pulling in a css file from the sass file [15:22] pagameba: polotek: how to add a link tag, that is the question :) [15:23] polotek: Check out the docs for haml. It's pretty simple. Start with %link [15:24] creationix: pagameba: I run the howtonode site, that particular howto isn't mine, but I'm thinking of writing a new one [15:25] creationix: what is it you're looking for in a howto (besides examples that actually work as described) [15:26] pagameba: creationix: just trying to get this simple blog howto working so I can see how all the pieces fit together for running a simple site [15:26] pagameba: creationix: then onto the horribly complicated stuff :) [15:26] creationix: as far as haml, visionmedia's version is almost exactly as the ruby version, my haml-js is slightlyl modified [15:27] creationix: pagameba: one of the difficult but terribly interesting things about node is that traditional mvc based apps don't translate well to node [15:27] creationix: it's much better suited to other yet-to-be-solidified patterns [15:27] pagameba: polotek: I can't find anything on %link [15:27] maushu: Anti-patterns. [15:28] pagameba: creationix: :) [15:28] creationix: besides, I wouldn't say that using a huge framework like express is a good place to start learning node [15:28] creationix: it abstracts away a lot and gives you a much more rubyesque style of coding [15:28] pagameba: creationix: ok [15:29] polotek: creationix: agreed [15:29] creationix: that's like using rails to learn ruby [15:29] pagameba: ACTION wonders where he should start? [15:29] creationix: what is the sample site you want to build? [15:29] pagameba: I did get the whole blog example working, including the mongodb thing so that is good [15:29] creationix: I'm assuming http server with templates and some sort of persistence? [15:30] pagameba: the only thing that didn't work was including the style sheet :) [15:30] pagameba: creationix: I'm building a twitter application [15:30] pagameba: the concept is simple, and I have all the pieces working in PHP [15:30] creationix: so a twitter clone or a site that wraps the twitter web service [15:31] polotek: pagameba: the "hello, world" of framework learning projects :p [15:31] polotek: I've built at least 5 on different platforms [15:31] pagameba: creationix - it polls the direct messages of a particular user and looks for key words [15:31] pagameba: creationix: and uses that to modify the profile pic of users that have authenticated the service to make those changes using oauth [15:32] creationix: interesting [15:32] pagameba: creationix: in its simplest state you might sign up, oauth authenticate the app then send a direct message about how you are feeling and it will update your profile pic with an emoticon [15:33] polotek: creationix: most of the people I talk to about node are interested in http. a good tutorial going over that would go a long way as a foundation I think [15:33] pagameba: creationix: so its mostly a server-side thing [15:33] pagameba: perhaps with high load, you can never tell how twitter-related things are going to take off :) [15:34] creationix: I think I'll do one on writing a simple http site with templates, post data, and persistence [15:34] creationix: using no libraries, just pure node [15:34] creationix: pagameba: sounds like fun [15:34] polotek: how would you do persistence? [15:34] pagameba: but it needs a bit of a front end to fire off the oauth request to twitter and capture the resulting tokens into a db [15:35] creationix: If you data is just a cache of the web service you're scraping, then a simple in-memory hash will do fine [15:35] creationix: node-dirty is pretty simple if you want to save the hash to disk and query it [15:35] pagameba: creationix: perfect! [15:35] creationix: I have yet to create a node app that needs a database [15:36] creationix: my sousaball game has persistent data, but I just store the levels as json documents in real files [15:36] pagameba: creationix: a howto setup a site to oauth authenticate with twitter would be awesome - render a simple page with the authenticate url in an tag and a handler for the callback with the user's token :) [15:36] polotek: creationix: yeah that's what I figured. works fine while the app is running. [15:36] creationix: it would be awesome, but I'd have to learn that myself first [15:37] polotek: might be a pain on restart if the json files get large [15:37] creationix: well, none of my sites store per-user data [15:37] creationix: so that helps with scaleability [15:39] polotek: also http://www.countdowntooauth.com/ [15:40] polotek: :) [15:40] ncb000gt: pagameba: I just worked on some things with Tornado and have been considering moving that to node due to libs [15:40] ncb000gt: So, if I do move it over I'll try to write something up like that [15:40] pagameba: ncb000gt: cool [15:41] sh1m has joined the channel [15:42] Aria: Hm. Any idea what an ... exception, maybe? ... saying just "node.js:164:9" means? [15:42] Aria: No full backtrace. [15:45] creationix: Aria: looks like an exception, sucks that you don't get the trace though [15:45] polotek: Aria: what's the message that came with that? usually if all you get is a reference to node.js it's a problem in the C bindings somewhere [15:45] polotek: usually bad arguments [15:48] derbumi has joined the channel [15:48] herbySk: 164:9 is the "process.loop(), so if an exception is generated inside loop, you may as well have no stacktrace... [15:48] Aria: No message, that's the thing. [15:49] Aria: Hm, alright. A problem closing file descriptors or something, perhaps, or overflowing a buffer (I /am/ using Buffer) [15:49] Aria: And I might indeed be passing bad data to the Buffer methods. [15:54] binary42 has joined the channel [15:54] polotek: Aria: I don't have a lot of experience with buffer stuff, if you gist an example somebody smarter will probably help out [15:55] Aria: Hehe, aright. If only this didn't invoke 5000 lines of code. [15:55] Aria: I'm still looking for a tighter test case. [15:58] Aria: Yagh. The downcasing of header names in the HTTP stuff bugs the heck out of me. [15:58] ncb000gt: polotek: your streaming twitter stuff work with oauth? [15:58] polotek: ncb000gt: nope [15:58] ncb000gt: ok [15:59] polotek: I'm planning to update and release the lib this weekend, but I don't have much experience coding for oauth [15:59] ncb000gt: hmm [15:59] polotek: if someone can point to a nice implementation I can take a crack at porting [15:59] ncb000gt: there is a node-oatuh lib somewhere [15:59] brainproxy: haha, nice node is pushing ~40mbps right now, and the vm it's running in is hardly breaking a sweat [16:00] Aria: Hehe. Gotta love evented code. [16:00] ncb000gt: braiproxy: sweet :) [16:00] brainproxy: of course redis is preforming on par with node [16:00] brainproxy: :) [16:00] ncb000gt: polotek: http://github.com/ciaranj/node-oauth [16:01] polotek: brainproxy: qps for redis? [16:01] brainproxy: qps? [16:01] ncb000gt: queries [16:01] polotek: queries per second. just curious [16:01] _ry: like i said, you'll saturate your bandwith [16:01] brainproxy: hmm, i'm not sure, let me ballpark it [16:01] brainproxy: is there a way I can get that stat [16:01] brainproxy: from noe [16:01] brainproxy: from redis i mean [16:01] _ry: people should stop worrying about multicore :) [16:01] brainproxy: with redis-cli [16:02] mape: has node even been deployed on a project and it turned out it couldn't handle the preasure? [16:02] brainproxy: this is not an answer but I just fired up this test a couple of min ago [16:02] brainproxy: and redis says [16:02] brainproxy: total commands processed [16:02] brainproxy: 2522828 [16:02] _ry: if you've only got a 100mb connection to the internet, i think a single core will be enough - unless you're calculating primes [16:03] polotek: damn, _ry did say that I remember giving him a good "pshaw!" when I read it [16:03] _ry: mostly web apps just shuffle data around [16:04] _ry: take something from over there - maybe eval a template - send it over there [16:04] brainproxy: my very conservative estimate atm is 15000+ qps [16:04] _ry: it's really sad that in the current state of things you need like 100 rails processes running at 200mb each to serve a decent website [16:05] mape: brainproxy: That sounds high.. [16:05] ncb000gt: _ry: agreed [16:05] mape: Hello world pushes like 6k on a random machine? [16:05] _ry: i agree - it does sound high [16:05] brainproxy: well, each request results in 4 queries to/from redis [16:05] brainproxy: i have three clients blasting it at 1000 rps [16:06] brainproxy: so 3000 * 4 [16:06] brainproxy: plus I have a handful of clients balsting at 100 rps [16:06] brainproxy: w/ respect to node I mean [16:06] _ry: ACTION away for the weekend. ciao [16:07] brainproxy: have a good one ry [16:08] brainproxy: alright, i added two more 1000 rps clients to the system [16:08] brainproxy: 5000 * 4 [16:08] brainproxy: and I have others too [16:09] brainproxy: the vm running the server has 4 cores, none going over 40% util atm [16:09] ncb000gt: a single query would include the to and from...so is it 2 queries or actually 4? [16:09] brainproxy: talking redis queries [16:09] brainproxy: each request results in two to node from the server [16:09] brainproxy: i mean two to redis [16:09] brainproxy: and then a worker thread works the queue [16:09] brainproxy: ever ms [16:09] brainproxy: so it does a read/write [16:09] ncb000gt: ok [16:10] brainproxy: so 4 [16:10] ncb000gt: gotcha [16:10] brainproxy: and then I have two clients catching all the output as well [16:10] brainproxy: they're getting absolutely hammered of course [16:10] polotek: someone should post this thread on twitter so I can retweet. it's like nerdporn [16:10] brainproxy: so all in all, it's pretty amazing [16:10] ncb000gt: polotek: hah [16:11] maushu has joined the channel [16:11] polotek: this is the main reason web developers end up being sys admins, managing clusters and whatnot. it sucks [16:11] stepheneb has joined the channel [16:12] polotek: One machine with plenty of ram and a couple load balanced node processes could probably put a lot of other setups to shame [16:12] brainproxy: i am going to work out my own logic so I can have multiple node processes playing catch up front [16:12] brainproxy: and multiple workers on the backside of redis [16:12] brainproxy: but it will still be simpler [16:12] brainproxy: than a lot of the stuff that's done these days [16:13] brainproxy: btw, i'm using jcoglan's faye library [16:13] brainproxy: to channelize [16:13] brainproxy: the http requests [16:13] brainproxy: it's friggin awesome [16:13] polotek: I've been poking around faye too. what do you mean by "channelize" [16:13] brainproxy: faye + redis pubsub = a web heaven [16:13] brainproxy: polotek: you can have clients name channels [16:13] maushu: node cluster for the win. [16:13] brainproxy: and the server can too [16:14] brainproxy: the named channels are multiplexed on top of the xhr [16:14] brainproxy: that's behind the scenes [16:14] brainproxy: faye = the bayeux protocol [16:14] brainproxy: implemented in node.js [16:14] brainproxy: my hope now is to couple named channels to class instances [16:15] brainproxy: and push clients classes via express and nodejuice [16:15] polotek: I understand the tech but not understanding why you're channelizing [16:15] polotek: sorry for being dense [16:15] brainproxy: becase each channel can represent something different [16:16] brainproxy: and then the client side and server side programming becomes easier [16:16] brainproxy: well to me a tleast [16:16] brainproxy: I can invoke methods for incoming messages [16:16] brainproxy: based on channels [16:17] brainproxy: maybe it's dumb, i dunno, but it's been fun to work with [16:17] brainproxy: there might be better ways [16:18] polotek: sounds cool but I'm not getting a mental model. good luck though [16:19] brainproxy: ah, it crapped ot :( [16:19] brainproxy: *out [16:20] Yuffster has joined the channel [16:21] polotek: question for the room about module design [16:21] polotek: I have an object that allows the user to read a stream [16:21] sveimac has joined the channel [16:21] polotek: internally it reads the data events and processes them, then emits it's own events based on the outcome [16:22] polotek: right now when you invoke the "stream" method it returns a custom eventemitter that you can attach listeners to [16:23] polotek: another module I ran across has a similar approach, accept the module object itself is used as the event emitter and you attach listeners directly to it [16:23] polotek: wondering what the pros and cons of each approach are [16:24] ncb000gt: polotek: it sounds like the second is one less step and little less mem. [16:24] Aria: The first approach lets you delay emitting events until handlers are attached. [16:24] polotek: Aria: correct [16:24] Aria: Since you can wait until the function that gives the handler to return. [16:24] polotek: but you can wrangle the api on the second approach to support that [16:25] Aria: Right -- just give this as the argument. [16:25] Aria: I myself would do that. [16:25] polotek: so 2 votes for #2? [16:25] polotek: here's why I like #1 [16:25] polotek: essentially the module obj is a factory [16:26] polotek: you can call stream multiple times and get different emitters [16:26] Aria: And would you want separate emitters? [16:26] polotek: rather than creating a new object multiple times [16:26] ncb000gt: what would be the benefit of multiple emitters [16:26] ncb000gt: as opposed to a single emitter? [16:27] polotek: stream takes options, so successive calls could have different options [16:27] Aria: ACTION nods. [16:27] polotek: but internally the same module obj could reuse resources [16:27] Aria: That makes sense, then. That's a lot like the createServer method in node's net and http modules. [16:27] polotek: like it only needs one http client [16:27] polotek: and can spawn multiple requests [16:28] polotek: I would think client/clientrequest objects are more expensive than the eventemitter stream objects [16:28] polotek: but I could be bass ackwards on that [16:28] Aria: Probably. Though quite likely not importantly so. [16:28] polotek: yep, you're right. I didn't even realize that. [16:29] polotek: well the reason I say that is because requests open connections [16:29] martoche has joined the channel [16:29] polotek: more to manage [16:29] Aria: Yeah. [16:30] polotek: but honestly that's a moot point, in my case I do need a request for each instance of stream [16:30] polotek: because the options change the request [16:30] polotek: could reuse the client object that gets returned from createClient though [16:30] crodas has joined the channel [16:34] JimBastard_ has joined the channel [16:34] JimBastard_: zzzz [16:34] JimBastard_: has anyone come up with a good module hot loading strategy that doesnt require compiling node? [16:34] ncb000gt: Scala? [16:34] ncb000gt: :) [16:35] ncb000gt: i haven't seen anything [16:36] noonat: JimBastard_: Are there good ones that do require compiling node? [16:37] JimBastard_: there is one, but its outdated [16:37] noonat: Whereabouts? [16:37] JimBastard_: i actually dont need to use require() in my case [16:37] JimBastard_: i just need to fileWatch a json file [16:37] JimBastard_: that when it gets updated the application will know [16:37] JimBastard_: so i guess i can just fs.read the file instead of doing a require [16:37] silentrob has joined the channel [16:38] noonat: Ah, yeah, that makes it simpler. You could just deep merge it into the existing object, then. [16:38] JimBastard_: but yeah umm hot require [16:38] JimBastard_: http://romeda.org/blog/2010/01/hot-code-loading-in-nodejs.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A%20LiminalExistence%20%28Liminal%20Existence%29 [16:39] JimBastard_: but i think thats built against an older version of node [16:39] JimBastard_: _ry i think this has been talked about a lot. is there any plan for hot module reloading in the core? [16:39] maushu has joined the channel [16:39] brainproxy: ry said he's out for the weekend [16:40] JimBastard_: got ya [16:40] JimBastard_: does anyone know the state of the union for hot loading of node js modules? [16:40] brainproxy: not sure; has anyone tried jcoglan's helium in the context of node.js [16:41] brainproxy: would that even work [16:41] polotek: I seem to remember some thread saying it was hard to do really robust file watching [16:41] polotek: don't quote me [16:41] mape: doesn't work just requiring it again? [16:41] dnolen has joined the channel [16:43] polotek: mape: are you saying require checks modification status before just returning cached version? [16:43] polotek: docs don't talk much about require. probably should, it's fairly important [16:43] mape: I wasent aware it cached them so guess dont [16:44] polotek: yeah module caching is definitely part of the spec [16:44] polotek: there might also be a require.cached(...) that will make sure it doesn't cache or something like that [16:45] ncb000gt: http://github.com/blaine/node/blob/hotload/src/node.js#L840 [16:45] ncb000gt: shows as 850 for me [16:45] ncb000gt: but the highlighting is weird [16:45] polotek: no require.cache or cached [16:45] ncb000gt: that checks the cache for the module [16:46] polotek: don't know where I got that from [16:46] ncb000gt: but it's not doing file io unless it has to [16:46] brainproxy: i killed terminal.app! [16:46] brainproxy: never done that before [16:46] ncb000gt: lol [16:46] mape: so what if you just add false && ? [16:46] polotek: brainproxy: win [16:47] ncb000gt: brainproxy: time to install linux [16:47] mape: it doesn't cache the modules? [16:47] ncb000gt: ACTION ducks [16:47] brainproxy: ncb000gt: it's becaus I'm monitoring all my traffic realtime through it, which is kind of dumb [16:48] ncb000gt: brainproxy: don't worry, i'm just being an ass [16:48] polotek: mape: it does, and there's now way to by pass the cache [16:48] brainproxy: np :) [16:48] polotek: I bet _ry would accept a patch though [16:48] brainproxy: Chesterton wrote a famous poem about asses .. they too have their day [16:49] brainproxy: anyway, I think I'm done with node for the weekend, ya'll have fun [16:50] ncb000gt: later [16:52] ncb000gt: also, like an idiot i was in the wrong repo when looking, http://github.com/ry/node/blob/master/lib/module.js#L212 [16:52] ncb000gt: this is the check [16:52] ncb000gt: but, again, it's not doing any io to see if the file timestamp has changed [16:53] ncb000gt: bbiab [16:54] polotek: now I remember [16:54] polotek: the problem is with the io call to check the file stats [16:54] polotek: if the call is async then require becomes async which is no good [16:55] polotek: if the call is sync then require becomes a bottleneck [16:55] polotek: because the way node idioms are developing, people use require quite a lot [16:55] noonat: imo hot-loading shouldn't be part of the main require() -- it should be opt in, something on top of require [16:55] noonat: or a method of the module itself [16:55] polotek: noonat: agreed [16:55] noonat: you don't want require() to start returning a different module halfway through your bootstrapping [16:56] noonat: so, in that case, whatever code is doing hot-loading is fine to be async [16:56] polotek: module.reload() ? [16:56] noonat: you could emit a reloaded event as well, so other modules could watch for it and update their references if needed [16:57] JimBastard_: back [16:57] JimBastard_: so yeah [16:57] JimBastard_: reloading modules in pure js is not possible? [16:57] noonat: that's one of worst problems with hot-loading: if someone has var BarClass = require('bar').BarClass, even if you replace BarClass when you hot-load, their reference would still point at the old one [16:57] JimBastard_: oofa [16:58] javajunky has joined the channel [16:58] JimBastard_: so you think my case filewatch some json and then just eval it? [16:58] noonat: so you have to be intelligent about it on the consumer end [16:58] JimBastard_: bypass the module system? [16:58] noonat: JimBastard_: Yeah [16:58] JimBastard_: so file watch fires when you do anything to the file right? even read it? [16:58] JimBastard_: i think i noticed that last night at 4am or so while my shit looped [16:58] noonat: Yeah, you have to check the timestamp if you want to watch for changes [16:58] noonat: mtime or whatever [16:59] mikeal1 has joined the channel [16:59] JimBastard_: i think you get curr and prev [16:59] twomashi has joined the channel [16:59] noonat: Yep -- if (curr.mtime > prev.mtime) [16:59] twomashi has left the channel [17:00] deanlandolt: JimBastard_: yeah -- a watch fires on every read [17:00] deanlandolt: you can compare last read to last write to detect if it's a write [17:01] JimBastard_: of course [17:01] JimBastard_: deanlandolt you dirty hippy [17:01] deanlandolt: ha [17:01] JimBastard_: i love how i thought everyone i'd meet from online would be prim and proper [17:01] JimBastard_: little did i know they were mostly degenerates like me [17:01] deanlandolt: certainly not in the javascript world...and i love it [17:01] JimBastard_: ahaha [17:02] towski has joined the channel [17:02] maushu: JimBastard_, sorry, you're wrong. [17:02] JimBastard_: i thought RayMorgan was some 50 year old man and deanlandolt was like like 28 year old suit and tie guy [17:02] maushu: We are worse than you. [17:02] JimBastard_: hee hee [17:02] JimBastard_: if you insist [17:02] JimBastard_: me, im a 400lb african american guy who is really into naruto [17:03] RayMorgan has joined the channel [17:03] Aria: Those are surprisingly common. [17:03] maushu: ^ [17:03] Aria: Well, maybe not 400lb. But y'know. [17:03] polotek: JimBastard: ditto - about 200lb [17:03] JimBastard_: sup RayMorgan i was just talking about you [17:03] JimBastard_: polotek: :p [17:04] derbumi has joined the channel [17:04] RayMorgan: JimBastard_: were you now? [17:04] JimBastard_: lol yeah [17:04] JimBastard_: i thought RayMorgan was some 50 year old man and deanlandolt was like like 28 year old suit and tie guy [17:04] JimBastard_: ^^^ [17:04] JimBastard_: ahaha [17:04] RayMorgan: lol [17:04] JimBastard_: hows Vegas? [17:04] RayMorgan: IRC fail [17:04] RayMorgan: I am actually in SF right now for jquery conf [17:04] JimBastard_: ohh nice [17:05] JimBastard_: i forgot that is this weekend [17:05] RayMorgan: yeah [17:05] JimBastard_: they talking about jquery.template at all? [17:05] RayMorgan: a little larger than jsconf was ;) [17:05] JimBastard_: ahaha [17:05] RayMorgan: I think there is a talk on it later [17:05] mape: they finalized anything? [17:05] JimBastard_: word, im looking forward to see what JQ is going with templating and databinding [17:05] mape: Didn't they go of the deep on on that? [17:06] JimBastard_: its time for JS to kick it up with virtualized components [17:06] JimBastard_: so we can have million record list boxes [17:06] binary42 has joined the channel [17:06] mape: {$name} :/ [17:07] noonat: mape: WTF? Seriously? [17:07] mape: last I read [17:08] mape: Didn't seem like a lot of in template logic either [17:08] noonat: Guhh... what do they think this is, PHP? :( [17:08] CodeOfficer has joined the channel [17:08] mape: They seem to think they are smarty [17:09] CodeOfficer has joined the channel [17:09] webben: noonat: they like their dollar signs don't they? ;) [17:09] noonat: Anything using Smarty as a design guideline is doomed to fail [17:09] JimBastard_: mustache is for templates [17:09] herbySk: hey you who are not on *bsd, could you please ru na little code for me? [17:10] alxc1 has joined the channel [17:10] JimBastard_: sup herbySk ? [17:10] herbySk: I'm interested in running [17:10] herbySk: ./node test/simple/test-http-304.js >out [17:10] herbySk: and see the contents of the 'out' file [17:10] polotek: am I the only one who doesn't like mustache? [17:11] JimBastard_: polotek: do you not want a mustache ride? [17:11] JimBastard_: :-D [17:11] JimBastard_: i mean [17:11] JimBastard_: :-{{) [17:11] noonat: I think it's scientifically impossible for mustaches not to be cool. [17:11] JimBastard_: >:-{{) [17:11] JimBastard_: mustache crockford is not amused [17:11] noonat: ^ case in point [17:12] JimBastard_: mustache is simple enough [17:12] JimBastard_: similiar to ctemplate [17:12] polotek: http://pixelspread.com/images/beards_trust_2.jpg [17:13] polotek: I know the name of my new module that will stand in stark contrast to mustache [17:13] herbySk: JimBastard_: what's sup? [17:13] JimBastard_: lol polotek [17:13] noonat: polotek: hahaha [17:13] polotek: seriously though, I just don't like the take on control flow. [17:13] polotek: I like my control structures to be visible [17:14] polotek: not dependent on the data that gets passed in [17:14] polotek: other than that I think it's fine [17:14] polotek: and I can't escape the fact that Mu is screaming fast on node [17:15] mape: Muuu? [17:15] polotek: mustache for js [17:16] RayMorgan has joined the channel [17:16] piranha has joined the channel [17:18] herbySk: pls, could someone ru nthat line in your node? I'd lie to see the output... [17:18] herbySk: ./node test/simple/test-http-304.js >out [17:18] admc has joined the channel [17:18] herbySk: For me, the contents of 'out' file is not the same as when I run it without output redirection [17:18] JimBastard_: okay i got you herbySk one sec [17:20] JimBastard_: herbySk: i dont have that test [17:20] softdrink has joined the channel [17:20] herbySk: it's in 0.1.92... hm. pity :-/ [17:21] noonat: herbySk: it's the same for me on osx [17:21] noonat: http://gist.github.com/377790 [17:21] JimBastard_: yeah sorry [17:21] JimBastard_: not really in the mood to update today [17:21] JimBastard_: not that i dont like punishing myself [17:21] herbySk: noonat: thanx [17:21] inimino: updating is the node way [17:21] JimBastard_: i just have 10 modules or so [17:21] JimBastard_: yeah [17:21] zackattack has joined the channel [17:21] JimBastard_: my submodules dont appreciate it [17:21] inimino: if your code isn't broken, you're not keeping up [17:21] JimBastard_: i usually wait a week or so [17:22] JimBastard_: hows it going inimino long time to chat [17:22] inimino: good, good [17:22] polotek: JimBastard: http://github.com/visionmedia/nvm [17:22] JimBastard_: i feel like i havent had any problems that meritted your expert advice lately [17:22] JimBastard_: what about NVM polotek ? [17:22] polotek: easy to manage multiple versions of node [17:23] JimBastard_: yeah i mean i guess so [17:23] JimBastard_: im not trying to do that [17:23] inimino: hehe [17:23] JimBastard_: for me its , pull , make , test [17:23] JimBastard_: if it falls im rolling back [17:23] JimBastard_: fails* [17:23] polotek: ACTION has to run [17:23] JimBastard_: i could see that being useful though [17:23] polotek: later guys [17:23] JimBastard_: peace man [17:23] JimBastard_: talk to you later [17:23] inimino: I run tests against the latest, then install it when everything works [17:23] polotek has left the channel [17:24] JimBastard_: i meant test as in run my apps [17:24] herbySk: for me in freebsd the stdout fd gets silently closed :-/ either throws EPIPE or SIGPIPE silently kills node, so I only have the first line [17:24] JimBastard_: not run the node tests [17:24] inimino: JimBastard_: yeah, me too [17:24] piranha_ has joined the channel [17:24] JimBastard_: herbySk: is it like that for all tests or just that one? [17:24] mikeal1: JimBastard: you get that proxy thing worked out [17:24] mikeal1: i fell asleep :) [17:24] JimBastard_: yeah man [17:24] JimBastard_: it was actually really really easy [17:24] herbySk: for all test that use child processes... after child process ends, the main process' stdout is closed in the background [17:24] mikeal1: awesome [17:24] JimBastard_: once i dove into your code mikeal1 [17:25] JimBastard_: proxying in node is like nothing [17:25] mikeal1: totally [17:25] JimBastard_: its built for shit like that [17:25] herbySk: http-204 is just one of them [17:25] mikeal1: i want to keep that around as a really simple example [17:25] JimBastard_: ive got a cool reverse proxy working [17:25] maushu: It also makes great coffee. [17:25] herbySk: s/204/304/ [17:25] JimBastard_: im setting up a fileWatched routing table for the reverse proxy [17:25] mikeal1: i was starting to add feature to it and then I decided to rip them out and keep it simple [17:25] JimBastard_: so it doesnt use a DB [17:25] JimBastard_: yeah mean [17:25] JimBastard_: well the other thing [17:25] mikeal1: that code is kind of like a template i use whenever i need new proxy code [17:26] JimBastard_: is that yours is setup to be a true proxy server [17:26] JimBastard_: with a PAC file [17:26] JimBastard_: i guess [17:26] JimBastard_: i needed more of a http proxy [17:26] JimBastard_: but its great boiler plate code [17:26] JimBastard_: err, http proxy as in using a browser and typing in a url and getting proxy passed [17:26] mikeal1: yeah, that's what it's for [17:26] JimBastard_: opposed to pointing the browser to a proxy server [17:26] mikeal1: yeah, totally [17:26] JimBastard_: :-) [17:26] herbySk: JimBastard_: for all test that use child processes... after child process ends, the main process' stdout is closed in the background http-304 is just one of them [17:26] mikeal1: hrm.... [17:26] mikeal1: i could make it better tho [17:27] mikeal1: if the url isn't a full url I could use the host header [17:27] mikeal1: that would make things simpler [17:27] JimBastard_: im doing something like that [17:27] mikeal1: i have code to do that in all the other proxies i have [17:27] Aria: Hehe. And I'm writing a forward proxy. [17:27] mikeal1: i have a caching reverse proxy and a load balancer rever proxy that both do that [17:27] JimBastard_: so right now im doing proxy pass based on unique URL, it would be awesome to do it on subdomain [17:28] JimBastard_: maybe i could point *.mydomain.com and then use node to forward to right site? [17:28] JimBastard_: will that work? [17:28] mfeiri has joined the channel [17:28] mikeal1: totally [17:28] mikeal1: that's what balance is designed to do [17:28] JimBastard_: ? [17:28] JimBastard_: node-balance? [17:28] JimBastard_: i have node-balancer in my private git repo [17:28] JimBastard_: (my own roll) [17:28] mikeal1: http://github.com/mikeal/balance [17:29] mikeal1: http://github.com/mikeal/balance/blob/master/test/run.js [17:29] JimBastard_: yeah [17:29] mikeal1: you create a proxy and then you get a "route" event which you use to tell it which port/host to route the request to [17:29] JimBastard_: word [17:30] mikeal1: there is a ton of code in there to work around a couple bugs in node [17:30] JimBastard_: my approach is a bit diffirent [17:30] JimBastard_: its a bit simplier imho, but im probaly misunderstanding something or i missed a major edge case [17:30] JimBastard_: i just do a simple lookup when the request comes in based on a JSON table [17:30] JimBastard_: there any route object or anything [17:31] mikeal1: if you wanted a file to be the routing table you would still need the file watcher and that would just update the routing table for your route event handler [17:31] JimBastard_: yeah im doing that, just no routing system [17:31] JimBastard_: its literally one line [17:31] mikeal1: i needed mine to use routes defined in couchdb documents [17:31] mikeal1: and update whenever the db updated [17:31] JimBastard_: of course [17:31] mikeal1: so i have a changes feed listener to couchdb that updates the table [17:31] JimBastard_: ill probaly do the same [17:31] JimBastard_: you are couch watching instead of file watching [17:32] maushu has joined the channel [17:32] mikeal1: you'll want to handle this [17:32] mikeal1: http://github.com/mikeal/balance/blob/master/lib/balance.js#L84 [17:32] JimBastard_: what is method HEAD ? [17:32] mikeal1: there is a bug in node's handling of HTTP HEAD requests [17:33] mikeal1: a HEAD request returns only the headers for what would be a GET request [17:33] mikeal1: it's logged, it'll be fixed eventually i'm sure [17:33] mikeal1: there is also a bug, which i don't have a workaround for [17:33] mikeal1: really large chunked responses won't emit an end event [17:33] JimBastard_: damn [17:34] JimBastard_: well i plan on running a shit ton of requests through this proxy [17:34] mikeal1: http://github.com/ry/node/issues#issue/89 [17:34] mikeal1: http://github.com/ry/node/issues#issue/77 [17:34] mikeal1: there are tests checked in for both of them [17:35] alxc1: hi people, just came across nodejs, installing it on freebsd now & look forward to playing with it! was just wondering how long it's been about? [17:36] derbumi has joined the channel [17:37] mikeal1: when was JSConfEU last year? [17:37] ashb: 18months or so? [17:37] mikeal1: September? [17:37] ashb: november i thought? [17:37] mikeal1: that's when it was kind of like "announced" [17:37] mikeal1: but people knew about it before that [17:38] JimBastard_: sup alxc1 welcome [17:38] JimBastard_: node is amazing [17:38] ashb: so long as you don't mind things changing underneath you ever once in a while :) [17:38] JimBastard_: the learning curve to get going is a slight incline, but its not a very big hill [17:39] JimBastard_: aye [17:39] JimBastard_: its still early adopter status, but it gets better everyday. its dangerously close to being production ready [17:39] JimBastard_: i mean, a bunch of people use it in prod already [17:39] alxc1: ok well i was looking to experiment plugging v8 into some things... but your existing classes look like they contain a lot of things i'd like that i'd waste time building myself :) [17:40] JimBastard_: make sure to read the nodejs.org docs [17:40] JimBastard_: then howtonode.org [17:41] alxc1: ok cool :) have been flicking through the docs while i wait for a load of my ports to upgrade... [17:41] JimBastard_: personally, im only doing pure js modifications to node, i.e. CommonJS modules [17:41] JimBastard_: so i dont mess around with the C code [17:42] JimBastard_: i havent even tried to custom compile node outside of how it ships [17:42] JimBastard_: but we are working on a new project that will require some modifications to the httpServer [17:43] alxc1: ok well i'm not going to pretend I'm going to able to help you guys develop your code right now but it's done building so i'm gonna go have a play around ;) [17:43] ncb000gt: I haven't modified the node c/c++ libs but there are a handful of c/c++ modules floating around [17:44] ncb000gt: it's pretty straight forward [17:46] JimBastard_: heh i wasnt asking for help lol [17:55] mape: JimBastard_: Wait a sec, I'll help you [17:56] JimBastard_: lol wut [17:56] mape: Just stay steady and I'll fix it [17:56] JimBastard_: ? [17:56] mape: There, no worrys :) [17:57] JimBastard_: so i have a question actually [17:58] JimBastard_: if inside my module i have a global var, and i have a fileWatcher in play [17:58] JimBastard_: if i modify the global var on fileWatcher update [17:58] JimBastard_: will further incoming requests have access to the new value in the global? [17:58] ashb: i think so, yes, unless you (manage to) reload the module [17:59] JimBastard_: time to test it out [18:07] xla: heya, is there a way to close an open http.ClientResponse? [18:07] mikeal1: JimBastard: that will all work as long as the consumer of the table doesn't accidentally cache the value [18:07] mikeal1: a better way to do it would be to only expose a lookup function and keep the table private to the module [18:07] aho has joined the channel [18:07] JimBastard_: i mean, its almost private to the module [18:07] JimBastard_: always* [18:08] JimBastard_: if you do var foo; at the top of the module, its not being exported [18:08] JimBastard_: sorry im bad with terminology [18:08] mikeal1: right, you're setting the routing table to an attribute on exports right? [18:08] JimBastard_: naaah [18:08] JimBastard_: its all inside the same module [18:08] mikeal1: oh ok [18:08] mikeal1: nevermind then [18:08] mikeal1: that'll all be fine [18:09] JimBastard_: what time zone are you in mikeal1 [18:09] mikeal1: PDT [18:09] mikeal1: i'm in Oakland, CA [18:09] JimBastard_: got ya [18:09] JimBastard_: cool stuff [18:09] JimBastard_: you do JS work out there? [18:10] mikeal1: i work for couch.io [18:10] mikeal1: and i worked at Mozilla before that [18:10] mikeal1: everything i do now is js, when i was at Mozilla it was js and Python [18:11] JimBastard_: ohh shit [18:11] JimBastard_: were you at jsconf? [18:11] mikeal1: nope [18:11] mikeal1: missed the tickets :( [18:11] JimBastard_: i defintely was drinking with jan____ a little [18:11] mikeal1: but jan is helping put together JSConfEU so I'm having him keep a ticket for me [18:11] JimBastard_: he said i wasnt a pirate since i left on sunday afternoon instead of raging more [18:11] JimBastard_: got ya [18:11] mikeal1: hahahaha [18:11] JimBastard_: thats good stuff [18:12] noonat: Arrggg, why are you swallowing my exceptions, child_process.exec? :( [18:13] noonat: When I add a sys.puts() before the function that calls it, the exception gets properly thrown too @_@ [18:15] jedschmidt has joined the channel [18:16] ncb000gt: anyone having issues with the latest node wherein you get "Error: ECONNREFUSED, Connection refused" when trying to start an http server with createServer? [18:16] ncb000gt: latest being HEAD [18:17] martoche_ has joined the channel [18:18] martoche_ has joined the channel [18:19] towski has joined the channel [18:23] martoche has joined the channel [18:25] nsm has joined the channel [18:26] noonat: yearg... race condition i think [18:26] martoche has joined the channel [18:28] martoche_ has joined the channel [18:29] kriskowal has joined the channel [18:31] jamesduncan has joined the channel [18:31] jbrantly has left the channel [18:32] martoche has joined the channel [18:34] martoche has joined the channel [18:36] martoche has joined the channel [18:38] jedschmidt: wow, the new style for the node docs is great. [18:38] mape: fabolous [18:40] martoche has joined the channel [18:41] martoche has joined the channel [18:45] martoche has joined the channel [18:47] MattJ: /almost/ great :) [18:51] hsuh has joined the channel [18:52] Nohryb has joined the channel [18:52] ncb000gt has joined the channel [18:53] RayMorgan has joined the channel [18:54] mape: Anyone here tried node juice? [18:55] ncb000gt: mape: not i [18:55] mape: Just got it working, kinda neat [18:56] ncb000gt: cool [18:56] ncb000gt: what is it? haven't heard of it [18:56] mape: Allows you to develop frontend stuff and you pipe it through node juice so it auto updates the page [18:56] mape: CSS/js and whatnot when files change [18:59] noonat: wow, that is awesome. [19:00] tlrobinson_ has joined the channel [19:00] mape: If you look at http://mape.me:8080/index.html [19:03] hsuh: mape: why it keeps reloading everything? [19:03] mape: hsuh: Because I'm saving the html file [19:03] noonat: hsuh: that's the whole point :) [19:03] maushu has joined the channel [19:03] ncb000gt: interesting [19:05] mape: Give that to clients [19:05] rictic has joined the channel [19:05] mape: let them keep a page up while the site is being developed ;D [19:06] noonat: eff clients, i have wasted way too much of my life hitting cmd-r :P [19:06] mape: Hehe [19:06] mape: Yeah and you are suppose to be able to hook it into apache as well if you are doing non node stuff [19:07] piranha has joined the channel [19:07] mape: looks better in ff [19:07] mape: chrome blinks [19:07] mape: ff just updates [19:07] quirkey has joined the channel [19:08] Nohryb has joined the channel [19:09] hsuh: never seen a project gain so much momentum so fast [19:10] ncb000gt: hsuh: node has def. caught on fast [19:10] ncb000gt: people like doing work in JS, there just need to be more libraries [19:11] ncb000gt: but, that'll come with time [19:11] hsuh: so.. as na outsider i think "v8 was written for a browser, how can it also be appropriate for a server?" [19:11] ncb000gt: hsuh: v8 is purely a JS parser [19:11] malkomalko has joined the channel [19:12] ncb000gt: it isn't dependent on the browser, the Chrome source adds browser specifics to the mix which is why you can write JS that work with chrome [19:12] mape: The one thing I see missing is the rails for node [19:12] ncb000gt: rails/django/something [19:12] ncb000gt: there isn't a standard web dev framework yet [19:13] hsuh: yes, but i mean... it was probably designed to work well with the browser, i suppose [19:13] jedschmidt: mape: express seems pretty close to fulfilling the rails role. [19:13] ncb000gt: hsuh: no, it was designed to work well with JS. :) [19:13] mape: The only issue I've heard is the gc [19:13] ncb000gt: ragardless of it's context [19:14] mape: jedschmidt: Still havent seen someone build a site with it yet? [19:14] mape: Seems most things are "this is a web framework, here is a function that takes a string and outputs it at a path" [19:14] mape: Not really doing the generic stuff most web projects do [19:14] ncb000gt: lol [19:14] admc has joined the channel [19:15] ncb000gt: I had been working on something for that, but there are a lot of moving parts to a web framework [19:15] mape: And I'm sure express does more then that :P Just yeah.. Noone seems to use them at least then [19:15] ncb000gt: express looked close to filling that sort of role, but i haven't played with it enough [19:15] jedschmidt: well, now that the API is less of a moving target, that should change. [19:15] mape: Or a good example to show people how to structure a large project [19:15] mape: Most people I talked to just say "meh it will end up a large pile of messy code" [19:16] jedschmidt: mape: i think the (fab) approach should help there. [19:16] mape: Would be nice to have something to show [19:16] hsuh: mape: there's a djangode on your site :) [19:16] jedschmidt: mape: you can define sites as modularly as you like, and plug them into each other. [19:16] bpot has joined the channel [19:16] mape: jedschmidt: Yeah I tried looking at that but I'm to thick to figure it out and the examples were to basic to really add any meat [19:17] mape: At least from what I understood [19:17] mape: Waiting for that video pres on jsconf to be released for fab :) [19:17] mape: jedschmidt: Heard from anyone doing anything fun with it? [19:17] jedschmidt: mape: did you check out the annotated preso slides online? that seems to help a lot of folks. [19:17] jedschmidt: mape: naw, it's a bit early for that. [19:18] jedschmidt: i'm really dreading the video. i think i talked wayyyy to fast. [19:18] mape: Yeah took at look at them, can't say it helped me though. I'm not very bright though so might just be me [19:19] ncb000gt: jedschmidt: from what i saw (feedback wise) it went well [19:19] mape: I'm just wondering how the modules thingy will work out [19:19] mape: Seems like people will reinvent the wheel not wanting to depend on others [19:19] jedschmidt: mape: ha ha. well, examples help a lot. i'm probably going to end up writing the (fab) site itself in (fab), so that should serve as a good example. [19:19] mape: jedschmidt: Add some dogfood yeah :) [19:22] mape: But so yeah, how will people manage to depend on eachothers modules? And if they don't won't that just lead to a lot of redundant modules? [19:23] mape: Unless it goes into core, which it probly shouldn't it seems like there needs to be a larger "player" that gathers modules into somekinda soup to nuts module for easy web develoment [19:23] jedschmidt: mape: that's a tough nut to crack. [19:23] mape: That is kept up to date and whatnot [19:23] ncb000gt: mape: if you look at the python community, there are tons of modules/libraries, the good ones win out [19:24] ncb000gt: but they have tools to help manage those libs, easy_setup, pip, virtualenv [19:24] ncb000gt: using those tools is essential to making sure you're working with the libs you want to [19:24] polo7 has joined the channel [19:24] ncb000gt: but also providing a way to try things out [19:24] polo7: Hi! [19:24] ncb000gt: hey polo7 [19:24] polo7: New here :) [19:25] ncb000gt: welcome :) [19:25] towski has joined the channel [19:25] polo7: Thank you [19:25] mape: Owell, I guess we'll have to wait for a too cool for school module to show up and sweep everyones feet [19:25] ncb000gt: mape: the python guys use pypi for the "base" but tools like pip allow you to specify tarballs, git repos, etc [19:25] ncb000gt: haha [19:26] mape: Or you could copypaste php.js and call it a day ;) [19:26] ncb000gt: mape: i do think it's essential for the community to come up with something around it, and it looks like people are trying [19:26] ncb000gt: lol [19:26] ncb000gt: npm, nodules, kiwi are all examples of attempts at this [19:27] mape: Yeah, I guess the slowing down of API changes will help [19:27] ncb000gt: maybe i'll work on a virtualenv for node... [19:27] ncb000gt: as a way to break things out [19:27] ncb000gt: it will a lot [19:29] mape: jedschmidt: You have any idea on the ETA of those jsconf talks? [19:29] ncb000gt: mape: http://bitbucket.org/ianb/virtualenv is the source repo for the python version [19:30] ncb000gt: that'd be a better question for voodootikigod_ [19:30] jedschmidt: mape: i think voodootikigod_ said a month or more. [19:30] mape: Figured he was out rapeing and pilaging [19:30] mape: Ok [19:30] ncb000gt: haha [19:30] ncb000gt: he typically is [19:31] jedschmidt: mape: he's got a move to finish and a kid on the way, so he's plenty busy. [19:31] ncb000gt: Last year he released a video per month [19:31] ncb000gt: for a while [19:31] mape: Ok, just eager to listen to the talks :) [19:31] mape: Weren't there loads of videos? [19:32] mape: Seemed to be quite a bit of people talking this year at least [19:35] derbumi has joined the channel [19:35] ncb000gt: yea, there were track A and B talks this year, last year track B seemed somewhat like an afterthought [19:36] ncb000gt: most likely because people still wanted to talk, but had like 10-15 minutes of a presentation [19:36] ncb000gt: or just some idea and wanted to get some chatter going [19:36] mape: Yeah [19:36] ncb000gt: track A had the main presentations [19:36] mape: those are usually the neat ones [19:36] mape: small, quick and interesting [19:36] ncb000gt: heh, that's the thing about jsconf, they are all interesting [19:37] ncb000gt: I spoke at the first one, all of track A was quite awesome, and track B had some interesting stuff going [19:37] ncb000gt: Plus, this year, MW2? [19:38] mape: modern warfare? :P [19:38] ncb000gt: yep, they had it on site [19:38] ncb000gt: heh [19:39] mape: oh, sit down, have a beer, play kinda thing? [19:39] ncb000gt: yea [19:39] ncb000gt: take a break from info. overload [19:39] mape: The interactions are king :) [19:39] ncb000gt: :) [19:39] hsuh: is nodewiki running anywhere? [19:39] ncb000gt: they've done a great job with it for sure [19:40] ncb000gt: hsuh: not sure about a module, but there is the wiki on github if that's what you're looking for. [19:40] mape: http://github.com/gjritter/nodewiki ? [19:40] hsuh: yep [19:45] alxc1: hmm ok, can anyone tell me, in reference to the v8 docs, does one running nodejs script operate in a v8 'context', with all the scripts started using '#node script.js' running in different contexts in one instance of the v8 virtual machine? [19:45] mikeal1 has joined the channel [19:45] magcius has joined the channel [19:45] magcius: _ry: you around? [19:45] mape: Hehe find it fun how nodejs is defacto js on the servern nowadays [19:46] ncb000gt: _ry: is out [19:46] magcius: ah [19:46] mape: All articles mention it [19:46] mape: for the weekend :) [19:46] mape: /re ry [19:46] magcius: for some reason scons from waf is failing [19:46] mape: http://ajaxian.com/archives/oni-rocket [19:46] magcius: python "/home/node/tools/scons/scons.py" -C "/home/node/build/default/" -Y "/home/node/deps/v8" [19:46] magcius: fails [19:47] ncb000gt: alxc1: i believe so [19:47] pjb3 has joined the channel [19:47] magcius: but scons -C "/home/node/build/default" -Y "/home/node/deps/v8" works [19:47] magcius: and they are both the same version [19:48] sprsquish has joined the channel [19:48] teadict has joined the channel [19:48] ncb000gt: mape: what's interesting is that most people/companies seemed to be focusing on JS for web frameworks, while node was written with the mindset of true serverside/desktopside [19:49] mape: I'm just glad it is so handy [19:49] alxc1: ncb000gt: ok cheers [19:49] mape: not having to run java or other clumpsy stuff [19:50] ncb000gt: meh, c/c++/java/etc... it's still running in some level of interpreted env. [19:50] joshbuddy has joined the channel [19:51] ncb000gt: java is just more verbose in terms of the code...that said most of the V* stuff I've seen so far isn't far from Java [19:51] ncb000gt: s/v*/v8/ [19:53] mape: is node doing summer or code? [19:53] ncb000gt: tho, I am really happy that node is around. It's easy and fast. [19:53] ncb000gt: not sure [19:53] mape: Or is that a pita to get into? [19:53] ncb000gt: i'm not so sure it's a PITA to get into [19:54] ncb000gt: but you have to have some really defined goals iirc [19:54] mape: Makes sence [19:55] mape: Seems like a neat way to get some semi funding/dev time [19:55] mape: Seems like that is an issue now [19:57] ncb000gt: welcome to open source. ;D [19:57] mape: Hehe yeah [19:58] alxc1: ncb000gt: ok with that in mind... do you know if script.runInNewContext be used to create new contexts that will continue to exist even after the context that created it has expired? thanks [19:58] ncb000gt: brb, phone [19:58] magcius: okay, what happened to "multipart"? [19:59] ashb: _ry decided it sucked [19:59] mape: soc? [19:59] ashb: soc = Google Summer Of Code [20:00] mape: Yeah I know [20:01] mape: Does ry work full time on node? Or sideproject? [20:02] ashb: he works for Joyent i think [20:02] mape: Just find it strange he manages to do so much for node on a side basis [20:03] sprsquish: Joyent is doing stuff with node so if he's not on it full time, he's on it a lot over there [20:03] ashb: last i heard joyent are using node sa part of a message queue consumer [20:03] mape: k [20:03] binary42 has joined the channel [20:03] qFox: http://developers.slashdot.org/story/10/04/24/1734241/Proof-of-Concept-For-Ajax-Without-JavaScript :( [20:04] cadorn has joined the channel [20:04] Nohryb has joined the channel [20:05] qFox: actually. nevermind (the linked page took ages to load). i can do that without xml. a form, a target and an iframe will make that work :/ [20:05] ashb: man someone doesn't get the point of client side JS [20:05] mape: [20:05] mape: heh [20:06] mape: love the header [20:07] qFox: the 404 is annoying [20:07] qFox: takes you a minute or so to figure out that its actually teh 404 :/ especially if that's the first attempt [20:09] ncb000gt: alxc1: not sure, sorry for the delay [20:10] alxc1: ncb000gt: thanks, no worries! [20:11] polo7: Hey, I have some difficulties with the module system! someone can help me please? [20:11] mape: ask :) [20:11] polo7: cool [20:12] polo7: I'm using the express 'Class' module [20:12] polo7: I think I shouldn't be calling it for each files but just once in the main file right ? [20:12] polo7: Ok but if I write in the main file : [20:12] polo7: var Class = require('support/class/lib/class').Class; [20:13] polo7: it won't be visible in the other files as var is local to this file right ? [20:13] polo7: so I should write global.Class = ... ? [20:14] ashb: globals are evil. [20:14] polo7: but I thought express already did it [20:14] ashb: require it every place you need it [20:14] polo7: yeah I suppose [20:14] ashb: its not very expensive [20:14] ashb: infact its dead cheap [20:15] polo7: ok ! [20:15] polo7: and what if I write : [20:15] polo7: without the var [20:15] polo7: I saw that in express source [20:15] ashb: then the gremlins will climb out of your monitor and bite your face off [20:15] ashb: i.e. don't do it, its evil [20:15] polo7: lol [20:16] polo7: ok thx [20:16] ncb000gt: ashb: it's awful when it happens! :( [20:16] ashb: i noe rite!? [20:16] ncb000gt: I'm lucky my C-k is fast! [20:16] ncb000gt: <.< [20:17] polo7: also? :) [20:18] polo7: I want to declare a new function for Object [20:18] polo7: like : [20:18] polo7: Object.prototype.cast [20:18] polo7: where should I declare it ? [20:18] ashb: don't put things on Object.prototype [20:18] polo7: :s [20:18] ashb: certainlly not enumerable things [20:19] ncb000gt: lol [20:19] ashb: you can if oyu wan't, but be warnings some things might sudenly break [20:19] ashb: & [20:19] polo7: mmm [20:19] ncb000gt: polo7, if you need casting functions and such, just throw them in a module [20:19] polo7: and if I want to add it to every instance of Class [20:20] ncb000gt: instead of doing obj.cast(class) [20:20] ncb000gt: you'd do something like mod.cast(obj, clazz) [20:20] polo7: yeah ok not bad :) [20:22] Aria has joined the channel [20:22] magcius: ashb: how am I supposed to read multipart form data onw? [20:23] zackattack has joined the channel [20:23] ncb000gt: magcius: first you sacrifice a chicken [20:23] magcius: I don't care that ry thought it sucked [20:24] mape: application/blackmagic ? [20:24] ncb000gt: lol [20:24] magcius: You shouldn't be breaking backwards compatibility this quickly. My application worked a month ago [20:24] ncb000gt: magcius: how were you doing it? [20:24] magcius: Screw node.js if all it's going to do is break shit [20:24] magcius: ncb000gt: using the multipart module? [20:24] mape: is the module broken? Wasen't it just moved out of core? [20:24] ncb000gt: ahh, I suspect it's still possible through the res events [20:25] martoche has joined the channel [20:26] ncb000gt: also, _ry said that the api's would stablize around .2 [20:26] ashb: magcius: i agree with you - i think _ry's stance on backcompat is a fucking joke [20:30] magcius: now [20:30] magcius: I don't use node.js as a web framework [20:30] magcius: I use it as a lint.js server for code coverage [20:30] ncb000gt: magcius: there looks to be something to do with multpart here http://github.com/isaacs/multipart-js/ [20:30] magcius: So I need multipart data [20:31] magcius: ncb000gt: I don't care. Tell that ry that if he wants some actual real-world uses he shouldn't treat Node as a toy [20:31] magcius: His toy. [20:32] qFox: or wait for a stable version and stick with it. [20:32] mikeal1 has joined the channel [20:32] ashb: magcius: ^^ that is my exact view [20:32] ashb: which is why i don't use node [20:32] qFox: also, wasnt he going to freeze the api? [20:32] ashb: he doesn't have to freeze the API [20:32] noonat: would you rather he doesn't release it until he is ready for the api to be stable? [20:32] ashb: just manage backcompat nicer [20:32] maushu: He removed multipart because it was too much code for something simplr. [20:32] magcius: noonat: yes [20:32] noonat: magcius: you're insane :P [20:33] mape: magcius: Then just wait and don't use it? [20:33] qFox: right [20:33] noonat: i think node has been perfectly clear about it's stability [20:33] magcius: noonat: if he did that, things wouldn't break every 5 months when I bork my node.js install and forget which version I'm using [20:33] noonat: if you don't want to use something with api instability, then don't use it until it's stable [20:33] magcius: The problem is that these kinds of libraries aren't developed out of a use case to support. [20:33] qFox: if you really dont want him to release it beforehand. just dont use it till he does. let us play around with the toy [20:33] noonat: no one is forcing you to, and they're not lying and saying it is stable [20:33] ncb000gt: magcius: it's new. [20:33] ncb000gt: give it some time. [20:33] magcius: ncb000gt: if 2 years is "new" [20:33] maushu: At least he shares his toys, unlike you. :p [20:34] qFox: hehe [20:34] maushu: Sharing is caring. [20:34] magcius: maushu: I develop my toys out of refactoring a bigger, messier toy, so I can't go ahead to try and break stuff just because I feel like it [20:35] magcius: If he actually wrote an app in Node.js using any of the features, he'd actually stop doing stupid shit that makes no fucking sense [20:35] maushu: ...what stupid shit? [20:35] magcius: Because I don't want to wait for another 5 months where whatever stdlib I had then is gone [20:36] magcius: maushu: gradually replacing the stdlib until [20:36] magcius: until the latest hotness 5 months ago no longer works [20:36] magcius: and you're stuck not getting stupid bug fixes [20:36] maushu: replacing stdlib? [20:37] magcius: maushu: I've written three versions of this jslint standalone server [20:37] magcius: maushu: because each time he decided to phase out something useful because he didn't feel it was cool anymore [20:37] magcius: It's hell [20:37] RayMorgan has joined the channel [20:37] mape: There is no way you can stay on older versions? [20:37] polo7: I don't get it, why can't you stay with an older version of node and wait for multipart to come back ? [20:38] polo7: lol [20:38] magcius: Because the older version didn't support IPv6 [20:38] RayMorgan has joined the channel [20:38] maushu: ...congratulations, you just found out how nice it is to develop projects for frameworks that are also under heavy development. [20:38] ncb000gt: polo7: it's not likely it's coming back if it has been removed [20:39] polo7: ry will write his own ^^ [20:39] ncb000gt: magcius, i take it you are uploading files? is there instead a way you can pull code from the source repository you're using instead? [20:39] ncb000gt: no mimeparts needed. [20:39] magcius: ncb000gt: this is local code [20:40] magcius: ncb000gt: I'm using it to do live error highlighting in emacs [20:40] magcius: and _ry forbid that I add an IPv6 IP address to do my actual work at Verizon which is support network testing tool [20:40] magcius: tools [20:40] mape: fork? :P [20:40] magcius: I look on the Google Group, oh IPv6 is fixed in v0.9.8, so I upgrade to that tag, and multipart is removed [20:41] magcius: great [20:41] magcius: now I have to rewrite it to the latest greatness hoping not to hit another bug and have to rewrite again [20:41] qFox: ACTION excepts that you'll have to rewrite it a few more times still [20:42] qFox: excepts? really? ... expects. [20:45] MattJ: Nah, ry said the API is more or less stable now afaik [20:45] MattJ: I've also had to change code because of the API changes [20:45] MattJ: But I'm not complaining, if those API changes improve Node [20:45] ncb000gt: agreed. [20:49] zimbatm has joined the channel [20:50] zimbatm has joined the channel [20:50] zimbatm: hello [20:51] joshbuddy has joined the channel [20:52] ncb000gt: zimbatm: hi [20:52] zimbatm: I would like to discuss something... I'd like to propose to move src/node.js to the lib/ directory [20:53] zimbatm: Having that .js file in src/ has caused some confusion to newcomers [20:53] ncb000gt: heh, _ry isn't here for the weekend [20:53] zimbatm: and since lib/ is now also statically compiled.. [20:53] zimbatm: doh [20:53] ncb000gt: heh [20:53] ncb000gt: probably something for the google group? [20:54] zimbatm: yeah, I guess so [20:55] admc has joined the channel [20:56] saikat has joined the channel [20:58] mfeiri_ has joined the channel [21:17] zimbatm: posted: http://groups.google.com/group/nodejs/browse_thread/thread/f518a4a0c37068bd [21:22] derbumi has joined the channel [21:22] creationix has joined the channel [21:24] inimino: alxc1: there is one v8 process per node invocation [21:25] polo7: where can I find a list of all functions implemented for objets and arrays ? [21:25] polo7: I came across each merge map ... [21:25] ashb: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array [21:25] polo7: but never seen a doc [21:25] ashb: v8 will have most of those [21:25] ashb: everything except Array.map (the static version) [21:26] ashb: and others like that [21:26] polo7: ok thx [21:26] jspiros has joined the channel [21:26] polo7: this is for arrays [21:26] polo7: and objects ? [21:26] creationix has left the channel [21:26] ashb: take a guess :) [21:26] jspiros has joined the channel [21:26] creationix has joined the channel [21:26] polo7: yeah shouldn't be far [21:27] creationix: polo7: http://wiki.github.com/ry/node/ecma-5mozilla-features-implemented-in-v8 [21:27] ashb: the stuff that is Requires JS 1.9.3 might or might not be in v8, but they should be soon - they are added in ECMAScript 5 [21:28] creationix: polo7: Object.getOwnPropertyNames(Array.prototype) [21:28] ashb: polo7: avoid anything that is __wunderBared__ [21:29] polo7: thanks percfect [21:29] jspiros has joined the channel [21:29] creationix: since we now have Object.getOwnPropertyNames, we can see the prototype of anything [21:29] ashb: use defineProperty or getOwnPropertyDescriptor instead [21:29] polo7: oki [21:30] polo7: creationix, you're the one who wrote Do right ? [21:30] creationix: yep, why [21:31] polo7: I thought I could use it but it was too much work to modify my code [21:31] polo7: so I use your chain function [21:31] polo7: and modified it to use callbacks [21:32] creationix: polo7: have you seen my Step library [21:32] creationix: it works with node style callbacks [21:32] polo7: it was very useful [21:32] creationix: Do works with continuable style [21:32] polo7: nop [21:33] polo7: it is not on github ? [21:34] alxc1: inimino: oh i see... so really in most cases, nodejs is only running one context in each process unless the script demands otherwise? [21:34] ashb: its alwasy only running one context [21:34] ashb: i don't thin v8 will work any other way [21:34] polo7: first I thought I could modify your convert function to convert my Class object [21:34] derbumi has joined the channel [21:35] polo7: but I didn't really figure it out how [21:35] alxc1: ashb: on the contrary v8 is designed for many simultaneous contexts from what i've been reading, and that was a feature i wanted to take advantage of. [21:35] ashb: alxc1: link? [21:35] ashb: cos in chrome its process per tab [21:36] alxc1: oh really [21:36] ashb: yes. its the central idea of chrome [21:36] ashb: process per tab, process per plugin per tab [21:36] alxc1: ok i'm mixing up terminology [21:37] alxc1: there's many contexts in one *instance* of v8, right? [21:37] ashb: what do you mean by instance and context? [21:37] alxc1: All i'm trying to do is read their docs :P http://code.google.com/apis/v8/embed.html#contexts [21:38] alxc1: it says many, unrelated javascript applications (i.e. a context) in one instanc of v8 (what i meant by 'process') [21:38] ashb: i think its one context [21:39] ncb000gt: I believe there is one for each script. but there is a main context [21:39] polo7: creationix, ok I found your step lib. Yeah, I kind of rewrote that :s [21:40] creationix_ has joined the channel [21:40] creationix: polo7: cool [21:40] polo7: too bad! [21:41] alxc1: ok so what i'd like to understand is, and sorry if this is getting a bit convoluted, if you invoke another script by calling 'node script.js' is it going to merely create a new context in an existing v8 instance if there is one already running on the system, or is it going to create a whole new v8 instance? thanks for thinking it over. [21:41] ashb: its going to create a whole new process [21:42] ncb000gt: what ashb said [21:42] ashb: whole new *everything* [21:42] ashb: the only way it could reuse stuff created was if you did a fork. [21:42] ashb: but then you would'nt be calling `node script.js` [21:42] alxc1: hmm ok thanks, that's great, i just needed to understand that. [21:43] herbySk: alcx1: but you can create a new context inside node if you want, see Script in docs. [21:44] mape: has there been any more pokes at the webworker multi core node thingymado? [21:45] alxc1: herbySk: yah that is what i will do, so i'll invoke a 'master' script and go from there, with just one instance of v8 :) cool. i'm spawing the nodejs as an erlang port node, so i didn't want to go about creating loads of them if it was going to lead to lots of redundancy. [21:55] isaacs has joined the channel [21:57] isaacs: _ry: you around? [21:58] mape: he is away [21:58] mape: for the holiday [21:59] herbySk: ah, I wanted him as well.... [22:01] creationix: mape: As long as you don't mind communicating only over serialzable channels, then I find the childProcess model works great. [22:01] isaacs: alxc1: what's this about contexts? [22:01] creationix: evalctx right? [22:01] isaacs: i can tell you, at least in the current HEAD, node script.js will run script.js in exactly the same context as node.js and everything else. [22:02] creationix: process.evalctx(fs.readFileSync('script.js')) [22:02] isaacs: there is no evalcx going on right now, if that was a question (just skimmed the tail of the logs) [22:02] isaacs: creationix: no t [22:02] isaacs: just cx, not ctx [22:02] creationix: ahh, right [22:02] isaacs: also, you should provide a context object. [22:02] creationix: I should know better, I use it for the sandbox in wheat [22:02] isaacs: process.evalcx(code, { require: require }, "filename") [22:03] isaacs: of course, giving it "require" pretty much makes the "sandbox" useless ;) [22:03] creationix: well, this keeps it from messing with existing globals [22:03] creationix: or is evalcx not a new global context [22:04] creationix: though it works great for modules that don't use exports, you can see what got added to the context object you passed in [22:05] sudoer has joined the channel [22:05] maushu: Private stuff is a must in sandboxes. [22:07] alxc1: isaacs: i wanted to clarify the best way to create multiple contexts in the same v8 VM using nodejs, rather than lauching multiple instances of the VM with one context each, but i found out what i needed :) [22:08] isaacs: alxc1: yah, process.evalcx is the way to go then. [22:09] isaacs: alxc1: or you can check out require("script") which has more granular utilities. herbySk wrote that, i think. [22:10] alxc1: isaacs: wait... no i was going to use Script, .evalcx doesn't appear to be in the docs...? [22:10] brainproxy has joined the channel [22:10] darkf has joined the channel [22:10] alxc1: isaacs: yah ok script it is, all sorted cheers. [22:11] noonat: evalcx is gone, script replaced it [22:11] isaacs: ah, i see [22:12] qFox: does make more sense though :) [22:17] herbySk: well, gone only from the docs, in code there is process.evalcx = process.binding('evals').Script.runInNewContext [22:17] herbySk: It depends on ry how long will the evalcx have a grace period before gone actually [22:18] alxc1: Well if you want an outsider's perspecitve, Script sounds intuitive enough to me and i've only know about nodejs for a couple of hours :P [22:18] mcarter has joined the channel [22:19] mape: $.getScript [22:24] creationix: hmm, the new documented script object looks handy [22:27] inimino: isaacs: that Safari issue should be fixed [22:27] isaacs: oh, cool [22:27] isaacs: cuz i've got a lot of old code to reformat properly. who wrote this shit anyhow? [22:27] isaacs: ACTION is working on npm... [22:27] inimino: isaacs: if you want to send me the list of Firefox extensions you have installed I might see if I can reproduce that too [22:28] inimino: I just updated my server from node 0.1.25 to 0.1.92 [22:28] rictic has joined the channel [22:29] zimbatm has joined the channel [22:30] isaacs: inimino: so, i'm not sure what this should be doing? [22:31] inimino: isaacs: did the stuff on the right show up this time? [22:31] isaacs: nope [22:31] isaacs: i'm in safari, nothing there. [22:31] isaacs: just blank [22:32] inimino: argh [22:32] isaacs: inimino: it'd be easier if there was an example that just took a string and returned a string, and i'd plug it into a node program [22:32] inimino: alright, I'll test it later, don't have Safari in front of me at the moment [22:32] isaacs: inimino: i'm just gonna run it on the command line anyhow. [22:33] inimino: sure, but it's easier to write it this way, ...when it works [22:33] inimino: oh, hm, hang on [22:33] isaacs: speak for yourself :) [22:34] inimino: it really is fun [22:34] inimino: hm, yeah I see the blank output too [22:34] inimino: ACTION investigates [22:35] creationix: speaking of npm... [22:35] inimino: erm, no, spoke too soon [22:35] creationix: I should get into this package management contest before it's too late ;) [22:35] inimino: heh [22:36] ncb000gt: lol [22:36] creationix: the more the merrier right? [22:37] ncb000gt: that's one view [22:37] ncb000gt: :) [22:37] inimino: isaacs: hm, I'll make a modularized version and you can play with that in V8 [22:37] inimino: isaacs: but send me that list of extensions you have in Firefox [22:37] noonat: what we really need is a package manager manager [22:37] inimino: this really should work [22:37] creationix: noonat: now you're talking [22:38] RayMorgan has joined the channel [22:38] creationix: so a package middle manager [22:38] creationix: is that a form of middleware? [22:38] isaacs: haha [22:39] creationix: If only I wasn't swamped trying to finish school and move to California, I'd have time to whip something up [22:40] maushu: We need a package manager manager. [22:40] maushu: To manage package managers. [22:40] ashb: i really wish i had more time to work on my doc render site thing [22:41] Aria: ACTION laughs. [22:42] Aria: Hey, as long as I'm not forced to use something like Rubygems, I'm happy. [22:42] inimino: isaacs: hm, it works for me on Safari on OS X too [22:42] creationix: If I ever do make it to California, I need to meed up with all the noders there [22:42] ashb: i just want something that lets you search packages and view its docs like search.cpan.org [22:42] creationix: ashb, github? [22:42] ncb000gt: creationix: where are you now? [22:42] creationix: ncb000gt: North Dallas [22:42] isaacs: ashb: you seen the js-registry thing? [22:42] ncb000gt: ahh [22:43] ashb: creationix: github search is too general [22:43] ashb: isaacs: no? [22:43] isaacs: ashb: check out http://registry.npmjs.org/ [22:43] ashb: creationix: also github doesn't (yet) render JSDoc [22:43] ashb: isaacs: that downloaded a file...? [22:44] isaacs: ashb: it's json [22:44] isaacs: ashb: i highly recommend the json view extension for firefox [22:44] ashb: isaacs: what i wan't is just an online rendering of the docs for any and every package i can find [22:44] ashb: i find firefox so jarring on OSX i don't use it [22:44] creationix: isaacs: is there such a thing for chrome? [22:44] isaacs: creationix: not sure [22:45] isaacs: ashb: we could make the registry support something like /packagename/version/README or something [22:45] ncb000gt: creationix: it's just a string in chrome [22:45] ncb000gt: doesn't download [22:45] ncb000gt: well... [22:45] ncb000gt: doesn't download as a file. [22:45] ncb000gt: :) [22:45] isaacs: ashb: the vast majority of packages have a README.md in the root [22:45] ashb: isaacs: README is okay, but for a large package you want class docs too [22:45] creationix: well, most js files aren't going to have jsdocs [22:45] creationix: the language doesn't lend itself to automatic doc generation [22:45] isaacs: ashb: good point. well, good luck with that. ;) [22:46] ashb: isaacs: yeah. i know :) [22:46] ashb: creationix: my long term goal (ha!) is to support every doc format used in any commonJS package [22:46] creationix: sounds like fun [22:46] ashb: but well i've just started a new 3 month contract so its been put on hold [22:46] ashb: plus i have an awesome domain for it - http://packag.es >_> [22:47] ncb000gt: lol [22:47] creationix: isaacs: how do I get my packages in your npm registry? [22:48] isaacs: creationix: you do npm publish [22:48] ashb: (oh and once i've got the docs up i'll try to start mirroring all the dists as well) [22:48] isaacs: creationix: i think you might have to do npm register email password first [22:48] ashb: since to render the docs i'll need to get the content anywya [22:49] isaacs: and i need to integrate with the new crypto stuff [22:50] ashb: new crypto stuff? [22:52] rictic has joined the channel [22:52] bmizerany has joined the channel [22:53] isaacs: ashb: require("crypto") [22:53] ashb: ah [22:53] isaacs: so your email/pw isn't exposed in plain text in your home dir [22:53] isaacs: base64, but still, not crypted [22:53] ashb: use ssh private keys ^__^ [22:55] inimino: isaacs: er, whoops, nevermind, I see the problem in Safari now [22:55] isaacs: ashb: that's the plan. [22:55] ashb: cool [22:55] isaacs: use ~/.ssh/id_rsa as the crypt key [22:55] inimino: ACTION accidentally tested Firefox on OS X instead before [22:56] isaacs: ahh [22:56] ashb: problem with? [22:56] inimino: I really should set up some kind of VNC or something so I don't have to run between rooms [22:56] inimino: ashb: this webpage IDE-type thing I have [22:56] ashb: ah [22:57] ashb: inimino: btw OS 10.5+ has VNC server built in [22:57] inimino: is there something like VNC for OS X? [22:57] inimino: ah... [22:57] ashb: 10.4 has it too actually i think [22:57] ashb: System Prefernce -> Sharing [22:57] ashb: 'Screen Sharing' [22:57] inimino: ah [22:58] inimino: I think that has 10.4 on it, so it's probably there [22:58] Nohryb has joined the channel [22:59] ssteinerX has left the channel [22:59] maushu: ubuntu 10.4 > osx 10.4 [22:59] ssteinerX has joined the channel [23:07] isaacs: inimino: i've not had good experiences in the past with IDE-type things, especially webpage ones. [23:07] inimino: hehe [23:08] inimino: isaacs: do you like REPLs? [23:08] isaacs: inimino: yeah. [23:08] inimino: then you'll probably like this [23:08] isaacs: inimino: but for stuff like this, my favorite repl is bash [23:08] inimino: bash is nice :) [23:09] maushu: bash makes the world go around [23:09] maushu: and around [23:10] maushu: Everyone knows that the universe is coded in bash. [23:10] inimino: I'm going to have to work out this Safari thing later [23:10] inimino: some Web Workers API difference [23:20] softdrink has joined the channel [23:33] pjb3 has joined the channel [23:38] mikeal1 has joined the channel [23:45] sudoer has joined the channel [23:46] jtoy has joined the channel [23:49] cloudhead has joined the channel [23:56] kriskowal has joined the channel [23:58] Nohryb has joined the channel