[00:00] isaacs: we need something like this for npm: http://clojars.org/robert/hooke [00:00] isaacs: creationix: ^? [00:00] creationix: DTrejo__: I think it will start around 7pm [00:00] isaacs: DTrejo__: are you gonna be in the area? i though you were like in florida or some crap? [00:00] DTrejo__: oh no I'm in berkeley :) [00:00] tpryme: creationix: Where's the meetup? [00:00] DTrejo__: and in providence RI during the year [00:00] creationix: Palo Alto, CA [00:00] DTrejo__: (school yr) [00:01] isaacs: DTrejo__: nice. i'm gonna be your neighbor soon. [00:01] tpryme: creationix: Specific location? [00:01] isaacs: ACTION moving to oak town [00:01] DTrejo__: wait, in berkeley or in RI? [00:01] DTrejo__: ah cool [00:01] isaacs: DTrejo__: i grew up in CT, though [00:01] isaacs: DTrejo__: RI was in my way whenever i visited friends in Boston or Cape Cod [00:01] isaacs: e [00:01] DTrejo__: I'll see you on the 10th isaacs ? [00:01] mape: isaacs: found an apartment? [00:01] isaacs: hahaha, my fingers wont' type "cod" without putting an e on the end [00:01] isaacs: DTrejo__: yeah, i'll be there. [00:02] isaacs: mape: no, still finishing out my two weeks. [00:02] DTrejo__: cool [00:02] creationix: tpryme: 525 University Ave. Suite #23, Palo Alto, CA 94301 USA [00:02] mape: k [00:02] DTrejo__: isaacs: working at couch? or something? [00:02] isaacs: DTrejo__: Joyent [00:02] tpryme: creationix: Thanks. What's located there? [00:02] DTrejo__: mm [00:02] isaacs: DTrejo__: but i can't function unless i live around trees [00:02] creationix: tpryme: http://www.sencha.com/ [00:02] tpryme: creationix: Or whose office [00:03] tpryme: creationix: Gotcha [00:03] creationix: my work ;) [00:03] tpryme: creationix: Cool [00:03] isaacs: DTrejo__: it's the new england upbringing :) [00:03] jesusabdullah: http://github.com/jesusabdullah/Panic [00:03] DTrejo__: hehe [00:03] jesusabdullah: I thought this project would be really hard, but it only took like an hour [00:03] jesusabdullah: two, tops [00:03] jesusabdullah: Thanks node! [00:03] DTrejo__: later everyone! looking forward to the meetup :) [00:03] isaacs: have fun [00:07] isaacs: jesusabdullah: have you seen this? http://github.com/isaacs/node-supervisor [00:07] creationix: I really need to add that functionality to spark [00:08] creationix: oh, I have too many projects right now [00:08] danielzilla has joined the channel [00:08] er1c_ has joined the channel [00:09] isaacs: omg, npm help is so much nicer with this patch [00:09] creationix: isaacs: awesome [00:09] creationix: think ryan will take it? [00:09] isaacs: i dunno. [00:09] [[zz]] has joined the channel [00:09] isaacs: you can also child_process to vim or lynx or more or tail with this, and have it all Just Work [00:10] isaacs: but man+less was really the worst. [00:10] creationix: if it's true that programs will override the bit when they care, then there are no bad side-effects, right? [00:10] isaacs: i think so [00:10] isaacs: i mean, starting from sh/bash sets those fields as blockign [00:10] dannycoates has joined the channel [00:10] isaacs: so programs should be accustomed to that [00:10] creationix: true [00:10] creationix: is this somehow related to the inability to pipe js to a node process [00:11] isaacs: it does to an often-unnecessary reset to put them back in nonblocking mode [00:11] creationix: or is that all v8 stuff [00:11] isaacs: creationix: not sure. [00:11] creationix: cat app.js | node [00:11] isaacs: right [00:11] creationix: I really want that feature [00:11] creationix: for stuff like textmate bundles [00:11] jesusabdullah: isaacs: No! I was looking for something a lot like that the other day, funny enough [00:11] isaacs: curl http://npmjs.org/install.js | node [00:11] jesusabdullah: XD [00:11] isaacs: jesusabdullah: there's not too much to it [00:12] isaacs: jesusabdullah: like you said, node makes it pretty easy [00:12] creationix: isaacs: or cat file.haml | node haml.js > file.html [00:12] isaacs: creationix: you can do that today [00:12] isaacs: creationix: just open stdin [00:12] jesusabdullah: hmm [00:12] creationix: ok, so just piping to node itself doesn [00:12] creationix: ' [00:12] creationix: t [00:12] creationix: work [00:12] isaacs: but your program has to do that, not node [00:12] creationix: yeah, sure [00:12] isaacs: node itself won't open stdin and read it [00:12] creationix: you're right [00:13] jesusabdullah: I think I'll give mine a shot anyway, just due to the nature of the stuff I'm running [00:13] jesusabdullah: matlab :6 [00:13] creationix: isaacs: so I could make node node.js where node.js is a proxy [00:13] jesusabdullah: but /me watches [00:13] isaacs: in fact, if your haml.js has a shebang to node, and is executable, then you can just haml.js < file.haml > file.html [00:13] creationix: you can do "<" [00:13] creationix: is that standard bash? [00:14] isaacs: jesusabdullah: suresure. i'm more asking in the off chance that you want to take over supervisor and add more features to it :) [00:14] er1c_ has left the channel [00:14] isaacs: creationix: i think it might even be std sh [00:14] creationix: oh, nevermind I thought it was "file.haml < haml.js > file.html" [00:14] creationix: I read that wrong [00:14] isaacs: ah [00:14] Draggor: Is there a function that returns the keys of a map? [00:14] isaacs: prog < input >output [00:14] creationix: Object.keys [00:14] creationix: Draggor: ^ [00:14] quirkey has joined the channel [00:15] creationix: isaacs: correct, I remember that now [00:15] brapse has joined the channel [00:15] isaacs: creationix: you can also do <<< for stdin [00:15] megan: 3 chevrons [00:15] Draggor: creationix: undefined [00:15] megan: he must be some kind of corporal [00:15] creationix: Draggor: Object.keys(myMap) [00:15] isaacs: creationix: << & <%= foo %> ? [01:30] cardona507: in ejs [01:30] mape: escaped and not [01:32] jesusabdullah: zemanel: I read that as GIS tools [01:32] jesusabdullah: and the geophysicist in me got excited :( [01:32] ericclemmons: Are most using node-supervisor to auto-restart their node server upon file modifications, or something else? [01:35] jesusabdullah: That and d.js [01:35] jesusabdullah: http://github.com/lrbabe/node-DJs [01:36] jesusabdullah: Probably either one works great. I've used d.js and it works pretty well [01:36] ericclemmons: I'll check that out [01:36] isaacs: ryah: so the ^ in my patch should be a &! instead [01:36] jesusabdullah: but it *only* restarts a node instance when files change [01:36] ericclemmons: the problem is using it with Spark + Express and adjusting reference [01:36] jesusabdullah: hmm [01:37] ericclemmons: what's the alternative? when files don't change? :P or do you mean template files? [01:37] jesusabdullah: I mean, it's not gonna restart your process if it crashes, for example [01:37] jesusabdullah: it does one thing well [01:37] ericclemmons: ooh, right [01:37] jesusabdullah: *nod* [01:37] ericclemmons: in that case, you're having to check the logs anyway, 'cause you have bigger problems :) [01:38] jesusabdullah: I will say: I just tried writing a process supervisor in node, and the fs and child_process modules with the global process object make it crazy easy [01:38] jesusabdullah: You could roll your own pretty easy [01:38] jesusabdullah: actually [01:39] ericclemmons: Probably something to fork into Spark, since it's another project used by senchalabs [01:39] ericclemmons: I'm really surprised, and almost troubled, by how easy it is to work with processes in node [01:40] ericclemmons: my bash scripts are becoming nodejs scripts now O.o (dunno if that's good or bad.) [01:41] ryan_gahl has joined the channel [01:43] marshall_law has joined the channel [01:45] jesusabdullah: ericclemmons: Yeah, my process supervisor would be replacing a shitty bash script. Tbh, I hate working in bash [01:45] ericclemmons: Agreed. [01:45] isaacs: ACTION kinda <3 bash for process management [01:45] isaacs: it's part of the language [01:45] isaacs: of course, bash sucks at *everything* else, for the most part [01:46] jesusabdullah: also, while I like python, I don't find child processes in it very straightforward :( [01:46] jesusabdullah: Yeah :/ [01:46] jesusabdullah: isaacs: It's the "everything else" that gets me. >_< [01:46] ericclemmons: I've had issues with python scripts dumping child processes early, for whatever reason. I'd rather just write something that works quickly than debugging [01:46] isaacs: if you gotta do complex stuff, then node really shines. [01:46] ericclemmons: or in my case, actually learning the language :P [01:46] jesusabdullah: hah :P [01:47] isaacs: writing complex programs in bash is really strenuous [01:47] isaacs: but "spawn this process, daemonize it, pipe it to this file, set its input to this other process, and exit" that kind of stuff is what its GREAT for. [01:47] isaacs: as long as you don't have to parse any strings, etc [01:48] isaacs: and as long as you don't care about speed :) [01:48] jesusabdullah: :D [01:48] ericclemmons: hah. perfect summary [01:48] jesusabdullah: I think it's great for stuff like that given some helper programs [01:48] jesusabdullah: or, if you don't need to do anything other than that [01:49] ericclemmons: As long as I stop seeing people write cmd-line scripts primarily PHP i'll be happy [01:49] pquerna: wtb, lua debugger. [01:49] isaacs: ericclemmons: i actually really like php for cli scripts. [01:49] isaacs: ericclemmons: it's like bash, but ever so slightly less ugly. [01:50] isaacs: ericclemmons: and while bash is good for nothing but proc management, php is good for pretty much nothing but string parsing. [01:50] isaacs: so they make a good team :) [01:50] ericclemmons: Well, for what kind of tasks are we talking? Seeing how zf's Zend_Tool script operates, seems cludgy [01:54] jesusabdullah: ericclemmons: php? Really? [01:55] jesusabdullah: Haha, that's funny [01:55] ericclemmons: Oh no, did I start a holy war? [01:55] cardona507: the screens will run with blood colored text [01:55] jesusabdullah: naw, just always surprised to hear someone not talk shit about php [01:55] jesusabdullah: or seriously use it outside of the web context [01:56] jesusabdullah: even though I know it's possible [01:56] ericclemmons: People do like to stick with what's comfortable to them. [01:56] ericclemmons: Unfortunately, it leads to things like http://phpjs.org/ [01:57] ericclemmons: pretty freakin' exhaustive, though [01:57] Tim_Smart has joined the channel [01:59] marshall_law_ has joined the channel [02:03] meso_ has joined the channel [02:06] marshall_law has joined the channel [02:08] jsilver has joined the channel [02:09] davidwalsh has joined the channel [02:09] sudoer has joined the channel [02:09] picasso has joined the channel [02:11] ditesh|cassini has joined the channel [02:11] Blink7 has joined the channel [02:13] tpryme: Having trouble publishing my npm package. Can't detect the auth even though I invoked adduser. Anyone else experience something like this before? [02:15] jchris has joined the channel [02:16] softdrink has joined the channel [02:18] marshall_law_ has joined the channel [02:18] JimBastard has joined the channel [02:18] JimBastard: hey hey hey [02:20] marshall_law__ has joined the channel [02:21] everton has joined the channel [02:23] JimBastard: http://maraksquires.com/doublerainbow/ [02:25] bmizerany has joined the channel [02:25] ryan_gahl_ has joined the channel [02:25] tpryme has joined the channel [02:27] paul_irish has joined the channel [02:28] bpot has joined the channel [02:29] ryan_gahl has joined the channel [02:30] ryan_gahl: meh, Virtualbox update cycle network interface like a mug [02:30] ryan_gahl: cycles* [02:30] tmpvar has joined the channel [02:30] tmpvar: hello [02:30] ryan_gahl: yo [02:30] JimBastard: hey tmpvar [02:30] ericclemmons: yo [02:31] tmpvar: how goes? [02:31] JimBastard: tmpvar: did you see i double rainbowd [02:31] JimBastard: http://maraksquires.com/doublerainbow/ [02:31] JimBastard: im not sure how it happened [02:32] tmpvar: heh, it makes me giggle [02:32] tmpvar: the candy mountain, Charlie, gets me [02:32] JimBastard: lulz [02:33] JimBastard: i should go write real code now [02:33] JimBastard: fun time is over [02:33] JimBastard: hows carena going? [02:33] tmpvar: JimBastard, here's mine : http://tmpvar.com/project/cider/ [02:33] tmpvar: cider tonight [02:34] tmpvar: blah, i just hosed it sorta [02:34] tmpvar: you can drag it around [02:34] Tobsn: tmpvar, broken [02:34] Tobsn: (safari) [02:34] tmpvar: in safari even? [02:34] dnolen has joined the channel [02:34] JimBastard: it loaded for me [02:35] Tobsn: its just empty [02:35] Tobsn: and i can click in a textarea [02:35] Tobsn: but nothing happens [02:35] Tobsn: cant even type in it [02:35] tmpvar: ah, try chrome :/ [02:35] tmpvar: ill have to work on compat [02:35] Tobsn: ;) [02:35] tmpvar: ok, so you can type in that thing [02:35] tmpvar: and move it around like a window [02:36] joshdulac has joined the channel [02:36] tmpvar: ya [02:36] tmpvar: yay* [02:37] marshall_law_ has joined the channel [02:38] joshdulac: hello all [02:38] tmpvar: yo [02:38] JimBastard: sup [02:38] tmpvar: JimBastard, what do you think? [02:38] tmpvar: if you refresh it makes a bit more sense [02:39] JimBastard: hrmm [02:39] JimBastard: what are we clocking in at right now? like 50k ? [02:40] teemow has joined the channel [02:40] JimBastard: it seems nice so far [02:40] tmpvar: 45k now [02:41] tmpvar: that is huge for what it does.. hrm [02:41] JimBastard: uncompressed im sure [02:41] tmpvar: severely [02:41] JimBastard: whats bespin clock in at? [02:41] tmpvar: not sure [02:41] tmpvar: probably a good 500+ compressed [02:41] tmpvar: (guess) [02:42] JimBastard: its getting better, im liking its carena + cider [02:44] jesusabdullah: What is this? [02:44] jesusabdullah: Jesus, ivy is huge [02:44] zapnap has joined the channel [02:44] tmpvar: JimBastard, 503k compressed [02:45] tmpvar: but they do much more I guess [02:45] JimBastard: yeah [02:45] tmpvar: thing is what you see is what you get with bespin [02:45] tmpvar: if 45k is all the overhead you need to build a bunch of windows and an editor? [02:45] tmpvar: and you add more on as you need [02:46] jesusabdullah: Can't save yet? [02:46] tmpvar: lol [02:46] jesusabdullah: ctrl-s just plops down more s's [02:46] tmpvar: nah, just refactored it [02:47] tmpvar: saving is really tricky anyhow [02:48] tmpvar: as far as keeping it flexible goes [02:48] jesusabdullah: Not surprising :/ [02:49] reid\home has joined the channel [02:49] tmpvar: if you want rigid, check out bespin ;) [02:49] JimBastard: its really amazing how much work you get done tmpvar [02:49] JimBastard: considering all this is part time [02:50] jesusabdullah: Oh, I'm not bitchin' I'm just giving you a hard time (so to speak) [02:51] jesusabdullah: maan ivy didn't work [02:51] jesusabdullah: my glibc was TOO OLD [02:51] jesusabdullah: >:O [02:53] marshall_law has joined the channel [02:55] tmpvar: JimBastard, I appreciate that [02:55] JimBastard: :-) [02:56] tmpvar: ACTION hangs onto this moment for as long as possible [02:56] tmpvar: HA [02:56] JimBastard: ahahahaha [02:56] JimBastard: i output a shit ton of work, but its mostly shit [02:56] tmpvar: hey man, I told you this was top priority [02:57] pengwynn has joined the channel [02:57] tmpvar: getting composer going is what I'm doing until its solid [02:57] marshall_law_ has joined the channel [02:57] JimBastard: then flow control becomes FUN control [02:57] JimBastard: composer + touchpad + libao = win? [02:58] tmpvar: right, maybe then I can explain to the bizniz folks how to write their own damn management software ;) [02:58] jesusabdullah: What's libao? [02:58] tmpvar: JimBastard, openal seems like the right choice [02:58] JimBastard: its all the same to me [02:58] tmpvar: sure [02:58] tmpvar: but its biiiiiiiiig [02:58] JimBastard: its still win [02:58] JimBastard: damn [02:58] tmpvar: like 5 months big [02:59] tmpvar: at my rate anyhow [02:59] tmpvar: i really hope someone steps up, because I'm not looking forward to it.. lol [02:59] tmpvar: I will do it, but only if I have to [03:00] hdon has joined the channel [03:02] marshall_law has joined the channel [03:07] marshall_law_ has joined the channel [03:08] Draggor: Google Chrome 5.0.375.125 beta supports websockets yes? [03:08] TommyM has joined the channel [03:11] chrischris has joined the channel [03:11] jesusabdullah: Draggor: I think so? [03:11] jesusabdullah: Who would be a good person to ping about build errors? Ry? [03:11] jesusabdullah: I don't want to be a hassle :( [03:12] Draggor: chrome doesn't seem to be playing nice with socket.io, and even forcing swf doesn't seem to work, while that does fine in firefox. [03:13] tmpvar: jesusabdullah, can you gist the errors? [03:13] jesusabdullah: tmpvar: One step ahead of you [03:13] jesusabdullah: http://gist.github.com/507431 [03:13] jesusabdullah: ^^ [03:13] jesusabdullah: I just need to get someone to LOOK at them [03:14] ericclemmons has left the channel [03:14] jesusabdullah: Also: It should be known that the environment I'm trying to compile in is a bit stale. However, I did install a new scons myself and it seems to be working as-expected [03:14] dannycoates: Draggor: are you connecting to localhost for the websocket? [03:15] Draggor: dannycoates: Yeah [03:16] dannycoates: Draggor: try the loopback ip 127.0.0.1, chrome 5 has a bug with localhost [03:16] jesusabdullah: Hah! We're DISTRACTING to him [03:17] Draggor: dannycoates: hey lookit that, it works, thanks! Did not know about the localhost bug [03:18] tmpvar_ has joined the channel [03:18] dannycoates: Draggor: yeah, its weird... defies logic [03:18] tmpvar_: jesusabdullah, umm, there are no actual errors in the output [03:19] mattly has joined the channel [03:20] jamescarr has joined the channel [03:20] jesusabdullah: tmpvar_: I know :C [03:20] jesusabdullah: tmpvar_: "scons: building terminated because of errors." is the only line :( [03:21] jesusabdullah: hmm [03:22] eisd|away has left the channel [03:23] jesusabdullah: I think some stuff might be missing though--trying 2>&1 > instead of just > [03:23] TommyM has joined the channel [03:25] tmpvar: jesusabdullah, how about a make distclean && ./configure && sudo make install [03:25] tmpvar: ? [03:25] jesusabdullah: tmpvar: http://gist.github.com/507431 copied other output [03:25] jesusabdullah: Thought stdout and stderr would've caught everything, but [03:26] jesusabdullah: make distclean? What does that do? :/ [03:27] jesusabdullah: ah [03:27] jesusabdullah: well [03:27] jesusabdullah: same bug anyways [03:27] jesusabdullah: er, error [03:27] jesusabdullah: because it's definitely on this end [03:28] marshall_law_ has joined the channel [03:28] charlesjolley- has joined the channel [03:28] jesusabdullah: Trying to upload output of configure [03:30] jesusabdullah: http://gist.github.com/507431 added [03:30] charlesjolley- has joined the channel [03:30] jesusabdullah: tmpvar: ^^ if you were still interested [03:30] jamescarr_ has joined the channel [03:30] jamescarr_: you guys see this? [03:30] jamescarr_: http://gmailblog.blogspot.com/2010/08/drag-and-drop-attachments-to-save-them.html [03:30] sechrist: HAVE YOU SEEN A DOUBLE RAINBOW BEFORE? [03:30] sechrist: WOAH [03:30] jesusabdullah: I haven't actually. Looks cool though [03:31] beelzabub: noticed a serious regression in start-up performance [03:31] charlesjolley- has joined the channel [03:32] beelzabub: sometime between b1901cd5a5bd647cec9346f838da36e311d38500 & a6bc68a83beda7609330e525a73b7b227a1b9207 startup performance decreased 3x [03:32] sechrist: JimBastard's double rainbow [03:32] charlesjolley- has joined the channel [03:32] sechrist: is pretty leet [03:33] charlesjolley- has joined the channel [03:35] charlesjolley- has joined the channel [03:36] charlesjolley- has joined the channel [03:36] beelzabub: sorry - 2x [03:37] jesusabdullah: I guess I'll bug ry about my promblem tomorrow or something if I see him' [03:37] charlesjolley- has joined the channel [03:37] donspaulding has joined the channel [03:38] donspaulding has joined the channel [03:38] charlesjolley- has joined the channel [03:39] jesusabdullah: I just realized--issues! Of COURSE [03:39] marshall_law has joined the channel [03:39] charlesjolley- has joined the channel [03:40] charlesjolley- has joined the channel [03:40] derferman has joined the channel [03:41] marshall_law_ has joined the channel [03:42] charlesjolley- has joined the channel [03:43] joeshaw has joined the channel [03:44] jamescarr_: I wish you could use array methods on arguments [03:44] jamescarr_: it's lame that you cant [03:45] beelzabub: why not? [03:45] beelzabub: jamescarr_: you mean arguments the variable, right? [03:45] jamescarr_: yeah [03:45] beelzabub: are you sure? what array method? [03:46] aheckmann has joined the channel [03:46] jamescarr_: splice [03:47] jamescarr_: I mean slice [03:47] beelzabub: Array.prototype.slice.apply(arguments, []); [03:47] jamescarr_: hmmm [03:48] jamescarr_: thank you sir [03:49] jamescarr_: I forgot ;) [03:53] DraX: Array.prototype.slice.call(arguments) [03:53] jesusabdullah: issue'd! [03:53] jesusabdullah: ACTION crosses his fingers [03:53] DraX: well, you can do apply too with only one arg [03:54] DraX: but, call is less typing [03:55] mtodd has joined the channel [03:55] DraX: in general the array methods will apply to any object that has a length argument and integer indexed items [03:56] DraX: so you can do like Array.prototype.slice.call({0:'a', 1:'b', 'length':2}); [03:56] DraX: s/argument/property/ [03:57] isaacs has joined the channel [03:58] ajpiano has joined the channel [04:03] tpryme has left the channel [04:05] saikat has joined the channel [04:07] ajpiano has joined the channel [04:09] mikeal has joined the channel [04:11] polyrhythmic has joined the channel [04:17] steadicat has joined the channel [04:26] jamescarr_: hmmm... how can I see properties on an object that are not enumerable? [04:26] isaacs: Object.getOwnPropertyNames(obj) [04:28] satori_ has joined the channel [04:28] jamescarr_: iirc that doesnt display non-enumerable properties does it? [04:28] jamescarr_: let me check... [04:28] EyePulp has joined the channel [04:30] jamescarr_: nvm it does [04:30] isaacs: jamescarr: it does, but it doesn't get inherited properties [04:31] jamescarr_: bingo... thats what I was looking for [04:31] isaacs: jamescarr: you can also do Object.getPropertyDescriptor to get the info about a property, like if it's a getter/setter, etc [04:31] softdrink has joined the channel [04:32] DraX: what about sys.inspect ? [04:33] isaacs: jamescarr: yeah, you could check out sys.inspect, look at what it does [04:34] jamescarr_: cool [04:34] isaacs: ah, sorry, i'ts Object.getOwnPropertyDescriptor [04:35] jamescarr_: yeah, the Own always throws me off too [04:35] jamescarr_: I always accidentally type those methods without own [04:39] tpryme has joined the channel [04:40] jchris has joined the channel [04:43] jamescarr_: oh FFS... [04:43] jamescarr_: I've been missing out on so much [04:43] jamescarr_: I didn't even realize safari and chrome implemented [04:45] DraX: every browser ever implements it [04:45] DraX: it's an _old_ feature [04:45] jamescarr_: not that... [04:45] jamescarr_: mistyped :( [04:47] JimBastard has joined the channel [04:47] isaacs: mikeal: wow, for this week so far, you have a bigger impact bar than ry :) [04:47] JimBastard: boom [04:47] isaacs: maybe it's time for someone to update v8... [04:47] JimBastard: mikeal: im pimping out your request module atm [04:47] technoweenie has joined the channel [04:47] JimBastard: working nicely so far [04:49] isaacs: felixge has done that 3 times [04:49] isaacs: impressive [04:49] isaacs: apparently i did once, back in january. probably some combination of querystring.js and url.js [04:49] jesusabdullah: Huh? [04:49] isaacs: jesusabdullah: http://github.com/ry/node/graphs/impact [04:50] JimBastard: jesusabdullah core commits, do you haz them [04:50] brianmario has joined the channel [04:50] isaacs: just stupid graph games :) [04:50] jesusabdullah: Oh neat [04:50] beelzabub: found it: d9fbb8a58071e339711e8c0ceeb31de5a645fd42 introduces the regression [04:50] Blink7__ has joined the channel [04:50] beelzabub: Expose the V8 debug object process.debug [04:50] beelzabub: not sure why [04:50] isaacs: beelzabub: what's the regression? [04:51] beelzabub: startup time [04:51] beelzabub: jumps from 30ms to 53 [04:51] beelzabub: even worse if some modules are included [04:51] beelzabub: jumps from 50 to 100 [04:51] isaacs: what's really interesting is that some people have this one big monster contribution, and like, disappear [04:51] isaacs: beelzabub: ew, that sucks [04:51] beelzabub: yup [04:51] JimBastard: i think it might be possible to build a console interface without ncurses bindings [04:51] beelzabub: it's particularly bad since on our arm platform everything is like 10x slower [04:51] JimBastard: this shit refreshes soo fucking fast [04:52] JimBastard: http://gist.github.com/507543 [04:52] mape: tmpvar: how hard is it to add syntax hilighting? [04:53] isaacs: beelzabub: maybe it's the memcpy bit? [04:53] beelzabub: that's what i was thinking [04:53] beelzabub: i'm tracking it down right now [04:54] isaacs: beelzabub: or maybe just the fact that it's telling v8 to expose the debug object [04:54] beelzabub: or that [04:54] isaacs: beelzabub: i wonder if it would be fast again if you hid that behind a --debug switch or something [04:54] beelzabub: is there a particular reason that's enabled? [04:54] isaacs: the memcpy shouldn't be very slow [04:55] isaacs: beelzabub: probably just cuz it's awesome. [04:55] beelzabub: i mean why is it enabled if it's not asked for [04:55] isaacs: um... [04:55] isaacs: to see what people do with it, maybe? [04:56] isaacs: you know, it kind of goes back to this whole debate that's been circling around, about devmode vs fastmode vs switches for everything, etc. [04:56] beelzabub: yup - not the memcpy [04:56] beelzabub: it's the enabling of it [04:59] tpryme: isaacs: Is adduser in npm supposed to write to .npmrc? [04:59] isaacs: tpryme: yes [04:59] isaacs: tpryme: is it not? [04:59] tpryme: isaacs: hmmm. Been having trouble having it do that on my system [04:59] tpryme: isaacs: Permissions seem to be fine, too [04:59] isaacs: tpryme: it should write an _authCrypt and an email [04:59] isaacs: tpryme: what's in that file? anything? [05:00] tpryme: isaacs: Isn't doing that even with sudo [05:00] tpryme: isaacs: It's completely blank [05:00] isaacs: weird.. [05:00] isaacs: what about {prefix}/etc/npmrc? [05:00] isaacs: like /usr/local/etc/npmrc [05:00] isaacs: wherever node is installed [05:00] tpryme: isaacs: Doesn't exist there at /usr/local/etc/npmrc [05:00] JimBastard: yo mscdex [05:00] isaacs: ok... [05:00] mscdex: yo me [05:00] amerine has joined the channel [05:00] JimBastard: you did the ncurses bindings right? [05:01] tpryme: isaacs: What's the format for the params added by adduser [05:01] mscdex: yep [05:01] tpryme: isaacs: I was going to hardcode it directly into the file [05:01] tpryme: isaacs: So I can publish my npm project [05:01] JimBastard: mscdex: what do you think of doing a brand new version of that using the console and node [05:01] JimBastard: all in js [05:01] isaacs: tpryme: user = username [05:01] isaacs: tpryme: email = email@place.com [05:01] tpryme: isaacs: So [05:01] isaacs: tpryme: _password = password [05:01] tpryme: isaacs: key = value [05:01] mscdex: eh? [05:01] isaacs: tpryme: yeah, ini format [05:01] tpryme: isaacs: separated by \n [05:01] isaacs: tpryme: yeah [05:01] JimBastard: mscdex: did you see my double rainbow bullshit? [05:02] tpryme: isaacs: Gotcha, thanks [05:02] JimBastard: ill go and try to whip up a demo that can do a grid and some divs [05:02] isaacs: tpryme: what version of npm are you using? HEAD or the 0.1.22? [05:02] mscdex: yes, but i'm not sure if you can do everything using escape commands that you can with ncurses [05:02] JimBastard: mscdex: any idea how to get height and width of the current console window? is that even possible? [05:03] JimBastard: assuming im using just js [05:03] mscdex: no idea, i've not used escape commands and similar things, just ncurses [05:03] JimBastard: got ya [05:03] mscdex: which gives you all that and more info [05:03] mscdex: so i doubt it's available in pure js [05:03] tpryme: isaacs: HEAD off of github [05:04] tpryme: isaacs: Just pulled and re-installed [05:04] tpryme: isaacs: And same behavior [05:04] isaacs: tpryme: i mean, built with make, make install, make link? [05:04] JimBastard: ill just fake it [05:04] tpryme: isaacs: make install [05:04] mscdex: plus another issue is having to deal with different terminals [05:04] mscdex: bah [05:04] isaacs: tpryme: ok, i JUST fixed that bug, then [05:04] isaacs: like, seconds ago. just pushed [05:04] isaacs: try again [05:04] tpryme: Oh [05:04] mscdex: ACTION goes back to fiddling with this silly cisco phone [05:04] tpryme: isaacs: Alright, gimme a few [05:05] isaacs: in 0.1.23, i've completely refactored the way that configs work, so i'm sure there are a few more little snags here and there [05:05] isaacs: still ironing out [05:05] beelzabub: how do i submit a patch? [05:06] mscdex: beelzabub: probably the mailing list [05:06] tpryme: isaacs: hmm, still teh same [05:06] tpryme: isaacs: empty npmrc's, i.e. [05:06] isaacs: hm... yeah, not getting set. ok, digging in now [05:07] isaacs: tpryme: in the meantime, "make" instead of "make install", to get the release version [05:07] richcollins has joined the channel [05:07] isaacs: tpryme: reproducing the issue now [05:08] tpryme: isaacs: Getting the same with "make" [05:08] tpryme: isaacs: hmm... [05:08] isaacs: tpryme: weird... [05:08] slaskis has joined the channel [05:08] tpryme: isaacs: Yeah [05:09] benburkert has joined the channel [05:09] tpryme: isaacs: So that means it's something specific to my system, right? [05:09] isaacs: tpryme: not sure yet. investigating [05:10] twoism has joined the channel [05:11] beelzabub: so i found a speed boost for crypto.js [05:11] beelzabub: running it through closure helps a lot [05:12] beelzabub: i have a version of node with closure support [05:12] beelzabub: i have assert.js ported to use the aggressive optimizations [05:12] beelzabub: the rest of the modules require a bit of work [05:13] isaacs: tpryme: ok, pull and try now [05:13] isaacs: (make install) [05:14] jamescarr_: download_url [05:14] tpryme: isaacs: K, lemme try [05:14] isaacs: ACTION should not push code live while drinking... [05:19] ewdafa has joined the channel [05:20] steadicat has joined the channel [05:20] beelzabub: hey - anyone know how I can add a makefile job to wscript? [05:21] beelzabub: it's really simple - should just call make on the lib directory [05:32] tpryme: isaacs: That worked [05:33] tpryme: isaacs: Thanks! [05:33] isaacs: tpryme: np, sorry for the inconvenience [05:35] peutetre has joined the channel [05:36] Tim_Smart has joined the channel [05:37] cloudhead has joined the channel [05:40] paul_irish has joined the channel [05:40] jan247 has joined the channel [05:41] brapse has joined the channel [05:41] twoism has joined the channel [05:43] wang has joined the channel [05:46] shreekavi has joined the channel [05:46] tilgovi has joined the channel [05:46] jkreeftmeijer has joined the channel [05:47] tpryme: isaacs: How did you come up with the idea for npm? As I remember, there were quite a few similar projects (kiwi). [05:52] mape: yahoooo [05:52] tahu has joined the channel [05:52] sudoer has joined the channel [05:52] isaacs: tpryme: it started as just a script to install the stuff that i wanted to use. and of course 4 years of yinst at yahoo had a big influence on what i think a package manager should do [05:53] derferman has joined the channel [05:53] jesusabdullah: yinst? [05:53] jesusabdullah: isaacs: You worked for yahoo? [05:53] isaacs: yeah [05:54] jesusabdullah: What's that like? [05:54] isaacs: jesusabdullah: it's a great place to work [05:54] jesusabdullah: Who's better: yahoo or google? [05:54] jesusabdullah: hmm! [05:54] isaacs: jesusabdullah: at what? [05:54] jesusabdullah: at being cool? Idk, I mean it in a very subjective way [05:55] reid\home: lol [05:55] bvleur has joined the channel [05:55] jesusabdullah: Essay question! compare/contrast [05:55] jesusabdullah: What did you do for them? [05:56] satori_: Did you get in trouble if you forgot the ! in Yahoo! ? [05:56] jesusabdullah: YES [05:56] jesusabdullah: This is an important question [05:57] reid\home: ... [05:57] mikeal has joined the channel [05:58] ashleydev has joined the channel [05:59] jesusabdullah: isaacs: Sorry for such an open-ended and meaningless question :( [05:59] isaacs: hehe [06:00] isaacs: reid\home works for yahoo too :) [06:00] reid\home: true story [06:00] Tim_Smart has joined the channel [06:01] isaacs: satori_: they're different things. Yahoo! is a company. A yahoo is an employee of Yahoo1. [06:01] isaacs: s/1/!/ [06:01] satori_: gotcha :) [06:06] admc has joined the channel [06:08] SvenDowideit has joined the channel [06:11] knuckolls has joined the channel [06:12] mikeal has joined the channel [06:12] tpryme: isaacs: Where do you work now? [06:13] isaacs: tpryme: kno.com until Friday. starting in September, I'll be at Joyent [06:13] tpryme: isaacs: Cool, with ryan [06:14] jkreeftmeijer has joined the channel [06:14] isaacs: tpryme: yep :) i'm pretty psyched. brian cantrill, too. [06:22] creationix has joined the channel [06:22] creationix: mape: http://creationix.com:1234/#0/0 [06:23] creationix: it's 3D! [06:23] mape: hehe [06:23] mape: em [06:23] mape: if I click it the entire ui is removed [06:23] creationix: try a hard refresh [06:24] creationix: maybe something is stuck in the cache [06:24] mape: if you click the dark grey [06:24] mape: and repeat the click [06:24] benburkert has joined the channel [06:25] mape: and if you click to the right of the items in the middle of the screen on the dark grey you can remove the entire page [06:25] jesusabdullah: What does joyent do? [06:25] jesusabdullah: ;/ [06:25] jesusabdullah: creationix: Awesome [06:25] mape: fluffy stuff [06:25] mape: clouds [06:25] creationix: mape: works for me [06:25] jesusabdullah: what's kno.com? [06:26] creationix: ok, who's messing with my garden [06:26] mape: creationix: Then you probly aren't clicking where I'm clicking [06:26] jesusabdullah: >:O [06:28] creationix: jesusabdullah: kno is there isaacs works [06:28] creationix: I almost got hired there [06:28] creationix: mape: what browser? [06:28] mape: chrome [06:29] creationix: hmm [06:29] creationix: mape: what do you mean "remove the entire page" [06:29] SubStack: ACTION is putting some virtual machines into some web browsers :p [06:30] mape: creationix: remove the entire page as in $('*').bind('click', function(){$(this).remove()}) and click away [06:30] mape: in the end you have a white page [06:30] creationix: mape: that's strange [06:30] mape: only thing left is a dark square with the select empty item [06:30] creationix: do you have some funky user scripts installed [06:30] mape: nope [06:30] mape: not that I know of [06:31] mape: same in safari [06:31] mape: and firefox [06:31] creationix: mape: can you make a screencast [06:33] mape: creationix: http:((mape.me/cre.mov [06:34] jesusabdullah: isaacs: I'm surprised to see the kno rocking lcd screens instead of e-ink or whatever [06:34] isaacs: jesusabdullah: e-ink sucks for color graphics [06:34] jesusabdullah: isaacs: That it does! [06:34] jesusabdullah: My ladytype just got a nook [06:34] jesusabdullah: It's kinda cool in that it has a larger e-ink screen and a smaller lcd touchscreen [06:34] isaacs: jesusabdullah: it'd be nice to do that for a v2 or something, maybe switch based on light levels or something, but that's very far future ideas [06:34] jesusabdullah: the e-ink is easier on the eyes [06:35] jesusabdullah: Yeah, totally [06:35] isaacs: these lcds are NICE. [06:35] isaacs: i could look at them all day [06:35] jesusabdullah: I bet [06:35] isaacs: and they are visible at any angle. [06:35] jesusabdullah: thing looks hella tight [06:35] isaacs: low gloss, etc. [06:35] jesusabdullah: what about in broad daylight? [06:35] isaacs: they look fake. [06:35] _sri has joined the channel [06:35] creationix: mape: woah, that's trippy [06:35] isaacs: i mean, they look like magazine paper or something. [06:35] jesusabdullah: no shit? That's intense [06:35] creationix: isaacs: I stil want one [06:36] jesusabdullah: I want one too [06:36] creationix: I'll trade my ipad ;) [06:36] isaacs: hehe [06:36] jesusabdullah: Girlfriend was thinking, "two laptop screens" [06:36] jesusabdullah: Can they rock pdf? [06:36] jesusabdullah: :D [06:36] isaacs: yeah, that's about all the thing does ;) [06:36] isaacs: i mean, it's designed for reading books [06:36] jesusabdullah: Cause that's the major downside to the mainstream e-readers--epub is great, pdf looks like ass [06:36] jesusabdullah: too small of screens, poor scaling ability [06:36] mape: creationix: probly not checking if the containing box is suppose to allow deletion? [06:37] isaacs: i think it's actually gonna be epub for DRM reasons, but it does pdf, too [06:37] jesusabdullah: and a lot of the texts *I* would want to read are in pdf [06:37] creationix: mape: something like that, except I don't delete things [06:37] mape: oh k [06:37] isaacs: jesusabdullah: when you have 2 14" screens, you don't have to scale down much ;) [06:37] jesusabdullah: the e-pub is better designed for rearranging the text on the fly, so you can make it bigger for shitty eyes [06:37] jesusabdullah: indeed [06:37] isaacs: jesusabdullah: well, rearranging text doesn't work when orientation and position matters. [06:37] jesusabdullah: kno + pirated textbooks = awesome >:D [06:38] jesusabdullah: Yeah, exactly isaacs [06:38] jesusabdullah: dammit I can't find the store [06:38] isaacs: ther'es SO much to figure out though. the first versions of the kno will have issues, i'm sure, like any new device. [06:38] jesusabdullah: aww, not out yet :C [06:38] isaacs: nopw [06:38] jesusabdullah: ACTION will watch [06:39] jesusabdullah: Estimated dollar figure? :/ [06:39] isaacs: there's an email address to contact if you wanna be in the beta. but you gotta be a college student [06:39] isaacs: jesusabdullah: that's tbd. [06:39] jesusabdullah: That reminds me: The nook guys seem to be doing iterative design [06:39] jesusabdullah: their web browser is "beta" [06:39] jesusabdullah: I see. [06:39] isaacs: a lot of the business angle needs to be worked out still. depends on a lot of factors. [06:40] jesusabdullah: Actually, I'm still a college student for another year [06:40] isaacs: how much people are willing to pay for devices, how much books will cost, what kinds of deals we can negotiate with publishers, etc. [06:40] jesusabdullah: and the girlfriend for another two, not counting grad school [06:40] isaacs: i mean, we can't give them away, because we'd go out of business [06:40] jesusabdullah: right [06:40] isaacs: but they'll probably be somewhat subsidized depending on how the ebook business works out [06:40] jesusabdullah: If you pirated your textbooks it'd be worth a grand <_< [06:40] jesusabdullah: not that you should encourage this! [06:40] isaacs: haha [06:41] creationix: mape: ok, fixed it! [06:41] jesusabdullah: Of course, at my level it's hard to pirate textbooks [06:41] isaacs: well, there are a few models flying about, anywhere from 200 to 1500, and depending on the book sales, it could vary quite a bit in terms of what makes sense business wise [06:42] isaacs: even at the high end, though, the cost is justified inside of 3 semesters, if you actually use it instead of books. [06:42] isaacs: if you use it instead of books AND instead of a laptop, then make that 1 semester [06:42] isaacs: but most students will probably still have a laptop [06:43] creationix: isaacs: have to be a student huh [06:43] creationix: too bad I quit school to come out here and work for kno [06:43] creationix: and then that didn't work out [06:43] jesusabdullah: Where do you guys live? [06:44] creationix: I'm in Palo Alto [06:44] jesusabdullah: huh! [06:44] isaacs: mountain view, here [06:44] creationix: (South of San Francisco bay) [06:44] isaacs: kno is in Santa Clara [06:44] jesusabdullah: all Cali? [06:44] isaacs: yeah, all bay area [06:44] jesusabdullah: I live in the frigid northern wastes, so my geography is pretty crummy :/ [06:44] creationix: ACTION hates cold climates [06:45] jesusabdullah: It's pretty warm here now actually [06:45] creationix: in fact it's too cold for me here [06:45] creationix: highs are about 71F [06:45] jesusabdullah: 75 F now [06:45] jesusabdullah: I heard it's pretty chilly in socal right now [06:45] creationix: now if 59F [06:45] jesusabdullah: That's awesome [06:45] jesusabdullah: I want to live there! [06:46] creationix: socal is a lot warmer, I used to live down there years ago [06:46] creationix: in socal, there is no winter [06:46] creationix: in nocal there is no summer [06:46] jesusabdullah: in Alaska, there is no spring or summer. There are only break-up and, umm [06:46] creationix: in Texas (where I'm from) there is no spring or fall [06:46] jesusabdullah: well [06:46] jesusabdullah: just breakup [06:46] jesusabdullah: no, I take that back [06:46] jesusabdullah: breakup and first snows [06:47] creationix: Texas is actually pretty crazy [06:47] creationix: 13 inches of snow one day, and then 80s a couple days later [06:47] creationix: and then in a month it's over 100F [06:47] jesusabdullah: Nice! [06:47] jesusabdullah: oh God :C [06:47] jesusabdullah: that's hellaceous [06:47] creationix: no spring [06:48] creationix: compared to where I grew up, California weather is quite boring [06:49] isaacs: cali weather is like just the good parts [06:49] isaacs: jesusabdullah: whereabouts? [06:49] isaacs: oh, alaska, you said. that's all one place, right? [06:49] isaacs: ;) [06:51] tjgillies has joined the channel [06:54] ashleydev has joined the channel [06:54] amerine: creationix: That's looking sweet [06:55] creationix: :) [06:56] creationix: amerine: pan around with the arrow keys [06:56] jesusabdullah: isaacs: Fairbanks, with SubStack! [06:56] isaacs: oh, neat :) [06:56] jesusabdullah: mmhmm! He turned me onto node actually [06:58] felixge has joined the channel [06:58] felixge has joined the channel [06:59] SubStack: oh hello [07:00] creationix: well, time to tuck kids to bed, it's late enough [07:00] jesusabdullah: NO [07:00] jesusabdullah: I will remain awake! [07:01] jesusabdullah: nvm that I have to get up at 6:00 :C [07:01] creationix: g'night [07:02] jesusabdullah: ACTION & tries sleeping [07:02] SubStack: I could go to sleep for a month. [07:02] SubStack: well, except my roommates would probably want another rent check [07:04] sooli has joined the channel [07:06] beanie___ has joined the channel [07:06] jesusabdullah: UNLIKELY [07:06] virtuo has joined the channel [07:06] jesusabdullah: sorry to distract you from HACKING, Sub Stack! [07:06] jesusabdullah: orite, have2sleep [07:07] SubStack: :p [07:07] SubStack: having to get up at a certain time, what a silly concept [07:08] voxpelli has joined the channel [07:09] Gruni has joined the channel [07:10] tpryme: Anyone here have experience with riak? [07:19] mjr_ has joined the channel [07:23] Clooth has joined the channel [07:29] ph^ has joined the channel [07:30] TommyM has joined the channel [07:31] mikeal has joined the channel [07:31] keeto has joined the channel [07:34] shockie has joined the channel [07:35] astrolin has joined the channel [07:35] astrolin has joined the channel [07:48] gormer has joined the channel [07:50] jetienne has joined the channel [07:50] Gruni has joined the channel [07:51] javajunky1 has joined the channel [07:52] javajunky1 has left the channel [07:52] teemow has joined the channel [07:52] javajunky has joined the channel [08:03] TomY has joined the channel [08:13] alecmuffett has joined the channel [08:14] FransWillem has joined the channel [08:14] jetienne: hi [08:14] FransWillem: Hey [08:14] maushu has joined the channel [08:16] rnewson has joined the channel [08:16] rnewson has joined the channel [08:23] jetienne: ACTION is trying to underrstand commonjs and loader in web [08:23] jetienne: FransWillem: what do you use to load commonjs code in browser ? [08:24] astrolin has joined the channel [08:24] shockie: question about waiting for async callback [08:24] FransWillem: jetienne: I don't, I re-write the modules to be loadable in a browser too [08:24] FransWillem: jetienne: Take a look at the top and bottom of this file: http://github.com/Frans-Willem/IPCNode/blob/master/IPCNode.js [08:24] shockie: is there a better solution then check for a global var if it is set to true [08:25] jetienne: FransWillem: looking [08:25] shockie: ie, var result = false, when callback is called set result to true, and in the return function while(!result) continue [08:25] FransWillem: jetienne: Basically using that you can just load them using the , and it'll load up properly if you've put the modules in the correct order [08:26] FransWillem: shockie: You want to have a main loop wait for a callback to be called ? [08:26] shockie: yeah, i use the couchdb lib, and all the calls are async, but i want to use it as top down [08:27] BrianTheCoder has joined the channel [08:27] FransWillem: shockie: That's impossible, Node.js is single threaded, meaning that only one bit of javascript can be executing at a time. So while your main loop is still running, your callback will be delayed. [08:28] FransWillem: shockie: What you could use, however, is the Do or Step libraries for Node.js, they won't turn your code into traditional top-down like you're used to, but it'll definitely make it look more like it :) [08:29] shockie: FransWillem: here's a example http://paste.pocoo.org/show/245669/ [08:30] jetienne: FransWillem: interesting solution. no prebuild necessary, no external dependancy for the loader itself. a bit intrusive but standalone [08:31] FransWillem: jetienne: Yeah, slightly intrusive, but you could have exports be something like (window.IPCNode={}) instead, so IPCNode will only export stuff on that object [08:31] FransWillem: shockie: That code won't run. the while loop (while (!result) {continue}) will keep running and will keep node.js busy, and node.js won't be able to actually receive the data from couchdb. [08:32] rsms: FransWillem: I suppose jetienne mean he/she wants to write the code so that it looks top-down. That could be done by chaining or with promises. [08:32] FransWillem: rsms: That's what I told him, the Do or Step libraries :) [08:32] jetienne: FransWillem: i understand the closure+export in constructor... but i miss why IDProvider, EventEmitter are in the constructor [08:32] hellp has joined the channel [08:32] jetienne: rsms: i guess you mean shockie [08:32] shockie: ;p; [08:33] FransWillem: shockie: If you want to write like synchronous code, look at Narrative Javascript, it's a precompiler that will turn synchronous code into asynchronous. Step and Do are also options that will make it look more like you intend. [08:33] pufuwozu has joined the channel [08:33] markwubben has joined the channel [08:33] rsms: jetienne: sorry, yes :P [08:33] rsms: FransWillem: :) [08:33] FransWillem: jetienne: Basically IPCNode relies on IDProvider and EventEmitter, normally these would be require'd, but since require isn't available on some systems (e.g. browsers), I link it up in other ways :) [08:33] shockie: ok, i hate the way node-couchdb uses async for data returns:( [08:34] FransWillem: shockie: That's not node-couchdb, that's how Node.js was written. It's why it's so fast :) [08:34] rsms: shockie: I'm using this one in a production system (dropular.net) http://github.com/rsms/node-couchdb-min [08:35] FransWillem: rsms: You're in Paris ? [08:36] zemanel has joined the channel [08:36] jetienne: FransWillem: why not putting them in the global closure function. var IDProvider; if(innode){ IDProvider = require("./IDProvider").IDProvider; } else { IDProvider = window.IDProfider; } [08:36] FransWillem: rsms: (Found a link to offf in your blog, appears to be in Paris, figured you might be :p) [08:36] jetienne: FransWillem: this would work no ? and make the constructor lighter [08:36] shockie: rsms: a thx, will take a look at that lib [08:37] FransWillem: jetienne: The constructor doesn't actually get those, only the global module closure. The reason why I put the require bits in the loader (=bottom) part is because I didn't want my main code to be riddled with if (typeof(window)) ... else ... stuff :) [08:37] jetienne: FransWillem: ok :) [08:39] pufuwozu has joined the channel [08:41] femto has joined the channel [08:41] rsms: rsms: nope, in Stockholm currently [08:41] rsms: FransWillem: something wrong with my IRC-skillz today it seems. The above to you ^ [08:42] rsms: FransWillem: Ah, no, we (dropular.net) was invited by OFFF. My partner suprb (Andreas Pihlström) went down there. I was in Korea at the time. [08:45] FransWillem: Ah, shame [08:46] FransWillem: Are you aware of any other node.js related get-togethers in Paris in the near future (currently working there on a consultancy basis, don't know a lot of people here, would love to actually go do something useful here :p) [08:46] FransWillem: ? [08:48] stagas has joined the channel [08:53] pufuwozu has joined the channel [08:56] jetienne: FransWillem: if you find some, i am interested [08:56] jetienne: FransWillem: im in paris too [08:56] FransWillem: Hah, whereabouts ? [08:57] jetienne: FransWillem: near bibliotheque francaois miterrant [08:57] jetienne: bfm [08:57] FransWillem: ACTION googles [08:58] FransWillem: Oooh, that's not too far away from where I am, I'm near Metro Charonne [08:58] FransWillem: Are you French or also just visiting ? [08:59] jetienne: FransWillem: tomorrow i will go at OCC (a startup meeting in paris) maybe we could meet there [08:59] FransWillem: jetienne: Gotta work during office hours, so no, sorry :-/ [09:00] FransWillem: We could meet up later, but I'm pretty busy this and next week, maybe some time after that [09:00] jetienne: FransWillem: french and available as my last startup went belly_up :( [09:00] FransWillem: That's gotta suck :/ [09:01] FransWillem: Anything new planned ? [09:02] jetienne: FransWillem: not really. currently im completing/publishing a OSS project. because i got to code, this is in my blood :) [09:03] SubStack: Codes! I write those sometimes. [09:03] pufuwozu has joined the channel [09:03] FransWillem: :) [09:07] tisba has joined the channel [09:07] jetienne: FransWillem: btw google "lacantine". lots of meeting in there. not sure how much happen during august tho [09:08] ctp has joined the channel [09:13] shreekavi has left the channel [09:17] pufuwozu has joined the channel [09:21] shockie: FransWillem, you're dutch? [09:21] shockie: must be with that name:) [09:21] FransWillem: Yup [09:22] tisba has left the channel [09:22] shockie: ah me too:) [09:28] maushu has joined the channel [09:30] jetienne_ has joined the channel [09:30] b_erb has joined the channel [09:31] feroz has joined the channel [09:31] pufuwozu has joined the channel [09:31] rednul has joined the channel [09:31] tisba_ has joined the channel [09:32] pzich has joined the channel [09:32] halorgium has joined the channel [09:32] dispalt has joined the channel [09:33] adrienf has joined the channel [09:33] moqq has joined the channel [09:36] donspaulding has joined the channel [09:37] voxpelli has joined the channel [09:38] ph^ has joined the channel [09:44] nefD has joined the channel [09:44] samdk has joined the channel [09:45] BrianTheCoder has joined the channel [09:52] romainhuet has joined the channel [10:03] NuLLBiT has joined the channel [10:03] piratepenguin has joined the channel [10:07] FransWillem: Hmmm, is a compression ratio of ~25% on JSON data acceptable ? [10:07] mape: depends on the data? [10:09] Blink7_ has joined the channel [10:10] FransWillem: Well, the data is just random JSON data, and I can encode it using Huffman encoding and Base64 encoding. It'll probably be a bit slow, but it'll save 25% on bandwidth used :/ [10:13] jetienne_: why base64... you are wasting space [10:14] FransWillem: jetienne_: Not using Base64 would save an extra 25% (total compression of 50%), but then it'd contain 0-bytes and the like, and I'm not sure if web-browsers will be able to handle that properly [10:16] SamuraiJack has joined the channel [10:16] jetienne_: FransWillem: js is supposed to handle it. and it would be faster as noneed to encode/decode, so it may be worthy to test [10:16] maushu: Anyone messed with the v8 debugging protocol? [10:16] zemanel has joined the channel [10:17] jetienne_: http://github.com/bnoordhuis/node-profiler <- maushu i dunno if it is the same proto [10:18] maushu: jetienne_: I'm just confused. I think there are two protocols: a json one and other magical one that I can't find. [10:19] jetienne_: http://github.com/dannycoates/node-inspector [10:19] maushu: Oh, I just remembered. I was thinking in compiling the debug version of node.js, that might be it. [10:20] maushu: Kind of weird the debugger "work" even if it isn't compiled though. [10:20] jetienne_: maushu: some v8 devs are in #chromium [10:20] mAritz has joined the channel [10:21] maushu: jetienne_: This is more focused on node.js though. I think. [10:21] jetienne_: maushu: you do plain v8 ?? [10:22] maushu: Wait a sec, I'm trying to remember what I've been doing. I just started this again from a week ago. [10:22] jetienne_: :) [10:23] maushu: Ok, I tried node --debug-brk [10:23] maushu: It doesn't break in the beginning, so I thought it might be the lack of debug compilation. [10:24] mAritz: problem: i've got the openssl package installed but configure still says "not found". do i need libssl-dev? [10:24] jetienne_: mAritz: yes [10:25] maushu: mAritz: Oh, I remember this problem. [10:25] jetienne_: http://code.google.com/p/v8/wiki/DebuggerProtocol wow not a walk in the park [10:25] maushu: If installing libssl-dev doesn't work tell me so that I can look in the logs. [10:25] maushu: jetienne_: Tell me about it. [10:25] maushu: Still, better than binary if you ask me. [10:25] SamuraiJack has joined the channel [10:27] sveimac has joined the channel [10:27] maushu: Ok "Waiting for remote debugger connection..." doesn't show up. [10:28] maushu: Anyone remembers the debug flag for the configure? [10:28] maushu: That might be it. [10:28] jetienne_: ./configure --debug [10:28] maushu: Thanks. [10:29] maushu: Hmm, did announcer stopped working? [10:30] maushu: Yup. [10:30] keeto has joined the channel [10:31] keeto has joined the channel [10:32] maartenm has joined the channel [10:32] _announcer has joined the channel [10:33] _announcer: Twitter: "Poking announcer in the #nodejs channel." -- Diogo Gomes. http://twitter.com/graphnode/status/20294744962 [10:33] maartenm: may be a FAQ but I'm trying to build node.js under windows/cygwin [10:33] FransWillem: Hmmm, I can encode about 128kb per second using huffman encoding with 128 output characters, with a 46% compression [10:33] maushu: There, I fix'd it. xD [10:33] _announcer has joined the channel [10:33] maartenm: is there doc for things like "ImportError: Module msvc not found?" [10:33] maartenm: sorry, No module named msvc [10:34] maushu: msvc? Microsoft Visual C ? [10:34] maartenm: errm, yeah [10:34] maartenm: I have MSVC++ and MSVC# 9 [10:34] piratepenguin has left the channel [10:34] maartenm: don't udnerstand where this is coming from [10:34] maartenm: I also have gcc (cygwin) [10:34] maartenm: anyway, my first mistake was that I checked out the repo using windows git [10:35] maartenm: it has to be cygwin's git.. I'm dl'ing that now [10:35] maartenm: it would be cool if the community kind of made the windows installs work [10:35] mAritz: maushu: according to build/config.log it tries "pkg-config --errors-to-stdout --print-errors --cflags --libs openssl" does that automatically convert the openssl to libssl-dev? looks fishy. there are header tests for the ssl stuff after that but what does the pkg-config check do? [10:35] maartenm: not that I use windows at home but at work I have little choice [10:37] maushu: mAritz: I don't think so. [10:37] mAritz: maartenm: why not use a vm? much less hacky than cygwin in my opinion. [10:37] maushu: It should just check if the openssl is installed. [10:37] mAritz: maushu: then why does it fail if openssl is installed? :D [10:37] maartenm: because I want it to work under windows [10:37] jetienne_: mAritz: which os do you run [10:37] mAritz: mint [10:37] mAritz: -> ubuntu -> linux [10:38] maushu: mAritz: Ah! So you might the problem I had, one second. [10:38] mAritz: and xubuntu [10:38] maushu: ACTION searches the irc logs. [10:38] jetienne_: $ pkg-config --errors-to-stdout --print-errors --cflags --libs openssl [10:38] jetienne_: -lssl -lcrypto [10:39] mAritz: maartenm: using cygwin isn't really "working under windows" though. at least not much more than using a vm. [10:39] maartenm: I'm dl'ing the vm now, guess you're right [10:39] jetienne_: maartenm: some succeed recently. have you searched on the internet? [10:39] maartenm: what's stopping to make it run under windows though? [10:39] maartenm: it's all C right? [10:39] maartenm: what sort of dependencies are causing problems? [10:40] jetienne_: http://wiki.github.com/ry/node/building-node-on-windowscygwin [10:41] maartenm: jetienne_: thanks I'm following that now.. my problem is probably caused by git/python not being cygwin [10:41] jetienne_: http://groups.google.com/group/nodejs/browse_thread/thread/721f061380fe50a1 [10:41] jetienne_: ok [10:41] maushu: Drat. Thats alot of logs. [10:42] mAritz: maushu: don't worry, i'll just install libssl-dev ;D [10:42] fermion has joined the channel [10:44] maartenm: maybe with a simple CmakeLists.txt file it would be possible to build it under true windows? [10:44] maartenm: what libs would be missing for windows? [10:47] Gruni has joined the channel [10:49] maushu: About openssl... is that bug fixed? The one that didn't drain the buffer. [10:53] _announcer: Twitter: "InfoQ: Virtual Panel: The Node.js Ecosystem - Frameworks, Libraries and Best Practices: http://bit.ly/b3DzsU" -- yigitozgul. http://twitter.com/yigitozgul/status/20295664066 [10:55] FransWillem: What'd be the quickest way to implement a number-set in JS that would be able to get the lowest, insert, and remove elements ? [11:00] Blink7_ has joined the channel [11:01] mAritz: since i'm doing a lot of redis work right now, my answer would be use redis. that should be the right hammer for that cake. [11:01] FransWillem: ??? [11:01] maartenm: 'lowest' won't be quicker using redis [11:02] FransWillem: I highly doubt that, I'm pretty sure the network lag to redis alone would be bigger than a simple hash-map in JS [11:02] maartenm: only thing quick for comparators is a binary tree but you'll lose insert/remove performance [11:02] FransWillem: Only problem is that a hash-map isn't fast enough :( [11:03] tisba has joined the channel [11:04] maushu: Redis has sorts. [11:04] FransWillem: maartenm: Currently working on a binary heap implementation that should work, just not sure if the object allocation stuff will offset any performance gains :( [11:04] maartenm: is it numbers you are storing or objects? [11:05] omarkj has joined the channel [11:05] FransWillem: maartenm: id => object mapping, but I want to retrieve the object with the lowest id quickly [11:06] FransWillem: maartenm: It's for an adaptive huffman implementation [11:06] maartenm: ok [11:06] maartenm: if it's for huffman, you should choose the datastructure that can be used immediately for decompression/compression [11:06] maartenm: instead of proxies.. maybe the proxies will be faster but that's premature optimization [11:07] maartenm: but if you need to keep the lowest id [11:07] blackdog_ has joined the channel [11:07] maartenm: why don't you keep a separate pointer to the lowest id and the second lowest id.. and control these at insert/remove? [11:08] maartenm: if the insert overwrites the lowest, they shfit positions.. if the remove removes it, you have a slightly more expensive procedure [11:08] _announcer: Twitter: "SproutCore + node.js seems a much nicer way of writing web apps once you get your head around it" -- Sam Bashton. http://twitter.com/bashtoni/status/20296370424 [11:08] maartenm: sinc ethe second lowest becomes lowest.. and the lowest will be searched O(n) but then, removes shouldn't happen so often [11:08] FransWillem: removes happen all the time too :p [11:08] maartenm: ideally you could do the search for the second lowest concurrently [11:08] maartenm: but that's nasty.. [11:09] FransWillem: Anyway, already getting about 170kbps throughput, which is pretty good for client-side already [11:09] FransWillem: but for server side it needs to be higher, seeing as the server will need to serve multiple clients :) [11:09] maartenm: sounds like you just need a tree structure.. [11:10] maartenm: maybe B+ tree if your numbers have a high variance and can be put into "categoeries" of magnitude [11:10] maartenm: B+ trees also rend well to concurrent accessing [11:11] FransWillem: maartenm: Writing a PriorityQueue with a Heap implementation atm (which is a simple tree structure) [11:11] b_erb has joined the channel [11:11] maartenm: yeah [11:12] maartenm: advantage of B+ trees woudl be that other cleints can write numbers if they clearly do not belong in the lower regions, without being blocked [11:12] maartenm: priorityqueue with one tree will be blocking other users if a transaction is busy [11:13] FransWillem: Node.js is single threaded anyway, and each client will have it's own huffman tree, and as such it's own priorityqueue ;) [11:13] maartenm: ah ok, nm then [11:15] FransWillem: YAY! [11:15] FransWillem: 299kbps throughput with a priorityqueue :D [11:16] FransWillem: that's a 75% speed increase :p [11:16] maartenm: cool [11:16] maartenm: are you rebalancing the tree on removes or just marking them? [11:18] FransWillem: You mean on the priority queue ? [11:18] stagas has joined the channel [11:18] maartenm: yeah [11:18] FransWillem: You don't rebalance a heap [11:18] stagas: is there a static file server module that caches to memory? [11:18] FransWillem: http://en.wikipedia.org/wiki/Heap_(data_structure) [11:19] FransWillem: http://www.cogs.susx.ac.uk/courses/dats/notes/html/node77.html [11:19] FransWillem: Read until you reach priority queues :) [11:19] jetienne_: q. is it possible to programatically define a variable ? i would like to do "var foo = bar;" but dynamically from var key = "foo", val = "bar"; .... how can i do that? [11:19] FransWillem: BAsically, isntead of storing item.left is items current, you have a tree structure where for each node all it's children are smaller, and the tree is complete (e.g. equally high on all paths) [11:20] FransWillem: jetienne_: Either do it on an object (obj[varname]=something), or if you want to define a global variable, do GLOBAL[varname]=... [11:21] maartenm: that's an expensive insert.. [11:21] maartenm: inserts are less common than removes? :) [11:21] FransWillem: maartenm: Nope, but both only take O(log(n)) times [11:21] Blink7_ has joined the channel [11:22] FransWillem: maartenm: Basically, I use remove, insert equally often (e.g. I always move items from one priorityqueue to another), and I use top the most [11:22] maartenm: if it's object id's you're storing you can use Fusion trees too http://en.wikipedia.org/wiki/Fusion_tree [11:22] FransWillem: top is now O(1), and insert/remove are both O(log(n)), so sounds like a fair tradeoff :) [11:23] FransWillem: maartenm: Fusion tree doesn't actually provide a quick top function, and that's the main function I need [11:24] FransWillem: maartenm: For that matter, all binary search trees don't have a quick top function, as to get to the lowest or highest element, you'll have to traverse the tree either completely to the right or completely to the left, so looking up the minimum or maximum element takes O(log n), whereas with a heap that takes O(1) [11:25] maartenm: yeah top is fastest [11:25] maartenm: a B+tree has faster top than one binary search tree though [11:25] FransWillem: But you can't really beat O(1) ;) [11:26] maartenm: well, you can if you can reuse the tree for huffman [11:26] maartenm: you won't be able to reuse your heap [11:26] FransWillem: The huffman tree is sorted on a completely different property than id, so I won't be able to re-use that anyway [11:26] FransWillem: I am however re-using the objects, though [11:26] FransWillem: as the index in the current PQ is stored on the same nodes as the huffman tree nodes [11:31] FransWillem: LOL! [11:31] FransWillem: ok, nvm, this whole project isn't worth it at all :p [11:31] FransWillem: Node gets about 320kbps throughput [11:31] FransWillem: Google Chrome about 220kbps [11:31] FransWillem: IE8 about 11... [11:31] maartenm: heh [11:32] FransWillem: Yay, and I8 crashes when using the profiler :p [11:32] _announcer: Twitter: "@Encosia Have you checked out fab.js for node.js?" -- A'braham Barakhyahu. http://twitter.com/BlessYahu/status/20297562645 [11:33] maartenm: probably not the data structure that's causing the problems though [11:34] FransWillem: Yeah, looking at the profiler now [11:34] FransWillem: It's similar to chromes [11:34] FransWillem: same functions taking up same percentages [11:34] FransWillem: it's just slower... [11:34] maartenm: everythign scaled? [11:34] maartenm: weird [11:34] maartenm: well, maybe not so weird [11:34] maartenm: 20 times slwoer.. sounds about right [11:35] CarbonicMan has joined the channel [11:36] FransWillem: first 5 functions are sendCharacter 1731/7,4%, outputNode 353/1,8%, PQ.insert 239/1%, PQ.remove 151/0,6%, _outputBit 121/0,2% [11:36] FransWillem: That's IE's time/Googles percentage [11:36] FransWillem: Just looks like a 20% slowdown, really :p [11:37] FransWillem: Hmm [11:37] keeto has joined the channel [11:37] FransWillem: funny thing is, PQ.top is somewhere with the bottom 3 in Chrome, whereas in IE it's in the top 7, looks like array or object access is slow on IE :/ [11:38] FransWillem: Maybe I could speed up outputBit :/ [11:38] pufuwozu has joined the channel [11:45] NuLLBiT has left the channel [11:47] dipser has joined the channel [11:53] _announcer: Twitter: "Take attention: http://nodejs.org/ #Web #ServerSide #Programming #Languaje" -- Gabriel Medina. http://twitter.com/gxsoft/status/20298644959 [11:55] PyroPeter: why are there two api documentations? [11:56] omarkj: Are there ? [11:56] PyroPeter: http://nodejs.org/api.html and http://static.creationix.com/node_docs/browser/ (which seems deprecated) [11:56] _announcer: Twitter: "About Node.JS http://bit.ly/NodeJSiq #NodeJS #Web #ServerSide #Programming #Languaje" -- Gabriel Medina. http://twitter.com/gxsoft/status/20298801796 [11:57] PyroPeter: http://github.com/ry/node_docs (the repo behind the second website) was last updated in March [11:57] omarkj: Weird, but the one at node.js.org is the one to use. [11:58] omarkj: Here is it in the repo: http://github.com/ry/node/tree/master/doc/ [11:59] rsms has joined the channel [11:59] pufuwozu has joined the channel [12:04] jetienne_: how to define a global in nodejs? this is for namespace [12:07] astrolin_ has joined the channel [12:08] d0k has joined the channel [12:08] astrolin_ has joined the channel [12:11] MrNibbles: hey guys, updated my random little node game today [12:11] MrNibbles: http://184.106.205.94/ [12:11] MrNibbles: works best in chrome [12:12] FransWillem: Heh, fun :p [12:12] dcolish has joined the channel [12:13] guybrush: MrNibbles: nice :) [12:13] MrNibbles: :D [12:14] feroz has left the channel [12:14] PyroPeter: jetienne_: have you tried assigning to the 'global' object? [12:16] _announcer: Twitter: "node.js .. should I love it? http://nodejs.org/" -- Christian Felde. http://twitter.com/cfelde/status/20299904345 [12:17] dnolen has joined the channel [12:17] V1_ has joined the channel [12:23] MrNibbles: thanks everyone, sever now down [12:23] MrNibbles: seems to handle everything pretty damn well [12:23] MrNibbles: im so impressed with node [12:27] b_erb has joined the channel [12:32] Sam__ has joined the channel [12:32] dnolen has joined the channel [12:33] beawesomeinstead has joined the channel [12:33] Sam__ has left the channel [12:34] femto has joined the channel [12:34] tahu has joined the channel [12:34] Sam__ has joined the channel [12:35] SamNZ has joined the channel [12:35] weepy has joined the channel [12:35] weepy: hi [12:36] guybrush: MrNibbles: me 2 :D [12:36] weepy: i want to compile a script and see which line number it fails at [12:36] maartenm has left the channel [12:36] MrNibbles: haha lets go [12:36] weepy: e.g. via capturing the exception from process.binding('evals').Script.runInThisContext(text) [12:36] MrNibbles: oops wrong channel [12:36] weepy: but it's doesn't have much useful information in it [12:37] SamNZ: NPM doesn't work with the latest version of node? [12:37] _announcer: Twitter: "“@BlessYahu: @Encosia Have you checked out fab.js for node.js?” fantastic ;)" -- Vincent RABAH. http://twitter.com/itwars/status/20301158960 [12:38] pufuwozu has joined the channel [12:43] reid has joined the channel [12:45] chrischris has joined the channel [12:48] kriszyp has joined the channel [12:50] mw has joined the channel [12:51] mravaux has joined the channel [12:53] _announcer: Twitter: "Experimenting node.js: http://jeffkreeftmeijer.com/2010/things-i-learned-from-my-node.js-experiment/" -- Florent E.. http://twitter.com/FlorentEz/status/20302044546 [12:55] pufuwozu has joined the channel [12:58] PyroPeter: when do you have to sign the cla? is there a chance of getting very short patches pulled without signing it? [13:01] mape: for node? [13:03] unomi has joined the channel [13:03] PyroPeter: yes [13:04] maushu: Coin Laundry Association? [13:04] maushu: Conjugated linoleic acid? [13:04] mape: well the point of having the cla is to remove future issues [13:04] mape: so I doubt he would accept a patch by someone who hasen't signed [13:05] maushu: Copyright Licensing Association? [13:05] maushu: Credit Limit Amount? [13:05] bradleymeck_ has joined the channel [13:05] maushu: Maybe I shouldn't have drank all that coffee. [13:05] PyroPeter: maushu: right [13:06] maushu: I feel like I could code with my eyes. [13:06] SamNZ: ha [13:07] maushu: A black cat on the other side of the street. Must be a matrix glitch. Don't worry! I will fix it! [13:08] maushu: ACTION uses eye laser beams on the cat! [13:08] pufuwozu has joined the channel [13:09] mrduncan has joined the channel [13:10] davidsklar has joined the channel [13:11] zapnap has joined the channel [13:13] pgriess has joined the channel [13:14] dipser: whats wrong with: var GET = url.parse(request.url); [13:14] behmann has joined the channel [13:15] dipser: sys.puts(GET.sid); is undefined [13:15] SamNZ: sys.puts(GET)? [13:15] SamNZ: Oh are you trying to get the query string? [13:15] dipser: yes [13:16] SamNZ: var q_string = url.parse(request.url).query; [13:16] dipser: i try to make a server that can get an object... work with it... and push it to one or all users [13:16] ben_alman has joined the channel [13:17] dipser: so i will deliver a sessionid (sid) in qstring, is this normal? [13:17] SamNZ: yep [13:17] dipser: all right [13:17] dipser: thanks [13:17] SamNZ: qs = require("querystring"); [13:17] dipser: ok [13:17] dipser: ahh [13:17] skampler: dipser: parse(url, true).query will also give you the object [13:17] SamNZ: var sid = qs.parse(url.parse(req.url).query).sid; [13:18] SamNZ: request.url* [13:18] dipser: so much ways.. [13:19] dipser: such an overflow of information... [13:23] bvleur has joined the channel [13:23] jherdman has joined the channel [13:25] stagas has joined the channel [13:27] SamNZ: does node have a built in module to parse JSON? [13:27] PyroPeter: yes [13:27] PyroPeter: JSON.parse [13:27] PyroPeter: and JSON.stringify [13:27] aheckmann has joined the channel [13:28] skampler: eval :) [13:28] SamNZ: Do I need to require it? [13:28] PyroPeter: no [13:28] SamNZ: Oh cool [13:28] SamNZ: Does JSON.parse use eval? [13:28] PyroPeter: its also not documented, I just found it somewhere in the mailinglist, so I dont know about further arguments [13:29] PyroPeter: I don't know, but it is pretty strict on the formatting [13:29] PyroPeter: e.g. [1,2,3,] yields an error [13:29] SamNZ: That's ok tho [13:30] SamNZ: It's just I want to pass a JSON object to the server in a querystring [13:30] SamNZ: So I don't want to use eval [13:31] omarkj: JSON.parse (most probably) uses eval, but it's fine. [13:33] robinduckett has joined the channel [13:34] jamescarr has joined the channel [13:37] _announcer: Twitter: "Gonna finish off my node.js project tonight I reckon." -- Jim Neath. http://twitter.com/jimneath/status/20304878580 [13:38] bradleymeck_: samnz it does not use eval internally [13:38] SamNZ: oh thanks, that's good [13:39] mAritz: bradleymeck_: god damnit, i was just looking at the sources to find it out. [13:39] bradleymeck_: bwahahahaha [13:39] davidwalsh has joined the channel [13:39] mAritz: it's in deps/v8/src/json.js, right? [13:40] SamNZ: Is it alright to use flat files to store data with node instead of a database [13:40] SamNZ: Since it's non-blocking [13:40] mAritz: what is "alright"? [13:40] bradleymeck_: yea [13:40] SamNZ: alright = ok [13:41] mAritz: that's still an adjective :P [13:41] robind has joined the channel [13:41] FransWillem: SamNZ: Hell no it isn't, what if you change a file twice before the callback of the first occurs? what if you remove a file just while a stat is returning ? [13:41] FransWillem: SamNZ: Hell no it isn't, what if you change a file twice before the callback of the first occurs? what if you remove a file just while a stat is returning ? [13:41] FransWillem: err, sorry for that [13:42] christkv has joined the channel [13:42] SamNZ: hmm [13:42] zemanel has joined the channel [13:42] bvleur has joined the channel [13:42] JimBastard has joined the channel [13:43] christkv: Question: Does anybody know if it's possible to instantiate RegExp objects in C++ ? [13:43] JimBastard: double rainbow achieved in node.js, http://maraksquires.com/doublerainbow/ [13:43] christkv: I can't seem to find a V8 ref anywhere [13:43] SamNZ: JimBastard: oooo shiny [13:44] zemanel: JimBastard, gratz [13:44] FransWillem: christkv: What kind of reference are you looking for ? [13:44] JimBastard: SamNZ: the trick is to only use high grade leprechauns and unicorns [13:44] JimBastard: then you grid them into a fine paste and apply to node [13:44] JimBastard: /s/grid/grind [13:44] SamNZ: Oh crap, I've been using budget leprechauns [13:45] JimBastard: yeah it wont go all sparkly with that [13:45] JimBastard: just a flat rainbow [13:45] JimBastard: i had that problem the other day [13:45] SamNZ: nah its just grey and khaki [13:45] zemanel: JimBastard, i loaded that on my browser and my life still sucks... needs moar lepricons [13:45] christkv: @FransWillem Well I'm writing a BSON parser for the mongo driver in C++ and one of the types of BSON is a RegExp but I can't seem to find a way to instantiate a JS RegExp object to return to the V8 runtime [13:45] JimBastard: http://github.com/Marak/colors.js/blob/master/colors.js#L37 [13:46] JimBastard: basic rainbow code [13:48] robinduckett: fuck everyone in ##windows-server. [13:48] robinduckett: goodnight. [13:48] zemanel: another happy microsoft customer [13:48] ericclemmons has joined the channel [13:49] pzich: indeed [13:49] FransWillem: Does anyone know how to profile node? [13:49] SamNZ: nope [13:50] ericclemmons: What sort of profiling are you looking for? Memory usage? Script/process execution times? etc.? [13:51] mAritz: FransWillem: I believe you could try to use the default V8 profiling. [13:51] micheil has joined the channel [13:51] SamNZ: hey micheil [13:52] micheil: sam.. hmm.. mulqueen? [13:52] pengwynn has joined the channel [13:52] micheil: hey SamNZ [13:52] SamNZ: miksago? [13:52] micheil: yup [13:52] rnewson: getting EADDRINUSE a lot with 0.1.102. I can't track it down. [13:52] SamNZ: sumopiggy [13:52] micheil: yeah [13:52] SamNZ: hows going [13:52] micheil: morning pengwynn [13:52] SamNZ: it [13:52] micheil: SamNZ: not too bad [13:53] quirkey has joined the channel [13:54] _announcer: Twitter: "Learn more about #Node.js and #Javascript at the next London #Ajax UG @skillsmatter next Tuesday http://bit.ly/a7JBQX" -- ruxandraluta. http://twitter.com/ruxandraskills/status/20305985686 [13:55] JimBastard: rnewson: you are prob trying to create additional servers on the same port [13:55] rnewson: JimBastard: I'm trying to figure out if its me, nodeload or node.js. or possibly ghosts. [13:55] JimBastard: whats nodeload do again [13:56] rnewson: it's a http perf testing framework. quite cool, has a few rough corners. [13:56] technoweenie: damnit, thats what i named the github download server [13:56] rnewson: hehe, yes, noticed that. [13:56] _announcer: Twitter: "www.neeraj.name - Get started with nodejs in steps: http://neeraj.name/2010/03/25/getting-started-with-nodejs-in-s... http://bit.ly/c20kpP" -- Matthew Hammond. http://twitter.com/emptyhammond/status/20306142719 [13:56] rnewson: http://github.com/benschmaus/nodeload [13:57] technoweenie: http://www.nodeload.com/ [13:57] technoweenie: http://nodeload.github.com/ [13:57] rnewson: oh no there's two of them [13:57] JimBastard: THERE CAN ONLY BE ONE [13:57] ericclemmons: I'll create a node-load repo just to ruin github search [13:58] JimBastard: ericclemmons: github search was ruined a long time ago [13:58] ericclemmons: true :) [13:58] rnewson: a project called nodelode would also be awesome [13:58] JimBastard: you are better off searching for projects via autosuggest api [13:59] sechrist has joined the channel [14:00] wattz: my c++ node mysql driver development has started. [14:00] jchris has joined the channel [14:00] wattz: and i want to give shouts to JimBastard for just being so damn handsome! [14:01] ericclemmons: O.o [14:02] wattz: ya hurd meh [14:02] daniellindsley has joined the channel [14:02] wattz: so here is what i was thinking though, the mysql c++ driver would not be async, but i would write a js library that would wrap it up async style [14:03] pengwynn_ has joined the channel [14:04] jchris has joined the channel [14:04] jchris has joined the channel [14:04] FransWillem: Anyone interested in the Adaptive Huffman I wrote for Node.js ? [14:04] SamNZ: What's that? [14:04] FransWillem: Very simple compression [14:05] wattz: sounds cool [14:05] wattz: FransWillem: built on gzip? [14:05] wattz: compression on delivery? [14:05] FransWillem: No, built from scratch :p [14:05] FransWillem: Just compression for strings [14:05] _mythz has joined the channel [14:05] FransWillem: Takes a string, turns it into a base64-encoded blob, and if there's lots of repeating characters, will make it a bit smaller :p [14:06] wattz: ahh [14:06] wattz: eh, what does mysql store it's db files as? [14:06] FransWillem: http://en.wikipedia.org/wiki/Huffman_coding [14:06] wattz: (off topic sorry) [14:07] wattz: after i finally finish this mysql driver i want to write a blowfish module for node :D [14:07] ericclemmons: Use it for sending inline images in IMG tags + a client-side script for decompression :P [14:07] bradleymeck_: with the proper count dictionary/tree huffman is the ideal encoding [14:08] mattvermaak has joined the channel [14:08] jakehow has joined the channel [14:09] jherdman has joined the channel [14:09] voxpelli has joined the channel [14:09] FransWillem: bradleymeck_: It's actually adaptive huffman, so the first few lines will be horribly encoded, but the more you send, the better it gets :) [14:11] gf3 has joined the channel [14:11] FransWillem: bradleymeck_: Planned on using it for my IPC library, seeing as there's loads of repeating elements there (JSON data with a lot of numbers), but I feel it's too slow :( (Only manages about 160kbps compression, 151kbps decompression) [14:11] Draggor: Is there an example of nodejs dealing with file uploads somewhere? [14:11] pengwynn has joined the channel [14:12] bradleymeck_: node-formidable does it [14:12] TomY has joined the channel [14:12] c4milo has joined the channel [14:13] Draggor: bradleymeck_: thanks [14:13] pufuwozu has joined the channel [14:17] borior: hi all, I'm quite confused: am I right in thinking that I'll have problems if I create an http server and try and use http.createClient to read from that server within the same process? [14:18] FransWillem: borior: Why would that cause problems ? [14:20] jchris has joined the channel [14:20] borior: FransWillem: it just seems to block, and the httpClient#request method never emits 'response' [14:20] borior: I'm writing a reduced testcase now [14:20] shimondoodkin has joined the channel [14:20] aniero: borior: no, there should be no problem [14:20] aniero: i'm doing it for testing something [14:21] aniero: borior: make sure you call end() on the request [14:21] borior: aniero: that's why I need to do it. [14:21] borior: FransWillem: aniero: what am I doing wrong in http://gist.github.com/508199 [14:21] aniero: borior: req.end() for your http request [14:22] borior: aniero: aaaargh! [14:22] borior: thank you! [14:22] aniero: :) [14:22] borior: i knew it would be something stupid like that [14:23] jherdman has joined the channel [14:23] borior: wheeeee, and my tests pass! [14:23] borior: =) [14:23] wattz: so you don't have aid!? [14:23] wattz: :D [14:23] SamuraiJack has joined the channel [14:24] ceej has joined the channel [14:25] loincloth has joined the channel [14:27] shimondoodkin: i need to modify an SVG image and convert it to jpg on the fly, any suggestions about how to do it? ( maybe javascript libraries that work with node or linux command line application... ) [14:27] SamNZ: You could use canvas [14:27] MrNibbles: does fs cache data? [14:28] ajpiano has joined the channel [14:28] slaskis has joined the channel [14:28] MrNibbles: either that or my file system is.. only basing this on read times [14:28] shimondoodkin: i need to send it to sell phone web browser [14:29] shimondoodkin: sed /sell/cell/ [14:29] james has joined the channel [14:29] SamNZ: http://www.nihilogic.dk/labs/canvas2image/ [14:30] _announcer: Twitter: "Node.js server side javascript http://icio.us/vknkyr" -- Senad Uka. http://twitter.com/senaduka/status/20308423392 [14:30] SamNZ: probably not quite what you're looking for, but might be helpful [14:31] jherdman has joined the channel [14:31] pufuwozu has joined the channel [14:31] shimondoodkin: ok. thank you, it might be helpful later, because node does not has canvas , canvas is an object of a browser [14:32] podman has joined the channel [14:32] podman: morning [14:32] pgriess has joined the channel [14:34] _figital has joined the channel [14:34] ThePub has joined the channel [14:34] wattz: hi [14:35] ThePub has joined the channel [14:36] _announcer: Twitter: "what's the HTTP router among the cool kids for NodeJS? been looking at Connect…it's nice in some ways, annoying in others" -- Ryan Kennedy. http://twitter.com/rckenned/status/20308898104 [14:37] [[zz]] has joined the channel [14:37] nefD: shimondoodkin: You might want to look into the ImageMagick wrappers for node [14:37] astrolin has joined the channel [14:37] maushu: Hmm, if I keep like this I will only release my project when ryah reaches 1.0 (as in never). [14:37] nefD: shimondoodkin: Dunno if theres any built-in or example scripts out there for converting svg data to imagick instructions, though [14:38] maushu: shimondoodkin: Use imagemagick, you can use the script facilities of it or just command line. [14:38] _announcer: Twitter: "Node.js at 30,000 feet http://bit.ly/aDOGTG discussed by @dgentry. Denny's got a gift for making tricky details easy to understand" -- Mark Essel. http://twitter.com/VictusFate/status/20309007667 [14:38] shimondoodkin: ok thanks ill try [14:39] maushu: "Note that SVG is a complex specification and support for the specification in ImageMagick is not complete." [14:39] shimondoodkin: i know chrome uses cairio [14:40] shimondoodkin: i hope it will wirk i need something simple like to mix some text fonts and images [14:40] shimondoodkin: s/wirk/work/ [14:42] littlebir has joined the channel [14:42] maushu: Can't find any port or interface for cairo. Sorry. [14:43] nefD: imagick is certainly capable of producing graphics, its just that the svn interpreting is not fully complete yet [14:43] ryan_gahl has joined the channel [14:44] JimBastard has joined the channel [14:44] JimBastard has joined the channel [14:44] knuckolls has joined the channel [14:47] ashleydev has joined the channel [14:48] jchris1 has joined the channel [14:48] bradleymeck_: !tweet @rckenned im sure the connect ppl would love to know whats annoying to see if they can fix it [14:50] softdrink has joined the channel [14:51] hpoydar has joined the channel [14:51] pufuwozu has joined the channel [14:51] jchris has joined the channel [14:51] jbrantly has joined the channel [14:51] oberhamsi has joined the channel [14:52] oberhamsi has left the channel [14:52] jchris has left the channel [14:52] pgriess has joined the channel [14:55] FransWillem: If anyone wants to give it a shot to further optimize my Huffman encoder, see http://www.github.com/Frans-Willem/NodeHuffman [14:55] proppy has joined the channel [14:55] proppy: does someone has this issue with node-inspector ? [14:55] proppy: http://github.com/dannycoates/node-inspector/issues#issue/3 [14:55] proppy: return new Hash(hash); [14:55] SamNZ: shimondoodkin: I guess you could write a client which long polls the node server, waiting for an SVG to put on a canvas, convert into jpg and send back to the server. I dont know how practical that'd be tho [14:55] proppy: TypeError: undefined is not a function [14:56] shimondoodkin: SamNZ: :) [14:57] Yuffster has joined the channel [14:57] wilmoore has joined the channel [14:57] shimondoodkin: i am thinking about rewriting pycairo http://www.tortall.net/mu/wiki/CairoTutorial [14:57] matt_c_ has joined the channel [14:57] shimondoodkin: because cairo is fast [14:58] shimondoodkin: but maybe for not just use the imagemagick for now becuse it is probably fast enough [14:59] proppy: maybe crypto module api has changed [15:05] V1 has joined the channel [15:05] proppy: ah node was missing openssl support :) [15:05] matclayton has joined the channel [15:06] dnolen has joined the channel [15:06] SamNZ: mm [15:08] Yuffster has joined the channel [15:08] paul_irish has joined the channel [15:09] JimBastard has joined the channel [15:09] JimBastard: did base64 string encoding ever make it into core? [15:09] JimBastard: if so does anyone know the simple api command to call it [15:10] SamNZ: What's a good database to use to store simple JSON objects with node.js? [15:10] bradleymeck_: nStore is easy to set up, but be sure to give it a compactor function if its not a temp db [15:10] FransWillem: SamNZ: CouchDB uses JSON natively, but I'm sure you could also use Redis or something like that [15:11] robotarmy: morning [15:12] joshbuddy has joined the channel [15:12] tekky: JimBastard: http://nodejs.org/changelog.html <- for buffers it appears [15:12] rsms has joined the channel [15:12] ben_alman has joined the channel [15:12] SamNZ: JimBastard: http://github.com/danwrong/restler/raw/master/lib/vendor/base64.js [15:13] technoweenie: couch uses json natively, mongo uses bson natively [15:13] technoweenie: riak supports anything, but lets you run javascript map reduce jobs over json data [15:14] SamNZ: hmm [15:15] romainhuet_ has joined the channel [15:17] daniellindsley has joined the channel [15:17] jesusabdullah: I've never heard of bson :S [15:17] jesusabdullah: huh! [15:18] SamNZ: I've heard of it, dont know what it is tho [15:18] SamNZ: Wonder what the B stands for [15:18] jesusabdullah: Apparently it's a binary counterpart to json [15:18] SamNZ: oh [15:18] jesusabdullah: thx wikipedia! [15:20] SamNZ: I might check riak out [15:20] ryan_gahl: mongo for high-speed writes (memory resident data)... couch for durability/consistency (i.e. depends on your needs) [15:20] ryan_gahl: riak for large-ass datasets and uber scalability [15:20] SamNZ: Oh [15:20] steadicat has joined the channel [15:20] aniero: riak only scales so far :) [15:20] TomY has joined the channel [15:20] ryan_gahl: true [15:20] ryan_gahl: only to 19 TB or so [15:21] jesusabdullah: couch looks my speed [15:21] jesusabdullah: :) [15:21] ryan_gahl: I <3 couch [15:21] aniero: what about redis? [15:22] jesusabdullah: Tainted by vmware, obviously ;) [15:22] aniero: haha [15:22] jesusabdullah: More seriously: I think they're all pretty rad, though I can't speak from experience [15:22] aniero: i'm looking forward to seeing how redis cluster works [15:22] ryan_gahl: i can't get into redis, but many here swear by it [15:22] aniero: i speak from experience: mongo can sukkit :P [15:22] SamNZ: I have couch, but I dont know the default username and password XD [15:22] jesusabdullah: The rest-ish action going on with couch is pretty thorough though [15:23] jesusabdullah: and impressive! [15:23] aniero: mongo works, but it wasn't built with data integrity in mind (or read consistency, for that matter), so... [15:23] aniero: if you have a postback action in an app -- post to update something, then get to read it back out -- you're not guaranteed to see your updates until mongo gets around to fsyncing [15:23] ryan_gahl: yeah, their whole approach to durability is "make sure you have enough nodes running" [15:24] jesusabdullah: If you don't need it though... [15:24] tekky: if mongo does even care about read consistency then what purpose was it written for? [15:24] ryan_gahl: so IMHO it's better as a sort of memcached alternative [15:24] aniero: tekky: high volume writes [15:24] technoweenie: aniero: how far does riak scale [15:24] technoweenie: aniero: also defiler was asking about it. i didnt know anyone in our clique that used it [15:24] aniero: technoweenie: you'd have to check with copious, he's looking into what datastore we can use next in our environment here (1 billion documents) [15:25] elliottkember has joined the channel [15:25] richcollins has joined the channel [15:25] aniero: riak sounds *awesome* but from what i gathered, the memory requirements were prohibitive with the number/size of keys we have [15:25] jesusabdullah: When I hear someone refer to documents, I always think, like [15:25] jesusabdullah: word docs [15:25] dylang has joined the channel [15:25] ryan_gahl: lol [15:25] tjgillies: couchdb is the only db where you don't need an application stack to build apps ;) [15:25] jesusabdullah: and I'm like, "try some hard drives" [15:25] zaach has joined the channel [15:25] technoweenie: riak memory requirements? [15:25] technoweenie: does riak use a ton of memory? [15:25] jesusabdullah: tjgillies: which is pretty rad! [15:25] lejoe has joined the channel [15:25] jesusabdullah: saw something the other day [15:26] jesusabdullah: CRIPES [15:26] jesusabdullah: It's not open [15:26] technoweenie: tjgillies: on the flipside, you *have* to use their app stack or suffer making slow http calls for everything [15:26] jesusabdullah: but it was about writing client-side javascript that interfaced directly with the couch without any server-side layer [15:26] tjgillies: whats not open? [15:26] jesusabdullah: really neat [15:26] jesusabdullah: Oh, a web page [15:26] aniero: technoweenie: i think the riak keyspace has to be memory-resident [15:27] SamNZ: jesusabdullah: I was wondering whether that'd be possible [15:27] technoweenie: aniero: are you sure? i havent heard that. hmm [15:27] aniero: technoweenie: i'm not sure, heh :P [15:27] tjgillies: technoweenie, "slow" http calls? http socket connects to localhost aren't that slow [15:27] ben_alman has joined the channel [15:27] jesusabdullah: SamNZ: Why wouldn't it be? The entire interface is just http post/get right? [15:27] ryah: good morning [15:27] jesusabdullah: G'morn [15:28] aniero: technoweenie: worth looking into. i'm *really* curious about the new redis stuff, with virtual memory for the keyspace [15:28] ryan_gahl: 11,00•12,00technoweenie11,00• "slow" http calls to fetch data from the client are still faster than the same http calls to the server which then proxies to the db via a "fast" native binding :) -- i.e. the http interface is meant to be consumed by clients [15:28] aniero: technoweenie: and looking forward to seeing what antirez does for redis cluster [15:28] tjgillies: jesusabdullah, yeah they want to make a version of couch that will run in a mobile browser, well at least the JSON blob [15:28] jchris has joined the channel [15:28] jesusabdullah: hehe, "blob" [15:28] ben_alman has joined the channel [15:29] tjgillies: well the whole app is just one big json object [15:29] jesusabdullah: For my uses, nStore has pretty much hit the sweet spot so far <_< [15:29] technoweenie: ryan_gahl: yes, you're forced to use couchdb natively from their app stack [15:29] ben_alman has joined the channel [15:29] ryan_gahl: 11,00•12,00technoweenie11,00• no, you're not [15:29] ryan_gahl: lol [15:29] jesusabdullah: *sigh* pandooooraaaaaa [15:30] technoweenie: lol yea [15:30] jesusabdullah: Telling about Criss Angel season 6 AGAIN [15:30] jesusabdullah: Your FACE is out of a movie, CRISS [15:30] jesusabdullah: a HORROR movie [15:30] jesusabdullah: fucker [15:30] jesusabdullah: ..sorry [15:30] technoweenie: aniero: yea, who knows when redis cluster will be out [15:30] jesusabdullah: back on topic [15:30] ryan_gahl: you can use the http interface right from the client, so, not sure how that == you're forced to not do that [15:31] technoweenie: isnt that their app stack [15:31] technoweenie: html pages that hit couchdb from the browser [15:31] ryan_gahl: hmm, maybe a miscommunication [15:31] technoweenie: i'm not saying thats slow [15:31] tjgillies: technoweenie, well considering their app stack *is* the database, i don't see any way around that ;) [15:31] technoweenie: right, thats fine [15:32] technoweenie: evently or whatever is really cool shit [15:32] jesusabdullah: I'd imagine that technically, the db is *just* the data [15:32] technoweenie: hows that handle authentication though [15:32] ryan_gahl: yeah, i guess I thought you were saying "app stack" to mean something other than the http interface [15:32] jesusabdullah: and any way to access it is "app stack" [15:32] tjgillies: im still wrapping my head around evently, i still just use plain jquery [15:32] technoweenie: i guess you log in through couch [15:32] jesusabdullah: but I'm certainly no expert! [15:32] SamNZ: evently? [15:32] tjgillies: technoweenie, it uses the couch auth stack [15:32] technoweenie: i'm saying you're forced to do that, because doing it in a separate server and making http calls is slow [15:32] nefD: lol jesusabdullah.. i like to think criss angel and david blaine have girl fights when they see each other on the streets of vegas [15:32] jesusabdullah: I'm kinda imagining this literal couch that makes you present ID before you sit down [15:33] nefD: "Hello.. CRISS", "...David!" [15:33] maushu: couchdb? [15:33] jesusabdullah: "upbupbup are you AUTHORIZED" "but I'm so TIARD" [15:33] jesusabdullah: nefD: Totally! [15:33] pquerna: kinda random question. has anyone actually left a node process running for like a month :x [15:33] pquerna: how does the GC work out for long running proceses [15:33] bradleymeck_: i have had frankie stay up for a couple weeks [15:34] pquerna: is kinda wher ei'm going. [15:34] jbrantly has joined the channel [15:34] technoweenie: aniero: searches about riak inmemory keyspace arent giving me good results :) [15:34] _announcer: Twitter: "Can anyone help me with my n00by Js / xml query? http://stackoverflow.com/questions/3399565/jquery-count-node-separation-in-xml" -- Jack Appleby. http://twitter.com/jackappleby/status/20312817045 [15:34] tjgillies: technoweenie, whats riak built on? [15:34] jesusabdullah: (riak and roll) [15:34] aniero: technoweenie: yeah, same. had a chat with a coworker just now (copious is out of town) and he seems to recall that the problem was the back-of-the-envelope sizing calculations to support our predicted future storage needs would require a hundred servers [15:35] technoweenie: tjgillies: erlang and pluggable key/value backends [15:35] jesusabdullah: ACTION is a BARREL of lulz this morning :C [15:35] technoweenie: aniero: oh hard drive memory [15:35] bradleymeck_: of there an opinion on converting c function signature w/ pass by reference values to js (ie callbacks/vs array return) [15:35] aniero: technoweenie: no, RAM memory. disk isn't a problem with huge storage drawers [15:35] aniero: technoweenie: and that sounds about right. i don't think he's given up on it yet, but it sounds like riak and cassandra are the only stores he's considering right now [15:35] jesusabdullah: aniero: Who do you work for? What do they do? [15:36] tjgillies: erlang is pretty nice, lots of epic apps are being built on it [15:36] technoweenie: couch is erlang too [15:36] tjgillies: ACTION nods [15:36] jesusabdullah: disco is erlang [15:36] tjgillies: what is disco? [15:36] jesusabdullah: it's a mapreduce framework [15:36] aniero: jesusabdullah: collective intellect, we do text analytics on social media for market research [15:36] jesusabdullah: saw it at scipy! [15:36] tjgillies: MapReduce is the hawtness right now [15:36] jesusabdullah: You actually write the yobs in python, but it uses erlang in the backend [15:37] jesusabdullah: Yeah [15:37] jesusabdullah: Still wanna do nodejs mapreduce [15:37] pquerna: cassandra <3 [15:37] technoweenie: aniero: http://blog.mozilla.com/data/2010/05/18/riak-and-cassandra-and-hbase-oh-my/ [15:37] jesusabdullah: Actually, the more I use node the more awesome I think that would be [15:37] nefD: "Increase organic growth by exposing audiences to the brand through breakthrough viral communications" [15:37] tjgillies: jesusabdullah, couchdb does javascript mapreduce [15:37] jesusabdullah: Yeah, but in a specific context right? [15:37] tjgillies: yeah [15:37] aniero: technoweenie: ohh yeah, that's a great article [15:37] nefD: "Provide brand ambassadors with compelling conversation hooks to enter into communities and fuel advocacy " [15:37] jesusabdullah: Like, "do some things with this json" right? [15:38] technoweenie: "Riak — Also much lighter on memory requirements." [15:38] technoweenie: though they mean lighter than hbase [15:38] technoweenie: and give no details [15:38] jesusabdullah: With node's ability to spawn processes easily, I could do all kinds of crazy stuff [15:38] aniero: technoweenie: what are you looking to do with it? [15:38] jesusabdullah: like run matlab! [15:38] technoweenie: interesting though [15:38] technoweenie: aniero: ah maybe store event timeline crap in it [15:39] aniero: technoweenie: it's really a data size thing. when you start doing capacity planning for 10 billion of *anything*, it's hard [15:39] jesusabdullah: I should look at how couch does it though <_< [15:39] tjholowaychuk has joined the channel [15:39] aniero: technoweenie: cool. wonder what kind of rollups you'd want to do for that sort of thing... [15:39] tjgillies: jesusabdullah, function(doc){ emit(null,doc); } creates a map with null as key and JSON document as value [15:40] technoweenie: aniero: yea i can imagine. [15:40] technoweenie: well no i cant [15:40] aniero: technoweenie: for personal projects i have all these nosql hammers but i don't know what nails to hit! [15:40] jesusabdullah: tjgillies: You would do multiple emits to do a more complex map? [15:40] ryan_gahl: 11,00•12,00aniero11,00• have you evaluated VoltDB or OrientDB yet? [15:40] tjgillies: jesusabdullah, yes [15:40] jesusabdullah: tjgillies: Can you do anything to get your maps to map? [15:40] tjgillies: jesusabdullah, maps to map? [15:40] arlolra has joined the channel [15:40] technoweenie: volts all in memory isnt it [15:41] technoweenie: hm gotta run [15:41] jesusabdullah: Yeah. Sometimes, for hard problems, you want to map your problem to steps that split it up further [15:41] jesusabdullah: and then have those reduce, and pass the reduced sub-results to another reduce that brings them all together [15:41] jesusabdullah: Probably a bit OP for couch to have built-in [15:41] jesusabdullah: still! [15:42] hansek has joined the channel [15:42] jesusabdullah: Man [15:42] jesusabdullah: I kinda want that word doc "database" now XD [15:43] jesusabdullah: aka, ftp server I guess :/ [15:43] joshbuddy has joined the channel [15:43] aniero: ryan_gahl: not sure, since i'm not the one doing the evaluations! but voltdb is SQL/RDBMS... we just need key/value store [15:43] _announcer: Twitter: "[del] [from ctaskiran] Things I learned from my Node.js experiment - Jeff Kreeftmeijer: IMP: Do this to develop a http://url4.eu/6k6EA" -- sldfjd ldajds. http://twitter.com/sldfjd/status/20313467820 [15:44] jesusabdullah: That made all sorts of sense. :( [15:44] aniero: ryan_gahl: i'll pass on orientdb though, worth a look. thanks! [15:44] tmpvar_ has joined the channel [15:45] ryan_gahl: yeah i know it's rdbms - wasn't sure if K/V was a strict requirement, just artifacts of some research I've been doing [15:45] ryan_gahl: np [15:46] ryan_gahl: I know both are java dependent, thus won't have as big of a following as the other ones that have been mentioned [15:48] jetienne has joined the channel [15:48] aniero: not a strict requirement... right now the data's just xml though [15:48] mw has joined the channel [15:49] robotarmy: dude - that ad click through service is massively busted [15:49] SamNZ: ACTION yawns [15:49] mw has joined the channel [15:49] ryan_gahl: ACTION slaps SamNZ with a dead trout [15:50] streampunk has joined the channel [15:50] tmpvar has joined the channel [15:50] SamNZ: It's 10 minutes to 4 AM [15:50] SamNZ: -.- [15:50] elliottkember: SamNZ: Whereabouts are you in NZ? [15:50] maushu: robotarmy: ad click through service? [15:51] SamNZ: Dunedin [15:51] ryan_gahl: you should move to the US, it's only ten to 11am here [15:51] _announcer: Twitter: "Coding Relic: node.js from 30,000 feet http://bit.ly/bsf8xX « wherein we shamelessly ogle node.js." -- Denton Gentry. http://twitter.com/dgentry/status/20313974081 [15:51] blowery: ten to noon here [15:51] robotarmy: NZ rocks [15:51] robotarmy: i would move from US to NZ [15:51] elliottkember: SamNZ: ah, good stuff - I come from Auckland, but currently in the UK [15:51] mw has joined the channel [15:52] ryan_gahl: true, if I moved to NZ, I could go to bed now [15:52] SamNZ: It's Thursday here now [15:52] SamNZ: You know what's weird? [15:52] SamNZ: now + here = nowhere [15:53] ryan_gahl: ACTION just had an anurism [15:53] amerine has joined the channel [15:53] robotarmy: maushu: the last link that was posted - good article - crap clickthrough [15:53] SamNZ: aaanyway [15:53] SamNZ: I'm going to sleep [15:54] SamNZ: goodbye [15:54] ryan_gahl: cya [15:54] robotarmy: SamNZ: peace [15:54] robotarmy: hey ryan_gahl i was at that redfin whatever - thanks for the talk - i introed myself in the beging to ya [15:54] robotarmy: enjoyed seeing node get some exposure [15:54] ryan_gahl: 11,00•12,00robotarmy11,00• not me [15:54] ryan_gahl: :) I get that [15:54] robotarmy: lol [15:54] ryan_gahl: you mean ryah [15:55] robotarmy: dude - i do [15:55] robotarmy: i've seen you on the mailing list thou :D [15:55] robotarmy: so i got confused [15:55] ryan_gahl: yup [15:55] ryan_gahl: well, I refuse to change my name just because he's more famous :) [15:55] [[zz]] has joined the channel [15:55] jesusabdullah: WHY ARE YOU BOTH THE SAME >:O [15:56] maushu: robotarmy: You mean the url4.eu one? [15:56] robotarmy: maushu: yah [15:58] pufuwozu has joined the channel [16:01] james20371 has joined the channel [16:01] steadicat has joined the channel [16:01] benburkert has joined the channel [16:04] knuckolls has joined the channel [16:04] markwubben has joined the channel [16:05] paul_irish has joined the channel [16:05] mikeal has joined the channel [16:09] marshall_law has joined the channel [16:10] cardona507 has joined the channel [16:14] _announcer: Twitter: "Ryan release v0.2 of my MySQL me for node.js: I sequelize # # # MySQL nodejs" [ga] -- Sascha Depold. http://twitter.com/sdepold/status/20315560011 [16:14] richardhodgson has joined the channel [16:15] feydr has joined the channel [16:15] TomY: hey kriszyp, is there anywhere I can check out the source for http://code.google.com/p/jsonschema/ ? [16:16] deepthawtz has joined the channel [16:16] _announcer: Twitter: "nodius maximus # nodejs" [pt] -- Dylan Clendenin. http://twitter.com/deepthawtz/status/20315713113 [16:18] deepthawtz: hey noders, what is everyone using for CI? [16:19] jesusabdullah: continuous integration? [16:19] _announcer: Twitter: "Interesting. The majority of search terms that lead people to http://asyncjs.com involve #NodeJS in one way or another." -- Async. http://twitter.com/asyncjs/status/20315874729 [16:19] jesusabdullah: I think expresso can play nice with CI-joe [16:19] deepthawtz: jesusabdullah: yup [16:19] tjholowaychuk: sure can [16:19] jesusabdullah: but none of my projects have really been of a level such that I would need either [16:20] nefD: ci? [16:20] jesusabdullah: I'd probably go with that though. Both projects look pretty rad! [16:20] tjholowaychuk: CI is somewhat useless with a small team, I test every commit before a push anyways [16:21] kriszyp: TomY: if you are going to use it for node, you should get it from github.com/kriszyp/commonjs-utils [16:21] TomY: kriszyp, cool thaks [16:21] TomY: thanks even [16:21] TomY: does it follow references? [16:21] nefD: what is ci? [16:21] borior: hey again. is anyone here using coffeescript's node integration? it looks a little like require.registerExtension is broken: http://gist.github.com/508381 [16:21] deepthawtz: continuous integration nefD [16:21] nefD: ah [16:22] tjholowaychuk: nefD: http://ec2-75-101-226-182.compute-1.amazonaws.com:8889/express [16:22] TomY: kriszyp, does it follow references? [16:22] nefD: ah, neat.. just started looking into using express the other day, speaking of :P [16:23] jesusabdullah: borior: I've used coffeescript w/ node, but I don't think my little bit of experience can shed any light on that. Have you tried hitting up coffeescript's issues page on github? [16:23] kriszyp: TomY: no, it doesn't implement the hyper part of json schema [16:23] ericclemmons: TJ, what stack are you using for your CI there? [16:23] kriszyp: the perstore/pintura packages deal with RESTful aspects of leveraging hyper schema though [16:23] TomY: kriszyp, will check it out, thanks [16:23] chrischris has joined the channel [16:24] tjholowaychuk: ericclemmons: its an express app [16:24] ericclemmons: ACTION looks for it [16:24] tjholowaychuk: its not OSS :p [16:24] ericclemmons: I totally recognize the theme :) [16:24] ericclemmons: (yet) [16:24] mape: tjholowaychuk: ejs faster now? :) or just test coverage bumped? [16:24] jbrantly1 has joined the channel [16:25] tjholowaychuk: mape: both :) I was to lazy to fix it but got a patch from ashleydev [16:25] tjholowaychuk: its not the lame resig thing anymore haha [16:25] borior: jesusabdullah: just having a look at the node source but that's my next stop [16:25] bpot has joined the channel [16:25] mape: tjholowaychuk: ah nice, how much faster? [16:25] tjholowaychuk: compilation of the templates to js does not matter much as far as performance goes anyways [16:25] tjholowaychuk: not sure [16:26] tjholowaychuk: but 5000 render calls to a small template was ~30ms [16:26] tjholowaychuk: but once compiled it is the same as something like jade [16:28] rauchg_ has joined the channel [16:29] technoweenie has joined the channel [16:30] rauchg_: hi technoweenie [16:30] technoweenie: hi [16:30] mape: tjholowaychuk: k nice [16:30] dmcquay has joined the channel [16:32] feroz_ has joined the channel [16:34] jchris has joined the channel [16:34] technoweenie: tjgillies: are you in portland [16:35] tjgillies: technoweenie, yeah, north portland [16:35] technoweenie: yea ok, i thought your name sounded familiar [16:35] tjgillies: technoweenie, i work for readwriteweb [16:35] technoweenie: cool [16:36] podman: i think it's time to start playing with websockets [16:36] tjgillies: podman, socket.io is a good websocket module [16:37] tjgillies: it has fallback transport support for flash and xhr [16:37] podman: i have a node.js server collecting analytics data for video play back and sending it to mongodb [16:37] podman: but i think it would be cool to see it in real time [16:38] rauchg_: mongodb is great for realtime [16:38] micheil: redis is probably better [16:38] micheil: depends what you're storing [16:38] podman: rauchg_, yup it's working pretty well [16:39] rnewson has joined the channel [16:39] micheil: gilt groupe use mongodb with their hummingbird analytics app [16:39] podman: micheil, i'm doing something similar [16:39] podman: i kind of modeled my app on theirs [16:39] micheil: podman: also, as for websockets, if you know the browsers / clients will support websockets, try node-websocket-server [16:39] silentrob has joined the channel [16:40] podman: micheil, it's really more for me to get an idea of what is going on with our system [16:40] podman: how many plays, where they are coming from, etc [16:40] micheil: probably best to use something like pusherapp maybe, and have the server listen to the websockets [16:41] micheil: then have the client do either a simple post or Get request to record a track [16:41] podman: well, i've already got all of the tracking built [16:41] podman: the app works fine as is [16:42] podman: i just want some eyecandy for myself [16:42] micheil: ah [16:42] podman: and possibly give it to users in the future [16:43] micheil: in which case you could probably forget about needing fallbacks, as you'd know the browser you'd be connecting with [16:43] podman: (i'll have to see what kind of overhead it adds [16:43] podman: ) [16:45] podman: micheil, so you'd suggest http://github.com/miksago/node-websocket-server ? [16:45] micheil: yes [16:45] podman: ok, cool. i'll look into it [16:46] aniero: podman: look at socket.io [16:46] micheil: although, I am biased [16:46] micheil: ACTION is the author of node-websocket-server [16:46] podman: :) [16:46] podman: maybe i'll look at socket.io though, in case i do release this as a user feature [16:46] aniero: micheil: haha :) [16:46] aniero: podman: http://jeffkreeftmeijer.com/2010/things-i-learned-from-my-node.js-experiment/ [16:47] micheil: rauchg_: have you announced that thing you told me about re sokcets.io? [16:47] rauchg_: not yet [16:47] podman: aniero, i think i saw that [16:47] podman: was that the thing with all the mice? [16:47] rauchg_: but it's gonna happen [16:48] aniero: podman: haha, well, you have the authors of both projects *right here*, so any questions you have ... :) [16:48] podman: awesome [16:48] micheil: rauchg_: okay [16:49] micheil: I'm not around for much longer, heading back to bed for a bit. [16:49] podman: yeah, basically i've got a bunch of play data coming in whenever someone plays a video. like which video, which user, geo data, referrer, etc [16:49] podman: so, i thought it would be cool to add a real time visualization for that [16:49] podman: at my old company i did soemthing in flash and polling [16:49] podman: but that is ineffecient and won't scale [16:50] podman: so i figured, WebSockets! [16:50] _announcer: Twitter: "Node.js author Ryan Dahl gave a very good brief explanation of what Node.js is during his JSConf 2010 pres.: http://bit.ly/89Wklc #nodejs" -- Rupak Ganguly. http://twitter.com/rupakg/status/20317908981 [16:52] micheil: fair enough [16:52] aniero: podman: that's great, but no one has websockets yet! :P [16:52] micheil: yes they do. [16:52] podman: aniero, right, but it's just for me for now anyway [16:52] micheil: http://wiki.github.com/miksago/node-websocket-server/browser-support [16:53] javajunky has joined the channel [16:53] aniero: micheil: right, but notably lacking is the current version firefox, and IE [16:53] micheil: Chrome 5+, Chromium 5+, Safari 5+, (and Firefox 4, Opera) [16:53] aniero: micheil: so for actual usage amongst those who aren't early adopters or mac users... [16:53] rnewson has joined the channel [16:53] micheil: true, but when you hear word on IE telling us anything, tell me. [16:53] rsms has joined the channel [16:53] aniero: haha [16:53] aniero: i'm just being sarcastic, but still [16:54] micheil: just sayin' [16:54] aniero: not gonna stop me. bummed that mobile safari doesn't have websockets though :( [16:54] aniero: i really want live data streamed to my ipad! [16:54] micheil: well, mobile safari was going to support websockets, then it got pulled at last minute [16:54] podman: aniero, yeah, i guess socket.io would help since it's got flash fallback [16:55] aniero: podman: yeah. not for mobile safari though, heh! [16:55] aniero: micheil: yeah :| [16:55] podman: yeah, sad time [16:55] micheil: podman: only for the desktop, and long-polling on the iphone would hurt [16:55] jchris: the iphone browser works pretty good with the couchdb _changes feed, just subscribe to onreadystatechange [16:55] micheil: ACTION is off. [16:56] micheil: actually, that reminds me, either later today or tomorrow a new changelog episode will be released; it's on WebSockets [16:56] micheil: http://thechangelog.com [16:56] aniero: cool [16:57] micheil: rauchg_: heads up there btw. [16:57] podman: i need to improve my architecture [16:57] ryah: any patches? [16:57] ryah: going to cut a new release [16:57] podman: right now i've got mongo and node running on the same machine [16:58] podman: i want to split them out, add a mongo slave and add another node.js server and front it with haproxy [16:58] podman: :\ [16:58] richcollins has joined the channel [16:58] podman: too many machines [16:59] tjholowaychuk has joined the channel [16:59] CIA-77: node: 03isaacs 07master * r1a12148 10/ src/node_child_process.cc : SetBlocking should set blocking, not toggle it - http://bit.ly/d8irit [17:00] _announcer: Twitter: "Geddy: A modular, full-service web framework for Node.js. - http://geddyjs.org/ #geddy #node.js" -- Rupak Ganguly. http://twitter.com/rupakg/status/20318595679 [17:02] jesusabdullah: hmm [17:02] _announcer: Twitter: "http://is.gd/e2yJ7 google tech talk on node.js" [nl] -- Michael Drzal. http://twitter.com/drzal/status/20318728661 [17:03] tjholowaychuk has joined the channel [17:03] jesusabdullah: ryah: Hopefully I'm not being annoying here--I had issues building node last night, posten an issue on github. Idk if you've seen it or not <_> Anyways. I'm lost! [17:04] ryah: jesusabdullah: link? [17:04] jesusabdullah: http://github.com/ry/node/issues/issue/228 [17:04] jakehow has joined the channel [17:05] huyhong has joined the channel [17:05] jesusabdullah: ryah: ^^ [17:06] mjr_: Oh, I forgot that there was Fedora 7. [17:06] jesusabdullah: haha, I know right? :( [17:06] ryah: jesusabdullah: one sec [17:06] ryah: DoD [17:06] ryah: scary [17:06] jesusabdullah: Haha! [17:06] jesusabdullah: What's scary is how stale they let their software get :( [17:07] ryah: somehow it's something to do with the v8 build [17:07] jesusabdullah: That's part of the reason I wanted to use nodejs--I would've done everything in python, but 2.5 + no libs = sads :C [17:07] mjr_: Large institutions everywhere have that issue. [17:07] jesusabdullah: Yeah, that's about where I got stuck ryah [17:07] jesusabdullah: Yeah, def mjr_, but I think it's worse with DoD-affiliated stuff because of all the red tape in the name of security [17:08] huyhong has left the channel [17:08] ryah: jesusabdullah: it would help to have an error message [17:08] ryah: which there isn't :) [17:08] ryah: gcc -o obj/release/dtoa-config.o -c -Werror -Wno-uninitialized -m64 -O3 -fomit-frame-pointer -fdata-sections -ffunction-sections -ansi -DV8_TARGET_ARCH_X64 -DENABLE_VMSTATE_TRACKING -DENABLE_LOGGING_AND_PROFILING -DENABLE_DEBUGGER_SUPPORT -I/export/scratch/holbrook/node-v0.1.102/deps/v8/src /export/scratch/holbrook/node-v0.1.102/deps/v8/src/dtoa-config.c [17:08] ryah: scons: *** [obj/release/dtoa-config.o] Error 1 [17:08] ryah: Error 1 [17:08] ryah: swet [17:08] jesusabdullah: ryah: I copy-pasted everything I could find into that gist :( [17:08] ryah: jesusabdullah: what version of gcc? [17:08] jesusabdullah: hmm [17:08] jesusabdullah: hold on, I'll try to find out [17:08] jesusabdullah: ...how DO I find that out? [17:08] mjr_: Can you manually run that command in there to see if it errors? [17:08] ryah: gcc --version [17:08] jesusabdullah: ah [17:09] jesusabdullah: 4.1.2, apparently :S [17:09] ryah: jesusabdullah: what's your uname -a ? [17:09] jesusabdullah: mjr_: I actually did that, following the last fail-to-build issue, and it looked pretty much the same :/ [17:09] jesusabdullah: Linux mallard.arsc.edu 2.6.33-ARSC #2 SMP Mon Mar 15 12:23:22 AKDT 2010 x86_64 x86_64 x86_64 GNU/Linux [17:09] mjr_: I mean just paste that single gcc line [17:10] _announcer: Twitter: "fun thought: With NodeJS, Titanium, Phonegap, and Browsers, a DOM free JS lib can go almost anywhere :D" -- Greg Ferrell. http://twitter.com/gregferrell/status/20319197126 [17:10] jesusabdullah: mjr_: Oh, I think I see [17:10] ryah: jesusabdullah: cd build/default/deps/v8 [17:10] ryah: jesusabdullah: then run that command [17:10] ryah: gcc -o obj/release/dtoa-config.o -c -Werror -Wno-uninitialized -m64 -O3 -fomit-frame-pointer -fdata-sections -ffunction-sections -ansi -DV8_TARGET_ARCH_X64 -DENABLE_VMSTATE_TRACKING -DENABLE_LOGGING_AND_PROFILING -DENABLE_DEBUGGER_SUPPORT -I/export/scratch/holbrook/node-v0.1.102/deps/v8/src /export/scratch/holbrook/node-v0.1.102/deps/v8/src/dtoa-config.c [17:10] _announcer: Twitter: "Learning Server-Side JavaScript with Node.js | Nettuts+: http://net.tutsplus.com/tutorials/javascript-ajax/learnin... http://bit.ly/a6pqft" -- Matthew Hammond. http://twitter.com/emptyhammond/status/20319250504 [17:11] jesusabdullah: Assembler messages: [17:11] jesusabdullah: Fatal error: can't create obj/release/dtoa-config.o: No such file or directory [17:11] jesusabdullah: huh [17:11] jesusabdullah: looks weirdly, umm [17:11] jesusabdullah: empty [17:12] mjr_: might need to mkdir -p obj/release [17:12] voxpelli has joined the channel [17:13] jesusabdullah: huh [17:13] jesusabdullah: no error this time [17:13] ryah: echo $? [17:14] jesusabdullah: 0 [17:14] jpld has joined the channel [17:14] jesusabdullah: however, running make again still fails [17:14] mjr_: that's odd [17:14] jesusabdullah: Isn't it? [17:15] jesusabdullah: Here I was like, "hooray!" [17:15] jesusabdullah: Is it okay that the SConscript is missing? [17:15] pgriess has joined the channel [17:15] gf3 has joined the channel [17:15] jesusabdullah: You guys are awesome for trying to help me, by the way [17:16] ryah: uh [17:16] ryah: gcc -o obj/release/dtoa-config.o -c -Werror -Wno-uninitialized -m64 -O3 -fomit-frame-pointer -fdata-sections -ffunction-sections -ansi -DV8_TARGET_ARCH_X64 -DENABLE_VMSTATE_TRACKING -DENABLE_LOGGING_AND_PROFILING -DENABLE_DEBUGGER_SUPPORT -I/export/scratch/holbrook/node-v0.1.102/deps/v8/src /export/scratch/holbrook/node-v0.1.102/deps/v8/src/dtoa-config.c || echo $? [17:16] ryah: please [17:17] jesusabdullah: That's the same command, but with || echo $? tacked on right? [17:17] _announcer: Twitter: "@jasonh : wow, @jamesaduncan has been building SSJS based PaaS environments for 5 years. Node.JS is great, Smart has real potential." -- swardley. http://twitter.com/swardley/status/20319653369 [17:17] jesusabdullah: nothing :( [17:17] ryah: cd build/default && gcc -o obj/release/dtoa-config.o -c -Werror -Wno-uninitialized -m64 -O3 -fomit-frame-pointer -fdata-sections -ffunction-sections -ansi -DV8_TARGET_ARCH_X64 -DENABLE_VMSTATE_TRACKING -DENABLE_LOGGING_AND_PROFILING -DENABLE_DEBUGGER_SUPPORT -I/export/scratch/holbrook/node-v0.1.102/deps/v8/src /export/scratch/holbrook/node-v0.1.102/deps/v8/src/dtoa-config.c || echo $? [17:17] _announcer: Twitter: "node.js server installation failed in windows. #javascriptServer #documentationNeeded" -- senthilnathan sk. http://twitter.com/senthilnathansk/status/20319675587 [17:18] mjr_: that means it failed [17:18] mjr_: But failed with no error [17:18] mjr_: I gotta run. Good luck jesusabdullah. [17:18] ryah: cd build/default && gcc -o obj/release/dtoa-config.o -c -Werror -Wno-uninitialized -m64 -O3 -fomit-frame-pointer -fdata-sections -ffunction-sections -ansi -DV8_TARGET_ARCH_X64 -DENABLE_VMSTATE_TRACKING -DENABLE_LOGGING_AND_PROFILING -DENABLE_DEBUGGER_SUPPORT -I/export/scratch/holbrook/node-v0.1.102/deps/v8/src /export/scratch/holbrook/node-v0.1.102/deps/v8/src/dtoa-config.c && ls -l obj/release/dtoa-config.o || echo $? [17:18] ryah: there :) [17:19] jesusabdullah: ryah: just this last one then? I was still trying to take the \ns out of the other one [17:19] ryah: just trying to see if that gcc thing is working [17:20] jesusabdullah: what directory should I be in? [17:20] ryah: node root dir [17:20] jesusabdullah: ah [17:20] jesusabdullah: -rw------- 1 holbrook uafpower 34304 2010-08-04 09:20 obj/release/dtoa-config.o [17:20] jesusabdullah: idk what that means :/ [17:20] pzich: that's rong [17:20] pzich: wrong* [17:20] CIA-77: node: 03Ryan Dahl 07master * r31b5940 10/ (src/node_script.cc test/simple/test-script-context.js): Allow null context in Script - http://bit.ly/azZqez [17:21] matt_c_ has joined the channel [17:21] pzich: only you can read and write that file, no one else can [17:21] pzich: node needs to be able to read it [17:21] aglemann has joined the channel [17:21] aglemann has left the channel [17:21] jesusabdullah: hmm [17:22] ryah: nah it's okay [17:22] ryah: jesusabdullah: so type "make" now [17:22] jesusabdullah: Same error :/ [17:22] matclayton has left the channel [17:22] borior: jesusabdullah: it *was* a bug in node! [17:22] borior: http://github.com/nickstenning/node/commit/37b1700a744ae1b3d154c15adc98bd4e02bf9b7b [17:22] twoism has joined the channel [17:22] jesusabdullah: borior: Huh! Crazy [17:24] mjijackson has joined the channel [17:25] borior: ryah: are you Ryan? if so, I just sent a pull request to fix a require.registerExtension/module loading bug, as per the above commit. Hope it's useful! [17:25] gf3 has joined the channel [17:25] _announcer: Twitter: "Gonna do another attempt of storing Node.js Buffers in memcached. The results seem to increase in size.. o_o" -- Arnout Kazemier. http://twitter.com/3rdEden/status/20320137420 [17:25] Tobsn has joined the channel [17:25] brickysam26 has joined the channel [17:26] sam__ has joined the channel [17:27] dipser: can someone help me? http://nopaste.php-quake.net/306726 i want to push data into the stream from time to time. [17:27] olegp has joined the channel [17:27] jesusabdullah: ryah: You probably saw, but if not: I ran make, saw the same error [17:27] sam__: hi all. trying some example code out and get "ReferenceError: console is not defined", is there a quick fix? [17:28] jesusabdullah: ryah: Rough morning, huh? XD [17:28] _announcer: Twitter: "Node Roundup 2: Welcome to the Node Roundup, episode 2. I’ve been hanging out at irc.freenode.net/#node.js. It’s... http://bit.ly/9JTXU5" -- doobbe design. http://twitter.com/doobbe/status/20320314666 [17:28] wattz: anyone have an example of a wscript where include paths are added? [17:28] FransWillem has joined the channel [17:29] brickysam26: I posted a patch and linked to it in the google group, but they said I should try to get ry's attention here. link: http://groups.google.com/group/nodejs/browse_thread/thread/c703aa0969feb35d [17:29] sveimac has joined the channel [17:29] bradleymeck_: sam__ node version > 0.1.100? [17:30] wattz: eh, no one knows :( back to google! [17:31] sam__: v0.1.97-14-g0055dd1 [17:31] gm__ has joined the channel [17:31] brickysam26: wattz add include paths to an addon? [17:31] _announcer: Twitter: "Node JS => Redis <= Rails / Sweet, Sweet Music" [de] -- Nick Lewis. http://twitter.com/nicklewislive/status/20320529144 [17:31] wattz: like in g++ you do -I/my/path [17:31] wattz: since this is for node, i need to use wscript [17:32] bradleymeck_: samm__ upgrade to 0.1.100+ [17:32] wattz: for building (reading the docs) [17:32] derferman has joined the channel [17:32] sam__: ok, thanks [17:32] wattz: so i want to do -I/path/ but in swscript [17:32] gm__: hey [17:32] wattz: wscript [17:32] gm__: :) [17:33] brickysam26: wattz add the path to your wscript with uselib [17:33] gm__: anyone dealing with websocket ? I am looking for a hint about debugging it browser-side [17:33] wattz: uselib ok cool [17:33] wattz: thank you [17:33] gm__: or even in node.js as client [17:34] _announcer: Twitter: "Is there an example somewhere of using node.js to connect to a telnet server, all I can find is shit for creatin' them." -- Danny Tatom. http://twitter.com/dannytatom/status/20320718957 [17:34] bradleymeck_: gm__ i would just dump to console all messages in and out [17:34] maushu: Dammit, I always forget to update the http char problem. [17:34] gm__: bradleymeck_: I am doing it, but seems like the .onmessage event is not firing [17:34] gm__: I dont know if its a protocol problem [17:34] tmpvar_ has joined the channel [17:35] dnyy: geeze, _announcer showed that faster than my browser did [17:35] _mythz has left the channel [17:35] gm__: (I am patching my ws server) [17:35] gm__: seems like there is a boo boo somewhere that chrome and safari wont let .onmessage be called [17:35] WALoeIII has joined the channel [17:36] bradleymeck_: so onopen is working? [17:36] bradleymeck_: and it doesnt close oddly? [17:36] _announcer: Twitter: "I'm using Ant to process JS files to "build" NodeJS my modules, inc. YUI compression; any advice on better/best practice? /cc: @rauchg" -- Clint Andrew Hall. http://twitter.com/clintandrewhall/status/20320829786 [17:36] wattz: bradleymeck_: does obj.uselib take a string, list or can you call over and over? [17:36] gm__: yeah [17:36] bradleymeck_: i have no idea wattz [17:36] wattz: no worries [17:36] gm__: I even send messages from the browser to the server [17:36] wattz: thanx though [17:37] gm__: but the server send it back(echo server) and the browser wont process it [17:37] bradleymeck_: which server side impl are you using? [17:37] gm__: I was figuring out if there is a console or development plugin that could help, because standard ones wont show ws data [17:37] gm__: bradleymeck_: mine, for twisted (txwebsockets) [17:37] gm__: I am upgrading for hixie 76 [17:38] bradleymeck_: sounds like its not sending a flush or w/e for the connection? [17:38] gm__: its the same as before, sending x00msgxff [17:38] gm__: I can see it by tcpdump [17:39] gm__: but I dont know if there is something else or if there is excess xff between messages (alto it shouldnt break it ) [17:40] tonyskn has joined the channel [17:40] gm__: weird huh [17:40] grahamalot has joined the channel [17:40] bradleymeck_: not sure whats going on then [17:41] brickysam26 has left the channel [17:42] gm__: thats why I was looking for a way to the browser tell me whats going on [17:42] gm__: but it seems like ws data are ignored [17:42] gwoo has joined the channel [17:43] benburkert has joined the channel [17:43] CIA-77: node: 03Ryan Dahl 07master * radec544 10/ (4 files in 3 dirs): [17:43] CIA-77: node: Revert "Expose the V8 debug object process.debug" [17:43] CIA-77: node: This reverts commit d9fbb8a58071e339711e8c0ceeb31de5a645fd42. - http://bit.ly/cfzyeb [17:45] dipser: this doesnt work. does someone know why? http://nopaste.info/073d902fa4.html [17:46] jsilver_ has joined the channel [17:46] qFox has joined the channel [17:47] bradleymeck_: wait it gives the jquery style output from that? sounds like the response obj sending that isnt the same [17:47] gf3_ has joined the channel [17:48] dipser: its sending the data if i open it directly /stream?sid=xyz [17:48] dipser: but it isnt showing on the page with that output [17:48] _announcer: Twitter: "@ Scraperonce story, not to use or not use, node.js jsonengine and is derived from the story. If you add "motion" that called for a genuine surprise." [ja] -- Hiroshi Suda. http://twitter.com/suda_hiroshi/status/20321574659 [17:49] tonyskn has joined the channel [17:50] bradleymeck_: dipser sounds like getJSON isnt interpretting that, the '(' ')' arent valid in json anyway [17:50] tonyskn has joined the channel [17:52] dipser: bradleymeck_: its like that: http://nopaste.info/913825d358.html and http://nopaste.info/f4738baf4f.html [17:54] mape: tjholowaychuk: have you tested ejs? SyntaxError: Unexpected token ;at Object.Function (unknown source)at ServerResponse. (/home/mape/.node_libraries/.npm/ejs/active/package/lib/ejs.js:136:18) [17:54] tjholowaychuk: mape: `make test` [17:54] tjholowaychuk: like I said tho I dont use it really so I am relying on patches from people who actually do use it lol [17:54] ryah: pquerna: ping [17:55] mape: tjholowaychuk: 100% ok [17:56] pquerna: ryah: pong [17:56] CIA-77: node: 03Samuel Shull 07master * r24c6d26 10/ wscript : Add node_version.h to install - http://bit.ly/cHpzyW [17:56] x_or: creationix, tjholowaychuk: Do you know if memorystore is working in the new repo for connect? I'm getting an error ("at CALL_NON_FUNCTION_AS_CONSTRUCTOR (native)" and since there are no tests anymore not sure if I should hold off using the new repo. [17:57] ryah: pquerna: there's no particular reason node_version.h isn't installed ? [17:57] aurynn has joined the channel [17:57] tjholowaychuk: x_or: no tests anymore? what do you mean [17:57] ryah: pquerna: i think you removed that from wscript [17:57] ryah: pquerna: iirc [17:57] tjholowaychuk: x_or: what version of connect do you know? or HEAD? [17:57] pquerna: hmm, if only by accident, i think i removed it from being generated.. [17:57] pquerna: which might of accidently rmeoved it from being installed [17:57] pquerna: but it should get installed [17:57] mape: tjholowaychuk: on nh, seems it does that when it gets locals wrong [17:58] pquerna: sorry meant to reply to the list thread, just been crazy in production last 24 hours [17:58] x_or: tjholowaychuk: 0.2.3. Should I use HEAD? [17:58] x_or: I installed with nvm. [17:58] mape: tjholowaychuk: and template reloading works :D [17:58] tjholowaychuk: x_or: hmm no that shoudl be fine [17:58] tjholowaychuk: mape: haha yay! [17:58] _alex: tjholowaychuk: screen [17:58] tjholowaychuk: _alex: ? [17:59] _alex: tjholowaychuk: screen + irssi, for the complete irc experience [17:59] x_or: tjoholowaychuk: Is this still proper usage: var MemoryStore = require('connect/middleware/session/memory').MemoryStore; [17:59] tjholowaychuk: random lol [17:59] _alex: I noticed you exit yesterday, how am I supposed to hassle you if you quit? [17:59] _alex: :) [17:59] tjholowaychuk: :p [17:59] x_or: I was using my own local repo, now using nvm I'm unclear of the paths. This seems to load, but then I get that error when I call new MemoryStore({…}); [18:00] isaacs has joined the channel [18:00] tjholowaychuk: x_or: ah, you dont need .MemoryStore on the end [18:00] tjholowaychuk: it IS the module now [18:00] tjholowaychuk: maybe docs are fucked [18:00] blowery has joined the channel [18:01] twoism has joined the channel [18:01] x_or: Hmm, I see now, the repo on github does have tests, but nvm obviously directs to the lib directory. I just wasted your brain cells. I'll review docs to make sure and if they are wrong I will let you know. [18:01] cloudhead has joined the channel [18:01] wattz: grrr. [18:03] tjholowaychuk: x_or: :D [18:03] tonyskn has left the channel [18:03] sudoer has joined the channel [18:04] x_or: All is good, docs are great, and I LOVE connect. Such sublime software. [18:04] ashleydev has joined the channel [18:05] tjholowaychuk: haha its aight :p [18:05] mape: tjholowaychuk: what kinda req/sec should a simple as can be template driven express app do? 2kish? [18:05] _announcer: Twitter: "@ Nkoehring ports is so stupid, too. I'll take properly for something like 'homebrew' that works. Furthermore, I also always bring me node.js." [de] -- Leon Weidauer. http://twitter.com/techpriester/status/20322620413 [18:05] tjholowaychuk: mape: ill check [18:06] gf3 has joined the channel [18:06] tjholowaychuk: mape: EXPRESS_ENV=production node examples/ejs/app.js gets about 4k [18:06] tjholowaychuk: mape: but it has partials n whatnot [18:06] mape: k [18:08] ashleydev: tjholowaychuk: did you grab my ejs parse change? [18:08] FransWillem: Is there any browser still using old websocket proposal protocols ? [18:08] admc has joined the channel [18:09] ashleydev: tjholowaychuk: -- one thing for you to note is that I took out the 'bring the bug forward' -- i.e. if some one had hacked in a back-slashed single-quote to get around the .ejs bug... that is now going to be a literal back-slash [18:09] ben_alman has joined the channel [18:10] bradleymeck_: dipser, im not sure but it seems jquery is doing something odd, in inspectors it is showing up in the "other" resources rather than xhr [18:10] aniero: ashleydev: heh, i see my updated parser got replaced within the course of two days! :P [18:11] wattz: .this is a real pain-in-the-ass [18:11] ashleydev: aniero: your's wasn't single pass [18:11] ashleydev: ;) [18:11] rubydiamond has joined the channel [18:11] aniero: ashleydev: hmmph! :p [18:11] hansek has joined the channel [18:11] ashleydev: aniero: it had hidden String.replace() a few times -- but you did have a bunch of really good tests [18:12] ashleydev: (more than I had added) [18:12] aniero: did anyone compare the two for speed? curious what kind of speedup single-pass got [18:12] elliottkember: aiee [18:12] elliottkember: I just had a fun couple of hours with socket.io! [18:14] tjholowaychuk: ashleydev: k im back now lol [18:14] tjholowaychuk: whats this bring the bug forward thing, lost me [18:14] aniero: tjholowaychuk: it's the second part of the patch i gave you [18:14] aniero: tjholowaychuk: that preserves already-escaped single quotes [18:14] astrolin_ has joined the channel [18:14] tjholowaychuk: ohh [18:15] sh1mmer has joined the channel [18:15] pquerna: best part of evented systems. biting off too much stuff and opening 3000 connections to another internal service which isn't so evented. [18:15] aniero: tjholowaychuk: you did bump the minor version, so minor api breakage could be expected! [18:15] jesusabdullah: *rimshot* [18:16] aniero: pquerna: just consider it load testing [18:16] _announcer: Twitter: "#Nodejs development Recent threads http://bit.ly/aIZaDa" -- Devcomments.com. http://twitter.com/devcomments/status/20323243772 [18:16] astrolin_ has joined the channel [18:17] ashleydev: tjholowaychuk: so you gonna bring the bug fwd or break the old hack? (i vote for breakage) [18:17] aniero: +1 for breakage, may as well be correct [18:17] cromney has joined the channel [18:17] ashleydev: :) [18:17] tjholowaychuk: with the already escaped quotes? [18:18] ashleydev: yeah -- so that that now becomes a literal back-slash [18:18] aniero: yeah, so if you hacked around it before, then it'll break [18:18] ashleydev: as it should in normal html [18:18] zemanel has joined the channel [18:18] tjholowaychuk: oh, no i dont care about what people doing before lol as long as it works properly now [18:18] ashleydev: :) [18:18] ashleydev: good [18:20] saikat has joined the channel [18:21] [[zz]] has joined the channel [18:23] borior: ryah: why does require() ever attempt to load a directory? [18:24] pquerna: index.js :D [18:25] mjr_ has joined the channel [18:25] isaacs: borior: what's happening? [18:25] isaacs: ACTION has tinkered with require() and module loading a lot [18:26] jsilver has joined the channel [18:28] borior: isaacs: I've just "fixed" an issue with module loading extra extensions [18:28] aheckmann has left the channel [18:28] isaacs: borior: ? [18:28] borior: http://github.com/nickstenning/node/commit/37b1700a744ae1b3d154c15adc98bd4e02bf9b7b [18:28] borior: and I don't understand why node ever tries to require() a directory [18:28] borior: i understand index.js, but why line 146/160 in that patch? [18:28] isaacs: borior: well, what if "foo" was the filename? you want to load that when you do require("foo") [18:29] isaacs: borior: sometimes files don't have extensions. [18:29] borior: aaah [18:29] borior: ACTION slaps forehead [18:29] isaacs: borior: especially when people write node programs that are CLI executables. [18:29] borior: ok, that makes sense [18:29] mjr_: isaacs: you need a shirt that says: require("foo") [18:29] isaacs: but, you make a good point, if you have foo/ and foo.coffee, then foo.coffee should be first. [18:29] mjr_: And on the back, maybe "Doing it Wrong" [18:29] isaacs: mjr_: hahaa, good idea! [18:30] mjr_: Maybe that's another shirt. [18:30] deepthawtz: sorry i bailed for a sec and missed some of the CI discussion, were there any other candidates besides CI-Joe? [18:30] isaacs: borior: maybe the better solution would be to always make sure that the thing being required isn't a directory. [18:31] mjr_: I am one of those pesky people making node programs that run from the command line with a shebang. [18:31] isaacs: borior: ie, right now we check to see that the locations exist, but really, we should be checking that they're valid files. [18:31] jesusabdullah: I've started doing that for certain cases [18:31] bradleymeck_: shebangs shebangs~ oh she moves she moves [18:31] borior: isaacs: yup. but I think my patch is a good start =) [18:31] isaacs: borior: that's also a simpler change. roll back your patch, and just address the usage of path.exists. [18:31] isaacs: borior: after all, you might have a directory called "foo.js" [18:32] isaacs: borior: consider: foo.js/index.js [18:32] wattz: FINALLY, Waf bow down. [18:32] isaacs: borior: require("foo") would give you the wrong thing [18:32] isaacs: borior: but require("foo.js") should give you the foo.js/index.js file [18:32] programble has joined the channel [18:33] FransWillem: Why on earth was "raw" encoding removed? How am I supposed to write an array of octets now ? [18:33] siculars has joined the channel [18:33] isaacs: borior: search module.js for "path.exists" and replace those things with fs.stat, and then check to make sure it exists and that isDirectory() is false [18:33] james20371: so gentlemen I'm considering, in the near future, tinkering with a project that will have pretty severe memory usage implications. [18:34] isaacs: FransWillem: Buffer maybe? [18:34] jesusabdullah: james20371: Avoid java? :v [18:34] isaacs: mjr_: I'm not sure I want a shirt that says "Doing It Wrong". might send the wrong message. but maybe it would be nice to hand out as a gift at Java conferrences or something... [18:34] james20371: the problem I think is going to be the closures [18:34] mjr_: isaacs: oh right, that's way better. [18:34] pufuwozu has joined the channel [18:35] isaacs: james20371: not likely. v8 optimizes anonymous functions quite well. [18:35] jesusabdullah: put the "script" in javascript? [18:35] FransWillem: isaacs: crypto only supports string+encoding :( I'll try creating a buffer, then buffer.toString("utf8"), and then use that [18:35] astrolin has joined the channel [18:35] borior: isaacs: ok, going to get some food and then I'll look into doing that [18:35] isaacs: FransWillem: ah, yeah, crypto's a bit behind the times. [18:35] wattz: need you guys' opinions [18:35] mjr_: FransWillem: the crypto stuff really needs to speak buffers [18:35] james20371: basically what I want to do is write a minecraft server once enough of the protocol is reverse engineered for it. [18:35] isaacs: borior: sure, feel free to bug me with questions, or bug me to just do it if you're feeling too lazy. [18:36] wattz: do i write this mysql driver just native straight js calls, then wrap that in js to make node-ish (async)? [18:36] wattz: or go async off bad [18:36] lejoe has joined the channel [18:36] wattz: s/bad/bat [18:36] isaacs: mjr_: buffers and streams [18:36] james20371: anyone know what I'm talking about? [18:36] isaacs: mjr_: i mean, the hooks are there, just the wrong api [18:36] jesusabdullah: james20371: Minecraft is awesome! [18:36] james20371: yes! [18:36] jesusabdullah: james20371: Unfortunately my computer sucks :C [18:37] james20371: I just want your opinion on whether or not something like that is possible. [18:37] jesusabdullah: So even though I bought it a few weeks back I've hardly gotten to play it [18:37] maushu has joined the channel [18:37] isaacs: mjr_: in waveto's defense, of course, the Stream API didn't exist when he wrote node-crypto [18:37] jesusabdullah: My thinking would be that the protocol probably isn't gonna be the most open thing ever, so it would be hard to reverse engineer [18:37] jesusabdullah: but I'd imagine it'd be possible [18:37] jesusabdullah: Why you'd do it though, idk *shrug* [18:37] jesusabdullah: lulz? [18:37] x_or: tjholowaychuk: Is there a replacement for redirect in connect, this middleware seems to be missing, and there is nothing in the source tree anymore that I can see. Documentation lists it under bundled middleware, but the docs are missing, so it looks to be removed. [18:37] james20371: basically because I want a big node.js project to tinker with [18:38] tjholowaychuk: x_or: shit, yeah it should be removed from the docs [18:38] isaacs: james20371: you could always write a package manager. ;P [18:38] tjholowaychuk: it was to high level [18:38] tjholowaychuk: x_or: its in express no [18:38] jesusabdullah: james20371: I see [18:38] tjholowaychuk: now* [18:38] borior: isaacs: heheh =) [18:38] jesusabdullah: james20371: Have you ever played bzflag? [18:38] stride: jesusabdullah: you wanted me to get back to you on the irc lib issue, right? did you get the stuff about retryCount? [18:38] james20371: but I don't even know if node.js is appropriate for something like that considering how much raw effing memory is being used there. [18:38] jesusabdullah: stride: I didn't! And I'm still interested! [18:39] CIA-77: node: 03Ryan Dahl 07master * r7db5c8a 10/ (src/node_buffer.cc test/simple/test-buffer.js): [18:39] CIA-77: node: Fix toString('base64') bug [18:39] CIA-77: node: Thanks to Stepan Stolyarov for the test case. - http://bit.ly/9UjRhA [18:39] jesusabdullah: I kinda wanna write some stuff to make bzflag hosting suck less [18:39] jesusabdullah: maybe node would be a fun platform [18:39] x_or: tjholowaychuk: So a response object can no longer send a redirect within middleware? [18:39] james20371: I would be very disappointed if I got outperformed by the official server running on java [18:39] stride: jesusabdullah: you can tell the lib in the constructor's retryCount parameter that it should reconnect after a specific interval (also customizable). works fine here [18:39] borior: isaacs: so, I'm uncertain what we decided. do you reckon that the expected load order for require('foo') should be ['foo.js', 'foo.node', 'foo', 'foo.coffee', ...] ? [18:39] jesusabdullah: stride: orly? Awesome! [18:39] _announcer: Twitter: "Google Tech Talk on Node.js http://www.youtube.com/watch?v=F6k8lTrAE2g" -- Thomas Dondorf. http://twitter.com/dodwin/status/20324616042 [18:39] tjholowaychuk: z_or: well yeah of course you can, but just use writeHead() [18:40] isaacs: borior: yeah [18:40] ryah: Are we missing any patches? [18:40] _announcer: Twitter: "Impressed with what # node.js everything goes. Even # qemu-based virtualization in the browser http://n3o.at/ULQ" [de] -- Guybrush Threepwood. http://twitter.com/theneutrino/status/20324623828 [18:40] ryah: otherwise I'm releasing [18:40] stride: jesusabdullah: I also checked if it works with timeouts via tcpkill, it did [18:40] isaacs: ryah: i think there were a few things i had that didn't get included, just a sec [18:40] ryah: oh let me upgrade v8 [18:40] borior: ryah: i'd really like this module loading issue to be in the release [18:40] isaacs: ryah: oh, what about those two https tests? did you get a chance to look at it? [18:41] brianmario has joined the channel [18:41] isaacs: ryah: i mean, its only effect is to blow up make test-all, so maybe you don't want it ;) [18:41] V1: Is there a way to make the child_process.spawn execute sync instead of async? [18:41] isaacs: V1: nope. [18:41] V1: balls [18:41] isaacs: V1: why do you need to do that? [18:41] ryah: isaacs: not yet [18:41] ryah: i will get to the ssl issues one of these days [18:41] pkrumins: hey ryah, thanks for fixing base64 stuff [18:41] ryah: pkrumins: np - did that fix it for you? [18:42] borior: V1: maybe http://github.com/creationix/step will help you [18:42] sh1mmer has joined the channel [18:42] isaacs: ryah: if you don't soon, i'm going to try to dig into it. it's one of the last few things that really frustrates npm often. [18:42] jesusabdullah: I was about to suggest that <_< [18:42] pkrumins: ryah: did not yet pull the latest version but some people said it works now [18:43] ryah: cool [18:43] pkrumins: gonna try it personally on 0.1.103 :) [18:44] V1: isaacs: In my Buffer parser, it could occur that a returned value is gzip compressed, and i need to gunzip it before i can continue parsing it. [18:44] pkrumins: ryah: got a question about async stuff, is there anything i should be aware of? I am trying to convert one of my modules (node-png) to use eio_custom, but the data pointer always gets messed up. [18:44] cromney has joined the channel [18:44] isaacs: V1: why not just make your parser a stream? [18:44] pkrumins: ryah: i carefully compared my code with other async code out there and it pretty much matches but my code always gets data pointer messed up [18:44] isaacs: V1: call pause() on the upstream, and then emit a "drain" event when you're ready for more data. [18:45] jesusabdullah: pause()? [18:45] isaacs: V1: and keep buffering and returning false on write()s while you're busy [18:45] isaacs: someone should do a talk on JUST the stream interface [18:45] V1: isaacs: That actually might work, thanks [18:45] pkrumins: jesusabdullah: pause for pausing a stream (to rate control tarffic for example) [18:45] jesusabdullah: hmm [18:45] pkrumins: ryah: i wonder if I am missing some compiler flag or something [18:45] V1: the stream interface.. Horrible.. Nothing but bad experiances and hacks around it so far ;! [18:46] pkrumins: ryah: does anything come to your mind when remembering how you coded eio_custom stuff? [18:46] isaacs: V1: or rather, call resume() on the upstream when you're ready for more data. [18:46] mape: Anyone had issues with less.css not working with vendor prefixes? [18:46] isaacs: V1: actually, a gunzipper is *exactly* the use case for that Filter API that we talked about a while ago. i don't know if anyone ever implemented that. [18:46] V1: isaacs: Will check it out, thanks for the heads up. [18:46] isaacs: V1: np [18:47] borior: isaacs: so process.binding('fs').stat returns synchronously, right? what's the async version? [18:48] isaacs: borior: the binding functions are sync unless you pass in a callback. [18:48] pkrumins: ryah: i have a small code example that crashes with async, do you have a minute to take a look? [18:48] borior: aha, ok [18:48] V1: And indeed a filter API would help allot when working with stream. Now are all building our own custom stream parsers. A proper filter API would reduce allot of duplicate code. [18:48] isaacs: borior: but you can also do module.requireNative("fs") and use it normally. that's probably better, so you're not being overly intimate between modules. [18:48] isaacs: borior: ie, then use stat and statSync [18:48] CIA-77: node: 03Ryan Dahl 07master * r81f5ed5 10/ (10 files in 4 dirs): Upgrade V8 to 2.3.5 - http://bit.ly/bH06UX [18:48] borior: isaacs: aye aye [18:49] isaacs: V1: and also reduce errors when the interface needs to be modified. [18:49] ben_alman has joined the channel [18:49] isaacs: V1: the idea would be that you just create a filter function, and that function's interface is constant and simple, and if the implementation changes, you don't have to care, as long as it keeps working. [18:50] isaacs: V1: the proposal was something like sys.createFilter(function (chunk, cb) { ... }) [18:50] isaacs: V1: then a "filter" is actually a stream that can be passed to sys.pump() [18:50] V1: isaacs: Yeah I remember the topic, it was not so long ago [18:50] isaacs: V1: your function gets chunk after chunk, and calls cb whenever, eventually it gets null meaning "it's over" and calls cb(null) to close [18:51] pufuwozu has joined the channel [18:51] ryah: pkrumins: sure [18:52] FransWillem: Goddamnit, node-crypto is awful :/ [18:53] _announcer: Twitter: "Picking with SceneJS+WebSockets+NodeJS: http://bit.ly/czE6po" -- Lindsay Stanley Kay. http://twitter.com/xeolabs/status/20325386550 [18:53] ph^ has joined the channel [18:53] ryah: FransWillem: most of that is in core now.. [18:54] FransWillem: ryah: Eh, yeah, that's what I mean, the crypto library is horrible, it's virtually impossible to get it to work correctly using binary data or buffers " [18:54] FransWillem: :/ [18:55] isaacs: FransWillem, ryah: yeah, it should use streams and buffers. calculating a hash or encrypting a file is *exactly* a use case for the Filter API. [18:56] jesusabdullah: Is there a proposal written somewhere, isaacs? [18:56] pkrumins: ryah: I pushed the test project to http://github.com/pkrumins/node-async [18:56] isaacs: jesusabdullah: no, just in this incredibly nerdy and unedited whiteboard session: http://vimeo.com/13292130 [18:56] pkrumins: ryah: it has wscript and a test that crashes - tests/a.js [18:56] pkrumins: ryah: the cpp code is here -- http://github.com/pkrumins/node-async/blob/master/async.cpp [18:57] pkrumins: ryah: EIO_Moo most likely receives a messed up `req` pointer [18:57] pkrumins: ryah: or perhaps req->data is only messed up, i did not understand that yet. [18:57] FransWillem: Hmm, what's a quick way to md5 some binary data? [18:58] pkrumins: ryah: req->data is always 0x404 on my system [18:58] pkrumins: ryah: for the bigger project (node-png) and for this toy example too [18:58] FransWillem: Or could anyone verify the MD5 sum for 0x2E 0x50 0x31 0xB7 0x06 0xDA 0xB8 0x0B 0x47 0x30 0x22 0x2D 0x5A 0x3F 0x47 0x58 for me? According to some document it should start with 0x30 ... [18:58] teemow has joined the channel [18:59] pkrumins: FransWillem: md5sum utility [18:59] pkrumins: FransWillem: or openssl md5 [18:59] isaacs: FransWillem: require("crypto").createHash("md5").update(data).digest("hex") [18:59] pkrumins: cat file | md5sum [18:59] isaacs: FransWillem: or that ^ [18:59] pkrumins: or just md5sum file actually [19:00] borior: isaacs: okay, more questions =) At the moment, if just replace path.exists with stat and !stat.isDirectory(), we load, in order: [19:00] paul___ has joined the channel [19:00] FransWillem: isaacs: I'm trying to troubleshoot the crypto library actually, some RFC is telling me it's 0x30..., node insists its 0x86 [19:00] isaacs: FransWillem: oic [19:00] borior: [foo.js, foo.node, foo/index.js, foo/index.node, foo, foo.coffee, foo/index.coffee] [19:01] isaacs: FransWillem: yeah, i'd compare node's md5 with the md5sum util. [19:01] borior: does that sound right to you? [19:01] isaacs: borior: yeah, i think so [19:01] borior: I'm not sure it's terribly consistent to load foo.node before foo/index.js [19:01] borior: but with multiple registered extensions, we'll be loading [19:01] isaacs: borior: imo, index.js and *.coffee shouldn't be registerable, but that's just me [19:02] isaacs: borior: just foo.js and foo.node and foo, and that's it. [19:02] isaacs: borior: but i'm not the king of node ;) [19:02] borior: well the whole point of my attacking this is for loading coffee modules [19:02] isaacs: right [19:02] isaacs: the much more common use case is .js and .node [19:02] borior: but I don't like index.hjs [19:02] FransWillem: Gaah, new Buffer(1).toString("base64") fails too :( [19:02] borior: s/hjs/js/ [19:02] FransWillem: err [19:03] isaacs: but some people REALLY dig index.js [19:03] FransWillem: no, wait, it's (new Buffer(1)).copy that's failing :( [19:03] borior: npm's 'main' is a *much* more elegant solution =) [19:04] borior: ryah: it would be really useful to get your opinion on this one =) [19:04] _announcer: Twitter: "Presenting http://thingler.com - the real-time collaborative amazingly simple-to-use all set! # # Nodejs CouchDB" [gl] -- Alexis Sellier. http://twitter.com/cloudhead/status/20326056712 [19:05] isaacs: borior: imo, registered extensions should come after the builtin defaults [19:05] borior: isaacs: I'm agreed on that [19:05] isaacs: borior: then your list above is right. [19:05] borior: but at the moment, we're doing [foo.js, foo.node, foo/index.js, foo/index.node...], but [foo.reg1, index/foo.reg1, foo.reg2, index/foo.reg2] [19:05] borior: which is inconsistent [19:06] isaacs: meh [19:06] isaacs: it's not an edge case that's likely to bite often. [19:06] _announcer: Twitter: "Whee! @ Ryah included my test in nodejs! http://bit.ly/9Pmjhz" [ru] -- Stepan Stolyarov. http://twitter.com/stevebest/status/20326148985 [19:06] borior: okay, but since it's so trivial to fix, I'd like to only patch it once! [19:06] isaacs: i mean, for that to matter, think about it... you'd have to have a foo.js, and a foo.coffee, and a foo.parenscript, and a foo.objj, all in teh same folder. [19:07] isaacs: so, are you sugesting that it should go foo.js, foo/index.js, foo.node, foo/index.node? [19:07] tjholowaychuk has joined the channel [19:07] borior: either that or the reverse... [19:07] isaacs: or that it should go: foo.js, foo.node, foo.reg, foo, foo/index.js, foo/index.node, foo/index.reg? [19:08] borior: i think the latter makes more sense [19:08] isaacs: i mean, the benefit of consistency is probably not worht the complexity overhead of shuffling the array arouhnd. [19:08] ryan_gahl: 11,00•12,00cloudhead11,00• thingler.com looks really nice [19:08] CIA-77: node: 03Ryan Dahl 07master * r0b925d0 10/ (4 files in 3 dirs): bump version - http://bit.ly/amwaGp [19:09] mjr_: I just keep hoping someone with crypto expertise will spend some quality time with node and make the SSL/crypto stuff totally rock. [19:09] ryah: it's not particularly hard [19:09] isaacs: mjr_: i don't have crypto expertise, but i do have a strong desire to see it work right. [19:09] ryah: it just needs some dedication [19:09] mjr_: Hey, V8 did a release that failed to include "Performance improvements on all platforms." Slackers. [19:09] isaacs: mjr_: openssl does all the ahrd stuff anyway [19:10] isaacs: mjr_: depending on how long it takes me to find an apt, i might have a few weeks free to take a look. [19:10] isaacs: the alternative is that i use curl to upload npm tarballs. [19:11] isaacs: but that just feels extra wrong. [19:11] borior: ryah: could I please have an opinion on what patch is most likely to be accepted by you. given [foo.js, foo.node, index/foo.js, index/foo.node, foo, foo.coffee, foo/index.coffee, ...] is that the correct load order having done registerExtension('.coffee', ..) [19:11] _announcer: Twitter: "#nodejs v0.1.103 released http://groups.google.com/group/nodejs/browse_thread/thread/e83847637e4bbc0e" -- Ryan Dahl. http://twitter.com/ryah/status/20326455373 [19:12] isaacs: borior: it's foo/index.js, not index/foo.js [19:12] borior: gah [19:12] borior: sorry [19:12] borior: brain's fried [19:12] ryah: borior: um [19:12] pkrumins: node 0.1.103 is out! [19:12] jesusabdullah: \o/ [19:12] isaacs: borior: in 104, i guess :) [19:12] borior: isaacs: i guess so =/ [19:13] ryah: borior: whats the issue? i wasn't paying attention [19:13] _announcer: Twitter: "Sometimes the lack of a simply include() function in #nodejs is annoying. For things like config files, etc. #js #dev #code" -- Spot. http://twitter.com/spotnyk/status/20326524283 [19:13] isaacs: borior: that's good, actually. changes to require() need extensive testing. not a good change for right before a release. [19:13] isaacs: even stupid dumb simple easy changes. [19:13] borior: isaacs: fair enough [19:13] borior: ryah: ok [19:13] viking has joined the channel [19:13] borior: here's a commit that isaacs suggested I roll back, but it explains the issue [19:13] ryah: borior: i mostly defer to isaacs on these things [19:13] isaacs: ryah: the issue is that you do require("foo"), and it'll try to load the dir rather than foo/index.coffee [19:13] ryah: oh [19:14] borior: http://github.com/nickstenning/node/commit/37b1700a744ae1b3d154c15adc98bd4e02bf9b7b [19:14] isaacs: if you've registered the .coffee extension, that is [19:14] creationix has joined the channel [19:14] ryah: isaacs: seems like it should try to get index.coffee - right? [19:14] isaacs: ryah: so, i'm suggesting, just leave it how it is, but change the "exists" check to "exists and isn't a dir" [19:14] viking: is there a way to get the local ip address that a stream is connected to? [19:14] borior: ryah: err, surely it should get "foo.coffee" first? [19:15] ryah: borior: oh - right - i guess [19:15] Gruni has joined the channel [19:15] jkreeftmeijer_ has joined the channel [19:15] isaacs: that'd actually be good for cases when there's a dir by that name, but no index.ext, or a dir named "foo.js/" [19:15] ryah: but doesn't coffee script not even use our registerExtension thing? [19:15] isaacs: like, if you had foo.js/index.js, and you do require("foo"), it'll try to load the folder. [19:15] borior: ryah: it does use it [19:15] ryah: oh i heard on a podcast that it didn't [19:15] ryah: i was going to remove it [19:16] isaacs: borior: so, yeah... i dunno. go ahead and shuffle the array around. foo.ext, foo.ext2, foo.ext3, foo, foo/index.ext, foo/index.ext2, ... [19:16] isaacs: if there's a bug we've got until the next release to find it. just add a jillion more tests for ti. [19:16] joshbuddy has joined the channel [19:16] _announcer: Twitter: "@clintandrewhall So it's not Node.JS but CommonJS require-compliant client side code? Why would you minify Node.JS SS code?" -- Guillermo Rauch. http://twitter.com/rauchg/status/20326736739 [19:16] isaacs: actually, you should add a failing test first, before touching it. [19:16] ryah: isaacs: just tell me which of borior's things to accept [19:16] isaacs: ryah: will do :) [19:17] borior: isaacs: ok, that's the order that makes most sense to me [19:17] borior: I'll add a failing test, and make a new commit, ok? [19:17] isaacs: while we're at it... can we remove the dumb "we don't allow extensions" error on line 121-123? [19:17] borior: isaacs: sure [19:18] pufuwozu has joined the channel [19:18] isaacs: there's no good reason to not support that, and it'd work if we werent' artificially obstructing it. [19:18] isaacs: just commonjs religiousity, really [19:18] isaacs: i mean, as long as foo.js is before foo, i think that's fine. [19:19] minver has joined the channel [19:19] isaacs: ACTION .oO( get ready for the flood of retweets... ) [19:19] bradleymeck_: also it ruins me requiring imcool.js.js [19:19] _announcer: Twitter: "And as usual, I updated my pre-built #nodejs binaries for OSX and Linux. http://github.com/creationix/ivy-bin" -- Tim Caswell. http://twitter.com/creationix/status/20326915423 [19:19] isaacs: bradleymeck_: INORITE!? [19:19] pkrumins: ryah: can you please take a look at a test case that is failing with eio_custom? http://github.com/pkrumins/node-async [19:19] minver: Does the EventEmitter object have some kind of ID? I wanna have an id for every websocket [19:19] ryah: pkrumins: yes looking at it now [19:20] pkrumins: ryah: thanks! [19:20] lejoe has left the channel [19:20] _announcer: Twitter: "Not happy with my progress on the NodeJS app - but time for some sleep now in preparation for tomorrows unrelatedly fun day" -- Pelle Wessman. http://twitter.com/voxpelli/status/20326976394 [19:20] omarkj has joined the channel [19:20] borior: isaacs: aargh, this is silly. you think 'foo.js' should come before 'foo', but if you then remove that warning, require('foo.js') will require 'foo.js.js' before 'foo.js'. is that alright? [19:21] voxpelli: that _announcer bot makes you feel really spammy about tweeting :/ [19:21] isaacs: borior: yes. [19:21] isaacs: borior: but that's like, very very unusual [19:21] isaacs: borior: maybe just "foo" should come last in the list. [19:21] borior: of course, but I kind of feel that exactly-what-the-user-typed should come first... [19:21] ryah: pkrumins: what's the problem req->data is never set? [19:22] isaacs: borior: so, rightnow, there are some libs (especially Marak's) that are called "something.js" [19:22] isaacs: borior: say.js, colors.js, etc. [19:22] isaacs: borior: and they have an index.js inside them [19:22] isaacs: so, require("say.js") should give you say.js/index.js [19:22] isaacs: but instead right now, it gives you err0red!!! [19:22] borior: yup [19:22] mikeal has joined the channel [19:23] isaacs: borior: ok, i'm sold. "exactly what the user typed" should come first. [19:23] isaacs: i dig that. [19:23] pkrumins: ryah: req->data points to some unknown address - on my machine always 0x404 [19:23] isaacs: foo, foo.ext1, foo.ext2, foo.ext3, ..., foo/index.ext1, foo/index.ext2, ... [19:23] pkrumins: ryah: i looked into eio.c code, and req->data should be the address of my custom data pointer [19:23] isaacs: pkrumins: is that location not found? [19:23] pkrumins: ryah: but it never is. [19:23] pkrumins: isaacs: haha :) [19:23] isaacs: ACTION rimshot [19:24] pkrumins: isaacs: was laughing at it myself too. [19:25] borior: isaacs: agreed! finally! [19:26] creationix: wohoo, my 4 live sites are running node v0.1.103 without problem. I like non-breaking releases [19:26] isaacs: borior: do the array juggling and error message removal as a separate commit from the dir checking, though [19:26] isaacs: borior: both should be minimal. [19:26] borior: isaacs: of course, will do =) [19:26] isaacs: thanks :) [19:26] bradleymeck_: voxpelli at least frankie isnt around or wed be tweeting back [19:27] pkrumins: creationix: sweet :) [19:28] ryah: pkrumins: did you open it up in gdb [19:28] ryah: pkrumins: to see what's happening? [19:28] donspaulding has joined the channel [19:28] pkrumins: ryah: i did, but i don't know much about how eio threads work [19:28] isaacs: omg, i <3 npm help now. [19:29] isaacs: i didn't even realize how annoying that was [19:29] jesusabdullah: huh? [19:29] jesusabdullah: Better colors? ;) [19:29] pkrumins: ryah: it got to calling eio_custom, set moo_req->data, and then the next thing i know I am in EIO_Moo with a messed up req->data pointer. [19:29] isaacs: jesusabdullah: no, it doesn't jump around as you page through i [19:29] isaacs: t [19:29] MrTopf has joined the channel [19:29] isaacs: jesusabdullah: in node 0.1.103 [19:29] jesusabdullah: isaacs: Oh nice [19:30] isaacs: yeah, less assumes that stdout is in blocking mode [19:32] pufuwozu has joined the channel [19:35] jamescarr: grrr [19:36] jamescarr: I was going to rework my module to use fn(err,result) style callbacks but discovered that it doesnt fit [19:36] ryah: pkrumins: works for me [19:36] isaacs: jamescarr: why not? [19:37] jamescarr: currently I emit events based on the success/failure of a transaction, failure not meaning broken but something wrong with the request (card declined, missing required payer info, etc) [19:37] ryah: /tmp/node-async% node tests/a.js [19:37] ryah: 701040 701020 [19:37] ryah: 44 [19:37] jamescarr: so maybe it makes sense to emit an "error" event for system errors? (connection refused, exceptions, etc) [19:37] isaacs: jamescarr: oh, well... you can still do that [19:37] isaacs: jamescarr: look at how npm interacts with the registry, for instance. [19:38] isaacs: jamescarr: sometimes "error" means "i couldn't get any data for this thing" which actually is good [19:38] isaacs: or error means, "you can't write that without the latest rev", which just means that i need to GET and then PUT again with the latest rev. [19:38] jamescarr: yeah [19:39] jamescarr: in this case, maybe it makes sense to have the user listen for error to handle errors? [19:39] isaacs: so, each level "catches" the errors it knows how to handle. [19:39] isaacs: and "throws" the errors it can't handle, perhaps logging a message about it. [19:39] jamescarr: ah [19:39] isaacs: nothing new or innovative there :) it's actually a lot like the traditional try/catch/throw style [19:40] isaacs: but throw ==> cb(er) [19:40] Gruni has joined the channel [19:40] isaacs: er, return cb(er) [19:40] jamescarr: I see [19:40] _announcer: Twitter: "best source for idiomatic node code or examples? #nodejs" -- TJ Singleton. http://twitter.com/tjsingleton/status/20328137437 [19:40] jamescarr: TJ Singleton... he likes the singleton (anti)pattern so much he changed his last name to it [19:40] jamescarr: :) [19:40] isaacs: !tweet @tjsingleton http://github.com/ry/node/tree/master/lib [19:41] isaacs: hehee [19:41] isaacs: The Singleton family is interesting. Every time they have a kid, it's the same kid. [19:41] jamescarr: lol [19:41] mape: tjholowaychuk: Ever experienced node not maxing out using express? If I use ab becnh on it I get around 1200req/sec and node hoovers at 20% cpu usage [19:41] pkrumins: ryah: wow it does work for you? [19:42] tjholowaychuk: mape: hm thats weird.. [19:42] isaacs: mape: wow, 1200 is NOT a lot of rps [19:42] isaacs: something is very wrong [19:42] satori_ has joined the channel [19:42] _announcer: Twitter: "Just released the tilemap database for a fun project I've been working on. http://github.com/creationix/world-db #nodejs" -- Tim Caswell. http://twitter.com/creationix/status/20328271387 [19:42] mape: Hmm I should go sleep I guess.. >_< I was benching the css file and the network couldn't keep up. Sorry [19:42] bradleymeck_: isaacs _frankie is down for tweetbacks until i get home :( [19:43] isaacs: bradleymeck_: ohnoes! [19:43] mape: 2400 when benching express [19:43] mikeal: creationix: what is that? [19:43] pkrumins: ryah: crashes here :( [19:43] tjholowaychuk: mape: when doing what tho? [19:43] creationix: mikeal: it's a very specilized database I made for my MMO demo [19:43] guybrush: uuuh creationix is working on a mmo? cant wait to see it :p [19:43] _announcer: Twitter: "#reddit Thingler — the amazingly simple, real-time, collaborative todo list. Node.js & CouchDB powered.: sub... http://bit.ly/9QOiBU #rulez" -- REDDITSPAMMOR. http://twitter.com/REDDITSPAMMOR/status/20328352160 [19:43] mape: tjholowaychuk: I was benching against my asset manager, forgot to swap the url, so the network was choking hence the low cpu usage [19:43] mikeal: why the 256 limit? [19:43] pkrumins: ryah: confirmed, works on other people computers too [19:44] tjholowaychuk: creationix: are we allowed to use other peoples graphics for company demos? [19:44] creationix: tjholowaychuk: it's creative commons [19:44] creationix: I assume so [19:44] tjholowaychuk: ah :) [19:44] creationix: mikeal: because I pack all the data into 1mb Buffer instances [19:44] bmizerany has joined the channel [19:44] creationix: well, the object indexes [19:44] jamescarr: hmmm.. [19:44] mikeal: i see [19:44] mikeal: that's kind of insane [19:45] mikeal: :) [19:45] creationix: mikeal: nothing serializes faster than buffer [19:45] creationix: just a single memcpy [19:45] mikeal: if we had more buffer methods for manipulation and merging I bet we could overcome this pretty easily [19:45] creationix: mikeal: I benchmarked the limits of the db when I was designing it [19:46] creationix: the laptop will run out of ram before the code stresses anything else [19:46] creationix: I was using 15gb before I gave up [19:46] ryah: pkrumins: *Shrug* [19:46] creationix: and it's only 1 byte per tile [19:46] tjholowaychuk: mape: I will try and look into that bottleneck though, hopefuly the view system can get a boost if that is thr problem [19:46] pkrumins: ryah: gonna figure it out, thanks! [19:47] pkrumins: ryah: thought my code was wrong but now it turns out it's right [19:47] ryah: yeah looks right to me [19:47] mikeal: creationix: is there a particular reason you don't use an existing geospatial db? [19:47] creationix: mikeal: I like things sinple [19:47] creationix: *simple [19:48] creationix: and this works great for my case [19:48] creationix: it's all in-memory and super fast [19:48] mikeal: and when your case grows you'll have to throw it away :) [19:48] creationix: perhaps, or just shard it [19:48] creationix: a single instance can handle a LOT of map [19:48] pkrumins: ryah: gonna turn that node-async into a small module for executing arbitrary js code asynchronously [19:48] mape: tjholowaychuk: http://gist.github.com/508680 a benchmark running 10k requests against a express app that has layout/index.ejs and where a new Date().toString() is used as a local variable and shown in the template [19:49] mape: not sure if that is helpful but yeah [19:49] mikeal: creationix: that's what i was thinking in a geospatial index [19:49] mikeal: each section of map would be in a single db [19:49] tjholowaychuk: mape: i will take a look in a sec [19:49] creationix: sure, that would work [19:49] creationix: mikeal: I'll cross that bridge if I reach it [19:49] mikeal: so that no matter how many people/objects are in that section the index wouldn't get too huge [19:49] mape: tjholowaychuk: no stress [19:49] mikeal: then the application has to handle the balancing [19:50] mape: What actions would cause high use of KeyedLoadIC: A keyed load IC from the snapshot ? [19:51] jamescarr: is it legal to define a getter on exports? [19:51] creationix: mikeal: did you ever make a binary friendly version of nStore? [19:51] _announcer: Twitter: "#nodejs v0.1.103 released http://bit.ly/8Xj487" -- Mathias Pettersson. http://twitter.com/mape/status/20328856164 [19:51] creationix: jamescarr: sure [19:51] creationix: Connect does that [19:52] creationix: for it's autoloading middleware layers [19:52] mikeal: creationix: i wrote the parser [19:52] shockie has joined the channel [19:52] mikeal: but i was still working out the bugs when i had to move on [19:52] mikeal: i'll come back to it at some point [19:52] mikeal: but it would be a really huge change to nStore [19:52] jamescarr: creationix, yeah, I think I'm going to do this to require and load in different submodules for paynode [19:52] mikeal: like, you would have to rewrite compaction [19:52] jamescarr: require('paynode').payflowPro.createClient(...) [19:52] creationix: mikeal: sure, most the code would be rewritten, but it's not much [19:53] jamescarr: require('paynode').authorizeNet.createClient('') [19:53] creationix: probably just make a new project like nStore [19:53] mikeal: that's what it currently is [19:53] creationix: jamescarr: sounds good, look at how it's done in connect [19:53] jamescarr: thanks [19:53] creationix: jamescarr: http://github.com/senchalabs/connect/blob/master/lib/connect/index.js#L378 [19:54] jamescarr: thats another thing... I noticed a lot of projects use index.js... [19:54] x_or: creationix, tjholowaychuk: What is the proper way to pass data from one middleware to another in connect? For instance, I have a filter module which does authentication, and want to pass a username into the next step where another middleware runs. [19:54] jamescarr: but I havent seen the reason why as opposed to anything.js [19:55] creationix: x_or: usually stick it as a property of req [19:55] tjholowaychuk: x_or: depends but the sess middleware for example populates req.session [19:55] creationix: exactely [19:55] x_or: Ah, easy enough. [19:56] creationix: x_or: if you could put it in the session, that would be good [19:56] jamescarr: creationix, ah nice... thats exactly what I just did ;) [19:56] shockie: is there a oauth server module available or someone is working on it? [19:57] jkreeftmeijer_: Hey, anyone with some Socket.IO experience around? :) [19:57] FransWillem: jkreeftmeijer: Not really, but a counter question: Do you still have a gist somewhere of your original experiment, without socket.io but with WebSockets ? [19:57] creationix: rauchg_: ^ [19:58] shockie: lo kreeftmeijer nice demo you had, i stalked some cursors:D [19:58] rauchg_: jkreeftmeijer: [19:58] jkreeftmeijer_: shockie: thanks :) [19:59] jkreeftmeijer_: FransWillem: https://gist.github.com/488562/529394fabdfc5608719de5732af7a3ab118aa91e [19:59] creationix: rauchg_: speaking of socket.io, I think I want it or something like it as a connect middleware [19:59] jkreeftmeijer_: it's the same gist :) [19:59] bradleymeck_: i really think connect should bind the this variable to a safe space to store things [19:59] creationix: rauchg_: better integrated with the connect stack [19:59] rauchg_: creationix: yep, im gonna do the connect session connection pretty soon [20:00] rauchg_: so we'll probably have socket.io middleware [20:00] shockie: that would be nice:) [20:02] creationix: rauchg_: I mean something like server.use('/socket.io', SocketIO(null, ...)) [20:02] creationix: and it's integrated with the connect routing system [20:02] creationix: so I could have to socket handlers at different routes [20:02] creationix: *two [20:03] adinardi has joined the channel [20:04] MrTopf: jkreeftmeijer: cool demo, you inspired me to try something out with websockets, too :-) [20:05] _announcer: Twitter: "Have you seen Thingler? The Node.js everything ready app: http://bit.ly/bKL77I" [gl] -- Dave Fayram. http://twitter.com/KirinDave/status/20329687030 [20:05] jesusabdullah: hahaha [20:06] nefD has joined the channel [20:07] kuya: i would love to see socket.io stuff working with connect as middleware [20:07] bmizeran_ has joined the channel [20:07] creationix: rauchg_: I think I'll start ripping apart socket.io and implementing it as a connect middleware [20:08] jesusabdullah: cloudhead: thingler is awesome! I could use the shit out of this. [20:08] creationix: rauchg_: hopefully that won't duplicate too much of your efforts [20:08] mape: cloudhead: hey, played around with less.js today, seems it breaks (drops everything after) when one uses vendor prefixes? [20:09] isaacs: anyone notice that process.binding("stdio").isStdoutBlocking() is not working properly any more? [20:09] isaacs: it never seems to know that i'm piping node to another process. [20:09] creationix: mape: less in my ivy works great [20:10] keeto has joined the channel [20:11] mape: creationix: hmm yeah, now that I'm doing it isolted it seems to work.. hmm [20:11] jkreeftmeijer_: MrTopf: cool, I'd like to see what you come up with. :) [20:12] pkrumins has joined the channel [20:12] kuya: creationix: is your mo [20:12] kuya: bah [20:12] kuya: creationix: is your mmo demo any where? [20:13] jamescarr: oh man [20:13] creationix: kuya: yes, but not announced generally [20:13] creationix: I want to polish it a little more [20:13] jamescarr: I've discovered that require('./foo/foo') isnt the best thing to do [20:13] kuya: creationix: id love a peek sometime [20:13] jamescarr: always unshift require paths [20:14] hansek has joined the channel [20:14] joshbuddy has joined the channel [20:14] jamescarr: if I had left the "./" out of my requires they would have "just worked" even after moving ;) [20:14] MrTopf: jkreeftmeijer, I wonder if it works at all ;-) [20:15] MrTopf: jkreeftmeijer, right now I am more playing around with canvas and then I will hook this up to websockets and node [20:15] creationix: kuya: did you get the PM? [20:15] MrTopf: too many cool things to play around with these days.. [20:16] MrTopf: somehow canvas etc. sends me back to the time I was programming C-64 games and demos ;-) [20:17] rtomayko has joined the channel [20:17] knuckolls has joined the channel [20:19] _announcer: Twitter: "Playing around with #nodejs and #express and it seems quite nice, need to get used to #JS. Offers nice features. Wonder if its stable so .." -- Phil. http://twitter.com/ischi/status/20330572890 [20:20] _announcer: Twitter: "Now that this Facebook app is finished and out of the door I finally have time again to play around with canvas, node.js and websockets" -- Christian Scholz. http://twitter.com/mrtopf/status/20330634614 [20:22] _announcer: Twitter: "So close to cloning Node.js Buffer Objects through Memcached. 1 issue: 1 char is changed out of the whole 102kb I'm testing. 1 char to much" -- Arnout Kazemier. http://twitter.com/3rdEden/status/20330727756 [20:22] mape: creationix: my fault again, seems I had some ; where they shouldn't be and less was failing silently [20:23] _announcer: Twitter: "Excellent post & actually useful demo about node.js by @scaron. I love how the long polling implementation is simple http://bit.ly/dgsb2X" -- jpjoyal. http://twitter.com/jpjoyal/status/20330757587 [20:23] creationix: mape: I would say you should go to bed before the sun comes up, but I know better (it's already light there) [20:23] mape: hehe [20:23] creationix: mape: err, I read my clock wrong, nevermind [20:24] borior: isaacs: just to say that if i'm moving "exactly what the user typed" to highest priority, I'm going to need to do the checking for isDirectory in the the same commit [20:24] TommyM has joined the channel [20:24] mape: probly should though, last night my neightbours were playing music till 3am, was more or less dead today at work [20:24] creationix: mape: you're the same time-zone as stockholm right? [20:24] isaacs: borior: do the isDirectory check first. [20:24] isaacs: borior: that's a problem today, if you have a dir named "foo.js" [20:25] isaacs: borior: then you can do the priority reordering separately [20:25] mape: creationix: yeah, sweden is just one time zone, CET, or GMT+1 [20:25] borior: isaacs: git stash here we come [20:25] isaacs: wee! [20:25] isaacs: you can also rebase things around, or "git add -p" and just add the clumps you want [20:25] _announcer: Twitter: "The weird thing is the 1 Char change only occurs when i'm sending a binary nodejs buffer. A ascii based buffers are fine." -- Arnout Kazemier. http://twitter.com/3rdEden/status/20330920939 [20:26] zedas has joined the channel [20:27] sstreza has joined the channel [20:27] figital has joined the channel [20:28] isaacs: with git, you are limited only by your imagination. [20:28] mape: and ignorance [20:29] V1: Is there a way to detect what kind of encoding was used when a user written to Buffer? And you receive the buffer as argument? It seems you can only make near identical buffer copies if you toString() the value of the buffer with the same encoding that was used to write to the buffer. [20:29] ryah: node chat: [20:29] ryah: UID PID PPID C SZ RSS PSR STIME TTY TIME CMD [20:29] ryah: ryan 25651 4245 0 11204 8512 2 Jun04 pts/2 00:06:50 ../node/node server.js [20:29] ryah: 2 months [20:29] ryah: not bad, i think [20:30] isaacs: ryah: thoughts on process.binding("stdio").isATTY? [20:30] ryah: what about it? [20:30] saikat has joined the channel [20:30] _announcer: Twitter: "@stevensanderson /Node.js w/ Cygwin/ Was it hard to set up?" -- Jon Galloway. http://twitter.com/jongalloway/status/20331197711 [20:30] isaacs: ryah: should we have one? [20:31] mjr_: ryah: I restarted my node proxy a few weeks ago, but it has been stable at around 10MB RSS for months now. [20:31] isaacs: ryah: it seems like ever since IsBlocking was fixed (on 93cb0964) i have no way to know if stdout is a tty or not [20:31] ryah: it exists already [20:31] jamescarr: heh... everytime I run the integration specs for paynode I get merchant emails ;) [20:31] jamescarr: from authorize.net. I'll have to put a stop to that ;) [20:31] isaacs: ryah: where? [20:32] ryah: e% grep -R isatty src [20:32] ryah: src/node_stdio.cc: //if (!isatty(fd)) goto fatal; [20:32] ryah: src/node_stdio.cc: if (isatty(STDIN_FILENO)) { [20:32] ryah: src/node_stdio.cc: if (isatty(fd)) return false; [20:32] ryah: src/node_stdio.cc: if (isatty(STDOUT_FILENO)) { [20:32] benburkert has joined the channel [20:32] ryah: oh yeah [20:32] ryah: maybe there isnt one [20:32] isaacs: ryah: yeah, but IsBlocking also returns false for other things [20:32] sstreza has joined the channel [20:33] isaacs: ryah: echo "foo" | node isatty.js | cat [20:33] isaacs: "isatty" needs to know not to wrap in funky \033[ color codes and stuff [20:33] MrTopf: Hm, when trying the socket.io server example, those chats just say "Connecting..." [20:34] ryah: isaacs: okay [20:34] isaacs: i can write it, just wondering if there was a reason to not have it. [20:34] ryah: but i don't want people using process.binding() [20:34] ryah: can't we come up with a better API? [20:34] isaacs: yeah, we should have a require("stdio") module [20:35] isaacs: there's a lot of really handy stuff on that binding now [20:35] MrTopf: ah, because client/ is empty [20:35] _announcer: Twitter: "Compiling node.js on opensolaris really makes you dislike scons" -- Martin Little. http://twitter.com/Khronos3030/status/20331445051 [20:35] ryah: isaacs: okay [20:36] isaacs: even if the module just exports the binding, then at least we can get away from encouraging bad practices. [20:39] creationix: isaacs: which parts in particular do you want public? [20:39] _announcer: Twitter: "Watching a Google Tech Talk on node.js. 'Tis interesting stuff, indeed." -- Ben Hayman. http://twitter.com/bnhymn/status/20331682557 [20:40] isaacs: creationix: basically, everything that's on the stdio binding now. i'm using it in a lot of places. [20:40] pkrumins: beh [20:40] pkrumins: still 0x404 [20:40] isaacs: creationix: it's worth thinking bout the API a bit, though [20:40] creationix: isaacs: I want the ability to enumerate over the natives [20:40] creationix: just the names is fine [20:40] isaacs: Object.keys(process.binding("natives")) [20:41] creationix: exactely, but that's private [20:41] isaacs: i see. [20:41] isaacs: oh, also, i'd like to put process.stdout/openStdin/stderr into require("stdio").stdout/openStdin/stderr [20:42] creationix: isaacs: +1 to that [20:42] isaacs: ACTION 's mission is to remove all the code from src/node.js [20:43] pufuwozu has joined the channel [20:43] creationix: lol [20:43] isaacs: even the console stuff should be in a module. node.js should just do "global.console = require('console')" [20:44] creationix: fair enough [20:44] isaacs: load the deprecation messages, the console module, setTimeout/Interval, the module loader, and then exit. [20:44] isaacs: well, then loop [20:45] creationix: then I could make a custom node environment pretty easily [20:45] feydr: i like this idea as well [20:46] MrTopf: rauchg_, I have the problem that the chat demo only connects here and then. Is this known or maybe a problem on my side? [20:47] jkreeftmeijer_: MrTopf: I'm not having that problem, is that in specific browsers? [20:47] _announcer: Twitter: "Node.js, is this the next big thing? - http://bit.ly/cr6nJN" -- Christian Felde. http://twitter.com/cfelde/status/20332141264 [20:47] MrTopf: jkreeftmeijer: well, Chrome seems to work better but it also takes a bit until I get a connection (and only in one tab) [20:47] MrTopf: FF 3.6 does not connect at all [20:48] MrTopf: I used the node version of socket.io and downloaded the client additionally and copied it into the client/ folder [20:48] MrTopf: using node v0.1.103 [20:48] borior: isaacs: oook, so, part one of two. could you check this over before I push? [20:48] borior: http://gist.github.com/508771 [20:48] MrTopf: (all under linux) [20:49] borior: isaacs: except I've forgotten to add a file inside that empty directory [20:49] jkreeftmeijer_: MrTopf: have you fetched the submodules? [20:49] MrTopf: I downloaded it from the download section [20:49] isaacs: borior: line 51, you should add "else searchLocations(); [20:49] isaacs: " [20:50] MrTopf: but maybe I try the repo [20:50] jkreeftmeijer_: And are you running the server with sudo? [20:50] MrTopf: I guess not [20:50] jkreeftmeijer_: Ok, you should [20:50] MrTopf: ah, ic [20:50] pkrumins: ryah: still here? i wonder if your computer is 64 bit [20:50] jkreeftmeijer_: It won't be able to use the port the flash fallback needs [20:50] MrTopf: will try :) [20:50] borior: isaacs: that's done at the end of the function [20:50] borior: it falls through [20:50] pkrumins: ryah: found the solution to my problem -- http://groups.google.com/group/nodejs/browse_thread/thread/af28b0857a60c7e6 [20:50] pkrumins: ryah: had to add "-D_FILE_OFFSET_BITS=64" and -D_LARGEFILE_SOURCE" [20:50] MrTopf: jkreeftmeijer: but would it need the flash fallback in FF4.0 (because I also tested that one) [20:51] isaacs: borior: the fallthrough catches it for the sync case, but it looks like you've got that twice. (69 and 71) [20:51] jkreeftmeijer_: MrTopf: FF4 has web sockets, right? [20:51] MrTopf: jkreeftmeijer: I thought so [20:51] minver: Does the EvnetEmitter object have some kind of id? [20:51] jkreeftmeijer_: Then it should just work. :) [20:51] MrTopf: but it also only works in one chrome tab at a time [20:51] MrTopf: when I close one the next one suddenly connects [20:51] jkreeftmeijer_: wha? [20:51] jkreeftmeijer_: that's weird [20:52] borior: isaacs: god, quite right [20:52] isaacs: borior: and the async case doesn't fall through--it's async :) [20:52] jkreeftmeijer_: I'd try to git clone it :) [20:52] jkreeftmeijer_: I'm going, bye! :) [20:52] MrTopf: jkreeftmeijer: thanks for the help, take care! :) [20:52] isaacs: borior: it looks like that is a bug right now, actually.. one of the many reasons why merging sync and async require() is a royal pita [20:52] MrTopf: and I will clone it.. sudo didn't help [20:53] MrTopf: sudo made no client connect ;-) [20:53] isaacs: borior: ie, right now there's a race condition. your patch can fix it, though [20:53] jkreeftmeijer_: MrTopf: well, good luck. See ya :) [20:53] MrTopf: thanks :) [20:53] jkreeftmeijer_: That's wierd... [20:53] jkreeftmeijer_: really going now ;) [20:53] jkreeftmeijer_ has left the channel [20:54] jkreeftmeijer_ has joined the channel [20:55] tilgovi has joined the channel [20:55] MrTopf: jkreeftmeijer: welcome back ;-) [20:55] V1: Is there a C++ book for dummies / javascript developers? :p [20:56] MrTopf: git clone did not change anything.. so I guess I will do some debugging then [20:57] ryah: pkrumins: oh interesting [20:57] ryah: pkrumins: want to patch ? [20:58] pkrumins: ryah: sure! [20:59] pkrumins: ryah: except i don't really know how to patch this as the client code has to be compiled with those flags [20:59] pkrumins: means i got to find the reason they are necessary in the first place [20:59] ryah: pkrumins: hm - probably in tools/wafadmin/Tools/node_addon.py [21:00] dnolen has joined the channel [21:08] creationix: sometimes js is just plain weird: [21:08] creationix: node> a == a [21:08] creationix: false [21:09] tpryme has joined the channel [21:09] d0k: NaN != NaN is well specified [21:09] ashleydev: creationix: I don't get that, [21:09] creationix: d0k: I know, but it's still weird when I find it [21:09] creationix: ashleydev: turns out a was NaN [21:09] ashleydev: creationix: it's either an error that it's not defined or it is true [21:10] pkrumins: ryah: looking into it [21:10] sudoer has joined the channel [21:10] creationix: ashleydev: a = NaN; a == a [21:10] creationix: try it [21:10] ashleydev: creationix: heh [21:10] mape: js> a = NaN; a == a; [21:10] gbot2: mape: false [21:11] d0k: blame the IEEE ;) [21:11] creationix: isn't there an isNaN function somewhere? [21:11] creationix: oh, it's global [21:11] creationix: hah [21:11] mape: js> isNan('wollibolli') [21:11] gbot2: mape: Error: ReferenceError: isNan is not defined [21:11] mikeal: that's part of the language [21:12] mape: js> isNaN('wollibolli') [21:12] gbot2: mape: true [21:12] mikeal: if it wasn't, we'd all be fucked [21:12] d0k: it's probably implemented as function(x) { return a != a; } [21:12] creationix: mikeal: yeah, but I was looking on Number and Number.prototype [21:12] pkrumins: ryah: i am not sure about adding those defines to all the compiled libraries [21:13] DoNaLd`: hi all, exist some example for using NodeJs + Express + PostgreSQL ? .. some little simple howto [21:14] mikeal: how current is the postgres driver? [21:16] DoNaLd`: 8.4 [21:17] pkrumins: ryah: meanwhile have another question about Persistent -- what is it necessary for? [21:17] wattz: im going to kill people [21:17] wattz: kittens. [21:17] creationix: mikeal: which driver? [21:17] pkrumins: ryah: as far as I have examined various modules, some use it, some dont [21:17] x_or has joined the channel [21:17] mikeal: yours is the only complete on isn't it/ [21:17] mikeal: ? [21:17] wattz: http://codepad.org/oYxGBEfJ << such a pretty errors [21:17] pkrumins: ryah: so I am not sure if I need it in my module if I use eio_custom async stuff? [21:17] pquerna: nodeknockout question. [21:17] pquerna: what if I don't want to make a webapp [21:17] creationix: mikeal: mine implements the postgres protocol which hasn't changed in a long time [21:17] Dmitry has joined the channel [21:17] wattz: pquerna: don't! [21:17] creationix: will work for any postgres version being used [21:17] mape: pquerna: npm it [21:18] mikeal: pquerna: i don't think that's a requirement [21:18] creationix: mikeal: or are you asking about node apis? [21:18] mikeal: creationix: sure, but node has changed :) [21:18] pquerna: well, its an implied one if it needs to run on Joyent or Heriko [21:18] creationix: mikeal: I haven't tested it in a while [21:18] TobiasFar has joined the channel [21:18] creationix: my heroku app uses it [21:18] isaacs: pquerna: yeah, instead of publishing it on joyent/heroku/whatever, publish it on npm. [21:18] pquerna: k [21:18] sh1mmer has joined the channel [21:18] mikeal: isn't one of those just a generic VPS? [21:18] isaacs: pquerna: if it's a server app, then it needs to be living on one of those places. [21:18] creationix: mikeal: yep, still works [21:19] pquerna: i'm thinking about rewriting reconnoiter in a day. [21:19] pquerna: well, the noitd side of it at least. [21:19] isaacs: pquerna: at least, that's what i was told about that same question. you should email the nodeknockout team and ask specifically [21:19] creationix: mikeal: I have heard reports that there is a race condition in my lib somewhere and it falls apart under high concurrent load [21:20] creationix: pquerna: basically you can do anything got nodeknockout, but web-apps are easier to judge [21:20] mikeal: pquerna: would you use node-pcap? [21:20] creationix: and so non web-apps will likely be judged unfairly [21:20] isaacs: not by me! [21:20] isaacs: a few of us in the judging panel aren't celebrities [21:20] isaacs: but actual hackers [21:20] pquerna: mikeal: nah. reconnoiter just does http/https/ICMP/smtp/etc type checks. [21:21] DoNaLd`: ok .. so exist some example or not ? [21:21] isaacs: but if you have a node site that just echoes out some hard-coded string of markup that loads jquery and does something funny, you'll probably win. [21:21] pquerna: indeed :( [21:21] ryan_gahl: 11,00•12,00isaacs11,00• we're all hackers here: http://www.youtube.com/watch?v=O2rGTXHvPCQ&feature=player_embedded [21:22] mape: with the colors [21:22] MrTopf: so after some debugging it seems that Socket of socket.io stay in "connecting" state but never actually connects [21:22] MrTopf: the connect event is not fired [21:22] isaacs: wow, this is like shipping channels in the ocean! [21:22] isaacs: hahaha [21:22] mikeal: pquerna: would you not be re-engineering the web interface then? [21:23] isaacs: ryan_gahl: what show is thi!? [21:23] isaacs: ryan_gahl: this is hilarious [21:23] ryan_gahl: "Numbers" [21:23] pquerna: mikeal: oh hell no, thats what cloudkick is :D [21:23] mikeal: hehe [21:23] ryan_gahl: I love the line "but I speak leet" [21:23] pquerna: mikeal: i want to replace the noitd side -- noitd does all the external checking. Right now its a evented C based program with embeded Lua [21:23] tjholowaychuk: mape: sucks if that overhead is jsut from ejs, because with express hello world type crap i get an easy 10k rps [21:23] isaacs: ryan_gahl: they should see if they can create a gui app in vb, try to get an ip. [21:24] pquerna: mikeal: what I'd like to do with node though is use node-webworker, and spawn each check-type in a sub-process, to provide more fault isolation inside a single check type for example [21:24] isaacs: ryan_gahl: http://www.youtube.com/watch?v=hkDD03yeLnU [21:24] pquerna: which would be very difficult to get to with its internals right now [21:24] pquerna: so, all your SSH checks run in a seperate worker process [21:24] pquerna: so they don't explode when libssh2 has a bug [21:24] jamescarr: hmmm.. one gateway has success/failure for responses, with failure being the "catch all" for declined cards and invalid card data. Another has multiple responses such as declined/error/held for review [21:25] ryan_gahl: 11,00•12,00isaacs11,00• LOL [21:25] jamescarr: should I just group those all under "failure"? [21:25] mape: tjholowaychuk: well the js part is like 10ish%? [21:25] tpryme: Anyone know of a datamapper implementation in node? [21:25] creationix: js> (![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]] [21:25] gbot2: creationix: "fail" [21:25] mikeal: that sounds pretty cool [21:26] mikeal: i wonder how many judges would understand how cool it is tho [21:26] mikeal: :) [21:26] mikeal: you can hope that you get me and Ryan :) [21:26] tjholowaychuk: mape: whats that gist again [21:26] mape: http://gist.github.com/508680 [21:26] admc has joined the channel [21:26] aho has joined the channel [21:27] tjholowaychuk: mape: what about run with EXPRESS_ENV=production? ejs should be doing pretty much nothing after that [21:28] mape: how do I run with that? [21:28] bradleymeck_: js>!-!+!!''[-''] [21:28] _announcer: Twitter: "Node.js, is this the next big thing? - dzone.com: queued links: javascript - Sure, it might be very early right now… http://bit.ly/9gpuTX" -- Kenneth McCall. http://twitter.com/ellisgl/status/20334578736 [21:28] isaacs: pquerna: yeah, go for it [21:28] tjholowaychuk: mape: just do $ EXPRESS_ENV=production node app.js [21:29] paul_irish has left the channel [21:29] sh1mmer has joined the channel [21:29] creationix: bradleymeck_: you busted it! [21:29] bradleymeck_: js> !-!+!!''[-''] + '/cry' [21:29] gbot2: bradleymeck_: "false/cry" [21:30] jesusabdullah: o_o [21:30] mape: tjholowaychuk: Requests per second: 4489.31 [#/sec] (mean) [21:30] jesusabdullah: ls [21:30] jesusabdullah: er [21:30] tjholowaychuk: mape: hmm, a little better [21:32] knuckolls has joined the channel [21:32] b_erb has joined the channel [21:32] mape: yeah [21:32] isaacs: wow, I love it when I search for something that I forgot I'd done, and find that I'm on the first page of results. [21:32] isaacs: http://www.google.com/search?q=v8+doxygen+docs&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a [21:32] tjholowaychuk: mape: if the response was a Buffer it would probably be way better, not sure if the cost of Buffering it would speed things up [21:32] tjholowaychuk: or just make it worse [21:33] mape: guess that depends on how write heavy it is [21:33] borior: isaacs: try again. this eliminates the race condition http://gist.github.com/508771 [21:33] borior: (but that whole lot needs refactoring, badly, I think...) [21:33] isaacs: borior: can you do me a favor, and enter a filename ending in ".patch" when you gist these? it makes it easier to read wiht the red and green coloring [21:34] borior: isaacs: refresh [21:34] borior: done [21:34] isaacs: kewl, thanks [21:34] isaacs: or you can set the file type to "diff" explicitly, i think [21:34] tjholowaychuk: mape: ill try that in a bit just to take a look [21:34] mape: tjholowaychuk: awsome, might be sleeping but give me a should if you find anything interesting [21:35] tjholowaychuk: mape: will do [21:35] mjijackson has joined the channel [21:35] creationix: ok, trying my app in IE, wish me luck [21:35] jesusabdullah: good luck! [21:35] isaacs: borior: i like splitting searchLocations into two functions [21:35] FransWillem: Yay, custom WebSocket server implementation working :D [21:36] creationix: FransWillem: cool [21:36] borior: isaacs: I think the require/require.async should be two entirely different code paths (rather than if(callback) everywhere), but that's for another time [21:36] isaacs: borior: yeah. require should be in node, and require.async should be in some other program ;) [21:36] mape: tjholowaychuk: 8500 req/sec just doing res.send('hellow world'); [21:36] borior: heh [21:36] isaacs: it's pretty trivial to build require.async on top of require.sync [21:36] shockie has joined the channel [21:36] tjholowaychuk: mape: hm I think I was getting higher than that [21:37] isaacs: but doing the two together in the same place is super annoying. [21:37] bradleymeck_: js> /[/ /]/ [21:37] gbot2: bradleymeck_: /[/ /]/ [21:37] bradleymeck_: whats wrong with ^ [21:37] borior: but more importantly, that race condition arose because it's impossible to return the function the level above a callback function. it's a very easy antipattern to fall into. [21:37] ewdafa has joined the channel [21:37] tjholowaychuk: mape: I get 10k [21:37] mape: On? [21:38] tjholowaychuk: mape: on hello world [21:38] isaacs: borior: exactly [21:38] jamescarr: heh... what if someone ported JSPs to node as a templating engine? :) [21:38] isaacs: borior: and a very hard one to spot, even when you're going over the code repeatedly. [21:38] tjholowaychuk: mape: which is what I got with Connect hello world as well [21:38] mape: tjholowaychuk: ah yeah get 9700 when I remove asset manager [21:38] borior: isaacs: absolutely [21:38] isaacs: borior: what's worse, it's not just a race condition... it'll actually do a bunch of unnecessary fs.stat calls if you're doing require.async today [21:38] isaacs: and potentially even execute multiple different modules. [21:38] tjholowaychuk: mape: even the logger will drop like 1000 rps, just reality i guess [21:38] tjholowaychuk: mape: your app is only fast if you do nothing :D [21:38] mape: yeah [21:39] borior: yup, the execution path splits in two, which was not the desired effect =) [21:39] isaacs: that's a really odd and weird bug. [21:39] mape: hehe, do less, be faster [21:39] isaacs: anyway, lgtm. [21:39] borior: okay, pushing that one [21:39] isaacs: the other stuff should be simpler. [21:39] tjholowaychuk: mape: ya i get 6700 rps with logger lol [21:39] borior: i think `git stash pop` will just work [21:40] borior: we'll see [21:40] mape: so from 9k req to 4k rendering the template [21:40] MrTopf: just render it on the client side ;-) [21:40] isaacs: borior: you could probably even just build up the locations like: exts.map(function (e) { return req+"."+e}).concat(req).concat(exts.map(function(e) { return path.join(req, "index."+e) })) [21:41] FransWillem: creationix: What do you think of this syntax: http://pastebin.com/MUFJBQxy ? [21:41] _announcer: Twitter: "how does anyone in the node.js channel get any work done? what are these guys?" -- Dylan Clendenin. http://twitter.com/deepthawtz/status/20335318749 [21:41] mape: tjholowaychuk: just find it strange I don't find more on the rendering engine in the profile [21:41] borior: sure, but my patch will do it with only one loop [21:41] dylang: that wasn't me but i've been thinking the same thing [21:41] tjholowaychuk: mape: yea me too [21:42] Clooth has joined the channel [21:42] wattz: hahahahahhahhaha [21:42] creationix: FransWillem: interesting [21:42] wattz: freaking OS X and it's horrible linking... [21:43] creationix: deepthawtz: :) [21:43] deepthawtz: like, wheaties? [21:43] pquerna: osx has good linking :| [21:43] wattz: using xcode? cause im not using xcode. [21:44] borior: isaacs: ok, for my fixtures, am I right in thinking that .node is a binary module? [21:44] creationix: deepthawtz: who says we get work done ;) [21:44] pquerna: you mean, the dylib format right? [21:44] isaacs: borior: dont' worry too much about microoptimizations. require() can be slow, it's ok, as long as it's not ridiculous. the fs calls are gonna be much slower than anything you do in js anyway. [21:44] deepthawtz: creationix: :) [21:44] wattz: mainly just linking against mysqlclient lib [21:44] FransWillem: creationix: Basically my attempt at a WebSocket server with an API that's as close to Node.js as it gets, starting point for my WebSocketFallback library: a library that will server-side implement an API like this, and client side a WebSocketFallback object which will feel and act just like a WebSocket object, but with fallback options for long-polling and maybe flash :) [21:44] isaacs: borior: yes. .node is a process.dlopen thing [21:45] Gruni has joined the channel [21:45] creationix: FransWillem: so why write a socket.io clone? just curious [21:45] FransWillem: creationix: I hate the socket.io API :p [21:45] creationix: good reason! [21:46] borior: isaacs: okay, I know this sounds like a stupid question, but what's the quickest way to create a .node file that's equivalent to "exports.file1 = 'file1.node';" [21:46] creationix: I just want something that works well with connect, I don't care if it's socket.io modified or something else [21:46] FransWillem: I mean, loads of guys sat down to write the WebSocket API, ryah sat down to write a stream API, and there we have socket.io just throwing both out of the window and implementing something completely new completely unrelated to the existing APIs [21:46] isaacs: borior: .node files are compiled with a node-waf [21:46] pgriess has joined the channel [21:47] timmywil has joined the channel [21:47] drudge: i like this one: "Java is to JavaScript what Car is to Carpet." - Chris Heilmann [21:47] tjholowaychuk: creationix: would be nice in connect. I was doing regular WebSocket stuff so i was not using socket.io, but whatever lib I took from github was breaking all over lol [21:47] tjholowaychuk: something solid would be nice [21:47] borior: hmm, i guess I could just catch the dlopen failure, that tells me that its tried to load the .node file... [21:48] jchris has joined the channel [21:48] jamescarr: tjholowaychuk, which lib? [21:48] creationix: tjholowaychuk: all the transports supported by socket.io are (initially at least) plain http [21:48] zaach has left the channel [21:48] tjholowaychuk: creationix: no i know i just wanted something super light weight to play around with [21:48] tjholowaychuk: jamescarr: cant remember now I have it pasted in my lib [21:49] tjholowaychuk: made a shitty little rts demo thing lol [21:49] tjholowaychuk: and then got bored [21:49] jamescarr: heh [21:50] _announcer: Twitter: "Free node.js vps until september 1st - Hosting node.js. Learning node.js: http://blog.nodejshost.com/" -- Hernan Garcia. http://twitter.com/theprogrammer/status/20335848343 [21:50] isaacs: borior: yeah, that's a good approach. compiling crap for tests seems a bit heavy [21:51] jchris has joined the channel [21:52] jamescarr: heh... google wave is being discontinued, saw that coming [21:52] aurynn: it is? [21:52] jamescarr: yeah [21:52] pquerna: maybe it means all of google .au will work on node.js now. [21:52] bradleymeck_: wave was interesting, but too hard to use in practice [21:52] jamescarr: http://googleblog.blogspot.com/2010/08/update-on-google-wave.html [21:52] borior: isaacs: agreed [21:53] deepthawtz: great, google realized irc alread exists [21:53] borior: isaacs: ok, part 2 coming up. there's quite a hefty set of fixtures for this, just to do it properly [21:53] jan247 has joined the channel [21:53] jamescarr: bradleymeck_, I jumped on board when I got a beta invite and played with the API. Had fund hacking the API, but when it came to using it I found no use for it [21:53] maxsilver has joined the channel [21:53] _announcer: Twitter: "did some "hello world" with #node.js its damn good .. and #javascript looks like the most powerfull language ever made :)" -- Abhilshit Soni. http://twitter.com/abhilshit/status/20336058528 [21:53] jamescarr: *had fun, not fund [21:53] bradleymeck_: same :/ [21:54] jamescarr: heh... must be interesting to have a curseword in your name [21:54] jamescarr: Abhilshit [21:54] cgcardona_androi has joined the channel [21:55] jkreeftmeijer_ has joined the channel [21:57] wattz: eh, ObjectTemplate has to method Set ._o [21:57] isaacs: here's a fun game: make distclean in node, then kick off a ./configure && make, switch to your editor while i'ts running, and try to implement a feature before it gets to node. [21:57] isaacs: if it doesn't compile, you lose. [21:57] satori_: lol. [21:57] romainhuet has joined the channel [21:57] wattz: ACTION stares at the v8 doc.. [21:57] wattz: ACTION starts to cry [21:58] satori_: v8 docs are not great [21:58] wattz: yeah [21:59] wattz: nodejs.org for addons ain't all that spiffy either [21:59] satori_: But there are other sources of info out there [21:59] borior: ok, isaacs, could you look this over: http://gist.github.com/508874 [21:59] wattz: stumbling progress is fun [21:59] satori_: I bashed my head against it for a few days before I grokked it and made real progress [22:00] wattz: i just want to return: {error: "hahaha, fail.", errno:"123"} [22:00] satori_: reading other peoples code on github was the best source of info [22:00] isaacs: borior: lgtm. [22:00] isaacs: borior: does make test-all still work? [22:01] phiggins has joined the channel [22:01] borior: isaacs: yup! =) [22:02] borior: pushing [22:02] borior: ok, both pushed to http://github.com/nickstenning/node [22:03] borior: would you like me to open an issue on ry/node, or a pull request, or ping ryah? [22:04] isaacs: borior: 1. git fetch -a ry 2. git format-patch ry/master 3. email nodejs@googlegroups.com and ry@tinyclouds.org, attach the .patch files. [22:04] x_or has joined the channel [22:04] borior: isaacs: will do [22:05] isaacs: (assuming that ry is a git remote pointing at git://github.com/ry/node.git, of course) [22:05] hij1nx has joined the channel [22:05] borior: that's what hub's for =) [22:05] isaacs: yep :) [22:07] borior: isaacs[away]: thank you for your guidance! [22:07] admc has joined the channel [22:08] DoNaLd` has left the channel [22:09] kriszyp has joined the channel [22:11] _announcer: Twitter: "#fact Buildbot is superior to Integrity in every way. A node.js based CI server would be interesting." -- Chris Eppstein. http://twitter.com/chriseppstein/status/20337141819 [22:14] benburkert has joined the channel [22:14] jamescarr: hmmm [22:15] devinus has joined the channel [22:15] mikeal: i f'ing hate buildbot [22:15] paul___ has joined the channel [22:16] joshbuddy has joined the channel [22:16] javajunky has joined the channel [22:19] Blackguard has joined the channel [22:19] Gruni has joined the channel [22:22] isaacs: borior: no problem. thanks for doing the work :) [22:23] saikat: rauchg_: is port 8080 just more likely to get filtered out by proxies because it's often used for localhost services? [22:23] saikat: i didn't know that it's dangerous to use 8080 for public services [22:24] rauchg_: well basically because many places filter traffic that goes outside of 80 [22:24] rauchg_: as a rule [22:24] rauchg_: not because 8080 is bad or anything [22:24] rauchg_: corporate proxies and the like [22:24] saikat: hm, so my plan of using a separate port for my node server [22:24] saikat: isn't a good idea regardless of what port i use? [22:24] rauchg_: has some downsides. [22:24] cloudhead: so if I try installing the github version of node, and run `node -v`, I get 0.97 [22:25] saikat: like currently, my setup is that all my traffic goes to port 80 through nginx and then proxied to django/serves static files based on the path [22:25] saikat: but nginx can't handle websockets, and haproxy seems like it maybe can, but even that seems suspect [22:25] rauchg_: yeah yeah i figured [22:25] saikat: so what do people do in this scenario? [22:25] _announcer: Twitter: "I am continually amazed at how much you can do, with so little actual code in #nodejs. #dev #js" -- Spot. http://twitter.com/spotnyk/status/20338049698 [22:25] rauchg_: what i'd do [22:25] rauchg_: is set up socket.io [22:25] rauchg_: in io.yourdomain.com:80 [22:25] rauchg_: io. pointing to a different IP [22:26] saikat: a single machine can't listen to multiple ips can it? [22:26] pquerna: yes, it can [22:26] rauchg_: then do message passing with your django app [22:26] pquerna: if its a VPS, it depends upon your hosting company etc [22:26] saikat: message passing with my django app? to node? [22:27] saikat: why wouldn't i just have node listen directly to io.mydomain.com:80? [22:27] saikat: if my machine can indeed listen to both io.mydomain.com and mydomain.com [22:27] astrolin has joined the channel [22:29] amerine has joined the channel [22:40] tjholowaychuk: does realpath work properly now? [22:43] ajpiano has joined the channel [22:43] paul___ has joined the channel [22:44] CarbonicMan has joined the channel [22:44] creationix: rauchg_: I'm getting an error with socket.io and IE8 [22:44] isaacs: tjholowaychuk: no, realpath is still a bit broken, i think. [22:44] rauchg_: creationix: what is it [22:44] isaacs: tjholowaychuk: i forgot about it *^_^* [22:45] rauchg_: saikat: [22:45] isaacs: tjholowaychuk: or rather, i started down the "doit in c" route, then realized why we didn't do it in C originally, and never got around to doing it in JS. so, if you feel like tackling it, go nuts ;) [22:45] rauchg_: by message passing i mean [22:45] creationix: rauchg_: https://gist.github.com/6b5eaaea50d6f5924217 [22:45] rauchg_: you can set up a TCP listener [22:45] rauchg_: in your node app [22:45] rauchg_: and talk to django [22:45] rauchg_: or set up a hidden http endpoint [22:46] CarbonicMan: \attach irc.mozilla.org [22:46] saikat: oh i see - i actually don't have much of a need to communicate with my django app from node (i think) [22:47] saikat: but thanks for the advice rauchg_ [22:47] CarbonicMan: oops [22:47] rauchg_: saikat: np [22:47] tjholowaychuk: isaacs: haha ya i did the same (c) [22:48] isaacs: tjholowaychuk: yeah, it's super broken on some systems, though. like, security issues with buffer overruns and executing native code [22:48] tjholowaychuk: isaacs: ah :( [22:48] pdelgallego has joined the channel [22:48] knuckolls has joined the channel [22:48] isaacs: i read a bunch of horror stories [22:49] romainhuet has joined the channel [22:50] eggie5 has joined the channel [22:50] eggie5: ello? [22:50] eggie5: what's the best postgresql module for node? [22:51] eggie5: i see a few... [22:52] rauchg_: creationix: [22:52] rauchg_: http://cl.ly/1sFQ [22:52] pedro has joined the channel [22:52] creationix: eggie5: mine is great for low-load, ryah's is good if it still compiles [22:53] rauchg_: creationix: what happens to it under high-load ? [22:53] creationix: rauchg_: are you using any frameworks? [22:53] littlebir: Does anyone recommend using the Express JS framework? [22:53] eggie5: creationix: i'm using it for reads only - what's it called? [22:53] rauchg_: creationix: no, that's vanilla socket.io [22:53] rauchg_: littlebir: yes [22:53] rauchg_: tjholowaychuk and me [22:54] littlebir: I just tried the sample program they wanted to demonstrate on the guide, and it throws an error after my first request [22:54] creationix: eggie5: http://github.com/creationix/postgres-js [22:54] pedro: hi, what are you using for testing in node? [22:54] littlebir: crypto related [22:54] eggie5: pedro: jasmine works for me [22:54] tjholowaychuk: littlebir: what is it? [22:55] tjholowaychuk: littlebir: I ran into that randomly the other day, I dont think it is express related though [22:55] tjholowaychuk: possibly Connect or node [22:55] littlebir: http://pastebin.com/uJVZ3Bj0 [22:55] littlebir: connect yeah [22:55] tjholowaychuk: ah yes [22:55] pedro: eggie5: i will take a look at it [22:55] pedro: thanks [22:55] tjholowaychuk: creationix: that reminds me, we need md5 for non crypto nodes [22:56] tjholowaychuk: for our sess crap [22:56] tjholowaychuk: s/crap/awesomeness/ [22:56] creationix: they need openssl to use the built-in md5? [22:56] tjholowaychuk: yup [22:56] tjholowaychuk: AFAIK [22:56] cardona507 has joined the channel [22:56] littlebir: How do I fix that error? lol [22:56] pquerna: just make openssl a hard requirement [22:56] littlebir: My first app, and it doesn't work. [22:57] creationix: littlebir: recompile node with crypto? [22:57] littlebir: i see [22:57] rauchg_: littlebir: [22:57] rauchg_: reinstall node [22:57] rauchg_: when you do ./configure [22:57] rauchg_: make sure it says `checking openssl yes` [22:57] creationix: littlebir: or use my binaries http://github.com/creationix/ivy [22:57] creationix: littlebir: though they don't work on all systems, just most [22:57] ryah: would be good if node printout a large message when it didn't find openssl [22:58] tjholowaychuk: creationix: any luck getting node binaries to compile with -static ? [22:58] creationix: tjholowaychuk: no static for openssl [22:58] chilts has joined the channel [22:58] littlebir: Checking for openssl : not found [22:58] littlebir: guess i'm installing it then [22:58] creationix: ryah: can I staticly link openssl? [22:58] creationix: so more people can use my binaries [22:58] rauchg_: littlebir: what system are you on [22:58] littlebir: ubuntu [22:58] creationix: littlebir: libssl-dev [22:58] creationix: install it [22:59] littlebir: alright, thanks. [22:59] rauchg_: sudo aptitude install libssl-dev [22:59] rauchg_: ACTION has never ever used ubuntu before  [22:59] rauchg_: ACTION debian ftw  [22:59] bradleymeck1 has joined the channel [22:59] creationix: ACTION has used linux for 15 years including all the ubuntu releases [23:00] ryah: creationix: we can hack it to do that [23:00] ryah: someone else wanted that [23:00] creationix: ryah: also I really want a native windows port, but that's another discussion [23:00] creationix: I'm sure that's still a ways off [23:00] littlebir: ok it works now. [23:00] tjholowaychuk: ryah: I need it too [23:00] creationix: ryah: yeah, static libssl will make my binaries much more portable [23:01] FransWillem: ryah: On the windows port, is there any way to compile a minimal node.js? e.g. without cares, openssl, and any other libs apart form v8, libeio, and libevent? That would make any porting easier, as you could focus on getting the core libs working first... [23:01] slaskis has joined the channel [23:01] dnolen has joined the channel [23:04] dnolen has joined the channel [23:05] ryah: i want a windows port too [23:06] ryah: but i need the engineering resources [23:06] satori_: What the major hurdle? libev? [23:06] ryah: there are several pieces [23:06] ryah: it would take about one month of my time [23:06] saikat: btw rauchg_ - you should update the chat.html in the example to use socket.on instead of socket.addEvent (i think socket.on is the new API?) [23:06] ryah: maybe less for a good windows person [23:07] saikat: though addEvent seems to still work [23:07] brainproxy: can i tell the debugger to bind to 0.0.0.0 instead of localhost or is it better to just use port forwarding [23:07] CIA-77: node: 03Nick Stenning 07master * r78520ba 10/ (3 files in 3 dirs): [23:07] CIA-77: node: Don't attempt to load a directory. [23:07] CIA-77: node: This patch replaces the path.exists check for module loading with a call to [23:07] CIA-77: node: fs.statSync (or fs.stat for require.async) which ensures that it's not trying [23:07] CIA-77: node: to load a directory. - http://bit.ly/dcEKT9 [23:07] CIA-77: node: 03Nick Stenning 07master * r0a3eff8 10/ (43 files in 11 dirs): (log message trimmed) [23:07] CIA-77: node: Standardise module load order for native and registered file extensions. [23:07] CIA-77: node: This patch standardises the load order for modules. Highest priority is trying to load exactly the file the user specified, followed by native extensions, followed by registered extra extensions, etc. [23:07] CIA-77: node: In full, if we require('foo') having registered '.coffee' as an alternative extension, we try and load the following files in order: [23:07] CIA-77: node: foo [23:07] CIA-77: node: foo.js [23:07] CIA-77: node: foo.node [23:07] CIA-77: node: 03Ryan Dahl 07master * ra4906c7 10/ wscript : Print warning when OpenSSL not found - http://bit.ly/b5VIQi [23:07] isaacs: woooo!!! [23:07] isaacs: hooray! [23:08] isaacs: that's awesome. [23:08] Tim_Smart has joined the channel [23:08] mjr_: yeah, good stuff [23:08] isaacs: did anyone catch that this means you can require("foo.js") now? [23:08] isaacs: that's so awesome. [23:08] brainproxy: nice [23:09] rauchg_: saikat: i thought i had [23:09] ericclemmons has joined the channel [23:09] rauchg_: saikat: [23:09] rauchg_: i didn't [23:09] rauchg_: you're right! [23:09] saikat: a rare occurrence =) [23:10] temp01 has joined the channel [23:10] FransWillem: ryah: I'm fairly skilled in Win32, would love to help out with a port, but currently there's just too much errors. If I could bring down node to a smaller subset of libraries and start from there at least I would know where to begin. As I said, being able to cut down Node.js in functionality would really help on this one... [23:10] chilts has joined the channel [23:11] saikat: rauchg_: also, any plans to implement exponential backoff reconnection in socket.io, or do you think that fundamentally belongs at a layer above? [23:11] borior: isaacs: excellent! thank you for all your help. [23:11] rauchg_: saikat: [23:11] rauchg_: it's under consideration [23:11] rauchg_: first i want to make client-side disconnection detection really solid [23:11] maxsilver has joined the channel [23:11] rauchg_: like i did with server side [23:11] Tim_Smart: rauchg_: Did you get my email? :) [23:11] saikat: ok cool - i need do it for my app, so i wasn't sure if i should be doing it at the socket.io level [23:12] saikat: or rather, if it's something you would want in socket.io [23:12] rauchg_: i need to think about it :P [23:13] joshbuddy has joined the channel [23:13] mmso has joined the channel [23:13] saikat: rauchg_: by the way, i gave a short talk a while back at cloudera about real-time stuff, and i promoted socket.io/nodejs heavily to them. they wanted to look at the code for socket.io, and as soon as they saw that you were writing it, they were sold. thought you might like to know =) [23:14] blaines has joined the channel [23:15] bmizerany has joined the channel [23:15] rauchg_: oh i know them very well [23:15] rauchg_: specially the Desktop team :P [23:15] saikat: yeah, they use a lot of mootools [23:15] rauchg_: i'm selling node.js to everyone [23:15] rauchg_: as well [23:16] rauchg_: even to people not into computers at all [23:16] spot__ has joined the channel [23:16] saikat: hah [23:16] creationix: FransWillem: that would awesome if you could help with the port [23:16] saikat: i like that idea - "man i've been having problems with my car insurance" "well, you know, there's this awesome framework called nodejs..." [23:17] spot__: Anyone alive in here how is familar with socket.io? [23:17] spot__: *who [23:18] ruf has joined the channel [23:18] saikat: spot__: heh we were just talking about socket.io. [23:18] spot__: saikat: Ah, yes? [23:18] saikat: yeah, rauchg_ is the creator [23:18] rauchg_: hi spot__ [23:19] ben_alman has joined the channel [23:19] spot__: rauchg_: Greetings. I am having this error thrown in the listener.js lib, but I can't see how it's anything I am doing. My code (at this point) is mostly the example code. [23:19] rauchg_: spot__: let's hear it [23:20] spot__: var listeners = this.server.listeners('request'); [23:20] spot__: TypeError: Cannot call method 'listeners' of undefined [23:21] spot__: .. /socketio/external/lib/socket.io/listener.js:35 [23:21] rauchg_: uhm [23:21] rauchg_: are oyu passing [23:21] rauchg_: the http server instance ? [23:21] rauchg_: io.listen(httpserver) [23:21] spot__: yup [23:21] spot__: and that instance is responding to http requests [23:21] rauchg_: you sure ? [23:21] spot__: It's serving data. [23:21] rauchg_: or are you passing [23:21] rauchg_: http.listen() [23:21] rauchg_: cause that doesn't return itself [23:21] spot__: It serves the 'why dont you try the chat page' stuff [23:22] rauchg_: :D [23:22] spot__: ahh.. that would be it [23:22] rauchg_: that returns undefined [23:22] rauchg_: yeah [23:22] spot__: ok [23:22] rauchg_: rookie mistake [23:22] rauchg_: j/k [23:22] spot__: my apologize for bothering you [23:22] rauchg_: actually, i believe .listen() should return itself [23:22] spot__: I agree [23:22] rauchg_: so you're not the first person to have run into it [23:23] spot__: Well that helps me ego a tad :) [23:23] spot__: Thanks so much for the help! [23:25] FransWillem: rauchg_: What exactly is needed for the Flash WebSocket emulation layer to work? Do you actually need to listen op port 843? and do you need to listen on a secunary >1024 port? The docs from Flash seem highly contradictory :/ [23:25] sudoer has joined the channel [23:25] lachlanhardy has joined the channel [23:25] eggie5: creationix: using your postgres-pure i get this error when i try to connected. any idea? on postgres-pure.js:340 conn has no method 'emit'....? [23:26] creationix: eggie5: that's strange [23:26] creationix: nothing off the top of my head [23:26] ben_alman has joined the channel [23:26] rauchg_: FransWillem: [23:26] rauchg_: AS Socket checks in port 843 first [23:27] rauchg_: if it times out [23:27] rauchg_: 10000-ish [23:27] rauchg_: flash takes a lot to start up in the first place [23:27] rauchg_: so we can't afford that timeout [23:27] eggie5: creationix: where is emit defined??? [23:27] creationix: eggie5: I think it's from EventEmitter [23:27] creationix: built-in to node [23:28] FransWillem: rauchg_: Ugh, that sounds horrible. Did anyone ever check in a Java emulation layer? I once wrote a Java applet for socket communications and that seemed simple enough [23:28] creationix: eggie5: it's been a while since I've looked at that code, but somewhere I should be making a new process.EventEmitter() [23:28] eggie5: creationix: ok i'll look thanks [23:28] mjr_: src/node_events.cc:26 [23:29] rauchg_: FransWillem: yes [23:29] mjr_: eggie5: ^ [23:29] rauchg_: but applet-browser communication is painful [23:29] rauchg_: and full of quirks [23:29] rauchg_: i'm not sure but i think the applet has to be signed too ? [23:30] chrischris has joined the channel [23:31] FransWillem: rauchg_: Yes, applet has to be signed, but can be self-signed (will just pop up to request access). I've already done some javascript->java->socket stuff, and I'm pretty sure it's quite easy. But I've only tested in chrome, so I'm not sure if my methods work on IE and other browsers too :/ [23:31] isaacs: ryah: thoughts? http://github.com/isaacs/node/tree/stdio-module [23:31] mscdex has joined the channel [23:32] mscdex: node.js rules! [23:34] mscdex: so why was process.debug removed? [23:34] isaacs: mscdex: because it doesn't belong there. [23:35] isaacs: mscdex: use console.log, console.warn, etc. [23:35] mscdex: i see [23:35] mscdex: huh? [23:35] mscdex: process.debug is the v8 debugger [23:35] mscdex: ;-) [23:35] mscdex: er was rather [23:35] isaacs: mscdex: oh, derp, i was thinkging of the old writeError("DEBUG: "+msg) thing [23:35] maushu: Why isn't debug-brk breaking at the beginning? ;_; [23:35] isaacs: mscdex: it had performance/startup problems. [23:35] mscdex: maushu: because it needs more cowbell [23:35] mscdex: isaacs: ah [23:36] maushu: DAMN THAT COWBELL. [23:36] isaacs: mscdex: has to be reworked before it can be there. [23:38] SteveDekorte has joined the channel [23:39] digitalspaghetti has joined the channel [23:39] TommyM has left the channel [23:39] spot__: rauchg_: Is there an option to pass to .connect() to get it to log connection tries? I'm getting no connection, but I have nothing to debug with. [23:42] rauchg_: spot__: [23:42] rauchg_: the console should say something like [23:42] rauchg_: `Initializing client with transport {transport}" [23:43] rauchg_: you don't get that ? [23:43] spot__: Hmmm no I don't. [23:43] rauchg_: FransWillem: applets behave very differently in IE, Firefox and even WebKit implementations [23:43] rauchg_: in terms of being apple to pass and receive data to javascript [23:43] mikeal: where did issacs go [23:47] rauchg_: spot__: any js errors on the client side ? [23:47] spot__: rauchg_: I got it resolved. Thanks. [23:50] mscdex: mikeal: i think he went to go add a package.json for the entire interwebz [23:50] mscdex: :-D [23:50] maushu: Absolutely insane if you ask me. [23:51] eggie5: creationix: how is postgres-pr and node-persistance different regarding it's postgresql abilities? [23:51] CIA-77: node: 03Ryan Dahl 07master * r6cd32fb 10/ AUTHORS : Update AUTHORS - http://bit.ly/cTgBb2 [23:51] mscdex: R.I.P. Google Wave [23:51] rauchg_: spot__: what was it ? [23:54] creationix: eggie5: they are versions of the same thing [23:54] creationix: postgres-js is the newest [23:54] d0k: mscdex: first they killed etherpad, now they killed wave :( [23:54] eggie5: creationix: ok thakns [23:54] telotism has joined the channel [23:54] maushu: God dammit! They didn't kill wave! They just stopped developing for it! [23:54] mscdex: evidentally not enough people would crave the wave [23:54] isaacs has joined the channel [23:54] maushu: Do I need to say this on every channel? [23:54] mscdex: ;-) [23:55] mikeal: isaacs: dude, are there blocking APIs for stdio? [23:55] mscdex: maushu: no, just every time someone new joins this channel [23:55] rauchg_: maushu: they killed wave. [23:55] isaacs: mikeal: i think just stderr [23:55] maushu: THIS. MEANS. WAR. [23:55] mikeal: so you can't do blocking readline? [23:55] mscdex: this means wave :-D [23:55] isaacs: mikeal: not sure [23:55] mscdex: warve [23:56] isaacs: mikeal: you could check out how readline does ti [23:56] littlebir: hey guys, to add a listener, it's emitter.on(event,listener) right? [23:56] isaacs: readline.js, i mean [23:56] littlebir: It doesn't recognize on [23:56] mikeal: where is that? [23:56] isaacs: littlebir: maybe update your version of node [23:56] isaacs: mikeal: lib/readline.js [23:56] mikeal: oh, it's in core [23:57] isaacs: mikeal: yeah. you can pretty much take over if you do stdio.setRawMode(true) [23:57] littlebir: isaacs: it's the latest [23:57] littlebir: isaacs: http://pastebin.com/ukt0BjYH [23:57] isaacs: mikeal: at that point, you have to output your own CRLFs and everything [23:57] mscdex: littlebir: you need s.on [23:57] mscdex: not net.on [23:57] isaacs: mikeal: move the cursor around, etc [23:57] littlebir: heh, ooops [23:57] mscdex: :-) [23:58] isaacs: littlebir: looks like you figured it out ;) [23:58] isaacs: littlebir: s.on(...), not net.on [23:58] littlebir: thanks [23:59] isaacs: mikeal: raw mode is *painful* though