[00:01] felixge: ryah: ok, gotta sign of for now. Don't merge until we know more about this
[00:01] felixge: gn8
[00:02] RayMorgan__ has joined the channel
[00:06] binary42 has joined the channel
[00:08] dgouldin has joined the channel
[00:09] dnolen has joined the channel
[00:20] mattly has joined the channel
[00:22] Connorhd_ has joined the channel
[00:26] unomi has joined the channel
[00:29] kriszyp_ has joined the channel
[00:31] inimino: mikeal: there is MemoServ
[00:31] inimino: /msg MemoServ help
[00:31] mikeal: i decided to just write what I was going to ask him about and hope that he likes it and will merge it :)
[00:32] inimino: ok :)
[00:35] paulca has joined the channel
[00:36] Connorhd has joined the channel
[00:38] kriszyp_ has joined the channel
[00:48] okito has joined the channel
[00:56] RayMorgan has joined the channel
[00:59] Tim_Smart has joined the channel
[01:02] davidjrice: hey guys
[01:03] davidjrice: anyone help me with this ? http://gist.github.com/302179
[01:08] gwoo: davidjrice not sure if querystring would help
[01:09] gwoo: http://nodejs.org/api.html#_query_string_module
[01:09] gwoo: looks like stringify will do it nicely
[01:09] davidjrice: gwoo: looks good, lemmie see
[01:10] davidjrice: trying to build a working oauth lib here :)
[01:10] gwoo: killer
[01:10] davidjrice: & tnx
[01:10] RayMorgan has joined the channel
[01:10] gwoo: have you seen oauth wrap
[01:11] vickaita has joined the channel
[01:11] gwoo: http://open.lukeshepard.com/oauth-wrap/console/
[01:12] gwoo: that aims to be simpler than the 3 level token system
[01:12] konobi: ryah++ # node-amqp
[01:13] davidjrice: & tnx
[01:14] jcrosby has joined the channel
[01:17] mikeal has joined the channel
[01:30] davidjrice: gwoo: that looks pretty cool.
[01:30] gwoo: yeah its certainly gonna make things simpler
[01:30] gwoo: too bad only a few sites support it
[01:31] davidjrice: yeah!
[01:31] davidjrice: trying to get even one sucessful token request first though (bah)
[01:33] randomekek has joined the channel
[01:34] gwoo: davidjrice: what are you testing against?
[01:34] davidjrice: for now, twitter (client demands)
[01:34] gwoo: twitter doesnt implement the spec perfectly
[01:34] Connorhd: has anyone done any openid stuff with node?
[01:35] gwoo: because they use the ruby lib i think
[01:35] konobi: Connorhd: try RPX instead
[01:35] gwoo: davidjrice: so if you are strictly follow the spec you will never get the token
[01:36] mikeal1 has joined the channel
[01:36] davidjrice: oh... I'm going based on this article > http://www.jaanuskase.com/en/2010/01/understanding_the_guts_of_twit.html
[01:37] Connorhd: konobi, looks pretty neat, thanks
[01:37] konobi: np
[01:38] davidjrice: gwoo: main problem is the authorization header. https://gist.github.com/1b00dd5d5ed0bd72e298
[01:38] davidjrice: not sure if I'm getting it right...
[01:39] gwoo: hmm that looks right at first glance
[01:41] gwoo: davidjrice: try using another hash for the nonce
[01:41] gwoo: shouldnt matter though
[01:41] gwoo: thats just a random key
[01:42] gwoo: davidjrice: oh i see
[01:42] randomekek: hi anybody knows a bit about v8 internals? are arrays and objects implemented differently? i did a simple speed test inserting things with a number as a key for both array and numbers
[01:42] randomekek: and it comes out the same
[01:42] gwoo: davidjrice: your version and signature are not separated
[01:42] gwoo: davidjrice: missing a comma i think
[01:45] davidjrice: gwoo: nice spot.
[01:46] gwoo: hopefully its just that simple :)
[01:46] davidjrice: tried that + hashing the nonce, still twitter is giving a http 400!
[01:46] davidjrice: blast
[01:49] gwoo: im trying to find out if they even supprot header based access
[01:49] davidjrice: that's what that article I was reading said to use
[01:49] gwoo: ok good
[01:50] gwoo: headers are better for sure
[01:52] hassox has joined the channel
[01:52] davidjrice: I did stick what I have on github o.O http://github.com/davidjrice/node-twitter-oauth
[01:53] gwoo: ok goody
[01:54] mahemoff has joined the channel
[01:54] davidjrice: ACTION starts refactoring
[02:01] davidjrice: tidied all that shite :)
[02:01] gwoo: nice :)
[02:01] davidjrice: not sure if it should be called refactoring if it's refactoring... to the same state of fail
[02:01] gwoo: it might be worth trying to use standard post
[02:02] davidjrice: standard post?
[02:02] gwoo: POST
[02:03] jed has joined the channel
[02:04] davidjrice: hmm, I thought the token request was a get
[02:06] gwoo: it could be any of the three
[02:06] gwoo: first you have to post to get a token, then you use that to request authorization, then you get the access token/key and use that when posting updates
[02:08] davidjrice: hmm
[02:08] davidjrice: I'm just going by that article... it does say " You will now issue a HTTP GET request to the following URL: https://twitter.com/oauth/request_token "
[02:08] gwoo: oh no
[02:09] bpot has joined the channel
[02:09] gwoo: POST request_token, GET authorize?oauth_token
[02:09] gwoo: is the first step
[02:10] davidjrice: really? It does sound like you know what your talking aboot
[02:10] gwoo: hehe
[02:10] gwoo: i have written libs in php and s3
[02:10] gwoo: as3
[02:11] gwoo: and the server implementations too
[02:11] gwoo: the as3 one was most written i just needed to implement and fix some bugs
[02:12] davidjrice: ahah cool
[02:12] JoePeck has joined the channel
[02:12] davidjrice: here is the wrong source that was wrong (http://www.jaanuskase.com/en/2010/01/understanding_the_guts_of_twit.html)
[02:13] davidjrice: anyway. Post doesn't appear to change anything
[02:13] gwoo: oh i see, right since he is using the header method you can start with a GET reuqest
[02:14] gwoo: so, i misunderstood what you were saying
[02:16] gwoo: ACTION goes to look at the code
[02:19] kriszyp_ has joined the channel
[02:20] gwoo: davidjrice: are you using something to debug the actual request being made?
[02:20] gwoo: like charles?
[02:20] davidjrice: just debugging and inspecting the request in node
[02:21] davidjrice: I should probably do that
[02:22] gwoo: davidjrice: have you seen http://github.com/danwrong/restler
[02:22] gwoo: ?
[02:24] davidjrice: nope
[02:24] davidjrice: ACTION loos
[02:25] davidjrice: looks good
[02:26] gwoo: yeah it does
[02:27] Yuffster has joined the channel
[02:28] gwoo: davidjrice: im looking at the requestBody
[02:28] gwoo: is that what is going in the header?
[02:29] davidjrice: are you looking at bin/twitter-oauth-http.js ?
[02:30] dnolen has joined the channel
[02:30] gwoo: bin/twitter-oauth.js
[02:30] gwoo: oh darn
[02:31] gwoo: this looks better
[02:33] davidjrice: yeah the twitter-oauth one was me trying to get one of the examples from http://oauth.googlecode.com/svn/code/javascript/ working
[02:34] davidjrice: started writing from scratch with node http client in the other
[02:34] gwoo: much cleaner
[02:35] jed: davidjrice: you're writing a node twitter oauth lib?
[02:35] davidjrice: jed: attempting to!
[02:35] tmpvar has joined the channel
[02:35] jed: davidjrice: nice, i was just about to do the same.
[02:36] jed: davidjrice: do you have something i can follow on github?
[02:36] gwoo: davidjrice: might the proble be you are trying to escape the stringified query
[02:37] davidjrice: jed: still just trying to get step one done. arg! http://github.com/davidjrice/node-twitter-oauth
[02:37] gwoo: hmm no that is correct
[02:37] davidjrice: gwoo: ehm, I'm not sure, I read that that needed to be stringified and percent encoded
[02:37] gwoo: yeah
[02:37] jed: davidjrice: coo, watchers++
[02:38] gwoo: davidjrice: so does the url
[02:38] gwoo: GET&http://twitter.com/oauth/request_token
[02:38] hassox: ryah: ping
[02:38] davidjrice: gwoo: ah okay, just added escaping of the whole thing
[02:38] gwoo: escape('http://twitter.com/oauth/request_token')
[02:39] hassox: ryah: wondering your thoughts on AMQP and how useful it is vs interconnected http clients
[02:39] hassox: well
[02:39] hassox: anyone really
[02:39] Yuffster has joined the channel
[02:40] davidjrice: gwoo: and it still doesn't work!
[02:40] davidjrice: yay, seeing a recurring theme tonight :)
[02:40] gwoo: haha, of course not
[02:40] gwoo: but its closer
[02:40] davidjrice: sometime in 2 hours I will add a period somewhere and everything will work.
[02:41] gwoo: hah
[02:42] davidjrice: gwoo: "Appendix A.2. Obtaining a Request Token" > http://oauth.net/core/1.0/
[02:42] davidjrice: it shows a different way of writing the auth header... add has the params in the url not the header...
[02:43] gwoo: yeah that's the GET style
[02:43] gwoo: and POST would put them in the body like a form
[02:43] tmpvar_ has joined the channel
[02:43] tmpvar has joined the channel
[02:43] tmpvar: yo
[02:43] gwoo: http://tools.ietf.org/html/draft-hammer-oauth-10
[02:44] gwoo: now that got the real deal
[02:46] davidjrice: gwoo: how do I hook up charles to node ?
[02:46] gwoo: probably reverse proxies
[02:47] davidjrice: I was hoping there would be a proxy option in the node http client
[02:48] davidjrice: ACTION has never used charles ...
[02:48] RayMorgan has joined the channel
[02:49] bronson has joined the channel
[02:57] davidjrice: gwoo: http://gist.github.com/302249
[02:57] davidjrice: top is the header I've got it generating...
[02:58] davidjrice: gwoo: sweet, it's actually giving a different error back
[02:58] gwoo: oh nice
[02:58] gwoo: header looks good
[02:58] davidjrice: nRequest header field is missing ':' separator
[02:58] gwoo: what are you gettin now?
[02:58] davidjrice: ^
[02:58] tmpvar: yo
[02:59] tmpvar: woops, sory.
[03:00] gwoo: davidjrice: thats weird
[03:02] davidjrice: gwoo: just added header debugging into that test node
[03:03] gwoo: im checking my lib now against the header method too
[03:03] gwoo: im getting failed token now
[03:04] gwoo: but with the post method it works
[03:04] davidjrice: hmm
[03:04] davidjrice: in the response body it is printing out this "oauth_consumer_key="cV3cvjwaUW6GKoz55nkc8A","
[03:04] davidjrice: possibly as an example of "Your browser sent a request that this server could not understand.
[03:05] davidjrice: Request header field is missing ':' separator"
[03:06] davidjrice: Request header field is missing ':' separator"
[03:06] davidjrice: whoops this is not a terminal :)
[03:07] gwoo: hehe
[03:08] gwoo: is it escaping the values in the header?
[03:10] davidjrice: gwoo: I'm not sure. and not sure how to check
[03:10] gwoo: ok here is something i can verify. i just did a post request that works and has the parameters in the body, those same exact parameters are in the header and twitter is still not happy
[03:10] gwoo: so i can only assume that twitter is parsing the header in way i do not expect
[03:10] Connorhd_ has joined the channel
[03:11] davidjrice: ohh this could be something. the oauth signature is not encoded correctly I think
[03:11] davidjrice: it has / but the example has %26
[03:11] gwoo: oh wait i got it
[03:11] gwoo: sweet
[03:12] gwoo: davidjrice: put a \n after each of the authorization header key/value pairs
[03:12] gwoo: stringified += '' + key + '="' + value + '",\n'
[03:12] gwoo: essentially
[03:13] gwoo: in prepareHeader
[03:13] davidjrice: gwoo: already done that too
[03:13] gwoo: that's what just worked for me
[03:16] davidjrice: oh yeah? it worked?
[03:16] davidjrice: what is the revision you have pulled?
[03:17] davidjrice: I've just a few since potentially as it didn't work
[03:18] gwoo: i was testing with the php lib i write
[03:18] gwoo: wrote
[03:18] davidjrice: ah I see
[03:18] davidjrice: can you gist me what the header is like?
[03:19] gwoo: yeah
[03:19] joshthecoder_ has joined the channel
[03:19] gwoo: http://gist.github.com/302259
[03:20] gwoo: hmm the whitespace after the , should be a \n
[03:20] davidjrice: looks very similiar to mine > http://gist.github.com/302249
[03:20] davidjrice: (mine is the top)
[03:21] gwoo: yeah
[03:22] gwoo: that's what boggles me
[03:22] gwoo: what does your twitter-oauth-http.js look like now?
[03:24] joshthecoder has joined the channel
[03:25] davidjrice: gwoo: all in the repo
[03:25] davidjrice: http://github.com/davidjrice/node-twitter-oauth
[03:25] kriszyp has joined the channel
[03:26] okito has joined the channel
[03:29] vickaita has joined the channel
[03:32] cozby has joined the channel
[03:33] gwoo: davidjrice: got the code, ran, got error, turning on charles
[03:34] gwoo: oh that reminds me
[03:34] gwoo: its the port that is not include in the signature
[03:35] davidjrice: oh cool! & the port?
[03:36] siong1987 has joined the channel
[03:36] gwoo: ok this is better now
[03:37] gwoo: i can see the error in chaz
[03:37] gwoo: Failed to validate oauth signature and token
[03:37] mattly has joined the channel
[03:39] jacobolus has joined the channel
[03:42] davidjrice: oh yeah?
[03:42] pavelz: 400
[03:52] davidjrice: garr, still can't get to the bottom of this
[03:52] gwoo: still doesnt like my signature
[03:52] gwoo: i suspect it has to do with escape()
[03:54] davidjrice: oh the sig is wrong? I didn't realise
[03:54] gwoo: yeah, for me at least
[03:55] binary42 has joined the channel
[03:55] davidjrice: can't get charles working yet! doh. Might write a quick oauth ruby server to debug
[03:55] gbot2 has joined the channel
[03:56] davidjrice: okay, just realised it was 4am
[03:56] gwoo: this is what i did
[03:56] gwoo: twitter = http.createClient(35080, "localhost");
[03:56] gwoo: i set up a reverse proxy for that
[03:56] gwoo: port
[03:56] gwoo: and it points at twitter.com on port 80
[03:56] davidjrice: reverse proxy with ssh ?
[03:56] gwoo: Proxy -> Reverse Proxy
[03:57] gwoo: in chaz
[03:57] gwoo: davidjrice: but im mad at you cause now you got me interested in this problem :P
[03:58] gwoo: and i will be up until its finished now too
[03:58] gwoo: haha
[03:58] gwoo: Failed to validate oauth signature and token
[04:00] davidjrice: oops! sorry
[04:01] davidjrice: thanks a lot for the help though.
[04:01] davidjrice: Okay, so with charles I get a http 401
[04:01] davidjrice: without I get a 400
[04:03] cagdas has joined the channel
[04:09] gwoo: davidjrice: oh good 401 is better than 400
[04:10] davidjrice: ahaha!
[04:10] davidjrice: the javascript url encode does not encode '/' or '+'
[04:10] davidjrice: s-o-a-b
[04:11] inimino: js> encodeURIComponent('/')
[04:11] gbot2: inimino: "%2F"
[04:11] inimino: js> encodeURIComponent('+')
[04:11] gbot2: inimino: "%2B"
[04:13] davidjrice: gwoo: pushed a couple of improvements to the sig
[04:13] davidjrice: still not working!
[04:13] davidjrice: thanks inimino
[04:18] cedricv has joined the channel
[04:20] sztanphet has joined the channel
[04:26] mattly has joined the channel
[04:31] davidjrice: gwoo: get anywhere?
[04:31] davidjrice: I'm not!
[04:31] gwoo: hehe
[04:32] gwoo: im tryin
[04:32] gwoo: im trying to verify that crypto is working proplery
[04:35] davidjrice: ah I see!
[04:35] davidjrice: I may have used the wrong method...
[04:35] davidjrice: but the library I got from the oauth referenced js implementation
[04:36] davidjrice: made a few changes to get it working in node
[04:36] gwoo: hmm
[04:36] davidjrice: nothing major tho
[04:38] gwoo: if i take the base string, keys etc
[04:38] gwoo: and run it through my php lib i get a different signature
[04:39] gwoo: i feel like the base 64 encoding is wrong
[04:49] davidjrice: might be...
[04:49] jacobolus has joined the channel
[04:49] sveisvei has joined the channel
[04:53] scudco has joined the channel
[04:56] bpot has joined the channel
[04:57] davidjrice: gwoo: I added a different base64 function.
[04:58] gwoo: ok
[04:58] davidjrice: still fails
[04:58] davidjrice: turning my attention to sha1
[05:00] ryah: yey. internet finally at my new apartmnent
[05:00] gwoo: nice
[05:05] hassox has joined the channel
[05:06] davidjrice: gwoo: can no longer see properly, I think it's time for bed!
[05:06] gwoo: davidjrice: agreed, this is looking a lot better though
[05:07] davidjrice: pushed more changes to the repo though, start of an abstracted OAuth client in there now
[05:07] gwoo: i think i grabbed those
[05:07] gwoo: oh the client
[05:07] davidjrice: now if only this fucker would work :)
[05:08] gwoo: seriously
[05:11] steadicat has joined the channel
[05:13] davidjrice: gwoo: right, repo cleanup done, sleep times it's 5am!. So thanks again, hope it's not as late for you. I Owe ya one!
[05:13] JimBastard8 has joined the channel
[05:15] mikeal has joined the channel
[05:16] cloudhead has joined the channel
[05:40] ryah: there are 1337 messages in my nginx folder
[05:42] gwoo: select all -> delete
[05:42] gwoo: :)
[05:53] CIA-78: node: 03Felix Geisendörfer 07master * r6c94b8e 10/ (src/node.js test/mjsunit/test-sync-cat.js): Implemented posix.catSync() - http://bit.ly/cRrWi3
[05:53] CIA-78: node: 03Felix Geisendörfer 07master * r211e82e 10/ test/mjsunit/test-module-loading.js :
[05:53] CIA-78: node: Simple test case for require.async()
[05:53] CIA-78: node: This is to make sure this doesn't break after implementing the new
[05:53] CIA-78: node: truly sync require() function. - http://bit.ly/aFff19
[05:53] CIA-78: node: 03Ryan Dahl 07master * rb20c343 10/ src/node.cc : Fix whitespace and warnings in node.cc - http://bit.ly/cL6i0p
[06:15] bentomas has left the channel
[06:39] kennethkalmer has joined the channel
[06:47] dnolen has joined the channel
[07:02] aguynamedben has joined the channel
[07:11] scudco has joined the channel
[07:31] kjeldahl_ has joined the channel
[07:31] qFox has joined the channel
[07:37] kennethkalmer has joined the channel
[07:57] mikeal has joined the channel
[08:11] aguynamedben has joined the channel
[08:19] paulca has joined the channel
[08:30] zmoog has joined the channel
[08:31] brapse has joined the channel
[08:45] CIA-78: node: 03Ryan Dahl 07master * r7d428a7 10/ (doc/index.html src/node.cc): s/tinyclouds.org/nodejs.org/ - http://bit.ly/aoky0S
[08:45] CIA-78: node: 03Ryan Dahl 07master * rbc17d94 10/ (18 files in 4 dirs):
[08:45] CIA-78: node: API: tcp events 'receive' to 'data', 'eof' to 'end'
[08:45] CIA-78: node: No deprecation messages. Not sure how... - http://bit.ly/bMt1gC
[08:45] CIA-78: node: 03Ryan Dahl 07master * r896cef2 10/ (doc/api.txt src/node.js): Add process.startTime - http://bit.ly/aMNMJY
[08:52] paulca has joined the channel
[09:00] teemow has joined the channel
[09:02] CIA-78: node: 03Ryan Dahl 07master * rb82ef28 10/ (18 files in 4 dirs): Rename 'posix' module to 'fs' - http://bit.ly/aaE6ig
[09:03] ryah: yey. broke everything.
[09:03] ryah: time for bed
[09:15] randomekek: hi anybody here who knows readSync?
[09:16] randomekek: for some reason when I read from a file, it gives me the length read as the return, rather than the actual text
[09:22] randomekek: actually, i checked the source again, and it seems like readSync returns the retval of read/pread which is a size_t of the amount read
[09:22] randomekek: is this a bug or a feature?
[09:44] felixge has joined the channel
[09:44] felixge has joined the channel
[09:45] piranha has joined the channel
[09:54] randomekek: after reading the v8 code, it seems like node_file.cc:396 should be a malloc, while node_file.cc:404 should return String::New(buf, ret)
[10:10] tisba has joined the channel
[10:12] markwubben has joined the channel
[10:23] jed has joined the channel
[10:27] spoob has joined the channel
[10:30] gwoo_ has joined the channel
[10:31] ithinkihaveacat has joined the channel
[10:56] ithinkihaveacat has joined the channel
[11:15] randomekek has left the channel
[11:28] mahemoff has joined the channel
[11:36] Connorhd has joined the channel
[11:40] felixge has joined the channel
[11:40] felixge has joined the channel
[12:13] bryanl has joined the channel
[12:24] blackdog_ has joined the channel
[12:31] davidjrice: mornin
[13:19] dgouldin has joined the channel
[13:45] pmuellr has joined the channel
[13:46] kriszyp has joined the channel
[13:48] kjeldahl_ has joined the channel
[13:49] Connorhd_ has joined the channel
[14:03] JoePeck has joined the channel
[14:05] cozby has joined the channel
[14:06] dnolen has joined the channel
[14:11] alex-desktop has joined the channel
[14:14] davidsklar has joined the channel
[14:36] bryanl has joined the channel
[15:01] joshbuddy has joined the channel
[15:03] micheil_mbp has joined the channel
[15:07] atcrabtree has joined the channel
[15:11] Booster has joined the channel
[15:13] pmuellr has joined the channel
[15:23] Yuffster has joined the channel
[15:36] keeto has joined the channel
[15:59] bentomas has joined the channel
[16:06] Connorhd has joined the channel
[16:06] pdelgallego has joined the channel
[16:07] aho has joined the channel
[16:07] richtaur has joined the channel
[16:07] richtaur has left the channel
[16:09] binary42 has joined the channel
[16:24] dnolen has joined the channel
[16:25] tisba has joined the channel
[16:26] creationix has joined the channel
[16:26] JimBastard has joined the channel
[16:27] JimBastard: heh room seems espically big today
[16:27] JimBastard: sup binary42
[16:27] binary42: JimBastard: Heya. How'd the launch go bro?
[16:28] JimBastard: fairly smoothly, it was soft launch so it wasnt that big of a deal
[16:28] JimBastard: dealing with some hoverIntent issues today
[16:29] JimBastard: did you guys tape last night?
[16:30] binary42: Yeah. I didn't handle the camera since I had to MC and present but I'll get the footage up assume it's good.
[16:30] JimBastard: cool cool
[16:30] binary42: I have about 3.5 hours of video to edit this weekend.
[16:30] binary42: (from all the user group stuff I've been doing)
[16:30] JimBastard: we should merge the nyc.js afterparty with our afterparty, shit was pretty offical. got a whole floor at this bar with bottle service
[16:31] binary42: JimBastard: Nice... Well, we did k-town for food rather than drinks.
[16:31] JimBastard: does pop burger count
[16:31] binary42: NYC.js was BYOB anyway so we had drinks during the event.
[16:31] binary42: Ahh... not as good as k-town but that's good.
[16:32] JimBastard: i feel kinda bad chatting in the main room oofa, back to work!
[16:32] JimBastard: goooooooooooo NODE!
[16:33] binary42: ACTION recalls the days in #io ... now that was almost never about Io (the language).
[16:34] sztanpet has joined the channel
[16:34] creationix has left the channel
[16:37] okito has joined the channel
[16:40] pdelgallego has joined the channel
[16:43] pdelgallego has joined the channel
[16:44] jcrosby has joined the channel
[16:50] nsm has joined the channel
[16:51] dgouldin has joined the channel
[16:53] steadicat has joined the channel
[16:53] creationix has joined the channel
[16:54] keeto has joined the channel
[16:55] creationix has joined the channel
[17:01] mahemoff has joined the channel
[17:01] cagdas has joined the channel
[17:03] scudco has joined the channel
[17:08] tlrobinson: heh i saw this tweet from cnnbrk: Endeavors astronauts complete spacewalk, install node on space station http://on.cnn.com/bJRtcK
[17:08] tlrobinson: and momentarily wondered what they were using node for on the ISS
[17:09] nsm: that would be legendary :) perhaps on some moon base some day
[17:10] bpot has joined the channel
[17:14] ryah: i should have choosen a more unique name
[17:15] gwoo: for node?
[17:15] ryah: yeah
[17:15] inimino: ACTION posts to JavaScript reddit "Node installed on International Space Station"
[17:15] gwoo: hehe
[17:15] felixge: inimino: :D
[17:15] gwoo: ryah: nothing stopping you from changing it
[17:16] gwoo: and that would quell the hype a bit ;)
[17:17] ryah: i think renaming the 'posix' module is needlessly disruptive enough :)
[17:19] gwoo: what's the new name?
[17:19] aguynamedben has joined the channel
[17:19] ryah: 'fs'
[17:19] felixge: ryah: yeah, broke all my code :)
[17:19] felixge: but it was an easy fix
[17:19] ryah: also s/receive/data/g and s/eof/end/g
[17:21] isaacs has joined the channel
[17:22] gwoo: davidjrice: did you get oauth sorted?
[17:22] davidjrice: gwoo: nope! not yet
[17:22] davidjrice: (bah)
[17:23] gwoo: davidjrice: i tried a few more things after you left, but still cannot get the signature to match
[17:23] gwoo: im pretty convinced it's hmac though
[17:25] isaacs: is there a good fast hash lib for commonjs?
[17:25] isaacs: or for node?
[17:25] isaacs: doing md5 or sha1 or hmac in JS seems like Doing It Wrong
[17:25] isaacs: should be in C
[17:26] ryah: yeah. we should add bindings.
[17:26] deanlandolt: isaacs: agreed...seems like something commonjs /should/ standardize on
[17:28] isaacs: deanlandolt: agreed, but i think nodejs could just have one, and expect everyone else to copy it.
[17:28] isaacs: or just port it.
[17:28] deanlandolt: exactly
[17:28] deanlandolt: just make it pretty :D
[17:28] deanlandolt: python's hash stuff is nice
[17:28] felixge: I have a good hmac implementation
[17:28] felixge: in pure JS
[17:29] deanlandolt: we need good pure js implementations of all of these
[17:29] felixge: http://jssha.sourceforge.net/
[17:29] deanlandolt: for browsers and fallbacks
[17:29] ryah: we need the buffer type...
[17:29] felixge: works for me
[17:30] JimBastard: whats the downside of doing it in JS isaacs ?
[17:30] JimBastard: is it just speed?
[17:30] JimBastard: or entropy as well?
[17:30] isaacs: ryah: yessssss
[17:30] ryah: net2 just isn't fast enough...
[17:30] felixge: JimBastard: there is no entropy in sha, md5 or hmac
[17:31] isaacs: JimBastard: yeah, speed. this is the classic case of something that needs to just do numeric operations on an array of bytes, and needs to do it as fast as possible.
[17:31] JimBastard: so its just speed? (sorry for the ignorance.....)
[17:31] isaacs: JavaScript is friendly, but not as fast as C for that stuff.
[17:31] davidjrice: gwoo: oh yeah? You think it's fecked?
[17:31] isaacs: and you don't need JavaScript's friendliness.
[17:31] creationix: see my postgres-js for an example of pure-js where speed gets in the way
[17:31] JimBastard: so im sure there are C liberaries for doing this already right?
[17:31] davidjrice: ryah: have you seen node-crypto
[17:31] felixge: it would be nice to have basic crypto stuff in node core
[17:31] davidjrice: I haven't been able to get it working... it requires a compile
[17:32] gwoo: davidjrice: yeah i cannot generate a sig in js that matches the one that ruby/php creates
[17:32] felixge: maybe merge node-crypto
[17:32] JimBastard: would it make sense to bake in the crytpo stuff into core?
[17:32] isaacs: ahh, interesting: http://github.com/waveto/node-crypto
[17:32] isaacs: i had a feeling if i just whined about it long enough, someone would tell me where to find it ^_^
[17:32] davidjrice: isaacs: haha. if you get that working let me know
[17:32] tlrobinson: isaacs: there's one in narwhal too
[17:32] ryah: davidjrice: yes
[17:32] isaacs: tlrobinson: yeah, that's true. but depends on Binary/B or whatever, right?
[17:33] isaacs: (not that that's bad, but it's a blocker, for the time being, at least.)
[17:33] tlrobinson: not sure
[17:33] tlrobinson: it might also do arrays or strings
[17:33] isaacs: yeah, there's a BUNCH of impelemntations in pure javascript
[17:33] gwoo: isaacs: that one looks promising
[17:33] gwoo: davidjrice: did you have a chance to try it/
[17:33] isaacs: but this is something that should probably be in C or something
[17:34] davidjrice: gwoo: I can't get it to work
[17:34] gwoo: ah ok
[17:34] davidjrice: hence I moved on to try and get the official oauth stuff working
[17:34] gwoo: yeah
[17:34] gwoo: btw, twitter plans to have oauth wrap implemented before june
[17:34] davidjrice: but that seems to be loaded with caveats that they couldn't test it because of browser security!
[17:34] gwoo: ha
[17:34] davidjrice: gwoo: cool, I need to get something this week though
[17:35] gwoo: yeah
[17:35] davidjrice: so will crack on.
[17:35] davidjrice: I was thinking of creating a bunch of hmac / sha1 test scenarios and then building test cases for a JS lib on that
[17:35] tlrobinson: isaacs: i think its good to start with a JS version for these sort of things then if you need better performance implement the same API in C or whatever
[17:35] davidjrice: tlrobinson: that's what I was thinking
[17:35] isaacs: tlrobinson: sure, but like, we already have that.
[17:36] isaacs: and just exposing the C api is probably fine.
[17:36] deanlandolt: isaacs: we don't have an agreed-upon hash lib api
[17:36] davidjrice: isaacs: there's a confirmed working js implementation?
[17:36] tlrobinson: isaacs: all i'm saying is if you're going to implement it in C you should use the same API as a JS one
[17:36] isaacs: davidjrice: well, i dunno about "confirmed"
[17:36] isaacs: tlrobinson: i'm agreeing, but in the opposite direction :)
[17:38] davidjrice: heh
[17:38] isaacs: like this: unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, const unsigned char *d, size_t n, unsigned char *md, unsigned int *md_len);
[17:38] isaacs: (from hmac.h)
[17:38] tlrobinson: heh
[17:39] isaacs: it's nice when you can say "It works just like `man hmac` says, but in JS"
[17:40] isaacs: usually you can build something pretty on top of an API that's closer to the metal, but the spec should give you that kind of access.
[17:43] isaacs: yikes, node-crypto does a lot of object...
[17:43] creationix has joined the channel
[17:44] mikeal: isaacs: i started doing some work on npm
[17:44] isaacs: mikeal: orly?
[17:44] isaacs: pushed to gh?
[17:44] mikeal: a little is pushed
[17:44] mikeal: but not much
[17:44] mikeal: i started just adding stuff
[17:45] isaacs: doing command line interface stuff!!!???
[17:45] isaacs: <3<3<3<3
[17:45] mikeal: what i really want/need is a dev mode for packages
[17:45] mikeal: so they will just link to my git checkout
[17:45] creationix has joined the channel
[17:45] mikeal: but one thing that makes it incredibly hard is that you don't know the name of the package until you parse the package.json
[17:46] mikeal: so i started working on an experimental line that doesn't require a package name for install
[17:46] isaacs: mikeal: yeah, so, i'm working on a registry so that you can just say "npm install blahrggg" and it'll look it up.
[17:46] mikeal: and it keeps an internal registry of packages, and some other stuff
[17:47] mikeal: it's not fully working, i'm just trying to make the dev stuff work ATM
[17:47] mikeal: to be sure that I'm not crazy
[17:48] mikeal: by package registry do you mean a web API registry of packages or an internal npm registry of installed packages?
[17:48] isaacs: mikeal: a web registry
[17:48] mikeal: i was thinking about that as well
[17:49] mikeal: with couchdb work that felixge just did it would be trivial to write something up in node + couchdb
[17:49] isaacs: matching doc/registry.md, with just a few slight tweaks.
[17:49] mikeal: it would be nice to have a list of versions
[17:49] isaacs: i'll try to get the deviations into the doc soon.
[17:49] isaacs: yeah
[17:49] felixge: isaacs: you ought to use dirty, node all the way!
[17:50] mikeal: that's one thing I'm doing with my internal npm registry is installing packages by version
[17:50] isaacs: http://github.com/isaacs/npm/blob/master/doc/registry.md
[17:50] felixge: (just kidding, couch is fine with me)
[17:50] mikeal: oh awesome
[17:50] isaacs: i could use dirty, or couch. it's not a lot of data, but the thing is that i'm afraid dirty will be kinda slow.
[17:50] isaacs: but i guess it could probably be enough data that i can just load it all into memory at startup.
[17:50] mikeal: couch is fast
[17:51] isaacs: i mean, it's not a lot of stuff.
[17:51] isaacs: basically just a few urls per package.
[17:51] mikeal: and this is all very cachable and you can use _changes to invalidate cache proactively
[17:51] isaacs: mikeal: yeah, so, couch will definitely scale up better.
[17:51] felixge: isaacs: dirty and slow?
[17:52] felixge: isaacs: dirty is a lot of things, but not slow :)
[17:52] isaacs: as much as it might never happen, i kinda do want to be prepared for the "9000 million nodejs packages zomg!!!111" state.
[17:52] isaacs: felixge: well, i mean, if i have a bajillion packages, then they're too much to hold all in memory
[17:52] isaacs: and waiting on flat file would be not great.
[17:52] felixge: isaacs: I think dirty will be faster than couch while the data set fits the memory. but yes - once that runs out you are screwed
[17:52] felixge: :)
[17:53] ryah: when cna i start writing my jquery-like evented selectors on top of sax-js?
[17:53] isaacs: felixge: hey, did i send you my "seek" patch?
[17:53] mikeal: and you do want a little indexing
[17:53] felixge: either way, I actually support couch for this
[17:53] isaacs: ryah: when you build a dom for it ;P
[17:53] felixge: dirty is low level and only for people who want a low level data store
[17:53] ryah: isaacs: nah, i want to parse a stream of xmpp first :)
[17:53] felixge: isaacs: what seek patch?
[17:53] mikeal: xmpp scares me
[17:53] isaacs: felixge: great, that answers my question :)
[17:53] ryah: connection.match("blah > *", function (tag) {
[17:53] mikeal: i had to deal with it using Twisted a few years ago
[17:54] felixge: isaacs: not sure what you mean with waiting on a flat file, that is only loaded on startup
[17:54] mikeal: it's like 7 handshakes to send a damn message
[17:54] felixge: isaacs: and you should never restart your app once we have hot code reloading
[17:54] felixge: ryah: did you find out anymore about the weird timer thing from last night?
[17:54] isaacs: felixge: i'll get that to you soon. basically, i found it handy to do d.seek(function (doc) { return doc.name = "foo" }) to get the first node that matches
[17:54] felixge: isaacs: ah, cool
[17:54] ryah: felixge: nope. i did merge two of the three patches though
[17:54] isaacs: felixge: and calling seek over and over again goes through the records, keeping track of where you left off.
[17:54] felixge: ryah: yeah, saw that
[17:55] isaacs: ryah: so, srsly, a CSS parser is on my list, but it's lower down the priority than HTML.
[17:55] felixge: ryah: Is there any chance that the sync operations mess with libev's timers?
[17:55] felixge: ACTION brb
[17:55] ryah: felixge: no
[17:55] isaacs: ryah: once you've got the selector syntax, the jquery stuff is pretty simple.
[17:55] ryah: mikeal: yeah, amqp is similarly painful. it's something about message passing that makes people go crazy
[17:56] mikeal: xmpp has more layers than an onion because they are trying to make it a container format for all data on the planet
[17:56] isaacs: mikeal: nah, it's got more layers than an onion because xml is involved.
[17:56] mikeal: and of course, in Twisted land, that means a new Interface for every layer of the onion :(
[17:56] ryah: i am extremely tempted to spend this weekend writing a message queue server
[17:57] isaacs: the "X" is for "eXXXXXtra"
[17:57] ryah: i'd just do it in c
[17:57] ryah: have a simple protocol
[17:57] isaacs: ryah: simple like SMTP?
[17:57] isaacs: the Simple Message Transfer Protocol?
[17:57] ryah: simple like memcached
[17:57] mikeal: Redis would be nice for this
[17:58] mikeal: i <3 Redis sometimes
[17:58] ryah: redis is nice, but that's not exactly it's goal
[17:58] ryah: its
[17:58] ryah: you know these mq people they have crazy benchmarks they want to do like millions per second
[17:58] konobi: ryah: there's always gearman/theschwartz
[17:59] ryah: so how about - prefork server - 1024byte max message
[17:59] ryah: no exchanges, just queues
[17:59] konobi: exchanges are sorta handy... since you have have more than one queue listening to an exchange
[17:59] ryah: either durable or autoDelete queues no other time
[18:00] ryah: s/time/type/
[18:00] isaacs_ has joined the channel
[18:01] ryah: konobi: in amqp they're removing exchanges
[18:01] mahemoff has joined the channel
[18:01] ryah: because the publisher shouldn't need to know the arch of the system
[18:01] konobi: ryah: yeah... i dunno how you'll do fanout then
[18:01] ryah: queue.bind("*")
[18:02] konobi: ryah: so more than one consumer on a queue can take the message?
[18:03] ryah: or in my protocol: "B\u0001*\u0008my-queue"
[18:03] konobi: right now when you publish to an exchange, it sends a copy of the message to each bound queue
[18:04] ryah: more than one consumer on a queue can take a message - yeah that's what i'm still debating about
[18:05] ryah: but not acknowledgements
[18:05] ryah: s/not/no/
[18:05] stephenlb has joined the channel
[18:06] eikke has joined the channel
[18:07] ryah: konobi: yeah, i think a message only goes to one consumer per queue
[18:07] ryah: so you can use a queue to load balance
[18:07] konobi: yup
[18:07] ryah: but if you need multiple people watching for messages, then you make multiple queues
[18:08] konobi: yeah, it's load vs broadcast
[18:08] konobi: both are useful
[18:12] ryah: here's the publish message "P\u0003hey\u0000\u0005hello"
[18:12] ryah: routing key = 'hey' message = 'hello'
[18:13] ryah: so routing key can be up to 255 bytes
[18:13] ryah: 65kb for message
[18:14] ryah: well 64
[18:31] ericflo has joined the channel
[18:31] jimfear has joined the channel
[18:33] brapse has joined the channel
[18:41] CIA-78: node: 03visionmedia 07master * r9c6263b 10/ lib/sys.js : Added multiple arg support for sys.puts(), print(), etc. - http://bit.ly/cSyphv
[18:42] mikeal: awesome
[18:48] felixge: this is nice
[18:49] JimBastard: Connorhd: we should probaly add multiple args support to debug.log()
[18:49] JimBastard: if you haven't already
[19:00] jan____ has joined the channel
[19:03] orlandov: has anyone used the node multipart.js successfully for a non-request object?
[19:03] orlandov: like say either freeform text or a response object from a server
[19:05] jan____ has joined the channel
[19:06] mikeal1 has joined the channel
[19:08] orlandov: also doesn't seem to support multipart/mixed
[19:09] ryah: response object from a server?
[19:09] ryah: like an http response object?
[19:09] orlandov: exactly
[19:10] orlandov: riak, for example, can send you a multipart document if a key is in conflict
[19:10] orlandov: i think may be able to make multipart.Stream work
[19:10] orlandov: having a closer look at the code now
[19:13] geoff_blair has joined the channel
[19:13] geoff_blair has left the channel
[19:16] Connorhd: JimBastard, and just output all arguments?
[19:19] JimBastard: i guess so Connorhd
[19:19] JimBastard: it should probaly work how firebug + debug.js works
[19:19] JimBastard: or like console.log() in firebug
[19:19] JimBastard: maybe each argument could be a seperate output line
[19:19] Connorhd: yeah, I was planning on adding formatted debug.error, debug.info etc like firebug
[19:20] Connorhd: formatted as in a coloured background that is
[19:20] unomi: its an open protocol btw
[19:20] unomi: perhaps you could use it in the same way like firephp
[19:20] sveisvei has joined the channel
[19:20] Connorhd: use firebug?
[19:20] unomi: right
[19:21] Connorhd: yeah, I'm not sure how that would be done in a nice way, other than as part of a framework for node
[19:21] konobi: crossfire?
[19:21] Connorhd: the current node_debug can be easily included in any node script, but integrating with something that output http stuff would be more tricky I think
[19:21] konobi: http://getfirebug.com/developer/api/crossfire0.1/symbols/CrossfireModule.html
[19:22] Connorhd: tbh I hadn't looked into it in too much detail, the current node_debug makes more sense to me and is what I wanted
[19:23] konobi: Connorhd: looked at crossfire... you know... the remote debugging protocol?
[19:23] unomi: yeah, and I was mistaken, I think I mixed up DBGp (which is an open protocol) with how firePHP works
[19:23] Connorhd: konobi, no I hadn't seen that
[19:24] konobi: it allows you to use the firebug debugger with remote services
[19:24] Connorhd: have you used node_debug btw? its currently just a web based console rather than an actually debugger
[19:25] konobi: iirc ryah has been wanting to look into getting debugging in
[19:25] steadicat has joined the channel
[19:25] konobi: ryah: you seen crossfire at all?
[19:28] rtomayko has joined the channel
[19:29] aguynamedben has joined the channel
[19:33] ryah: konobi: no
[19:33] ryah: konobi: what's thsat
[19:33] ryah: oh remote debugger for firebug
[19:37] JimBastard: node_debug is insanely useful IMO
[19:37] JimBastard: at least in the way i program
[19:38] JimBastard: im more a "inspect the object" guy then a "read the docs" guy
[19:38] tmpvar: I'd like to see an actual breakpoint/step based debugger option
[19:38] ryah: but it needs break points
[19:38] JimBastard: yes it does
[19:38] tmpvar: would cut dev time in half
[19:38] ryah: tmpvar: it's coming!
[19:39] tmpvar: wooord
[19:39] ryah: as soon as i get some free time
[19:39] JimBastard: quick
[19:39] tmpvar: using v8's remote debugger protocol?
[19:39] JimBastard: someone send ryah redbull and sandwhiches
[19:39] ryah: tmpvar: yes
[19:39] stephenlb has joined the channel
[19:39] tmpvar: ryah, perfect!
[19:39] tmpvar: maybe I can lend a hand
[19:39] JimBastard: i still haven't kicked up ryah's cut of my node money. i hope the vig isn't too bad
[19:39] ryah: tmpvar: node can already start a v8 debugger server - just do "node --debug myscript.js"
[19:39] tisba_ has joined the channel
[19:40] ryah: tmpvar: there just arn't any clients for it
[19:40] tmpvar: what about that eclipse plugin?
[19:40] tmpvar: (forgets name)
[19:40] ryah: i've heard it's not working
[19:40] tmpvar: hrm..
[19:40] ryah: so maybe there is a bug
[19:40] ryah: (in node)
[19:40] tmpvar: oh, thats right.. something with the initial handshake
[19:41] tmpvar: i *may* be able to take a peek into this
[19:41] tmpvar: convincing, right? haha
[19:41] ryah: please do! i can write you long emails about how the debugger server works in node
[19:41] ryah: well maybe not really long but i can provide support :)
[19:42] tmpvar: awesome, ill put it on the TODO
[19:42] ryah: i really really need a debugger
[19:42] tmpvar: yeah, i'd love one
[19:42] tmpvar: what about something like a remote GDB? (laff)
[19:43] JimBastard: tmpvar: ive started on a good web UI for debugging / node ide if that helps
[19:43] JimBastard: its linked up to the current node_debug now
[19:43] ryah: i would love to use gdb, but i think getting just a simple version with the v8 protocol is a first step
[19:43] ryah: i don't know how gdb's plugin stuff works
[19:43] tmpvar: ah, I saw the screencast for node_debug.. but wasnt completely sold (i r need breakpoints)
[19:43] JimBastard: well yeah, thats what im saying
[19:43] tmpvar: ryah, got ya
[19:44] tmpvar: ryah, i tried porting your coupling code to named pipes under win32. pain.
[19:44] ryah: oh really?
[19:44] ryah: don't they have normal pipes?
[19:45] tmpvar: yeah, ended up wrapping select with a pipe_select() under windows and polling
[19:45] ryah: i made a lot of changes to that recently
[19:45] tmpvar: anon pipes and named pipes.. i can't really get into the details now, but its a pain... a real pain
[19:45] ryah: hm
[19:45] tmpvar: yeah, this was a month or so ago
[19:45] ryah: don't they just have _pipe() or something?
[19:46] tmpvar: nope
[19:46] ryah: so did you put that into the coupling code?
[19:46] tmpvar: CreateNamedPipe()
[19:46] tmpvar: yeah
[19:46] tmpvar: its sort of a hackery, and it never passed the test heh
[19:46] ryah: oh. man, you should send me these patches
[19:47] tmpvar: ill add that to the TODO as well :P
[19:47] tmpvar: the thing i was concerned about is how far up the dep chain those pipe fd's went.. because under windows the only thing you can select() are SOCKETs
[19:47] ryah: i want to get someone to do a windows port for summer-of-code
[19:48] tmpvar: yeah, thats a great idea
[19:48] tmpvar: and definitely a summers worth of coding / debugging
[19:48] ryah: really. you can't select on pipes at all? that's fucked
[19:48] kriszyp has joined the channel
[19:48] tmpvar: yeah, really
[19:48] rictic has joined the channel
[19:48] tmpvar: there are ways to emulate it
[19:49] tmpvar: like i said, i wrote a pipe_select() and basically re-invented select() for pipes lol
[19:49] tmpvar: at which point i cried myself to sleep
[19:49] ryah: hm
[19:50] ryah: that's horrible
[19:50] ryah: really. i'm like physically disgusted right now.
[19:51] ryah: so i guess for workers in windows i'll have to do local tcp connections?
[19:52] ryah: for the IPC
[19:52] jan____ has joined the channel
[19:53] tmpvar: that is a way to handle it
[19:53] tmpvar: possibly not the only way, but it would definitely make it a cleaner implementation
[19:54] inimino: .oO( how much does Windows support really matter? )
[19:54] JimBastard: you'd be surprised
[19:55] jan____ has joined the channel
[19:55] ryah: it matters
[19:55] JimBastard: like i run windows dev machines at home
[19:55] JimBastard: so i cant really dev locally, i have to use a rackspace instance...
[19:55] mikeal: i noticed today that the http client doesn't provide the status message after the code
[19:55] JimBastard: now of course there are solutions
[19:55] JimBastard: but im lazy
[19:56] ryah: well we got to get it ported to cygwin
[19:56] ryah: that shouldn't be bad
[19:56] tmpvar: yeah, that shouldn't be horrible
[19:56] ryah: but i want to compile on mingw
[19:57] tmpvar: yeah, thats what i was doing.. here is the compat layer that i wrote up : http://github.com/tmpvar/node/blob/master/deps/coupling/win32.c
[19:57] JimBastard: windows people tend like binary packages with double click installation processes
[19:57] JimBastard: aka simple as shit
[19:57] tmpvar: same with mac users ;)
[19:57] unomi: don't we all like that :)
[19:58] unomi: I almost had an orgasm when I installed dropbox on my debian desktop
[19:58] JimBastard: tmi
[19:58] ryah: tmpvar: wow.
[19:58] unomi: I *want* you to know ;)
[19:58] inimino: unomi: no, I hate that sort of thing
[19:59] tmpvar: ryah, haha.
[19:59] inimino: unomi: I like things that use the same nice, integrated package management everything else on my system uses, and I consider anything else to be broken
[19:59] mikeal: most system package managers are broken already tho
[20:00] unomi: well, I mean, it was just smooth, compile client, install, run, do you want to integrate with nautilus? why not, clicks yes, 30 secs later it had installed a daemon and I had a dropbox folder I could sync through
[20:00] dgouldin has joined the channel
[20:00] inimino: anyway, bundle a VMWare image or something, and call it done?
[20:00] tmpvar: virtualbox ftw
[20:01] inimino: s/VMWare/virtualbox/
[20:01] inimino: :)
[20:01] unomi: id like to get a xen compliant cpu
[20:01] atcrabtree has joined the channel
[20:04] ryah: if your code isn't portable it isn't very good.
[20:04] unomi: Id agree for just about anything than targetting windows
[20:06] inimino: ryah: portable to reasonable systems (i.e. POSIX), sure
[20:06] tmpvar: if you want exposure to the "corporate" world.. you need windows support
[20:06] mikeal: it needs to work, it doesn't need to be fast
[20:06] inimino: ryah: I wouldn't say not supporting Mac OS 9 is a problem... and for a speed-oriented server, I'm not sure how much Windows really matters
[20:06] tmpvar: take IE6 support for an example
[20:07] mikeal: that's a little different
[20:07] mikeal: your webapp that node.js serves needs to be viewable in IE6
[20:07] inimino: if you can make it easy for people to run it virtualized, that's probably more than enough IMHO
[20:08] inimino: (but if you can get someone to do it as a GSoC project, great!)
[20:08] zimbatm: I have a small question on promises, regarding concurrency
[20:08] zimbatm: (Hi) :-)
[20:08] mikeal: it would be nice to be able to write scripts in node that run on windows
[20:08] unomi: well, its OS.. if microsoft wants to have it on their machines ^^
[20:08] ryah: okay. well running on computers that people use is useful :)
[20:08] mikeal: doesn't have to be blazingly fast, just needs to run
[20:08] zimbatm: given the current implementation, emit is executed on next tick ?
[20:08] ryah: zimbatm: no
[20:09] zimbatm: ryah: net2 or master ?
[20:09] ryah: both
[20:09] inimino: ryah: so what's the speed issue on net2? I was really hoping it'd be faster :(
[20:09] ryah: inimino: donno. haven't had a whole lot of time to look at it.
[20:10] inimino: alright, there's hope then :)
[20:10] zimbatm: ok, then all is good :)
[20:10] ryah: i guess it's just the VM overhead...
[20:10] inimino: ok
[20:10] ryah: which is bad - because that can't be fixed
[20:11] inimino: yeah
[20:12] ryah: so. i don't know.
[20:12] ryah: i think it's worth poking at it for a few more day though
[20:12] ryah: run some more tests
[20:13] ryah: the big question is - what happens if it can't be made faster
[20:13] inimino: yeah, that's a hard one
[20:13] tmpvar: what is the purpose of net2
[20:13] ryah: i guess i'm going to have to backport Buffer onto the old tcp connection
[20:13] ryah: tmpvar: do more in js
[20:13] tmpvar: (coming into this late i guess)
[20:14] tmpvar: ah, yeah .. that seems slower. haha
[20:14] ryah: IoWatcher is exposed - deps/evcom is written in js
[20:14] ryah: yeah, but you'd think it wouldn't be bad
[20:14] creationix: how could I test out the net2 branch to see if there is anything I can do to speed it up?
[20:16] inimino: creationix: it's a git branch
[20:16] ryah: git pull origin net2; ./configure && make && sed "s/require(\"http\")/require(\"http2\")/" > benchmark/http2_simple.js
[20:16] creationix: I know that, I mean what parts are different in net2 over master (http parsing, etc...)
[20:17] creationix: ryah: thanks
[20:18] siong1987 has joined the channel
[20:19] creationix: maybe we could do something like http://numpy.scipy.org/ that handles certain processor intensive tasks (like binary protocol handling) in c code, but lets up do the logic in js
[20:19] creationix: I'll have to dig in to see where it's slowing down to know for sure if that would even help though
[20:20] inimino: can we bind to a specific IP address yet?
[20:20] inimino: ACTION looks at the docs
[20:20] ryah: listen(80, "myip")
[20:20] inimino: ryah: cool, thanks
[20:22] jimfear has joined the channel
[20:22] siong1987 has joined the channel
[20:23] dnolen has joined the channel
[20:23] piranha_ has joined the channel
[20:23] ollie has joined the channel
[20:24] isaacs has joined the channel
[20:33] teemow has joined the channel
[20:34] creationix: ryah: should net2 be working, the benchmark dies on net.js:504 saying that IOWatcher is undefined
[20:35] ryah: creationix: yes
[20:35] ryah: creationix: you're not using the correct node
[20:35] ryah: probably
[20:35] creationix: lol, good point
[20:37] creationix: ok, it's running using build/default/node
[20:43] cloudhead has joined the channel
[20:46] cloudhead: is there a way I can have a constructor return a function, but keep the ability to add things to its prototype?
[20:47] cloudhead: something like `function C() { return function (){} }; C.prototype.foo = 1`
[20:48] cloudhead: then when doing `new C`, it would have `foo` in its prototype chain?
[20:48] tmpvar: i think you'd have to specify the prototype inside of the constructor
[20:49] tmpvar: and name that function
[20:49] cloudhead: hmmm
[20:49] cloudhead: damn
[20:49] cloudhead: I need to be able to specify the prototype after
[20:49] cloudhead: I basically just need a way to extend all functions of a certain type
[20:50] tmpvar: var c = new C();c.prototype.foo = 1; ?
[20:50] cloudhead: or a way to turn an object into a function
[20:50] tmpvar: i mean, you are returning a function def
[20:50] cloudhead: yea but I don't have access to `c`
[20:50] cloudhead: only to `C`
[20:52] cloudhead: what if I set `c`'s prototype to some object, on creation, and modify that object later?
[20:52] cloudhead: could that work?
[20:52] cloudhead: with __proto__
[20:53] cloudhead: aha
[20:53] cloudhead: I think that's working
[20:57] mikeal: isaacs: i'm doing some testing, and JSON.parse() won't parse any of these package.json files
[20:57] isaacs: mikeal: orly?
[20:57] mikeal: i don't think it likes the newlines or something
[20:57] isaacs: hrm, worksforme?
[20:58] isaacs: i'll take a look at it next week. i'm gonna go recover from some food poisoning and a busy day.
[20:58] mikeal: cool
[21:02] tmpvar: 20 minutes for a cheesesteak, are you kidding me?
[21:10] r11t has joined the channel
[21:18] tmpvar has joined the channel
[21:19] cheapRoc has joined the channel
[21:21] atcrabtree has joined the channel
[21:22] dgouldin has joined the channel
[21:30] pmuellr has left the channel
[21:31] sztanphet has joined the channel
[21:34] drostie has joined the channel
[21:37] jchris1 has joined the channel
[21:40] brapse has joined the channel
[21:42] piranha has joined the channel
[21:58] Booster has joined the channel
[22:03] creationix has joined the channel
[22:10] voodootikigod has joined the channel
[22:33] lifo has joined the channel
[22:51] rictic has joined the channel
[22:53] davidjrice: okay, results of testing earlier
[22:53] davidjrice: b64 library for js is good!
[22:53] davidjrice: hmac-sha1 is bad!
[22:54] davidjrice: not giving expected output, guess I need to look around for a correct hmac sha1 implementation
[22:57] r11t has joined the channel
[23:05] r11t has joined the channel
[23:06] r11t has joined the channel
[23:16] egorFiNE has joined the channel
[23:17] egorFiNE: felixge: ping?
[23:18] r11t has joined the channel
[23:24] tisba_ has joined the channel
[23:27] randomekek has joined the channel
[23:28] randomekek: anybody here?
[23:28] davidjrice: randomekek: hey
[23:28] randomekek: hi
[23:28] randomekek: i was just wondering about the addcallback
[23:28] randomekek: how closely after the promise does it get called back?
[23:29] davidjrice: from experience it is near instant
[23:29] randomekek: the problem is i have a array with stuff to do
[23:29] randomekek: and each thing is doen async
[23:29] randomekek: and after it is done, it is removed from that list by a delete operator
[23:30] davidjrice: sure
[23:30] randomekek: if somebody inserts something else into the list
[23:30] randomekek: it might be deleted
[23:30] randomekek: so the action never gets done
[23:30] randomekek: insert A -> finished doing action on A -> insert A again -> delete A
[23:30] randomekek: so you missed the second insert A
[23:31] davidjrice: you should perhaps use an array as a queue
[23:31] davidjrice: and shift / unshift elements
[23:31] randomekek: push to the end and unshift from the front?
[23:31] davidjrice: aye
[23:32] davidjrice: so you have a function to push stuff on the end that is a callback for whatever triggers that
[23:32] randomekek: is unshift fast in arrays? i know push and pop are optimised
[23:32] randomekek: i just don't want to make an entire copy of a new array each time i unshift
[23:33] davidjrice: randomekek: sorry push & shift
[23:34] davidjrice: I believe it should be well optimised by now
[23:34] randomekek: so code like: while(queue.length>0) { dostuff(data).addCallback(queue.shift(1)) }
[23:34] randomekek: but if the dostuff finish at different times its bad
[23:34] randomekek: well if the order gets messed
[23:36] randomekek: maybe this for(i=0; i