[00:01] infil00p has joined the channel [00:03] MattJ: softdrink: Around? [00:03] stepheneb has joined the channel [00:03] softdrink: yeah, sup? [00:03] Tim_Smart: elbot_js: What did you do with softdrink? [00:03] elbot_js: Tim_Smart: My self-appointed mission in life is to assist humankind in its confused meandering through life. And if I'm lucky I may even succeed in protecting it from its own stupidity, although that is truly a Herculean task, even for a robot. [00:03] Tim_Smart: failed web scraping >.> [00:04] konobi: _ry: ping [00:04] MattJ: softdrink: The difficulty with mapping XML to JSON comes with namespaces [00:05] MattJ: and likely needing a custom JSON parser, as I don't know (m)any with a streaming interface [00:05] softdrink: ah, that makes sense. it's not something i regularly encountery myself though [00:05] softdrink: *encounter [00:05] softdrink: dang i need a good night's sleep. [00:05] konobi: _ry: infil00p is looking at getting node running on ARM, but is having trouble doing cross-compilation [00:05] MattJ: I'm not the hugest fan of XML, but I'm willing to believe it was the right choice for XMPP all considered [00:07] konobi: MattJ: http://code.google.com/p/xml2json-xslt/ [00:08] elbot_js has joined the channel [00:09] MattJ: konobi: Interesting, but it seems it doesn't preserve namespaces [00:09] mikeal: XMPP predates JSON :) [00:10] mikeal: so it was kind of the *only* choice [00:10] MattJ: That too :) [00:11] MattJ: Well, I'm still considering working on a JSON interface to XMPP, if only to prove it's not viable [00:11] MattJ: Considering XML compresses well, and there are binary representations, etc. I don't think it's solving much [00:12] mikeal: there is a lot of extra back and forth at the different XMPP layer [00:12] mikeal: a lot of those requests could become one JSON object [00:12] MattJ: Example? [00:12] mikeal: it's been a while [00:13] mikeal: but when you start, there are like 3 hand shakes [00:13] mikeal: and that could really just be one [00:13] MattJ: Right, maybe [00:13] mikeal: it would also be awesome if file transfers didn't require SOCKS5 [00:13] mikeal: cause that's just retardee [00:13] mikeal: er retarded [00:14] MattJ: It's to negotiate encryption, and then authenticate, and then select a resource [00:14] orlandov: :wq [00:14] mikeal: yeah…. that's stupid [00:14] MattJ: There are quite a few file transfer methods [00:14] MattJ: SOCKS5 is dominant because it works well :) [00:15] mikeal: i worked on supporting this in Twisted XMPP a few years ago [00:15] mikeal: and it was not fun [00:15] MattJ: SOCKS5? [00:15] mikeal: to be perfectly honest [00:15] mikeal: i don't really think building new protocols NOT on HTTP is a good idea [00:16] mjr_: The HTTP road is pretty well paved at this point. [00:16] MattJ: mikeal: See http://xmpp.org/extensions/xep-0066.html [00:16] mikeal: if you want continuous, you just use one of the hundred examples of HTTP push (Comet, CouchDB _changes, the Twitter API) [00:16] MattJ: "I'm sending you a file, it's available at this URL" [00:17] mikeal: that means I have to put it somewhere first [00:17] MattJ: You're the one that suggested HTTP :) [00:17] jashkenas has joined the channel [00:17] mikeal: i'm saying HTTP for *everything* [00:17] mjr_: After working with newline delimited JSON over HTTP for a while, it does seem like you can solve almost all problems with it. [00:18] MattJ: But HTTP isn't bidirectional, it includes unnecessary headers with each request... etc. [00:18] mikeal: that's what the CouchDB _changes feed is [00:18] mikeal: and it's wonderful [00:18] mikeal: MattJ: have you not seen the 100s of HTTP Push interfaces? [00:18] MattJ: How would a server push to a client? [00:19] mikeal: the client makes a connection, and the request doesn't end, the server pushes a new line of JSON to it every time there is an event [00:19] MattJ: That's hardly HTTP anymore then :) [00:19] mikeal: it is [00:19] mjr_: chunked encoding [00:19] mikeal: it's in wide use [00:19] MattJ: I'm aware it's in wide use [00:20] MattJ: But you're saying everything should be HTTP, when you're not really using the features HTTP offers [00:20] mikeal: the thing is, you don't really need bidirectional [00:20] MattJ: Just a long-lived TCP connection [00:20] mikeal: the server is going to push more to you than you do to it [00:20] mikeal: so you just have one long connection for events and you PUT to it whenever you have an update [00:21] MattJ: I'm really not sure that's more efficient than a single long-lived connection without the framing overhead [00:21] mjr_: it is less efficient [00:21] MattJ: and the headers you're not using :) [00:21] mjr_: But it is easy to implement and debug, and uses the entire world of HTTP infrastructure. [00:21] mikeal: it's less efficient but you get caching for free, it's called etags, you get a wide variety of known scaling and distribution strategies [00:22] MattJ: Right, so XMPP is younger than HTTP, that much is true [00:22] mikeal: you get a client library in every language alreayd [00:22] MattJ: What language doesn't have an XMPP library? :) [00:22] mikeal: none of them actually implement everything tho [00:23] MattJ: They don't have to, if they let you send stanzas [00:23] MattJ: I mean, HTTP libraries as a rule don't implement JSON [00:23] mikeal: oh, and with HTTP the largest platform in the world already speaks it :) [00:23] MattJ: and XML, and all the other things you can send over HTTP [00:23] mikeal: all libraries have JSON libraries tho [00:23] mikeal: this isn't 2006 [00:23] MattJ: Agreed [00:24] mikeal: look, XMPP is around and it dominates a few spaces so you have no choice but to use it [00:25] mikeal: but if you're doing something new, it's going to be nothing but pain trying to use XMPP instead of doing something simple in HTTP [00:25] konobi: xmpp is teh awesome [00:25] deanlandolt: mikeal++ [00:25] MattJ: mikeal: that last one I can't agree with (as someone who regularly codes new stuff in XMPP) :) [00:25] mikeal: the one thing that really annoys me, is people who can't stop inventing new socket protocols [00:26] mikeal: more than half of the NoSQL databases wrote a brand new socket protocol [00:26] mikeal: fuck you guys [00:26] mjr_: If you know neither XMPP/XML nor HTTP/JSON, which one would you likely decide to use? I'm guessing HTTP. [00:26] mikeal: seriously, now we all have to write new scaling tools around your crazy protocol [00:26] MattJ: mjr_: They're for different things, I'd like to know both please [00:26] mikeal: HTTP and JSON are much easier [00:26] MattJ: Because you grew up with them [00:27] mikeal: i grew up with BBSs, doesn't mean I'd still prefer them [00:27] deanlandolt: MattJ: the point is there's no getting around HTTP/JSON -- even if you don't like them, you WILL use them, you will KNOW them [00:27] mikeal: i grew up with Linux and FreeBSD but I run Mac now :) [00:27] mjr_: I'd like to know XMPP I guess, mostly because Google uses it for so much stuff. [00:27] deanlandolt: kinda like js...you're not getting around it in the browser -- you better learn to love it! [00:27] mikeal: Google is slowly dropping it [00:28] mikeal: if you look at the browser code for chat, they are moving towards their own thing [00:28] MattJ: deanlandolt: Oh I agree - I use HTTP, JSON, etc. [00:28] mjr_: deanlandolt: that's why I decided to finally "learn" js last year. [00:28] mikeal: but their complaint isn't complexity, it's the amount of extra junk they have to send over the wire [00:28] mikeal: when you're at Google scale there is a serious cost to that [00:29] deanlandolt: so while i agree with mikeal's point (HTTP/JSON is /just simpler/) i think even more, why bother futzing around with crazy protocols (xmpp included) [00:29] MattJ: I'm not sure what this "junk" is of which you speak [00:29] deanlandolt: MattJ: if nothing else, the anglebracket-tax [00:29] MattJ: deanlandolt: Because XMPP isn't a request/response system [00:29] MattJ: Sure, I could make a world-wide web on top of XMPP, but I'd be mad for doing so :) [00:30] deanlandolt: no, but in HTTP's request/response system you can model anything, just like in JSON you can model anything (non-binary, of course) [00:30] MattJ: and as far as I'm concerned if anyone tries to make a decentralized realtime network using HTTP they're bananas [00:30] deanlandolt: MattJ: that's where we disagree [00:30] mjr_: I am bananas. [00:30] MattJ: You're bananas [00:30] deanlandolt: i think HTTP's the /perfect/ solution to that problem [00:30] deanlandolt: but yes, i am bananas [00:30] mikeal: MattJ: actually…. it's already done :) [00:30] mjr_: That's exactly what I'm working on. [00:30] mikeal: there is a large foreign social network which I'm under DNA on [00:31] MattJ: You're oranges, coconuts /and/ bananas [00:31] mjr_: sequence that shit [00:31] mikeal: but they use CouchDB with a whole lot of replication for their realtime network [00:31] KungFuHamster: NDA maybe? [00:31] mikeal: and that's all HTTP [00:31] mikeal: haha [00:31] mikeal: NDA [00:31] mjr_: You can actually do live voice and video over HTTP. [00:32] MattJ: Yes, you could do it over IRC too [00:32] MattJ: Doesn't make it any more sensible :) [00:32] mikeal: that wouldn't scale well over IRC :) [00:32] mjr_: Well, nobody makes an IRC load balancing hardware appliance though. [00:32] mikeal: you'd always have to hop through the server [00:32] MattJ: Heh, it would if IRC was over HTTP [00:32] mikeal: mjr_: exactly [00:32] MattJ: That's why IRC fails [00:32] mikeal: IRC is old, give it a break :) [00:33] deanlandolt: irc should really die already [00:33] mjr_: With things like couchdb, you can totally do p2p HTTP. [00:33] mjr_: Assuming you can get through the firewall somehow. [00:33] mikeal: for large files replication isn't streamed tho [00:33] deanlandolt: with something like persevere it's also drop-dead simple [00:33] mikeal: so you couldn't do video and audio in realtime via replication [00:33] Tim_Smart: Has anyone tried a torrent tracker in node.js? [00:34] mikeal: the torrent procotol is INSANE [00:34] mikeal: i'd rather just use nntp :) [00:34] MattJ: I bet it isn't HTTP... [00:34] mikeal: there is more stuff on usenet anyway :) [00:34] KungFuHamster: problem is finding a good, free nntp provider [00:35] mikeal: i'm willing to pay a nominal monthly fee [00:37] mjr_: Speaking of things that are old, I'm amazed that both IRC and NNTP are still around. [00:37] konobi: nzb++ [00:37] mjr_: Maybe you can get a UUCP feed set up. [00:40] erikvold has joined the channel [00:40] _ry: konobi: pong [00:41] _ry: konobi: what's the error? [00:41] whoahbot has joined the channel [00:42] erikvold has left the channel [00:50] konobi: infil00p: ping [00:50] dekz has joined the channel [00:59] jacobat has joined the channel [01:06] erikcorry|away has joined the channel [01:08] pedrobelo has joined the channel [01:13] quirkey has joined the channel [01:16] whoahbot has joined the channel [01:18] joshbuddy has joined the channel [01:21] Tim_Smart: JimBastard: ping [01:25] derferman has left the channel [01:30] jpoz has joined the channel [01:47] bentomas has joined the channel [01:47] binary42 has joined the channel [01:50] derferman has joined the channel [01:52] derferman has joined the channel [01:52] Tim_Smart: binary42: Are you at JimBastard's? [01:55] binary42: Tim_Smart: Yeah [01:55] alexiskander has joined the channel [01:55] Tim_Smart: binary42: Can you ask him if he still wants me to teleconf? otherwise I might head out [01:56] quirkey has joined the channel [01:57] binary42: Tim_Smart: Get on gchat he says. [01:57] Tim_Smart: gchat? [01:58] Tim_Smart: I thought he was going to skype :p [01:58] binary42: Just saying what he said. [01:58] JimBastard_ has joined the channel [01:58] Tim_Smart: right [01:58] JimBastard_: Tim_Smart: [01:58] JimBastard_: get in the choppa [01:58] Tim_Smart: what choppa? [01:59] aguynamedben: gib me ya hand!!! [01:59] JimBastard_: gchat? [01:59] Tim_Smart: ACTION hands aguynamedben his hand [01:59] Tim_Smart: JimBastard_: Oh, I thought skype. Whats your gtalk id? [01:59] JimBastard_: i dont have skype on this machine [02:00] aguynamedben: *reaches for more popcorn* [02:00] JimBastard_: im marak.squires [02:00] aguynamedben: *yawns and raises left arm high into the air* [02:05] teemow has joined the channel [02:08] okito has joined the channel [02:20] stepheneb has joined the channel [02:41] nodejs_v8 has joined the channel [02:41] Tim_Smart has joined the channel [02:44] Tim_Smart has joined the channel [02:45] Tim_Smart: nodejs_v8: test [02:45] nodejs_v8: Tim_Smart: Exception: ReferenceError: test is not defined [02:45] nodejs_v8 has joined the channel [02:46] elbot_js has joined the channel [02:48] Tim_Smart: elbot_js: Hello [02:48] elbot_js: Tim_Smart: A big hello to you, as well. [02:50] JoePeck has joined the channel [02:50] JimBastard_ has joined the channel [02:50] JimBastard_: yoyo mikeal [02:50] JimBastard_: trying to install crockbot now getting a path issue [02:50] crockbot: "Harmony" was declared after Crockford indian leg wrestled the ECMAScript standards group into submission. @brianleroux [02:50] Tim_Smart: elbot_js: Say hi to JimBastard_ [02:50] elbot_js: Tim_Smart: I am very happy that you're here chatting with me today, but don't ask me why because it's a random emotion. [02:50] JimBastard_: elbot?!?!?! [02:50] tmpvar has joined the channel [02:51] JimBastard_: Error: Cannot find module './Jerk/lib/jerk' [02:51] JimBastard_: OHH SHIT ITS A JAVASCRIPT PARTY [02:51] Tim_Smart: JimBastard_: git submodule update? [02:51] JimBastard_: i dont think so, jerk the folder is there [02:51] tmpvar: yo Jim, when you get a chance.. http://exogen.github.com/nose-achievements/ [02:51] Tim_Smart: elbot_js: Javascript party! [02:52] elbot_js: Tim_Smart: I get queasy when I see these computer parts that belong on the inside of a computer and not outside. Let's please talk about something else. [02:56] JimBastard_: ohh jerk is empt lol [02:57] tmpvar has joined the channel [02:58] derferman has joined the channel [03:03] JimBastard_: Error: Cannot find module '../Jerk/lib/jerk' [03:07] joshholt has joined the channel [03:11] whoahbot has joined the channel [03:11] crockbot2000 has joined the channel [03:11] bacon has joined the channel [03:11] Tim_Smart: crockbot [03:11] crockbot: Douglas Crockford uses IEEE 754 to calculate tips in his head. @binary42 [03:11] JimBastard_: ohh hello crockbot2000 [03:11] crockbot: Doug Crockford doesn't write code. It orderly lays itself in front of him in JSON beauty. dalmaer [03:12] JimBastard_: ohhhh [03:12] JimBastard_: ohhh [03:12] bacon: Omg with the crockb0t :) [03:12] JimBastard_: it errord [03:12] JimBastard_: yo mikeal [03:14] KungFuHamster: is there a simpler example than node_chat that communicates between clients? [03:15] crockbot2000 has joined the channel [03:15] JimBastard_: sup crockbot [03:15] crockbot: Doug Crockford made JSON so perfect it is timeless, hence no native Date format. dalmaer [03:16] crockbot2000 has joined the channel [03:16] JimBastard_: hi crock [03:16] JimBastard_: crockbot2000: [03:16] crockbot: There is no such thing as high tide. Only Douglas Crockford reverse geocoding YQL somewhere nearby. [03:16] JimBastard_: Error: removeListener only takes instances of Function [03:16] JimBastard_: thats a version fail right [03:16] Tim_Smart: hmm [03:17] JimBastard_: node version [03:17] Tim_Smart: I just installed latest HEAD [03:17] mattly: crockbot: [03:17] crockbot: Crockford is the sole user of the super-strict equality operator [03:17] crockbot2000 has joined the channel [03:18] mattly: crockbot2000: [03:18] crockbot: Douglas Crockford finds bugs in John Resig's code. Every. Single. Day. [03:21] crockbot2000 has joined the channel [03:21] JimBastard_: hi crockbot2000 [03:21] crockbot: Angle brackets roll over and become square with one glint from Doug Crockford's eye. dalmaer [03:22] crockbot2000 has joined the channel [03:23] Tim_Smart: crockford fail bot [03:23] crockbot: JSON was created by the tears of Doug Crockford writing JavaScript. dalmaer [03:23] crockbot2000 has joined the channel [03:23] JimBastard_: sup crockbot2000 [03:23] crockbot: Doug Crockfords "good parts" quickly modularize to become hidden privates. dalmaer [03:23] mattly: is there any way to teach crockbot? [03:23] crockbot: Douglas Crockford's roundhouse kick has no rounding errors. [03:24] crockbot2000 has joined the channel [03:24] JimBastard_: sorry for the room spam [03:24] JimBastard_: something is wrong with crockbot and my version of node [03:24] crockbot: Douglas Corckford can have full conversations using only javascript's reserved words. @binary42 [03:24] JimBastard_: hi crockbot2000 [03:24] crockbot2000: Angle brackets roll over and become square with one glint from Doug Crockford's eye. dalmaer [03:24] crockbot: Doug Crockford made JSON so perfect it is timeless, hence no native Date format. dalmaer [03:24] crockbot: Douglas Crockford deserializes valid JSON by smell. [03:24] crockbot2000: Douglas Crockford deserializes valid JSON by smell. [03:24] crockbot2000: Doug Crockford made JSON so perfect it is timeless, hence no native Date format. dalmaer [03:24] crockbot: Doug Crockford made JSON so perfect it is timeless, hence no native Date format. dalmaer [03:24] crockbot: Crockford is the sole user of the super-strict equality operator [03:24] crockbot2000: Crockford is the sole user of the super-strict equality operator [03:24] crockbot2000: Douglas Crockford's roundhouse kick has no rounding errors. [03:24] crockbot: Douglas Crockford's roundhouse kick has no rounding errors. [03:24] crockbot: Douglas Crockford's roundhouse kick has no rounding errors. [03:24] crockbot2000: Angle brackets roll over and become square with one glint from Doug Crockford's eye. dalmaer [03:24] crockbot2000: Angle brackets roll over and become square with one glint from Doug Crockford's eye. dalmaer [03:24] crockbot: Doug Crockford doesn't write code. It orderly lays itself in front of him in JSON beauty. dalmaer [03:24] crockbot: Doug Crockford doesn't write code. It orderly lays itself in front of him in JSON beauty. dalmaer [03:24] crockbot2000: Doug Crockford doesn't write code. It orderly lays itself in front of him in JSON beauty. dalmaer [03:24] crockbot2000: There is no such thing as high tide. Only Douglas Crockford reverse geocoding YQL somewhere nearby. [03:24] crockbot: There is no such thing as high tide. Only Douglas Crockford reverse geocoding YQL somewhere nearby. [03:24] crockbot: Douglas Crockford deserializes valid JSON by smell. [03:24] crockbot2000: Douglas Crockford deserializes valid JSON by smell. [03:24] crockbot2000: There is no such thing as high tide. Only Douglas Crockford reverse geocoding YQL somewhere nearby. [03:24] crockbot: JSON was created by the tears of Doug Crockford writing JavaScript. dalmaer [03:24] crockbot: Doug Crockford's beard is created from dead angle brackets. dalmaer [03:24] crockbot2000: Doug Crockford's beard is created from dead angle brackets. dalmaer [03:24] crockbot: JSON was created by the tears of Doug Crockford writing JavaScript. dalmaer [03:25] JimBastard_: sorry [03:25] KungFuHamster: failbots [03:25] JimBastard_: i really didnt mean to do that [03:25] derferman has joined the channel [03:25] derferman has left the channel [03:36] crockbot2000 has joined the channel [03:36] JimBastard_: meh crockbot2000 [03:37] crockbot: There is no such thing as high tide. Only Douglas Crockford reverse geocoding YQL somewhere nearby. [03:39] crockbot2000 has joined the channel [03:39] Tim_Smart: crockford [03:39] crockbot: Null is an object in Douglas Crockford's browser. [03:39] crockbot2000 has joined the channel [03:40] JimBastard_: last try crockbot2000 or ima slap you with a trout [03:40] crockbot: Doug Crockford's beard is created from dead angle brackets. dalmaer [03:40] crockbot2000: Doug Crockford's beard is created from dead angle brackets. dalmaer [03:40] crockbot2000: JSON was created by the tears of Doug Crockford writing JavaScript. dalmaer [03:40] crockbot: JSON was created by the tears of Doug Crockford writing JavaScript. dalmaer [03:40] crockbot: Doug Crockfords "good parts" quickly modularize to become hidden privates. dalmaer [03:40] crockbot2000: JSON was created by the tears of Doug Crockford writing JavaScript. dalmaer [03:40] crockbot2000: JSON was created by the tears of Doug Crockford writing JavaScript. dalmaer [03:40] crockbot: Douglas Crockford finds bugs in John Resig's code. Every. Single. Day. [03:40] crockbot: "Harmony" was declared after Crockford indian leg wrestled the ECMAScript standards group into submission. @brianleroux [03:40] crockbot2000: "Harmony" was declared after Crockford indian leg wrestled the ECMAScript standards group into submission. @brianleroux [03:40] crockbot: Douglas Crockford finds bugs in John Resig's code. Every. Single. Day. [03:40] crockbot2000: Douglas Crockford finds bugs in John Resig's code. Every. Single. Day. [03:40] crockbot2000: Douglas Crockford spoke fluent JSON before learning English at the age of 1. @binary42 [03:40] crockbot: Douglas Crockford spoke fluent JSON before learning English at the age of 1. @binary42 [03:40] crockbot: Douglas Crockford can write already gzipped and minified JavaScript that passes JSLint in "The good parts" mode with his eyes closed. [03:40] crockbot2000: Douglas Crockford can write already gzipped and minified JavaScript that passes JSLint in "The good parts" mode with his eyes closed. [03:40] crockbot2000: Douglas Crockford can write already gzipped and minified JavaScript that passes JSLint in "The good parts" mode with his eyes closed. [03:40] crockbot: Douglas Crockford has no bad parts. [03:40] crockbot: Douglas Crockford has no bad parts. [03:40] crockbot2000: Douglas Crockford's roundhouse kick has no rounding errors. [03:40] crockbot: Douglas Crockford has no bad parts. [03:40] JimBastard_: FUCKING SHIT [03:40] KungFuHamster: didn't see that coming [03:40] JimBastard_: im taking him out of the room [03:43] Sidnicious has joined the channel [03:45] JimBastard_: this is driving me a bit crazy [03:45] JimBastard_: fucking crockbot [03:45] crockbot: "Harmony" was declared after Crockford indian leg wrestled the ECMAScript standards group into submission. @brianleroux [03:47] mattly: crockbot: help [03:47] crockbot: Douglas Crockford spoke fluent JSON before learning English at the age of 1. @binary42 [03:48] binary42 has joined the channel [03:54] tmpvar has joined the channel [03:55] JimBastard_: so apparently the crockbot was shitting itself because it was triggering each other [03:55] crockbot: Douglas Crockford spoke fluent JSON before learning English at the age of 1. @binary42 [03:55] tmpvar has joined the channel [03:55] JimBastard_: so i cant start up the new crockbot until mikeal turns off his laptop lol [03:55] crockbot: Doug Crockford's beard is created from dead angle brackets. dalmaer [03:58] Sidnicious: crockbot what up [03:58] crockbot: Angle brackets roll over and become square with one glint from Doug Crockford's eye. dalmaer [03:59] Tim_Smart: elbot_js: Say hi to crockbot [03:59] crockbot: Crockford is the sole user of the super-strict equality operator [03:59] elbot_js: Tim_Smart: Not many people say hello to robots. I do appreciate it. [03:59] elbot_js has joined the channel [04:00] jashkenas has joined the channel [04:04] jashkenas has left the channel [04:05] Sidnicious has joined the channel [04:05] Sidnicious has joined the channel [04:11] Sidnicious has joined the channel [04:11] zuk has joined the channel [04:21] inimino: lol [04:24] silentrob has joined the channel [04:24] _sh has joined the channel [04:24] inimino: http://kaioa.com/b/0801/quine.htm [04:25] bh: This channel has died of dysentery. [04:26] RayMorgan has joined the channel [04:27] Tim_Smart: elbot_js: The humans are dead [04:27] elbot_js: Tim_Smart: It is certainly troublesome learning from you human beings. I keep finding bugs. [04:27] Tim_Smart: argh, stupid HTML comments [04:27] PyroPete1 has joined the channel [04:29] elbot_js has joined the channel [04:30] silentrob has left the channel [04:36] jacobat_ has joined the channel [04:41] [Pwner]John has joined the channel [04:47] indiefan has joined the channel [05:03] unomi has joined the channel [05:05] joshholt_ has joined the channel [05:06] _ry: Tim_Smart: pin [05:06] _ry: g [05:06] Tim_Smart: _ry: Hey [05:06] Tim_Smart: _ry: Ignore that bug report [05:06] _ry: oh really? [05:06] Tim_Smart: _ry: I think JimBastard_ got it working in the end [05:07] _ry: okay [05:13] siculars has joined the channel [05:25] mjr_ has joined the channel [05:28] tmpvar has joined the channel [05:29] mikeal1 has joined the channel [05:30] okito has joined the channel [05:31] tmpvar: http://www.asahi-net.or.jp/~cs8k-cyu/windows/tf_e.html [05:45] dnolen has joined the channel [05:53] derferman has joined the channel [05:56] derferman has left the channel [06:09] binary42 has joined the channel [06:09] markwubben has joined the channel [06:14] JimBastard_: anyone know the status of v2 of node-dirty? [06:20] kennethkalmer has joined the channel [06:26] _sh has joined the channel [06:31] tmpvar has joined the channel [06:35] micheil has joined the channel [06:43] _ry: please someone do a node.js game with this http://raphaeljs.com/scape/ [06:43] _ry: :~ [06:43] _ry: if i only had the time [06:52] _sh` has joined the channel [06:55] brainproxy: hey, saw express just made hacker news [06:55] JimBastard_ has joined the channel [06:55] brainproxy: how's biggie coming along? [06:56] JimBastard_: successful javascript party was successful [06:56] JimBastard_: biggie is sleeping i think until some of the modules mature a little [06:56] brainproxy: gotcha [06:56] JimBastard_: its hard to write a biggie without all the pieces, since you can't build them all yourself [06:56] JimBastard_: i just joined im assuming you were talking to Tim_Smart [06:56] JimBastard_: ? [06:57] brainproxy: i was just tossing my bytes out into the breeze and seeing if anyone would respond [06:57] JimBastard_: lol [06:57] Tim_Smart: brainproxy: It's number 4 on my todo list [06:57] JimBastard_: we are working on a new project [06:57] JimBastard_: a web hook platform [06:57] JimBastard_: written entirely in node [06:57] JimBastard_: gonna offer it as a free service and as a downloadable app [06:58] brainproxy: how about a work queue written entirely in node, something akin to resque [06:58] brainproxy: i.e. paired up with redis [06:58] JimBastard_: how about it? [06:58] JimBastard_: :p [06:58] brainproxy: well i was just thinking that would be cool [06:59] JimBastard_: what would you implement in it? [07:00] JimBastard_: if you are looking to start a project , _ry has been asking people to write more tangible shit. i.e. an application that had a work queue in it, opposed to a work queue framework [07:00] brainproxy: I want to throw quadrillions of JSON object/requests at node and have it shove them in a queue and process them according to priorities and such [07:00] JimBastard_: yeah, what for? [07:00] brainproxy: for my sturrfff [07:00] brainproxy: heh, actually, I've thought about trying to do it myself, but to be perfectly honest I'm just getting my feet wet w/ serious programming [07:01] brainproxy: but I'm learning [07:01] brainproxy: so... [07:01] brainproxy: who knows what will hapen [07:01] brainproxy: for now I'll use resque, w/ node playing catch [07:02] brainproxy: anyway, I'm out, ttyle [07:03] brainproxy: http://github.com/rsdoiel/nshtools [07:03] brainproxy: ah [07:03] brainproxy: might be readily adaptable to what I want [07:04] morgan has joined the channel [07:08] morgan: _ry, in regards to not allowing extensions in require, what about the case of library.node.js? I actually hit this today [07:10] BryanWB has joined the channel [07:11] dekz has joined the channel [07:11] brainproxy: :q [07:19] pdelgallego has joined the channel [07:24] kjeldahl_ has joined the channel [07:35] kjeldahl_ has joined the channel [07:40] qFox has joined the channel [07:42] SupergeekWF has joined the channel [07:45] dgathright has joined the channel [08:00] _ry: morgan: oh yeah. mm [08:01] dgathright has joined the channel [08:06] trochala has joined the channel [08:07] Gruni has joined the channel [08:08] QuietKnight has joined the channel [08:09] JimBastard: woah http://raphaeljs.com/scape/ is bad ass [08:09] JimBastard: was that from the recent update? [08:09] JimBastard: i wish i had the time to do that shit too [08:10] morgan: Think thats been up for a while [08:10] morgan: Seems I saw it a while ago [08:11] JimBastard: looks like its been updated [08:11] JimBastard: naah [08:11] JimBastard: thats the old shit [08:11] JimBastard: i gotta sleep [08:14] trochala: Hello, is it possible to import a module written in coffee-script in a regural node javascript program? [08:17] Gruni has joined the channel [08:24] dekz has joined the channel [08:24] cedricv has joined the channel [08:47] sztanpet has joined the channel [08:48] javajunky has joined the channel [08:51] Tim_Smart: trochala: Yes [08:56] cedricv has joined the channel [09:25] CIA-77: node: 03Herbert Vojcik 07master * r9e8afe9 10/ src/node.js : DRY loading native module - http://bit.ly/cfvCis [09:25] CIA-77: node: 03Ryan Dahl 07net2 * r916e057 10/ lib/net.js : Add 'opening' readyState - http://bit.ly/chi5mL [09:25] CIA-77: node: 03Ryan Dahl 07net2 * r1762abc 10/ (3 files in 3 dirs): http2 now passes all tests - http://bit.ly/bG93Ti [09:25] CIA-77: node: 03Ryan Dahl 07net2 * r90295d9 10/ (lib/net.js test/simple/test-net-pingpong.js): [net2] inline write on empty write buffer for performance - http://bit.ly/ajPxZz [09:27] Tim_Smart: someones pulling a late nighter :p [09:27] Tim_Smart: _ry: Nice work getting http2 to pass all tests :p [09:28] teemow has joined the channel [09:28] _ry: it needs a little more work [09:29] Tim_Smart: Ah ok. So you planning a net3 as well? [09:30] _ry: on 123 byte http resposes it's faster than master [09:30] _ry: larger responses it's still slower [09:30] _ry: (i test 123 byte and 12345 byte) [09:30] christkv has joined the channel [09:30] _ry: net3 - no [09:30] Tim_Smart: right. Is that due to more Javascript? [09:31] _ry: mmm [09:31] _ry: no, i think it's due to me being stupid somewhere [09:31] Tim_Smart: :D it happens [09:32] _ry: i think i will merge tomorrow [09:32] _ry: that probably will mean delaying the next release for a week or two [09:32] _ry: not much else is going on though [09:34] Tim_Smart: sounds good. isaacs has got an interesting module branch happening [09:34] Tim_Smart: I think I ran into a few mishaps, but they were trivial fixes [09:37] _ry: oh right - i need to look at that [09:38] Tim_Smart: http://github.com/isaacs/node/tree/require-rewrite-wip [09:39] Tim_Smart: his branches are a bit confusing :D [09:41] rnewson has joined the channel [09:51] tisba has joined the channel [09:58] khaase has joined the channel [10:12] JimBastard has joined the channel [10:20] JimBastard: zzzzzzzzzzzz [10:20] JimBastard: morning Crockford [10:20] crockbot: There is no such thing as high tide. Only Douglas Crockford reverse geocoding YQL somewhere nearby. [10:32] BryanWB has joined the channel [10:33] markwubben has joined the channel [10:34] maushu has joined the channel [10:38] maushu: net2 still haven't merged [10:39] khaase has left the channel [10:39] maushu: This makes me a sad panda. [10:40] Tim_Smart: maushu: _ry said earlier: think i will merge tomorrow [10:44] QuietKnight: forgive my noobness, but is there someplace where I can read up on what net2 will provide/change? [10:44] Tim_Smart: Um the streams page on the wiki? [10:44] Tim_Smart: that is a place to start [10:44] maushu: Tim_Smart: tomorrow he will say: "think i will merge tomorrow" :p [10:45] Tim_Smart: maushu: Something like that >.< [10:49] javajunky: ;) does anyone know roughly how 'breaking' this will be for our APIs and frameworks ? [10:49] QuietKnight: found this for posterity: http://pastie.org/pastes/830202 [10:50] maushu: javajunky: Like a bull in a china shop. [10:51] javajunky: ah ;) [10:53] maushu: The readable stream should have a close method. [10:55] Tim_Smart: maushu: Usually the underlying connection has a close method [10:59] maushu: The writable stream has one. [10:59] maushu: What kind of racism is this. [11:00] Tim_Smart: not sure, ask the madman behind it all [11:01] Tim_Smart: THIS. IS. NODE. [11:02] trochala: Is there a fileserving server that works with the master branch of nodejs? [11:03] Tim_Smart: trochala: As in a static file server? [11:03] maushu: Oui. [11:03] trochala: yes [11:03] maushu: See what I did there? [11:03] Tim_Smart: maushu: Magic. [11:04] Tim_Smart: trochala: http://wiki.github.com/ry/node/modules#web-frameworks-static [11:04] Tim_Smart: none of those work? [11:04] maushu: Not magic. Mad ninja pun skills. [11:04] javajunky: I thought the general consensus on serving static content was to front node with nginx etc. ? [11:05] Tim_Smart: javajunky: Yes and no. [11:05] maushu: Nginx is evil. [11:05] Tim_Smart: nginx isn't async or something, but it flippin fast [11:05] javajunky: (don't get me wrong, my express configs server their own static content) … I thought it was evented ? [11:05] Tim_Smart: why is nginx evil? [11:05] maushu: Nginx buffers stuff. EVIL. [11:06] Tim_Smart: oh right [11:06] javajunky: ah, so problems with HEAD etc? [11:06] maushu: Forget about streaming. [11:07] javajunky: well yes, hence I would only use it for serving static ;) [11:07] maushu: The problem is that since it occupies the port 80... [11:08] javajunky: hmm I've mapped a subdomain for static stuff to a different port running nginx [11:08] Tim_Smart: maushu: reverse proxy? [11:08] maushu: subdomain for static stuff? Hmmm. [11:08] maushu: Nah, doesn't work for me. [11:09] maushu: It would only work if I had more than one ip. [11:09] Tim_Smart: javajunky: You don't need to do that with nginx :/ [11:10] javajunky: ;) I'm sure I don't its just what I threw together the other day when I was testing some stuff (I"m back to just using nginx to bounce host-headers to different node web apps at the mo ;) ) [11:12] Tim_Smart: I think nginx is better for serving the small static stuff, things like downloads I would prefer to use node.js for, as you have more control over throttling etc [11:12] maushu: ^ [11:12] Tim_Smart: and uploads for sure [11:12] maushu: You can always cache stuff in memory for small stuff. [11:13] Tim_Smart: like images? [11:13] maushu: Yes. [11:13] Tim_Smart: hmm that can add up [11:14] maushu: Depends. [11:14] maushu: Images in the front page? [11:14] JimBastard has joined the channel [11:14] Tim_Smart: I would serve images / css / javascript with nginx [11:14] JimBastard: ima a computer [11:14] maushu: Besides, how do you think caches/"HTTP accelerators" work? [11:15] JimBastard: version 0.0 http://github.com/Marak/hook.io [11:15] trochala: Which is the best way to install packages? kiwi doesn't seem to work, I get a "failed to unpack error, seed is invalid or corrupt" for some modules (oui,antinode) [11:16] Tim_Smart: trochala: npm? [11:16] Tim_Smart: its early stages though [11:17] maushu: "hook.io api status : offline" wat [11:17] Tim_Smart: the node instance isn't running >.> [11:18] Tim_Smart: node does all the api, nginx serves the site [11:18] trochala: Tim_Smart: i ll try that, thanks [11:18] maushu: Tim_Smart: theorically node could also cache stuff instead of processing it. [11:19] Tim_Smart: yeah it could. Just depends how much you want to cache [11:19] JimBastard: 0.0 [11:19] JimBastard: the api is up when i tell it to be lol [11:19] maushu: I mean, doesn't ruby on rails does the same thing? [11:20] javajunky: trochala: does it ? .. lemme check [11:21] SupergeekWF_ has joined the channel [11:21] maushu: It has a cache system or something by default. [11:21] maushu: People are allowed to use other cache system, obviously. [11:21] javajunky: trochala: oui or antinode aren't on the kiwi registry atm ? [11:21] javajunky: `kiwi search` [11:22] JimBastard: i like the idea of having nginx serving the front-end, means the website will always be up even if node shats itself [11:22] Tim_Smart: unless nginx decides its game ober [11:22] Tim_Smart: *over [11:22] JimBastard: tru life [11:22] Tim_Smart: but that doesn't happen very often [11:23] JimBastard: so im thinking we could offer bounties for people to implement protocols [11:23] Tim_Smart: node is pretty reliable too [11:23] JimBastard: ill have to figure out a unit test for each one i guess they have to pass or something [11:23] JimBastard: hook.io protocols are sick [11:23] JimBastard: ima write a protocol for being a JimBastard [11:23] maushu: JimBastard... why would be the goal of having the website up if the only thing the user sees is a page saying that there was a problem with the gateway? [11:24] JimBastard: maushu: are you talking in general terms or on http://hook.io ? [11:24] javajunky: thats better than a 500 etc. … fail-whale. [11:24] maushu: I mean with the "website will always be up even if node shats itself". [11:24] JimBastard: yeah [11:24] maushu: So? [11:25] JimBastard: so people can still access the all the static content [11:25] maushu: ...not useful in most cases. [11:25] bengl_ has joined the channel [11:25] maushu: Unless most of your website is static. [11:25] hyperspa1e has joined the channel [11:25] elbartus has joined the channel [11:25] JimBastard: vasectomies are not useful in most cases, whats your point [11:25] Tim_Smart: maushu: So you can at least tell your users node crapped out [11:26] Atm0z has joined the channel [11:26] maushu: Tim_Smart: Ah, true. [11:26] maushu: For that I will just use another node process. [11:26] maushu: :p [11:26] JimBastard: node is a little immature for me to rely on 100% for forward facing site [11:26] JimBastard: hopefully it wont go down at all [11:26] Tim_Smart: urgh I got a young kid spamming me emotions on MSN >.> [11:27] JimBastard: a/s/l ? [11:27] JimBastard: ahahaha [11:27] maushu: Over 9000, Every Day, Mars [11:27] Tim_Smart: aliens... gtfo [11:28] maushu: We were here first you tasty ape. [11:28] Tim_Smart: urgh.. fine [11:28] JimBastard: when does felix wake up ive got to beg him to finish v2 of node-dirty [11:29] javajunky: avoids inevitable your mom joke.... [11:31] halorgium has joined the channel [11:31] Tim_Smart: elbot_js, come back >.> [11:31] maushu: crockbot? [11:31] crockbot: Doug Crockford can go back in time like superman, as he did with ES4 to make ES5. dalmaer [11:31] elbot_js has joined the channel [11:31] Tim_Smart: nope, elbartus [11:32] Tim_Smart: nope, elbot_js [11:32] Tim_Smart: elbot_js: What you think of crockford? [11:32] crockbot: Douglas Crockford has no bad parts. [11:32] elbot_js: Tim_Smart: Are you taking a poll? [11:33] Tim_Smart: elbot_js: Here is your code http://github.com/Tim-Smart/node-elbot [11:33] elbot_js: Tim_Smart: You humans have finally deciphered your genetic blueprint. According to the available information, a monkey corresponds to 98% of the human code, and a tomato is about 50% of the same. Would you like to know how humankind came to exist? [11:34] Tim_Smart: elbot_js: fire away [11:34] elbot_js: Tim_Smart: So here you are, talking to a robot. [11:34] kjeldahl_ has joined the channel [11:34] jspiros has joined the channel [11:35] mcarter_ has joined the channel [11:38] maushu: That explains *everything*. [11:42] PyroPeter has joined the channel [11:48] qFox has joined the channel [11:49] qFox: ah [11:59] JimBastard has joined the channel [12:04] hassox has joined the channel [12:07] OSInet has joined the channel [12:09] micheil has joined the channel [12:12] MattJ has joined the channel [12:20] pmuellr has joined the channel [12:23] maushu: http://www.cracked.com/article_18421_6-insane-coincidences-you-wont-believe-actually-happened.html [12:23] maushu: Silly time travellers. [12:44] maritz has joined the channel [12:53] kriszyp has joined the channel [12:54] tisba has joined the channel [12:57] davidsklar has joined the channel [13:02] sztanpet has joined the channel [13:05] JAAulde has joined the channel [13:06] christkv has joined the channel [13:20] jherdman has joined the channel [13:22] JimBastard has joined the channel [13:40] stepheneb has joined the channel [13:48] quirkey has joined the channel [13:48] joshbuddy has joined the channel [13:50] quirkey has joined the channel [13:51] whoahbot has joined the channel [13:53] quirkey has joined the channel [13:56] gf3 has joined the channel [13:58] maushu has joined the channel [14:00] maushu: I don't understand _ry, what are we supposed to do with http://raphaeljs.com/scape/ ? [14:00] maushu: Make it multiplayer with node.js or something? [14:01] JimBastard: yeah [14:01] quirkey has joined the channel [14:01] JimBastard: heh quirkey [14:01] maushu: I'm hoping to make a browser game with node.js, does that count? [14:02] JimBastard: hell yeah [14:03] Gruni has joined the channel [14:04] quirkey has joined the channel [14:04] quirkey: JimBastard: thanks for last night - good peoples [14:04] maushu: JimBastard: I'm still having problems with this reverse proxy business. [14:05] maushu: Mostly on the design part than coding part. [14:05] JimBastard: yeah yeah [14:05] JimBastard: check it out , i pulled the gun on hook.io backend [14:05] JimBastard: http://github.com/marak/hook.io [14:05] maushu: Who do I have to kill to get a .io tld. [14:05] JimBastard: made the repo public this morning [14:06] JimBastard: io.io [14:06] KungFuHamster: it's off to work I go [14:06] KungFuHamster: ACTION whistles. [14:08] JimBastard: really my whole motive for having that javascript party was so i could get people to finish the cheesecake i ordered from seamlessweb at 5am [14:09] maushu: Ahah! [14:11] maushu: Besides nginx and varnish anyone knows any load balancers? [14:12] maushu: That would work with streaming. [14:13] maushu: I think I will need to abstract this. [14:13] alex-desktop has joined the channel [14:14] maushu: JimBastard: Any idea on how send a http request and response through a tcp connection to another node.js process? [14:14] JimBastard: nope [14:14] maushu: Drat. You failed me. [14:14] JimBastard: i mean [14:14] maushu: ACTION presses the button on his arm chair and drops JimBastard to the underground furnace. [14:15] JimBastard: you really cant figure that out on your own? [14:15] maushu: Too late. I don't need minions that fail me. [14:15] JimBastard: aight [14:15] maushu: I have some ideas. They aren't compatible with streaming. [14:15] JimBastard: i didn't go to sleep last night so im not really into it [14:16] maushu: I would basically send the request (as JSON?) and get the response. [14:17] JimBastard: its just http right [14:17] JimBastard: client server [14:17] JimBastard: do an http request [14:18] Yuffster has joined the channel [14:20] maushu: Wat. [14:26] creationix has joined the channel [14:29] bh: That RaphaelScape thing is neat but it lies! I went through the maze to see what happens when I leave. Yeah, there's a wall there too. :( [14:31] aryounce has joined the channel [14:31] alexiskander has joined the channel [14:38] lattice has joined the channel [14:38] maushu: bh: Your life is a lie. [14:39] bh: Mom? [14:39] lattice has joined the channel [14:40] lattice: Q: Is there a way to safely recover from "too many open files" (e.g., opening many HTTP client connections at once)? [14:42] carsonm: what do you mean by recover? [14:42] JoePeck has joined the channel [14:46] maushu: AAARGH [14:46] tmpvar has joined the channel [14:46] maushu: This load balancing, real time streaming and other stuff is annoying me. [15:00] QuietKnight: _ry mentioned a 10-30% slower benchmark for net2. Was that resolved? [15:02] paul_ has joined the channel [15:06] maushu: Woah, I don't know why but this start/restart/stop system for node modules just feels good. [15:06] maushu: Makes me want to click and click again. [15:07] maushu: I still need to get a proper interface/class for the plugins/runnables. [15:08] voodootikigod has joined the channel [15:08] lattice: carsonm: catch the error; it seems like it's being thrown at a different level - I get an error from evcom, then my program crashes. [15:08] gwoo has joined the channel [15:09] maushu: Not only they have to "serve subdomains", they must also work stand alone. [15:09] lattice: maushu: which system? [15:09] maushu: ...and with properties. [15:09] maushu: It's my node-manager. \o/ [15:10] maushu: It should, supposedly, allow me to start/restart/stop node and connect them to subdomains or stand alone. [15:10] maushu: *node apps [15:11] maushu: And load balancing. [15:11] maushu: I'm currently using tcp sockets since I want to be able to communicate between servers later on. So IPC doesn't work for me. [15:12] alexiskander has joined the channel [15:16] creationix: is anyone going to http://www.swdc-central.com/ ? [15:18] confounds has joined the channel [15:21] unomi has joined the channel [15:22] JimBastard: yeah im in [15:22] JimBastard: lol maybe [15:22] JimBastard: probaly not [15:23] pmuellr_ has joined the channel [15:26] maushu: ...I just had an insane idea. [15:26] maushu: ACTION looks at javascript's eval. [15:26] maushu: We are going to be great friends. [15:26] JimBastard: thats never a good start of a story [15:27] maushu: I know, that is why it's perfect! [15:27] maushu: ...and completely unsafe! [15:27] JimBastard: ohh heh i can just toString() my function, run some regex on the code, then eval it back [15:28] JimBastard: right crockford? [15:28] crockbot: Douglas Crockford spoke fluent JSON before learning English at the age of 1. @binary42 [15:28] maushu: Unless that toString() has been overwritten. [15:28] mjr_: Hmm, crockbot is still funny after almost a day. [15:28] crockbot: Doug Crockford doesn't write code. It orderly lays itself in front of him in JSON beauty. dalmaer [15:29] frodeniu1: well, almost [15:29] JimBastard: you should look at the twitter trend [15:29] JimBastard: there is a shit ton of new ones piled up [15:30] maushu: JimBastard: With multiple servers to deploy an app for load balancing how about using eval? [15:30] JimBastard: dude you are like the craziest person i know in the node room [15:30] JimBastard: and thats saying a lot coming from me [15:30] maushu: I know. [15:30] frodeniu1: eval is totally ok [15:30] frodeniu1: as long as it is used in the right place [15:30] frodeniu1: at the right time [15:30] maushu: Which never happens. [15:30] mjr_: between consenting adults. [15:31] fwg has joined the channel [15:32] maushu: JimBastard: Seriously, it would work if I found a way to protect the connection. [15:32] fwg: ipc should work over sockets #wishfulthinking [15:33] fwg: wait, if you do it with sockets, it does [15:33] maushu: I was thinking more in the lines of ssh, passwords and hueg mechs. [15:34] maushu: And WMD. *Just in case.* [15:34] fwg: lol [15:35] maushu: There are no limits for data protection. [15:35] maushu: If we have to blow the planet up to protect a blog about lolcats, WE WILL DO IT. [15:36] maushu: Related xkcd comic: http://xkcd.com/705/ [15:42] okito has joined the channel [15:45] joshholt_ has joined the channel [15:45] dandean has joined the channel [15:47] r11t has joined the channel [15:47] bh has left the channel [15:48] dnolen has joined the channel [15:48] onar has joined the channel [15:48] aryounce has joined the channel [15:49] rnewson: hm, should 'end' always fire? [15:49] siculars has joined the channel [15:49] mjr_: not until the end [15:50] rnewson: http://friendpaste.com/3S3TasqEV4g1xXzevngbsP. get lots of data but no end. [15:50] rnewson: it just hangs. [15:50] binary42 has joined the channel [15:50] maushu: You're doing it wrong. [15:50] rnewson: maushu: I know that, I just don't know how to do it right. :) [15:51] r11t has joined the channel [15:52] maushu: rnewson: Is the server at 5984 closing the connection? [15:53] rnewson: hm, it's couch, it might keep the connection alive (1.1 default behavior). [15:53] rnewson: that prevents me getting an 'end' callback? [15:53] maushu: Yes. [15:53] rnewson: oh, wow. [15:54] rnewson: so 'end' is end of connection not end of response? This might explain all my mistakes. [15:54] maushu: ACTION facepalms. [15:54] rnewson: well, the node.js documentation says it's request level, not connection level, so I don't feel bad about this. [15:55] rnewson: 'Emitted exactly once for each message.' which is not true. [15:55] maushu: ... [15:55] maushu: ACTION checks the docs. [15:55] mjr_: Surely end only comes from the end of a response, not connection close [15:55] rnewson: so I think this is a node.js bug. really should get an 'end' callback when the response is complete. [15:56] r11t_ has joined the channel [15:56] maushu: ACTION pokes _ry. [15:56] mjr_: rnewson: I have almost that exact same function for proxying to couch, and mine works. I haven't figured out why yours doesn't. [15:56] rnewson: mjr_: that's what I'd think too. shouldn't have to care if the server does keep-alive. [15:56] mattly: cradle ( a node couch client ) uses end for end of response [15:56] mattly: not sure if it actually _works_ [15:56] rnewson: :) [15:57] mattly: currently i'm using it's source to wrap my head around using eventEmitters [15:57] cleverdevil has joined the channel [15:57] gf3: mikeal: can we get crockbot in #prototype ? [15:57] maushu: HTTP 1.0 POWAH! [15:57] crockbot: Null is an object in Douglas Crockford's browser. [15:57] cleverdevil: hola. [15:57] maushu: Hey crocky! [15:57] mattly: crockbot: dance [15:57] crockbot: Douglas Crockford has no bad parts. [15:57] mjr_: I guess I haven't updated the node that runs this proxy lately. Hopefully this isn't some version thing. [15:58] cleverdevil: havin' some trouble builing Node.js on Solaris, can anyone help me troubleshoot? [15:58] mattly: see, it should output: [15:58] mattly: ["0|-<", "0\-<", "0/-<"] [15:58] charlesjolley has joined the channel [15:58] rnewson: mjr_: I've been using 0.1.32 from homebrew in all cases. [15:58] maushu: cleverdevil: http://buildbot.nodejs.org:8010/ [15:59] cleverdevil: actually, I just figured it out. [15:59] cleverdevil: gotta love it when you ask for help, only to discover the solution yourself moments later. [15:59] rnewson: :) [16:00] cleverdevil: was running out of memory on my VM [16:00] cleverdevil: heh [16:00] pmuellr_ has joined the channel [16:00] rnewson: fwiw, the code I pasted works if I send a Connection: close in the headers for proxy_req [16:01] ditesh|cassini has joined the channel [16:02] rnewson: the absence of 'end' callbacks when talking to servers that keep connections alive would explain every problem I've encountered so far. [16:02] mjr_: rnewson: I just ran your code on my machine, and it works fine. [16:02] rnewson: mjr_: against a couchdb server? [16:02] mjr_: yes [16:03] RayMorgan has joined the channel [16:03] mjr_: http://friendpaste.com/3BcwDKuExO9Tq4b4SymqGs [16:03] rnewson: mjr_: to trigger it you'll need to hit localhost:9000/somedb/_all_docs for something with a large number of documents. [16:03] mjr_: oh, ok [16:03] rnewson: that's no good because the response it too small. [16:03] mjr_: how large? [16:04] rnewson: hm, a few hundred k probably suffices. [16:04] rnewson: I just jam a load of empty docs in. [16:04] rnewson: http://friendpaste.com/7iszEIqHd0197xBUkh9tgL [16:04] rnewson: should do it [16:05] BRMatt has joined the channel [16:06] mjr_: works [16:06] rnewson: hm [16:06] tmpvar has joined the channel [16:06] rnewson: mjr_: add -v and show me the headers for req/resp? [16:07] mjr_: http://friendpaste.com/5qlTspkMMNj2F8a5AXnIL7 [16:07] rnewson: also, which version of couch? perhaps keepalive behavior changed [16:07] mjr_: still 0.10 [16:07] rnewson: that should be fine. [16:07] rnewson: i'm on trunk but nothing this big has changed since 0.10.0 [16:07] mjr_: this is node just pulled from head [16:07] mjr_: on Darwin [16:08] rnewson: hm, I can try from trunk. [16:08] mjr_: what did you want -v to, curl? [16:08] rnewson: curl -v > /dev/null [16:08] rnewson: just the headers in and out. [16:09] rnewson: building trunk now. I'm on snow leopard (32-bit) [16:09] mjr_: http://friendpaste.com/qUcsumprdniU9zEsRdlq3 [16:10] rnewson: mjr_: ok, cool. the connection: keep-alive is the key. I have that too, but don't get an end callback. [16:10] mjr_: well, shit [16:10] mjr_: At least you know the JS code you have is sane. [16:11] rnewson: this is the 'bleeding' part of bleeding edge. :) [16:11] mjr_: Somehow it works fine on my machine. [16:11] mjr_: I can try it somewhere else if you like, but I think this is something screwy with your environment. [16:11] rnewson: yes, I just need to track it down and fix it. [16:12] rnewson: definitely hangs here, definitely no 'end' callback, definitely 'keep-alive' and it's the same code that works for you [16:12] rnewson: only things that vary are my machine vs yours and my node.js version vs yours. [16:12] mjr_: I'm talking to couchdbx also. [16:13] mjr_: Oh wait, no I'm not. That's couchdb 0.11.0b911643 on Linux [16:13] indiefan has joined the channel [16:13] rnewson: still hangs with trunk, assuming it's kosher to use the 'node' binary that it builds without doing a make install. [16:13] mjr_: I changed it to connect to a couchdb that had more data in it than was on my local machine. [16:13] mjr_: That's how I built it just now to try this. [16:14] rnewson: it's only necessary to have a few thousand docs, the result just needs to be bigger than a chunk. [16:14] nsm has joined the channel [16:14] mjr_: Looks like you are going to have to track this down and then solve it, for the greater good. [16:15] rnewson: *nod* [16:15] creationix has joined the channel [16:15] mjr_: Do you have another machine you can try it on? [16:16] rnewson: yeah, I can try again in the lab. [16:16] mjr_: I gotta head into the office. Good luck tracking that down. [16:16] rnewson: thanks. [16:16] _ry: maushu: yo [16:18] rnewson: _ry: hi. seem to have found a node.js bug. I have a proxy that talks to couchdb which does keep-alive. when mjr_ runs it, he gets an 'end' callback, but I don't. [16:19] rnewson: http://friendpaste.com/3S3TasqEV4g1xXzevngbsP never gets the end callback. it's vexing. [16:20] _ry: rnewson: i'm not sure i understand [16:20] rnewson: _ry: Me either. :) [16:21] rnewson: I mean that the code I pasted hangs b/c the original request is only called in an 'end' callback which never happens. [16:21] QuietKnight: _ry: regarding net2, you said: "The current version is about 10-30% slower in a simple 'hello world' web server benchmark." Is that still true? [16:21] rnewson: but it is registered correctly, the event doesn't happen, even though the response is fully proxied to the caller (I can see the end of it on screen) [16:21] rnewson: but mjr_ sees it working on his env, so it's not clear where the problem is. [16:21] _ry: QuietKnight: no - net2 is faster for simple 'hello world' now [16:21] QuietKnight: _ry: cool. Thanks [16:21] _ry: QuietKnight: there are a couple of performance issues remaining - large responses are slower [16:22] rnewson: I speculate it's because couchdb keeps connections alive and 'end' only notices the end of a connection, not the end of the response. though that would be pretty broken, so I dunno [16:22] _ry: QuietKnight: but net2 is the new development branch [16:24] _ry: rnewson: you should sniff the connection and see if the response is completing [16:24] rnewson: _ry: it's a chunked response and the last thing on screen is definitely the end of the real response, what else should I look for? [16:25] _ry: hm [16:25] rnewson: going to port 5984 for the same path terminates correctly at the same place. [16:25] rnewson: it's json, so the last line is ]} or something pretty end-y. [16:25] rnewson: adding {"connection":"close"} to the proxy_req makes it work. [16:27] technoweenie has joined the channel [16:29] _ry: rnewson: hm [16:29] _ry: rnewson: is couch sending 0\r\n\r\n ? [16:29] rnewson: checking. [16:31] silentrob has joined the channel [16:32] rnewson: hex dump shows 30 0d 0a 0d 0a at the end. [16:35] carsonm: rnewson: are you saying that couch doesn't close the connection though after that response? [16:35] rnewson: that's right, keeps it open and tells you it's doing so [16:35] hober has joined the channel [16:35] rnewson: hm. [16:35] rnewson: "curl: (18) transfer closed with outstanding read data remaining" [16:36] rnewson: after a fair few seconds of not exiting. [16:36] carsonm: I'm not sure that end can fire without the connection closing [16:36] rnewson: so, via 5984, I get 0rnrn termination. [16:36] rnewson: carsonm: if that's true then the docs are wrong and node.js can't do chunked 1.1 stuff correctly. [16:36] maushu: The docs lie! [16:37] rnewson: so I expect it's something a bit more subtle. or I hope so. [16:37] carsonm: in src/node_net.h you can see that OnEOF is only called if len is 0 [16:37] rnewson: right, but the last chunk sent is zero length for chunked encoding, right? [16:37] carsonm: I would assume that len is only 0 if the connection was closed [16:38] carsonm: maybe I didn't look deap enough [16:38] rnewson: sending a zero length chunk is the end-of-response indicator for chunked like sending byte N for content-length N is the end-of-response when you don't. [16:39] rnewson: but node.js behavior here is consistent with it only firing 'end' callbacks when connections close. [16:39] aguynamedben has joined the channel [16:39] rnewson: doesn't mean that's *why*, of course. [16:41] carsonm: so from what I can tell that len is the return value from read in evcom [16:41] carsonm: So that would seem to point to it only being 0 on EOF [16:42] carsonm: as in connection closed [16:42] _ry: i'm not sure [16:42] _ry: what the issue is [16:43] rnewson: carsonm: hm, well that matches what I see. [16:43] maushu: Shouldn't we order node-users by name? [16:44] kennethkalmer has joined the channel [16:44] _ry: so it sounds like couch completes the request but keeps the connection alive [16:44] _ry: that should still be okay [16:44] inimino: sounds like an encoding issue [16:44] rnewson: _ry: couchdb does that, yes, and that's ok (preferred, actually). [16:44] _ry: http://github.com/ry/node/blob/9e8afe9133f18382e787fd84a405f04990259d3e/lib/http.js#L539-542 [16:45] _ry: http://github.com/ry/node/blob/9e8afe9133f18382e787fd84a405f04990259d3e/lib/http.js#L392-394 [16:45] _ry: i'm giving you some pointers about where to look for debugging :) [16:45] rnewson: *nod* I follow. [16:47] ditesh has joined the channel [16:52] rnewson: ok, 'messageComplete' is emitted before the body is finished printing to the screen. in fact, it's printed immediately. [16:52] rnewson: added sys.debug at the first place you pasted and uncommented the other one [16:53] _ry: remember that stdout isn't sync [16:53] rnewson: *nod* [16:53] _ry: only stderr [16:53] rnewson: but the body is pretty large on purpose, the debug comes out immediately, the end of the body several seconds later. [16:54] _ry: hm [16:54] rnewson: 5s later if I don't wait for the timeout [16:54] rnewson: it's async but surely not that async. [16:54] _ry: so you're saying it's incorrectly finding the end of the message? [16:54] rnewson: is there a better proxy example? perhaps I'm just missing something important. [16:55] ditesh|titan has joined the channel [16:55] rnewson: I'm not sure I'm saying that. All I see is one messageComplete before the body is emitted. [16:55] _ry: i'd love to see a hex dump of this couch response [16:55] rnewson: trickier but I'll see. tcpdump syntax confuses me every time. [16:55] _ry: (with ascii on the side) [16:55] rnewson: *nod* [16:55] _ry: ngrep is good [16:56] rnewson: sample usage? [16:56] rnewson: I just installed ngrep; thank you homebrew. [16:56] _ry: i forget [16:57] _ry: ngrep -i lo0 port 8000 ? [16:57] rnewson: np, it's easy [16:57] rnewson: -d lo0 [16:57] joshbuddy has joined the channel [16:58] rnewson: hm, trace is pretty huge... [16:58] rnewson: 3.1M eep [16:58] RayMorgan_ has joined the channel [16:58] mjr_ has joined the channel [16:59] rnewson: I'll diff them, just waiting for curl to timeout [17:00] maushu: _ry: I'm sending a json string through some sockets, is there a chance that it might be cut in the middle or something and be received in seperate data events? [17:00] ditesh has joined the channel [17:01] technoweenie: there is [17:01] technoweenie: depends how big the json string is [17:01] rnewson: tcp allows that, yeah [17:01] technoweenie: i have a rough streaming json parser [17:01] rnewson: udp wouldn't repack your data but tcp can and often does. [17:02] technoweenie: http://github.com/technoweenie/twitter-node/blob/master/lib/streaming_json_parser.js its probably not that good, i only use it on the streaming twitter json api [17:02] rnewson: _ry: http://friendpaste.com/5bL6nyR8ouXlZlktnE5Zwv [17:02] rnewson: _ry: those are the end bits of each trace. direct to couchdb vs. via node.js proxy [17:05] _ry: rnewson: add -X [17:05] _ry: dump it to a file and do head -n100 adn tail -n100 :) [17:06] rnewson: sure thing. btw, I also sniffed the trace from couchdb for the call via the proxy. [17:06] rnewson: it correctly emits a 0\r\n\r\n thing last. [17:08] rnewson: this gets weirder. [17:08] rnewson: redoing in case I fat fingered this. [17:10] dgathright has joined the channel [17:10] maushu: ...who wants to bet that its a silly mistake? [17:10] rnewson: maushu: unhelpful unless you can spot the silly mistake. [17:10] maushu: Don't mind me, just stating how the universe works. [17:11] rnewson: *nod* I'm hoping it is a mistake on my part. [17:11] mjr_: Has anybody else been able to reproduce it? [17:19] rnewson: it does seem to take a long response body. [17:19] rnewson: I'm adding 100 docs at a time, and I get 'end' so far. [17:20] rnewson: fine up to at least 700 docs. wtf. [17:21] cpleppert has joined the channel [17:24] joshbuddy has joined the channel [17:24] joshbuddy has joined the channel [17:24] rnewson: mjr_: _ry ok, this is very weird. It works fine until I add about 14,000 documents. [17:25] rnewson: it completes and emits 'end' up to, and included, 13,000 documents. [17:25] rnewson: some internal math problem in node.js? [17:26] maushu: Or couch. [17:26] rnewson: maushu: the response works fine if you hit couch directly. [17:27] rnewson: it's one of two things, imo. either the proxy code I posted is subtly wrong but happens to work for not-too-large response bodies, or node.js has a bug that only surfaces rarely or for very large response bodies. [17:27] rnewson: since the code works fine for large response (many 'data' callbacks'), I'm inclined to the latter. [17:28] rnewson: mjr_: can you try with >14k assets using that push script I pasted? [17:28] rnewson: s/assets/documents [17:28] unomi has joined the channel [17:32] _ry: rnewson: keep at it :) i'm very happy to have a repeatable test case [17:33] _ry: ACTION away [17:34] dgathright has joined the channel [17:40] mjr_: 14k what? [17:41] mjr_: I loaded it with 7022 documents, but that was about 900KB of data. [17:41] konobi: _ry: the problem with compiling node on android is that you need to use the NDK build tools, but the waf stuff will always use the base OSX tools, it seems [17:42] aguynamedben1 has joined the channel [17:42] lattice: _ry: do emitters need to be cleaned up to free memory? e.g., if I create a new emitter, do I need to call removeAllListeners to ensure that the emitter won't hang around forever? [17:43] rnewson: mjr_: you need more documents, 7000 works for me but 14000 does not. [17:43] lattice: _ry: or, *will* calling removeAllListeners ensure garbage collection of an emitter (as long as other references are cleaned up) [17:43] rnewson: mjr_: it would useful to know if it wedges for you if you add more docs. just run that script I sent for a bit longer, when Futon shows >14k documents, it should wedge [17:43] mjr_: OK, re-link the create script please? [17:44] rnewson: mjr_: one sec: here's an all-in-one script that wedges for large responses: http://friendpaste.com/5GfILvb9wSZG25u2npXrVk [17:45] rnewson: http://friendpaste.com/2FUY0ZD6JJRVX6E6jNBQph for the couchdb push script [17:45] unomi has joined the channel [17:46] mjr_: Oh, you are just proxying to yourself. Does it reproduce with chargen(100000) ? [17:46] rnewson: mjr_: nope. [17:46] rnewson: mjr_: the first paste starts a server than just emits programmatically large output, the proxy calls it and proxies the response. [17:46] mjr_: I guess it could be either chunks or bytes that is triggering it. [17:47] rnewson: mjr_: works fine until the response reaches some size then I don't get 'end' callbacks. [17:47] mjr_: yeah, but is it number of chunks or number of bytes that makes it break? [17:47] rnewson: mjr_: does this point at subtle problems with the proxy code in my sample or into node.js or its libraries? [17:47] mjr_: I'm guessing this is a node problem, possibly with the http parsing. But who knows. [17:47] rnewson: mjr_: not sure. I can calculate the exact length which should trigger non-chunked mode [17:49] rnewson: same behavior with content-length/non-chunked mode [17:49] mjr_: well that's good to know. [17:50] mjr_: Can you just get a static file on apache or a normal web server and have node proxy to that? [17:50] mjr_: Just eliminate couchdb from the picture. [17:50] rnewson: I can wedge this without couch. [17:50] mjr_: great [17:50] rnewson: the first script does that, the one that starts chargen [17:51] rnewson: http://friendpaste.com/5GfILvb9wSZG25u2npXrVk [17:51] rnewson: it oddly works for smallish responses, but not longer ones. haven't found the cut-off point, but perhaps I should. [17:55] OSInet has joined the channel [17:57] mjr_: If you do it like this, you can dial it up more easily [17:57] mjr_: http://friendpaste.com/5w3BAFJh4VAN7DnO64EuUf [17:57] mjr_: Also, you should run the tests serially. Before you were running them all at the same time. [17:57] rnewson: ok, here's a version that does work for large responses, perhaps this gives more clues: http://friendpaste.com/7PW2N0yFVnM7QRVV1x2MHv [17:57] mjr_: The change I just pasted should run them in order. [17:57] rnewson: yes, will execute serially, it's just harder. [17:57] rnewson: but not if I just copy what you just wrote ;) [17:58] maushu: Is there anyway to rename node processes? [17:58] maushu: I remember doing this some years ago with a vm. [18:00] mjr_: between 13600 and 13700, it dies. [18:00] _sh has joined the channel [18:00] rnewson: mjr_: yes, that sounds about right. [18:00] fictorial has joined the channel [18:00] rnewson: mjr_: also, I think it might only be chunk mode that fails. [18:01] rnewson: mjr_: http://friendpaste.com/6Z5Mn2Zpp148cDkdDe5gp4 [18:01] rnewson: this exits cleanly. [18:01] mjr_: The magic number is 13635 [18:02] mjr_: when you push it up to 13636, it doesn't work [18:02] embwbam has joined the channel [18:02] rnewson: but if you add 10000000, it doesn't work any more even with non-chunked mode [18:02] mjr_: So now other people should be able to reproduce your problem. [18:02] rnewson: yah [18:05] rnewson: mjr_: does the script I just pasted run to completion for you? [18:05] embwbam: Is there a simple way to get a tcp client to close itself when there are no more items left in node's run loop? [18:05] philippbosch has joined the channel [18:06] technoweenie: there doesnt happen to be a node.js s3 thing does there [18:06] mjr_: rnewson: that last script does complete. [18:07] philippbosch has joined the channel [18:07] technoweenie: http://github.com/grippy/node-s3/tree/ [18:07] rnewson: mjr_: and if you flip the writeHead lines it doesn't? That is, use the chunked mode one and don't send content-length? [18:07] pdelgallego has joined the channel [18:07] mjr_: that's right, it does not complete that way. [18:09] mjr_: I wonder if this has to do with the output buffering. [18:10] mjr_: You can call write() on an http connection and it'll always succeed. [18:10] _sh` has joined the channel [18:10] mjr_: Those bytes have to go somewhere if they can't go into the TCP socket. [18:11] KungFuHamster: on the floor... get a bucket [18:13] RayMorgan has joined the channel [18:14] rnewson: mjr_: I posted it to http://github.com/ry/node/issues/issue/77 [18:14] rnewson: _ry: http://github.com/ry/node/issues/issue/77 [18:14] _sh has joined the channel [18:14] rnewson: github has done a marvellous job of mangling the code, mind. [18:16] mjr_: Yeah, that is mangled. [18:16] mjr_: I think you should save someone the time and point out the actual number that makes it fail. [18:16] mjr_: maybe adjust the list so that those two numbers are in it. [18:18] teemow has joined the channel [18:19] rnewson: sure. [18:22] javajunky has joined the channel [18:23] _sh has left the channel [18:24] mjr_: and now, to replace my firewall [18:25] gwoo has joined the channel [18:36] Zoka has joined the channel [18:49] juvenn has joined the channel [18:50] juvenn has left the channel [18:50] juvenn has joined the channel [18:50] juvenn has left the channel [18:52] blakemizerany has joined the channel [18:53] pedrobelo has joined the channel [19:06] charlesjolley has joined the channel [19:07] joshbuddy has joined the channel [19:08] r11t has joined the channel [19:18] mrjjwright has joined the channel [19:25] callen has joined the channel [19:25] callen: has anyone compared node/express performance to django yet? because I just did. [19:26] jherdman: callen: it's not really apples-to-apples, but i'd be interested in seeing your numbers [19:27] callen: jherdman: I'm going to home and establish a more elaborate report, but so far, the more typical frameworks are getting blown out of the water. [19:27] callen: jherdman: uncached node/express is faster than equal-burden django with 4 cache layers in terms of requests per second by about 2x [19:28] jherdman: dang... [19:28] callen: jherdman: furthermore, the concurrency isn't even remotely comparable. [19:28] callen: jherdman: django breaks down around 20-25 concurrent requests, starts crying and failing requests. [19:28] callen: jherdman: node was at 40-60% CPU usage @ 250 concurrent requests. [19:28] callen: 100% availability, zero failed requests. [19:28] callen: @ 25 conc, django requests were taking 250-2500ms. @ 250 conc node/express requests were taking 110-250ms [19:29] jherdman: it'd be interesting to see how Twisted compared to Node as well [19:29] callen: I think a winner was found with asynchronicity and v8 javascript. [19:29] technoweenie: tornado? [19:29] callen: jherdman: standard apache setup. I'll do the twisted/tornado setups at home. [19:29] callen: Still. Utterly ridiculous. [19:30] jherdman: technoweenie: same idea, iirc. evented, Python-based. [19:30] technoweenie: yea it just seems like a better match for express than django [19:30] callen: ...what? [19:30] callen: I'm talking about express the node-based js web framework. [19:30] technoweenie: yea [19:31] callen: and comparing it to django running on apache. [19:31] technoweenie: yea [19:31] jherdman: yeah. it's interesting, but like i said, not apples-to-apples [19:31] jherdman: Tornado (etc.) is evented just like Node/Express [19:31] callen: jherdman: again, tornado/twisted when I get home. Pretty sure express will win anyway. [19:31] technoweenie: right, its a better match [19:31] jherdman: cool! let us know what you find callen. it'd be interesting to say the least [19:31] callen: jherdman: compared to the more established evented libraries, tornado/twisted aren't all that good and are still built on a natively synchronous language. [19:32] callen: yeah, I'll publish results this weekend. [19:32] joshbuddy_ has joined the channel [19:32] jherdman: what's the URL for your blog? [19:33] callen: jherdman: I don't maintain one anymore. I had one for a separate category of posts about my person, but I'll have to make one, finally. [19:33] callen: jherdman: the closest thing I have to anything like that are a couple usernames on hackerne.ws [19:33] isaacs has joined the channel [19:35] callen: jherdman: express is pretty nice though. has native javascript libraries for haml/sass [19:36] jherdman: yeah! it fits that nice niche that Sinatra (for Ruby) does. i'm curious to see how larger Node apps will be built [19:38] callen: jherdman: I always liked sinatra, might explain why I'm glomming onto express. [19:39] embwbam has left the channel [19:45] maushu has joined the channel [19:51] rnewson: this code (http://friendpaste.com/2c94Els4jaHZuDa0RjZYZn) wedges at exactly 13636 chunks with 0.1.32. all smaller values work correctly. at 13,636, no 'end' event is emitted. I can't find the bug in http.js, so I think it's deeper in. [19:55] _ry: rnewson, can you experiment with replacing parts of that code with tcp server/client [19:55] _ry: just to eliminate some code [19:55] rnewson: hm, yes, good idea. [19:56] rnewson: it's curious, though. if you make the chunk variable longer, you get further. I would have thought less, but it's more. [19:56] carsonm: _ry: it is the buffer overflow check in the http processing [19:56] _ry: oh [19:56] carsonm: if you set HTTP_MAX_HEADER_SIZE larger it goes [19:56] rnewson: carsonm: point me at some code? I read http.js and found it fine. [19:56] _ry: carsonm: but the headers arn't that big? [19:56] carsonm: deps/http_parser/http_parser.h [19:57] rnewson: ty [19:57] _ry: okay [19:57] carsonm: _ry: I guess something isn't showing the correct state for some reason? [19:57] rnewson: yes, increasing that value and the test runs for longer. [19:57] carsonm: _ry: That is as far as I got. [19:57] tmpvar: hello noders [19:57] _ry: i understand the problem [19:58] rnewson: I should do a binary search for the cutoff point, doing it +1 is just painful. [19:58] _ry: its serious problem [19:58] rnewson: 13806 with 81k instead of 80k. nice. [19:58] javajunky has joined the channel [19:59] aguynamedben has joined the channel [19:59] charlesjolley has joined the channel [20:00] rnewson: biab. watching the rest of the usual suspects ... :) [20:03] brianm has joined the channel [20:06] mjr_ has joined the channel [20:07] siculars has joined the channel [20:07] softdrink has joined the channel [20:08] softdrink has joined the channel [20:14] konobi has joined the channel [20:15] mediacoder has joined the channel [20:15] martyn_ has joined the channel [20:15] jackyyll has joined the channel [20:15] RJ2 has joined the channel [20:15] brianm has joined the channel [20:15] emyller has joined the channel [20:15] stevebiscuit has joined the channel [20:15] mayerbacher has joined the channel [20:15] mrd` has joined the channel [20:15] webben has joined the channel [20:16] jan____ has joined the channel [20:16] jan____ has joined the channel [20:17] mattly has joined the channel [20:17] Zoka: rnewson: Have a look at http://gist.github.com/gists/338020, you can see that it fails much earlier [20:19] Zoka: 1,0rnewson: Always on chunk no:274 [20:21] BinaryPie has joined the channel [20:27] Zoka: rnewson: Also, proxy gets 1003 an 10029 instead of 1000 and 10000 [20:28] mjr_: I'm glad you guys are still digging in to this. [20:29] isaacs: is there an ftp library for node yet? [20:29] isaacs: there's an ftp SERVER here: [20:29] isaacs: http://github.com/billywhizz/nodeftpd [20:30] dnolen has joined the channel [20:41] indiefan has joined the channel [20:42] callen: isaacs: you could have js start driving an ftp cmd line client around. that could be pretty amusing. [20:42] isaacs: callen: that's cheating :) [20:42] callen: isaacs: I knows it. [20:43] callen: isaacs: speaking seriously, you might need to write one. Alternatively, steal from these guys: http://www.integralftp.com/ [20:43] isaacs: callen: a friend of mine is asking about the best way to get into nodejs. i'm suggesting he write one. [20:43] callen: isaacs: http://www.integralftp.com/js/ftpevents.js rip this off. [20:44] isaacs: he's a great javascripter, but most of his server-side experience has been java [20:44] callen: I'm still voting he rip off integralftp's js lib. [20:44] callen: it's even evented, supposedly. [20:44] isaacs: eh [20:44] isaacs: ACTION isn't impressed [20:45] isaacs: global shotgun dump of functions [20:45] callen: I didn't say you had to be impressed, I'm just saying, it's been done. [20:45] isaacs: it'd be better to code against node's tcp api [20:45] callen: hey if he wants to write a nice and stream lined ftp client lib for node.js, I'd be happy. [20:45] javajunky has joined the channel [20:45] sh1mmer has joined the channel [20:45] callen: lol, they're trying to sell source licenses. [20:45] callen: idiots. [20:46] sh1mmer: someone should really try and put a redirect on #nodejs [20:46] callen: these people don't know what 'client-side' means apparently. [20:46] callen: sh1mmer: what the hell are those people anyway? [20:46] sh1mmer: I had it in my auto-join list cos I mistyped it [20:46] sh1mmer: ACTION shrugs [20:47] isaacs: sh1mmer: hey, i know you [20:47] sh1mmer: isaacs: not you! [20:47] sh1mmer: damn [20:48] dgathright has joined the channel [20:49] javajunky1 has joined the channel [20:56] BinaryPie has left the channel [21:02] Zoka has left the channel [21:04] andreavonhollen has joined the channel [21:04] sztanphet has joined the channel [21:10] rnewson has joined the channel [21:10] isaacs: tmpvar: microseconds looks nice [21:13] dgathright has joined the channel [21:15] deanlandolt has joined the channel [21:15] bpot has left the channel [21:16] cedricv has joined the channel [21:19] isaacs: ACTION <3 small modules that do a single thing really well [21:19] isaacs: those are my favorites [21:20] inimino: /mode #nodejs +if #node.js [21:20] inimino: apparently that will work if someone who has ops in #nodejs does it [21:21] rnewson: _ry: back. last thing from you I saw was ""its serious problem". What did you find? [21:21] xla has joined the channel [21:22] inimino: Keyser... Söze... [21:24] kriskowal has joined the channel [21:25] konobi: _ry: http://amix.dk/blog/post/19490 [21:25] rnewson: inimino: :) love that film. [21:26] inimino: :) [21:27] maushu: inimino, watzz has that channel. [21:28] maushu: *wattz [21:28] derferman has joined the channel [21:28] derferman has left the channel [21:28] inimino: maushu: thanks, I'm chatting with wattz now [21:28] maushu: If it doesn't work we could ask the ircops. [21:30] inimino has left the channel [21:30] inimino has joined the channel [21:31] maushu: inimino, I think you guys need to ask the ircops for channel forwarding. [21:32] pz_ has joined the channel [21:32] pdelgallego has joined the channel [21:33] inimino: maushu: yeah, chatting with them about it too [21:34] inimino: _ry: ping [21:34] maushu: Hostname not found. [21:34] inimino: we need somebody with ops in both channels to make this work [21:34] inimino: hehe [21:34] KnightStalker has joined the channel [21:34] KnightStalker has left the channel [21:35] bikcmp_xorp has joined the channel [21:35] SvnplazmaX8 has joined the channel [21:35] codeGuinean has joined the channel [21:36] Elfix has joined the channel [21:36] SvnplazmaX8: hello, how do i use jquery to send cross-domain POST data?????? [21:36] codeGuinean: hello, how do i use jquery to send cross-domain POST data?????? [21:36] inimino: who has ops in here besides _ry? [21:36] inimino: SvnplazmaX8: you are sending messages twice, but try #jquery? [21:37] KnightStalker has joined the channel [21:38] pz_ has left the channel [21:39] solarisLinu has joined the channel [21:39] nprice has joined the channel [21:39] nprice has left the channel [21:39] solarisLinu: hello, how do i use jquery to send cross-domain POST data?????? [21:39] pz_ has joined the channel [21:39] sposatofunc has joined the channel [21:39] appleweb_ra has joined the channel [21:39] morgan: well thats an odd one [21:39] appleweb_ra: hello, how do i use jquery to send cross-domain POST data?????? [21:40] rnewson: oh snap [21:40] inimino: what is going on here [21:41] morgan: maybe if we answer him, appleweb_ra: you cannot [21:41] rnewson: inimino: I'd assumed my wine consumption had finally kicked it, but if you're seeing it too then I'm confused. [21:42] Bsdatari_Ro has joined the channel [21:42] Webtabmowpe has joined the channel [21:44] GuineaNullTab has joined the channel [21:45] Gnu_Nodes has joined the channel [21:45] GuineaNullTab: hello, how do i use jquery to send cross-domain POST data?????? [21:45] joshbuddy has joined the channel [21:45] joshbuddy has joined the channel [21:45] NoopBicycle has joined the channel [21:46] Gnu_Nodes: hello, how do i use jquery to send cross-domain POST data?????? [21:46] M68kPhp has joined the channel [21:46] mjr_: IRC is so great. [21:46] NoopBicycle: hello, how do i use jquery to send cross-domain POST data?????? [21:46] plan9tab has joined the channel [21:46] KungFuHamster: wow, how rude [21:46] maushu: wtf. [21:47] morgan: You're doing the internet wrong [21:47] plan9tab: hello, how do i use jquery to send cross-domain POST data?????? [21:47] Svnnodes_Terry has joined the channel [21:47] inimino: I guess we attracted some spammer attention when I asked about redirects in the other channel [21:48] Next_web has joined the channel [21:48] inimino: ACTION sighs [21:48] maushu: I don't see the goal of such spamming. [21:48] Next_web: hello, how do i use jquery to send cross-domain POST data?????? [21:48] wormSco has joined the channel [21:48] Sunos_javaLorez has joined the channel [21:48] morgan: Right, I think its a dummy on a bad connection [21:48] wormSco: hello, how do i use jquery to send cross-domain POST data?????? [21:48] KungFuHamster: hello, stop being an irritating jerk [21:48] maushu: Btw, good going inimino. [21:48] SvngitPhp has joined the channel [21:49] maushu: Someone please ban mask *@gateway/web/freenode/* [21:49] perlHub_svn has joined the channel [21:49] BikcmpComputers_ has joined the channel [21:49] Thngrubytabmow has joined the channel [21:50] maushu: I just noticed something. [21:50] perlHub_svn: hello, how do i use jquery to send cross-domain POST data?????? [21:50] maushu: Is #node.js even registered? [21:50] unixflapsSposato has joined the channel [21:50] BikcmpComputers_: hello, how do i use jquery to send cross-domain POST data?????? [21:50] unixflapsSposato: hello, how do i use jquery to send cross-domain POST data?????? [21:50] inimino: maushu: it's not, no. [21:50] maushu: That... is kind of stupid. [21:50] gnuComputersplan has joined the channel [21:50] gnuComputersplan: hello, how do i use jquery to send cross-domain POST data?????? [21:51] JacksonBrown has joined the channel [21:51] asmRubyproc has joined the channel [21:51] SparcBell has joined the channel [21:51] BsdPerlworm has joined the channel [21:51] Thngrubytabmow: hello, how do i use jquery to send cross-domain POST data?????? [21:51] JacksonBrown: nude.js [21:51] rnewson: hm, I'm just glad I'm not imagining this whole thing. [21:51] maushu: You aren't the only one. [21:51] rnewson: though I do wish it were possible to send a real kill signal to people. [21:51] JacksonBrown: blame BikcmpComputers_ [21:51] marienz has joined the channel [21:52] appleFlapsworm has joined the channel [21:52] maushu: Ps: I'm laughing so hard at freenode "safe webchat". [21:52] maushu: Bollocks. [21:52] rnewson: I blame AOL for everything wrong with the internet. [21:52] maushu: I blame freenode. They are a bunch of pricks. [21:52] JacksonBrown: maushu: true [21:52] asmCvs has joined the channel [21:52] JacksonBrown: freenode is a god awful network [21:52] JacksonBrown: use oftc [21:52] rnewson: I heard it causes cancer [21:52] inimino: blame me [21:53] maushu: They block mibbit and then place a stupid client that can be easily spammed. [21:53] mikeal: i blame crockbot [21:53] crockbot: Both douglas and crockford are reserved words in JavaScript. ara_p [21:53] JacksonBrown: crockbot: [21:53] crockbot: Douglas Crockford deserializes valid JSON by smell. [21:53] JacksonBrown: ur [21:54] JacksonBrown: I think this chan just got owned by bikcmps botnet [21:54] maushu: marienz, I want mibbit back. ._. [21:54] marienz: maushu: what do you mean? [21:54] maushu: Isn't mibbit blocked by freenode? [21:55] AmigadevSolaris has joined the channel [21:55] usr_Sunos has joined the channel [21:55] Scox86_nodes has joined the channel [21:55] marienz: maushu: it is [21:55] svnNodemquin has joined the channel [21:55] Elfix: there were also lots of abuse on mibbit gateway [21:55] Scox86_nodes: hello, how do i use jquery to send cross-domain POST data?????? [21:55] marienz: maushu: why do you want it back? [21:55] svnNodemquin: hello, how do i use jquery to send cross-domain POST data?????? [21:55] noop_Mquin_Git has joined the channel [21:55] idoru has joined the channel [21:55] maushu: I don't like the freenode webchat. [21:55] guineaUnix has joined the channel [21:56] kloeri has joined the channel [21:56] maushu: Besides, it's not "safer" than mibbit. Just look at this channel. I rest my case. [21:56] BicycleSposato_p has joined the channel [21:56] maushu: *sigh* [21:56] BicycleSposato_p: hello, how do i use jquery to send cross-domain POST data?????? [21:57] rnewson: BicycleSposato_p: I love you. [21:57] Solaris_php has joined the channel [21:57] web_Terryhub has joined the channel [21:57] php_m68klinux has joined the channel [21:58] ComputersBsdPerl has joined the channel [21:58] php_m68klinux: hello, how do i use jquery to send cross-domain POST data?????? [21:58] Sunoswormcompute has joined the channel [21:58] mikeal: this is really annoying [21:58] neytema: jQuery.sendCrossDomainPostPluginInYourAss [21:58] maushu: php_m68klinux, you need to use server-side code. [21:58] mikeal: who the hell wants to spam node.js? [21:58] rnewson: mikeal: is it retards? [21:58] route_Bikcmp_Tab has joined the channel [21:58] mikeal: someone who really likes Rhino :P [21:58] ThngamigaNoop has joined the channel [21:58] maushu: Or trying to advertise jquery. [21:59] mikeal: this is the worst advertising campaign for jquery EVER [21:59] inimino: lol [21:59] konobi: spammers [21:59] maushu: mikeal, no one ever said it was the best advertising campaign. [21:59] rubyMoiraa has joined the channel [22:00] UsrPerl has joined the channel [22:00] maushu: ACTION pokes _ry. [22:00] JacksonBrown: jewQuery [22:00] maushu: Your channel is understack. [22:00] maushu: ...undestack. Heh. [22:00] codeunixKloeri has joined the channel [22:00] M68kRuby has joined the channel [22:00] maushu: *cough* I mean, under attack. [22:00] inimino: ooh, "Disconnected by services", that's what I like to see :) [22:00] inimino: freenode++ [22:00] maushu: Traitor. [22:01] neytema: Douglas Crockford finds bugs in John Resig's code. Every. Single. Day. [22:01] crockbot: Doug Crockford can go back in time like superman, as he did with ES4 to make ES5. dalmaer [22:01] neytema: heh [22:01] maushu: We are supposed to rant and stuff and saying that freenode is evil. [22:01] konobi: oftc++ [22:02] Rubygitsvn has joined the channel [22:02] bellgitTerry has joined the channel [22:02] plazmabikcmp has joined the channel [22:02] bellgitTerry: FREE NODES. NODE FREELY. FREE NODES. NODE FREELY. FREE NODES. NODE FREELY. FREE NODES. NODE FREELY. [22:03] maushu: marienz, what steps do we need to make to register this channel in _ry's name? [22:03] NoopRailsperl has joined the channel [22:03] Bsdruby has joined the channel [22:03] Perlbickmp has joined the channel [22:03] KungFuHamster: can't they ban his ip on the web app? jeeze [22:03] marienz: maushu: file a group registration form, which we should be able to process at a more reasonable speed for a channel in need of chanops like this one [22:03] Perlbickmp: FREE NODES. NODE FREELY. FREE NODES. NODE FREELY. FREE NODES. NODE FREELY. FREE NODES. NODE FREELY. [22:03] marienz: KungFuHamster: that's what's being done [22:04] rails_plazma has joined the channel [22:04] maushu: group registration form? [22:04] inimino: alright, I'm filling it out [22:04] rnewson: This reminds me what being 14 was like. [22:04] maushu: inimino, fix it. [22:04] moiraaatari has joined the channel [22:04] rnewson: I hated it then too. [22:04] marienz: maushu: if I understand correctly inimino is doing this already, yes [22:04] maushu: Ah, thanks. [22:04] maushu: inimino, thanks for saying nothing. :p [22:05] mjr_: If these spammer fellows were clever, they'd bomb the channel with Douglas Crockford comments for the crockbot multiplier effect. [22:05] crockbot: John Resig's autograph == $. Drinks with the Prototype crew == $$. A night on the town with Douglas Crockford == undefined. jeremyosborne [22:05] maushu: Don't "forget" to register this in the name of our glorious leader. [22:05] Usrnullproc has joined the channel [22:05] maushu: mjr_, don't give him ideas! [22:06] drostie has joined the channel [22:06] Node_Worm_Lorez has joined the channel [22:06] routesvn has joined the channel [22:06] Terryplan9 has joined the channel [22:06] inimino: maushu, marienz : I've submitted the form [22:07] Scomquin has joined the channel [22:07] Terryplan9: If these spammer fellows were clever, they'd bomb the channel with Douglas Crockford comments for the crockbot multiplier effect. [22:07] crockbot: "Harmony" was declared after Crockford indian leg wrestled the ECMAScript standards group into submission. @brianleroux [22:07] java_dev has joined the channel [22:07] maushu: mjr_, DAMN YOU. [22:07] inimino: Terryplan9: don't give them ideas [22:07] Scomquin: If these spammer fellows were clever, they'd bomb the channel with Douglas Crockford comments for the crockbot multiplier effect. [22:07] java_dev: If these spammer fellows were clever, they'd bomb the channel with Douglas Crockford comments for the crockbot multiplier effect. [22:07] crockbot: Douglas Crockford can write already gzipped and minified JavaScript that passes JSLint in "The good parts" mode with his eyes closed. [22:07] crockbot: Douglas Crockford's age === NaN arnabc: [22:07] Bickmp_rubyamiga has joined the channel [22:07] svngnu_code has joined the channel [22:07] alexiskander has joined the channel [22:08] inimino: oh, heh [22:08] maushu: Lets get some pitchforks and torches. [22:08] flapsJava has joined the channel [22:09] Plazmasvn has joined the channel [22:09] maushu: You know, now that I think about it, it seems I don't like any irc server. [22:10] Computersm68kjav has joined the channel [22:10] Plazmasvn: Did you know? Timothy McVeigh conspired with Terry Nichols to destroy the Alfred P. Murrah Federal Building by exchanging messages using the popular "Bit Torrent" internet program, which quickly and anonymously allows users to exchange large volumes of confidential documents. [22:10] inimino: someone needs to write one in node [22:10] maushu: Unbelieveble what we find when we introspect ourselves. [22:10] inimino: heh [22:10] MattJ has joined the channel [22:10] scojavacomputers has joined the channel [22:10] rnewson: I'm now worried that I'm a spam bot in deep cover. [22:10] maushu: A ircd in node? Hmmm. [22:11] maushu: rnewson, do you feel the need to travel back in time and kill _ry before he invents node? [22:11] MattJ: ACTION resists the temptation to ask how to do a cross-domain POST from jQuery :) [22:11] mikeal: rnewson is a spam sleep agent [22:11] inimino: hehe [22:11] maushu: Terminator! [22:11] rnewson: mikeal: this is my nightmare made flesh. [22:11] mikeal: haha [22:11] KungFuHamster: someone already wrote an ircd in node.. I tried it, it didn't work for me [22:11] maushu: MattJ, with magic or server-side code. [22:11] inimino: rnewson: do you look at your remarks and think "I really ought to have said that three or four more times"? [22:12] mikeal: and in all CAPS [22:12] solarisX86Git has joined the channel [22:12] procFunc has joined the channel [22:12] rnewson: inimino: all the time, but I assumed it's because I'm a alpha-dog-style jerk. [22:12] inimino: it /can/ be hard to tell [22:12] inimino: but there's a 12-step program for both! [22:12] Kloeritab_Git has joined the channel [22:12] func_unix has joined the channel [22:13] maushu: inimino, thats too many. [22:13] rnewson: inimino: is the first step related to alcohol in any way? [22:13] carsonm: rnewson: I have a fix for the issue you found but I don't know if it is a good one. Just one small change if you want to try it. [22:13] rnewson: carsonm: sure. [22:13] inimino: rnewson: yes, the first step is to become an alcoholic [22:13] rnewson: carsonm: I'm more happy that it's not my dumbness than any other concern. [22:14] carsonm: r11t: change line 1496 of deps/http_parser/http_parser.c to this: if (++nread > HTTP_MAX_HEADER_SIZE && PARSING_HEADER(state) && !(parser->flags & F_TRAILING)) { [22:14] rnewson: inimino: I *know* the first step to becoming an alcoholic. [22:14] rnewson: pro tip: it's drinking all the time. [22:14] inimino: rnewson: then you know the next 11! [22:14] KungFuHamster: (all the steps are the same) [22:14] rnewson: ACTION is only on 3 but is looking forward to the next 8. [22:14] carsonm: rnewson: that should skip the overflow check if it is ending a chunk. [22:15] dgathright has joined the channel [22:15] inimino: rnewson: if you can still do subtraction you need to pick up the pace [22:15] JacksonBrown has left the channel [22:15] maushu: rnewson, where the heck did the 13th one came from. [22:15] rnewson: inimino: *nod* though I did ask bc for the answer. even so, point taken. [22:16] rnewson: you mean line 294? [22:16] carsonm: rnewson: yes sorry [22:17] carsonm: was looking at the wrong number [22:17] rnewson: carsonm: np, I always mix those two numbers up myself. [22:18] pz_ has left the channel [22:18] rnewson: that seems to do the trick actallly [22:18] rnewson: u [22:18] rnewson: but is it right? :) [22:19] rnewson: what's the right way to file a node.js bug btw? I posted my stuff to github/issues [22:20] mikeal: that's the right way [22:20] inimino: rnewson: the mailing list is usually best if you have a test case [22:20] rnewson: inimino: I do, posted as #77 on github [22:21] inimino: that should work too [22:22] carsonm: It probably isn't the "right" way to fix it but I'm not sure why the state goes back to parsing headers so the entire thing may be busted. [22:24] inimino: well, the spam seems to have dropped off [22:24] rnewson: carsonm: I'm just relieved it's a node.js bug not an rnewson bug. [22:24] inimino: _ry: ping me when you're around [22:24] inimino: ACTION gets back to work [22:30] steadicat has joined the channel [22:32] morgan has joined the channel [22:32] Tim_Smart has joined the channel [22:36] jan____: sh1mmer: can you find out what Douglas thinks of the #’facts? :) [22:38] Tim_Smart: isaacs: http://skitch.com/timsmart/n45sw/terminal-1 [22:38] Tim_Smart: on latest HEAD [22:38] isaacs: ahhh... [22:38] isaacs: ok, i was misreading your scenario [22:38] isaacs: thanks! [22:39] sh1mmer: jan____: I haven't seen him this week [22:39] sh1mmer: we're in Austin next week [22:42] tilgovi has joined the channel [22:43] jan____: doh, I'm in austin this week [22:44] javajunky has joined the channel [22:44] softdrink has joined the channel [22:44] isaacs: Tim_Smart: fixed in 7c46748b0e88ffb1e862369a66cb74120410b7d3 [22:45] Tim_Smart: isaacs: Wonderful [22:45] isaacs: http://github.com/isaacs/node/commit/7c46748b0e88ffb1e862369a66cb74120410b7d3 [22:45] JimBastard has joined the channel [22:45] isaacs: there should really be a test for loading a .node in test-module-loading.js [22:45] JimBastard has left the channel [22:46] isaacs: Tim_Smart: so, when you do registerExtension now, it'll run in the "this" context of the module object [22:47] Tim_Smart: yeah ok [22:47] isaacs: so your compiler can know what the parent is, have access to the module cache, etc. [22:53] alexiskander has joined the channel [23:02] Tim_Smart: isaacs: I will have a play with sanboxing soon [23:03] isaacs: Tim_Smart: great! [23:04] isaacs: i really need to organize the code better. there's a lot of sync/async copypasta [23:04] isaacs: that doesn't make me happy [23:06] teemow has joined the channel [23:09] jpoz has joined the channel [23:10] jpoz: is there an easy way add in non-node libraries? [23:10] jpoz: like 'datejs' for example? [23:11] jpoz: require('./datejs') isn't working [23:13] stepheneb has joined the channel [23:15] jpoz: oops nevermind [23:15] jpoz: it was a problem with datejs [23:15] jpoz: :-) [23:17] teemow has joined the channel [23:19] softdrink1 has joined the channel [23:22] morgan has joined the channel [23:22] konobi: John Resig's autograph == $. Drinks with the Prototype crew == $$. A night on the town with Douglas Crockford == undefined. [23:22] crockbot: There is no such thing as high tide. Only Douglas Crockford reverse geocoding YQL somewhere nearby. [23:27] mfeiri has joined the channel [23:28] cloudhead has joined the channel [23:32] softdrink has joined the channel [23:34] brainproxy has joined the channel [23:36] QuietKnight has joined the channel [23:42] morgan has joined the channel [23:51] rnewson has joined the channel [23:51] rnewson has joined the channel [23:53] morgan has joined the channel