[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