[00:03] Tim_Smart has joined the channel [00:09] blackdog_ has joined the channel [00:26] mikeal has joined the channel [00:27] bpot has joined the channel [00:28] dnolen_ has joined the channel [00:33] alexiskander has joined the channel [00:39] happyelephant has joined the channel [00:40] RayMorgan: Anyone here know the current state of JSGI things and Node? I am actually working on Vroom again and have gotten back to the HTTP layer. I would like to standardize on something, but not sure where to go. [00:40] mikeal: so [00:40] mikeal: isaacs has an imlementation in node [00:40] mikeal: and it will track the spec since he's working on the spec [00:41] mikeal: http://github.com/isaacs/ejsgi [00:42] RayMorgan: yeah, I have been following that for a bit.. are there any middleware for it yet? [00:42] maritz: what's the point of ejsgi exactly? haven't been able to wrap my head around it yet :/ [00:45] mikeal: RayMorgan: it's not really done yet so I don't know of much [00:45] mikeal: but there will be eventually [00:45] mikeal: well, ejsgi will (hopefully) become just JSGI [00:45] RayMorgan: mikeal: gotcha [00:45] mikeal: and it'll be the standard connector interface for SSJS [00:46] mikeal: it should let people write servers and other people write web frameworks and insure portability [00:47] mikeal: and, maybe kinda but probably not, some measure of portability between javascript platforms, but for anything non-trivial I doubt it [00:49] creationix: I think mainly it's so we can use middleware on different applications. The "server" will always be node [00:50] mikeal: i'm not a middleware fan [00:50] RayMorgan: mikeal: what is an alternative? [00:50] jashkenas: mikeal++ [00:50] jashkenas: libraries. [00:51] creationix: I mean rack is a good middleware system, but in node the whole paradigm is different [00:51] creationix: you're not writing code that get's run once per request and then resets itself, you're writing the whole server using an http library [00:52] mikeal: web frameworks create plugin infrastructure [00:52] mikeal: that's a lot better than middleware [00:52] jashkenas: The best thing about rack/wsgi is the webserver/appserver standard interface. Middleware is just candy. [00:52] jashkenas: Right. [00:52] mikeal: middleware doesn't do well at providing assurances and compatibility between middleware [00:53] mikeal: it usually just insures that it's compatible with the concerns on each side of the connection, in this case the server and the application layer [00:53] mumrah: anyone here dealt with the multipart parsing? [00:54] mikeal: i think felixge and isaacs are working on a library [00:54] mikeal: or maybe it was adding support to node's http library to handle multipart [00:54] creationix: didn't it get included with node a while back, or am I smoking something? [00:54] mumrah: i'm trying the example in the docs [00:55] mikeal: i think it is, but there are bugs [00:55] mumrah: and it doesn't seem to be getting getting the parts correctyls [00:55] mikeal: and that's what isaacs and felixge are working on [00:55] mumrah: it gets the content [00:55] mumrah: but the part objects are empty [00:55] mikeal: you might be stepping on one of the bugs [00:56] mumrah: *crunch* [00:56] mikeal: looks like they were working on it on the 16th [00:56] mikeal: http://github.com/ry/node/commits/master?page=2 [00:57] mikeal: might want to pull ry master [00:57] mikeal: and see if you hit the same bug [00:57] mumrah: i might try that [00:57] mumrah: i can just use GET for now [00:58] mumrah: was trying to get all fancy with appropriate HTTP request types [01:01] creationix: anybody know how to keep nginx from daemonizing on the command line [01:01] creationix: I want to run it as a node child process [01:09] creationix: found it, config : daemon off; [01:13] creationix: very cool http://pastie.org/834863 [01:13] creationix: does haproxy handle virtualhosts? [01:18] kriszyp has joined the channel [01:26] [Pwner]John has joined the channel [01:29] ryah_away: mumrah: there is a multipart library included with node [01:30] mumrah: ryah_away: yea, i was using it [01:30] mumrah: and tried the example in the API [01:35] [Pwner]John: ACTION sits in the corner [01:40] RayMorgan: ryah: is there a generic Stream class in Node? [01:45] ryah: no [01:45] ryah: it's just an interface [01:45] Zoka: ryah: have you tried new --debug-brk command line option from my tree? Now you can break into the very first statement in node.js [01:47] ryah: Zoka: i haven't tried it yet [01:47] jed has joined the channel [01:47] ryah: Zoka: i wonder if there could be a less hacky solution? [01:47] ryah: i don't like having that big thing at the top of node.js [01:49] Zoka: The problem is that Debug::DebugBreak() does not stop straight away, probably due to JIT. It took me lot of time to find the right place. [01:57] Zoka: ryah: The big thing is just convenience, because the initial break will be in node.js:: process(), Eclipse then pop up the node.js and break line, and then it is easy to set a new breakpoint 2 lines above, in order to load the main module. Eclipse can not set the breakpoint unless the module is loaded. Anyway, I am open for any other suggestions. [02:02] ryah: Zoka: we could send a debug message itself telling it to break on the first line of ARGV[1] [02:03] ryah: and maybe make sure it processes that message [02:04] Zoka: The V8 debugger can set breakpoint only into loaded and parsed and compiled script [02:07] brandon_beacher_ has joined the channel [02:09] creationix: does anyone know if pound scales well with long http connections (like in long-poll)? [02:09] ryah: Zoka: so i'll have to be bound into js and called in loadScript(0 [02:10] ryah: if (this.id == '.' && debug_brk) process.setFirstLineBreakPoint() [02:10] ryah: or something [02:16] kriskowal has joined the channel [02:18] brandon_beacher_ has joined the channel [02:28] CIA-77: node: 03Ryan Dahl 07master * rdaacb81 10/ src/node.cc : Experimental idle garbage compact - http://bit.ly/9JX3v3 [02:28] ryah: check out this patch [02:29] ryah: it really frees up memory [02:31] mumrah: if i'm using redis with node.js - is it necessary to have more than one connection? [02:38] dmpk2k has joined the channel [02:42] dmpk2k: How do I handle a non-existent file with fs.stat? I can use try/catch with fs.statSync, but I'm not sure what to do with normal stat. [02:43] creationix: dmpk2k: It should give you an error in the callback that you can handle [02:47] dmpk2k: Something like addErrback()? [02:47] creationix: which node version are you using? [02:47] creationix: it's addErrback in 0.1.29 and the first argument to the callback in master [02:48] dmpk2k: Hmm. I was using master yesterday and I was getting undefined back from fs.stat. [02:48] dmpk2k: I'm on 0.1.29 right now. I'll give addErrback a spin. [02:49] dmpk2k: Thanks. :) [02:49] creationix: no problem [02:50] dmpk2k: Oh, yeah, one other question: is there a danger of an event firing before I've used addErrback on a promise? [02:51] ryah: this gc compact is super great [02:51] RayMorgan: ryah: that commit seems pretty dang good.. testing against a static file/just "hello world" server with ab -c 30 -n 3000 and seems to keep memory down from approx 33mb to a little over 7mb.. very nice! [02:52] ryah: RayMorgan: yeah [02:52] ryah: it could probably be a little less aggressive [02:53] spot__ has joined the channel [02:53] spot__: Greetings [02:56] creationix: dmpk2k: no, node is single threaded, so you don't have to worry about stuff happening between statements [02:56] dmpk2k: Phew. :) [02:57] spot__: Is there any information online about serving content back from an http server as gzipped? [02:57] spot__: I've looked around and have not been able to find any [02:57] dnolen has joined the channel [02:58] creationix: spot__: are you using a server in front of node like nginx or apache? [02:58] spot__: no [02:58] spot__: I'm wanting to do it manually [02:59] creationix: well, I don't know of any gzip libraries for node yet [02:59] spot__: ok [02:59] spot__: thanks [02:59] ryah: fuck. i can't believe i've gone a year without putting in this idlenotification call [03:00] RayMorgan: ryah: haha [03:00] ryah: everything's been running at 30mb rss [03:00] ryah: totally unnecessary [03:01] RayMorgan: yeah, this is seriously awesome... my linode (360mb) will be so very happy :) [03:01] ryah: mine too [03:01] ryah: chat.nodejs.org is running at 5mb with no one on it [03:01] RayMorgan: nice! [03:04] creationix: this next release of node will be awesome. Super lean [03:06] ryah: yeah [03:06] ryah: just got to rip out promises from multipart [03:06] ryah: then i'll release it [03:11] ryah: oh actually - it's just multipart.cat which has promises.. going to take that out right now [03:12] creationix: sweet [03:19] CIA-77: node: 03Ryan Dahl 07master * r5fbc750 10/ (doc/api.txt lib/multipart.js): multipart no longer depends on Promise - http://bit.ly/9eJrZb [03:19] kriskowal: ryah, yo. you mentioned that you have a binary impl somewhere? [03:20] ryah: kriskowal: yeah, http://github.com/ry/node/blob/07423f3a879b5980547b647575fc8264b6a2d16e/src/node_buffer.cc [03:20] kriskowal: that in master? [03:20] ryah: kriskowal: no [03:21] kriskowal: okiedokie [03:21] ryah: still undecided about merging net2 [03:21] ryah: but this will probably get back ported if net2 doesn't get merged [03:21] ryah: really need better binary [03:21] ryah: kriskowal: see this for usage: http://github.com/ry/node/blob/07423f3a879b5980547b647575fc8264b6a2d16e/test/mjsunit/test-buffer.js [03:21] kriskowal: thanks. [03:22] kriskowal: perhaps i should make an attempt at the back-portage [03:22] kriskowal: i've got narwhal+node bootstrapping through to the point where it really wants binary-engine, io-engine, and fs-engine [03:22] kriskowal: fs-engine is pretty trivial to adapt. io-engine and binary-engine aren't as easy [03:23] ryah: kriskowal: well, pulling that file into master isn't a problem, but getting for example tcp sockets to emit Buffers instead of the current 'binary' strings is going to be quite difficult [03:24] ryah: i'm going to do some more benching of net2 next week - try to make a decision about what to do with it [03:24] kriskowal: yeah, i've got a layered approach to io [03:24] ryah: then i'll either do that back port of merge net [03:24] kriskowal: borrowed from python's new io; with raw streams and text streams in separate layers [03:25] kriskowal: buffered encoding isn't trivial. might have to look into iconv [03:25] kriskowal: there are a couple iconv experts in commonjs [03:25] kriskowal: MisterN, i think [03:26] kriskowal: he wrote the "encodings" proposal and is involved in flusspferd [03:26] kriskowal: ashb's got some fu as well [03:27] creationix_ has joined the channel [03:27] mattly has joined the channel [03:28] kriskowal: ryah, also, does node fiddle with termios? when i run plain ol' node under vim, vim can't redraw properly [03:28] ryah: kriskowal: nope [03:29] kriskowal: odd [03:31] mahemoff has joined the channel [03:50] CIA-77: node: 03Ryan Dahl 07master * r7a51184 10/ test/mjsunit/test-multipart.js : Multipart test no longer depend on Promise - http://bit.ly/c6BV53 [03:50] CIA-77: node: 03Ryan Dahl 07master * r0485cc4 10/ (4 files in 3 dirs): Remove promises - http://bit.ly/cKWPaQ [03:50] ryah: okay! [03:51] jan____: woot. [03:51] jashkenas: is that 0.1.3? [03:51] ryah: yeah, i'll wait until tomorrow night to see if anyone brings up some issues [03:52] ryah: -before releasing [03:57] creationix: now that's what I'm talking about: 5 files changed, 9 insertions(+), 316 deletions(-) [03:57] spot__ has joined the channel [03:57] spot__: nice [04:15] kriskowal: ryah, this slice() creates a window into the underlying mutable blob, right? [04:27] ryah: kriskowal: yeah [04:27] ryah: kriskowal: it probably shouldn't be called slice [04:27] kriskowal: same for the constructor form? [04:27] ryah: kriskowal: correct [04:27] kriskowal: i'm supporting the name "range" [04:28] ryah: i'm okay with that [04:28] kriskowal: at least, that's what i recommended to the last couple times the idea came up [04:28] kriskowal: dantman's idea [04:28] kriskowal: in any case, your Buffer works like a charm with Narwhal [04:29] micheil: morning all. [04:30] ryah: micheil: hey [04:30] micheil: ryah: I'm not sure my message has gone through on the libev ML.. [04:30] ryah: micheil: i got it [04:30] kriskowal: do asciiSlice and utf8Slice return new objects? [04:30] micheil: ah, okay, I thought my email client might've been playing silly buggers. [04:31] ryah: utf8Slice does - asciiSlice refers to the underlying buffer [04:31] ryah: i mean, they return strings [04:31] ryah: utf8Slice is a copy - asciiSlice is a reference [04:31] ryah: funky - i know [04:32] micheil: ryah: I get the feeling you've read v8's source code.. :P [04:32] kriskowal: alright, in any case, i copied the files to different names so i don't conflict when you merge [04:33] creationix has left the channel [04:33] kriskowal: i might fiddle with the names so range always means "returns a view" and slice always means "makes a copy" [04:36] kriskowal: hm. might also make C++ copy and fill methods [04:37] micheil: hmm.. anyone know if there's a C++ based md5 / sha1 library about? [04:38] kriskowal: i've got commonjs md5/sha1 if that'd be of interest [04:38] kriskowal: and a bunch of other hashing algorithms [04:39] CIA-77: node: 03Ryan Dahl 07master * rea4956f 10/ src/node.cc : [04:39] CIA-77: node: Simplify call to V8::IdleNotification [04:39] CIA-77: node: Run a max priority ev_timer every 2 seconds. If there aren't any pending [04:39] CIA-77: node: watchers then call V8::IdleNotification() once. This is slower at freeing [04:39] CIA-77: node: memory, but I think simpler and less aggressive. - http://bit.ly/cdD6aX [04:39] micheil: actually.. I don't need it in C++, either way I need to stream the file in. [04:39] kriskowal: micheil^ http://github.com/280north/narwhal/blob/master/lib/sha.js [04:39] kriskowal: ah, you need a digest version. [04:39] kriskowal: sorry [04:39] JimBastard has joined the channel [04:40] kriskowal: i haven't gotten around creating digest wrappers [04:40] micheil: kriskowal: yeah, it's for that Grit/Git library I'm writing [04:40] brandon_beacher has joined the channel [04:40] micheil: ACTION doesn't know a whole heap about cryptography [04:40] alex-desktop has joined the channel [04:41] jashkenas: ryah: would to take a patch to not have node parse '--help' style options if they follow a script name? [04:41] jashkenas: so that the script can handle them itself. [04:41] jashkenas: I know that '--' exists currently, but you can't use it in a hashbang cross-platform. [04:42] ryah: jashkenas: how are you going to do it? [04:42] micheil: jashkenas: I sort of could, but it was a hack [04:42] jashkenas: micheil: you could use a hashbang? [04:42] JimBastard: javascript party [04:43] micheil: check out the files in: http://github.com/Miksago/node-sfad [04:43] jashkenas: ryah: I'm thinking that node would only parse arguments if they come first. If a script path comes first, it would stop looking, and forward them as arguments. [04:43] micheil: (It's just a proof of concept atm) [04:43] ryah: jashkenas: how will it detect a script path? [04:43] micheil: jashkenas: that would be good [04:43] jashkenas: micheil: #!/usr/bin/env node -- [04:44] jashkenas: that's what I mean -- that's not cross-platform. [04:44] jashkenas: It'll break on Linux. [04:44] micheil: oh [04:44] jashkenas: see the bit about multiple arguments here: http://netbsd.gw.com/cgi-bin/man-cgi?script+7+NetBSD-current [04:44] micheil: ryah: simple, it won't start with a - [04:44] ryah: ah okay [04:44] jashkenas: ryah: anything that isn't in '--long' or '-s' form. [04:45] ryah: sounds good [04:45] micheil: I'm not sure how the parser / node would work it out, though. [04:45] ryah: jashkenas: maybe just remove -- altogether then? [04:46] jashkenas: yeah. [04:46] jashkenas: ryah: where is the current option parsing implemented? [04:46] ryah: jashkenas: src/node.cc [04:46] jashkenas: thanks [04:46] micheil: actually yeah, it'll either be something like: #!/usr/bin/env node filename.js or #!/usr/bin/env node \n [04:47] micheil: so when it hits the first non dash option, it'll stop parsing [04:48] mahemoff has joined the channel [04:50] micheil: hmm.. I wonder how we can have some form of class based inheritance in node [04:50] micheil: or even if we need it [04:52] [Pwner]John: is there still a problem w/ waf? [04:52] jashkenas: micheil -- look at the goog.inherits function in Google's closure library if you want to see the bulletproof way to set up a prototype chain for pseudo-classical inheritance. [04:52] mahemoff has joined the channel [04:52] micheil: jashkenas: hmm.. [04:55] ryah: micheil: http://github.com/ry/node/blob/ea4956f0465e5ea1109283f161c6ec43c30d722c/src/node.js#L73-79 [04:55] jashkenas: ah, there it is. [04:55] micheil: ryah: yeah, this is cross file though [04:55] creationix has joined the channel [04:55] creationix: ryah: http://pastie.org/835064 [04:55] creationix: fs.writeFile has a typo [04:55] micheil: eg, git/tag.js inherits git/ref.js [04:56] jashkenas: creationix: thanks -- I was seeing that bug and couldn't figure out what was going wrong. [04:56] micheil: creationix: is that possibly why the site hasn't been updating? [04:56] creationix: could be [04:56] micheil: is the patch applied on the server? [04:57] creationix: no, but I can do it real quick [04:57] micheil: okay [04:57] micheil: because after the site broke it left ciaran's article a little broken [04:57] jashkenas: ryah: here's a diff to remove '--', and stop parsing when we hit the first non-Node.js-specific option: http://gist.github.com/310128 [04:57] creationix: we should add a test for fs.writeFile, it was a typo from when I moved it over from the 'file' module [04:59] ryah: http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/base.js?r=27#1206 [04:59] micheil: jashkenas: why not initialize line 10 of that patch as 1 [05:00] jashkenas: micheil: dunno? didn't want to change it. [05:00] micheil: ryah: process.inherits(git.tag, require("./ref")); [05:00] micheil: do you think? [05:00] ryah: creationix: oh thanks [05:01] creationix: ryah: sorry for putting the bug in there in the first place [05:02] creationix: micheil: I though I fixed Ciaran's article yesterday. Somehow there was a git conflict when it auto-pulled [05:02] micheil: odd [05:02] micheil: creationix: I was working on it, then after one commit, I ot a git lock, next commit I didn't. [05:03] creationix: strange [05:04] creationix: micheil: btw, howtonode.org has had about 1000 visitors for the last three days [05:04] micheil: nice [05:04] micheil: I guess [05:04] ryah: jashkenas: i get an error [05:04] ryah: mac 0 ~/projects/node > ./node --debug benchmark/http_simple.js [05:04] ryah: debugger listening on port 5858 [05:04] ryah: Use 'd8 --remote_debugger' to access it. [05:04] ryah: node.js:27008: Uncaught TypeError: Cannot call method 'charAt' of undefined [05:05] jashkenas: ryah: alright, one sec. [05:05] micheil: creationix: well, yeah, for some reason just ciaran's article isn't updating [05:05] micheil: creationix: maybe remove the local version on the server, so that it forces a pull? [05:06] creationix: ok, just a sec [05:07] ryah: we should have a test for writeFile [05:08] micheil: ryah: also, readdir's test probably shouldn't use the whole /fixtures/ directory, instead using it's own specific directory [05:09] mattly has joined the channel [05:09] micheil: I might write a patch for it later on [05:09] ryah: micheil: yes, that would be great [05:09] ryah: i've been meaning to fix that forever [05:09] creationix: micheil: hah, I upgraded node on my server, and now the code is dead, well at lest I'm almost done rewriting the engine [05:09] micheil: ryah: it just got annoying when I was writing the tests for chmod, so yeah, I'll fix that up [05:09] micheil: oh, ouch [05:10] creationix: but it was in rewriting the engine that I found the writeFile big [05:10] creationix: *bug [05:10] ryah: micheil: thx [05:11] micheil: ryah: what's the general response time on the libev mailing list? [05:11] ryah: 1-2 days [05:11] micheil: okay [05:11] micheil: I mean, I can implement all of the proposed using eio_custom, it just means a lot more code [05:12] micheil: (plus I want to use ASYNC_CALL) [05:12] micheil: Why is cmd+down open directory in textmate? [05:12] micheil: I just did that on my whole /Users/ directory by accident :( [05:13] jashkenas: ryah: it's an off-by-one error. Do you want a new patch or just the fix. [05:14] micheil: jashkenas: git commit --amend [05:14] micheil: then regenerate the patch [05:14] ryah: jashkenas: em, either [05:16] jashkenas: ryah: here's the amended patch. The fix is to make the else clause of parseArgs use "i-1" instead of "i". [05:16] micheil: textmate using 780mb's of memory seriously isn't good. [05:16] jashkenas: http://gist.github.com/310128 [05:18] micheil: ryah: I'm not sure if it's needed, but in the After method that's called from ASYNC_CALL, there's no handler for eio_custom events, should we add one? [05:19] micheil: although, then again, you can't pass a req struct into ASYNC_CALL [05:19] ryah: jashkenas: i have another error [05:19] ryah: mac 0 ~/projects/node > ./node --prof --debug benchmark/http_simple.jsError: No such file or directory at node.js:1015:9 [05:19] micheil: which is often used from with custom calls, so is it needed.. [05:19] creationix: micheil: It's up and running again!, now uses Do in the engine [05:19] jed has joined the channel [05:20] micheil: creationix: what's that ) at the start of ciaran's article? [05:20] ryah: micheil: mmm... well we're not making any custom calls atm [05:20] micheil: creationix: I think it's the closing of the timestamp [05:21] micheil: ryah: true, but we may need to [05:21] micheil: ryah: I guess wait for the response on the libev mailing list [05:24] creationix: micheil: crap, it's broken all over [05:24] micheil: uh-oh [05:26] jashkenas: ryah: sorry, didn't consider that node had arguments it used outside of those listed in ParseArgs [05:30] jashkenas: ryah: you'll probably have to help out in that case -- I don't know C++. That else clause should be changed to an. "else if argv[i] matches /^(-\w|--\w+)/" [05:31] ryah: if (argv[i][0] != '-') [05:32] jashkenas: that's easy. [05:32] kriskowal: careful for empty strings in argv; it is possible [05:33] JimBastard: http://news.ycombinator.com/item?id=1139754 [05:33] JimBastard: posting of nodejs thread on hackernews [05:34] ryah: god. "JS/V8 need native futures and corutines to do all the things that Node wants to do." [05:34] ryah: what. ev. er. [05:35] ryah: coroutines are total bullshit. [05:35] JimBastard: people are haters i wanted to flame them but i didnt want to say something stupid [05:35] abadr has joined the channel [05:36] jed: i look forward to watching that thread repeat the bikeshedding that's taken place elsewhere. [05:38] ryah: ACTION responded [05:39] ryah: oh wait it changed [05:39] jed: whoa, that's odd. [05:40] JimBastard: ohh you deleted it? [05:40] jed: did the post you reply to get changed, or deleted? [05:40] ryah: i deleted it because what i replye to changed [05:40] JimBastard: hackernews : the real-time flame game [05:41] ryah: :) [05:41] jed: ha ha. [05:42] gf3 has joined the channel [05:42] technoweenie: some people on reddit do that shit on purpose [05:43] technoweenie: theres a user named 'ichangemypoststomakeyoulookstupid' or something like that [05:43] JimBastard: fuck reddit, they didnt like the reddit rap video i made for them [05:44] ako has joined the channel [05:45] mahemoff has joined the channel [05:46] dekz has joined the channel [05:47] creationix: ok, howtonode.org is up again, phew... [05:50] creationix: ryah: we're you waiting on a test for writeFile before pushing my patch? [05:53] ryah: creationix: nodelog [05:53] CIA-77: node: 03Tim Caswell 07master * r68af59e 10/ src/node.js : Fix typo in fs.writeFile - http://bit.ly/c2NMsq [05:53] ryah: er [05:53] ryah: creationix: no [05:54] creationix: thanks [05:54] creationix: I'm thinking that after the 0.1.30 release I'm only going to release my server at release versions [05:54] creationix: and only after testing all my software on the new version [05:55] creationix: *upgrade my server [05:57] ryah: you know, despite the hacker news comments, i thought the Promise discussion and experience was really helpful [05:58] ryah: i mean it yets to be seen how well the new callback interface will do - but i think it's quite okay [05:58] ryah: s/yets/is yet/ [06:00] creationix: now that I figured a way to convert on import, I'm not worried anymore [06:01] stepheneb has joined the channel [06:01] creationix: http://github.com/creationix/node-blog/blob/master/build.js [06:06] brainproxy has joined the channel [06:07] brainproxy has joined the channel [06:12] JimBastard: is there anything for doing scheduled tasks in node? [06:13] gf3 has joined the channel [06:13] creationix: setTimeout [06:13] creationix: :P [06:14] micheil: JimBastard: or setInterval or Cron [06:14] brainproxy has joined the channel [06:15] gf3 has joined the channel [06:16] JimBastard: i think cron is the most appropriate for my case [06:16] JimBastard: im working on a web hook platform in node [06:18] micheil: ryah: as early feedback, the new promise API was very nice to work with last night [06:19] micheil: ryah: maybe having a method on the errors of something like: status.isError() [06:19] micheil: it does get a little repetitive writing all the if statements to catch errors though [06:21] dekz: Can someone explain to me, with the latest websocket draft, if it's possible at all to implement a browser based bittorrent client? [06:21] micheil: dekz: no idea [06:22] JimBastard: dekz: how you gonna go p2p ? [06:22] creationix: dekz: depends on what you want it to do, websocket can only talk to the webserver as far as I know [06:23] dekz: THat's what I'm wondering [06:23] edspencer has joined the channel [06:23] JimBastard: you could implement it kinda but you'd have to route data through the tracker or soemthing which wouldnt make any sense [06:24] JimBastard: how would you connect a socket between two browsers [06:24] dekz: Yeah just talking the idea outloud, doesn't make much sense [06:24] JimBastard: ive wanted to do that for a long time [06:24] JimBastard: you can do client-side grid computing though [06:24] JimBastard: just no bittorrent [06:26] micheil: p2p in browsers would be rather scary. [06:27] JimBastard: you just need a lot of iframes embedded with http://192.168.1.1/ [06:27] JimBastard: and default route password combos [06:27] JimBastard: you could do it [06:32] CIA-77: node: 03Ryan Dahl 07master * r1db824a 10/ (Makefile doc/index.html): Add changelog to website - http://bit.ly/cJW6tv [06:32] micheil: ryah: is CIA-77 the github bot or a node based one? [06:33] jashkenas: ryah: you cool with that '--' patch for 0.1.3? [06:33] jashkenas has left the channel [06:33] jashkenas has joined the channel [06:33] ryah: jashkenas: the one that i found an error in? or a new one? [06:34] jashkenas: with your fix for the '--prof' error. [06:34] ryah: jashkenas: i didn't see it - can you link me? [06:35] jashkenas: http://gist.github.com/310128 [06:39] CIA-77: node: 03Ryan Dahl 07master * ra0c48ee 10/ (5 files in 3 dirs): Rename readPause and readResume to pause/resume - http://bit.ly/drhVS6 [06:45] creationix has joined the channel [06:46] abadr has left the channel [06:46] creationix has left the channel [06:47] CIA-77: node: 03Jeremy Ashkenas 07master * ra32178f 10/ src/node.cc : Remove '--' from command line parsing - http://bit.ly/cSpRzI [06:49] CIA-77: node: 03Jeremy Ashkenas 07master * r2916a2a 10/ (AUTHORS src/node.cc): Remove '--' from command line parsing - http://bit.ly/bmH1mL [06:51] gf3 has joined the channel [07:05] micheil: ryah: how do you generate that authors file? [07:08] brapse has joined the channel [07:17] mikeal has joined the channel [07:31] Tim_Smart has joined the channel [07:39] bpot has joined the channel [07:46] dnolen has joined the channel [07:50] JimBastard: sup Tim_Smart [07:51] Tim_Smart: howdy [07:51] JimBastard: how goes the framework business [07:55] cloudhead: hey anyone knows of an ecma 5 compatibility layer for the client-side? [07:59] fwg: $framework [08:00] mahemoff_ has joined the channel [08:21] abadr has joined the channel [08:28] jed has joined the channel [08:29] nsm has joined the channel [08:39] tiglionabbit has joined the channel [08:39] tiglionabbit: hi guys [08:45] jed has left the channel [08:46] qFox has joined the channel [09:00] drostie: it just figures that I would start trying to use node.js on the weekend where it was decided, "oh, let's clean out promises and thus break the API docs." :D [09:00] drostie: I suppose I can always go back to a tag rather than to the latest, though. :x [09:00] Tim_Smart: haha yeah well somewhere it mentions the API isn't frozen [09:02] mikeal has joined the channel [09:02] drostie: aha, found something in google groups saying what the new syntax is. okies. ^^;; [09:05] Tim_Smart: yay [09:11] JimBastard: yeah i just updated node right now [09:11] JimBastard: gotta update some code i think [09:11] brainproxy has joined the channel [09:12] ryah: micheil: it's not really auto generated [09:13] RayMorgan has joined the channel [09:13] felixge has joined the channel [09:13] felixge has joined the channel [09:19] kriskowal has joined the channel [09:21] JimBastard: why would fs.readFile(path, 'binary').addCallback(function (content) { error out with : TypeError: Cannot call method 'addCallback' of undefined [09:21] JimBastard: just updated to latest version [09:21] Tim_Smart: promises are removed, JimBastard [09:22] JimBastard: so whats the correct implementation now? [09:22] kriskowal: callback is last arg [09:22] kriskowal: accepts (err, value) as its arguments [09:22] JimBastard: aight [09:23] JimBastard: is that what http://nodejs.org/api.html#_file_system says? [09:23] kriskowal: docs aren't updated yet, apparently [09:23] JimBastard: hrmmm [09:24] JimBastard: sorry to be a bother, whats the syntax suppose to look like? [09:24] JimBastard: want to try and read file, do stuff with the contents and add a error callback incase the file doesnt exist [09:24] kriskowal: fs.readFile(path, 'binary', function (error, value) {if (error) {…} else {…}}) [09:27] JimBastard: thanks kriskowal im kinda cooking with gas now [09:27] JimBastard: thats a little strange now but it makes sense i guess [09:27] kriskowal: not really following the metaphor, but i'm baking an apple pie [09:33] felixge has joined the channel [09:33] felixge has joined the channel [09:33] felixge: so I wake up one morning, and the entire node API has changed :) [09:33] unomi: I like some of the thinking that is floating around with the package management [09:33] felixge: ACTION gotta update all my projects : | [09:33] unomi: yeah, its probably a bit early to be thinking about pkg management, web frameworks etc [09:34] unomi: certainly with any kind of 'authority' [09:36] unomi: It would be interesting, especially in light of distributed / commodity computing, to be able to serve modules from a cdn [09:36] unomi: security concerns aside [09:37] unomi: so in the example of js.require("database.sqlite", db); [09:37] unomi: that could reference a canonical repository / cdn [09:38] unomi: or local files if you have configured it to do that [09:39] unomi: what do you guys think? [09:43] vjain has joined the channel [09:52] Tim_Smart: I'm not sure what I think yet tbh. I'll probably wait a little longer before sitting down and doing anything [09:52] vjain has joined the channel [09:52] Tim_Smart: node seems to be changing quite often. Once everything is frozen I'll start to expand a bit more [09:59] ryah: Tim_Smart: yeah - sorry about that [10:00] Tim_Smart: no problems, at least it shows node is actively developed :D [10:01] ryah: maybe i should publish a guide to using the new APIs... [10:04] Tim_Smart: screencast ftw? [10:04] felixge: ryah: wow, you're up late : ) [10:04] Tim_Smart: geez I can't wait for the day flash is abandoned [10:05] Tim_Smart: I navigate to a flash website, and all I can hear is my laptop fans winding up [10:09] JimBastard: i seem to be getting double post variables when i do this, any idea whats going wrong? http://gist.github.com/310238 [10:09] JimBastard: this is after upgrade, was working before [10:12] JimBastard: it looks like its not mixing in i have no clue [10:13] unomi: ryah: its good that its changing [10:13] unomi: no reason to get locked in before you are satisfied [10:17] ryah: yeah - hard on users though [10:17] ryah: i hope we can nail down some of these core APIs soon [10:18] ryah: these changes really should ahve been on a new branch - but i somehow promised that 0.2 would have a freezed api [10:19] JimBastard: its not too bad, just a few find and replaces [10:19] vjain: in early stages its common to have frequent code refactoring and api changes. node has very small api set till date. so its not such a big overhead. I believe in few iterations core apis should get stable [10:19] JimBastard: i keep getting kicked in the face with the multipart parsing and form posting [10:20] JimBastard: i can't figure out why this http://gist.github.com/310238 is causing duplicate data [10:23] vjain: any hints on debugging node application? Does d8 need to be built separately? [10:24] ryah: vjain: use eclipse - d8 is super hacky [10:24] ryah: vjain: in general debugging it super hacky [10:24] ryah: but eclipse is working slightly in the latest versions [10:24] tisba has joined the channel [10:25] ryah: vjain: you might want to "curl http://github.com/zoka/node/commit/b177b1c3949a1b07c92f6aaf792197f9991969a4.patch | git am" too [10:25] ryah: and use --debug-brk [10:26] vjain: yup.. i come from c/c++. ddd fan. Thanks for pointers. [10:27] vjain: ryan: I appreciate your effort for node. Great work. [10:27] ryah: (i haven't tried that patch but it's on its 3rd iteration, and ostensibly looking good) [10:28] ryah: thanks [10:41] JimBastard: i figured out a work around [10:45] Tim_Smart has joined the channel [10:49] micheil: ryah_Away: oh, okay [10:50] micheil: kriskowal: what, you have one in the oven? [10:51] kriskowal: just took it out; it's cooling [10:51] kriskowal: i've discovered the maximum butter to dough ratio [10:51] kriskowal: butter to flour, pardon [10:52] micheil: ryah_Away: do you need help updating the documentation as to the new api's, or has it been done? [10:55] micheil: kriskowal: sorry, I thought that was a reference, mine was actually a reference to an Oasis song. [10:55] kriskowal: ah-hah. i suspected it was a reference. [10:55] micheil: heh heh [10:56] micheil: this was the song: http://lyrics.wikia.com/Oasis:She%27s_Electric [10:58] micheil: I should play that album after this lou reed one [10:59] micheil: oh man. that thread I started on libev mailing list didn't start well [10:59] micheil: I forgot to format my email in a human readable form.. [11:00] micheil: and now I keep going C++ vs C [11:02] micheil: ryah_Away: looks like probably a no to those methods being added to libeio [11:03] micheil: and probably for good reasons, I can't say I know a whole lot about C portability [11:04] vjain has joined the channel [11:05] jed has joined the channel [11:09] happyelephant has joined the channel [11:40] vjain has joined the channel [11:51] Nathan__ has joined the channel [11:55] Moon has joined the channel [12:03] micheil has joined the channel [12:09] rudebwoy has joined the channel [13:09] BBB has joined the channel [13:28] felixge has joined the channel [13:28] felixge has joined the channel [13:37] unomi has joined the channel [13:46] charlenopires has joined the channel [13:48] creationix has joined the channel [13:52] pjb3 has joined the channel [14:02] unomi has joined the channel [14:08] maritz has joined the channel [14:17] kriszyp has joined the channel [14:28] eikke has joined the channel [14:34] ashb: ryah_Away: did you have a specific Q about iconv/encoding? [14:38] micheil: ryah_Away: we should really update the documentation on promises. [14:44] pjb3_ has joined the channel [14:44] drostie_ has joined the channel [15:04] kjeldahl has joined the channel [15:08] felixge_ has joined the channel [15:08] felixge_ has joined the channel [15:10] tisba has joined the channel [15:11] tisba_ has joined the channel [15:15] alexiskander has joined the channel [15:19] alex-desktop has joined the channel [15:26] felixge has joined the channel [15:26] felixge has joined the channel [15:26] teemow has joined the channel [15:33] happyelephant has joined the channel [15:36] unomi has joined the channel [16:03] charlenopires has joined the channel [16:10] happyelephant has joined the channel [16:14] kennethkalmer has joined the channel [16:17] unomi has joined the channel [16:17] gwoo has joined the channel [16:22] jashkenas has joined the channel [16:24] binary42 has joined the channel [16:34] nsm_ has joined the channel [16:44] happyelephant has joined the channel [16:46] paulca has joined the channel [17:11] kriszyp has joined the channel [17:20] mahemoff has joined the channel [17:21] r11t has joined the channel [17:21] arlolra has joined the channel [17:24] arlolra has joined the channel [17:38] cloudhead has joined the channel [17:45] pjb3: Is there something in JavaScript/V8/Node already that does base64 encoding/decoding? [17:49] jashkenas has joined the channel [17:51] charlenopires has joined the channel [17:58] jashkenas has joined the channel [18:08] teemow has joined the channel [18:09] ashb: pjb3: http://github.com/280north/narwhal/blob/master/lib/base64.js [18:25] happyelephant has joined the channel [18:37] vjain: ryah: debug-brk patch works and with eclipse+chrometools was able to stop at the beginning of node.js [18:38] vjain: but, I seems to be no way to set breakpoint in a javascript file which is going to be loaded in process.loop() [18:40] vjain: I opened my file (which was provided on cmd line with node --debug-brk), but eclipse is not setting breakpoint at any line in that file [18:41] vjain: did you bump into such issue? I can set breakpoint in node.js only. [18:41] vjain: Is it possible to hack v8 JSON debug protocol and send it manually from eclipse console? [18:42] vjain: like {"seq":,"type":"request","command":"setbreakpoint","arguments":{"enabled":true,"target":"","line":,"type":"script"}} [18:45] dnolen has joined the channel [18:48] brainproxy has joined the channel [18:54] brainproxy has joined the channel [18:57] chakrit has joined the channel [19:04] creationix has joined the channel [19:10] bpot has joined the channel [19:17] r11t has joined the channel [19:18] keeto_ has joined the channel [19:34] vjain has joined the channel [20:06] kriskowal has joined the channel [20:12] rauchg has joined the channel [20:13] dnolen has joined the channel [20:16] felixge has joined the channel [20:17] felixge has joined the channel [20:17] maritz1 has joined the channel [20:21] r11t has joined the channel [20:26] gf3 has joined the channel [20:34] rolfb has joined the channel [20:36] brapse has joined the channel [20:41] mahemoff has joined the channel [20:47] ryah_Away: vjain: yeah, that's a problem [20:50] micheil: morning ryah [20:50] tmpvar has joined the channel [20:50] micheil: ryah: I've had a few replies back from Marc (he seemed to reply not directly to the list) [20:51] micheil: firstly he suggests just trying to replicate mkstemp in node's c or in javascript. [20:51] charlenopires has joined the channel [20:51] micheil: then suggests not using realpath for the portability issues of it [20:52] micheil: then for access he suggests it's actually deprecated / bad code practice to use [20:52] micheil: as for getpw* he suggests implementing it would require an increase in the stacksize of libeio [20:53] micheil: ACTION must be off. [20:57] creationix has joined the channel [20:58] Tim_Smart has joined the channel [21:01] ryah: Micheil_away: okay [21:07] jspiros has joined the channel [21:11] vjain has joined the channel [21:16] cloudhead: is the callback argument in the async API going to be optional? [21:17] cloudhead: or will it raise an exception if it's not passed? [21:17] felixge: cloudhead: good question, it'd be nice for this to be consistent [21:17] cloudhead: I'm asking, cause it makes variable arguments much easier to handle if it's non-optional [21:18] cloudhead: felixge: yea [21:18] felixge: cloudhead: I think making it non-optional makes most sense [21:18] jashkenas: Also, what's supposed to happen if you don't watch for the error object -- do they just get silently swallowed now? No top-level exceptions? [21:18] cloudhead: you'd be able to rely on args[args.length - 1] being the callback [21:18] felixge: cloudhead: if its optional, it means the method also supports sync behavior [21:18] cloudhead: right [21:18] vjain: ryah: I found a workaround for debug issue. Set a breakpoint in loadSync in node.js and I was able to set my JS file in project explorer under project with same as my debug config. Got a seg fault after that.. will explorer it further. [21:18] felixge: cloudhead: at least thats what I'd like to see [21:18] spot__: Is there an fs equiv for file.exists() or should we just try reading from the file to see if it exists? [21:18] cloudhead: felixge: makes sense [21:18] felixge: jas silent swallowing, yes [21:19] felixge: * jashkenas [21:19] jashkenas: ugh [21:19] felixge: jashkenas: well, you just have to use a high level lib if you want this kind of hand holding now [21:19] ryah: vjain: cool - i just emailed Zoka - who is working on it [21:20] felixge: jashkenas: in fact, I might make a standalone promise module since I have a lot of legacy code in a project, and no time to refactor all of it :) [21:20] felixge: ACTION afk 10min [21:22] tmpvar: felixge, nice [21:23] ryah: felixge: http://gist.github.com/310553 [21:25] tmpvar: ryah, do you know the resolution of the timers in v8? (microseconds, nanoseconds, sub 10ms) [21:26] ryah: timers are in node, and it depends on your OS [21:27] tmpvar: ok, thanks [21:27] cloudhead: ryah: any comments on whether or not the callback will be optional or not? [21:30] ryah: cloudhead: hm i don't know. i think they should be optional [21:30] ryah: what if you don't care about the response? [21:31] inimino: function(){} [21:31] ryah: i guess we could have a no-op [21:31] inimino: it's a lot harder to do that by accident [21:31] ryah: yeah, that's true [21:31] cloudhead: the problem is it makes handling optional args even harder than it already is [21:31] cloudhead: because you have to handle the case where the last argument isn't a function [21:32] ryah: yeah [21:32] inimino: (.length on functions is your friend) [21:32] inimino: bbl [21:33] ryah: so it should throw an exception without a callback - mm [21:33] ryah: sure [21:33] cloudhead: yea [21:34] cloudhead: it'll make it possible to rely on arguments[arguments.length - 1] [21:34] cloudhead: to always be the callback [21:34] cloudhead: in functions with variable arguments [21:37] Micheil_away: spot__: I'm pretty sure there is path.exists() which may be moving to fs.exists() [21:38] spot__: Micheil_away, I realized that I misread that line, right after I asked about it, which is why I didn't ask again. [21:38] Micheil_away: ah, okay [21:38] spot__: Micheil_away, moved.. ok. Any idea when the API will be stablized? [21:39] Micheil_away: ryah: ? [21:39] Micheil_away: spot__: it's up to ryah, I guess [21:39] spot__: Micheil_away, Cool, ok. Thanks [21:40] ryah: a month or two [21:40] Micheil_away: although, there is a fair bit of work going on within the filesystem module [21:40] bentomas has joined the channel [21:42] Micheil_away: ryah: we'll have to figure out which direction we want to take the methods within fs sometime.. [21:42] arlolra has joined the channel [21:42] bentomas: For some reason the example code in the doc for making http requests isn't working for me with trunk Node. Can anyone verify this so I can know if the problem is on my end or Node's end? [21:42] Tim_Smart: gf3: For writing a IRC server, I was thinking of using C++ to do all the heavy lifting, and using Node.Js to handle all the IO [21:42] bentomas: (the example code that requests www.google.com/) [21:42] Micheil_away: bentomas: any errors? are you using the new callback style? [21:43] ryah: bentomas: the documentation on the website is for the released version [21:43] brainproxy has joined the channel [21:43] bentomas: ryah: thanks! [21:44] Micheil_away: ryah: on documentation, would it be best to restructure it away from the manpage style we currently have? [21:44] bentomas: ahh, you now have to explicitly close the request [21:44] Micheil_away: to have a few sections that cover general concepts and ideas [21:45] felixge: ryah: thanks for the gist [21:45] gf3: Tim_Smart: hpwcome? [21:45] gf3: *howcome [21:45] gf3: Tim_Smart: btw: http://github.com/gf3/IRC-js [21:45] ryah: Micheil_away: i don't know - maybe [21:45] gf3: Tim_Smart: specs to come, I'm playing with EvidenceJS [21:45] Tim_Smart: gf3: Well IRC clients / bots don't need to worry as much about concurrency [21:46] Micheil_away: ryah: I'll do up a few mocks of it if I get a chance [21:46] Tim_Smart: gf3: Servers on the other hand, do [21:46] Micheil_away: then we'll see which we think works best [21:47] Tim_Smart: gf3: Doing all the parsing in C++ generally means less time in the event loop is spent parsing [21:48] Tim_Smart: and more time for recieving / sending requests / reponses [21:48] dnolen has joined the channel [21:48] Tim_Smart: responses* [21:48] gf3: mmm [21:49] Tim_Smart: Considering IRC daemons should be able to handle insane amounts of users [21:49] Micheil_away: Tim_Smart: an irc server, not a client? [21:49] Tim_Smart: Micheil_away: Yeah [21:49] Micheil_away: nice one! [21:50] isaacs has joined the channel [21:50] bentomas has left the channel [21:50] Tim_Smart: Somehow we need to make an async IRCd [21:50] gf3: Tim_Smart: cool, hopefully I am able to help out! [21:50] isaacs: ryah: you around? [21:50] Tim_Smart: I won't work on it anytime soon :/ [21:50] felixge: isaacs: how is it going? : ) [21:50] isaacs: hey, felixge [21:50] Tim_Smart: on the fun project list though [21:51] isaacs: promises disappeared. got some rewriting to do. [21:51] gf3: Tim_Smart: be sure to ping me when you start [21:51] Tim_Smart: isaacs: :D [21:51] Tim_Smart: gf3: Sure [21:51] felixge: isaacs: me too, all my node modules are broken :( [21:51] felixge: isaacs: luckily some people already send pull requests :) [21:51] Tim_Smart: ryah: Is it worth making simple parsing of data async? [21:51] isaacs: nice [21:51] hassox has joined the channel [21:52] felixge: Tim_Smart: Depends. Async parsing will need more resources than sync parsing [21:52] gf3: Tim_Smart: for IRC messages? [21:52] felixge: Tim_Smart: but you can make sync parsing at least non-blocking once we got web workers [21:52] Tim_Smart: yeah, well maybe create a persistent node process, and communicate via STDIO [21:52] brainproxy has joined the channel [21:53] Tim_Smart: And that process does all the C++ lib interfacing [21:53] gf3: I'm not sure it would be necessary for IRC messages as the grammar is pretty simple [21:53] Tim_Smart: yeah, well optimizations are optimizations [21:53] felixge: Tim_Smart: I think IRC is really trivial to parse, so I doubt it's ever going to become your main overhead issue [21:54] felixge: Tim_Smart: you are most likely going to hit network limits on distributing messages before you hit problems with the parsing that is [21:54] Tim_Smart: :D good [21:54] Tim_Smart: Then I'm not sure a node.js IRCd is a good idea, because no async IO is needed [21:54] micheil has joined the channel [21:55] Tim_Smart: actually, don't they look up databases? [21:55] felixge: Tim_Smart: a node.js IRCd is a good idea, you need the async networking [21:55] gf3: probably for services, bans, etc.. [21:55] Tim_Smart: for all the IDENT stuff [21:57] Tim_Smart: so a IRCd with mango-db and node.js? sounds good to me [21:57] gf3: are there any tokyo cabinet libs yet? [21:58] micheil: gf3: one or two I think [21:58] gf3: excellent! [21:58] gf3: Tim_Smart: that might be another good option [21:59] Tim_Smart: Hmm yeah [21:59] gf3: 'cause I would imagine that most of the data would simply be key/value stores [21:59] Tim_Smart: yeah I would think so [22:00] Tim_Smart: Well we can either parse in a C++ Node addon, or do it within Javascript [22:00] Tim_Smart: Not sure how much difference it will make [22:03] Tim_Smart: I guess doing it with C++ would shave a few ms per request [22:03] gf3: perhaps [22:04] gf3: although, ryah has mention that the modules in net2 are faster now that he's rewritten them in JS [22:04] gf3: *mentioned [22:05] Tim_Smart: OK, thats interesting [22:09] isaacs: Tim_Smart: imo, you're better off building parsers as blocking interruptible things. [22:09] isaacs: then it's up to the consuming code to write as much as it's prepared to chew on [22:09] isaacs: but that stuff is so fast, it doesn't much matter. it's fs and networking that's slow. [22:10] isaacs: since you only have one js thread anyhow, asynchronizing it doesn't make much sense. [22:10] sveisvei has joined the channel [22:10] Tim_Smart: Yeah I realize that, but most of IRC message don't go through a db [22:10] Tim_Smart: *messages [22:10] Tim_Smart: unless you log them, which is optional [22:11] Tim_Smart: so a ms saved here and there is worth it [22:13] isaacs: Tim_Smart: what i'm saying is, you won't actually save ms'es that way [22:13] isaacs: doing a fast thing later is slower than doing it now. doing a slow thing later makes sense. [22:13] Tim_Smart: Right well, parsing in Javascript it is [22:13] isaacs: you'll save ms by making the code simpler. [22:14] isaacs: i've been playing with this principle pretty aggressively wiht sax-js [22:14] aho has joined the channel [22:14] Tim_Smart: Yeah John Resig uses it a lot for optimizing jquery [22:14] Tim_Smart: rather than timing everything, look at complexity [22:14] isaacs: trying to figure out how how to not have a buffer overrun hole without testing string.length for every character.. [22:15] isaacs: yeah, how many objects being created, how many things being copied, et. [22:15] isaacs: optimize that first, and the timing usually comes down with it. [22:15] isaacs: (but not always) [22:18] Tim_Smart: anyway, I'll ping back about it in a few weeks or something [22:20] Tim_Smart: There is also http://github.com/biggie/biggie , but I got no idea where that is headed yet [22:20] Tim_Smart: JimBasterd is supposed to be in on that one as well [22:20] isaacs: Tim_Smart: also, the less async stuff you do, the more protected you are against API changes. [22:20] isaacs: and the more portable your code is. [22:21] isaacs: (at least, for the parser) [22:21] Tim_Smart: Well the obvious stuff will be async, but all the CPU / memory only stuff will be sync [22:23] eikke has joined the channel [22:26] dmpk2k: Is there a way to use fs.sendfile with networking? [22:37] dnolen_ has joined the channel [22:49] brandon_beacher has joined the channel [22:57] unomi has joined the channel [23:07] tmpvar has joined the channel [23:07] tmpvar: hey guys, I wrote a little helper for running mjsunit tests.. let me know what you think: http://github.com/tmpvar/mjsunit.runner [23:08] gf3 has joined the channel [23:18] rektide: there comes a point in every man's life where he must stop writing code, and begin testing. [23:18] rektide: that day... is tomorrow. [23:18] rektide: *bow* [23:19] unomi has joined the channel [23:19] eikke has joined the channel [23:22] dekz has joined the channel [23:23] cloudhead: ugh, having a hard time wrapping my module with promises ; / [23:25] brainproxy has joined the channel [23:28] unomi has joined the channel [23:31] isaacs: w00t. no longer possible to overflow sax-js's buffers [23:32] isaacs: and i'm only testing about every 64*1024 chars, so it's pretty damn efficient. [23:32] tmpvar: isaacs, nice, and yo [23:33] isaacs: hi, tmpvar [23:37] erichocean has joined the channel [23:40] jashkenas: has anyone needed to get the true path of a symlinked node.js file? __filename isn't it. [23:43] ashb: it arguably should be. i thought the require spec says it should use the canonical path [23:43] ashb: but i might be imagining that [23:47] hassox: hey guys [23:47] jashkenas: So, if I'm symlinking to a Node script from /usr/local/bin, and I'd like that script to unshift './lib' into the require.paths, so that it can execute, is there any way to make that work with the current Node? [23:47] hassox: what's the feeling on the streaming and events apis atm? [23:48] jashkenas: i.e., to have the correct path added, and not /usr/local/bin/lib. [23:48] ashb: jashkenas: i asked that question in an email to the commonJS list, and the few people (1 or 2) who responded seemed to think doign that was bad [23:49] jashkenas: ashb: thanks for the info. I'll see if I can dig that email up. [23:50] ashb: or at least something very similar [23:50] ashb: and how relative includes are treated wr.t. symlinks [23:51] jashkenas: ashb: that's quite a thread. http://groups.google.com/group/commonjs/browse_thread/thread/6ad5c2c3b005cb3b/52aa92f69293a298?lnk=gst&q=ashb#52aa92f69293a298 [23:54] jashkenas: So, it looks like module.filename is the same as __filename, and just shows the symlink path, not the actual file.