[00:02] aheckmann has left the channel [00:03] miccolis has joined the channel [00:03] sriley has joined the channel [00:04] MikhX_ has joined the channel [00:04] shimondoodkin: v8: var n = 0, d=(new Date()).getTime()+1000;while(d>(new Date()).getTime()){n++;}console.log(n); [00:04] v8bot: shimondoodkin: CONSOLE: [1109073], OUTPUT: undefined [00:04] muk_mb has joined the channel [00:05] softdrink: methinks someone was smoking something when they wrote the sec-websocket-key bit of the spec. [00:06] shimondoodkin: softdrink: what is it? [00:07] softdrink: web socket handshake [00:07] shimondoodkin: softdrink: whats wrong with it? [00:08] softdrink: part of it requires you to count the number of space characters in it… which seems *completely* arbitrary [00:08] shimondoodkin: i read the specs it is redicules [00:09] davidascher has joined the channel [00:10] shimondoodkin: there is alrady tcp ip handshake [00:11] Gruni has joined the channel [00:11] shimondoodkin: it is probably a "standard" way of matching between html page and socket [00:13] shimondoodkin: it probably reqires you to have a quee with removal on connection close and on timeout of no connection established [00:13] janne has joined the channel [00:13] shimondoodkin: quee of requiest ids [00:13] inimino: It's not arbitrary, it actually has perfectly reasonable security considerations behind the design. [00:13] shimondoodkin: i see security flaws [00:14] bbttxu has joined the channel [00:14] shimondoodkin: ssl is better [00:14] inimino: Don't tell me about it, get on the lists and get involved. [00:15] shimondoodkin: inimino: :) fine [00:15] shimondoodkin: inimino: why did yhey done it? [00:16] shimondoodkin: *they [00:16] rwaldron has joined the channel [00:16] inimino: shimondoodkin ⋱ The spaces? [00:17] shimondoodkin: sec-websocket-key [00:17] hober has joined the channel [00:17] inimino: I don't know, I haven't been following it for a while. [00:17] inimino: I looked at the much earlier drafts but a lot has changed. [00:18] inimino: I'm kind of waiting to see what happens at this point. [00:20] shimondoodkin: v8: var n = 0, d=(new Date()).getTime()+1000;while(d>(new Date()).getTime()){n++;} console.log("v8 cpu works at "+(n/1000000)+"Mhz"); [00:20] v8bot: shimondoodkin: v8 is no longer supported (except in PM). Try v8: or v8> [00:21] bruse: that's strange [00:21] shimondoodkin: v8bot> CONSOLE: ["v8 cpu works at 1.101093Mhz"], OUTPUT: undefined [00:21] v8bot: shimondoodkin: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [00:22] Mikushi has joined the channel [00:22] shimondoodkin: javascript is 1000 times slower then c++ [00:22] shimondoodkin: asuming 1Ghz cpu [00:22] aurynn: for now. [00:23] shimondoodkin: am i correct with my calculations? [00:23] aho: depends on what you're doing [00:23] aho: v8 for example got a top notch regexp engine [00:23] aurynn: shimondoodkin, you can't derive in-general assumptions from simple calculations [00:24] shimondoodkin: id did n++; [00:24] shimondoodkin: and new date also [00:24] aho: http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=gpp [00:24] aurynn: Sure, but complex tasks can take less time to run [00:25] aurynn: and how do you measure the performance of the developer? [00:25] mikeal has joined the channel [00:26] aho: regex is the same, usually it's 4-20 times slower, unless you do something js is really bad at... then it's easily 100 times slower [00:26] shimondoodkin: sure javascript is faster to develop then c++ [00:26] shimondoodkin: because it is a managed memory oo script [00:27] aho: so, as you can see your "1000 times slower" figure was pretty off [00:27] aurynn: so do you need a faster developer or a faster language? What does your project need? [00:28] aurynn: also, JS can be JIT compiled now, so it can be profiled and eventually be faster than the same code written by a naive C++ developer. [00:28] aurynn: We're at the point where ASM is faster if you let a machine write it, usually. [00:29] aurynn: I can buy a faster CPU for a lot cheaper than I can buy an elite C++ developer for a year. [00:30] creationix: aurynn: so true [00:30] shimondoodkin: :) [00:30] aho: usually the db will be the bottleneck btw [00:31] aho: ruby and php are quite a bit slower than js/v8 for example, but they still do fairly well for that reason [00:32] evanmeagher has joined the channel [00:33] shimondoodkin: btw any ideas on a methodoloady of how to develop in paralel? [00:33] creationix: when your system is I/O heavy, the threaded vs event based makes more difference then "scripted" vs "compiled" [00:33] Aria has joined the channel [00:33] eee_c1 has joined the channel [00:34] shimondoodkin: like 10 programmers on 1 program and the result is achived 10 times quicker [00:35] creationix: shimondoodkin: that's like 9 women creating a baby in 1 month [00:35] shimondoodkin: i like that joke [00:35] aurynn: read the Mythical Man Month. [00:35] aurynn: I really liked their surgeon analogy [00:35] creationix: but yeah, sometimes you can break out modules and work in parallel [00:35] shimondoodkin: ive read a summery on wikipedia, me too [00:35] creationix: but more often than not, the overall cost is so much more it doesn't save time [00:36] creationix: modularity and loose coupling with strict interfaces [00:36] creationix: I have a great book on interface oriented programming [00:37] creationix: the web is a great example of this [00:38] prettyrobots has joined the channel [00:38] davidascher has joined the channel [00:39] unomi has joined the channel [00:40] shimondoodkin: have you had a docs writer on your team? how the interaction with him works? is it not spending time of two people insted of one [00:40] jrockjiggz has joined the channel [00:42] shimondoodkin: i think i need someone to write docs to my projects [00:42] Gruni has joined the channel [00:44] mikeal has joined the channel [00:51] aaron__ has joined the channel [00:52] johngbrooks has joined the channel [00:52] mbrochh has joined the channel [00:52] mbrochh has joined the channel [00:52] mogilny has left the channel [00:54] sprout has joined the channel [00:55] jvolkman-home: Are there any memory/heap analyzers for node or v8? [00:56] pedrobelo has joined the channel [00:57] tlrobinson_ has joined the channel [00:58] shimondoodkin: any debuger can do it for you [00:58] shimondoodkin: it is just a metter of gui [00:58] shimondoodkin: it is native in v8 [00:58] jvolkman-home: heap inspection? [00:59] AAA_awright_ has joined the channel [00:59] shimondoodkin: you can try cloude 9 , node inspector [00:59] mbrochh has joined the channel [00:59] mbrochh has joined the channel [01:00] shimondoodkin: or command line [01:00] shimondoodkin: node --debug --something like dump heap to file [01:00] tapwater has joined the channel [01:01] shimondoodkin: what is include in node js 0.3? [01:01] shimondoodkin: what is include() in node js 0.3? [01:02] shimondoodkin: is there a difference between require and include? [01:03] ajsie: didnt know there was an include [01:03] ajsie: =) [01:03] shimondoodkin: me too [01:03] shimondoodkin: is it works or it is just a alias [01:04] prettyrobots has joined the channel [01:04] jasondavies has joined the channel [01:04] jasondavies has joined the channel [01:05] jvolkman-home: i dont' have include() in 3.0 [01:06] shimondoodkin: it is in change log [01:06] shimondoodkin: * require() and include() now need the ".js" extension [01:06] aho: like 10 programmers on 1 program and the result is achived 10 times quicker <- number of communication paths is n*(n-1)/2. 2 people = 1 path, 10 people = 45 paths... so yea, there is lots of extra friction :> [01:06] shimondoodkin: :) [01:07] aho: as soon as there are 4 people, the number of communication paths exceeds the number of people [01:07] shimondoodkin: lol [01:08] tapwater has joined the channel [01:08] Aria: Ooh, need the .js extension. win, from my point of view. [01:08] Aria: Less magic! [01:08] aho: well, it's a real problem .) [01:08] shimondoodkin: aho: the comm paths or .js? [01:09] aho: communication paths [01:09] shimondoodkin: how do you know that? [01:09] aho: know what? [01:10] shimondoodkin: that it is areal problem to have more then 4 programmers on a project [01:10] prettyrobots has joined the channel [01:10] aho: well, that's not a problem per se [01:10] aho: it's a problem that there is more overhead [01:10] shimondoodkin: have you hada similar expirtiance [01:10] mbrochh has joined the channel [01:10] mbrochh has joined the channel [01:11] tilgovi_ has joined the channel [01:11] shimondoodkin: til now i have tried only teams of 2 programmers [01:11] aho: it's painfully obvious if your team grows from <4 to >4 [01:12] Aria: Ayep. Unless things modularize neatly, or you have some other divisible task that reduces the communication between groups of >4, you have to manage that. [01:12] aho: ye, having some kind of hierarchy helps [01:13] Aria: Hierarchy's one popular option. [01:14] jchris has joined the channel [01:14] shimondoodkin: funny other way: put each programmer in a diffrent room so there wont be a comunication [01:14] prettyrobots has joined the channel [01:15] mbrochh has joined the channel [01:15] scnd has joined the channel [01:15] shimondoodkin: did you tried tests first? [01:15] aho: ideally there are lots of small groups (2-3) which work on small separate (or well, modular) things [01:16] zentoooo has joined the channel [01:16] hamsterspider has left the channel [01:17] Aria: Yeah. And either send a delegate to work on integration, or have some fluidity in group format, so that as projects overlap, there's a good team working on those things. [01:17] Aria: And ... learn to communicate in code. Because at least that communication has a side-effect that's useful. [01:18] xicubed has left the channel [01:18] Aria: A good strategy for that is 'rough consensus and running code' (or 'running tests') [01:19] Aria: As long as everyone more or less agrees, and the design has an implementation, go. [01:19] shimondoodkin: I like the idea to communicate in code [01:19] Aria: (And it encourages ideas to come with back-up, actual working code to demonstrate it.) [01:19] Aria: "Why, yes, here's a spec. But it matches THIS CODE I WROTE. See? Even method names show up like the verbs in the spec do." [01:20] shimondoodkin: :) [01:21] aho: whats nice about written stuff (code/docs/guide lines/conventions/etc) is that there is only friction on the receiving end - not both (i.e. it's a linear cost) [01:21] derferman has joined the channel [01:21] Aria: Yeah. [01:21] Aria: Well. Mostly. The communication channel itself has a friction that's pretty high. [01:22] Aria: (Though one that, if your team can't hack, aren't going to do well with code.) [01:24] mbrochh has joined the channel [01:24] mbrochh has joined the channel [01:24] shimondoodkin: aho: I did not understood why there is only friction on the receiving end [01:24] shimondoodkin: is it the readers does not like it? [01:24] aho: there isnt one person on the other end who has to explain it over and over and over again [01:24] xla has joined the channel [01:25] shimondoodkin: aha [01:25] shimondoodkin: like there is no feed back and arguing [01:26] shimondoodkin: Aria: What do you mean by If your team can't hack, they aren't going to do well with code? [01:27] aho: well, there might be feedback and arguing, but explaining how things currently are (or how they will be) only requires the time of one person per person (one and the same) instead of 2 people [01:27] mbrochh has joined the channel [01:27] mbrochh has joined the channel [01:29] shimondoodkin: ok get it [01:30] tlrobinson_ has joined the channel [01:30] shimondoodkin: Aria: do you mean to hide only programmers who can leran from code - thouse who know how to hack? [01:31] shimondoodkin: hire [01:32] mbrochh_ has joined the channel [01:32] tlrobinson__ has joined the channel [01:34] shimondoodkin: aho: thanks [01:34] aho: np [01:34] shimondoodkin: Aria: thanks [01:35] andrewa2 has joined the channel [01:35] Aria: Sure thing. [01:36] shimondoodkin: aho, Aria what are your github names? [01:36] Aria: aredridel [01:36] aho: i'm not on github :> [01:37] blowery has joined the channel [01:37] evanmeagher has joined the channel [01:38] shimondoodkin: do you have twitter? [01:39] tlrobinson_ has joined the channel [01:40] prettyrobots has joined the channel [01:40] jimt_ has joined the channel [01:40] bmizerany has joined the channel [01:40] creationix has left the channel [01:41] mbrochh has joined the channel [01:41] tlrobinson__ has joined the channel [01:42] softdrink: ACTION pets socket.io [01:44] shimondoodkin: ACTION found a solution to write docs: do them in the wiki instead in the readme [01:45] banjiewen_ has joined the channel [01:46] prettyrobots has joined the channel [01:46] jpld has joined the channel [01:47] jpld: AAA_awright / davidc_ : cheers for the help on http auth, i settled on connect-auth which has a few different methods, still in search of ssl (0: [01:47] bpot has joined the channel [01:47] mbrochh has joined the channel [01:48] tlrobinson_ has joined the channel [01:50] andrewa2 has left the channel [01:51] mbrochh has joined the channel [01:52] sh1mmer has joined the channel [01:52] Guest54708 has joined the channel [01:54] mbrochh has joined the channel [01:54] mbrochh has joined the channel [01:56] bruse: so why does node require copyright assignment? [01:57] cardona507 has joined the channel [01:58] matt_c has joined the channel [02:00] davidascher has joined the channel [02:01] elijah-mbp has joined the channel [02:04] jwm_ has joined the channel [02:05] mbrochh has joined the channel [02:07] deepthawtz has joined the channel [02:07] mbrochh has joined the channel [02:10] stagas: why is npm failing with couldn't resolve host 'packages' [02:10] miccolis has joined the channel [02:10] jamescarr has joined the channel [02:11] mbrochh has joined the channel [02:11] ajsie: if i have 30 files that are using "util"...isnt it better to make it global in the index.js like: "util = require('util');" ? [02:12] jamescarr: no [02:13] jamescarr: globals are never good [02:13] brianmario has joined the channel [02:13] jamescarr: you could always pass it into your modules though if you don't want to include it each time [02:13] jamescarr: via dependency injection [02:14] stagas: isaacs? [02:14] ajsie: jamescarr: how do you mean? [02:14] ajsie: some examples? [02:15] jjcm has left the channel [02:15] mbrochh has joined the channel [02:15] mbrochh has joined the channel [02:15] Tobsn has joined the channel [02:16] richcollins has joined the channel [02:16] Tobsn has joined the channel [02:17] c4milo has joined the channel [02:17] jamescarr: var whatever = require('yourmodule')(util); [02:17] jamescarr: or var whatever = require('yourmodule').use(util); [02:17] jamescarr: or even... [02:18] gkatsev: you can do that? [02:18] jamescarr: var Dude = require('the').Dude; [02:18] jamescarr: var dude = new Dude(util); [02:18] rauchg_ has joined the channel [02:18] gkatsev: ah [02:18] jamescarr: var elDuderino = new Dude(util); [02:18] jamescarr: :) [02:18] gkatsev: just shorthand, basically? [02:19] ajsie: jamescarr: is this possible: require('yourmodule').use(util); [02:19] ajsie: yourmodule will inject util? [02:19] ajsie: or do i have to add use() method? [02:21] jamescarr: use is made up by me :) [02:21] ajsie: okay=) [02:21] ajsie: yeah i get you [02:21] jamescarr: exports.use = function(util){ return whatever; } [02:24] heavysixer has joined the channel [02:25] ben_alman has joined the channel [02:26] slaskis_ has joined the channel [02:27] isaacs: awesome, the npm registry can actually be replicated now [02:28] MikhX has joined the channel [02:28] isaacs: stagas: you around? [02:29] stagas: isaacs: yes [02:29] rauchg_: isaacs: is it sharded too ? [02:29] isaacs: you still getting that "could not resolve host packages" issue? [02:29] ajsie: how do i fetch the current path? [02:29] rauchg_: npm is webscale [02:29] isaacs: rauchg_: no, not sharded. i do plan on setting up bigcouch for that eventually, but not yet [02:29] isaacs: rauchg_: ;P [02:29] stagas: isaacs: it's fixed now [02:29] isaacs: stagas: oh, weird [02:29] isaacs: stagas: do you have a stack trace? i'm curious [02:30] stagas: isaacs: actually didn't test it, but reloaded registry.npmjs.org/npm/latest [02:30] stagas: isaacs: the tarball had 'package' as hostname [02:32] isaacs: stagas: the reason i'm curious is that i have the "packages" hostname mapped to 127.0.0.1, and use that for testing [02:32] isaacs: d'oh [02:32] isaacs: ye; [02:32] isaacs: yep [02:32] isaacs: that sure did slip in there... [02:32] isaacs: and, probably all over the damn place. [02:32] isaacs: great. [02:32] isaacs: ACTION runs off to fix it... [02:34] BHSPitMonkey has joined the channel [02:36] indutny has joined the channel [02:36] mikeal has joined the channel [02:37] MattDiPasquale has joined the channel [02:37] keeto has left the channel [02:37] keeto has joined the channel [02:38] embedder has joined the channel [02:39] softdrink has joined the channel [02:39] prettyrobots has joined the channel [02:40] stagas: testing https://gist.github.com/670250 [02:40] stagas: ok works: http://embed.stagas.com/ [02:40] bartt has joined the channel [02:41] stagas: made a bot that grabs all urls from here and oembeds them in a frame [02:41] indutny: cool [02:41] indutny: http://github.com/ [02:41] indutny: works [02:42] indutny: http://github.com/"123" [02:42] stagas: or just puts them in a second frame in the frame if they aren't oembeddable [02:42] stagas: uses api.embed.ly [02:42] indutny: http://github.com/"123 [02:42] indutny: http://github.com/<231> [02:42] isaacs: stagas: ok, fixed now. [02:43] indutny: is it open source? [02:43] isaacs: stagas: also, if you replicate the db's, the registries will try to serve the tarballs from their own location now. [02:43] stagas: isaacs: wow [02:44] jasondavies has joined the channel [02:44] jasondavies has joined the channel [02:45] banjiewen has joined the channel [02:46] stagas: indutny: I'll put it up on github sometime [02:46] eee_c has joined the channel [02:46] indutny: stagas: thanks [02:46] isaacs: hahaha, and now, instead of none of the packages on http://npm.mape.me/ having "laste updated" dates, they're ALL updated 3 hours ago. [02:47] indutny: isaacs: it happens [02:47] indutny: isaacs: sometimes :) [02:47] isaacs: take that, data!! [02:47] isaacs: now at least people wont' complain that it's "out of date" [02:51] yeevgen has joined the channel [02:52] derferman has joined the channel [02:53] indutny: isaacs: set date to 2012 year [02:53] indutny: isaacs: so they never be stale [02:54] isaacs: hah [02:54] tlrobinson_ has joined the channel [02:54] stagas: it shows thumbnails also if they're available http://www.youtube.com/watch?v=0pQ5QMa7Pjo [02:56] softdrink: wheeeee collaborative mouse clicks with web sockets http://jocafa.com:9876/ (chrome only at the moment) [02:57] softdrink: hehe [02:57] indutny: haha [02:57] slaskis has joined the channel [02:57] charlenopires has joined the channel [02:57] softdrink: friggin track pad [02:58] softdrink: (multiple windows works btw) [02:58] Gruni has joined the channel [03:00] indutny: random attack! [03:00] MikhX has joined the channel [03:01] softdrink: lol nice [03:01] softdrink: do that a couple or 3 times.. i'm curious :) [03:02] indutny: haha :) [03:02] softdrink: it's just twiddling its thumbs [03:04] softdrink: htop is taking more load than node. [03:04] indutny: stop flooding :) [03:04] softdrink: hehe [03:04] softdrink: was entertaining though [03:05] softdrink: there's not even a blip on my cpu usage graph. [03:06] indutny: of course no :) [03:06] softdrink: node ftw [03:06] dguttman_ has joined the channel [03:08] tapwater_ has joined the channel [03:08] eee_c has joined the channel [03:08] indutny: softdrink: one problem - it isn't reconnecting on disconnect [03:09] softdrink: *nod* totally hacked together… had never messed with socket.io before [03:09] mjr_ has joined the channel [03:10] jasondavies has joined the channel [03:10] jasondavies has joined the channel [03:12] brianmario has joined the channel [03:15] MikhX_ has joined the channel [03:18] MattDiPasquale has joined the channel [03:20] jpld has joined the channel [03:20] bartt has joined the channel [03:23] jesusabdullah: Just read about the node/joyent thing--exciting! [03:23] indutny: :) [03:24] indutny: your nickname is awesome [03:24] jesusabdullah: heh--thanks? :) [03:26] bmizerany has joined the channel [03:26] erlnoob has joined the channel [03:27] AAA_awright_ has joined the channel [03:32] ajsie: how do i share variables between files? [03:33] ajsie: i use module.exports for them too? [03:33] indutny: yes [03:33] indutny: actually, in most cases [03:33] indutny: you should change exports object [03:33] ajsie: eg. i have in the main file set up "const appPath = __dirname" [03:33] ajsie: and want other files to use appPath [03:34] indutny: I usually do following [03:34] ajsie: indutny: what do you mean by "change exports object" [03:34] indutny: module.exports = function(option) { [03:34] indutny: } [03:34] indutny: and after [03:34] indutny: require('...')(options); [03:34] indutny: ajsie: i mean do following things [03:34] indutny: exports.someVar = 1231; [03:34] indutny: exports.someFn = function() {}; [03:35] ajsie: yeah [03:35] ajsie: i export everything and require them [03:35] bartt has joined the channel [03:35] ajsie: so no globals huh ? =) [03:35] indutny: nonono [03:35] ajsie: cant remember how I did it back in php [03:35] ajsie: i think they were using globals =) [03:35] indutny: yes [03:35] ajsie: and it was all spaghetti =) [03:38] eee_c has joined the channel [03:39] pquerna: I?m a contributor to Node ? do I need to sign a new contributor [03:39] pquerna: license agreement (CLA) with Joyent? [03:39] pquerna: No. The CLA will be addressed to Joyent now, but the terms are the same. [03:39] pquerna: ryah: i dont' quite understand how that is accurate really :) [03:40] jashkenas: let's all hope Joyent doesn't get bought by Oracle ;) [03:42] indutny: haha :) [03:42] indutny: that will be the devil's deal [03:42] sivy has joined the channel [03:43] twoism has joined the channel [03:43] noahcampbell has joined the channel [03:43] pquerna: oracle buys all my favourite things [03:43] pquerna: :( [03:43] indutny: oracle had bought [03:43] indutny: even [03:43] indutny: my dog [03:43] galaxywatcher has joined the channel [03:43] pquerna: berkelydb, innodb, mysql, zfs, dtrace [03:45] ryah: pquerna: would you contend that contributors need to make a new agreement? i believe that comes from the lawyers [03:45] rbranson: ah, politics [03:45] indutny: yep [03:45] rbranson: the thing that immediately follows popularity :D [03:45] jesusabdullah: Joyent? Oracle? I hope not :( [03:45] indutny: ryah: so will I need to sign it again [03:45] indutny: ? [03:45] ryah: indutny: no, i don't believe so [03:46] pquerna: ryah: i mean, strictly speaking since the CLA gives all rights to you, you can just perpetually give it to Joyent; But generally CLAs are written for the license owners protection, ie Joyents. [03:46] pquerna: so if joyent's lawyers don't care, meh :) [03:47] pquerna: but for example, when a project joins the ASF, they make all new CLAs to the ASF so its clear new contributions are being made under that CLA [03:47] aurynn: I'd like to work at Joyent. It'd be pretty cool. [03:48] mbrochh has joined the channel [03:48] pquerna: IANAL, i just hate lua. [03:49] ryah: pquerna: i think they're okay with it. they'll just sue me if one of you starts injecting questionable content :) [03:49] indutny: :-D [03:50] ryah: (jk) [03:50] ryah: i'll bring it up [03:52] jashkenas: Lua? [03:52] pquerna: i use lots of embeded lua for work. [03:52] pquerna: yesterday i found a bug in its json parser. [03:52] pquerna: :rage: :rage: :rage: [03:52] rbranson: ouch [03:52] rbranson: seriously though, json is simple enough... [03:53] pquerna: \uAAAA were being parsed incorrectly [03:53] rbranson: do you guys use LuaJIT? [03:53] pquerna: so, if you had u followed by any 4 valid hex characters [03:53] pquerna: it would try to convert that to a raw byte [03:53] pquerna: even if there was no leading \u [03:53] rbranson: mmm [03:53] pquerna: for this specific project we do not use LuaJit, though I've used it on others. [03:53] rbranson: sounds like a week-long bug hunt [03:54] pquerna: not that long... but just like, thats part of a platform you shouldn't have bugs in [03:54] deepthawtz has joined the channel [03:54] rbranson: right, you immediately don't suspect it [03:54] jesusabdullah: pquerna: What's your job? [03:55] pquerna: job title? Chief Architect at Cloudkick... I'm not sure what my job is always. [03:55] jesusabdullah: Hah [03:55] pquerna: if node had been around 1.5 years ago, I could of avoided lua for this project :) [03:56] pquerna: (well, actually, i guess node was around that long ago, just.. different) [03:56] rbranson: kickin' clouds [03:56] jesusabdullah: I haven't had a reason to learn lua yet [03:56] jesusabdullah: Not sure if I ever will [03:56] pquerna: I actually love Lua. [03:56] rbranson: node was... new... 1.5 years ago :D [03:56] pquerna: its hard to beat for an embeded languages. The Embedding api is so nice to integrate with plain old C. [03:57] rbranson: same problem as JS though, not much of a standard library [03:57] pquerna: and LuaJit, even v1 was pretty damn fast. [03:57] pquerna: well yeah, its not that bad though. the library part. [03:57] jesusabdullah: hmm [03:57] pquerna: well, it is. [03:57] pquerna: but yeah. [03:57] rbranson: right, makes implementation simpler [03:57] pquerna: yes, and smaller [03:57] admc has joined the channel [03:57] rbranson: which is why both JS and Lua have fantastic runtimes :P [03:57] pquerna: our agent runs in aobut 4000kb steady state [03:57] jesusabdullah: What's it embedded into besides WoW? [03:57] pquerna: Lots of games [03:58] rbranson: it is the JavaScript of games [03:58] jesusabdullah: heh [03:58] pquerna: random example of where we also use it is in Reconnoiter [03:58] pquerna: https://labs.omniti.com/labs/reconnoiter [03:58] pquerna: it embeds Lua to write checks [03:58] pquerna: some people use it as a config file [03:59] pquerna: because its easy to get variables in / out [03:59] pquerna: heard of a couple iphone games with it too [03:59] pquerna: Lua's problems are largely that its very hard to find anyone with existing experience with it, and there is very little secondary tooling built up around it. [04:00] pquerna: (ie, a debugger -- we have a hacky terrible one we wrote -- thats it) [04:00] rbranson: ouch [04:00] jesusabdullah: Hmm [04:00] pquerna: Lua the VM gives you hooks tow rite a debuger, so its not terrible [04:00] robotarmy has joined the channel [04:00] pquerna: but their aint' a great one available as an open source thing [04:01] rbranson: its amazing... you'd think the game companies would have funneled big $ into it [04:01] jesusabdullah: I guess I'll put off learning Lua then :) [04:01] pquerna: they generally invest in internal toolkits [04:01] jesusabdullah: Kept it to themselves [04:01] pquerna: lua itself is so small in C [04:01] rbranson: they don't come off as terribly interested in open source [04:01] pquerna: that its pretty easy to fork off and make some crazy modifications [04:02] rbranson: ah [04:02] pquerna: i still want to know what Google does with Lua. They have been sponsoring LuaJit on and off, and hired up a slew of random Lua programmers a few years back :) [04:03] rbranson: that's interesting, because, publically, they say they only use C++, Java, and Python [04:03] pquerna: http://google-opensource.blogspot.com/2010/01/love-for-luajit.html [04:03] rbranson: for anything production [04:03] pquerna: We use Lua internally at Google, and are very happy to be sponsorin... [04:03] pquerna: yeah, so i dunno :) [04:03] jesusabdullah: Crazy-ass WoW addons, obviously. [04:03] pquerna: lol [04:03] pquerna: google toolbar for wow? [04:04] rbranson: hmm, sounds like they're poaching them for Unladen Swallow / V8 work [04:05] rbranson: hacking on a project like that seems like a programming utopia [04:05] rbranson: one-man, tiny language, no committees or users [04:05] rbranson: just a small base of rabid fans [04:05] pquerna: is this Node or Lua :) ? [04:05] rbranson: lua :) [04:06] SvenDowideit_ has joined the channel [04:06] jesusabdullah: What does reconnoiter do exactly? It confused me [04:06] jesusabdullah: I'm pretty tired <_< [04:06] technoweenie has joined the channel [04:06] pquerna: its a monitoring system [04:06] jesusabdullah: What does it monitor? [04:06] pquerna: lets say you need to monitoring 50,000 servers [04:07] pquerna: and each one has 100 metrics [04:07] pquerna: and you do that once a minute [04:07] jesusabdullah: hmm [04:07] pquerna: thats 83,000 metrics collected per second. [04:07] pquerna: now, unfrotunately, that doesn't scale very well into a single box, like in say Nagios [04:08] jesusabdullah: Oh, okay [04:08] pquerna: that, roughly speaking, is why reconnoiter exists -- to provide a scalable architecture for collecting and analyzing metrics about servers [04:08] pquerna: (its also what some of cloudkick is based on) [04:08] jesusabdullah: like, the same kinda things nagios would do? [04:08] pquerna: kinda, but also some of what people use cacti or munin for [04:09] rbranson: ugh, I hate all open source monitoring packags [04:09] jesusabdullah: My background in multi-system administration/monitoring is nil [04:09] jesusabdullah: :( [04:09] SubStack: jesusabdullah: lies [04:09] Guest4930 has joined the channel [04:09] jesusabdullah: What? [04:09] mikeal has joined the channel [04:09] jesusabdullah: Okay, maybe like 3 boxes [04:10] jesusabdullah: (mooom!) [04:10] SubStack: yeah >:p [04:10] SubStack: oh I mean what about your scientific model stuff [04:10] jesusabdullah: Oh yeah well that ended in disaster [04:10] jesusabdullah: XD [04:10] pquerna: yes, but once you have such a large flow of data [04:10] jesusabdullah: Sometimes, rolling your own is a BAD IDEA [04:10] pquerna: you can start doing interesting things with stream anlaysis and detecting things... [04:11] pquerna: complex event processing, etc, -> http://esper.codehaus.org/ [04:11] rbranson: so much text [04:11] pquerna: heh [04:11] rbranson: like the haproxy page [04:12] pquerna: esper lets you write SQL for event streams. something like select average (foo) over 5 minutes > 400 trigger do_something(); [04:12] rbranson: nice [04:12] rbranson: could totally have just said that [04:12] pquerna: then you just flood it with events [04:13] pquerna: its much more common in financial systems [04:13] rbranson: sounds quite useful for monitoring :) [04:17] jesusabdullah: Hmm [04:17] jesusabdullah: Kinda cool [04:18] DougReeder has joined the channel [04:19] DougReeder: ACTION waves hello [04:20] pquerna: hi [04:21] jesusabdullah: ACTION gives DougReeder a back rub [04:21] DougReeder: ACTION smiles "What, is this LambdaMOO now?" [04:22] smtlaissezfaire has joined the channel [04:22] rwaldron_ has joined the channel [04:22] vmamidi has joined the channel [04:22] DougReeder: I do have a real question: when I have a loop, which makes an async call, in the callback, how can you know for what data the callback is being called? [04:23] rwaldron_ has joined the channel [04:23] robotarmy has joined the channel [04:25] lakin has joined the channel [04:25] iszak has joined the channel [04:25] DougReeder: The following code doesn't work: for (f=0; f 30) [04:25] DougReeder: incipit = text.slice(0, 30) + "..."; [04:25] DougReeder: else [04:25] DougReeder: incipit = text; [04:25] DougReeder: console.log(filepath[f2], text.length, incipit); [04:25] DougReeder: }); [04:26] mikew3c_ has joined the channel [04:26] MattDiPasquale has joined the channel [04:26] DougReeder: In particular, since the callbacks get called in random order, filepath[f2] does not necessarily contain the path of the file, of which the text is in the "text" variable. [04:27] rbranson: right [04:27] rbranson: since when it gets called, filepath[f] is going to be the last iteration of the loop [04:27] rbranson: it'll always be the same [04:27] rbranson: that is a closure pitfall [04:27] rbranson: you need to create a new function scope to fall fs.readFile in [04:28] rbranson: and pass the filename as an argument [04:28] DougReeder: This pattern works with HTML5 relational databases, because you're guaranteed the callbacks will be called in the same order. [04:28] bradleymeck has joined the channel [04:28] DougReeder: A new closure for each iteration? Isn't that expensive? [04:28] rbranson: var f = function(path) { fs.readFile(path, ...) { ... } }; [04:28] rbranson: then do a loop over the filepaths [04:28] rbranson: f(path); [04:28] bpot has joined the channel [04:29] Aria: Not really, no. Not expensive. [04:29] DougReeder: Closures aren't ruinously expensive, but they're not free, either. [04:29] rbranson: the problem is, your current code reads filepath[f], and at the time the closure is called, the loop is completed and the state of f = length-1 [04:29] Aria: (and it's not an order problem: It's a synchronization problem. In the reldb case, it's because each callback is called before the loop finishes) [04:29] rbranson: in JS, scope is at the function level, not the block [04:29] Aria: (Not because they're called in order.) [04:30] DougReeder: [grins] Actually, my code reads filepath[f2], which contains the name of a file, just not necessarily the correct one. [04:30] bradleymeck: dougreeder, function creation is expensive, closure acces is pretty cheap actually [04:30] bradleymeck: access* [04:31] rbranson: DougReeder: i wouldn't be too worried about the cost of building and calling a closure if you're doing disk I/O [04:31] DougReeder: That is a good point. [04:31] rbranson: you can probably build and destroy 1,000 closures in the time it takes to make 1 syscall by itself [04:31] rbranson: let alone an I/O call [04:31] rbranson: build and call, rather [04:32] rbranson: make the code read right, that f2 shit is confusing [04:32] Aria: And learn to gist. [04:32] DougReeder: ACTION nods [04:33] Gruni has joined the channel [04:33] rbranson: clever, but confrusing :) [04:33] PyroPeter has joined the channel [04:33] rbranson: I/O in node.js is farmed out to a pool of worker threads, so the order is never going to be deterministic [04:33] Aria: But yeah. Don't make any assumptions about what's expensive as far as language features. V8 will surprise you. [04:34] HAITI has joined the channel [04:34] HAITI has joined the channel [04:34] bradleymeck: except assume "in" and "with" are slow [04:34] DougReeder: Well, you can assume if it's difficult in C, it's expensive in V*. [04:35] Aria: Sure, if it's actually difficult, not just syntactically ugly. [04:35] Aria: (like closures) [04:35] DougReeder: As always, correctness first - performance comes later. [04:37] bradleymeck: idk if closures are really that difficult since its more like a linked list of maps than anything, but performance wise it is a tough issue [04:37] Aria: Sure. The sort of problem we've been solving in compilers for ages. [04:38] ShiZWeaK: ryah: Are the slides from your latest jsconf talk available somewhere? [04:40] SubStack has joined the channel [04:40] bradleymeck: aria, yes solved in static settings, but at runtime with jit they can be tough [04:41] rbranson: PIC to the rescue [04:42] ceej has joined the channel [04:44] sechrist has joined the channel [04:45] Gruni has joined the channel [04:47] ryah: ShiZWeaK: http://nodejs.org/jsconf-eu-2010.pdf [04:48] ctp_ has joined the channel [04:48] langworthy has joined the channel [04:49] technowe_ has joined the channel [04:52] bradleymeck: ryah, very exciting on node being sponsored now and you being able to get some more people on the team [04:53] rbranson: what are you talking about? node.js will never go anywhere! it's a bunch of hype! rubble rubble rubble! [04:55] indutny: how can I close fd for httpClient ? [04:55] bruse: i'm still wondering why the copyright assignment thing is necessary [04:55] indutny: client.destroy() ? [04:56] rbranson: bruse: marketing [04:56] bartt has joined the channel [04:57] Aria: bruse: Because then you don't end up with problems down the road where you have to contact 1000s of people and their estates if something needs to change license-wise. [04:58] ShiZWeaK: ryah: ty [04:58] galaxywatcher has joined the channel [04:58] rbranson: they should have to find out who my aunt is and ask her if she thinks these license changes are applicable, she'll know! [04:58] rbranson: right after she finishes her macaronni casserole for your nice lawyer friends in suits [04:59] rcy has joined the channel [05:01] Guest64306 has joined the channel [05:02] mikeal has joined the channel [05:05] bruse: Aria: but many people have reservations about contributing their code if the license could suddenly change in the future [05:06] Aria: Sure. Or if it can't. Or if it's GPL. Or if it's MIT. [05:06] galaxywatcher_ has joined the channel [05:09] AAA_awright_ has joined the channel [05:11] kawaz_h has joined the channel [05:11] Me1000 has joined the channel [05:13] DougReeder_ has joined the channel [05:13] dnolen has joined the channel [05:13] adelcamb1e has joined the channel [05:15] sugardav1 has joined the channel [05:15] ryah_ has joined the channel [05:15] Nomon_ has joined the channel [05:15] benoitc_ has joined the channel [05:15] brianmario_ has joined the channel [05:15] Naked has joined the channel [05:15] wao__ has joined the channel [05:15] dberlinger_away_ has joined the channel [05:15] dispalt_ has joined the channel [05:15] sadiq_ has joined the channel [05:15] Blackguard1 has joined the channel [05:16] shachaf_ has joined the channel [05:16] jimt has joined the channel [05:16] ryan[LOL] has joined the channel [05:16] mjr__ has joined the channel [05:16] sechrist_ has joined the channel [05:16] zorzar_ has joined the channel [05:16] akweon has joined the channel [05:17] jdalton has joined the channel [05:17] marienz has joined the channel [05:17] mraleph has joined the channel [05:17] richcollins has joined the channel [05:17] cnu has joined the channel [05:18] Akufen has joined the channel [05:18] Akufen has joined the channel [05:18] path[l] has joined the channel [05:19] mmso has joined the channel [05:20] superjudge has joined the channel [05:21] sivy has joined the channel [05:21] sh1mmer has joined the channel [05:21] siculars_ has joined the channel [05:24] bpot has joined the channel [05:24] siculars has joined the channel [05:26] jameshome: so hey, is anyone making a form validation library that works on the client and server side? [05:27] iszak: what so it churns out JS to validate client side? [05:28] iszak: Because if that's the case - I would want to use a library like jQuery or Dojo. [05:28] reid has joined the channel [05:28] indutny: hey hey, everyon [05:28] indutny: everyone* [05:28] indutny: checkout new npm module [05:28] indutny: node.uptime [05:28] indutny: it's stupid simple, and quite usefull [05:29] reid: Does anyone know how to get npm to rebuild your ~/.node_libraries? [05:29] indutny: as executable file or as library [05:29] iszak: npm? [05:29] indutny: http://github.com/donnerjack13589/node.uptime [05:29] reid: Yes. It made some symlinks there that need fixin' [05:29] jameshome: it seems like for frameworks like express it would be handy to have a library that has a series of common form validation actions that can be used on the server side to validate and sanitize before db writes, and on the client side to provide messaging to the user about what's broke [05:29] johngbrooks has joined the channel [05:29] reid: Likely bugs from older versions of npm... [05:30] jameshome: thinks like restricting usernames to alphanumerics and ensuring email addresses are email addresses. [05:30] jameshome: things [05:30] iszak: tbh there needs to be a node.js library repo. [05:31] iszak: or just one super defacto framework :D [05:31] rbranson: the oppression of choice [05:32] iszak: people don't know what is best and what they want. [05:32] iszak: It needs to be forced upon them, perfect example: apple. [05:32] iszak: WHATS THAT? YOU WANT TO CHANGE YOUR BG IN iOS3?! NO!!! [05:32] rbranson: hopefully your leader is benevolent :) [05:32] iszak: and yet iOS3 was very popular. [05:32] stalled has joined the channel [05:32] AAA_awright_ has joined the channel [05:32] iszak: rbranson, when I say some super defacto framework I meant decoupled also. [05:33] iszak: Kind of like Zend Framework where it's really use-at-will, if you don't want to use x, y, z, then you don't have to. [05:33] reid: Does anyone use /usr/local over ~/.node_libraries? [05:33] rbranson: that's more of a library than a framework the [05:33] rbranson: n [05:33] iszak: yet it's called a Zend Framework :D [05:33] jameshome: I use /usr/local [05:34] iszak: + it does provide functionality with a recommended way to organise the file system. [05:34] iszak: That being the CLI / Zend_Application. [05:34] rbranson: i suppose... very loose framework then... when I think framework, I think Spring, Rails, etc [05:34] reid: Did you do anything special to switch? My ndoe is complaining loudly when npm started using /usr/local. [05:34] reid: My node is, too. :) [05:35] rbranson: framework in the twisted PHP universe :) [05:35] iszak: rbranson, yeah understandable. [05:35] jameshome: do you have a ~/npmrc? [05:35] reid: yeah. [05:35] jameshome: I have this in mine: [05:35] jameshome: root = /usr/local/npm [05:35] jameshome: manroot = /usr/local/share/man [05:35] jameshome: binroot = /usr/local/bin [05:36] reid: ah, same here. exporting NODE_PATH to /usr/local makes node happy. i seem to remember /usr/local used to be in the require.paths by default... [05:37] mr_daniel has joined the channel [05:38] Gruni has joined the channel [05:42] mikeal has joined the channel [05:42] jameshome: is there an Express 1.0b5 with jqtpl support coming to npm soon? [05:43] jameshome: I can haz? [05:43] indutny: don't use jqtpl! [05:43] indutny: there're only one template system [05:43] indutny: nTPL [05:43] indutny: http://github.com/donnerjack13589/nTPL [05:44] indutny: it's fastest, extendable [05:44] indutny: and can be used with express.js [05:44] indutny: also it supports python like partials [05:46] jameshome: this looks too powerful [05:47] jameshome: I like my templating languages stupid and pretty. [05:47] indutny: eh... [05:47] indutny: you are not first who saying this [05:47] jameshome: glad to know about it tho! [05:48] bentruyman has joined the channel [05:48] mbrochh has joined the channel [05:49] indutny: thanks [05:49] indutny: :) [05:51] marienz has joined the channel [05:55] ajsie: is there something like Gem Bundler for Node.js? [05:55] indutny: npm ? [05:55] ajsie: npm is like RubyGems [05:55] indutny: ok [05:55] jgautier has joined the channel [05:55] reid: http://npmjs.org/ [05:55] ajsie: i want to specify a npm package in a file...then it will install it if its not installed [05:56] jgautier: anyone here used the ajax.org library? [05:56] ajsie: because now i have to install every npm packages an app is using [05:56] ajsie: it doesnt take care of that like Bundler [05:56] reid: npm bundle? [05:56] reid: man npm-bundle [05:56] ajsie: ok [05:56] ajsie: ill check on that [05:56] reid: :) cool [06:01] hornbeck has joined the channel [06:02] italic has left the channel [06:04] benburkert has joined the channel [06:06] elijah-mbp has joined the channel [06:06] bartt has joined the channel [06:08] DougReeder has joined the channel [06:08] MikhX has joined the channel [06:09] jpld has joined the channel [06:24] davidascher has joined the channel [06:26] marienz has joined the channel [06:29] DougReeder has joined the channel [06:30] Gruni has joined the channel [06:33] derren13 has joined the channel [06:41] mikew3c has joined the channel [06:43] dioms has joined the channel [06:44] bmizerany has joined the channel [06:46] derferman has joined the channel [06:50] fangel has joined the channel [06:50] intacto has joined the channel [06:52] Anti-X has joined the channel [06:54] faust45 has joined the channel [06:59] Guest63791 has joined the channel [07:00] marienz has joined the channel [07:01] mraleph1 has joined the channel [07:07] zentoooo has joined the channel [07:09] vmamidi has joined the channel [07:11] Me1000 has joined the channel [07:15] langworthy has joined the channel [07:18] sriley has joined the channel [07:22] saikat has joined the channel [07:23] Gruni has joined the channel [07:28] Twelve-60 has joined the channel [07:29] adhipg has joined the channel [07:31] ph^ has joined the channel [07:32] mytrile has joined the channel [07:33] mbrochh_ has joined the channel [07:34] mlangenberg: Does anybody know why node-static doesn't work with absolute paths? [07:34] technoweenie: mlangenberg: security reasons, perhaps? [07:34] mlangenberg: In examples I only see it serving up directory '.', because when you try /path/to/dir, it crashes. [07:34] marienz has joined the channel [07:35] tilgovi_ has joined the channel [07:35] SamuraiJack has joined the channel [07:36] mlangenberg: technoweenie: the problem is, when you call your node script from a different directory, using '.' for node-static will serve up the current working directory. [07:37] technoweenie: yea that blows too [07:37] mraleph1 has joined the channel [07:38] technoweenie: do people accidentally serve up their node apps too w/ node-static [07:38] mlangenberg: I wanted to, but it obviously failed on my staging server. [07:39] mlangenberg: I use node as a chat backend for a pretty large web portal. I wanted to use node-static to server up a small statistics page. [07:40] mjr__: mlangenberg: you could use a simple connect-based server to do that. [07:40] stride: I use the staticProvider in connect for that as well, works great [07:41] galaxywatcher has joined the channel [07:41] mjr__: mlangenberg: https://github.com/senchalabs/connect/blob/master/examples/static/server.js [07:42] mlangenberg: Thanks! [07:42] mjr__: That's a 4 line server you can use, just set something else for __dirname [07:42] mjr__: and of course you need to do: npm install connect [07:42] mlangenberg: mjr__: No I actually need it to be __dirname. [07:43] mjr__: oh, well even better [07:43] dioms has joined the channel [07:48] micheil: hmm, anyone know if node's http.Client or net.Stream abides by DNS TTL? [07:48] mjr__: Does c-ares cache? [07:48] mjr_: I didn't think it did. [07:49] Anti-X has joined the channel [07:49] benburkert has joined the channel [07:52] sudoer has joined the channel [07:54] mbrochh has joined the channel [07:56] intacto has joined the channel [08:00] altamic has joined the channel [08:08] nsolsen has joined the channel [08:15] Gruni has joined the channel [08:27] simme has joined the channel [08:28] FLYBYME has joined the channel [08:30] saschagehlich has joined the channel [08:32] adambeynon has joined the channel [08:32] gregerolsson has joined the channel [08:33] simme has joined the channel [08:37] virtuo has joined the channel [08:37] TomY has joined the channel [08:39] dquestio1s has joined the channel [08:42] jigz has joined the channel [08:44] Druid_ has joined the channel [08:46] derferman_ has joined the channel [08:46] quag has joined the channel [08:48] tisba has joined the channel [08:49] hdon has joined the channel [08:52] mikeal has joined the channel [08:56] mif86 has joined the channel [08:56] shakaa has joined the channel [08:57] shakaa has left the channel [09:04] derren13 has joined the channel [09:06] fbits has joined the channel [09:08] Gruni has joined the channel [09:08] tisba has joined the channel [09:15] pquerna: new game, disprove every statement of Mark Mayo? [09:17] nwl` has joined the channel [09:19] Utkarsh has joined the channel [09:19] sixtus42 has joined the channel [09:19] jankoprowski has joined the channel [09:19] Rixius has joined the channel [09:20] rasztasd has joined the channel [09:20] markwubben has joined the channel [09:21] rasztasd has left the channel [09:21] robinduckett has joined the channel [09:21] robinduckett: Morning all [09:22] robinduckett: I made a sweet chat thing using node and socket.io last night, using the ragefaces from those rage comics [09:22] robinduckett: http://ragechat.com/ -- please destroy it expertly :D [09:24] omarkj has joined the channel [09:24] aubergine has joined the channel [09:24] sriley has joined the channel [09:25] faust45 has joined the channel [09:26] ph^ has joined the channel [09:28] robinduckett: Sometimes when users connect with a browser which supports multiple transport layers to my socket.io enabled app, they get broadcasts twice, is there any way to fix this? it's pretty random :/ [09:28] robinduckett: hmm, I should really implement a kick system [09:29] aubergine_ has joined the channel [09:30] teemow has joined the channel [09:37] mape: robinduckett: Does it work? :) [09:37] mape: Some kinda throttling might be good yeah [09:38] robinduckett: yeah [09:38] robinduckett: lol [09:38] mape: I'll stop [09:38] mape: But you get the point ;) [09:38] robinduckett: yeah excess flood control is all i need [09:38] robinduckett: that and user registration for saving nicknames [09:38] robinduckett: and a better way to do faces for nicknames that doesn't involve injecting HTML [09:38] cyraxx: also, there are two Guest75s in there now [09:38] rnewson has joined the channel [09:38] rnewson has joined the channel [09:38] necro has joined the channel [09:38] mape: Oh you can inject html? [09:38] robinduckett: cyraxx: refresh browser [09:38] robinduckett: mape: only in the nickname field [09:39] keeto_ has joined the channel [09:39] robinduckett: and only up to 19 characters [09:39] mape: robinduckett: Well that is awful :p [09:40] robinduckett: mape: I left it like that because I fancyed having faces for names :P [09:41] mikedeboer has joined the channel [09:41] robinduckett: thanks for testing mape :3 [09:41] mape: np [09:41] mape: Actually just created a chat 2days ago :) [09:41] matjas has joined the channel [09:42] mape: hooked to facebook/twitter so guess not so much rage [09:42] robinduckett: mape: does it have rage faces? [](/troll) [09:42] StanAngeloff has joined the channel [09:42] mape: nah only profile image from both services [09:43] robinduckett: that's cool [09:43] robinduckett: for any particular reason? [09:43] robinduckett: i'd love to build node apps for moneh [09:43] Rixius has left the channel [09:45] robinduckett: mape: haha when you flooded me you booted me off the server [09:48] mbrochh has joined the channel [09:48] mlangenberg: I used Faye to implement a chat backend. [09:48] robinduckett: Faye? [09:49] mlangenberg: Doesn't offer Flash support yet, not sure if it is needed. [09:49] mlangenberg: http://faye.jcoglan.com/ [09:49] robinduckett: mlangenberg: with sockets.io it handles all that for you [09:49] mlangenberg: I know [09:49] robinduckett: I rarely see anyone using flashsockets [09:49] robinduckett: unless they're on IE [09:49] mlangenberg: 85% of users use IE [09:50] robinduckett: I realise. [09:50] robinduckett: Most of the people logging on have been on safari / firefox / chrome [09:50] robinduckett: think i saw one opera user [09:50] case__: mlangenberg, 85% ? it's not 2000 anymore :) [09:51] case__: http://www.techjournalsouth.com/2010/10/internet-explorer-market-share-dips-under-50-percent/ [09:51] mlangenberg: depends heavily on the user group. [09:51] case__: true [09:52] mlangenberg: The site I am talking about is an employee portal for dutch nurses in the homecare. [09:53] aubergine has joined the channel [09:53] robinduckett: i like dutch people [09:53] robinduckett: they are kind and give you toasties. [09:53] case__: ha ok. makes sense [09:53] mlangenberg: 83% uses IE, pulling this straight from Google Analytics. [09:53] robinduckett: mlangenberg: in the car industry IE support is a requirement [09:54] robinduckett: most dealer customer management systems only work on IE6 too [09:54] mlangenberg: auch [09:54] mlangenberg: I'm lucky enought that only 4% is IE6. [09:54] mlangenberg: By the way, will IE9 ship with WebSocket support? [09:54] robinduckett: mlangenberg: I find that the only trouble I have with IE6 is getting the javascript working properly [09:55] robinduckett: I come from an IE6 PSD slicing theme background hah. [09:57] robinduckett: who made the design for http://socket.io? [09:59] caolanm has joined the channel [10:00] aho: 83% uses IE, pulling this straight from Google Analytics. <- wow. your audience sucks :D [10:01] case__: :) [10:01] tekky has joined the channel [10:02] robinduckett: I got [10:02] robinduckett: 73% IE users [10:02] robinduckett: 11% firefox, 7% safari, 5% chrome [10:03] case__: you guys are depressing :( [10:03] robinduckett: :( sorry, real world scenarios are depressing. [10:04] xla has joined the channel [10:04] aho: in germany ie6 is currently at 1.23% and ie7 is at 5.86% (firefox 3.6 is at 52.02%) :) [10:06] aho: ie8 had its peak 2 months ago at 17.36% and is already dropping... currently it's at 14.54% [10:07] fangel: 57% and 38% for IE (combined) on the two largest sites that my workplace has.. but they are minded at a technical audience.. country average (denmark) is IE 6: 2%, IE 7: 27%, IE 8: 42% (so a total of 71% for IE) [10:08] aho: 71% ie doesn't sound like a technical audience to me [10:08] case__: aho, +1 [10:09] fangel: aho: 71% is country average.. as said, it's 38% on the most technically minded website I have access to stats for :) [10:10] jasondavies: total IE usage on my site is 5.45% :D [10:10] robinduckett: mAritz: check out my ffffuuuuu chat: http://ragechat.com [10:10] mAritz: what? why me? :D [10:10] robinduckett: because you're on reddit and you'll recognise the faces :D [10:10] mAritz: haha, i figured after asking ^^ [10:11] robinduckett: you're the one doing coderaid right? [10:11] LordMetroid has joined the channel [10:12] LordMetroid: this channel has grown significantly since I was last here [10:13] aho: there has been a 400+ peak in the past :> [10:13] hellp has joined the channel [10:14] mAritz: robinduckett: as stated in the ragechat, yeah i am. [10:14] bnoordhuis has joined the channel [10:14] robinduckett: :D [10:15] robinduckett: okay i gotta go back to work [10:15] robinduckett: feel free to break it [10:15] robinduckett: if you do, pm me :P [10:15] mAritz: how? ^^ [10:15] robinduckett: however you like [10:15] robinduckett: the nickname field is not entirely xss protected [10:15] robinduckett: it is to a degree [10:15] mAritz: urgh... i'm horrible at security as it is. black hat security? no way :( [10:15] robinduckett: but not entirely [10:16] mAritz: who's BEP? [10:16] robinduckett: british english police [10:16] mAritz: haha :D [10:16] robinduckett: he's one of the mods of reddit.com/r/fffffffuuuuuuuuuuuu [10:17] robinduckett: I'm not entirely sure if he's british, english nor a policeman. [10:17] LordMetroid: I am really interested in using node.js for a HTTP content-serving web-application platform but programming such a framework seems kind of a lot of work [10:17] mAritz: i'm going to say he is an indian english drunk. [10:17] robinduckett: hah [10:17] mAritz: LordMetroid: use one of the existing frameworks?! [10:17] robinduckett: LordMetroid: connect, express [10:18] mAritz: robinduckett: do you have experience with socket.io? [10:18] robinduckett: LordMetroid: https://github.com/ry/node/wiki/modules check the Web frameworks section [10:18] robinduckett: mAritz: yes [10:18] mAritz: oh wait... ragechat uses it... (FUUU) [10:19] robinduckett: haha [10:19] mAritz: what's the best current way to integrate connect sessions with socket.io? [10:19] robinduckett: well connect returns an http server [10:19] robinduckett: hang on i'll pastebin [10:20] mAritz: i listened to the jsconf.eu talk of rauchg and he said he's working on a good solution, but that it's not very good to plug socket.io into the connect server. (or some such) [10:20] robinduckett: mAritz: http://pastebin.ca/1987131 [10:20] robinduckett: I'm using connect and socket.io [10:20] robinduckett: just fine [10:20] mape: mAritz: I just saved the redis store to a var, passed that to the server and used that [10:20] mAritz: okay, but you're not using session?! [10:21] robinduckett: mAritz: no, I will do when I implement user registration / auth [10:21] mAritz: mape: so you do it manually [10:21] mape: mAritz: jup [10:21] mAritz: hm, okay [10:21] mape: redisStore.get('userAuthHash) and use that [10:21] mape: *' [10:21] robinduckett: wasn't someone building a socket.io connect middleware [10:22] mAritz: robinduckett: that's what rauchg said wouldn't be a good idea. [10:22] mape: and in the callback make magic happen [10:22] mAritz: magic, got it. [10:22] robinduckett: haha [10:22] robinduckett: mAritz: why isn't that a good idea? [10:22] mape: mAritz: so so code that works in the end == magic [10:22] mAritz: he said because connect operates on a request-response basis and wouldn't handle a socket.io middleware in a good way. [10:23] robinduckett: mAritz: I suppose, but it seems to work really well the way I'm doing it, which is just to instantiate the socket.io listener after connects listening [10:23] mAritz: too keep it redditesque: 1) use redisstore var 2) ???? 3) profit [10:23] mape: well no profit, but fun project [10:23] mape: seems good enough [10:24] robinduckett: hah [10:24] robinduckett: I posted ragechat in three places on reddit [10:24] mAritz: or fun profitable project. (hah, as if that's going to happen for me :/ ) [10:24] robinduckett: most visits from the selfpost in /r/f7u12 [10:24] mAritz: r/linux, r/science and r/pics? :P [10:24] robinduckett: then 14 visits from the lounge [10:24] robinduckett: and then the rest seemed to be random [10:24] robinduckett: oh one from /r/somethingimade [10:24] robinduckett: i posted it in /r/somethingimade, /r/f7u12 and /r/lounge [10:25] robinduckett: as I'm a gold member, which is a bit of a rip off but whatevs. [10:25] mAritz: :D [10:25] mAritz: for the glory of redd... HYPNOTOAD [10:25] mAritz: (oh god, i'm becoming the punloving redditor i despise :( ) [10:25] robinduckett: ALL GLORY TO THE HYPNOTOAD [10:25] robinduckett: yeah [10:26] robinduckett: i love it though [10:26] mAritz: whenever i see a pun thread in a serious submission i go ahead and just downvote every reply that even looks like a pun :D [10:26] indutny: you man should all love russian hypnotoad [10:26] indutny: http://www.youtube.com/watch?v=R926UJw7Kac&feature=player_embedded [10:26] indutny: :D [10:26] robinduckett: mAritz: it won't count the downboats if they're less than two seconds apart [10:26] aubergine has joined the channel [10:26] mAritz: aw, damnit [10:27] davidc_: Ok so question, what should I do if I want to add a new module to the node.js module page? [10:27] davidc_: https://github.com/davidcoallier/node-simplewhois <- [10:27] robinduckett: davidc_: modify it [10:27] indutny: you'll be executed [10:27] mAritz: good to know. i'll be happy to spend 10 minutes downvoting these bastards :D [10:27] robinduckett: it's a wiki [10:27] davidc_: robinduckett, I mean do I have to comply to some standards or anything? [10:27] davidc_: I get the wiki part :P [10:27] robinduckett: davidc_: it has to look the same as the others? [10:27] indutny: no [10:27] davidc_: Fair enough [10:27] mAritz: indutny: wtf is that? :D [10:27] robinduckett: you are NOT allowed to make it bold, underlined, strikethrough with animated stars around it, okay!? [10:28] robinduckett: actually does gfm allow strikethrough yet? [10:28] indutny: and unicrons [10:28] indutny: unicorns* [10:28] robinduckett: NO UNICRONS OR UNICORNS [10:28] davidc_: robinduckett, hehe :) No need, I was just wondering in terms of package-specific requirements. [10:28] indutny: use npm [10:28] indutny: create package.json file [10:28] indutny: follow the instruction: http://github.com/isaacs/npm [10:28] robinduckett: you don't have to [10:28] indutny: robinduckett: he have to [10:29] robinduckett: yeah [10:29] robinduckett: if you're name is david [10:29] davidc_: Indeed [10:29] robinduckett: you have to comply to npm [10:29] mAritz: indutny: WTF? why was there a german advertisement soundbite at the end? :D [10:29] davidc_: :O [10:29] robinduckett: *yor [10:29] davidc_: I've created the package.json alread [10:29] robinduckett: qweasdfasd [10:29] robinduckett: your* [10:29] robinduckett: lol [10:29] indutny: mAritz: don't mind [10:29] robinduckett: davidc_: you don't have to. just add it. as long as it exports something it's fine [10:29] indutny: mAritz: just doing what hypnotoad says [10:29] robinduckett: and can be considered "a module" [10:30] indutny: davidc_: also add module to npm package list [10:30] indutny: npm link . [10:30] indutny: npm install [10:30] davidc_: Ok [10:30] indutny: npm publish [10:30] robinduckett: indutny: that's a lot of hassle [10:30] davidc_: robinduckett, if it makes the quality of release better and easier for the future, I'd rather go through a bit of hassle right now :) [10:31] robinduckett: davidc_: just follow the instructions at the top of the module wiki page [10:31] robinduckett: When you add a framework to this page, have a look at how others have done so, it should be a single item, with a link to the project’s source code, and a short description (one line after formatting has been applied). [10:31] robinduckett: If you see a module without a description, feel free to edit the page and add it in, any contributions are appreciated. [10:31] robinduckett: When you edit this list, also add your module to library-compatibility so that users will know which versions of Node it was tested with. [10:31] mAritz: robinduckett: in your pastebin: does the iohandler then inject itself before connect on the http instance and only passes on to connect if the connection is not a websocket connection? [10:32] robinduckett: mAritz: the iohandler exports the init function which takes the socket object and just adds a load of event listeners to it [10:32] robinduckett: crude but it works [10:32] robinduckett: the connect server listens first [10:32] davidc_: Yeah that part is quite simple, I was asking for some "inside" tips or whatever :) I'll just do it now so [10:33] mAritz: hm... on another note: does anyone here know why githubs asset2 server is down and why refreshing the page won't give me another one? doesn't load half the css for me -.- [10:33] robinduckett: mAritz: not a clue, but now that I know I'll post the source code to ragechat when it isn't being finicky :P [10:34] robinduckett: bbiab [10:36] mAritz: is cloud9 usable yet? [10:36] indutny: i don't think so [10:36] indutny: but merely yes [10:37] mAritz: :( [10:37] mAritz: well, can't rush good things [10:39] indutny: it's very slow [10:39] indutny: slower than google wave [10:39] herbySk has joined the channel [10:43] themiddleman has joined the channel [10:43] zentoooo has joined the channel [10:46] path[l] has joined the channel [10:49] abstractj has joined the channel [10:50] agnat has joined the channel [10:53] aubergine has joined the channel [10:55] indutny: http://pit.dirty.ru/dirty/1/2010/11/09/29110-184003-1f0cff49f3bf30a9ac7839666b75845a.jpg [10:55] indutny: states of dementia [10:55] jetienne has joined the channel [10:57] robinduckett: right i'm offski [10:57] robinduckett: catch you guys later [10:57] indutny: bye [10:58] mytrile has joined the channel [11:01] TomY has joined the channel [11:01] indutny: i'll be away for 5-6 hours [11:01] indutny: bye! [11:02] ph^ has joined the channel [11:02] ooooPsss has joined the channel [11:04] altamic_ has joined the channel [11:06] rikarends has joined the channel [11:06] Zzzeph: mAritz: cloud9 is quite usable, what problems did you have? [11:06] rikarends: I can throw your problems straight into the cloud9 devteam so lets hear it :) [11:07] mAritz: last time i checked? all kinds. scrolling is painful (1 line per wheelspinclick), drawing bugs of the text, shortcut bugs, file opening problems [11:07] mAritz: that was like 3 weeks ago, i think. [11:07] rikarends: mAritz: we've been doing 1 release a week so stuff has been getting fixed really really fast [11:08] rikarends: mAritz: there are still a few issues but for general dev work i'm using it already happily for 2 weeks or so [11:08] rikarends: mAritz: dont give up yet :) [11:09] mAritz: nah, not giving up. just waiting for a stable 1.0 kind of release. [11:09] springify has joined the channel [11:09] christophsturm has joined the channel [11:09] rikarends: mAritz: understandable. we are on it :) [11:09] mAritz: :) [11:09] mAritz: you're doing great work! [11:09] christophsturm: is there a recommended testing framework for node apps? [11:09] rikarends: magnolia looks nice [11:10] rikarends: no it was some other flower thing [11:10] tisba has joined the channel [11:10] christophsturm: rikarends: sounds like you didn't really use it :) [11:11] rikarends: rikarends: we are starting with it, it looked the nicest of any sofar [11:11] caolanm: christophsturm: what sort of testing? [11:11] rikarends: rikarends: http://pivotal.github.com/jasmine/ [11:12] InsDel has joined the channel [11:12] christophsturm: caolanm: I need something for unit testing, but in the longer run i also need something for integration tests [11:12] mAritz: listen to caolanm, he knows about node testing :D [11:12] davidc_: behavioUr [11:12] davidc_: U [11:12] springify has joined the channel [11:12] caolanm: christophsturm: I'd recommend https://github.com/caolan/nodeunit ...but I'm biased ;) [11:13] bvleur has joined the channel [11:13] christophsturm: caolanm: nodeunit looks nice! [11:14] christophsturm: i want something simple, and prefer assertions to bdd syntax [11:14] caolanm: then yes, I'd definitely recommend nodeunit [11:14] davidc_: Yeah I prefer nodeunit too [11:14] christophsturm: caolanm: anything else i should check out? [11:14] caolanm: especially if you're fairly new to node, since it helps you avoid lots of unusual testing pitfalls [11:15] zorzar has joined the channel [11:15] caolanm: caolanm: there is also expresso, but in my opinion it is more suited to integration tests, since you can't use stubs or mocks [11:17] christophsturm: is there also something for integration tests via http? or do i just use nodeunit with a http client lib? [11:17] path[l] has joined the channel [11:17] sideshowcoder has joined the channel [11:17] caolanm: christophsturm: kadir recently committed a http testing tool to nodeunit, but you can just use a http client [11:18] christophsturm: ok great thanks [11:18] christophsturm: whats a good testing suite that uses nodeunit? just look at the nodeunit tests? [11:20] caolanm: yeah, the nodeunit tests use nodeunit ;) ...you might want to look at one of my other small modules like dispatch for simpler examples though [11:20] caolanm: https://github.com/caolan/dispatch/blob/master/test/test-dispatch.js [11:20] mikedeboer: hi all! [11:20] caolanm: also be aware that test-base.js in nodeunit does some bootstrapping so it might not look like normal nodeunit tests [11:20] mikedeboer: what's the 'best' redis client for node atm? [11:21] davidc_: node-redis [11:21] mikedeboer: on github? [11:21] davidc_: Sorry https://github.com/bnoguchi/redis-node <-- that's the one i use and I don't have any complaint [11:22] davidc_: I've heard this one is better though: https://github.com/fictorial/redis-node-client [11:22] davidc_: and according to the number of viewers, it is :) [11:22] rikarends: mikedeboer: i do not want the nesting-per-redis-command-syntax its really not handy [11:22] rikarends: mikedeboer: redis-node seems to do that [11:22] rikarends: mikedeboer: maybe it has a generic way too [11:23] mikedeboer: rikarends: redis-node-client does that as well... [11:23] mikedeboer: davidc_: thanks! cheking them both [11:23] rikarends: mikedeboer: yeah i dont get that… it saved us about 50% of code doing it the array-way [11:23] rikarends: mikedeboer: let alone pipelining speed [11:23] rikarends: mikedeboer: every callback is an async cycle. [11:24] davidc_: rikarends, which redis moduel are you? [11:24] Zzzeph: hey mikedeboer :) [11:24] rikarends: davidc: we didnt, we just layered it on top of the generic API for the prototype [11:24] davidc_: kk [11:24] rikarends: davidc: but that was months ago, and i wondered if someone had fixed it yet [11:25] mikedeboer: hey Zzzeph ! [11:25] rikarends: davidc: our api is generally like writing a stream of redis commands and only getting a return call when they are all done [11:25] rikarends: davidc: redis has a very low per-call granularity so you often need to do 2 or 3 [11:26] rikarends: davidc: to make a 3 level deep christmastree for just that operation is really annoying [11:26] mikedeboer: rikarends: check the redis-node support for transactions! [11:27] mikedeboer: rikarends: that's looking rather nice and close to what you mean [11:27] rikarends: mike: its still 3 times more code [11:27] davidc_: rikarends, indeed [11:27] rikarends: davidc: our api looked like this: redis(['INCRBY',….],['HGET',…], function(err,results){ [11:28] rikarends: we would also build command buffers for multiqueries [11:28] rikarends: where you need to fetch say something related for 10 items [11:28] rikarends: the redis people are adamant about not extending redis with fancier commands but going the command pipelining method [11:28] rikarends: since that is practically as fast as making fancier commansd [11:28] rikarends: and allows for more interleaving [11:29] christophsturm: is there an easy way to package my node apps dependencies together with my node app? is there a npm command for that? [11:29] rikarends: maybe we can add this to redis-node then [11:32] davidc_: rikarends, definitely should :) [11:33] fbits_ has joined the channel [11:34] fbits_ has joined the channel [11:38] christophsturm: what is recommended for multithreading? multi-node? or something else? [11:40] aliem has joined the channel [11:42] slaskis has joined the channel [11:42] rikarends: erlang! [11:42] davidc_: :) [11:42] rikarends: multithreading will probably remain one of those awkwardly silent moments for nodejs :) [11:43] rikarends: maybe V8 will add some cool fundamental features to lower the overhead there [11:44] davidc_: I'm very happy with erlang so I won't really care if node doesn't have proper multithreading anyways [11:44] rikarends: or there will appear a very clean async RPC over multi node processes [11:45] christophsturm: i just need multiple workers that have no shared state [11:45] mraleph: well v8 will allow more than one v8 instance per process with isolates, but each VM will remain single threaded as now [11:45] rikarends: mraleph: right so thats more the code-isolation/sandboxing feature than threading [11:46] rikarends: well if processes are lightweight then doing that is no different than threads so. All we'd need then is a very lightweight way to pass messages [11:46] rikarends: like passing entire V8 datastructures through shared memory or something [11:46] ph^ has joined the channel [11:47] mraleph: rikardens: i think ryah_ is totally against shared state type of multithreading [11:47] fbits has joined the channel [11:47] rikarends: mraleph: shared state is going to be near impossible and asking for trouble, so i agree [11:47] _announcer has joined the channel [11:48] rikarends: mraleph: but you dont want to do JSON serialized webworker stuff either. it should be just passing the binary rep of an object through a shared memory thing [11:48] mraleph: but yeah some kind of cheap message passing should be nice [11:48] christophsturm: ok, but whats recommended for multithreaded http servers with no shared state? [11:48] caolanm: anyone from joyent on here atm? [11:49] mraleph: rikardens: if you have say several instances of v8 in one process you can easily pass buffers among them without sharing actual backing store. [11:50] rikarends: mraleph: yeah it would probably be something tightly integrated with V8 and its GC [11:50] bnoordhuis: mraleph: spidermonkey has this feature where you can migrate an object from one context (vm) to another [11:50] bnoordhuis: does v8 have something similar? [11:50] rikarends: mraleph: no-serialization (or copy-on-write) shared pieces [11:50] rikarends: mraleph: and then i dont mean bidirectionally just as a cheap way to pass data [11:51] mraleph: bnoordhuis: currently all context exist in the same heap so there is no need in special migration routines. [11:51] rikarends: mraleph: and ideally it would also support TCP as a shared transport if they are not running on a shared memory architecture [11:51] rikarends: mraleph: so scaling out would be relatively transparent [11:52] rikarends: im pretty sure someone is going to do this very soon [11:52] mraleph: I think passing JS objects is hard to organize. This indeed would require some tight integration with VM [11:52] _announcer: Twitter: "I came home to make node.js Nau simple work." [ja] -- mass_cut. http://twitter.com/mass_cut_/status/2327825893822465 [11:53] rikarends: mraleph: yeah but V8 will remain single thread per process right? [11:53] rikarends: mraleph: or are they changing that [11:53] mraleph: rikardends: it would become single thread per VM instance [11:53] rikarends: mraleph: since chrome is all about threads-by-processes [11:53] mraleph: when isolates branch lands to bleeding_edge [11:53] rikarends: mraleph: ah alright. yeah then you can do in-process scaling [11:54] rikarends: mraleph: it will put up a second wall however to scaling out accross the network [11:54] mraleph: and you would be able to share and pass C++ objects across process [11:54] Fullmoon has joined the channel [11:55] bnoordhuis: mraleph: to clarify: share in the same process or across multiple processes? [11:56] mraleph: bnoordhuis: that depends on you. when I say C++ object I mean something not owned by V8 [11:56] bnoordhuis: mraleph: clear, thanks [11:57] mraleph: nobody forbids two JS Buffers in two separate isolates have pointer to the same C++ object in an internal field [11:57] mraleph: I think this will open door to some nice tricks [11:58] rikarends: mraleph: or horrible bugs ;) [11:58] bnoordhuis: mraleph: how would you handle concurrency? [11:58] bnoordhuis: you'd have to lock on each operation, i suppose [11:59] bnoordhuis: bad for throughput [11:59] rikarends: mraleph: i think a copy on write area in your GC would be a nice way to just share state [11:59] mraleph: each VM is completely independent [11:59] rikarends: mraleph: but it gets hairy fast though. [11:59] mraleph: ah [11:59] mraleph: you are talking about buffer [11:59] rikarends: bnoordhuis: usually heavily concurrent access is poor design. this is just for minimizing impact of passing memory based data to workers [12:00] rikarends: bnoordhuis: which this will do. [12:00] bnoordhuis: rikarends: you mean vm 1 creates object x and hands it off to vm 2? [12:01] mraleph: bnoordhuis: that true. so I though more about passing buffer ownership between instances then about using it simultaneously in both VMs [12:01] mraleph: yep [12:01] rikarends: bnoordhuis: yes. [12:01] rikarends: bnoordhuis: or with copy-on-write [12:01] bnoordhuis: rikarends: that would still require some locking to do safely, no? [12:02] bnoordhuis: cow i mean [12:02] rikarends: bnoordhuis: not with copy on write, why would you [12:02] rikarends: bnoordhuis: look at how 'fork' works [12:02] bnoordhuis: sorry, i'm mixing up two things [12:02] rikarends: bnoordhuis: efficiently 'passing' memory does not mean 'sharing' memory [12:02] bnoordhuis: no locking with hand-off [12:03] bnoordhuis: i was a few lines behind [12:03] rikarends has left the channel [12:03] _announcer: Twitter: "Ragechat: Node.JS + Socket.IO chat with ragefaces - http://su.pr/2DZYda" -- eBot. http://twitter.com/kicauan/status/2330576195420160 [12:05] derferman has joined the channel [12:06] saschagehlich has joined the channel [12:06] _announcer: Twitter: "NarwhalJS cmdline doesn't understand left/right arrow. Node.JS is better for now." -- Arunjit Singh. http://twitter.com/arunjitsingh/status/2331296839761920 [12:06] fbits has joined the channel [12:10] fbits has joined the channel [12:17] _announcer: Twitter: "ah, lunch ... taking a break from coding #php ... coding #nodejs *g*" -- Felix Oertel. http://twitter.com/foertel/status/2333952295567361 [12:18] eee_c has joined the channel [12:19] stagas: cool announcer looks nice in http://embed.stagas.com [12:20] _announcer: Twitter: "@ The vogonjeltz come is 9 and is now feasible, either with or node.js browsers with Web Sockets (Chrome)." [de] -- Tim Weber. http://twitter.com/Scytale/status/2334723376422913 [12:21] fermion has joined the channel [12:21] stagas: the tweets don't load though :/ [12:22] Artem_S has joined the channel [12:22] mAritz: does anyone here use backbone.js? [12:23] Artem_S: Hi all, I have an interesting require() WTF [12:25] Artem_S: say you have three files: [12:25] Artem_S: a.js: [12:25] Artem_S: var b = require('./b'); [12:25] Artem_S: console.log(b); [12:25] Artem_S: b.js: [12:25] Artem_S: exports.b = require('./c'); [12:25] Artem_S: c.js: [12:25] _announcer: Twitter: "Joyent <3 node.js http://bit.ly/9Ye4X3" -- Charlie Robbins. http://twitter.com/indexzero/status/2335926013403138 [12:25] Artem_S: exports.c = {ccc: 'ccc'}; [12:25] Utkarsh has joined the channel [12:25] Artem_S: so when running a.js one gets an exception [12:27] _announcer: Twitter: "@usejquery It'd be awesome with node.js." -- Calou. http://twitter.com/calvein/status/2336536632762368 [12:28] robinduckett has joined the channel [12:28] robinduckett: anyone about? [12:28] robinduckett: I keep getting 10 Nov 12:28:34 - WebSocket connection invalid or Origin not verified [12:29] robinduckett: 10 Nov 12:28:34 - Initializing client with transport "flashsocket" [12:29] robinduckett: like [12:29] robinduckett: constantly [12:29] robinduckett: on my app [12:29] robinduckett: D: [12:29] eee_c has joined the channel [12:29] robinduckett: what does it mean? [12:30] _announcer: Twitter: "@marcofolio would love to see this as a multiplayer game (nodejs server backend?)!" -- Mark Schmale. http://twitter.com/themasch/status/2337176935206912 [12:31] _announcer: Twitter: "Chaos v0.1.1 node.js database released! Got hash keys! New commands: hset, hget, hdel, hgetall, hkeys, hvals http://bit.ly/9617uU" -- George Stagas. http://twitter.com/stagas/status/2337455613153280 [12:31] Artem_S: however as soon as you modify b.js like this: [12:31] Artem_S: var c = require('./c'); [12:31] Artem_S: exports.b =c; [12:31] Artem_S: all works fine [12:31] Artem_S: any ideas why? [12:31] saschagehlich has joined the channel [12:33] MattDiPasquale has joined the channel [12:34] _announcer: Twitter: "Free Preview of O'Reilly's Up and Running With Node.js @sh1mmer is doing a great job. Important book. http://pulsene.ws/hfwK" -- Mike Loukides. http://twitter.com/mikeloukides/status/2338254342848513 [12:34] _announcer: Twitter: "Joyent has officially become the new home for Node.js http://joyeur.com/2010/11/09/a-new-abode-for-node/ not sure about this" -- Ernesto G. Aroca. http://twitter.com/ErneX/status/2338383393193984 [12:37] robinduckett: anyone alive? D: [12:38] Artem_S: actually, scratch that [12:38] Artem_S: error is somewhere else [12:39] kriszyp has joined the channel [12:40] mikew3c_ has joined the channel [12:41] _announcer: Twitter: "catching up on some videos from jsconf.eu, lots of #nodejs: http://bit.ly/bhhTKg" -- Brian Stoner. http://twitter.com/bsstoner/status/2340149069357056 [12:42] _announcer: Twitter: "@themasch NodeJS looks a lot like HTML5 websockets - they both are freaking awesome and could indeed make a multiplayer version perfect!" -- Marco Kuiper. http://twitter.com/marcofolio/status/2340334247870465 [12:43] _announcer: Twitter: ""Joyent will be hiring additional staff to assist Ryan" http://joyeur.com/2010/11/09/a-new-abode-for-node/ #nodejs" -- Dionysios Synodinos. http://twitter.com/synodinos/status/2340601756389376 [12:44] SvenDowideit_ has joined the channel [12:45] gotys has joined the channel [12:45] gotys: Hello everyone. How can I convert the fs.stat.mtime (Wed, 10 Nov 2010 12:06:04 GMT) to a unixtimestamp (julian) ? [12:46] robinduckett: gotys: use php.js's strtotime function? [12:46] gotys: ha, cool, I will try that robin, thanks [12:48] gotys: robin: that worked, thanks! [12:52] antris_ has left the channel [12:53] _announcer: Twitter: "# Nodejs now under the wing @ Joyent. http://groups.google.com/group/nodejs/browse_thread/thread/956a3431b1d9e937 I do not know whether this is good or not." [ru] -- Stepan Stolyarov. http://twitter.com/stevebest/status/2343202178736128 [12:55] eee_c has joined the channel [12:55] gotys: How do I include an external file ? in php: requiere_once() ? The require function doesn't seeem to do what I need - it looks like it's a module-loading function [12:55] jashkenas has joined the channel [12:56] saschagehlich has joined the channel [12:57] Kami_: gotys, yes, with require you load a module. What do you want to do? [12:57] eee_c1 has joined the channel [12:58] Artem_S: I justraised an issue https://github.com/ry/node/issues/issue/410 [12:58] gotys: Kami_ , I just saved a strtotime() funciton to an external file, and I would like to use it [12:58] Artem_S: i.e. just raised [12:58] gotys: but this did the trick: exports.strtotime = strtotime; [12:58] _announcer: Twitter: ""Up and running with Node" book preview http://bit.ly/aKPnAG for those who want a intro to node.js and server side js" -- Geries Handal. http://twitter.com/gtothesquare/status/2344324419293184 [12:58] miccolis has joined the channel [12:58] Artem_S: anyone have any ideas why this is happening? Thanks [12:59] stagas_ has joined the channel [12:59] jashkenas has left the channel [13:00] Kami_: gotys, yes, then you should load a module with require -> require('your_module') and in your file (module) you need to export the function, so for example putting exports.strtotime = strtotime; to the bottom of the file [13:00] gotys: Thank you very much Kami_ [13:00] Kami_: gotys, np [13:01] _announcer: Twitter: "Possibly found some weird behaviour in node.js 'require', raised a bug: https://github.com/ry/node/issues/issue/410" -- Art. http://twitter.com/art_s/status/2344995340161024 [13:01] dberlinger has joined the channel [13:01] robotarmy has joined the channel [13:02] ooooPsss has joined the channel [13:02] mbrochh has joined the channel [13:02] mbrochh has joined the channel [13:03] sabman has joined the channel [13:03] trotter has joined the channel [13:05] Artem_S has left the channel [13:06] jacobolus has joined the channel [13:06] _announcer: Twitter: "Joyent is taking NodeJS under their roof. Will see what this will bring us in the long run. http://goo.gl/zT6JH" -- Tomaž Muraus. http://twitter.com/KamiSLO/status/2346478752239616 [13:09] Sami_ZzZ has joined the channel [13:09] _announcer: Twitter: "Setting up node.js. Spikes are fun" -- Ryan Roberts. http://twitter.com/ryansroberts/status/2347065669591040 [13:09] _announcer: Twitter: "Entries written by: VPS in cherry node.js + npm + Socket.IO To install the "http://jmblog.jp/archives/709" [ja] -- Yoshihide Jimbo. http://twitter.com/jmblog/status/2347113321070592 [13:09] _announcer: Twitter: "Node.js to move under the Joyent umbrella with Joyent resources being dedicated to Node.js' development: http://is.gd/gTVfl" -- Dallas Node. http://twitter.com/DallasNode/status/2347131738263552 [13:10] _announcer: Twitter: ""What companies are using Node.js in production?" at Quora: http://is.gd/gTVhv" -- Dallas Node. http://twitter.com/DallasNode/status/2347237929652224 [13:10] _announcer: Twitter: ""Mastering Node" an open source #nodejs ebook: http://is.gd/gTVnb" -- Dallas Node. http://twitter.com/DallasNode/status/2347433459712000 [13:11] tony__ has joined the channel [13:11] _announcer: Twitter: "Heroku Launches Facebook App Hosting Package http://j.mp/bLiU81 I'm looking forward Ruby + Node.js" -- kinopyo. http://twitter.com/fantasyday/status/2347593518551041 [13:12] _announcer: Twitter: "@ryansroberts node.js? Where do you work? I feel lucky to be using ASP.NET MVC" -- dagda1. http://twitter.com/dagda1/status/2347771046666240 [13:12] digitalsatori has joined the channel [13:13] agnat has joined the channel [13:13] sabman: anyone having issues with nodules ? [13:13] sabman: something like "Error: Array.prototype.toString is not generic failed to load jar" [13:13] mAritz: WTF? where is maushu? [13:13] tmedema has joined the channel [13:14] mAritz: load jar? what would load a jar in an node.js environment? [13:14] tmedema: Hi folks. I would like to use the same structure I use in node.js (modules with require etc) for my browser javascript applications. Is there any such library available for client side javascript? [13:16] abstractj has joined the channel [13:16] _announcer: Twitter: "I've got my @nodejs server running, that was quite painless, let's see what else this thing can do." -- Paul Hayes. http://twitter.com/fofr/status/2348796319105024 [13:16] sabman: yea wierd [13:16] mAritz: tmedema: window.require = function (name) { $('body').append('