[00:01] indiefan_ has joined the channel [00:02] jedschmidt has joined the channel [00:02] softdrink has joined the channel [00:09] Azeroth has joined the channel [00:12] Azeroth has joined the channel [00:13] Azeroth has joined the channel [00:14] Azeroth has joined the channel [00:17] fizx has joined the channel [00:18] fizx has joined the channel [00:20] Azeroth has joined the channel [00:21] saikat has joined the channel [00:22] mrjjwright has joined the channel [00:30] phazm: still can't get it -- here's the whole code: http://pastebin.com/ZL8gtKuM -- basically the 'data' listener on line#64 is not firing, but the 'response' listener is line#61 [00:31] phazm: s/line#61/line#60/ [00:33] creationix has joined the channel [00:33] Aria has joined the channel [00:34] freshtonic has joined the channel [00:37] phazm: why doesn't chatzilla have the global /me slaps with a large trout script so I can ping everyone ;) [00:37] phazm: JSLint reports no errors, fwiw [00:38] tekky has joined the channel [00:38] phazm: (other than insecurities in my regex) [00:40] isaacs: phazm: can you try to write a script that is much smaller and shows the erorr? this thing is big. [00:40] phazm: heh, sure [00:41] isaacs: phazm: and it contains a lot of use-case-specific stuff. [00:42] isaacs: has the api changed for uploading data from an http client request? [00:43] isaacs: I'm getting "TypeError: Second argument should be a buffer" when I try to write(data, "utf8") [00:44] isaacs: _ry, thotypous ^ [00:45] tekky: hmm the GIT link on nodejs.org is wrong it seems [00:49] softdrink has joined the channel [00:52] rektide: tekky: git://github.com/ry/node.git [00:52] rektide: thats what i'm using [00:53] isaacs has joined the channel [00:53] tekky: rektide: i know, just google found nodejs.org first so I Figured it would have a good link, i then redid my google to find the right one [00:54] rektide: kk, definitely an issue that needs to be addressed [00:54] rektide: post to the google group? [00:54] rektide: since ry doesnt appear to be around [00:54] tekky: nodejs has http://github.com/ry/node/tree/master [00:54] tekky: hmm not sure I'm on the google group yet let me see [00:55] mjr_: which page has that link? [00:55] keyvan has joined the channel [00:55] tekky: http://nodejs.org/#download [00:55] mjr_: oh, the "git repo" link [00:55] tekky: yah [00:55] tekky: damn i need to remember to do port updates at home on my laptop [00:56] tekky: always "think" ohh its not that out dated.... and then spend 30mins updating from a coffee shop [00:57] k3yvn has joined the channel [00:59] derbumi has joined the channel [01:01] isaacs: ahh, derp... apparently the error was happening because i was trying to write an object without JSON.stringify-ing it first. [01:04] siculars has joined the channel [01:07] JimBastard has joined the channel [01:07] JimBastard: whats a good way to test if you are in the browser [01:07] JimBastard: (no puns plz) [01:07] JimBastard: i was thinking typeof window but some browsers dont like that [01:07] isaacs: JimBastard: var inBrowser = (function () { return typeof window === "object" && this === window })() [01:08] isaacs: JimBastard: orly? [01:08] JimBastard: trying now [01:08] isaacs: JimBastard you could at least just check that typeof window !=== undefined [01:08] tekky: geez, i must never update my macbooks ports :/ it really is ognna be 30+mins of waiting [01:08] isaacs: oh! or, even better: var isBrowser = (function () { return this.window === this })() [01:08] tekky: so much for productive [01:09] isaacs: tekky: that's why i switched to homebrew. [01:09] JimBastard: i prefer microbrew [01:09] tekky: isaacs: ohh an alternative to ports? i havent bothered looking what else is out there [01:09] mjr_: using the special, Crockford-approved super strict inequality operator: !==== [01:09] isaacs: heheh [01:09] JimBastard: so isaacs you think this.window === this is crossbrowser? [01:09] brianmario has joined the channel [01:10] creationix has joined the channel [01:10] mjr_: homebrew for putting software on your Mac, microbrew for putting beer into your body. [01:10] isaacs: JimBastard: iknow that it's cross browser. but all it really tests is that there's a global object called "window" which is a reference to the global object. [01:10] tekky: mjr_: I dont think they make microbrew whisky though :( [01:10] isaacs: JimBastard: if you did global.window = global in node, then it would think it's a browser. [01:10] JimBastard: im just curious why its hate typeof window [01:11] JimBastard: i must be bugging out [01:11] JimBastard: brb [01:11] JimBastard: ive been porting M$ code for 4 hours [01:11] isaacs: JimBastard: Or, you could try this one: Object.prototype.toString.call() === "[object Window]" [01:11] tekky: JimBastard: and you still have eyes? [01:12] JimBastard: yeah, and a leet library [01:12] tekky: why did ports just build ICU for i386 and x86_64 [01:13] mikeal has joined the channel [01:18] JimBastard has joined the channel [01:18] JimBastard: http://github.com/Marak/JSLINQ [01:18] JimBastard: so isaacs it turns out FF really really hates even SEEING "var window" in any source [01:19] JimBastard: even if it never "runs" [01:19] JimBastard: so yeah, i got Linq working in node [01:19] JimBastard: its fucking bad ass [01:19] JimBastard: time to win over some M$ fanbois [01:21] jwm: heh [01:21] tekky: JimBastard: nice [01:21] jwm: linq? [01:21] isaacs: JimBastard: why are you doing var window, though? [01:21] isaacs: window.window is ReadOnly DontDelete [01:21] JimBastard: yeah its gone now [01:21] JimBastard: i just used your method [01:21] JimBastard: :-D [01:22] isaacs: tekky: because macports likes to Be Prepared. [01:22] JimBastard: i was turning window into exports [01:22] JimBastard: to be quick and easy isaacs [01:22] isaacs: tekky: who knows... you might decide to swap out your processor tomorrow. [01:22] ditesh|cassini has joined the channel [01:22] JimBastard: probaly not the best idea [01:23] isaacs: JimBastard: probably not [01:23] JimBastard: we'll see! [01:23] tekky: isaacs: hehe, yah I have tons of spare cpus for my MBP :P [01:23] mjr_: "ports" people like to see their computers run the compiler. A lot. [01:23] isaacs: tekky: right!? and now you won't have to rebuild anything a second time. [01:23] isaacs: you'll be prepared. [01:23] _ry: isaacs: write(data, 'utf8') ? which write? [01:23] isaacs: _ry: turns out, "data" was not a string [01:24] isaacs: _ry: it was http.clientRequest.prototype.write [01:24] isaacs: _ry: the error was less than helpful though. [01:24] mjr_: Yeah, that error message is a little confusing. If you pass bogus data, it tells you something about Buffer. [01:24] isaacs: er, OutgoingMessage.prototype.write [01:29] tekky: ACTION finally started compiling node on here... which I swore was already on here... but guess no [01:29] RayMorgan has joined the channel [01:31] mscdex: anyone happen to know if there are plans to add other transports besides 'long-polling' and 'in-process' to Faye? [01:32] isaacs: _ry: http://github.com/isaacs/node/commit/822a3079299085de22938fb00eca96fdd2fea930 [01:33] _ry: isaacs: chunk instanceof Buffer ? [01:33] isaacs: _ry: that would work too, i guess. but this way, it works even in an evalcx environment [01:34] tekky: isaacs: throw new TypeError("chunk must be something other than " + typeof chunk); :P [01:34] isaacs: tekky: i like my errors to be positive :) [01:34] tekky: +1 useless error messages [01:34] tekky: isaacs: its postively useless? :P [01:35] tekky: positively even [01:35] JimBastard: yeah so Linq is kinda interesting in pure js [01:35] JimBastard: its way cleaner then json-query or json-path [01:35] JimBastard: and its had ALOT of methods [01:35] JimBastard: http://maraksquires.com/JSLINQ/api.html [01:37] BryanWB has joined the channel [01:37] keyvan has joined the channel [01:41] CIA-75: node: 03isaacs 07master * r3892628 10/ lib/http.js : Emit a better error message when something strange is sent to OutgoingMessage#write - http://bit.ly/b6lts4 [01:41] keyvan has joined the channel [01:41] _ry: isaacs: thanks [01:41] isaacs: _ry: np [01:42] isaacs: i love how you surgically alter patches, btw. [01:42] _ry: ;) [01:43] phazm: isaacs: sorry for the delay, had to put baby to sleep, here is the slimmed-down script: http://pastebin.com/PYw7QZf4 [01:44] isaacs: phazm: why are you doing a setInterval? [01:44] phazm: I need to get the data from that page (/update) every second [01:44] isaacs: phazm: wouldn't it be safer to do a setTimeout inside the response handler, so that it doesn't try to send out a bunch of update requests all at the same time? [01:45] isaacs: i mean, even if you SEND a request every second, that doesn't mean you'll GET a response every second [01:45] phazm: hrm [01:46] isaacs: also, why do you have a data listener, but no end listener? [01:46] isaacs: do you just win immediately before you've uploaded all the data? [01:46] airportyh has joined the channel [01:47] isaacs: phazm: the "data" event can fire multiple times with chunks of data. [01:47] isaacs: phazm: you need to store them and wait for the "end" event before you can be sure you've gotten it all. [01:47] ssteinerX has joined the channel [01:48] softdrink has joined the channel [01:48] phazm: I'm not sure what an end listener would be.... I used the http.Client example in the api [01:48] isaacs: phazm: data might emit multiple times for a single request. [01:48] isaacs: phazm: in the data listener, you append the data to a string or something. [01:48] isaacs: phazm: then, in the end listener, you deal with that string. [01:49] phazm: yea, I've noticed that -- didn't see an implementation of it [01:49] isaacs: phazm: read the example again. that's how it works. [01:49] isaacs: (iirc) [01:49] phazm: http://nodejs.org/api.html#http-client-167 [01:50] keyvan has joined the channel [01:50] isaacs: var data = ""; response.addListener("data", function (c) { data += c }); response.addListener("end", function () { .. all the code you have in "data" .. }) [01:51] phazm: interesting, I'll give that a shot, though I don't think that's the issue that I'm trying to fix (with it not going into data at all) [01:51] mjijackson has joined the channel [01:52] isaacs: phazm: also, get rid of the setInterval [01:52] isaacs: phazm: i'm pretty sure that's your issue. [01:52] isaacs: you'er trying to use the client connection to send another request before the current one is done. [01:52] _ry: JimBastard: is http://maraksquires.com/JSLINQ/ static? [01:52] _ry: html? [01:52] phazm: okay, I'll give that a shot -- thank you very much isaacs [01:53] isaacs: phazm: np [01:53] _ry: it's extremely fast [01:53] _ry: maybe it's js [01:53] airportyh has joined the channel [01:54] _ry: okay -it's just client side [01:55] colin__ has joined the channel [01:56] cloudhead has joined the channel [01:58] JimBastard: yeah it is _ry [01:58] JimBastard: but there is a node_example in the repo [01:58] JimBastard: and if there is interest ill port the browser side unit tests to ndoe [01:58] JimBastard: the code for JSLINQ is very concise [01:59] JimBastard: but yeah, indexzero sent me the LINQ stuff this morning again and i finally snapped [01:59] JimBastard: and said, before EOD, there will be node [01:59] JimBastard: ACTION and then there was [02:00] JimBastard: :-) [02:01] pgriess has joined the channel [02:01] k3yvn has joined the channel [02:02] _ry: i want to add a way to find out how much cpu the process is using [02:03] _ry: it'd be really cool to have node-chat display the memory and cpu usage [02:04] mjijackson: does anyone know if Jake works on Node? [02:04] JimBastard: yes it would [02:05] _ry: mjijackson: i don't think so [02:05] _ry: it uses a lot of bloking stuff [02:06] mjijackson: _ry: how practical is it in general to get any of the narwhal stuff running on Node? [02:06] mjijackson: I'm thinking not very... [02:06] mjijackson: I know that kriskowal is working on something ... [02:07] _ry: mjijackson: *shrug* [02:07] Guest61661 has joined the channel [02:08] _ry: i think there are certain non-I/O peices that can be used [02:08] _ry: pieces [02:08] mjijackson: _ry: yeah, for sure [02:09] mjijackson: algorithms and such [02:10] phazm: isaacs: http://pastebin.com/dfKVTXpR <-- this works! Is that what you were referring to, as far as the setTimeout? Also, it seems to be blocking somehow -- if you run the code, it'll go into the startScan function, then after it gets in the 'processAuction' function, it stops outputting from 'startScan' until processAuction is done. Any ideas? [02:11] isaacs: phazm: nope. time to go home. [02:11] isaacs: phazm: try to remove any reference to "auctions" or whatever. [02:11] isaacs: phazm: make the server and client go "ping" and "pong" or something. [02:11] isaacs: phazm: also, you still have a race condition, though not as bad. [02:11] isaacs: phazm: put the setTimeout in the "end" handler. [02:12] phazm: will do -- thanks again, isaacs [02:12] isaacs: phazm: np [02:12] isaacs: phazm: good luck [02:12] phazm: I hear that a lot ;) [02:16] rdrake has joined the channel [02:21] Azeroth-Working has joined the channel [02:30] airportyh has joined the channel [02:31] _ry: wow [02:31] _ry: it's amazing how fast node can push buffers to socket [02:31] _ry: i just did a bench with -c 100 and 1mb responses [02:32] _ry: with mongrel (8 req/sec), nginx (665 req/sec) and node (750 req/sec) [02:34] JimBastard: i took that elusivehippo bull shit off the node wiki. if someone wants to post links to their nodejs hosting company they need to at least remove the dummy content from their downloaded html template. [02:34] JimBastard: ACTION hopes i offended someone [02:35] _ry: JimBastard: hmm [02:35] JimBastard: http://elusivehippo.com/ [02:35] JimBastard: click around [02:36] halorgium: JimBastard: you mean the one on http://wiki.github.com/ry/node/hosting ? [02:36] JimBastard: no it was on the main page [02:37] phazm: JimBastard: how is your node hosting project coming along? [02:37] JimBastard: i might have put down the deposit for the logo and design work today [02:37] JimBastard: :-D [02:37] JimBastard: but you dont see me linking up http://nodejitsu.com/ [02:37] JimBastard: even though its online and working [02:37] JimBastard: and hosting apps [02:38] phazm: and has a very user friendly home page [02:38] JimBastard: :-D [02:38] phazm: it's accessible too [02:38] _ry: JimBastard: i think the link should remain [02:38] JimBastard: lol, your the boss [02:38] _ry: people can make decisions for themselves - it's not spam [02:39] phazm: any reason why it should be on the front page, though? I could understand it in the /hosting section [02:40] _ry: a hosting section would be nice [02:40] halorgium: _ry: haha, did you see where i linked ;) [02:41] fizx has joined the channel [02:41] steadicat has joined the channel [02:43] _ry: http://gist.github.com/390316 [02:43] _ry: 1.9 ms to serve a 1mb file [02:43] _ry: |m| [02:43] _ry: er [02:43] _ry: 192 okay :) [02:43] inimino: heh [02:43] inimino: I was about to say [02:44] _ry: still |m| still [02:45] inimino: very nice [02:45] _ry: 4000 megabits/sec ^^ [02:46] inimino: :) [02:46] _ry: who needs more than one process? [02:47] _ry: as long as your codez can use the cpu, there is no problem [02:48] phazm: JimBastard: You should hire this /professional/ logo designer: http://99designs.com/logo-design/contests/logo-business-process-outsourcing-company-43397/designers/417960#entry-77 [02:48] JimBastard: im soo confused [02:49] JimBastard: either my saves arent holding or someone is removing in realtime [02:49] JimBastard: trying one more time [02:51] WALoeIII has joined the channel [02:51] sudoer has joined the channel [02:52] tk: phazm: dudez got mad skillz there [02:53] phazm: tk: fo sho. I'm sure Apple will be headhunting him when they see that artwork. [02:54] markwubben has joined the channel [02:55] tk: now that they have more time to refine the new iPhone (most likely) [02:56] phazm: oh? What did I miss? [02:56] phazm: I know engadget got their hands on a 4G, and had to give it back. I loved the design, tbh [02:57] mscdex: has anyone been able to get socket.io to work on a recent version of node.js? [02:58] _ry: ACTION wishes scott gonzalas was here - and maybe had his chat thing with irc server built in [02:58] _ry: ACTION would like to demo it [03:00] JimBastard: yo [03:00] JimBastard: _ry hes on gchat [03:00] JimBastard: we working on node chat [03:00] _ry: JimBastard: is the irc server part working yet? [03:00] JimBastard: you know his new version is online right? from the other week . http://chat.nodejitsu.com/ [03:00] JimBastard: no, not yet [03:00] phazm: _ry: I watched your original presentation from last year, and at the end someone asked a question -- something like "When you change the sourcecode will it update automatically" or something -- do you recall, and if so, what was the question? Your answer was that you had been talking about it and wanted to implement it [03:01] _ry: phazm: yes, not working yet [03:01] _ry: phazm: turned out to be a bigger problem [03:01] _ry: JimBastard: how close is it? [03:01] phazm: what was? I don't know what the question was :) [03:01] _ry: phazm: hot reloading of code [03:01] scott_gonzalez has joined the channel [03:01] JimBastard: no sure, i am focused more on working on the front-end [03:01] _ry: scott_gonzalez: hey [03:02] scott_gonzalez: hey [03:02] _ry: scott_gonzalez: is the chat+irc anywhere near demoable? [03:02] JimBastard: thar he is [03:02] micheil has joined the channel [03:02] tk: phazm: a Taiwaneese company is sueing LG for patent violations and seeking injuctions in the US to stop all sales and use of their OLED displays [03:02] scott_gonzalez: no, I haven't had any time to work on the irc server yet [03:02] _ry: i'd love to present it at the yahoo talk tomorrow [03:02] _ry: crap [03:02] JimBastard: :p [03:02] _ry: can't we just hack it on there? [03:03] scott_gonzalez: hmm....let me check [03:03] _ry: https://gist.github.com/a3d0bbbff196af633995 <-- [03:03] phazm: tk: .. I don't get it :-/ [03:03] _ry: ACTION checks out the chat code [03:04] tk: phazm: http://bit.ly/d9pYJ4 [03:04] scott_gonzalez: okay, so I've got the irc code running on 0.1.9x [03:04] _ry: cool [03:05] scott_gonzalez: it's not split out into modules like the chat server [03:05] scott_gonzalez: it's just your demo code updated to run on the new API [03:05] scott_gonzalez: let me see how easy it is to just use that with the chat server [03:05] twomashi has joined the channel [03:05] scott_gonzalez: heh, I've got this right at the top of the file: TODO: why does ry never use .forEach()? performance? [03:05] _ry: yeah [03:06] _ry: but also cause i mostly program in c so it seems a bit more normal :) [03:06] phazm: tk: Ahh, interesting. Hope we don't have to deal with CRT iPhones... [03:06] freshtonic has joined the channel [03:07] scott_gonzalez: so we'd need events around everything in the irc code [03:07] _ry: just need ot merge the channels somehow [03:07] mikeal has joined the channel [03:07] scott_gonzalez: my plan was to just have the chat code listen to events from the irc server [03:07] scott_gonzalez: and relay messages that way [03:07] scott_gonzalez: auto log people in/out [03:08] _ry: yeah [03:08] _ry: it'd be cool if each channel emitted events [03:08] _ry: channel.emit("msg", blah) [03:08] _ry: then the users could listen? [03:08] scott_gonzalez: yup, that's how the chat server works [03:08] _ry: just have to be careful about removing those listeners when its gone [03:09] scott_gonzalez: oh man, that's not something I've had to consider before [03:09] scott_gonzalez: I'm used to working in the DOM with jQuery [03:09] scott_gonzalez: and if an element goes away, so do its listeners [03:09] _ry: yeah [03:09] _ry: oh really? [03:09] _ry: hm [03:10] _ry: anyway - yeah on the connection's "close" event it needs to remove listeners [03:10] _ry: hmm... [03:11] _ry: yeah unfrotunately i'm very undone with my slides - i don't want to get into a project right now :) [03:11] scott_gonzalez: heh [03:11] scott_gonzalez: just show off the chat server :-) [03:11] _ry: chat servers are boring though [03:11] _ry: http server and irc server in one process is exciting [03:11] scott_gonzalez: yeah, but we're not there yet... [03:12] scott_gonzalez: working code is more interesting than theoretical code :-P [03:12] scott_gonzalez: well, sort of [03:12] _ry: just needs to be working for a 5 minute demo :) [03:12] scott_gonzalez: theoretical chat + irc is more interesting than actual chat [03:12] PyroPete1 has joined the channel [03:13] _ry: i actually have a node_chat + irc somewhere [03:14] _ry: but the webside only shows whats happening in the channel [03:15] scott_gonzalez: heh: [03:15] scott_gonzalez: send to sgonzale: ':sgonzale!sgonzale@127.0.0.1 QUIT :idle timeout\r\n' [03:15] scott_gonzalez: Notification: Stream.prototype.close has been renamed to end() [03:15] scott_gonzalez: Error: idle timeout [03:15] scott_gonzalez: at Timer.callback (net:150:27) [03:15] scott_gonzalez: at node.js:164:9 [03:15] KungFuHamster_: ah the infamous idle timeout [03:15] _ry: idle timeouts are broke - right? [03:15] _ry: got to fix that soon... [03:16] KungFuHamster_: I ran into it, but I'm a noob and wasn't sure if it was just me [03:17] brainproxy: what about a shop like pragmatic programmers [03:17] KungFuHamster_: if it helps, it only happens after I actually send some data, but not after a connection is made [03:18] _ry: scott_gonzalez: if you have a demo working by tomorrow at 5pm, i'll totally give you big acks in front of a 140 person crowd and a probably video taped talk :) [03:18] _ry: otherwise i'll go demo-less [03:18] _ry: i can't think of anythign else that's demo worthy [03:19] scott_gonzalez: I could totally pull that off if I didn't have to work tomorrow [03:19] _ry: if i get done with my slides tonight i'll try to hack it goether [03:19] scott_gonzalez: or if I decided to just not go to sleep tonight [03:19] scott_gonzalez: and I know how you feel about me going to sleep :-P [03:19] brainproxy: oh weird, irssi was like two days scrolled up; sorry for the random comment :/ [03:20] _ry: sleep is overrated :) [03:20] brainproxy: i saw where someone was mentioning about a node book and wondering what publisher to go with [03:20] ryan[WIN]: ry do you need a demo using node [03:20] _ry: ryan[WIN]: yes [03:20] ryan[WIN]: i don't have anything spectacular but it uses node [03:21] ryan[WIN]: http://pilot.ryanbroomfield.com:8030/pilot.html [03:22] ryan[WIN]: you can click on any of the names and it'll play back their submitted game [03:22] _ry: nice [03:22] _ry: not spectacular enough though sorry :) [03:22] ryan[WIN]: yeah [03:22] ryan[WIN]: it doesn't make node pop [03:22] _ry: wpilot is pretty exciting - but it's also rather conventional [03:23] _ry: i liek the irc+chat thing because - basically nothing else can do it [03:23] ryan[WIN]: well what would be some other things [03:23] ryan[WIN]: that node could do but others couldn't do [03:23] ryan[WIN]: maybe stream realtime mixed audio [03:24] ryan[WIN]: dunno [03:25] ryan[WIN]: i wouldn't have anything ready in time for your talk [03:27] tk: KungFuHamster_: idle timeouts on IRC is from not responding to the :pings from the ircd is all (when not actively sending data) [03:28] KungFuHamster_: tk, referring to a node crash error actually [03:28] tk: KungFuHamster_: ahh :P [03:28] KungFuHamster_: Error: idle timeout [03:28] KungFuHamster_: at Timer.callback (net:150:27) [03:28] KungFuHamster_: I get the same thing in my script [03:30] scott_gonzalez: awesome: [03:30] scott_gonzalez: / note all these try-catches are just to avoid the server crashing during [03:30] scott_gonzalez: / the demo. in real-life you would want to test away these problems. [03:30] scott_gonzalez: this is what _ry gives me to work with :-) [03:30] deanlandolt: scott_gonzalez: he said it only needed to work for five minutes ;) [03:32] _ry: scott_gonzalez: you can do process.addListener('uncaughtException', function (e) { sys.puts('uncaught exception: e.stack) }); [03:32] _ry: that was added shortly after that demo [03:32] _ry: it doesn't need those wraps [03:33] scott_gonzalez: okay [03:33] _ry: http://nodejs.org/api.html#event-uncaughtexception-49 [03:33] phazm: ryan[WIN]: Yay. O [03:33] phazm: I'm #1 [03:33] phazm: fun game :) [03:34] micheil: this might interest a few folks: http://www.web2media.net/laktek/2010/05/04/implementing-web-socket-servers-with-node-js/ [03:35] ryan[WIN]: phazm, lol [03:37] _ry: ACTION bbl [03:37] KungFuHamster_: oh man, I totally spammed the high score list :/ [03:43] mnutt has joined the channel [03:49] mjr_ has joined the channel [03:49] Azeroth has joined the channel [03:51] colin__ has joined the channel [03:51] mikeal has joined the channel [03:52] bmizerany has joined the channel [03:54] ryan[WIN]: KungFuHamster_, lol [03:56] fictorial_away: scott_gonzalez: the nodechat interface is incredible. [03:56] k3yvn has joined the channel [03:56] scott_gonzalez: thanks [03:56] scott_gonzalez: I didn't do the UI though [03:56] fictorial: I saw but the other guy isn't here [03:56] fictorial: :) [03:56] isaacs has joined the channel [03:56] fictorial: your a proxy [03:56] fictorial: you're [03:56] scott_gonzalez: heh, don't worry we feed his ego every day :-) [03:57] fictorial: his own website is also incredible [03:57] scott_gonzalez: yeah, it makes me jealous [03:57] fictorial: I know enough CSS to know that I know nothing. [03:58] creationix: cloudhead: how do I install less.js as a node module? [03:58] scott_gonzalez: he runs a graphic design studio: http://pixelgraphics.us/ [03:59] fictorial: micheil: I'm a big fan of http://github.com/creationix/websocket -- drop-in replacement for the net module [03:59] fictorial: working great in my nodered tests [04:03] creationix: fictorial: so it's still working for you then? [04:03] cloudhead: creationix: shouldnt be any different than other modules, the /index.js file is what you want to require() though [04:04] fictorial: creationix: yes [04:04] Aria: Woot! Fixed the worst part of the HTML5 parsing algorithm. [04:04] creationix: cloudhead: yes, but it seems to require the whole less.cs directory structure to be left intact [04:04] cloudhead: yea [04:05] cloudhead: you want it as a single file, is that what you're asking? [04:05] creationix: also I want to install the lessc as a binary in nvm [04:05] creationix: cloudhead: I'm used to everything being under a lib folder with either a less.js or less/index.js file inside it [04:06] cloudhead: well, your index.js is in / [04:06] mjijackson: Aria: i'm curious, why do you call it the html5 parser? [04:07] mjijackson: doesn't it work for html 4? [04:07] Aria: It's the algorithm specifically defined in http://dev.w3.org/html5/spec/syntax.html [04:07] cloudhead: creationix: I see what you mean now [04:07] cloudhead: I thought the convention was to put index.js in the root folder [04:07] Aria: HTML4's syntax is much more loosely defined, and error handling semantics are completely dependent on browsers. [04:08] creationix: cloudhead: I can make a quick patch to show what I mean [04:08] Aria: The HTML5 spec has some really really solid ways to deal with the broken code out there on the web. [04:08] cloudhead: creationix: yea, everything else is under lib/less [04:08] Aria: "Here! This specific broken code should yield _this_ valid parse tree, plus this list of errors" [04:08] cloudhead: so it would just be a matter of moving index.js there [04:09] mjijackson: Aria: I see. sounds great! [04:09] Aria: That's what I said. [04:09] creationix: cloudhead: yep http://gist.github.com/390366 [04:10] creationix: probably needs some other files updated too [04:11] mjijackson: Aria: so what happens when an html5 parser tries to consume an old html 4 document that doesn't meet the spec? [04:11] Aria: That's the thing, it defines sane semantics for dealing with broken docs for the first time. [04:11] Aria: And valid docs work as expected. [04:11] mjijackson: Of course, this would probably be a rare occasion because anybody using hopefully knows what they're doing... [04:11] Aria: Nah, this handles ~all HTML. [04:12] Aria: (though tells it to turn off a few quirks (mostly outside the parsing algorithms, more to do with layout and higher level stuff) [04:12] mjijackson: Wow. That really is excellent. [04:12] Aria: Yeah. I'm really enjoying this project. Solid, useful, rigorous, and fun. [04:13] cloudhead: creationix: yea, I'd like to keep it as 'index.js' though, to reduce confusion, as there is another less.js which is for the browser [04:13] twomashi has left the channel [04:13] mjijackson: Aria: how are you doing the parsing? Is it regex-based or are you using a parsing lib? [04:13] creationix: you can keep it as index.js and just put it in the lib/less folder [04:13] Aria: It's a hand-built parser, specific to the task. [04:14] cloudhead: creationix: yea, will do [04:14] Aria: Tokenizer that uses some regexes where sane, some single character matching and a bunch of state machine. [04:14] creationix: cloudhead: awesome [04:14] Aria: Then on top of that, the HTML5 insertion-mode chooser, which handles all the weird cases when tokens are out of order. [04:14] creationix: cloudhead: now I'm trying to figure out how to get my textmate less bundle to use the new lessc [04:14] creationix: but that's an nvm issue, not a lessc issue [04:14] Aria: It's two GIANT state machines. [04:17] creationix: Aria: I know, it's great they specified how to handle broken html [04:17] mjijackson: Aria: looking through the code now. those really are giant! :O [04:18] Aria: Hehe. [04:18] Aria: Look at endTagFormatting in lib/html5/parser/in_body_phase.js. It's the most horrible thing. [04:18] cloudhead: creationix: btw the new lessc just outputs to stdout, so you have to redirect it to a file [04:18] Aria: And not because the code sucks. [04:18] cloudhead: I changed it for flexibility [04:19] creationix: cloudhead: ok, thanks [04:21] mjijackson: Aria: wow. 13 different steps, and that's not counting the . ones! [04:21] Aria: Hehe. Yep. [04:21] Aria: But it works.

yields

[04:21] mjijackson: How close are you to finishing implementing the spec? [04:21] Aria: Probably a week of calendar time. [04:23] mjijackson: Best of luck to you. It's a very ambitious project, and one that I'm sure a lot of people will get some good use out of. [04:23] Aria: That's my hope! [04:23] Aria: And to think, it started off as me wanting to write a node version of mousehole. [04:24] mjijackson: Ha! That's how all my projects start out. [04:24] Aria: So this is like the world's largest yak shaving enterprise. [04:24] mjijackson: lol [04:24] mjijackson: ACTION doesn't type "lol" unless he actually laughs out loud [04:24] Aria: ACTION grins. [04:24] cloudhead: creationix: http://github.com/cloudhead/less.js/commit/1b9d4e472d0100e73e95ef924f8a52622e93c4fa [04:26] tk: heh someone tweeted about coining LLOL for when you literally laugh out loud :P [04:28] bpot has joined the channel [04:28] creationix: cloudhead: cool, I'm trying to get it to play nice with nvm still, you should add the path to lib in lessc and then just require as 'less' [04:28] creationix: then lessc will work on systems that have less installed already [04:29] creationix: by installed, I mean with lib being in the NODE_PATH [04:29] creationix: or .node_modules [04:29] isaacs: Aria: hey [04:29] isaacs: Aria: would this resolve your use case, where you own ~/.node_libraries but not /usr/local/bin? http://github.com/isaacs/npm/issues#issue/5 [04:30] isaacs: Aria: basically, i'll detect whether or not process.installPrefix is owned by root, and if so, act like a sudo-requiring global package manager. if you're running with some user-owned node install, then i'll act like a per-user package manager. [04:31] isaacs: Aria: also, rather than use process.installPrefix always, i'll look at the config for a "prefix" setting, so that you can tell it to install PATHy things wherever you prefer. [04:32] Aria: Sounds reasonable. You're checking ownership rather than path, though? [04:32] creationix: isaacs: I'm solving that problem in nvm by creating a new local bin folder and adding it to PATH [04:33] isaacs: Aria: yeah. since my mac is a single-user box, for instance, i just chown-ed /usr/local [04:33] Aria: (I often run code as not-me, testing it in an unprivileged environment -- though with my environment variables) [04:33] Aria: Hm. Seems a dodgy way to do it. [04:33] isaacs: Aria: well, root still owns /usr [04:33] isaacs: Aria: i treat /usr/local is basically "like the root fs, but mine" [04:34] Aria: ACTION nods. I think that's rare in practice. [04:34] isaacs: Aria: it's growing in popularity, since homebrew encourages that [04:34] Aria: (Every system I've ever come in contact with has treated it as "/usr/local is the parts that aren't part of the OS" -- but certainly not a single user's.) [04:34] creationix: cloudhead: I patched nvm and now it plays nice with lessc http://github.com/creationix/nvm/commit/2527ff6b1f63d09eebdf9a3148bbc1dccaf7f514 [04:34] isaacs: Aria: if it's not the OS's, and it's on sistertrain-lm, then it IS a single user's [04:34] isaacs: Aria: this laptop doesn't even have an enabled guest account [04:35] Aria: sistertrain-lm? [04:35] Aria: Interesting. I deal with more business systems -- CentOS, Debian, Solaris, PLD, all servers. [04:35] Aria: Even my mac workstation is 3-users. [04:35] isaacs: Aria: weird. [04:35] isaacs: Aria: anyway, in those cases, you should either install *everything* in your home dir, i'd think, or run as sudo, and install *everythign* for allusers. [04:35] cloudhead: cool [04:36] Aria: Sounds reasonable. [04:36] isaacs: but dropping some stuff in /usr/local and some stuff in $HOME/.node_libraries seems... wrong. [04:36] isaacs: it's less wrong on a single-user laptop, but still. [04:36] Aria: Yeah, probably so. Unless you admit it and let the user build as many libdirs as they want, special environments for whatever projects. [04:36] isaacs: well, you kinda can do that [04:36] isaacs: you can always do npm --root /path/to/whatever install foo [04:37] Aria: (this is my preferred way to deal with version dependency conflicts.) [04:37] isaacs: and it'll use that instead of .node_libraries [04:37] Aria: ACTION nods [04:37] isaacs: Aria: npm deals with version dependency conflicts by using magic. [04:37] Aria: Hehe. Boooo magic. [04:37] isaacs: and by "magic", i mean, "commonjs fixed that problem at the outset" [04:37] Aria: Hehe. Yeah. It certainly does help. [04:37] Aria: Things are so nice and isolated! Few leaks! [04:38] creationix: isaacs, what about detecting the presence on NODE_PATH and installing libs there [04:38] isaacs: creationix: i could do that. but that's what require.paths is already anyhow [04:38] creationix: and I added a new convention $NODE_BIN for a place to put executables for libraries [04:38] webben has joined the channel [04:38] Aria: Hm [04:38] isaacs: creationix: i like that. [04:39] isaacs: creationix: you know, nvm and npm are only 1 letter off. we should talk. [04:39] creationix: :) [04:39] creationix: mine doesn't really do package management, it just messes with environment variables [04:39] isaacs: at teh very least, i should print some kind of warning if npm's --root config isn't in the process.env.NODE_PATH [04:39] isaacs: interesting. [04:40] creationix: and compiles node versions [04:40] creationix: I have some package management in the form of linklib and addlib commands [04:40] isaacs: creationix: you know, you could use a similar approach to what npm does. [04:40] creationix: you cd into the git clone of a project and type "nvm linklib" [04:41] isaacs: i see [04:41] creationix: and it links the bin contents into NODE_BIN and the lib contents into NODE_PATH [04:41] creationix: no repository, no dependency, no versions [04:41] isaacs: couldn't you just ./configure --prefix=/path/to/nvm/0.1.93 and then install it, and do a symlink to the active version? [04:41] creationix: I can't do symlinks because I need concurrent environments [04:42] Aria: That ++ [04:42] creationix: symlinks are system global [04:42] isaacs: concurrent... wha? [04:42] Aria: Run one app with one set, another with another, at the same time [04:42] creationix: messing with PATH and NODE_PATH only affects a single bash shell [04:42] isaacs: i see. [04:42] creationix: I have several apps on the same machine running different versions of node with different sets of modules installed [04:43] isaacs: right. so you could do NODE_VERSION=0.1.93 node foo.js [04:43] isaacs: if "node" was actually a shell script that picked the $NODE_VERSION one [04:43] isaacs: or something [04:43] creationix: true, but with changing path and everything, it's a more complete changeover [04:43] creationix: you can't even see executables for other environments when one is active [04:44] scott_gonzalez: _ry: chat + irc is complicated... I need to create clients in node to do the proxying in order to keep the connections alive :-/ [04:45] creationix: dang, my global "lessc" still doesn't work when nvm is disabled [04:46] creationix: I now see why rubygems generate hard-coded ruby paths in the shebang of generated executables [04:46] creationix: I wish __dirname was the real path, not the path to the symlink [04:47] isaacs: creationix: i'm glad it's not [04:47] Azeroth has joined the channel [04:47] creationix: yeah, I guess you need it both ways sometimes [04:47] webben has joined the channel [04:48] isaacs: wow, so, i guess there's no global builtin NODE_PATH any more, huh? [04:49] isaacs: /usr/local/lib/node_libraries and /usr/local/lib/node/libraries are no more? [04:50] _ry: scott_gonzalez: hmm - that shouldn't be necessary [04:50] kriskowal has joined the channel [04:51] _ry: isaacs: right [04:51] _ry: the scripts are just compiled in [04:51] creationix: cloudhead: http://gist.github.com/390390, minor change, but allows me to symlink to my local lessc from /usr/local/bin and still find the system installes less module [04:51] scott_gonzalez: _ry: how would the proxying work then? [04:51] _ry: scott_gonzalez: it's all in memory [04:52] isaacs: _ry: i know about the compiled-in bit, and that's lovely. but it'd be nice if there was a place where i could drop a js file for all users to see. [04:52] isaacs: _ry: without requiring them to all update their $NODE_PATH setting [04:52] scott_gonzalez: _ry: but when someone logs into chat, they also need to log into irc [04:52] isaacs: _ry: maybe path.join(process.installPrefix, [04:52] isaacs: " [04:52] isaacs: _ry: maybe path.join(process.installPrefix, "node_libraries") or something [04:52] _ry: scott_gonzalez: you can just create some sort of fake identity for them [04:52] _ry: scott_gonzalez: then tell all the other irc peple that someone connected [04:53] cloudhead: creationix: looks good, will merge it in [04:53] creationix: cloudhead: :) [04:53] _ry: isaacs: yeah - i guess [04:53] towski has joined the channel [04:53] creationix: textmate can't see my nvm environment stuff, but it can see a symlink in /usr/local/bin [04:53] _ry: isaacs: i don't think anyone will really use it from multiple user accounts though [04:54] isaacs: er... i guess lib/node would be semanticer [04:54] scott_gonzalez: _ry: the fake identities would expire though [04:54] isaacs: _ry: i'd've guessed the same. apparently, i'm wrong. [04:54] _ry: scott_gonzalez: sure - but then you just tell the other irc people that the fake person died [04:54] isaacs: _ry: Aria tells me that he has 3 user accounts even on his mac workstation. [04:55] _ry: scott_gonzalez: i mean you have full control over the irc server - so you can tell the others whatever [04:55] _ry: tell them 100 people join and quit every second [04:55] _ry: isaacs: huh [04:55] scott_gonzalez: seems like that would provide a much less than ideal channel [04:55] _ry: isaacs: i guess we could add a sys dir [04:56] scott_gonzalez: you'd be flooded with join/quit notices [04:56] _ry: yeah :) [04:56] _ry: but - yeah - there should be no i/o involved between the irc server and http [04:56] towski has joined the channel [04:56] _ry: they're just different ways to view the same data [04:57] scott_gonzalez: right, the proxying would all be through objects in memory [04:57] scott_gonzalez: but you'd want to use the "native" objects for each server [04:57] webben has joined the channel [04:57] charlesjolley has joined the channel [04:57] scott_gonzalez: so joining chat should create an actual irc user [04:58] _ry: need a bit of object orientedness [04:58] _ry: so that the object representing a user can be implemented either as an http user or an irc user [04:58] _ry: user.reportJoin('otheruser') [04:58] _ry: in one implementation that would release the long poll hold [04:59] _ry: in the other it would just send a tcp packet [04:59] _ry: user.say('#node.js', "hello world") [05:00] _ry: maybe that loops through all the users in #node.js and does reportMessage('#node.js', 'ry', 'hello world') [05:01] _ry: i forget the API - but my irc users have methods like that [05:01] _ry: you just got to implement them in http [05:01] SamuraiJack has joined the channel [05:01] _ry: "just" :) [05:01] _ry: maybe it's hard [05:01] scott_gonzalez: heh [05:01] _ry: i haven't tried [05:01] isaacs: _ry: http://github.com/isaacs/node/commit/a5521f79e8d6af69cc3db7a011da7a2dcab1bd4f [05:02] scott_gonzalez: the tricky part is building them as separate projects and shoving them together [05:02] scott_gonzalez: it would probably be much easier building it as a single project [05:02] _ry: scott_gonzalez: oh yeah [05:02] _ry: just mash that crap into one file [05:02] scott_gonzalez: but that seems a bit like cheating [05:02] _ry: psh [05:02] scott_gonzalez: heh, one file [05:03] _ry: file organization is overrated [05:03] _ry: global variables everywher [05:03] _ry: no one cares :) [05:04] scott_gonzalez: heh [05:04] towski_ has joined the channel [05:04] scott_gonzalez: I don't think I can finish this in time [05:04] scott_gonzalez: I need to get some sleep [05:04] _ry: scott_gonzalez: that's cool :) [05:04] _ry: scott_gonzalez: maybe the next talk [05:05] brianmario has joined the channel [05:05] isaacs: every demo day feels like the last. [05:06] CIA-75: node: 03Ryan Dahl 07master * r453c9e6 10/ lib/http.js : Fix whitespace - http://bit.ly/cXKBMF [05:06] CIA-75: node: 03Matt Ranney 07master * reb4951d 10/ (Makefile doc/changelog_footer.html doc/changelog_header.html): Add proper HTML header for changelog so UTF-8 works. - http://bit.ly/bx6uRi [05:06] CIA-75: node: 03isaacs 07master * rc0d42b0 10/ lib/module.js : Look in /usr/local/lib/node for modules, so that there's a way to install modules globally - http://bit.ly/bvvwqe [05:06] CIA-75: node: 03Ryan Dahl 07master * r1415650 10/ test/simple/test-http-304.js : Use test port instead of 8000 in test-http-304 - http://bit.ly/aptOs4 [05:07] isaacs: thanks! [05:07] _ry: scott_gonzalez: i think it's going to be a really cool demo someday [05:07] scott_gonzalez: someday [05:07] scott_gonzalez: when it's actually written :-) [05:07] _ry: the next step will be to hook the irc servers together [05:07] _ry: and run 10 of them [05:07] _ry: like freenode.net [05:08] softdrink has joined the channel [05:08] isaacs: and make a plugin that i can put in my node site and in my webpage to add node-irc-chat to my server, too [05:08] scott_gonzalez: freenode is multiple IRC servers? [05:08] isaacs: into your network [05:08] _ry: then you can scale your http chat simply [05:08] scott_gonzalez: or you just mean multiple physical servers? [05:09] airportyh has joined the channel [05:09] _ry: scott_gonzalez: "There are 894 users and 56673 invisible on 24 servers" [05:09] _ry: there are 24 irc daemons [05:09] _ry: distributed around the world [05:10] _ry: we can do that [05:10] _ry: it's not so hard [05:10] scott_gonzalez: can we start with the chat server? [05:11] scott_gonzalez: I was actually trying to load test it the other day: http://gist.github.com/386871 [05:11] _ry: i'm on lindbohm.freenode.net , you're on zelazny.freenode.net [05:12] _ry: basically there are single tcp links between servers - which stream all the irc data [05:12] _ry: like all messages [05:12] _ry: netsplits are when those tcp links break [05:13] _ry: scales pretty big - several 10s of thousands of users [05:13] _ry: but not infinitely [05:14] _ry: you need some sort of sharding to get bigger [05:14] _ry: like all #node.js users need to be on one of these 3 servers [05:14] _ry: all #haskell users need to be on these other servers [05:15] webben has joined the channel [05:15] _ry: i think you could do that pretty well inside the irc protocol [05:15] _ry: by remembering which channels users usually go on [05:15] _ry: try to group them together [05:15] creationix: cloudhead: htttp://static.creationix.com/LESS.tmbundle.tar.gz [05:16] creationix: just needs less installed in the default $HOME/.node_libraries for textmate to see it [05:16] creationix: it's about 100 times faster than the ruby version [05:17] _ry: (i'm just thinking about how to scale a chat really big) [05:17] mikeal: hrm.... [05:17] tk: _ry: in terms of IRC networks type chats? [05:17] mikeal: if it's just messages [05:17] _ry: tk: yeah [05:17] mape: building an irdc for #node.js? [05:17] mikeal: how many users do you really have to support before you run out of processing [05:17] _ry: mape: already did that ;) [05:18] Aria: It depends on how those users cluster. [05:18] _ry: Aria: yeah [05:18] _ry: i suspect there might be too much interlinking [05:18] mikeal: forget clustering for a second [05:18] _ry: that the server end up having to share all the data anyway [05:18] mikeal: just one node [05:18] mikeal: how many users could you support? [05:18] cloudhead: creationix: nice [05:18] _ry: mikeal: depends how active they are [05:19] mikeal: the connections are cheap when idle [05:19] _ry: mikeal: i guess 1000 or so [05:19] mikeal: nah, you could do 10K messages a second [05:19] tk: _ry: well the real scaling on a large network comes from choosing the right hubs to interconnect I would think -- then majority of traffic only travels between 2 servers, the rest is split from the hub and filtered to each respective server [05:19] Aria: Yeah, in a classic IRC setup. [05:19] Aria: Though with multiple interlinks, one can be more efficient. [05:20] mikeal: my concurrent performance tester does like 2K requests a second and it only uses 25% of one of my cores [05:20] _ry: it might be best to do it with one connection per channel [05:20] _ry: then the servers don't need interlinks [05:20] _ry: channels can be localized [05:20] mjr_: You could probably support as many users as you could allocate sockets. [05:20] mjr_: So, probably 65K [05:20] mikeal: why don't we just use Redis :) [05:21] mjr_: Unless you got multiple IPs on the server, then who knows. [05:21] _ry: well suppose we can use 65k - i suspect node needs too much memory [05:21] _ry: unfortunately [05:21] mjr_: How much? 4GB? [05:22] mde has joined the channel [05:22] mikeal: did you see that fin project? [05:22] mikeal: it's a realtime messaging system w/ node in front of Redis [05:22] scott_gonzalez: okay, heading to bed [05:23] scott_gonzalez: _ry: good luck with the presentation tomorrow [05:23] _ry: scott_gonzalez: thanks for trying :) [05:23] _ry: scott_gonzalez: night [05:23] scott_gonzalez: at least I'm closer to having a cleaned up ircd :-) [05:24] _ry: mjr_: plurks numbers are like 1-2gigs for 100-200k users [05:24] webben has joined the channel [05:24] mjr_: well, that's no problem then [05:24] mjr_: 1GB per 100K users? Cheap. [05:24] Aria: Very, very cheap. [05:24] mikeal: that's silly cheap [05:25] mjr_: I ran some rough calculations, and I put it at quite a bit more than that though. [05:25] mjr_: But still in the "cheap" range. [05:25] _ry: yeah - that's like 10k per connection [05:25] _ry: i'd imagine it more [05:26] mjr_: mikeal: are you coming to Yahoo tomorrow to ask Hard Node Questions when _ry talks? [05:26] mikeal: i didn't find out about that thing until today [05:26] _ry: anyway - you can put a lot of users on a server - but i think you'll have trouble scaling to 1million [05:26] mikeal: and i really don't feel like driving to Sunnyvale tomorrow [05:26] mikeal: we're suppose to have some people in the office tomorrow too [05:27] _ry: people should try this: node benchmark/http_server.js [05:28] _ry: ab -n 5000 -c 100 http://127.0.0.1:8000/buffer/1000000 | grep Transfer [05:31] _ry: er (maybe i didn't upload the changes to that script) [05:32] creationix: _ry: I got Transfer rate: 453.26 [Kbytes/sec] received [05:32] mjr_: http_server.js? [05:32] mjr_: http_simple.js? [05:33] creationix: true, I trued http_simple [05:33] creationix: * tried [05:34] mjr_: I get 524KB/sec on my Mac laptop [05:34] mjr_: From 3 years ago [05:35] derferman has joined the channel [05:36] mjr_: But 723KB/sec on a much newer Linux server. [05:36] CIA-75: node: 03Ryan Dahl 07master * rab723d0 10/ benchmark/http_simple.js : Add buffer response to http_simple.js - http://bit.ly/aEp2u9 [05:37] creationix: that should help [05:37] _ry: yeah sorry [05:37] _ry: try it with that [05:37] creationix: ACTION recompiling [05:38] creationix: Transfer rate: 594362.91 [Kbytes/sec] received [05:38] _ry: check that `curl http://127.0.0.1:8000/buffer/1000000 | wc -c` returns 1000000 [05:38] creationix: (guess I didn't need a recompile the only change was the js file) [05:38] _ry: that's big throughput [05:39] mjr_: 658177.51 [05:39] _ry: it doesn't mean that much.. but [05:39] _ry: if you store static files in buffers [05:39] _ry: and just push them to socket like that [05:39] _ry: it's actually measurably faster than nginx [05:39] creationix: which is exactly what wheat does [05:40] mjr_: 449870.62 on my Mac laptop. [05:40] creationix: switching to buffers made a huge difference for large files like images [05:41] _ry: yeah - on the other end of the spectrum [05:41] _ry: string i/o sucks hard [05:41] creationix: now all I need to do is write a node process manager that handles virtual hosts and process monitoring and I can ditch nginx and monit [05:41] _ry: min mean[+/-sd] median max [05:41] _ry: Connect: 0 1 0.9 1 11 [05:41] _ry: Processing: 42 114 16.3 114 511 [05:41] _ry: Waiting: 1 16 9.5 17 62 [05:41] _ry: Total: 43 116 16.3 116 512 [05:42] _ry: i think it's pretty good [05:43] _ry: esp considering the whole thing is written in js [05:43] creationix: my sousaball demo still uses strings for static assets, and doesn't have any caching [05:43] creationix: http://sousaball.heroku.com/ [05:43] creationix: you can see the image load every time [05:43] saikat: is there a zlib module for JS? [05:44] creationix: hmm, seems heroku is caching it for me, nevermind [05:45] _ry: creationix: how do you find the heroku ? [05:46] _ry: i haven't tried it yet [05:46] creationix: _ry: it's easy to set up and seems ok performance [05:46] colin__ has joined the channel [05:46] creationix: but it's quite limited in what it can do still [05:46] creationix: yuck, my jpeg gets 15 reqs/sec [05:47] creationix: though, their cpu must be fast Transfer rate: 962.37 [Kbytes/sec] received [05:47] creationix: that's with strings for IO [05:48] admc has joined the channel [05:50] _ry: hopefully by changing file io to default to buffers [05:50] _ry: people will start using that [05:50] creationix: yes, then we can serve static assets as fast as nginx with having to pre-cache it [05:50] _ry: just fs.readFile will return a buffer - so there won't be much thought involved [05:51] creationix: *without [05:51] _ry: it's important that node is fast by default instead of having to know these tricks [05:51] BryanWB: creationix: tried to push you a pull request but having git problems [05:51] BryanWB: creationix: here is my patch for Step, http://gist.github.com/390420 [05:51] BryanWB: will send u a pull request once my network regains its sanity [05:52] creationix: BryanWB: why do you want to tag the function? [05:52] creationix: _ry: is the fs.readFile with buffer part done yet? [05:52] creationix: or is that still in the works [05:52] BryanWB: creationix: so u can just pass callback for "this", "parallel" or "group" [05:53] BryanWB: creationix: and "callback" for this and parallel but "callback()" for group [05:53] bpot has joined the channel [05:53] BryanWB: s/and/currently u have to/ [05:54] _ry: creationix: still in the works [05:54] _ry: creationix: would love a patch for it [05:54] _ry: i just did fs.read and fs.write for buffers yesterday [05:54] creationix: _ry: heh, sorry, I'm busy this week trying to move to CA [05:54] _ry: ;) [05:55] _ry: ACTION always tries to pawn off work on others :) [05:55] admc_ has joined the channel [05:55] creationix: I should see you guys Saturday at the BBQ if I get there on time [05:55] BryanWB: I kept messing up the syntax for "this" "parallel" and "group()", imho letting users use generic "callback" is easier [05:55] _ry: creationix: oh great [05:55] creationix: BryanWB: I noticed you used some patterns I hadn't thought of [05:55] creationix: shouldn't parallel be parallal() [05:56] creationix: parallal() and group() are both callback generators [05:57] BryanWB: creationix: u have to invoke group() twice and parallel() only once, this gets confusing quickly [05:57] creationix: yes, but the two invocations do two different things [05:58] creationix: the first creates a placeholder for the group, and the second registers a callback within that group [05:58] creationix: parallel just registers a callback within the overall step [05:58] creationix: and this is already a callback for everything [05:58] creationix: there should be cases where you're mixing "this" and "parallel()" or "group()" [05:58] creationix: *shouldn't [05:59] creationix: you can always use parallel() in place of "this" if you want, it's not much overhead for the case of only one callback [05:59] creationix: at least then you have the uniformity you're looking for [05:59] BryanWB: creationix: sure [06:01] mape: How did you decide on what root CA's to use? [06:07] Azeroth has joined the channel [06:08] fizx has joined the channel [06:12] SvenDowideit has joined the channel [06:19] creationix: _ry: how do you get a buffer from fs.read? [06:20] creationix: encoding of undefined, or skip that argument? [06:27] freshtonic: has anyone here seen a kernel panic while benchmarking node on OSX? [06:49] piranha has joined the channel [06:53] tk: hmm any clue what a "Parse error" for client.ondata means or a better way to troubleshoot it? [06:54] _ry: tk: http server? [06:54] tk: client [06:54] _ry: tk: head req? [06:55] tk: ohh maybe found it, might have missed a require when I moved my test file over to the real file [07:01] tk: or not... had a missing require to querystring but still... not quite it [07:03] tk: _ry: this is my request, http://pastebin.com/XZcSMuCr [07:05] tk: non of the sys.puts() appear to fire though [07:14] tk: more debugging otuputs show that it dies at the request.addListener line [07:23] _ry: :/window 2 [07:24] felixge has joined the channel [07:24] felixge has joined the channel [07:25] isaacs: hey, this is odd... when i write a buffer with fs.write, it seems like it's using ascii-ification of the utf8 rather than writing the bytes in the buffer... [07:30] teemow has joined the channel [07:32] _ry: isaacs: hmm? [07:32] isaacs: oh, nvm, i'm dumb. [07:33] isaacs: serves me right for using an undocumented api [07:33] isaacs: i rtfs'ed, but it's late, so i misread. [07:33] romainhuet has joined the channel [07:36] kjeldahl has joined the channel [07:39] dgathright has joined the channel [07:41] micheil: fictorial: ping [07:42] micheil: fictorial: I'm open to API changes. [07:42] JimBastard has joined the channel [07:42] teemow has joined the channel [07:47] JimBastard: does anyone here know whats up with implementing IEnumerator from .net into JS? [07:47] JimBastard: http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx [07:47] JimBastard: i think it makes sense instead of just using Array [07:47] JimBastard: but im not 100% sure how the memory management in JS works [07:48] JimBastard: i think it would be worth it for larger objects [07:50] darkf has joined the channel [07:51] micheil: fictorial: ah, I see what you're saying about tim's websocket server [07:51] mscdex has joined the channel [07:52] Azeroth: http://github.com/azeroth48/nmath/blob/master/nmath/vector3.js <-- is there a better way to put this together? [07:52] micheil: fictorial: mine is slightly similar, although, rather then taking a callback as the first argument, it emits an event, like the "request" event in the HTTP module [07:53] micheil: Azeroth: that looks like some ugly code, and I think it could be done better [07:53] micheil: Azeroth: I'm not yet sure how though [07:53] micheil: Azeroth: why are you extending the nMath objecT? [07:54] micheil: Azeroth: also, new lines in javascript don't matter, use them, it'll make your code more readable [07:54] Azeroth-Working has joined the channel [07:55] vhost- has joined the channel [07:55] Azeroth-IsWorkin has joined the channel [07:56] Azeroth-IsWorkin: bah [07:56] hellp has joined the channel [07:58] JimBastard: heh [07:58] JimBastard: http://github.com/explore [07:58] JimBastard: im trending again! [07:58] JimBastard: and so is node [07:58] JimBastard: :-D [07:59] micheil: nice job! [08:00] micheil: Azeroth: is nMath.Vector3.Add meant to work as a prototype? [08:00] Azeroth: no is like a static function in c# [08:00] micheil: eg, V1.Add(v2) [08:00] micheil: or Vector3.Add(v1, v2) [08:00] Azeroth: 2nd [08:01] Azeroth: nMath.Vector3.Add(vec1,vec2); [08:01] Azeroth: is how im currently calling it in my test.js [08:02] Azeroth: http://github.com/azeroth48/nmath/blob/master/test.js [08:05] micheil: Azeroth: this should do the same thing: http://gist.github.com/390522 [08:05] micheil: in Node.js, there is no one global scope [08:06] micheil: each module gets it's one global scope (unless you mix into the Global object, which is discouraged) [08:06] isaacs: micheil: erm.. yeah there is. [08:06] isaacs: micheil: if you just do "foo = 1", then you'll see a global foo in every module [08:06] micheil: isaacs: since when?> [08:06] qFox has joined the channel [08:06] isaacs: micheil: since always [08:06] micheil: hmm.. [08:06] isaacs: micheil: it's just inside a closure [08:06] isaacs: micheil: but if you don't var, then it'll leak [08:06] jfd has joined the channel [08:06] micheil: I thought modules were executed inside of a closure, hence the need for exports [08:07] isaacs: yes [08:07] isaacs: but js vars are global by default, for reasons of dumbness. [08:07] isaacs: "foo = 1" is not the same as "var foo = 1" [08:07] isaacs: the first makes foo a global [08:08] micheil: good point [08:09] micheil: but either way, my point still stands that if you do: var nMath = require("./nMath"); nMath.foo = function(){}; [08:09] micheil: when you require both nMath and that file, nMath will not have the foo method [08:09] micheil: (or atleast, I don't think it should) [08:10] micheil: Azeroth: you could also change exports.Vector3 to modules.exports [08:12] micheil: fictorial: aha! now I see how tim avoids the emittance leak in his websocket server. nifty. [08:13] micheil: fictorial: however, it'd be much easier for him to work of the http.Server, now that we have the "upgrade" event [08:15] felixge has joined the channel [08:15] felixge has joined the channel [08:22] voltie has joined the channel [08:23] Azeroth: modules.exports = ReferenceError: modules is not defined [08:24] Azeroth: micheil: http://github.com/azeroth48/nmath/blob/master/nmath/vector3.js [08:24] Azeroth: is alot cleaner now thanks :D [08:24] micheil: module.exports, my bad [08:25] JimBastard: it looks like some russian is losing his shit on the mailing list lol [08:26] Nohryb_ has joined the channel [08:28] Nohryb__ has joined the channel [08:29] kjeldahl has joined the channel [08:31] zomgbie has joined the channel [08:37] xla has joined the channel [08:46] N` has joined the channel [08:47] bpot has joined the channel [08:47] isaacs has joined the channel [08:47] mikeal has joined the channel [08:47] PyroPeter has joined the channel [08:47] jasondavies has joined the channel [08:47] dekroning has joined the channel [08:47] brainproxy has joined the channel [08:47] bajeczka has joined the channel [08:47] eyzn has joined the channel [08:47] syntaxritual has joined the channel [08:47] trodrigues has joined the channel [08:47] adovenmuehle has joined the channel [08:51] V1 has joined the channel [08:54] TomY_ has joined the channel [08:54] BryanWB has joined the channel [09:02] jaygooby has joined the channel [09:03] javajunky has joined the channel [09:04] jaygooby: Has anyone had any joy combining any of the routing modules, static file serving and websocket in a single app? [09:06] jaygooby: I built http://election2010.gooby.org/ but I ended up static serving via nginx and leaving the websocket on a separate port. I was hoping to do it all over port 80 - http://jay.gooby.org/post/realtime-election-tweets [09:07] qFox: i've only done static file serving :) [09:07] qFox: on a fairly straightforward way [09:07] qFox: oh and proxying [09:07] mape: qFox: There are talks on it [09:07] qFox: mape> what do you mean? [09:08] mape: Em. just need to remember where I saw it [09:08] mape: qFox: using websocket on the same port [09:08] qFox: oh you mean jaygooby ;) [09:08] mape: oh yeah [09:09] qFox: I saw a post about using htaccess to redirect certain traffic to node, whilst serving the rest through apache. but dont think that applies here.. [09:09] mape: using upgrade on the http... [09:09] mape: or I just dreamt that [09:11] mape: http://www.web2media.net/laktek/2010/05/04/implementing-web-socket-servers-with-node-js/ [09:11] jaygooby has joined the channel [09:13] jaygooby: Notionally using the websocket on port 80 should be fine, because you can have a URL like ws://foo.com/some/url - the problem I hit was that the Flash fallback in http://github.com/gimite/web-socket-js seems to ignore the path portion of the URL and just hit / [09:16] jaygooby: I guess the real problem at the moment is that each server has its own distinct .listen() so you either need to rewrite the modules so they all listen on the one distinct port or do some non-node plumbing to glue the static/dynamic/sockets together. I kept hitting a brick wall getting nginx to proxy the websocket in a sane manner [09:25] BryanWB: can anyone explain this code to me ? http://gist.github.com/390561 I don't understand why the subprocess doesn't exit before the "exit" listener is added [09:26] mape: BryanWB: http://gist.github.com/390568 good to name the filenamne.js so you get the hilight :) [09:27] BryanWB: mape: excellent suggestion :) [09:28] mscdex: blargh, for some reason the browser isn't getting a response body from node.js when doing XHR [09:28] mscdex: it gets the Content-length header fine though, with the correct count [09:31] qFox: are you .end-ing the connection? [09:31] mscdex: yep [09:31] qFox: IE? [09:31] mscdex: firefox 3.6 [09:31] qFox: k [09:34] mscdex: the simple function is here: http://gist.github.com/390576 [09:37] qFox: hmmm, maybe add the return padding? not sure... [09:37] jaygooby: mscdex: happened to me yesterday. I was calling from an html file on port 80 to a node app running on 8080 - the cross domain policy was blocking the body response. Different port = different domain as far as XHR concerned [09:37] qFox: it could still be waiting for data because the content-length is not reached [09:37] _ry: jaygooby: just do the websocket in the same node http server [09:38] mscdex: i figured it might have to do with that, but it gets the content-length header? [09:38] MattJ has joined the channel [09:38] mscdex: hmmm [09:40] jaygooby: msdex - yep. Firefox reports content length correctly, as well as a 200, but in Firebug its still coloured red like a 404? That's the cross-domain restriction kicking in [09:40] mythz has joined the channel [09:41] mscdex: no, it's black actually. i did see the red 403 earlier though when I was doing xhr-multipart instead of xhr-polling though [09:41] hassox has joined the channel [09:42] mscdex: er 404 rather [09:43] jaygooby: _ry - thanks. [09:45] jaygooby: _ry - Instead of all the different server modules, all using their own .listen()s it would be nice if we could chain them together and use a single .listen at the end of the chain with a single port :D [09:45] bmizerany has joined the channel [09:45] _ry: jaygooby: for websocket i think that's totally reasonable [09:46] _ry: jaygooby: http://www.web2media.net/laktek/2010/05/04/implementing-web-socket-servers-with-node-js/ [09:51] mythz has left the channel [09:52] jaygooby has joined the channel [09:57] jaygooby: _ry - thanks for the link [09:58] mscdex: a-ha! i finally got it working [09:58] mscdex: ff 3.5+, safari 4, and IE8 support cross-domain XHR [09:58] mscdex: just needed to send back a couple extra headers [10:03] BryanWB has joined the channel [10:05] mythz has joined the channel [10:09] darkf_ has joined the channel [10:16] Azeroth: hrmm is there a equiv in js to this Vector3 operator -(Vector3 left, Vector3 right) ? [10:17] Azeroth: so like i could do var v = vec1 - vec2; [10:17] maushu has joined the channel [10:18] jfd has joined the channel [10:23] unomi: no, you would need to write an object / function to handle that [10:23] Azeroth: aww [10:23] unomi: vec.sub(v1,v2) [10:23] Azeroth: already done that [10:23] Azeroth: was hoping [10:23] Azeroth: hopeing [10:23] unomi: afaik you can't overload operators [10:30] jan____: RT @jhttp://twitter.com/jsconfeu Yes, we're open: http://jsconf.eu/2010 for hardcore proposals http://goo.gl/EZ0X and early tickets http://goo.gl/VyO3 [10:36] BryanWB: is there any way I can an a event listener for a signal to a child process? [10:38] BryanWB: damn, damn jsconf will be during my honeymoon [10:42] Gruni has joined the channel [10:43] qFox: your honeymoon to Germany? :p [10:44] micheil: jsconf EU? when when when? [10:44] qFox: 25 26 sept [10:44] micheil: neat [10:44] qFox: wished they at least announced some speakers [10:44] BryanWB: qFox: I wish it would be Germany :) will have to suggest that to the fiancee [10:45] qFox: hehe [10:45] qFox: i'm sure she'll appreciate it ;) [10:46] BryanWB: Any noders in Rome? i am moving there in July [10:55] derbumi has joined the channel [11:00] V1: Hmz jsconf berlin.. I might actually be able to go there [11:01] V1: 500km drive, over the german auobahn [11:01] qFox: with no speed limit... [11:01] V1: Google maps tells me it will take 5 hours, but i wanna bet i can make it 3 hours ;D [11:01] qFox: should take you about 3 to 4 hours :) [11:03] V1: tempting, but i'm already going to so many confs :p [11:05] V1: Gotta love my job, my boss will pay for hotel :) [11:06] qFox: yep. i'll be at jsconf.eu and fronteers [11:06] qFox: paid by the boss :) [11:06] V1: Cool :) [11:24] jan____: V1: qFox: sorry to spoil the party but our autobahns are pretty clogged usually, no way to go full speed [11:24] jan____: but see you in berlin :D [11:24] V1: @jan thanks god i don't drive a car ;) [11:24] botanicus has joined the channel [11:24] qFox: ah well, I'm coming from the Netherlands :p [11:25] jan____: qFox: no way in hell you get here in 3 [11:25] hassox has joined the channel [11:25] jan____: :) [11:25] V1: Same, so we are probably used to traffic [11:25] jan____: I'd take the train [11:25] qFox: and, if coming by car by myself, I'll be driving a car that can marginally get to 120km/h on straight roads. let alone mountains. [11:25] qFox: :p [11:26] qFox: but since the boss pays, I expect some arrangements will be made to go as a group, etc. [11:26] V1: I'm probably going by motor cycle [11:26] botanicus has joined the channel [11:26] V1: Only need a laptop, cloths and cash anyways ;) [11:26] qFox: :) [11:28] unomi has joined the channel [11:34] sveisvei has joined the channel [11:36] keeto has joined the channel [11:37] jan____: qFox: funny to read netherlands and mountains in one sentence :) [11:37] qFox: we have a mountain! well.. we have an area above sea level! [11:38] jan____: aye :) [11:38] V1: Even more than one! [11:43] Kuroki has joined the channel [11:43] Kuroki: hello [11:43] Kuroki: any1 here? [11:43] V1: probably :) [11:44] Kuroki: i have a question [11:44] Kuroki: what the best substitute for process.mixin in new Node versions? [11:45] ashb: for (var i in x) { y[i] = x[i] } [11:51] keeto has joined the channel [11:51] jan____ has joined the channel [11:52] tk: hwh 120km/hr.... speed demon... :P [11:52] tk: heh too [11:52] jan____ has joined the channel [11:52] jan____ has joined the channel [11:52] TheEnd2012 has joined the channel [12:11] thotypous has joined the channel [12:28] micheil: ashb: I think it's Object.create or Object.keys, not a for...in.. [12:29] mape: var keys = Object.keys(objectName); [12:35] creationix has joined the channel [12:39] kriszyp has joined the channel [12:40] keeto_ has joined the channel [12:46] davidsklar has joined the channel [12:46] sveimac has joined the channel [12:53] siculars has joined the channel [13:04] riottaba has joined the channel [13:10] maushu: "Jérémy Lal" [13:10] maushu: His parents really hated him. [13:12] lifo has joined the channel [13:19] derbumi has joined the channel [13:20] keyvan has joined the channel [13:22] mythz has left the channel [13:29] drostie has joined the channel [13:31] pgriess has joined the channel [13:35] mythz has joined the channel [13:36] keyvan has joined the channel [13:39] mjijackson has joined the channel [13:40] scott_gonzalez has joined the channel [13:43] JAAulde has joined the channel [13:48] bweaver has joined the channel [13:51] marktlang has joined the channel [13:51] sveimac has joined the channel [13:53] cruxst has joined the channel [14:03] mjijackson has joined the channel [14:07] riottaba_ has joined the channel [14:07] V1: Hmzz.. searching a good datastore, for my project that node can handle seems to be harder than i thought :p [14:07] mythz: redis? [14:09] N`: riak? [14:09] V1: I was thinking more something like cassandra [14:09] V1: or bigtable [14:09] gf3 has joined the channel [14:09] micheil: V1: what on earth could you need that style of db for? [14:09] BryanWB: cassandra seems pretty robust and scalable and not beta [14:10] V1: Hotel comparison engine [14:10] V1: storing massive amounts of hotel rates and hotels [14:10] gf3 has joined the channel [14:11] Gudmundur has joined the channel [14:11] N`: riak can be a good option for that [14:11] BryanWB: is there a way I can block node while waiting for user input? like readline in bash. this is for a cli script [14:12] steadicat has joined the channel [14:12] N`: with riak-js (http://github.com/frank06/riak-js) [14:12] javajunky: V1L Mongo +1 …just to mess with you [14:12] V1: Will take closer look at riak, thanks for the heads up [14:15] V1: Mongodb sounds like fun, but i don't know if it will meet the requirements of this project [14:15] V1: for a smaller scale project maybe. [14:16] BryanWB: there is a great changelog episode on riak [14:16] V1: But than again, anything would be better than the current solution some people had decided -_-" [14:17] BryanWB: http://www.buzzsprout.com/105/2703-episode-0-1-4-andy-gross-and-sean-cribbs-on-riak.mp3 [14:17] ashb: V1: what gives you the idea that mongodb won't scale? [14:18] BryanWB: ashb: scaling w/ mongodb requires sharding, which acutally multiplies your single points of failure [14:18] V1: It does scale as foursquare is also using it ;) [14:18] airportyh has joined the channel [14:18] BryanWB: still it scales but not in the way that riak, cassandra advertise [14:19] V1: but it doesn't indeed meet that requirement [14:19] ashb: BryanWB: citation needed [14:19] KungFuHamster_: speaking of db's, what's a good small-to-medium scale database that is stable with node and is easy to plug into php? [14:19] ashb: mongo has php bindings :) [14:19] V1: mysql ;) [14:19] ashb: as will most of the others i imagine [14:20] ashb: mysql isn't a Db. its a glorified K/V store [14:20] intacto has joined the channel [14:20] ashb: *isn't a rdbms [14:20] V1: its a "db" [14:20] intacto: anybody else getting 'node http server: Error: ECONNRESET, Connection reset by peer' ? [14:20] KungFuHamster_: it's not an rdbms? news to me.. you should correct the wikipedia entry [14:21] BryanWB has joined the channel [14:21] ashb: KungFuHamster_: it preteneds to be one, but it fails in some many ways [14:21] Gudmundur: can I somehow compile node.js in such a way that it doesn't internalize the library .js files? think I've stumbled upon a bug in http / net and I'd like to try out some stuff [14:21] Yuffster has joined the channel [14:22] KungFuHamster_: but I haven't found any good node mysql solutions.. there's only a few and I either can't get them to work or they're kludges [14:22] intacto: what event is thrown out when a http server connection gets timeout? [14:23] BryanWB has joined the channel [14:23] nefD: KungFuHamster_: The best I did with mysql was the dbslayer method and the mysql-async (or somesuch?) module, though the module is still fairly early in development [14:24] felixge has joined the channel [14:24] felixge has joined the channel [14:24] KungFuHamster_: I looked at dbslayer and got scared by the last code commit being from 2008 [14:24] nefD: I ended up switching to mongodb mostly because I wasn't really happy with either solution, but i've been very happy with the switch.. mongo is great [14:24] nefD: Yep, the same reason I don't like that method.. dbslayer is great, but the lack of activity makes me worried about relying on it [14:24] KungFuHamster_: plus, I exchanged emails with someone saying that dbslayer will crap out past a certain result size [14:25] nefD: whoa- didn't know that.. glad I do now though :P [14:25] intacto: what event is thrown out when a http server connection gets timeout? [14:25] V1: @intacto don't you get a status header? [14:25] V1: 408 [14:25] intacto: nope I mean I'm the server [14:26] KungFuHamster_: nefD, I'll check out mongo [14:26] intacto: how can I learn if a client somehow disconnects or timeouts? [14:27] intacto: so that I can delete it from my users.connections array [14:27] KungFuHamster_: intacto, I'd guess addListener for those events [14:27] intacto: addListener for which event ? [14:28] intacto: server doesnt have an event like end [14:28] intacto: I am currently using request.socket.end event [14:28] intacto: but its not behaving well [14:29] KungFuHamster_: I use sockets, not http.. I assumed http would have similar events [14:29] KungFuHamster_: and no one else was answering :) [14:29] intacto: :D [14:29] intacto: I also have another and bigger issue [14:30] robinduckett: hmm [14:30] intacto: memory usage is always increasing when i check process.memoryUsage() [14:30] felixge_ has joined the channel [14:30] felixge_ has joined the channel [14:30] intacto: is there any way that I can list all the objects created [14:31] robinduckett: KungFuHamster_: I just made a patch to fix node-mysql-libmysqlclient [14:31] intacto: so that I can delete unused references [14:31] drostie: intacto: "good for developing scalable web apps which may or may not develop memory leaks"? :> [14:31] robinduckett: and am writing a nice class to go with it [14:32] drostie: intacto: I wouldn't know how to answer your question without knowing more about the objects that you're trying to create, though. :x [14:32] intacto: kungfumaster why dont you just use a cgi mysql proxy [14:32] KungFuHamster_: robinduckett, my problem was building it... it wouldn't find my libraries. was your fix related to that? [14:32] robinduckett: KungFuHamster_: nope, but I've built it fine, what's your issue/ [14:32] robinduckett: ? [14:33] intacto: drostie: I am just creating references to my socket connections in a users array [14:33] intacto: notting more [14:34] BryanWB has joined the channel [14:34] robinduckett: took me a while to figure out to build it I needed to use node-waf configure build [14:34] KungFuHamster_: robinduckett, Package mysqlclient was not found in the pkg-config search path. My pkg-config fu is weak. [14:34] robinduckett: KungFuHamster_: do you have libmysqlclient installed? [14:34] KungFuHamster_: yep [14:34] robinduckett: you don't need the package then iirc [14:35] BryanWB: ashb: http://www.mongodb.org/display/DOCS/Replication [14:35] robinduckett: Checking for mysqlclient : not found [14:35] robinduckett: Checking for library mysqlclient : yes [14:35] robinduckett: that's what I get when I do node-waf configure [14:35] robinduckett: builds fine [14:35] KungFuHamster_: let me try it again [14:35] robinduckett: (i'm on centos) [14:35] nefD: yeah, when I was messing with that module I had to install a mysqlclient package (I found it strange that I didn't already have it installed).. I could node-waf build the module just fine, but would get segmentation faults when running any of the tests [14:36] robinduckett: nefD that's what I fixed in my patch [14:36] nefD: that particular server was running ubuntu 9.10 though, so YMMV [14:36] nefD: robinduckett: Ah, cool [14:36] robinduckett: the segfaults [14:36] robinduckett: he's trying to cast a null to a string [14:36] robinduckett: and it dies [14:36] TheEnd2012 has joined the channel [14:37] KungFuHamster_: robinduckett, same here, Centos 5.3, and I installed it, but it can't find libmysqlclient [14:37] robinduckett: then you haven't installed it [14:37] KungFuHamster_: $ rpm -qa | grep mysqlclient [14:37] KungFuHamster_: mysqlclient14-4.1.22-1.el5s2 [14:37] KungFuHamster_: mysqlclient14-devel-4.1.22-1.el5s2 [14:37] robinduckett: yum install mysql-devel [14:37] robinduckett: mysql 5 [14:37] robinduckett: is what you need [14:37] pjb3 has joined the channel [14:37] KungFuHamster_: $ rpm -qa | grep mysql-dev [14:37] KungFuHamster_: mysql-devel-5.0.45-7.el5 [14:38] robinduckett: hmm [14:38] qFox: dbslayer works fine btw [14:38] robinduckett: It does [14:38] BryanWB: KungFuHamster_: yum provides "*/libmysqlclient*" [14:38] qFox: but if anyone has a native module that's stable :p [14:38] robinduckett: and I've updated node.dbslayer.js to v0.1.9x [14:38] robinduckett: http://www.github.com/robinduckett [14:39] KungFuHamster_: BryanWB, no result :/ [14:39] robinduckett: KungFuHamster_: then your install is fooked. [14:39] BryanWB: KungFuHamster_: damn [14:40] BryanWB: KungFuHamster_: mysql has a ton of rpms [14:40] KungFuHamster_: yeah it does [14:40] BryanWB: KungFuHamster_: how about $ yum list available | grep mysql [14:40] robinduckett: http://pastie.org/946806 [14:40] robinduckett: ^ that's mine [14:41] robinduckett: hmm [14:41] robinduckett: KungFuHamster_: install EPEL [14:41] KungFuHamster_: BryanWB, http://pastie.org/946811 [14:42] mrjjwright has joined the channel [14:42] robinduckett: su -c 'rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm' [14:42] robinduckett: su -c 'yum install foo' [14:42] KungFuHamster_: ok I'll try that [14:43] robinduckett: brb [14:44] creationix_ has joined the channel [14:44] BryanWB: KungFuHamster_: u need mysql-libs package [14:45] KungFuHamster_: so many rpms :/ [14:45] KungFuHamster_: ok mysql-libs is installing [14:45] alex-desktop has joined the channel [14:45] KungFuHamster_: slow transfer is slooow [14:47] BryanWB: KungFuHamster_: mysql-libs seems to have the file u are looking for http://pastie.org/946824 [14:47] nefD: before i tried mongo i tried couch, and i gotta say, I just did not like it at all [14:47] BryanWB: ACTION is a wannabe linux geek [14:48] colin__ has joined the channel [14:48] KungFuHamster_: hmm mysql-libs conflicts with my main mysql pkg [14:49] BryanWB: KungFuHamster_: damn, then I don't know [14:49] BryanWB: is there a "read" method for fs.readStream? [14:49] sveimac has joined the channel [14:49] mjr_ has joined the channel [14:49] colincampbell has joined the channel [14:50] BryanWB: KungFuHamster_: methinks there is some install group for mysql that would bring in the dependencies u need [14:50] KungFuHamster_: BryanWB, http://pastie.org/946829 [14:51] V1: BryanWB, do you mean the method _.read? [14:51] V1: ._read* [14:51] tekky has joined the channel [14:51] BryanWB: KungFuHamster_: it looks like u have the libs, have you mixed yum + downloading rpms? that can lead to bad results [14:52] BryanWB: and weird conflicts [14:52] KungFuHamster_: BryanWB, I don't *think* so, but it's possible [14:53] BryanWB: V1: i guess so, if create a read stream w/ mystream = fs.readStream('foo'); how do I actually read data from it? [14:53] V1: you go to add a listener for "data" [14:53] BryanWB: V1: ok, tks [14:53] V1: mysteam.addEventListener("data", function( data ){}); [14:53] V1: i think [14:54] joshbuddy has joined the channel [14:56] hellp has joined the channel [14:57] BryanWB: KungFuHamster_: u could try reinstalling w/ $ yum groupinstall "MySQL Database" that is what i would do [14:57] aaronwinborn has left the channel [14:57] KungFuHamster_: BryanWB, might that bork my current mysql install? [14:58] BryanWB: KungFuHamster_: would destroy it :p [14:59] KungFuHamster_: heh [15:01] mythz has joined the channel [15:02] rektide: WOOOO its Cinco De Node [15:03] BryanWB: que maravilla! [15:03] KungFuHamster_: ACTION purchases a round of margaritas. Is 9am too early? [15:04] technoweenie has joined the channel [15:06] robinduckett: it's 4pm here [15:06] BryanWB: KungFuHamster_: it is 9pm here, u can use my timezone as an excuse ;) [15:06] robinduckett: so no [15:06] KungFuHamster_: woot [15:07] sveimac has joined the channel [15:08] bpot has joined the channel [15:10] BryanWB has joined the channel [15:12] felixge_: creationix: I didn't know you quit your job for fun :) [15:12] rektide: KungFuHamster_: 9am is not too early for tequila [15:13] mrjjwright_ has joined the channel [15:13] KungFuHamster_: this mongo tutorial in the browser shell is cool [15:14] JimBastard has joined the channel [15:14] ditesh|cassini has joined the channel [15:17] KungFuHamster_: the JSON style is very apropos for js/node [15:17] creationix: felixge_: yep, it was a blast [15:17] creationix: btu now I'm broke :( [15:17] felixge_: creationix: ouch : ) [15:17] felixge_: creationix: is the new job better? [15:18] felixge_: creationix: you should come and work for nokia here in berlin, they have some awesome javascript jobs : ) [15:19] boaz_ has joined the channel [15:20] creationix: I'm moving to CA to work [15:20] creationix: interviewing with Extjs no monday [15:20] creationix: don't have a new job yet [15:21] micheil: creationix: I dunno, I would've thought it would be get new job, then move to CA, not the other way round [15:22] creationix: nah, this way is more exciting [15:23] creationix: besides, it's silicon valley, I'm sure I can find something [15:23] KungFuHamster_: you got balls moving to Silicon Valley without a job [15:24] _Fuxx has joined the channel [15:24] _Fuxx: aloha :> [15:24] Fuxx has joined the channel [15:24] KungFuHamster_: salutations [15:26] tobeytailor has joined the channel [15:26] robinduckett: felixge_: they employ people with two years experience but no degrees at nokia? :P [15:27] Fuxx: ACTION slaps tobeytailor with a big hex editor ;o [15:27] robinduckett: not getting a degree was my greatest regret :( although not having any student debt has been pretty awesome. [15:28] felixge_: robinduckett: the position(s) I'm aware of are probably flexible in terms of requirements - they need great JS hackers [15:28] Fuxx: if you can make your stuff like ppl with it, you're going fine to in the future [15:28] Fuxx: never mind ;) degree != skill [15:28] felixge_: KungFuHamster_: why should it be difficult to get a job for a good hacker? [15:29] JimBastard: nice creationix [15:29] JimBastard: KungFuHamster_ ive quit jobs without having any prospects and had a new job before the EOD [15:29] robinduckett: felixge_: I just spent the last 12 hours making a vehicle stock control system in Node - although I do feel it's almost irresponsible to make such a vital system in prepreprealpha stuff, I just love Node so much, it's so nice to develop with, even with the api.. inconsistancies :P [15:29] JimBastard: if you are good, people will hire you. it becomes a matter if you want to settle or not [15:29] V1: If you have a good cv / portfolio having a degree or not wouldn't matter [15:30] robinduckett: I'm terrible at writing CV's :( [15:30] JimBastard: i dont have a degree [15:30] JimBastard: and ive been to jail [15:30] JimBastard: i still making 6 figgies (and im 26) [15:30] robinduckett: JimBastard: Is your last name reiser? [15:30] JimBastard: LOL [15:30] robinduckett: (too soon?) [15:30] JimBastard: LOL [15:30] Fuxx: lol robinduckett xD [15:30] JimBastard: noo, just right [15:30] felixge_: Uhm, if you have to send a CV somewhere you kinda lost :) [15:30] Fuxx: i guess reiser got no pc in the jail :P [15:30] robinduckett: I think he got the death penalty :/ [15:31] felixge_: I mean the trick is doing stuff that gets people to offer you jobs, not vice versa [15:31] Fuxx: maybe :P [15:31] robinduckett: ah no [15:31] robinduckett: just 15 years [15:31] tobeytailor: def [15:31] robinduckett: "ReiserFS goes to chroot jail: Hans gets 15-to-life sentence" [15:31] Fuxx: felixge_, : full ack - at least its important what you can do, how you do and where you have done the shit ;) [15:31] mjijackson: felixge_: you mean not doing the people that offer you jobs? [15:31] Fuxx: no one is asking for a degree if you can pwn the whole team :P [15:31] felixge_: mjijackson: haha [15:31] robinduckett: I think one of my problems is that I live in a tiny city in a principality [15:32] robinduckett: Nothing local really [15:32] Fuxx: knowledge is important... not bachelor of sciene or whatever ; [15:32] felixge_: robinduckett: in that case you may have more luck freelancing [15:32] Fuxx: what about moving into a bigger city? [15:32] felixge_: if you don't want to relocate [15:32] felixge_: 90% of all projects I've done so far were remote [15:32] felixge_: never met the people [15:32] felixge_: :) [15:32] robinduckett: felixge_: I freelanced for a year, and have been working here doing web stuff for almost two years [15:33] steadicat has joined the channel [15:33] mythz: the pay for remote work can't be that good? surely you're competing with india/china? [15:33] keyvan has joined the channel [15:33] robinduckett: mythz [15:33] robinduckett: lol [15:33] Fuxx: argh, gonna have to work.. to much todo. felixge_, will you be later around? got some questions about syscalls. nothing hard at least ;) [15:33] BryanWB: i work in Nepal, good devs here make western salaries [15:33] felixge_: mythz: show me the indians as qualified as me that are satisfied to work for less ;) [15:33] Fuxx: robinduckett, and you dont going fine with freelancing? [15:33] nefD: i got my current job by making a browser based game and slapping it on my resume for kicks.. they ended up buying the game for a neat sum and giving me a job :P [15:33] felixge_: Fuxx: sure [15:33] robinduckett: Fuxx? [15:34] micheil: JimBastard: gotten new jobs before EOD, surely that should be EOF ;P [15:34] BryanWB: felixge_: there are indians as qualified as u and they probably earn about the same [15:34] tobeytailor: i'm also freelancing, but nice job offers let me thinking about a change... [15:34] mythz: don't get me wrong i've only ever had bad experiences with remote work, but a lot of the times the managers only notice $$$ not quality [15:34] Fuxx: oh, sry ;) was a quote :P [15:34] felixge_: BryanWB: that's what I'm saying. [15:34] robinduckett: Obviously there are a lot of talented devs in India and China [15:34] Fuxx: tobeytailor: if they pay enought or more.. do it :P [15:34] felixge_: BryanWB: Location doesn't matter for anything but your costs of living [15:34] Fuxx: brb [15:34] robinduckett: exactly [15:35] robinduckett: My cost of living is lower than someone in London [15:35] JimBastard: hey tobeytailor [15:35] mythz: where u at? i'm in london :) [15:35] JimBastard: im gonna put on 99 luftballoons now [15:35] robinduckett: but I'm vastly underpaid because of my "age, and lack of degree". [15:35] JimBastard: and dance a little [15:35] robinduckett: Cardiff. [15:35] tobeytailor: if they pay me for doing crazy JS stuff, 'i'm there man! [15:35] tobeytailor: hey marack [15:35] tobeytailor: wasup? [15:35] JimBastard: work work [15:35] robinduckett: yeah, I'd happily hack JS for a living, it's pretty much what I'm up to now. [15:35] tobeytailor: nice [15:35] JimBastard: im trending on github today [15:35] mythz: ic, so still in a 1st world country :) [15:35] felixge_: of course you will find people who want to pay you less because they know your costs of living, but those are the wrong people to work for to begin with : ) [15:36] JimBastard: http://github.com/marak/JSLINQ [15:36] JimBastard: :-D [15:36] nefD: i've had pretty good luck without a degree so far (26 y/o).. I spent my potential college years programming at my first job (a small business that realized what an in-house coder could do for them in terms of web presence and internal apps), which has been way more helpful in terms of experience & wisdom and interview fodder [15:36] robinduckett: JimBastard: that was on reddit and HN [15:36] tobeytailor: just checked it out [15:36] JimBastard: robinduckett: get online code samples and some open sourc eproejcts [15:36] JimBastard: that will help for sure [15:36] tobeytailor: started a new subproject called IGordon... [15:36] robinduckett: JimBastard: http://www.github.com/robinduckett [15:36] tobeytailor: :) [15:36] micheil: yeah, I can't agree more with opensource stuff [15:36] tobeytailor: surprise surprise! [15:36] Fuxx: wtf is IGordon? [15:36] Fuxx: :P [15:37] tobeytailor: iGordon [15:37] tobeytailor: :D [15:37] tobeytailor: top secret [15:37] tobeytailor: :D [15:37] Fuxx: finally you changed to adobe? :P [15:37] robinduckett: I've never coded C++ in my life but I fixed node-mysql-libmysqlclient from segfaulting earlier [15:37] JimBastard: robinduckett thats a good start, keep it up [15:37] micheil: tobeytailor: Gordon, the JS runtime for flash, taken to the iPhone / iPad [15:37] tobeytailor: who's adobe? [15:37] micheil: tobeytailor: surely a little guessable? [15:37] tobeytailor: :D [15:37] mjijackson: tobeytailor: if you capitalize the "I" in IGordon, nobody will believe you :) [15:38] micheil: C++ / C isn't too hard to read, in all [15:38] robinduckett: My open source stuff was stunted slightly by some problems I had to do with bad drugs. [15:38] robinduckett: all sorted now though [15:38] mythz: ouch [15:38] nefD: the trick is making your drugs behave [15:38] robinduckett: I had to remove my open source MSN client written in JS from github [15:38] mythz: hope u didn't need to revert too much :) [15:38] Fuxx: micheil, the hardest thing on c++/c is to know, that you never will get fast results like in js/php or whatever [15:39] Fuxx: thats why most ppl quitting quick [15:39] robinduckett: mythz: had to rebase [15:39] JimBastard: i dont even know what that means robinduckett [15:39] mythz: lol [15:39] micheil: Fuxx: def. yes. [15:39] robinduckett: JimBastard: what? [15:39] felixge_: Fuxx: well, you just need to realize that live is full of boilerplate :) [15:39] felixge_: * life [15:39] micheil: robinduckett: why'd you have to remove your opensource JS MSN client? [15:40] creationix: felixge_: is your solaris box intel or sparc? [15:40] robinduckett: micheil: left my password in the source and couldn't figure out how to remove a single commit from github [15:40] Fuxx: felixge_, hrhr right! [15:40] tobeytailor: :D [15:40] micheil: robinduckett: oh, heh [15:40] robinduckett: micheil: very silly of me [15:40] felixge_: creationix: intel x86 [15:40] micheil: robinduckett: there's a command for that [15:40] robinduckett: I know that now XD [15:40] micheil: robinduckett: checkout the pro-git yeah./ [15:40] creationix: felixge_: nice, so node compiles on it [15:40] creationix: I have to work with sparc for school [15:40] felixge_: creationix: no, node doesn't compile there yet : ? [15:40] felixge_: : / [15:41] micheil: creationix: is school in your case more uni? [15:41] felixge_: creationix: this is a client I'm doing consulting for, they'd like to run on solaris. [15:41] micheil: or rather, higher then high school? [15:41] felixge_: creationix: but I'm having issues with my terminal and vi on the remote machine [15:41] creationix: micheil: I get my BS in Software Engineering next week [15:41] micheil: (that always confuses the crap out of me) [15:41] creationix: and I have half a masters done [15:42] micheil: right, so, it's actually Uni [15:42] mjijackson: Oooh, pretty. GitHub has new admin pages. [15:42] robinduckett: university then [15:42] robinduckett: I made a streaming CSV thing the other day [15:42] creationix: felixge_: I always have trouble with solaris, it's never been a good experience for me [15:42] robinduckett: just uploaded it as a gist only one file [15:42] mjijackson: I was so used to using the old ones. This is going to take some getting used to. [15:43] robinduckett: http://gist.github.com/389557 < if anyone wants to see [15:43] robinduckett: I think when I get home tonight I'm going to make an IRC bot in Node for the luls [15:43] felixge_: creationix: yeah. Well, at least it pays by the hour so it makes the pain a little easier to take :D [15:43] robinduckett: and i'll put my MSN code back up [15:44] robinduckett: anyone need any node hackery help for open source stuff I can help with? :O [15:44] tobeytailor: ^^Fuxx [15:44] brianmario has joined the channel [15:44] Fuxx: me? o0 nope [15:44] tobeytailor: and me [15:44] tobeytailor: :) [15:44] Fuxx: maybe you :P [15:45] Fuxx: i got the c++ part ^ :P [15:45] Fuxx: or, even he want to learn it :P up to him =D [15:45] tobeytailor: thats what he means i guess [15:45] robinduckett: ? [15:45] ncb000gt has joined the channel [15:45] Fuxx: well, i he got time and motiviation ;) why not =D [15:46] Fuxx: -i +if [15:47] creationix: if anyone is in the Dallas, TX area, I'm presenting node tonight [15:47] creationix: I need to go and finish my slides now [15:48] cadorn has joined the channel [15:48] tobeytailor: Hey JimBastard... [15:48] robinduckett: creationix: gonna put your slides up when you're done? [15:48] JimBastard: sup tobeytailor [15:48] tobeytailor: thinking about moving to NYC [15:48] tobeytailor: :) [15:48] JimBastard: what about google? [15:48] tobeytailor: damn google [15:48] Fuxx: noooo :P california ;o!!! [15:48] JimBastard: robinduckett: i have about 10 JS projects i need help with [15:48] JimBastard: robinduckett probaly 5 of those are node related [15:49] creationix: robinduckett: sure, but there probably won't be many words [15:49] robinduckett: lay it on me :D [15:49] creationix: wait, what, free node help? [15:49] JimBastard: more like pick your posion [15:49] JimBastard: lol [15:49] robinduckett: haha [15:49] JimBastard: http://github.com/marak [15:49] creationix: http://github.com/creationix [15:49] robinduckett: haha [15:49] robinduckett: okay [15:50] JimBastard: i would say , hook.io, broodmother, jslinq, node_debug, node_chat [15:50] JimBastard: all good canidates [15:50] Fuxx: felixge_, after smoking a cigarette, can i query you? [15:50] JimBastard: actually, no broodmother. i cant release that yet [15:51] felixge_: Fuxx: sure [15:51] felixge_: Fuxx: actually, I might be in a meeting in 10min [15:51] robinduckett: hmm [15:52] creationix: _ry: you there? [15:52] lifo_ has joined the channel [15:52] JimBastard: but yeah, robinduckett any of those projects are up for grabs [15:52] JimBastard: and creationix has a bunch too [15:52] robinduckett: Do any of these projects have like, roadmaps or todos? [15:53] JimBastard: some have issues [15:53] JimBastard: some need issues [15:53] creationix: most need better docs [15:53] JimBastard: some have nothing [15:53] robinduckett: heh [15:53] robinduckett: okay [15:53] JimBastard: it would be nice if you did a module [15:53] JimBastard: maybe YQL support [15:53] JimBastard: has anyone done that yet? [15:54] robinduckett has left the channel [15:54] robinduckett has joined the channel [15:54] robinduckett: mirc is poo [15:54] V1: well you got sockets, and http.. what else do you need ;) [15:54] robinduckett: yeah I can probably do a YQL module [15:54] robinduckett: I was working on making a nice module for node-mysql-libmysqlclient [15:55] JimBastard: i think there is a bunch of mysql stuff already [15:55] nefD: mmm- [15:55] nefD: i dunno [15:55] nefD: there is *some* mysql stuff [15:55] JimBastard: YQL would be pretty awesome, because techinically if you got it working you have access to a bunch of apis [15:55] JimBastard: not sure if anyone started on that yet [15:55] robinduckett: yeah but libmysqlclient's default module is pretty meh [15:55] robinduckett: But I'm doing that for work and they said I can open source it once I'm done [15:55] robinduckett: so I can do the YQL stuff outside of work. [15:55] nefD: the problem is that there is nothing out there for mysql that is solid enough to be using mysql with node, as of yet :) [15:55] thotypou1 has joined the channel [15:55] robinduckett: nefD: I'm using node.dbslayer.js, but nothing intensive. [15:56] nefD: I ended up switching to mongo for my projects for that reason (though I've since grown to prefer mongo for diff. reasons) [15:56] robinduckett: Just getting one record then tweeting it [15:56] nefD: yeah, see, dbslayer makes me very nervous [15:56] robinduckett: whyso? [15:56] JimBastard: robinduckett if you are feeling really adventurous you could do some JSLINQ work [15:56] nefD: hasn't been updated since like, 1992 or something [15:56] robinduckett: haha [15:56] JimBastard: that has a pretty clear roadmap [15:57] robinduckett: I will take a look at it all and make a list of stuff I like :D [15:57] JimBastard: also needs benchmarks so we can start doing A/B testing [15:57] JimBastard: okay, well if you want to contribute to anything ive got going feel free to ping me [15:57] JimBastard: here on on github, ill do everything i can to get you started [15:57] JimBastard: or on* [15:58] robinduckett: JimBastard: probably going to have a crack at YQL and maybe play with your hook.io stuff because that seems quite interesting [15:58] tobeytailor: it is [15:58] bpot has joined the channel [15:58] creationix: robinduckett: If you want a quick todo, sousaball needs to switch from strings to buffers to speed up static file serving [15:58] tobeytailor: i met the hook.io guy at jsconf, crazy dude. [15:58] JimBastard: robinduckett: hook.io is not ready for any real use atm [15:58] tobeytailor: :D [15:58] robinduckett: although: http://github.com/drgath/node-yql [15:58] JimBastard: ahaha tobeytailor [15:59] JimBastard: robinduckett: but if you are into framework code you should dive in [15:59] JimBastard: im regluing the project in a new branch [15:59] JimBastard: robinduckett: does http://github.com/drgath/node-yql actually work? maybe some documentation would be nice [16:00] robinduckett: yeah doesn't look very feature complete [16:00] nefD: i thought about using hook.io for a node news site mape and I are putting together, but I ended up just writing a deamon script that'd monitor for new modules and module updates via the github api in the end.. JimBastard told me that if I used hook.io, there was a chance my server would catch on fire [16:00] robinduckett: Fire, huh. [16:00] nefD: yep [16:00] JimBastard: good plan nefD [16:00] robinduckett: That sounds discouraging [16:00] nefD: so, you know, watch out [16:00] nefD: for hook.io [16:00] nefD: and fire [16:00] KungFuHamster_: it could go back in time and kill your great grandparents too [16:00] robinduckett: Yeah, my VirtualBox may catch on fire. [16:00] robinduckett: Egads [16:00] hdon has joined the channel [16:00] JimBastard: im hoping that before summer ends i'll have a stable version [16:01] JimBastard: i could easily hack it together to work now, but id like to do it "right" [16:01] JimBastard: :-( [16:01] nefD: KungFuHamster_: Thats *always* a possibility.. Terminator style, too, none of that 'in their sleep' crap [16:01] creationix: robinduckett: another small task I have is to add mongodb backend for sousaball, it's currently using postgres [16:01] joshbuddy has joined the channel [16:02] felixge_: so my little multipart parser only gets 16 mb / sec [16:02] felixge_: :( [16:02] creationix: felixge_: is that bad? [16:03] hdon: the documentation for the "drain" event is a little funny. for net.Stream it says "Emitted when the write buffer becomes empty. Can be used to throttle uploads." for writable stream it says "Emitted after a write() method was called that returned false to indicate that it is safe to write again." am i misunderstanding to think the meanings of these two descriptions are not quite the same? [16:03] felixge_: creationix: anything slower than the network connection of the server is bad :) [16:03] joshbuddy_ has joined the channel [16:03] mrjjwright has joined the channel [16:03] robinduckett: I made a multipart CSV parser, not sure how fast it is. [16:03] creationix: ahh, I see [16:03] V1: Do we have cpan for node yet :? [16:03] creationix: V1, nothing official other than the wiki pages [16:03] V1: There are so many modules created at this point. [16:03] robinduckett: V1 there's the wiki page? :P [16:04] felixge_: creationix: I was expecting something closer to 100mb / sec [16:04] V1: Wohoo,, a whole wiki page. ;) [16:04] creationix: there are several package managers in the making though [16:04] mrjjwright_ has joined the channel [16:04] robinduckett: yeah someone's doing a whole package.json thing? [16:04] felixge_: but I guess iterating over 16. mio bytes / sec is as fast it will get [16:04] joshbuddy__ has joined the channel [16:04] felixge_: ok metting now [16:04] robinduckett: cya [16:04] V1: have fun, [16:05] joshbuddy___ has joined the channel [16:05] V1: robinduckett, there is kiwi , package management [16:05] Fuxx: alright, going to bash some ppl before going to super market ;o [16:05] javajunky has joined the channel [16:06] ditesh|cassini has joined the channel [16:07] robinduckett: V1: also "cnan" doesn't have the same ring as "cpan" :P [16:09] JimBastard: robinduckett i have a game we are working on too [16:09] JimBastard: with ryan[WIN] [16:10] robinduckett: is that the sousaball one? [16:10] JimBastard: no [16:10] boaz_ has joined the channel [16:10] Nohryb has joined the channel [16:10] JimBastard: i gotta get to work, hit me later if you interested [16:10] robinduckett: okay [16:10] robinduckett: cya [16:10] isaacs has joined the channel [16:11] pdelgallego has joined the channel [16:12] fizx has joined the channel [16:14] fizx has joined the channel [16:16] saikat has joined the channel [16:18] technoweenie has joined the channel [16:19] sudoer has joined the channel [16:22] JimBastard: technoweenie: has faraday been public for a while? just noticed it was open-sourced on github last night, but i thought it was already released [16:24] dgathright has joined the channel [16:26] technoweenie: it was open source for awhile [16:26] technoweenie: then i closed it for 5 seconds [16:27] technoweenie: and re-opened it [16:27] technoweenie: (testing the new admin shit out) [16:27] indiefan has joined the channel [16:28] JimBastard: ahaha got ya [16:29] JimBastard: i wasnt github stalking you i swear [16:29] JimBastard: i just saw that status update and did a hrmmm [16:29] technoweenie: guards! arrest this man [16:30] JimBastard: ACTION says, these are not the coders you are looking for [16:30] JimBastard: ACTION waves his hand [16:31] technoweenie: these are not the coders we're looking for [16:31] technoweenie: move along! [16:32] robinduckett: hehe technoweenie [16:32] robinduckett: Never Fear, I is here. [16:32] robinduckett: Mr. The Plague. [16:33] nefD: HARR [16:33] nefD: can I be Zero Cool?! [16:33] technoweenie: crash n burn [16:33] technoweenie: crash override? [16:33] technoweenie: fuck that movie was a long time ago [16:34] robinduckett: Look at this! This is insanely great, it's got a 28.8bps modem! [16:34] nefD: cereal killer [16:34] stevendavie has joined the channel [16:34] robinduckett: It's got a RISC chip. Ten times faster than the pentium. [16:34] nefD: lord nikon [16:34] tobeytailor: Hagbard Celine [16:34] robinduckett: It's in that place I put that thing that time [16:34] Fuxx: 23! [16:34] nefD: good soundtrack, though [16:35] robinduckett: Halcyon [16:35] nefD: and on and on :D [16:35] robinduckett: Laaaaa dadeh da dah dah [16:35] qFox: http://twitter.com/jsconfeu/status/13435249402 [16:35] robinduckett: And gonna get mahself, gonna get myself connected. [16:35] robinduckett: Spandex! It's a privilege, not a right. [16:35] tobeytailor: need a ticket [16:35] nefD: it had underworld.. friggin cowgirl, i mean, come on [16:35] nefD: classic [16:36] tobeytailor: need a job first [16:38] charlesjolley has joined the channel [16:42] JimBastard: tobeytailor i can get you work in nyc for sure [16:43] tobeytailor: :) [16:43] JimBastard: but you'd probably be overqualified [16:43] jan____: haha [16:44] jan____: tobeytailor: you're not really looking for work, are you? [16:44] stevendavie has joined the channel [16:44] tobeytailor: thanks Marack, i may take you up on it some time [16:45] tobeytailor: not REALLY, but... [16:46] JimBastard: if you are moving to the US for work you should get a job at a good place, as i think you'll be stuck there for a bit for work visas and what not [16:46] JimBastard: i could be wrong [16:47] JimBastard: tobeytailor has is your flash / flex skills? [16:47] JimBastard: i could actually get you a second round interview at a major financial consulting company, if you are into building rich UIs in flex and maybe JS [16:47] JimBastard: i could make the phone call now to get the ball rolling, they wouldnt pay you less then 100k [16:48] JimBastard: probaly give you relocation money too [16:48] tobeytailor: have to think about a lot this week... [16:48] JimBastard: but you gotta know your shit, they reject 999/1000 people [16:49] qFox: would he have to show his cv? ;) [16:49] jan____: JimBastard: we want toby to have a job where he is happy living and working on gordon [16:50] JimBastard: i agree, im just saying i know high paying jobs in nyc for good developers [16:50] JimBastard: but i dont know anyplace that will sponsor gordon :-( [16:50] jan____: yea [16:53] creationix: _ry, do you have a graph or two showing how fast node is? [16:54] robinduckett: SLOW ---------- FAST [16:54] robinduckett: --------------^ NODE [16:54] robinduckett: :D [16:56] JimBastard: hey, im the ignorant node fan boy. there can only be one. [16:56] N`: s/-\^/\^-/ -> let some place for improvements ;) [16:56] derferman has left the channel [17:05] jan____: haha [17:06] JimBastard: jan____ im still a little upset at you for saying i wasnt a pirate. im pretty gangster imho [17:06] JimBastard: at least my mom says i am [17:06] tobeytailor: :D [17:06] jan____: your mom says a lot when the night is long #zing [17:07] stephenlb has joined the channel [17:07] Fuxx: da da da ;o [17:08] dgathright_ has joined the channel [17:11] keyvan has joined the channel [17:11] thotypous has joined the channel [17:11] riottaba has joined the channel [17:11] robinduckett: lol zing [17:12] isaacs has joined the channel [17:12] robinduckett: hey hey hey [17:12] robinduckett: I'm not that ignorant :( [17:13] robinduckett: @JimBastard [17:13] JimBastard: okay cool [17:13] JimBastard: that my position is secure [17:13] robinduckett: lol [17:13] robinduckett: I am Ulaw! [17:13] robinduckett: Or were you doing Highlander [17:14] robinduckett: Anyway I'm going home [17:14] robinduckett: 9-6.15 not bad [17:14] robinduckett: cya [17:15] phazm: I don't suppose the node presentation will be available live, will it? [17:17] phazm: that would have been a great demo of node, actually - to stream the presentation live :-D [17:17] towski has joined the channel [17:17] JimBastard: woooot. first time i got the top trending repo without cheating [17:20] nefD has joined the channel [17:21] dgathright_ has joined the channel [17:25] tobeytailor has left the channel [17:29] TobiasFar has joined the channel [17:32] lifo_ has joined the channel [17:40] cruxst has joined the channel [17:41] k3yvn has joined the channel [17:41] nefD: rough irc poll.. what is your preferred javascript lib for developing web app UI and why? [17:42] qFox: my own. because i made it. [17:43] JimBastard: does jquery count? [17:43] JimBastard: nefD: [17:43] nefD: JimBastard: yeah, it counts, but im mainly looking for viable alternatives, because im ready to move on from jquery ui :P [17:43] nefD: qFox: Linkie plzkthx? [17:44] qFox: oh. cde.qfox.nl [17:44] JimBastard: nefD thats a slippery slope [17:45] mjr__ has joined the channel [17:45] nefD: JimBastard: Its nothing against JQuery, I love JQ.. And i've gotten a lot of mileage out of JQUI, actually.. I'm just.. you know.. done fighting with it :P [17:45] JimBastard: just because your girlfriend gets a little fat, doesnt mean she cant give great head. plus you've been with her for so long and all your friends know her.... [17:45] qFox: oh. dont use my lib for something productional or anything :) [17:46] qFox: or well, i wouldnt recommend it. [17:46] kevwil has joined the channel [17:46] qFox: (just because there's no userbase behind it, i'm still finalizing some of the concepts and .. well. just because) [17:47] _Fuxx has joined the channel [17:48] qFox: but i'd love some feedback :) [17:49] saikat has joined the channel [17:53] phazm: nefD: I've never used JQUI, but if I was having a problem with it, it seems to me that there are viable alternatives (individual plugins) to anything you want to do, if you don't want to use JQUI [17:55] jdknezek has joined the channel [17:57] tekky has joined the channel [17:58] dgathright has joined the channel [17:58] SubStack has joined the channel [17:58] JAAulde_ has joined the channel [18:00] boaz_ has joined the channel [18:00] saikat has joined the channel [18:01] cruxst has joined the channel [18:04] nefD: thanks for the input guys [18:05] fictorial has left the channel [18:05] mjijackson has joined the channel [18:07] maushu has joined the channel [18:07] jbrantly1 has joined the channel [18:08] SamuraiJack: nefD: I'd recommend ExtJS [18:09] SamuraiJack: its written in clean OOP style, and is very customizable [18:09] SamuraiJack: not free though (its GPL/commercial) [18:10] hsuh has joined the channel [18:10] nefD: SamuraiJack: The licensing is the very reason I havent checked it out more.. The project I have in mind wouldn't be open source, but it also won't be commercial (at least, not at first, but possibly somewhere down the road) [18:11] mjr__: I started playing with extjs the other day, and the code looks nice, but the results are kind of sluggish and ugly. [18:11] SamuraiJack: mjr__: I'd say the entry barrier isn't low, yea [18:11] N` has joined the channel [18:11] JimBastard: extjs isnt that fun [18:11] SamuraiJack: not sure about ugly results: http://www.extjs.com/deploy/dev/examples/view/animated-dataview.html [18:12] JimBastard: if i was gonna jump jquery ship it would be to dojo [18:12] mjr__: nefD: I missed the first part of this discussion, but I take it you are over jqui, and looking for something else? [18:12] SamuraiJack: or http://www.extjs.com/deploy/dev/examples/view/multisort-dataview.html [18:12] towski_ has joined the channel [18:12] nefD: mjr_: Indeed [18:12] JimBastard: i think the biggest thing jquery ui is missing is a uniform databind engine [18:12] mjr__: So what have you concluded? [18:13] nefD: mjr_: I whole mess of 'buts', 'excepts' and 'althoughs' :P [18:13] nefD: I've used dojo before, and I like it, I just don't like how heavy it feels [18:13] nefD: its like dojo wants to hold my hand and grab my thigh [18:14] nefD: bad touch, dojo.. bad touch [18:15] mjr__: I'm sort of wrestling with the same thing myself. My current contenders are YUI and cappuccino. [18:15] mjr__: Even though cappuccino is all crazy and almost not even JavaScript anymore. [18:16] mjr__: I'm also wrestling with a Too Many Underscores problem. [18:17] JimBastard: whats wrong with jQuery again? [18:18] nefD: JimBastard: nothing is wrong with jQuery :) [18:18] JimBastard: i feel like i need to go into #javascript for a while and answer every question with "you should be using jQuery for that" [18:18] JimBastard: i sense a disturbance in the force [18:18] nefD: LAWWL [18:18] Nohryb has joined the channel [18:18] nefD: let me know if you do so I can shadow [18:18] JimBastard: ACTION is already in the room waiting [18:19] JimBastard: trolling #javascript and #jquery is one of my lessen known hobbies [18:19] JimBastard: lesser [18:20] nefD: its like a whole new world of at-work entertainment..! [18:22] felixge has joined the channel [18:22] felixge has joined the channel [18:22] saikat has joined the channel [18:23] hellp has joined the channel [18:24] keeto has joined the channel [18:24] JimBastard: lame javascript room today [18:25] creationix: anybody know of any stats on the growth of the node community [18:25] JimBastard: website analytics? [18:25] qFox: "much"? [18:25] JimBastard: github watchers? [18:25] JimBastard: mailing group posts? [18:25] JimBastard: i wouldnt mind seeing the analytics for nodejs.org [18:26] nefD: Theres an app for that! [18:26] saikat has joined the channel [18:26] creationix: nefD: but if I didn't make it, I won't use it ;) [18:28] nefD: haha [18:29] JimBastard: creationix: http://en.wikipedia.org/wiki/Not_Invented_Here [18:30] creationix: yep, that's me :D [18:30] creationix: actually I'm just picky and like to try my own version first to see if I can do better [18:30] creationix: it's not always the case [18:31] JimBastard: ACTION decrees that creationix is somewhat excempt from NIH  [18:32] joshbuddy has joined the channel [18:34] JAAulde has joined the channel [18:35] V1: For something new, it pretty big. For a programming language its pretty small. [18:35] V1: ;) [18:36] saikat has joined the channel [18:37] creationix: _ry: how many hits does nodejs.org get on average? [18:38] saikat has joined the channel [18:39] saikat_ has joined the channel [18:41] kriskowal has joined the channel [18:43] mjr__: _ry: also, can you publish the curve? [18:46] saikat` has joined the channel [18:46] saikat has joined the channel [18:48] mikeal has joined the channel [18:48] inimino: ACTION sees JimBastard fail at trolling [18:49] JimBastard: it happens [18:49] JimBastard: i mean [18:49] JimBastard: if i really wanted to id change my nick [18:49] admc_ has joined the channel [18:49] admc has joined the channel [19:01] keyvan has joined the channel [19:03] derferman has joined the channel [19:05] mikeal: isaacs: merged [19:16] derferman has joined the channel [19:18] Nohryb has joined the channel [19:19] aho has joined the channel [19:28] saikat has joined the channel [19:30] mythz has joined the channel [19:31] charlesjolley has joined the channel [19:32] charlesjolley has joined the channel [19:34] CrazyGoogle has joined the channel [19:34] CrazyGoogle: hi all [19:34] CrazyGoogle: nodejs is amazing :D [19:34] CrazyGoogle: i am trying to write static node addon [19:35] CrazyGoogle: and i am looking how to cleanup after javascript is done [19:35] CrazyGoogle: for initialization there is Initialize method [19:35] CrazyGoogle: is there something like that that will be staticaly called after job is done ? [19:36] felixge: CrazyGoogle: you mean after the process exits? [19:36] CrazyGoogle: exactly [19:36] CrazyGoogle: i know how to do that if my addon would be class [19:36] CrazyGoogle: i could do in destructor what i need [19:37] felixge: CrazyGoogle: what kind of clean up do you need to do? [19:37] CrazyGoogle: but i will do couple static methods [19:37] felixge: (I'm not aware of a destructor in the addon API) [19:37] CrazyGoogle: close file, cleanup memory [19:37] ayo has joined the channel [19:37] CrazyGoogle: var a = new Addon(); [19:38] CrazyGoogle: a.destroy() would call native Addon::~Addon [19:38] CrazyGoogle: but i dont want have any dynamic class instance [19:38] felixge: CrazyGoogle: shouldn't the system release all memory allocated by your process ones the process dies? [19:38] CrazyGoogle: i would like just call something after proccess is done [19:39] felixge: CrazyGoogle: you can add a process.addListener('exit') in your module [19:39] CrazyGoogle: it doesnt close opened files, or stuff like that [19:39] felixge: and then call a C function exposed by your module from JS [19:39] felixge: anything you do in that destructor would have to be sync [19:39] CrazyGoogle: what i am asking - is addon, c++ not module [19:39] CrazyGoogle: i dont have any destructor in my code [19:40] CrazyGoogle: only static methods [19:40] CrazyGoogle: so, i have to catch proccess.exit in module.js to call cleanup c++ method ? [19:41] felixge: CrazyGoogle: there might be another way, but there seems nothing wrong with going that route [19:41] CrazyGoogle: i was hoping node call something like Initialize to cleanup objects [19:41] CrazyGoogle: would be logicaly :D [19:42] CrazyGoogle: on instantiation ::Initialize and ::Something on destroy [19:42] derferman has left the channel [19:42] felixge: CrazyGoogle: the addon system is not perfect yet, if you would provide a patch for a destructor ryan might merge that [19:43] CrazyGoogle: dynamic addons are more undestendable somehow anyway :D [19:43] mythz has left the channel [19:43] CrazyGoogle: i lack litle bit documentation about how to write addons, everything i have is - github :D [19:44] felixge: CrazyGoogle: patches to the docs would also be very welcome :D [19:44] CrazyGoogle: :D i see :D [19:44] CrazyGoogle: as usual :D [19:45] DracoBlue has joined the channel [19:46] CrazyGoogle: nodejs looks very cool to me, all i need now - usecase :D [19:46] V1: the whole documentation lacks, and is awfull to read :$, no real good visual difference between the api methods and the descriptions ;( [19:46] tk has joined the channel [19:46] V1: but than again, some people might like it ;) [19:47] tekky has joined the channel [19:47] CrazyGoogle: V1 yeap, but atleast you can check how to work with basic modules [19:47] DracoBlue: hi ;) [19:47] V1: I have learned to stop reading documentation and learn from source [19:47] CrazyGoogle: what i am also lacking is - how to manage own processes [19:47] bmizerany has joined the channel [19:47] DracoBlue: I created this a while back http://dracoblue.net/showcase/enhanced-node-api/ and posted to the mailing list. [19:47] CrazyGoogle: like writing webWorkers for own webserver [19:48] DracoBlue: It has a live filter for the docs while typing. kinda handy because the api file is very big [19:48] mjr__: DracoBlue: that viewer filter is pretty cool. [19:48] V1: If you make the api methods and propperties white in the CSS you got my vote ;) [19:49] DracoBlue: @mjr__ thank you! [19:49] CrazyGoogle: i saw similar docu made by contrenix (or nick with something like that) - i liked it even more [19:49] DracoBlue: V1 the documentation for a while, though. [19:49] isaacs: DracoBlue: that's neat. [19:50] DracoBlue: *V1 the documentation was white for a while, though (some word got lost) :D [19:50] V1: Having everything int he same color makes it really hard to "scan" for text [19:50] mjr__: V1: the doc viewer that's on nodejs.org right now is a big step up from what it used to be. [19:51] mjr__: But it could still use some improving. [19:51] V1: Iknow, :) [19:51] DracoBlue: isaacs: it's based on the real documentation's jquery code, maybe such feature could make it in the real docs ;) [19:51] xla has joined the channel [19:51] V1: Put it in github and there will be some changes ;) [19:52] MattJ: It's in github [19:52] V1: oh.. time to fork it than :p [19:52] DracoBlue: it is on github as part of node [19:52] V1: how did i miss that :$ [19:54] mjr__: It's funny how someone mentions wanting E4X support on the list and everybody freaks out. [19:54] tilgovi has joined the channel [19:54] ashb: E4X is a wonderfulk *idea*. the spec is riddled with bugs/holes tho [19:54] mjr__: Also funny: how syntax my sentences have poor. [19:55] ashb: about all i ver use it for is multi line literals [19:55] ashb: *ever [19:58] mjijackson has joined the channel [19:58] CrazyGoogle: what type do has args[0] for const Arguments& args ? [19:59] CrazyGoogle: value [19:59] CrazyGoogle: ok [20:00] qFox: the twitters are warming up to _ry's talk :p [20:01] jdknezek: now if only I could get v0.1.92+ to run on my lil plug here... [20:01] mjr__: jdknezek: that's the AMD thing? [20:01] JimBastard: im so mad at reddit right now [20:01] mjr__: er, ARM thing [20:01] JimBastard: these fucking noobs are noobing it up on my thread, and reddit is soo broken i cant post comments or view pages [20:01] jdknezek: yep [20:01] JimBastard: unless it LOOKS like my comment posted, which it actually didnt [20:01] JimBastard: and i dont see until i come back to the page 20 mintutes later [20:01] JimBastard: and my post is gone [20:01] JimBastard: FUCK YOU REDDIT [20:02] qFox: :p [20:02] mjr__: jdknezek: can you build V8 as a part of any other project's build system on your machine? [20:02] mjr__: I'm thinking maybe this is a pure V8 build issue and not something node-specific. [20:03] felixge: JimBastard: lnk? [20:03] Fuxx: ok guys... dont hate me o0 i do not understand the directory structure. if i want to make a addon... iam right that the addon is outside the node-core environment, or? [20:04] jdknezek: mjr__: sure - I downloaded trunk from googlecode and compiled (2.2.7), built the shell, and a simple print('hello'); runs [20:04] isaacs: DracoBlue: have you sent a patch yet? [20:04] quirkey has joined the channel [20:04] JimBastard: http://www.reddit.com/r/programming/comments/c068k/microsofts_linq_ported_to_javascript_and_nodejs/ [20:06] DracoBlue: isaacs: nope. to you or ryan? or better as issue in github? [20:06] DracoBlue: source is here: http://github.com/DracoBlue/enhanced-node-api/blob/master/doc.js and it's just this file [20:08] CrazyGoogle: anyidea how to convert args[0] to char* ? [20:09] pkrumins: CrazyGoogle: what are you talking about? [20:09] qFox: JimBastard> you're getting pwnd pretty hard right there :p [20:10] CrazyGoogle: :D [20:10] qFox: pkrumins> by the looks, he's talking C, not JS #justincaseyoudidntnotice [20:11] ashb: qFox: this is not twitter. [20:11] pkrumins: qFox: i noticed that. [20:11] mjr__: jdknezek: I hope you figure it out. Node could be really useful on that SheevaPlug. [20:11] jdknezek: well, v0.1.91 runs perfectly... I guess I should start with a bisect between v0.1.92 and v0.1.91? [20:12] pkrumins: qFox: actually he's talking about C++. See his previous message where he talks about Arguments reference. C doesn't have references. [20:12] JimBastard: its just soo annonying [20:13] mjr__: jdknezek: Yeah, that's probably the best way to see it get fixed. I'm pretty sure V8 changed between those two versions. [20:13] boaz_ has joined the channel [20:13] JimBastard: i write these really long responses to help the noobs [20:13] JimBastard: and reddit fucks me [20:13] JimBastard: and then i look bad [20:13] JimBastard: awesome [20:13] V1: welcome to the interwebz :) [20:13] qFox: pkrumins> semantics. but that remark might have something to do with the arguments object and a reference to something. thats what threw me off at first. [20:14] CrazyGoogle: ok String::NewExternal looks like what i need [20:14] CrazyGoogle: yeap, javascript is too simple, i am not that good in c++ [20:15] jdknezek: what would be the best way to contribute my generated linux-arm c-ares headers? [20:15] sveimac has joined the channel [20:15] isaacs: DracoBlue: do "git format-patch ry/master", and then send the patch to ryan and to the list [20:15] JimBastard: V1: its reddit acting slow as shit [20:15] JimBastard: i am well versed in thwarting off noobs with my noob stick [20:15] DracoBlue: isaacs: thanks! [20:15] JimBastard: i just cant do shit if the tubes is clogged [20:16] sztanphet has joined the channel [20:16] V1: =p [20:16] KungFuHamster_: clueby4 [20:16] mjr__: The Internet is not a big truck. [20:16] mjijackson: I thought the internet was just a bunch of tubes... [20:17] mjr__: mjijackson: correct [20:17] KungFuHamster_: it is, but they're made of copper and glass [20:17] mjijackson: mjr__: ah. glad to hear it's still the same! [20:17] V1: isaacs: isn't sending a pull request much easier? [20:17] mjr__: jdknezek: if you can follow the advice from isaacs a few lines up, that is a good start. If it is very involved, you'll probably want to discuss with _ry. [20:17] felixge_ has joined the channel [20:17] felixge_ has joined the channel [20:17] jdknezek: iscaacs, mjr__: thanks, on it [20:18] ayo has joined the channel [20:18] KungFuHamster_: that reminds me, I need to pick up a gallon of udp packets at the store.. always running out [20:19] V1: slightly offtopic, i love that github is now also offering a svn "mirror" of your git :) [20:19] ncb000gt has left the channel [20:19] mjr__: KungFuHamster_: get those UDP packets while you can, I hear they are going to be illegal soon. [20:19] KungFuHamster_: when udp is illegal, only criminals will have udp [20:21] DracoBlue: btw. has anybody a node-able library for geoip-locating? [20:21] DracoBlue: I am currently using maxmind's geoip data, but loading the csv in memory - to query it fast - is bit slow at startup. [20:21] V1 has left the channel [20:22] V1 has joined the channel [20:23] KungFuHamster_: is this going to be a server-side daemon/service where the load times don't matter after startup, or client side? [20:24] derbumi has joined the channel [20:24] isaacs: V1: sending a pull request is easier for you, not for _ry [20:25] DracoBlue: hmm, it's running all time, so startup is not so important. [20:26] V1: you could ofcourse just buy a geo ip database ;) [20:26] KungFuHamster_: you could also write a separate script that just handles those queries if you need to restart or fork the other process frequently [20:26] DracoBlue: hehe, but guess it wouldn't ship with a node-library :D [20:26] JimBastard: you could always take the CSV and put it into a DB [20:28] DracoBlue: currently 'cat this.csv | grep "^123,"' works pretty fast to search :D [20:29] DracoBlue: but a db for the ranges should do the trick. [20:29] DracoBlue: thanks for all the creative ideas!! [20:30] V1: you could also just store it in your TMP dir for a while [20:31] V1: eliminating extra lookups when you do the geo loop up for each request. [20:32] DracoBlue: yep, currently I do the lookup only for the first request and store the data in the session afterwards. [20:33] kriskowal has joined the channel [20:33] inimino: did Google just change their results page? [20:34] V1: Pff almost done reading High Performance JavaScript [20:34] V1: they are testing out new layouts inimino [20:34] KungFuHamster_: inimino, apparently so [20:36] inimino: interesting [20:37] saikat has joined the channel [20:37] KungFuHamster_: and wonder wheel is some kind of keyword graph [20:37] nefD: more interesting: i've been seeing the google search page for about a month, when guys I work with have not been seeing it before now [20:38] nefD: I guess, like buzz, it was a 'rolling update' [20:42] gralamin has joined the channel [20:43] dgathright_ has joined the channel [20:43] pkrumins: inimino: they did. http://googleblog.blogspot.com/2010/05/spring-metamorphosis-googles-new-look.html [20:43] gralamin: So I'm trying to add node into a larger website for work to add in some Real time updating, and am not sure how to proceed from what I have. Anyone on who can help? [20:43] pkrumins: i hate the new design. [20:46] jan____: gralamin: 1) add node 2) make real time updates. done [20:46] felixge has joined the channel [20:46] felixge has joined the channel [20:46] mjr__: step 3: profit [20:46] boaz__ has joined the channel [20:47] Fuxx: felixge, can i query u the last time for the next 10 years? [20:47] gralamin: jan: Not helpful :P [20:47] felixge: Fuxx: I tried responding to your pm, but my client shows you as offline [20:47] felixge: Fuxx: let me restart it [20:47] Fuxx: lol o0 [20:48] felixge has joined the channel [20:48] Fuxx: everytime i send you a messge, your client quits =) seams your spam protection works :P [20:50] mjr__: gralamin: that's a pretty broad request. If you can distill it down to a simple case and associated question, that's more likely to get a useful response. [20:50] gralamin: mjr: Typing that out right now [20:51] gralamin: Without going into to much detail: Node will be running in the background. When an event that requires a real time update is to happen, php generates a request that is sent to the node server through HTTP, including a JSON. Ideally, I then will go to my list of sockets (Using Socket.Io in the background, unless there is a better way), and send it to users which have relevant permissions (the... [20:51] gralamin: ...JSON has a list of such users) [20:52] nefD: why is php acting as the middle man for the request to node, out of curiosity? [20:53] gralamin: Because the huge backend of the site is made in php. [20:53] gralamin: And I have to work within these bounds because of it [20:53] nefD: I just mean, as opposed to querying node directly via JS (or the socket connection) [20:54] zol has joined the channel [20:54] nefD: im guessing user A (who is generating an event that user B needs to be informed of) might not have a socket open, or the action generated may not take place on the client? [20:54] mythz has joined the channel [20:54] gralamin: It would not take place on the client. [20:54] nefD: gotcha [20:54] colin__ has joined the channel [20:54] inimino: pkrumins: ah, thanks [20:55] nefD: gralamin: well, your method seems sound.. what is the specific question? [20:55] mattly has joined the channel [20:55] gralamin: The logic behind querying open sockets, etc. I have done. What I need is the HTTP request to communicate with the sockets (which I am unsure how to cause). At least currently [20:56] nefD: Ah- you mean from the php script to the node instance? [20:56] gralamin: Yeah. [20:56] nefD: gotcha [20:56] boaz_ has joined the channel [20:57] nefD: well, what you could do is have the node script open up an http listener, serialize your JSON data from php to be sent along with the http request to wherever node is (presumably localhost), and then have your node script listen for and act on the request sent via php [20:57] CrazyGoogle: wow, i've done my first addon [20:58] nefD: you could either have the action for node to take (ie: update) be part of the url string, or pass along some kind of 'action' key/value [20:58] nefD: (if i'm treading on ground youve already covered, let me know) [20:58] mythz has left the channel [20:58] gralamin: nefD: That is pretty much my plan. Luckily the request and such I need to send is all automated. Its the getting it to detect the request correctly, and act on it thats my problem [20:59] nefD: gralamin: Getting node to detect the request and act on it, you mean? [20:59] gralamin: nefD: Yes [21:00] nefD: gralamin: Were I you, i'd check the request url in your http request event and use it to determine the course of action.. so a call to /user_login, for example, would mean that a user has logged in, so in your code block for that request, you can act on that action accordingly [21:02] qFox: time for bed. [21:02] colin__ has left the channel [21:04] saikat has joined the channel [21:05] mikeal: isaacs: Error: EINTR, Domain name not found [21:05] thotypous has joined the channel [21:05] mikeal: installing npm [21:05] isaacs: whuh? [21:05] isaacs: that's odd. [21:05] isaacs: can you go to registry.npmjs.org? [21:05] mikeal: oh i see [21:05] mikeal: i have an old config [21:05] sveimac has joined the channel [21:05] isaacs: mikeal: hehe [21:06] isaacs: you should be able to just delete or move away your .npmrc [21:06] isaacs: most of the config options have changed anyhow [21:06] mikeal: there we go [21:08] CrazyGoogle: ok, now i can try to learn handle github :D [21:08] JimBastard: ? [21:08] JimBastard: sup CrazyGoogle [21:08] CrazyGoogle: i will put my first node addon on github [21:08] nefD: JimBastard: What kinda game are you working on with ryan[WIN]? [21:08] JimBastard: ahh okay [21:08] JimBastard: so now that its lunche [21:09] JimBastard: let me get the link to ryan[WIN]'s front-end code i want to use [21:09] mikeal: wtf [21:09] mikeal: node -v [21:09] mikeal: node -v [21:09] mikeal: v0.1.33-380-gab723d0 [21:09] mikeal: that is not right [21:09] mikeal: i just built master [21:09] inimino: did you install? [21:09] mikeal: of course [21:10] JimBastard: nefD: http://www.diod.es/ryanwin/jzzzt/src/index.html [21:10] inimino: just checking ;) [21:10] isaacs: mikeal: what does git describe show? [21:10] mikeal: where does -v pull the version information from [21:10] nefD: omfg [21:10] mikeal: v0.1.33-380-gab723d0 [21:10] nefD: MegaZeux! [21:10] JimBastard: lolz [21:10] isaacs: mikeal: have you pulled from ry/master? [21:10] nefD: ACTION has vivid flashbacks from his BBS days [21:10] JimBastard: so i wanna turn that into an mmo [21:10] mikeal: that's after a pull from ry/master [21:10] mikeal: yes, 10 seconds ago [21:10] isaacs: mikeal: weird... [21:10] isaacs: mikeal: try git fetch -a ry [21:11] nefD: JimBastard: That sounds *rad* [21:11] isaacs: mikeal: it's based on git tags. [21:11] JimBastard: nefD: the first iteration would probaly just be a glorified chat where you got an avatar and could go from room to room [21:11] JimBastard: i'd LOVE some help on it, its a bit of a side side side project for me [21:11] mjr__: mikeal: I've seen this git version label thing discussed here before, but I forget the solution. [21:11] JimBastard: but i can do the hosting @ nodejitsu [21:11] mikeal: that worked [21:11] gralamin: Sorry about that got kidnapped by work. [21:11] mikeal: ok, that's a problem [21:11] isaacs: yeah, but only for early adopters like you and me :) [21:11] isaacs: and we should know better [21:11] nefD: JimBastard: Word. I'd be down for helping out.. I've done quite a bit of deving with roguelikes and ascii (or otherwise grid based) games in the past [21:11] gralamin: nefD: You wouldn't happen to know of any good examples of doing this, would you? [21:12] JimBastard: nefD: what do you think you could do? or what would you want to do? [21:12] mikeal: isaacs: new error [21:12] isaacs: mikeal: w00t [21:12] mikeal: http://gist.github.com/391441 [21:12] isaacs: what's up? [21:13] boaz_ has joined the channel [21:13] nefD: gralamin: http://github.com/ry/node_chat [21:14] nefD: JimBastard: Hell, front end code if you need it (hoping its jquery?), back end code, whatever.. I'm used to doing both anyway, so i'd be happy wherever [21:14] JimBastard: yeah [21:14] JimBastard: let me ping ryan real quick [21:14] gralamin: nefD: I'll take a look at it. Thanks. That should help with figuring out telling it how to do things. The only other question would be how to get the http server to talk to the clients easily. [21:14] isaacs: mikeal: i'm not handling that error. thanks for the report. [21:14] mikeal: JimBastard: which Ryan? :P [21:14] mikeal: there are so many now! [21:15] JimBastard: i know how to sort by ryan [21:15] mikeal: isaacs: what error is that? [21:15] JimBastard: its cool [21:15] JimBastard: just remember, you cant arrange by penis [21:15] isaacs: mikeal: fixed on 0c3e3ac [21:15] nefD: gralamin: You'll probably have your socket.io listeners stash the client objects into a globally scoped variable or something, and write functions that will allow you to loop through your array of connected clients and act on the ones which are in the list that your JSON provides [21:16] atmos has joined the channel [21:16] liucougar has joined the channel [21:16] liucougar has left the channel [21:16] gralamin: nefD: Alright, I think I have most of that in place anyway, for my original prototype that was purely socket.io, and using sends. Thanks for the help [21:17] nefD: gralamin: Yeah, np.. good luck with it [21:17] mikeal: isaacs: i've graduated to node version failure [21:17] mikeal: because of the thing we talked about earlier [21:18] mikeal: ok, now i have the new version [21:18] isaacs: mikeal: so, what kind of error do you have now? [21:18] mikeal: the node version check failed [21:18] mikeal: because i hadn't pull the tags, even tho i built from master [21:18] WALoeIII has joined the channel [21:19] isaacs: ok [21:19] isaacs: note: if you build from the release tarball, it always reports the proper version [21:19] isaacs: so this is strictly a node-hacker problem, not a node-user problem. [21:19] mikeal: yup [21:19] mikeal: if you build from a tag it's not a problem either [21:21] hdon has joined the channel [21:22] bentomas has joined the channel [21:22] darkf has joined the channel [21:22] derbumi_ has joined the channel [21:24] hellp has joined the channel [21:25] rolfb has joined the channel [21:26] derferman has joined the channel [21:26] airportyh has joined the channel [21:26] isaacs: mikeal: so it's working? [21:27] mikeal: yup [21:27] isaacs: that's what i like to hear! [21:27] mikeal: http://gist.github.com/391465 [21:28] mikeal: what is that undefined thing? [21:28] CrazyGoogle: i have commited my code the new github repository, but i still see page with "Global setup:" on source for the repository. Anyone know what i am missing, its probably should show my README insteed [21:29] JimBastard: lol [21:29] JimBastard: CrazyGoogle [21:30] CrazyGoogle: do i have to setup something like default branch ? [21:30] JimBastard: create the repo on github, clone the repo, add some files locally, commit those files locally, push back to the remote repo [21:30] isaacs: mikeal: that's odd, it seems like it's running into an issue with the resolveDependencies function [21:30] JimBastard: is this your first time using git and github CrazyGoogle ? [21:30] CrazyGoogle: i allready pushed [21:30] JimBastard: link? [21:30] CrazyGoogle: i can even see my 2 commits [21:30] mikeal: super odd [21:30] CrazyGoogle: http://github.com/schamane/node-syslog [21:30] mikeal: i'm trying to use redis-node-client master [21:30] CrazyGoogle: but it doesnt show readme [21:30] isaacs: mikeal: where's the redis client thing you'er building? [21:31] JimBastard: hrmm [21:31] CrazyGoogle: This repository's default branch is empty! --- what does that means ? [21:31] JimBastard: github is fucked up [21:31] CrazyGoogle: oh :( [21:31] mikeal: http://github.com/fictorial/redis-node-client [21:31] isaacs: mikeal: ok, i can repro. [21:31] JimBastard: i just cloned and i got all your code [21:31] isaacs: i'll dig in [21:31] JimBastard: thats really strange [21:31] JimBastard: CrazyGoogle: [21:31] CrazyGoogle: yes [21:32] CrazyGoogle: in commits tab you can see code [21:32] CrazyGoogle: but not on repository page [21:32] JimBastard: go into #github and yell at tekkub [21:32] JimBastard: tell him i sent you [21:32] JimBastard: he'll love that [21:33] mqt has left the channel [21:33] jan____: ACTION chuckles [21:34] jan____: “son of a Jim” [21:34] JimBastard: [17:34] tekkub: JimBastart tald me you can fix my repository page on github ? [21:35] CrazyGoogle: JimBastard: maybe my code has to pass QA and moderation first :D [21:36] JimBastard: what do think this is, CVS? [21:36] CrazyGoogle: :D [21:36] CrazyGoogle: i think thats git interface that dont work for me somehow [21:43] SubStack: hah moderation [21:43] SubStack: what an antiquated concept [21:43] JimBastard: yeah i dont do anything in moderation [21:43] mscdex: hurrah! socket.io is finally working at last! [21:46] pkrumins: mscdex: yep. :) [21:47] hdon: where to report documentation bugs? [21:49] mjr__: hdon: you could file a github "issue", post on the mailing list, or you could put it here. [21:50] riottaba_ has joined the channel [21:52] tobeytailor has joined the channel [21:55] isaacs: mikeal: fixed the bug. it'll work on version 0.1.4, which i'm planning on tagging this afternoon sometime [21:55] boaz_ has joined the channel [22:02] charlesjolley has joined the channel [22:02] riottaba has joined the channel [22:02] admc_ has joined the channel [22:02] admc has joined the channel [22:02] tobeytailor has left the channel [22:03] isaacs: mikeal: you can do npm install npm@0.1.4 and see if that resolves your issue. [22:03] isaacs: (published) [22:05] CrazyGoogle: github works again [22:06] romainhuet has joined the channel [22:06] CrazyGoogle: good night all [22:06] DracoBlue: nighty [22:06] CrazyGoogle has left the channel [22:06] mikeal: isaacs: does that activate automatically> [22:07] javajunky has joined the channel [22:07] isaacs: mikeal: not if you've already got an active version [22:07] mattly has joined the channel [22:07] mikeal: isaacs: after activating it seems to work [22:07] isaacs: mikeal: you can do this, though: npm --auto-activate always install npm@0.1.4 [22:07] isaacs: mikeal: and make it permanent by doing: npm config set auto-activate always [22:08] mikeal: hrm..... [22:08] mikeal: require('redis-node-client') [22:08] mikeal: Error: Cannot find module 'redis-node-client' [22:08] mikeal: but i can see it in ~/.node-libraries [22:08] melgray has joined the channel [22:08] isaacs: mikeal: s/-/_/ [22:08] isaacs: mikeal: change your root setting [22:08] isaacs: (or just delete it) [22:09] mikeal: huh? [22:09] isaacs: .node-libraries != .node_libraries [22:09] isaacs: note the _ [22:09] mikeal: sorry, it's _ [22:09] mikeal: already [22:09] isaacs: oh, ok [22:09] isaacs: then i dunno [22:09] isaacs: what's ls ~/.node_libraries? [22:09] mikeal: ah had [22:09] mikeal: weird [22:09] mikeal: require('redis-node-client/redis-client') [22:09] mikeal: that works [22:09] hdon has joined the channel [22:09] isaacs: oh, i see [22:10] isaacs: it doesn't create a "main" module, i guess [22:10] mikeal: i dont' think this package is configured really well [22:10] technoweenie has joined the channel [22:13] isaacs: mikeal: take it up with fictorial, i guess [22:25] liucougar has joined the channel [22:25] liucougar has left the channel [22:25] liucougar has joined the channel [22:26] liucougar: is there a way to detect whether an error is happend when doing a http.createClient.request? [22:26] liucougar: say if the http server is down, the client (returned from http.createClient) would emit an error event [22:27] liucougar: but how to detect that with the clientrequest object? [22:28] unomi has joined the channel [22:31] charlesjolley has joined the channel [22:33] Pilate has joined the channel [22:36] mrjjwright has joined the channel [22:39] gf3 has joined the channel [22:43] mscdex has joined the channel [22:55] siculars has joined the channel [22:55] bentomas has left the channel [23:01] stephenlb: ACTION runs to Yahoo! for Cinco de Node [23:01] charlesjolley has joined the channel [23:05] mjr__: I'm trying to leave for Yahoo Node meeting, but wouldn't you know it, instant crisis at work. [23:06] technoweenie: just add water [23:10] Aria has joined the channel [23:11] mikeal: factorial isn't here :( [23:12] drostie: technoweenie: there are lots of instant crises at work that you can start with water. >:D [23:12] drostie: technoweenie: also fire. ^_^ [23:13] mjijackson has joined the channel [23:15] hassox has joined the channel [23:18] jdknezek has joined the channel [23:19] hdon has joined the channel [23:24] mikeal: is anyone here using redis-node-client? [23:25] keyvan has joined the channel [23:33] chewbranca has joined the channel [23:35] chewbranca_ has joined the channel [23:40] mattly has joined the channel [23:53] quirkey has joined the channel [23:57] Wandrewvious has joined the channel [23:59] indiefan_ has joined the channel