[00:00] masahiroh has joined the channel [00:00] mikeal: if the weather stays good maybe this weekend [00:00] Kyso has joined the channel [00:00] SubStack: groovy [00:00] tmzt: what's a good jsonrpc library for handling instantly submitted forms and doing callbacks from the server? [00:01] SubStack: callbacks you say? [00:01] SubStack: tmzt: sounds like you're describing dnode, which I coincidentally wrote: https://github.com/substack/dnode [00:03] yhahn has left the channel [00:03] SubStack: need to hack some more on telescreen I think [00:04] tmzt: tanepiper: I've got express with two fall backs to partials working, it's perfect as a content site [00:04] tmzt: I disabled the ajax loading because it didn't fit the use case though [00:04] bingomanatee: Okay here we have it: http://www.meetup.com/Node-js-sfbay/ [00:04] chiragrules_ has joined the channel [00:05] bingomanatee: SIgn up and be counted [00:05] confoocious: ~/quit [00:06] bingomanatee: hm... seems there is already one in SF. [00:06] kuhrt has joined the channel [00:06] Jaye has joined the channel [00:07] russ_nyc has joined the channel [00:07] bingomanatee: well that was a waste. [00:07] russ_nyc has left the channel [00:07] pkrumins: bingomanatee: i am rsvping [00:07] tmzt: oh wow, the answer is in the scrollback, dnode [00:08] bingomanatee: hum ... are you guys already in the meetup.com node.js group? [00:08] brianleroux has joined the channel [00:08] pkrumins: nope [00:08] pkrumins: joining it and rsvping [00:08] bingomanatee: okay. [00:08] bingomanatee: well I'm a little conflicted - they have 106 members already. [00:09] kiddphunk has joined the channel [00:09] pquerna: conflicted? [00:09] pkrumins: done! [00:09] SubStack: they have a meetup tomorrow! [00:09] SubStack: the other group [00:10] pquerna: tomorrow? wednesday? [00:10] bingomanatee: I mean - the other group has active membership. [00:10] prettyrobots has joined the channel [00:10] SubStack: ah yes I'm on gmt [00:11] ryah_: oh, i thought you were inviting everyone :) [00:12] pquerna: he was conflicted, I'm confused. [00:12] ryah_: mikeal: looking forward to jsbbq. if given advanced notice i'll come to oakland :) [00:12] ph^ has joined the channel [00:12] pkrumins: rsvping [00:12] mikeal: i'll check out the weather for the weekend [00:13] bingomanatee: sweet - okay I'll see what I can get going and if it falls flat I'll just collapse the membership into the SF group. [00:13] skm has joined the channel [00:13] pkrumins: Success! [00:13] SubStack: bingomanatee: sounds good [00:13] pkrumins: should i unrsvp then from bingomanatee's group? [00:13] bingomanatee: Worst case scenario I'll just focus on teh south bay. [00:13] bingomanatee: no [00:13] bingomanatee: Its on. [00:13] pkrumins: kk [00:13] bingomanatee: Lets see what happens. [00:13] pkrumins: meetups all the way down. [00:13] pkrumins: i am up for going to meetup on thrusday too [00:14] Evet has joined the channel [00:14] bingomanatee: Did I mention, my meetup has all the beer you can drink? [00:14] pkrumins: there will not be enough [00:15] halfhalo: EVER [00:16] tmzt: SubStack: thanks substack, what's the integration with socket.io like? if I want to use it as well (though currently using faye) is there a reason I can't [00:17] SubStack: tmzt: just dnode(...).listen(webserver) [00:18] tmzt: how does require work in a webbrowser? [00:18] SubStack: tmzt: here's an example with dnode + connect + socket.io: https://github.com/substack/dnode/tree/master/examples/web-connect [00:18] tmzt: no I mean on the client side [00:18] tmzt: I'm looking at it [00:18] SubStack: if you use connect or express it mounts /dnode.js automatically [00:19] tmzt: all events have to be in response to a request? [00:19] brapse has joined the channel [00:20] SubStack: the server can call hosted client methods and vice-versa [00:20] ryah_: piscisaureus: ping [00:20] warz has joined the channel [00:20] SubStack: tmzt: you can also wrap around event emitters like this: http://substack.net/posts/9bac3e [00:20] piscisaureus: ryah_: pong [00:20] ryah_: piscisaureus: what's a good abstraction for passing file descriptors to child processes? [00:20] davidascher has joined the channel [00:21] piscisaureus: ryah_: hmm. passing streams? [00:21] ryah_: piscisaureus: can you even do that in windows? [00:21] piscisaureus: ryah_: sometimes [00:21] ryah_: uh - say i have a socket [00:21] ryah_: fd [00:21] piscisaureus: ryah_: can't do [00:21] piscisaureus: must use a pumt [00:21] ryah_: and i want to start a new process with that fd included [00:21] piscisaureus: pump [00:21] ryah_: are you sure... [00:21] piscisaureus: unless you create a special, blocking socket [00:21] piscisaureus: yeas [00:21] ryah_: i'm pretty sure i saw something CreateProcess or something? [00:22] piscisaureus: ryah_: correct. but windows apps generally don't take files/sockets that are opened in overlapped mode [00:22] ryah_: but to another node process? [00:22] piscisaureus: sockets are opened in overlapped mode by default, otherwise you can't select on it [00:23] piscisaureus: ryah_: it would work then. [00:23] ryah_: piscisaureus: whats the api for starting a new program? [00:23] ryah_: new process [00:23] piscisaureus: CreateProcess [00:24] piscisaureus: ryah_: http://msdn.microsoft.com/en-us/library/ms682425%28v=vs.85%29.aspx [00:24] ryah_: which parameter do you use? [00:24] tmzt: SubStack: you connect each time you want to call a function? [00:25] piscisaureus: ryah_: https://github.com/piscisaureus/node/blob/master/src/node_child_process_win32.cc#L483-512 [00:26] SubStack: tmzt: dnode opens up a socket.io stream that's kept alive [00:26] cgutierrez has joined the channel [00:27] isaacs has joined the channel [00:27] piscisaureus: ryah_: it would require isStdinBlocking and isStdoutBlocking be implemented in windows [00:27] piscisaureus: currently they always return false [00:27] tmzt: I'm not sure this is what I need, I can stick with faye or find something else over socket.io [00:27] tmzt: mostly I want to verify a phone number is valid by calling it with twilio, in the context of a form [00:28] amerine has joined the channel [00:29] c4milo1 has joined the channel [00:29] wehttam has joined the channel [00:30] isaacs_ has joined the channel [00:31] SubStack: tmzt: the dnode connect block just closes over the remote object, so how it usually goes is you bind your form events inside with $('form#moo').submit(function () { /*...*/ }) or what-have-you [00:31] piscisaureus: ryah_: the node debugger is missing a `finish` command [00:31] tmzt: SubStack: the problem is I have a multistep process, call a number, get a code, report to the user it's verified and save it [00:32] tmzt: I want all of those events to follow one action taken by the user [00:32] jacobolus has joined the channel [00:32] echosystm has joined the channel [00:32] echosystm: SubStack: you here? [00:33] SubStack: echosystm: yep! [00:33] echosystm: im trying to use the web browser dnode [00:33] echosystm: and i can see require() in the source [00:33] echosystm: where does that come from? [00:33] chiragrules has joined the channel [00:33] SubStack: tmzt: sounds like a flow control lib would be handy there [00:34] tmzt: how would that work? [00:34] tmzt: I'm using sammyjs for forms, though I think I'm going to split the form stuff out of it and disabled the # handling for get (it's messing things up badly) [00:34] SubStack: echosystm: the client source is generated when .listen() is called from a bunch of files [00:35] tmzt: if there was a way to do non closure modules in the browser that would be nice also [00:35] echosystm: oh [00:35] echosystm: i'm confused [00:35] echosystm: how do i get the dnode web code into the browser? [00:35] SubStack: echosystm: if you're using connect or express it's automatically mounted at /dnode.js [00:36] echosystm: ah [00:36] echosystm: ok [00:36] echosystm: can i change that location at all? [00:36] SubStack: yep, you can specify a route param in the .listen(webserver, { route : '/moo.js' }) [00:36] echosystm: ah, awesome [00:36] echosystm: thank you [00:38] SubStack: tmzt: there's no getting around async code for browser<->server rpc if that's what you mean [00:38] davidascher has joined the channel [00:38] tmzt: no, I want async mostly [00:38] tmzt: I just need events to be delayed [00:38] tmzt: and multiple events for one object [00:38] tmzt: so I'll just stay with faye for now [00:39] gf3 has joined the channel [00:39] ryah_: piscisaureus: kill [00:39] piscisaureus: ryah_: TerminateProcess [00:40] piscisaureus: no signals on windows [00:40] piscisaureus: ryah_: or was I me you wanted to kill? [00:40] ryah_: piscisaureus: 'kill' the debugger command [00:41] piscisaureus: ryah_: ah :-) thnx [00:41] matt_c has joined the channel [00:41] ryah_: you're not opposed to overloading the semantics of that command on windows? [00:41] ryah_: that it means 'terminate' [00:41] ryah_: on windows [00:42] piscisaureus: ryah_: I already did, actually, with child_process.kill() [00:43] bingomanatee: is there any simple way to count the number of properties in an object? [00:43] zemanel has joined the channel [00:43] SubStack: tmzt: you can also delay the responses too if that's what you mean [00:43] SubStack: but if you're happy with faye that's cool too [00:43] tmzt: multiple responses? [00:43] SubStack: sure [00:44] tmzt: no, faye won't really work either because it's not per client [00:44] SubStack: just call the callback as many times as you want [00:44] tmzt: unless I keep a list some how [00:44] piscisaureus: ryah: kill != finish. In GDB finish means 'step out' [00:44] tmzt: okay, so you can pass multiple callbacks and call them when you need? [00:44] SubStack: yep [00:44] piscisaureus: ryah_: kill != finish. In GDB finish means 'step out' [00:44] ryah_: ah, sorry [00:44] tmzt: I'm just confused why the server object is passed to a function [00:44] SubStack: tmzt: you can even nest the callbacks however you like in the jsonish inputs [00:45] SubStack: tmzt: because the client doesn't know ahead of time what methods the server supports [00:45] SubStack: because those methods can be generated at runtime with a constructor [00:46] richcollins has joined the channel [00:48] helpme has joined the channel [00:48] SvenDowideit: mmm, I'm feeling dumb atm - I'm trying to populate the data for rendering a template with data from a database - i can't work out how to do this async - essentially app.get('/', function(req, res) {res.render('index', {locals:{info:database.query(SELECT names from users) ..... ) [00:49] SvenDowideit: i started with node-mysql, but i'm hitting a brain wall - can anyone help me? [00:50] jpld has joined the channel [00:51] chrischris has joined the channel [00:51] SubStack: SvenDowideit: do the database.query on the outside and do the res.render in the callback [00:51] SvenDowideit: outside? doesn't that presume its static? [00:51] SvenDowideit: though in this specific case, oh thunk, good point, thankyou [00:51] SubStack: like this: app.get('/', function (req, res) { database.query(..., function (r) { res.render(...) }) }) [00:52] SvenDowideit: oh, more thunk [00:52] tjholowaychuk: SvenDowideit: core has no promises [00:52] tjholowaychuk: so since they are not heavily adopted I cant really do much with them [00:52] SvenDowideit: i did just have a problem where i wanted to use a var defined outside the callback, and as it was in a loop, it had been updated [00:53] tjholowaychuk: noor am I a huge fan of doing IO while rendering the template [00:53] tjholowaychuk: nor* [00:53] bingomanatee: Sounds like a solution without a problem. [00:53] ashleydev has joined the channel [00:53] hunterloftis has joined the channel [00:54] haxorjim has joined the channel [00:54] SvenDowideit: ybit, i can grok that doing IO while rendering isn't good - but, i've not groked how to make a rest handler that gets the latest version of a data without doing so [00:54] SvenDowideit: ACTION _is_ just starting with node.js, so has (quite obviously given SubStack's answer) not yet had the brain update to think event driven :) [00:55] SubStack: bayesian updates! [00:55] SvenDowideit: but given the affect that doing a few years PROLOG had, i'm looking forward to growing new/refreshing old neural paths [00:56] SubStack: totally [00:56] enotodden has joined the channel [00:56] SubStack: ACTION did a lot of haskell [00:56] SvenDowideit: i've been stuck (mentally) in 1999 perl cgi coding for a few years, so its my own fault [00:57] technoweenie has joined the channel [00:57] k04n has joined the channel [01:00] boaz_ has joined the channel [01:02] chiragrules_ has joined the channel [01:03] spetrea has joined the channel [01:03] mikeal: ok [01:03] mikeal: new nodeconf is live [01:03] SubStack: new! [01:03] mikeal: http://www.nodeconf.com/ [01:04] mikeal: some updates, invited speakers are up, cutoff is up [01:04] bingomanatee: is there any way to echo a function body in node? [01:04] davidc_ has joined the channel [01:04] tjholowaychuk: bingomanatee: toString() [01:05] bingomanatee: thx [01:05] tjholowaychuk: np [01:06] tjholowaychuk: you have to regexp it to grab the body if that is all you want [01:06] deepthawtz has joined the channel [01:07] langworthy has joined the channel [01:07] arpegius has joined the channel [01:09] softdrink has joined the channel [01:10] c4milo1 has joined the channel [01:10] c4milo1 has joined the channel [01:11] c4milo1 has joined the channel [01:11] c4milo1 has joined the channel [01:11] c4milo1 has joined the channel [01:11] creationix has joined the channel [01:11] c4milo1 has joined the channel [01:11] creationix has left the channel [01:12] c4milo1 has joined the channel [01:12] c4milo1 has joined the channel [01:14] mjr_ has joined the channel [01:17] jamescarr has joined the channel [01:18] markstory has joined the channel [01:22] bingomanatee: so wait now... what? how do you register? [01:23] cagdas has joined the channel [01:23] eikke has joined the channel [01:24] v8bot has joined the channel [01:24] gbot2 has joined the channel [01:25] tk has joined the channel [01:26] AAA_awright_ has joined the channel [01:28] piscisaureus: ryah_: v8 is totally borked on windows. Context::New() just hangs :-/ [01:29] piscisaureus: I hope it's not just mingw because otherwise It'll take ages before it gets fixed [01:30] charlenopires has joined the channel [01:31] polotek has joined the channel [01:31] chiragrules_ has joined the channel [01:33] ron_frown has joined the channel [01:35] tmzt: SubStack: /node.js is the script not endpoint? [01:37] tmzt: I'm confused, does dnode add that script itself or is that just normally done? is there way to let nginx serve it out of /scripts ? [01:40] SubStack: tmzt: you can configure where it gets served like this: .listen(webserver, { route : '/moo.js' }) [01:41] SubStack: it tricks your socket.io install to serve out the client code at /socket.io/socket.io.js and tacks some of its own code onto that [01:42] briznad1 has joined the channel [01:44] cb2 has joined the channel [01:44] martinciu has joined the channel [01:44] tmzt: SubStack: calling client.something calls a function exported by the client? [01:45] tmzt: for instance, I want to do client.verifymsg() [01:45] AAA_awright has joined the channel [01:45] zentoooo has joined the channel [01:45] tmzt: client.verifymsg('Number verified', function() {}); [01:46] tmzt: though in this simple case I could just call reply() (assuming I passed a function) [01:46] joshpeek has joined the channel [01:47] SubStack: tmzt: yep [01:47] SubStack: tmzt: you can also pass the functions you want called along in the arguments [01:51] jakehow has joined the channel [01:51] gf3 has joined the channel [01:51] tmzt: and if I use spark how do I get the server variable for listen? [01:52] tmzt: app? [01:52] tmzt: ah [01:52] tmzt: 18 Jan 01:49:28 - socket.io ready - accepting connections [01:52] tmzt: nice [01:53] mikew3c has joined the channel [01:53] Lorentz: I just got irc-js working, woo [01:54] warz: heh. is that what all these irc bots are based off of, in here? [01:54] SubStack: there's node-irc too [01:54] warz: like the interactive node bot i saw the other day [01:54] SubStack: which I haven't used yet [01:54] tmzt: missing } after function body [01:54] tmzt: [Break on this error] return this.rem [01:54] SubStack: ACTION uses an irc-js bot to report service disruptions [01:55] tmzt: dnode.js line 1297 [01:55] chiragrules has joined the channel [01:55] SubStack: tmzt: browser-side? [01:56] tmzt: yep [01:56] SubStack: which browser? [01:56] tmzt: it only partially loaded [01:56] tmzt: firefox [01:56] tmzt: 3.6.10 ubuntu maverick 64bit [01:56] bradleymeck has joined the channel [01:56] tmzt: it seems to be failing in random places each load [01:57] SubStack: can you run the examples/web-connect/web.js ? [01:58] SubStack: it could be a spark interop problem, I haven't used that one yet [01:58] AAA_awright_ has joined the channel [02:00] tmzt: run it from the examples directory? [02:00] davidc_ has joined the channel [02:00] Qbix1 has joined the channel [02:00] SubStack: tmzt: run it from anyplace is fine, it looks at __dirname [02:01] tmzt: androix.org:6857 [02:01] SubStack: works from here [02:02] SubStack: in both ff and chrome [02:02] tmzt: does the file have to be generated or can I serve it statically? [02:02] SubStack: you can serve it statically sure [02:02] tmzt: since npm already got the dependecies can I submodule dnode? [02:02] SubStack: just download from that example code at http://androix.org:6857/dnode.js [02:03] tmzt: much simpler example in here [02:03] tmzt: the math stuff is confusing in the other ones [02:03] webr3 has joined the channel [02:04] tmzt: can remote be cached after the first connection or just rely on dnode doing that for me? [02:04] SubStack: submodule with git you mean? I don't know enough about those to say either way. [02:04] tmzt: yeah, I just have all the stuff I'm using under lib [02:04] tmzt: then I can serve their js directly [02:04] tmzt: anyway, I'll put the good dnode.js under /scripts [02:04] SubStack: kk [02:05] dgathright has joined the channel [02:05] SubStack: tmzt: how it usually goes is you have your one DNode.connect() and inside of that you register all of your events that depend on the remote object [02:06] tmzt: sure but I need to call those functions in reponse to different things on the page [02:06] tmzt: probably in the sammyjs handlers eventually [02:06] SubStack: yes so you might install the handlers while closed over the dnode connection [02:07] SubStack: tmzt: check out the examples/chat/index.html [02:09] russ_nyc has joined the channel [02:10] perlmonkey2: with Express is there anyway to have the staticProvider resolve '/' to '/index.html'? [02:11] SubStack: perlmonkey2: it doesn't do that automatically? [02:11] perlmonkey2: SubStack: Hmm, maybe my router handling '/' is catching it. [02:12] perlmonkey2: Yeah, the staticProvider handles it. Thanks :) [02:12] tjholowaychuk: yeah your route will take precedence [02:12] tjholowaychuk: if app.use(app.router) is above app.use(staticProvider()) [02:16] JusticeFries has joined the channel [02:17] jpld has joined the channel [02:21] russ_nyc: hi all, im using express and i am trying to post json to the route. for some reason I am getting undefined as the response [02:21] russ_nyc: here is a test: http://pastie.org/1472203 [02:21] russ_nyc: can anyone help me to see what I may be doing wrong? [02:22] tjholowaychuk: russ_nyc: looks ok, can you console.log(req.headers) [02:22] tjholowaychuk: oh you are using expresso, i see, one sec [02:23] russ_nyc: yeah, im using expresso for the testing [02:23] ossareh has joined the channel [02:24] russ_nyc: the headers output this: { connection: 'close' [02:24] russ_nyc: , 'transfer-encoding': 'chunked' [02:24] russ_nyc: } [02:24] tjholowaychuk: hmm yeah looks ok [02:24] tjholowaychuk: i have tests in express that do pretty much exactly what you just did [02:24] tjholowaychuk: and they are ok [02:25] russ_nyc: im using node version 0.2.6 and express 1.0.2 [02:26] tjholowaychuk: sounds fine, maybe reference some of the assert.response() calls in express [02:27] Me1000 has joined the channel [02:27] echosystm: SubStack: what is the event for when a dnode client disconnects? [02:28] SubStack: echosystm: conn.on('end', ...) [02:28] mikew3c_ has joined the channel [02:30] astropirate has joined the channel [02:36] skm has joined the channel [02:41] softdrink has joined the channel [02:42] russ_nyc: tjholowaychuk: ok, i get something close in the body when I set the headers to 'application/x-www-form-urlencoded' but I when i set it to 'application/json' [02:42] russ_nyc: i get SyntaxError: Unexpected token ILLEGAL [02:42] russ_nyc: SyntaxError: Unexpected token ILLEGAL [02:42] russ_nyc: at parse (native) [02:42] russ_nyc: at IncomingMessage. (/usr/local/lib/node/.npm/connect/0.5.4/package/lib/connect/middleware/bodyDecoder.js:46:27) [02:42] tjholowaychuk: oh, haha [02:42] tjholowaychuk: invalid json [02:42] tjholowaychuk: my bad, yeah i didnt look that closely at it [02:42] tjholowaychuk: you need to quote the json keys "foo":"bar" [02:42] russ_nyc: oh, haha, ok [02:49] zemanel has joined the channel [02:49] davidascher has joined the channel [02:49] piscisaureus: ryah_: bing [02:50] Me1000 has joined the channel [02:50] piscisaureus: ryah_: ping [02:50] michaeltomer has joined the channel [02:51] perezd has joined the channel [02:52] michaeltomer: I know this is more of a question for the maker of the particular framework, but I'll ask here anyway. I'm new to Node, and I'm trying to require JS.class (http://jsclass.jcoglan.com/), but I keep getting an error that JS is not defined. Any idea what I need to do in order to load this properly in Node? [02:52] michaeltomer: Mind you, JS is defined in the framework. [02:53] michaeltomer: I've heard the creator of the framework say he's using it with Node, but he didn't give any details. [02:56] astoon has joined the channel [02:56] techwraith has left the channel [03:00] piscisaureus: ryah_: please come back :-) we can't do without you [03:04] gf3 has joined the channel [03:06] webr3 has joined the channel [03:07] russ_nyc: tjholowaychuk: regarding expresso, is it by design that this would work for testing response: body: '{"response_code":"pass","visitor_ignore_interval":0}' [03:07] russ_nyc: but not: "{'response_code':'pass','visitor_ignore_interval':0}" [03:08] Aikar: any way to make vm. have access to node stuff? ie simply run out of scope [03:08] tjholowaychuk: russ_nyc: json only allows double quotes [03:08] russ_nyc: i see [03:08] tjholowaychuk: and the keys must be quoted [03:09] tjholowaychuk: russ_nyc: http://json.org/ [03:09] ryah_: piscisaureus: it seems that V8 got broken in the latest update [03:10] piscisaureus: ryah_: solution I have [03:10] ryah_: it's fucking up for me too [03:10] paulrobinson has joined the channel [03:10] ryah_: piscisaureus: are you doing x86 or x86_64 ? [03:10] piscisaureus: ryah_: works for both [03:10] piscisaureus: v8 bug 844 [03:10] piscisaureus: it has bothered me for a week now, it broke v8 3.0.4 on windows as well [03:10] piscisaureus: ryah_: https://github.com/piscisaureus/node/commit/2808df9e015fcf3ca9480721e6bee0223ea81ab4 [03:11] piscisaureus: I mean bug 884 btw [03:12] piscisaureus: Apparently I got the bug number wrong :-( [03:12] SvenDowideit has joined the channel [03:12] piscisaureus: in the commit message [03:12] kryali has joined the channel [03:13] Aikar: vm.runInThisContext('(function(){ console.log(require.resolve("./boobs.js"));})','/tmp/fake.js')(); [03:13] Aikar: why doesnt that work, says require is not defined [03:15] kryali: Hi, I'm trying to learn how to use nodestream, how do I install it? https://github.com/LearnBoost/nodestream [03:15] noahcampbell has joined the channel [03:15] kryali: its not listed as an npm from what I saw [03:16] nejucomo has joined the channel [03:17] davidc_ has joined the channel [03:18] gf3 has joined the channel [03:18] russ_nyc: tjholowaychuk: regarding expresso, when I do expresso -c, it doesn't show me the output [03:18] russ_nyc: it creates the lib-cov directory [03:19] russ_nyc: but doesn't output the table [03:19] tjholowaychuk: it is hard-coded to ./lib right now [03:19] whyme has joined the channel [03:19] tjholowaychuk: since it has to replace that dir with lib-cov [03:19] tjholowaychuk: so $ expresso --include lib --cov [03:19] tjholowaychuk: exposes ./lib to your tests, so you do not require() relative paths [03:19] tjholowaychuk: which is switched out for lib-cov [03:20] russ_nyc: i still get no output [03:20] Aikar: wtf [03:21] russ_nyc: it says 100% 4 tests [03:21] russ_nyc: and creates the directory lib-cov [03:21] Aikar: var fnTemplateFunc = vm.runInThisContext(data, sTemplateFile); [03:21] russ_nyc: but doesn't output the coverage data [03:21] Aikar: it says the . after vm is unexpected identifier [03:21] tjholowaychuk: russ_nyc: you cant do stuff like require('../lib/mylib') [03:21] tjholowaychuk: in your tests [03:21] tjholowaychuk: otherwise expresso cannot switch them out [03:21] tjholowaychuk: for the instrumented library in lib-cov [03:21] russ_nyc: i see [03:22] bingomanatee: Crockford has actually taped long lectures on why the double quote thing on JSON. [03:22] mikew3c_ has joined the channel [03:22] tjholowaychuk: haha [03:23] Aikar: i think my v8 is broke [03:24] polotek has joined the channel [03:26] mikeal has joined the channel [03:26] russ_nyc: tjholowaychuk: also regarding expresso, I have multiple tests for response, and when multiple tests fail, it gives me the wrong test name that fails [03:26] TheEmpath2 has joined the channel [03:26] polotek: mikeal: perfect timing [03:26] TheEmpath2: hail nodites [03:27] mikeal: whats up [03:27] russ_nyc: uncaught: AssertionError: health route. Invalid response body. [03:27] russ_nyc: Expected: '{"health":"alive"}' [03:27] russ_nyc: Got: 'Cannot GET /health' [03:27] bingomanatee: "I give Douglas, as my father's name, on the authority of his tombstone and my sister..." [03:27] russ_nyc: at IncomingMessage. (/usr/local/lib/node/.npm/expresso/0.7.2/package/bin/expresso:423:28) [03:27] russ_nyc: at IncomingMessage.emit (events:48:20) [03:27] russ_nyc: at HTTPParser.onMessageComplete (http:107:23) [03:27] russ_nyc: at Client.onData [as ondata] (http:854:27) [03:27] russ_nyc: at IOWatcher.callback (net:494:29) [03:27] russ_nyc: at node.js:773:9 [03:27] russ_nyc: uncaught: AssertionError: health route. Invalid response body. [03:27] russ_nyc: Expected: '{"response_code":"pass","visitor_ignore_interval":0}' [03:27] russ_nyc: Got: 'Cannot POST /rtb/adbrite/bid' [03:27] russ_nyc: at IncomingMessage. (/usr/local/lib/node/.npm/expresso/0.7.2/package/bin/expresso:423:28) [03:27] russ_nyc: at IncomingMessage.emit (events:48:20) [03:27] bingomanatee: please? [03:27] tjholowaychuk: jesus lol [03:27] bingomanatee: first rule of fight club [03:28] russ_nyc: anyways, am i doing something wrong with the tests [03:28] tjholowaychuk: russ_nyc: how is that wrong, it says "health route" [03:28] tjholowaychuk: lol [03:28] tjholowaychuk: look at the express ones for examples [03:28] russ_nyc: yeah but those are 2 different tets, health route passed [03:28] russ_nyc: i meant [03:28] polotek: mikeal: sorry hang on [03:28] russ_nyc: health route was the first to fail [03:28] TheEmpath2: lol @ bingomanatee [03:28] mikeal: no problem [03:28] russ_nyc: the second is called adbrite bid pass [03:29] russ_nyc: i only have 1 test called health route [03:29] russ_nyc: i have the tests in 2 different files though [03:30] russ_nyc: and im running just '$ expresso' from the project base directory [03:30] polotek: mikeal: remember talking about the higher level http api [03:30] polotek: based on request [03:30] polotek: http.get, http.post, etc [03:30] tmzt: SubStack: this xhr-polling is pretty slow, and it fell back to that from xhr-multipart [03:30] mikeal: yeah [03:31] mikeal: request actually has those now [03:31] SubStack: polling is pretty slow yeah [03:31] Yuffster has joined the channel [03:31] Aikar: ryah_: is vm module broke in master right now? [03:32] polotek: oh does it? [03:32] tmzt: any way to fix that? [03:33] SubStack: tmzt: you can pass along the transports you want to use to socket.io [03:33] tmzt: what's the best transport to use with nginx? [03:33] tmzt: yeah I saw that example [03:33] mikeal: yeah, i'm pretty sure i remember adding it [03:33] polotek: mikeal: around when? I want to use request in my twitter lib [03:33] polotek: and I want to use these [03:34] mikeal: yeah, it's in master or sure [03:34] mikeal: i pushed a new one not too long ago [03:34] SubStack: tmzt: I haven't used socket.io or dnode on top of nginx before [03:35] tmzt: hah, well faye didn't have any problems with that and it uses polling as well [03:35] tmzt: but as you pointed out it doesn't fit the use case [03:35] echosystm: is there much point to using node with nginx? [03:35] tmzt: I need to authenticate what client is actually calling it [03:35] echosystm: couldnt you just start up multiple node instances and basically have the same thing? [03:35] tmzt: and baeyux won't really do that [03:36] tmzt: echosystm: I'm using it for vhost support on the vps [03:36] tmzt: I only have one ip [03:36] echosystm: ah [03:36] polotek: I wish everyone would use an options object more often [03:36] tmzt: SubStack: both of my click events call DNode.connect, is that correct? [03:37] tmzt: DNode({}).connect [03:37] tmzt: they should always occur in order but I don't want to break if they don't [03:37] marienz has joined the channel [03:37] SubStack: no, you should only have one connect() [03:37] tmzt: how would you do it then? [03:37] tmzt: I need different buttons to call different functions (first Call then Check code) [03:38] tmzt: and finally Save, but that's handled by sammyjs [03:38] SubStack: DNode({}).connect(function (remote, conn) { $('#quibble').click(function () { uses remote somehow... }); $('#quivvy').click(function () { also uses remote.... }) }) [03:38] stagas has joined the channel [03:39] tmzt: okay, that should work [03:39] SubStack: that's jquery style, but however your web framework does it [03:39] SubStack: er, js framework [03:39] tmzt: will it reconnect if it needs to? [03:39] tmzt: using jq now :) [03:39] SubStack: the connection is just open as long as the page is open [03:39] tmzt: and it opens when connect() is called? so in ready? [03:39] polotek: mikeal: if I have another lib making http requests [03:40] polotek: would it make sense to wrap them so they confirm to the request api? [03:40] rauchg_ has joined the channel [03:40] SubStack: tmzt: yep, the connection is open once the callback supplied to connect() fires [03:40] mikeal: polotek: i do that sometimes [03:40] mikeal: you gotta be careful tho [03:40] mikeal: the options object is a state machine [03:41] mikeal: it holds the client object and will use for keep-alive if you pass it in again [03:41] SubStack: ACTION should take a stab at hacking socket.io to make the client source easier to get at [03:41] mikeal: it's nice because it makes the inner workings more transparent [03:41] bingomanatee: what is the implication of the index.js file I see in some libraries? [03:42] tmzt: cool [03:42] polotek: mikeal: yeah, do you have any examples of doing that? [03:42] mikeal: i think i do it in one of the tests [03:43] tmzt: so I can use the callbacks in the first part of connect as a pubsub type thing [03:44] tmzt: okay [03:44] tmzt: (but for one client) [03:44] tmzt: well, the thing is I'm serving different bodies for the pages but not using ajax to fetch #main right now (I might put that back though) [03:45] tmzt: so I only need this on some pages but I don't want to wait for it to restablish [03:47] TheEmpath2: ACTION agrees with SubStack. [03:47] SubStack: TheEmpath2: you should see the crazy hack I'm using now [03:49] TheEmpath2: .me wishes he could monitor the data size going in and out of socket.io [03:49] sechrist: TheEmpath2: add it [03:49] sechrist: I did [03:50] TheEmpath2: i tried going into the client [03:50] TheEmpath2: it made little sense :( [03:50] SubStack: oh actually this hack is far nicer than I remember it: https://github.com/substack/dnode/blob/master/lib/web/socket_io.js [03:50] sechrist: the client is a little weird [03:50] sechrist: but not that weird [03:50] sechrist: what does socket.io do for opera these days? drop down to json? [03:51] TheEmpath2: i understood that it was a state machine, but i couldn't find the common "parent" that all transports used to client.sendf [03:51] TheEmpath2: send* [03:51] piscisaureus: ryah_: still alive? [03:52] polotek: mikeal: have you had much occasion to test request when passing in a foreign clientRequest? [03:52] mikeal: foreign? [03:53] polotek: using the "client" option I mean [03:53] polotek: one not created by request [03:53] polotek: any issues or gotchas you've run across? [03:53] mikeal: a couple [03:53] mikeal: it only goes so far, if you hit a forward it'll get deleted [03:53] michaeltomer: I'm new to Node, and I'm trying to require JS.class (http://jsclass.jcoglan.com/), but I keep getting an error that JS is not defined (it's defined in the lib I'm requiring). Any idea what I need to do in order to load this properly in Node? I've heard the creator of the framework say that he's used it with Node, but he didn't give any specifics. [03:54] polotek: mikeal: the client will get deleted? [03:54] mikeal: because request blows away the entire state so that it can call itself again with the new url [03:54] mikeal: yeah [03:54] polotek: hmmm [03:54] tmzt: okay, forcing xhr-polling worked [03:54] polotek: glad I asked [03:54] mikeal: the other problem is if you pass in a client and it's to the wrong IP, that'll just straight up break [03:54] polotek: that's not a problem [03:54] polotek: I'm controlling all of this [03:54] polotek: let me give more info [03:55] tmzt: SubStack: are there other options for protocol than websockets? [03:55] polotek: I'm basically re-writing my twitter lib to use request underneath [03:55] tmzt: er [03:55] tmzt: socket.io [03:55] polotek: or I want to anyway [03:55] jimt_ has joined the channel [03:55] polotek: but I have to account for oauth authentication [03:55] SubStack: tmzt: you can use network sockets for node-to-node apps [03:55] tmzt: it would be interesting to see dbus encoding used [03:56] tmzt: I don't know how well js would map to it [03:56] brianmario has joined the channel [03:56] tmzt: yeah, I see [03:56] tmzt: or just a simple comet (one url) implementation like faye and comet.js use on the backend [03:56] SubStack: certainly possible [03:56] tmzt: hmm but it's working quite fast now [03:57] SubStack: hooray! [03:57] tmzt: just weird seeing all thse urls in firebug, might be that they are so long [03:57] tmzt: yeah, would on demand be something you are interested in if polling is not actually required? [03:59] SubStack: on-demand would be very tricky since there is a method exchange at the beginning of the transaction [03:59] tmzt: wonder if anyone has done this, I want to have an email verification that opens a webmail in another window and when somebody clicks the length updates the page that they had open [03:59] tmzt: sure, but it could close down the connection without losing that method stuff [03:59] SubStack: I've built cross-page interactions like that [03:59] tmzt: are you using guid for the functions or just integers? [04:00] SubStack: just incrementing integers [04:00] tmzt: right, but I want to do that through the server, so it would find the client (with a cookie and the email token) and send the update back there [04:00] tmzt: I guess that's what you mean, not javascript between pages [04:01] SubStack: just keep an object around that maps cookies to objects [04:01] tmzt: I don't really like jsonp because it runs code on the client, it's interesting to see marshalling done the way you did it [04:01] tmzt: okay [04:01] tmzt: how does node/v8 keep track of objects/functions? [04:02] tmzt: is there some value that could be used for that [04:02] micheil has joined the channel [04:02] SubStack: oh if you want a unique identifier for the clients you can do conn.id too [04:02] tmzt: ah, ok [04:02] tmzt: then I can hash that and use it as a token for the email link [04:02] SubStack: it's a long hex string generated from Math.random [04:02] piscisaureu_ has joined the channel [04:02] SubStack: yep sure [04:02] AndroUser2 has joined the channel [04:02] tmzt: it will still verify the account but it would be instant if the token is valid [04:02] tmzt: nicer than adding a second email and switching between them [04:03] jimt has joined the channel [04:07] meso_ has joined the channel [04:07] gf3 has joined the channel [04:10] TheEmpath2: your face is just incrementing integers [04:13] softdrink has joined the channel [04:15] plemarqu has joined the channel [04:16] plemarqu: anyone around who is familiar with installing node.js through cygwin? [04:20] tmzt: so I would have to use rabbitmq or something like that if I had to display events that were actually being processed by another node instance? [04:20] piscisaureus: ryah_: please land some stuff for me. https://github.com/piscisaureus/node/compare/ry...push [04:20] tmzt: and I only want to trap those events if a certain page is open on the customer facing front end instance [04:20] jakehow has joined the channel [04:21] confoocious has joined the channel [04:21] confoocious has joined the channel [04:21] whyme has left the channel [04:21] ashleydev has joined the channel [04:23] jamescarr has joined the channel [04:25] plemarqu has joined the channel [04:26] SubStack: tmzt: what's this about events? [04:26] Qbix1 has joined the channel [04:30] bingomanatee: Allright! looks like noogle can parse the logs properly now [04:30] bingomanatee: all we need is a search page and its up and running! [04:30] halfhalo: for what? [04:30] bingomanatee: noogle. I'm indexing the IRC logs in node. [04:31] halfhalo: I tried something like that once.. then tried to be fancy and make it a bot and then got lazy [04:31] sudoer has joined the channel [04:33] kawaz_air has joined the channel [04:35] Bosmon2: plemarqu - I did it [04:36] Bosmon2: There has been a fault for the last few releases since 0.3.2 that means they don't build properly under Cygwin [04:36] Bosmon2: You need to go back to 0.3.1 [04:36] Bosmon2: I believe the issue has just been fixed upstream at v8 [04:37] plemarqu: @bosmon2 ah, I'm compiling against 0.2.5 now and it seems to be working better [04:37] plemarqu: but I'll update to 0.3.1 [04:38] Bosmon2: There is a patch described in the docs that fixes the build, but unfortunate it produces .exes which don't run [04:38] plemarqu: lol, less than an ideal fix! [04:38] Bosmon2: :P [04:38] Bosmon2: It only claimed to resolve the build errors :P [04:39] ashleydev has joined the channel [04:39] piscisaureus: plemearqu: Bosmon: sorry about that :-) [04:39] Bosmon2: Did you observe the same thing? [04:39] plemarqu: lol, no worries! all I need is a basic build [04:39] Bosmon2: An "exe which exits immediately"? [04:40] Bosmon2: Are you the Cygwin buildmeister, goldfish? [04:40] piscisaureus: Bosmon2: not really, but the last time I am responsible for the offending patch [04:41] Bosmon2: Ah well... it was a promising patch :P [04:41] piscisaureus: the guy who did the cygwin support left, sadly. [04:41] piscisaureus: I think I could fix the cygwin build but I've been busy with (and more interested in) creating a real mingw build [04:42] Bosmon2: It's ok, it's not too urgent for me to be at cutting edge right now [04:42] Bosmon2: I'm in a pretty early stage of development [04:42] perezd has joined the channel [04:42] Bosmon2: Isn't mingw missing some of the crucial libraries? [04:42] piscisaureus: like what? [04:42] shaver: epoll? [04:42] shaver: or libeio [04:42] piscisaureus: libeio has been ported more or less [04:43] piscisaureus: libev uses select on mingw [04:43] amerine has joined the channel [04:43] Bosmon2: ok, cool [04:43] piscisaureus: not really ideal on windows, would like to use io completion ports but that requires some rework of node internals [04:44] Bosmon2: Urgh... I keep forgetting which browser to open github pages in.... their JS is just so offensively bad [04:44] piscisaureus: using libeio doesn't make much sense either, but it works so far [04:44] Bosmon2: It blocks the entire browser on Opera 9 [04:44] Bosmon2: Not that I expect they're planning on having many Opera 9 users... but really that is a bit extreme :P [04:46] k04n has joined the channel [04:47] Bosmon2: The thread on AIO was pretty interesting [04:48] piscisaureus: Yeah but the problem with those things is, that often whether an approach is feasible hinges on a few details [04:48] dsirijus has joined the channel [04:48] Bosmon2: I'm really excited by this new ASYNCHRONOUS WORLD.... [04:49] piscisaureus: And the AIO thread was a lot of ppl speculation on what could be done, but nobody actually doing things [04:49] Bosmon2: It seems the AIO situation even on Linux is pretty grim [04:49] piscisaureus: Although I am not a linux expert, looks like it yeah [04:50] Bosmon2: Really fascinating that JAVASCRIPT of all things is pushing kernel technology now :P [04:50] jimt_ has joined the channel [04:50] echosystm has joined the channel [04:50] echosystm: anyone used node with LDAP? [04:51] micheil has joined the channel [04:51] chiragrules has joined the channel [04:51] Bosmon2: Looked at "libevent"? [04:52] piscisaureus: it's supposed to be slow [04:52] piscisaureus: And I don't want to rewrite node just to find out ... [04:52] whack: Bosmon2: async io isn't bad on linux, what do you mean? [04:52] whack: piscisaureus: libevent is quite nice. [04:53] Bosmon2: whack - as far as i read, it uses userland threads? [04:54] whack: Bosmon2: libevent? [04:54] piscisaureus: whach: http://data.plan9.de/2dat.t1.png [04:55] whack: those tests don't describe the host system, compile flags, whether each was using epoll/poll/select/etc ? [04:55] Bosmon2: No, async disk I/O on Linux in general [04:55] piscisaureus: whack: *its supposed to be* slow [04:55] whack: Bosmon2: ooh, you mean disk io, not file descriptors in general [04:55] piscisaureus: whack: I didn't do those tests [04:56] whack: piscisaureus: not claiming you did, but there's quite a bit of important data missing from the graph :( [04:57] langworthy has joined the channel [04:58] erlnoob has joined the channel [04:58] piscisaureus: whack: yeah, that's sad indeed. I think epoll is used in all cases. I have not further info about the setup [04:58] clarkfischer has joined the channel [05:02] mscdex: node.js rules! [05:03] clarkfischer: rhino drools! [05:03] mscdex: so it has a memory leak? [05:04] MrSmurf has joined the channel [05:06] clarkfischer: no, but it's java (blech) [05:06] piscisaureus: shaver: why did is awfy no longer updated? [05:06] shaver: guy got busy [05:06] shaver: there's a beta page at awfy2.php that updates, but has no legend [05:07] Utkarsh has joined the channel [05:07] piscisaureus: oh awfy2.php [05:08] jimt has joined the channel [05:08] piscisaureus: shaver: looks like jaeger hasn't made much progress lately :-/ [05:09] piscisaureus: although the kraken graph looks good [05:10] shaver: piscisaureus: over the last few weeks? mostly been locking down bugs for FF4 [05:11] shaver: we need to add more benchmarks, though, to cover more workloads [05:11] shaver: once we get FF4 in the bag next month, things'll pick up again [05:11] ttpva has joined the channel [05:16] piscisaureus: shaver: I get that. You really think FF4 will be there in a month? [05:16] piscisaureus: That would be real good, but I've learned to take moz announcements with a grain of salt :-p [05:17] shaver: well, next month is 4-6 weeks, but yeah [05:17] shaver: I think we'll ship pretty close to the end of Feb, and be done except for roll-out in Feb [05:17] piscisaureus: cool [05:17] shaver: bhackett gets back at the beginning of Marhc [05:18] shaver: and then we'll see some stuff lighting up on the graph [05:18] whyme has joined the channel [05:19] piscisaureus: great. we need you need to keep pushing the v8 team :-) [05:19] nejucomo has joined the channel [05:20] shaver: I'm not too worried there [05:20] shaver: I was worried when I heard that crankshaft was "twice as fast", but less so when I learned that it meant "twice as fast on half of the v8 benchmarks, nothing on the others or on sunspider" [05:20] shaver: probably helped on kraken a bit [05:21] piscisaureus: actually crankshaft was quite a disappointment to me [05:21] shaver: it's hotspot for JS [05:21] shaver: the code is very similar in structure [05:21] piscisaureus: yeah but it was only 1% implemented [05:21] shaver: I was surprised that they announced it in that state [05:21] shaver: Google usually has stuff more baked than that when they unveil it [05:21] shaver: we couldn't get it to run without crashing when we pulled the tree that day [05:22] Bosmon2: hah [05:22] Bosmon2: From time to time :p [05:22] shaver: they fixed it up quickly, but still surprising for a big unveil [05:22] mikeal has joined the channel [05:24] piscisaureus: maybe they thought it would 'leak out' anyway and tried to max it out pr-wise [05:24] shaver: nah [05:24] shaver: they chose to land it [05:24] shaver: they sat on V8 itself for 2 years [05:24] shaver: they can stay chill :-) [05:24] piscisaureus: hmm, true [05:25] piscisaureus: but there was a point in doing so, because the fact that tm was now faster v8 was publicized widely [05:25] piscisaureus: but I don't know, I don't work there [05:26] shaver: I think they were more worried about IE9's numbers, tbh [05:26] shaver: but those were on sunspider [05:26] shaver: and crankshaft didn't move them [05:26] shaver: maybe a show of force [05:26] shaver: I guess I could ask them :-) [05:26] piscisaureus: do it :-) [05:27] piscisaureus: I could as well, I think Erik hangs out here sometimes but not at this time of day [05:27] shaver: erik doesn't seem to like answering my questions :-) [05:28] piscisaureus: really? [05:28] shaver: well, I asked him one on es-discuss, and he went pretty quiet [05:28] ShiZWeaK has joined the channel [05:28] shaver: mostly I'm just poking fun [05:29] mikeal: shaver: where is that new benchmark Brendan was talking about building? [05:29] shaver: kraken? [05:29] shaver: oh [05:29] mikeal: i'm really sick of sunspider and v8bench [05:29] shaver: it's not released yet [05:29] mikeal: yaeh [05:29] shaver: krakenbenchmark.com [05:29] shaver: http://krakenbenchmark.mozilla.org/index.html [05:30] mikeal: it would be nice to collect some common patterns in node and provide a benchmark, or at least point in the right direction, for what would increase node performance [05:31] mikeal: i know that not opting out of the optimizations when the number of arguments don't match will be one [05:31] mikeal: and anything related to closure performance is huge [05:31] piscisaureus: mikeal: switch (v) { case CONST1: break; case CONST2 ... } [05:31] piscisaureus: does really bad atm [05:31] Bosmon2: Seems the biggest node bottleneck right now is bulk I/O [05:32] mikeal: i never use switch statements [05:32] Bosmon2: As a result of all the arse about encodings [05:32] mikeal: i rarely see them in node code [05:32] piscisaureus: felixge's node-mysql does, and it's really slow because of it [05:32] jdalton has joined the channel [05:32] richcollins has joined the channel [05:32] mikeal: someone was talking about how slow switch is [05:32] mikeal: i want to say it was mjr or isaacs [05:32] mikeal: but i really don't remember [05:33] piscisaureus: it should be optimized using some sort of enthropy based tree [05:33] mikeal: shaver: did you get my twitter DM? [05:34] shaver: mikeal: yeah [05:34] mikeal: cool [05:34] mikeal: is today a canadian holiday as well? [05:35] shaver: no, but I live in the US right now [05:37] mikeal: I was also trying to get ahold of another canadian today about nodeconf stuff and they weren't around [05:37] shaver: oh yeah [05:37] shaver: I wanted to propose a talk for that [05:37] shaver: but I wanted someone else to give it [05:38] shaver: so I need to bug them tomorrow about it [05:38] mikeal: cool [05:38] mikeal: i'm trying to figure out if I wanna cut track B [05:38] shaver: cutting mad trax? [05:38] mikeal: so the more proposals now the better, it's going to effect our decision [05:39] mikeal: the venue is great, but the layout has to change pretty dramatically depending out how we divide up the conference [05:40] mikeal: oh, one last thing, does spidermonkey do any performance testing of very large JSON serialize/deserialize? [05:40] mikeal: it's something that is coming up more and more in node and I was hoping to do a comparison and possibly get the v8 guys caring about it [05:40] vnguyen has joined the channel [05:46] zemanel has joined the channel [05:47] langworthy has joined the channel [05:57] hobodave has joined the channel [05:59] eags_ has joined the channel [06:01] mscdex: that's odd that switch statements would be considerably slower than an if-else ladder [06:02] mikeal: optimizations are crazy [06:03] hobodave has joined the channel [06:05] techwraith has joined the channel [06:05] techwraith has left the channel [06:06] meso_ has joined the channel [06:07] pyrotechnick has joined the channel [06:07] pyrotechnick: SubStack: you around mate? [06:09] hobodave has joined the channel [06:11] jdalton has left the channel [06:14] hobodave has joined the channel [06:17] nonnikcam has joined the channel [06:17] mikew3c: so if performance of switch is so bad, and you want to write a parser for something, that kind of sucks [06:18] Lorentz: Is it so bad that it's completely noticeable, or is it just "we ran out of things to optimise so we're looking at switch now"? [06:18] SubStack: pyrotechnick: ahoy [06:19] SvenDowideit_ has joined the channel [06:19] mikew3c: ACTION looks at node html5 tokenizer source [06:19] SubStack: if your bottlenecks are minor syntactical features, you're doing it wrong [06:20] Lorentz: SubStack: In one way, you're doing very well because it's left to optimising the language, not your algorithms. [06:20] Utkarsh has joined the channel [06:21] Lorentz: And time for home [06:21] void_ has joined the channel [06:21] SubStack: ah true I suppose [06:21] SubStack: I just write things the pretty way and let the v8 folks worry about making that run fast unless it's not fast enough for my purposes [06:25] flippyhead has joined the channel [06:26] pyrotechnick: SubStack: is there a way to get a var to sync across dnode without calling methods? [06:26] pyrotechnick: or does that already happen? [06:26] pyrotechnick: also are you aware with the issues with coffeescript? [06:26] SubStack: nope, no synchronization primitives [06:26] ossareh has joined the channel [06:26] pyrotechnick: you must return something other than a local/remote definition [06:27] SubStack: nope, I haven't even used coffee script yet [06:27] SubStack: return where? [06:27] mscdex: back to the future! [06:28] pyrotechnick: ill gist it [06:29] pyrotechnick: SubStack: https://gist.github.com/784051 [06:31] flippyhead has joined the channel [06:31] SubStack: ACTION looks up how coffeescript works [06:32] pyrotechnick: it implicitly returns the last statement [06:32] pyrotechnick: maybe i should just put it in the wiki or something [06:32] pyrotechnick: i'm not sure it's anything you can fix [06:33] jimt has joined the channel [06:33] SubStack: yeah the implicit return looks like it messes it up [06:35] pyrotechnick: just as long as people are aware of it [06:35] mikeal has joined the channel [06:35] jankoprowski has joined the channel [06:36] pyrotechnick: there aren't many things that trip you up in coffee but that's one of them [06:36] saschagehlich has joined the channel [06:41] SvenDowideit_ has joined the channel [06:47] jimt_ has joined the channel [06:47] neynenmo has joined the channel [06:49] MrTopf has joined the channel [07:00] x_or has joined the channel [07:01] Qbix1 has joined the channel [07:01] liar has joined the channel [07:05] opengeard has joined the channel [07:07] bingomanatee_ has joined the channel [07:09] neynenmo_ has joined the channel [07:10] meso_ has joined the channel [07:10] chrischris has joined the channel [07:11] AAA_awright_ has joined the channel [07:11] benburkert has joined the channel [07:12] neynenmo_ has joined the channel [07:13] mr_daniel has joined the channel [07:14] neynenmo has joined the channel [07:17] liar has joined the channel [07:17] xthsky has joined the channel [07:20] xthsky: hi, I come across a problem when build nodejs 0.3.5 on cygwin. [07:20] xthsky: Build failed: -> task failed (err #2): {task: libv8.a SConstruct -> libv8.a} [07:20] sveimac has joined the channel [07:21] hobodave_ has joined the channel [07:21] matjas has joined the channel [07:22] xthsky: I tried to export SHELL=/bin/bash , but it didn't help. [07:24] nook has joined the channel [07:25] SamuraiJack has joined the channel [07:25] devdrinker has joined the channel [07:25] jimt has joined the channel [07:26] robotarmy has joined the channel [07:27] SteveDekorte has joined the channel [07:27] fangel has joined the channel [07:27] everzet has joined the channel [07:29] sveimac has joined the channel [07:29] whyme: /part [07:29] whyme has left the channel [07:30] Bosmon2: xthsky - Cygwin builds are broken currently - drop back to version 0.3.1 and it will work [07:30] jimt_ has joined the channel [07:30] Bosmon2: I believe a fix is in the works upstream from v8 [07:32] xthsky: thanks [07:33] xthsky: Let me hava a try :) [07:33] kroman has joined the channel [07:34] kroman: help install nodejs under cygwin [07:34] Evet: server-side html [07:35] kroman: on the https://github.com/ry/node/wiki/Building-node.js-on-Cygwin-%28Windows%29 don't understand what's mean This comes about when $SHELL has a windows based path instead of a unix based one. E.g., C:\bin\bash instead of of /bin/bash. So, try, explort SHELL=/bin/bash and re-run make. [07:35] liar has joined the channel [07:39] zentoooo has joined the channel [07:41] liar has joined the channel [07:44] Thorn has joined the channel [07:44] Fullmoon has joined the channel [07:46] benburkert has joined the channel [07:50] devdrinker has joined the channel [07:51] desaiu: Can someone break express and javascriptmvc down for me, what their differences are, what they are each suited for. [07:51] vineyard has joined the channel [07:53] margle has joined the channel [07:53] daglees has joined the channel [07:55] jdalton has joined the channel [07:55] jdalton has left the channel [07:56] statim has joined the channel [08:00] jetienne has joined the channel [08:02] statim: what would be the best way to close any open connections (express, socket.io, and redis) gracefully when the app gets a shutdown signal? currently ive got something along the lines of listening for app 'close', and calling redis.close(). so to gracefully exit in theory i should just have to call app.close() (which is the express server), and everything will eventually close. [08:02] mikeal has joined the channel [08:05] nejucomo has joined the channel [08:05] mraleph: ryah_: why would you want a SMI? maybe use External::Wrap? [08:07] devdrinker has joined the channel [08:08] devdrink_ has joined the channel [08:09] meso_ has joined the channel [08:10] devdrin__ has joined the channel [08:11] luke` has joined the channel [08:11] devdrinker has joined the channel [08:12] yozgrahame has joined the channel [08:15] mAritz has joined the channel [08:16] derferman has joined the channel [08:17] devdrink_ has joined the channel [08:20] ph^ has joined the channel [08:24] devdrinker has joined the channel [08:27] virtuo has joined the channel [08:27] muhqu has joined the channel [08:28] evl has joined the channel [08:32] ryah_: mraleph: im worried about externals being slow [08:33] ryah_: mraleph: here's my macro [08:33] ryah_: extern char etext; [08:33] ryah_: #define ADDRESS_TO_JS(address) Integer::New((intptr_t)address - (intptr_t)etext) [08:33] ryah_: #define JS_TO_ADDRESS(type, value) static_cast((void*)(value->IntegerValue() + etext)) [08:34] ryah_: super fast pointers in js [08:36] [AD]Turbo has joined the channel [08:36] evl: I'm using a library for my project that uses log.js. I'm a bit lost on how I can manipulate that library from my project (adjust log level etc.), any suggestions? [08:37] [AD]Turbo: hi there [08:37] pquerna: ryah_: i get back from dinner and you've already done it! [08:38] saschagehlich has joined the channel [08:38] Thorn has left the channel [08:38] mraleph: ryah_: yeah that should work just fine if |etext - address| < 2^31 [08:39] mraleph: ryah_: but I always thought that External::Wrap tries to represent pointer using smi [08:39] tc77 has joined the channel [08:40] mraleph: ryah_: unless the pointer is not aligned by two [08:40] Wizek has joined the channel [08:40] Wizek: hi [08:41] Wizek: v8: (function() {var a={}; console.log(a); a.a=1})() [08:41] v8bot: Wizek: CONSOLE: [{"a": 1}], OUTPUT: undefined [08:41] Wizek: can someone explain me this please? [08:41] mraleph: ryah: also... should not it be Integer::New((intptr_t)address - (intptr_t)&etext) [08:41] mraleph: ryah_: ^^^^^ [08:42] mraleph: ryah_: otherwise it looks like you are adding value of type char to a pointer. [08:42] k04n has joined the channel [08:43] Wizek: Since when has console.log() became async? [08:43] mscdex: Wizek: what version of node/v8? [08:44] mscdex: i'm not getting that on v0.2.6 [08:44] ryah_: Wizek: always [08:44] ryah_: Wizek: console.error() isn't [08:45] ryah_: mraleph: yeah, thanks [08:45] Wizek: v8: (function() {var a={}; console.error(a); a.a=234})() [08:45] v8bot: Wizek: TypeError: Object [object Object] has no method 'error' [08:45] Wizek: v8: (function() {var a={}; sys.puts(a); a.a=234})() [08:45] v8bot: Wizek: ReferenceError: sys is not defined [08:46] romeo_ordos has joined the channel [08:46] romeo_ordos has left the channel [08:46] saschagehlich_ has joined the channel [08:46] mscdex: i don't even get that with v0.3.4 [08:47] mscdex: :S [08:47] mraleph: ryah_: correction: your code will work fast if |etext - address| < 2^31 (32 on x64) and it will work correctly if |etext - address| < 2^51. External::Wrap will work fast if your pointer looks as SMI (that means almost never on x64) and correct in all other cases. [08:48] ryah_: mraleph: i think it's a safe assumption that address - etext < 2^31 [08:49] Wizek: mscdex: I've been using Chrome 10's console to try to figure this out, I don't know which v8 version that is, but you can clearly reproduce the problem here by evaluating with "v8:" [08:49] mraleph: well... [08:49] ryah_: mraleph: well - okay it's safe to assume < 2^51 -- agreed? [08:49] mscdex: ryah_: why are v0.2.x (besides v0.2.0) changelogs excluded from changelog.html ? [08:49] ryah_: and the vast majority of the time < 2^31 [08:49] mscdex: Wizek: i'm not sure either, but i can't reproduce that in a node repl [08:49] ryah_: mscdex: because they're managed in different branches [08:50] mraleph: ryah_: I'll think about it :-) but you should probably add some assertions to avoid veeeeeery mysterious crashes [08:50] mscdex: ryah_: hmm :-\ [08:50] ryah_: mraleph: yes [08:52] Wizek: v8: (function() {var a={}; sys.puts(a); a.a=234})() @ mscdex [08:52] v8bot: Wizek: SyntaxError: Unexpected token ILLEGAL [08:53] mscdex: Wizek: still an empty object if you inspect it [08:54] Druid_ has joined the channel [08:55] aklt has joined the channel [08:56] adambeynon has joined the channel [08:59] Utkarsh_ has joined the channel [09:00] rope has joined the channel [09:01] MrTopf has joined the channel [09:03] jankoprowski has joined the channel [09:04] clarkfischer has joined the channel [09:04] ziro` has joined the channel [09:09] xla has joined the channel [09:09] tk has joined the channel [09:11] ROBOd has joined the channel [09:12] otacon has joined the channel [09:15] herbySk has joined the channel [09:16] felixge has joined the channel [09:17] Kingdutch has joined the channel [09:17] felixge: ryah_: still up? [09:17] Bosmon has joined the channel [09:22] TomY has joined the channel [09:22] fangel has joined the channel [09:23] otacon: hi all. I found what I think is a bug: ([2,3,10,20,30]).sort()[0] == 10 [09:23] otacon: where should I report it? [09:24] tahu has joined the channel [09:25] evl: otacon: isn't sort by default ascii? [09:25] Kingdutch: v8> ([2,3,10,20,30).sort()[0] [09:25] v8bot: Kingdutch: SyntaxError: Unexpected token ) [09:25] Kingdutch: v8> ([2,3,10,20,30]).sort()[0] [09:25] v8bot: Kingdutch: 10 [09:25] Kingdutch: otacon: It's correct behaviour [09:25] Kingdutch: sort() is a build in function [09:25] Kingdutch: THe 1 goes before 2 [09:26] Kingdutch: otacon: You probably want: [09:26] Kingdutch: v8> ([2,3,10,20,30]).sort(function(a,b) { return a-b; }); [09:26] v8bot: Kingdutch: [2, 3, 10, 20, 30] [09:26] Kingdutch: v8> ([2,3,10,20,30]).sort(function(a,b) { return a-b; })[0]; [09:26] v8bot: Kingdutch: 2 [09:26] Kingdutch: v8> ([10, 30, 20, 3, 2]).sort(function(a,b) { return a-b; })[0]; [09:26] v8bot: Kingdutch: 2 [09:26] Kingdutch: :) [09:27] martinciu has joined the channel [09:27] zomgbie has joined the channel [09:27] otacon: Kingdutch: thanks. I checked in a browser, but my eyes didn't see what was there: they saw what I was convinced would be there. Thanks for the recipe [09:28] Kingdutch: Np, I jsut googled javascript sort and this popped from w3schools [09:28] Utkarsh has joined the channel [09:28] Kingdutch: if A is before B return -1 [09:28] Kingdutch: if B is before A return 1 [09:28] Kingdutch: If they match return 0 and nothing will happen [09:28] Kingdutch: Now you can sort anything :D [09:30] SteveDekorte has joined the channel [09:33] pdelgallego has joined the channel [09:37] astropirate: why would one want to setup node.js with nginx? [09:37] Kingdutch: To use SSL [09:38] Kingdutch: Or as a way to distribute load [09:38] brainproxy: is anything known to be wrong with garbage collection in 0.3.x? [09:39] sth: A fastcgi process with node might be cool [09:39] astropirate: kingdutch, sorry for dumb question but i'ma newbie here from the php/lamp stack. Does nginx do the load distribution automatically? [09:39] astropirate: or does it require some configuration [09:40] Kingdutch: astropirate: Not sure, I've never worked with nginx yet and I haven't seen the need to hang it in front of my node.js service yet. I've tried some load testing and one node instance could pretty much handle thousand connections at once (AMD Athlon with just 1GB ram) and it was mostly limited by the fact that I misconfigured my linux box to not allow more open files ;) [09:41] Kingdutch: So if you really have that many connections going to your service you could starting to look at nginx, before that I wouldn't really be concerned about it [09:41] Kingdutch: brainproxy: Not that I know of, y? [09:41] brainproxy: well, it may be the library I'm using, or the way I'm using it :D [09:41] brainproxy: trying to find the culprit [09:41] Kingdutch: It's usually you [09:41] Kingdutch: (It's also usually me or anyone else) [09:42] Kingdutch: But it oculd be the library, don't know what you're using [09:42] glenngillen has joined the channel [09:42] brainproxy: I was very very happy w/ the amount of traffic/requests I could push through a single one of my processes [09:42] glenngillen has left the channel [09:42] brainproxy: but the memory usage increases linearly w/ time [09:43] brainproxy: when the client/s are killed, it doesn't get cleaned up though, stays pegged around where it was when the clients were hammering the server [09:43] Kingdutch: Hmm yeh [09:43] Kingdutch: You gotta be careful with memory allocations [09:43] Kingdutch: Hmm, show us some code then [09:43] eags_ has joined the channel [09:43] brainproxy: https://github.com/michaelsbradleyjr/Smoothie/blob/master/lib/Smoothie/Server.js [09:44] brainproxy: https://github.com/michaelsbradleyjr/Smoothie/blob/master/experiments/ping-pong.js [09:44] brainproxy: it may not make much sense if you're unfamiliar with Joose and/or FlapJax [09:44] brainproxy: :/ [09:45] Kingdutch: GHhehe it doesn't :') [09:45] snowls has joined the channel [09:45] brainproxy: i think it's my flapjax-based code .. I think the eventstreams aren't getting cleaned up properly [09:45] pyrotechnick has joined the channel [09:45] herbySk has joined the channel [09:45] brainproxy: flapjax is very cool btw :) [09:45] brainproxy: http://www.flapjax-lang.org/ [09:45] Kingdutch: It might also be [09:45] Kingdutch: var thisClass = this [09:46] Kingdutch: From which you create closures [09:46] Kingdutch: Which might not be entirely done with [09:46] brainproxy: hmm, could be [09:46] cagan327 has joined the channel [09:46] Kingdutch: Thus the entire object is preserved since there's a ref to this [09:46] cagan327 has left the channel [09:46] brainproxy: let me see... [09:47] jbpros has joined the channel [09:50] kawaz_work has joined the channel [09:50] daglees has joined the channel [09:52] AAA_awright has joined the channel [09:52] romainhuet has joined the channel [09:53] omarkj has joined the channel [09:55] brainproxy: one process pushing 32 mbps and the processor's not really even working hard .. gotta love node :) [09:55] brainproxy: using lighter weight closures now, maybe it will help, we'll see.. [09:58] bzinger has joined the channel [09:58] Kingdutch: Wew [09:58] Kingdutch: Read through 160 mailing list mails [09:59] Kingdutch: Such an aweful lot of work to catch up [09:59] altamic has joined the channel [09:59] Utkarsh_ has joined the channel [10:00] Kingdutch: Time to go back to school [10:00] Kingdutch: good day [10:02] x_or: Can anyone tell me why this attempt at connecting to postgres using pg is giving me "throw new Error("Uncaught, unspecified 'error' event.");" https://gist.github.com/784242? I'm completely stumped, I know the connection parameters are correct, it seems to be the same as the examples. [10:05] Utkarsh__ has joined the channel [10:07] messju has joined the channel [10:08] sth: Anyone know what --debug does in the configure options? [10:09] daglees has joined the channel [10:14] markwubben has joined the channel [10:17] nooder has joined the channel [10:20] HerrTopf has joined the channel [10:22] squeeky has joined the channel [10:24] erlnoob has joined the channel [10:25] SteveDekorte has joined the channel [10:33] AAA_awright_ has joined the channel [10:34] mraleph has joined the channel [10:34] [AD]Turbo has joined the channel [10:35] jbergstroem has joined the channel [10:46] common- has joined the channel [10:49] mikedeboer has joined the channel [10:55] vineyard has joined the channel [10:56] vineyard has joined the channel [11:11] ewdafa has joined the channel [11:23] jimt has joined the channel [11:24] codemanki has joined the channel [11:29] fermion has joined the channel [11:31] masahiroh has joined the channel [11:31] zorzar has joined the channel [11:38] ajpiano has joined the channel [11:42] daglees has joined the channel [11:43] nook has joined the channel [11:44] messju has joined the channel [11:46] messju: wollte /uptime tippen - wurde aber zu /upgrade komplettiert... [11:47] messju: ah - sorry - wrong chan :| [11:47] [AD]Turbo has joined the channel [11:48] cuenca has joined the channel [11:49] cuenca: Hi, I'm trying to compile node.js v0.2.6, but when I run configure, I get: [11:49] cuenca: ImportError: No module named js2c [11:49] cuenca: (with a traceback) [11:50] cuenca: any clues? [11:51] Utkarsh_ has joined the channel [11:52] x_or1 has joined the channel [11:55] x_or has joined the channel [11:55] x_or: cuenca: Are you using npm to install, or manually? [11:55] cuenca: x_or: I'm installing from github [11:55] x_or: I would highly recommend using nvm. [11:56] x_or: I meant nvm, not npm. Sorry. [11:56] x_or: "Node Version Manager" [11:56] x_or: It will make your life so much easier. [11:56] cuenca: ok, I'm googling it... [11:59] jimt_ has joined the channel [12:00] cuenca: x_or: I got exactly the same error [12:01] margle has left the channel [12:01] cuenca: see https://gist.github.com/784331 [12:03] x_or: What version of ubuntu? [12:03] mikew3c has joined the channel [12:04] x_or: cuenca: Have you run "apt-get update && apt-get upgrade" as root to see if you have the latest build libraries? [12:05] cuenca: x_or: not recently, let me try that [12:05] x_or: Looks like you are missing a python library, wonder if you have the prerequisites to build. I am using ubuntu and this did not happen to me. [12:06] cuenca: js2c is in the tree, but it looks like it's not in the sys path or something [12:09] x_or: I would recommend creating another user on your system, seeing if you can install there. If so, there is something weird about your user environment which you can adjust. If not, something is wrong at the system level. Did you install node as root previously, perhaps? [12:10] Utkarsh has joined the channel [12:12] bradleymeck has joined the channel [12:18] w0rse has joined the channel [12:24] agiurgiu has joined the channel [12:25] agiurgiu has left the channel [12:27] cuenca: x_or: installing it as another user did the trick [12:28] cuenca: x_or: now I just need to figure out what's wrong with my initial user... thanks for the tip! :-) [12:28] bradleymeck has joined the channel [12:29] mysterion` has joined the channel [12:31] x_or: No worries, glad I could help. [12:32] Utkarsh_ has joined the channel [12:35] eee_c has joined the channel [12:37] pdelgallego has joined the channel [12:39] AndroUser2 has joined the channel [12:39] piscisaureu_ has joined the channel [12:40] Utkarsh has joined the channel [12:40] tfcoding has joined the channel [12:44] eikke has joined the channel [12:46] kawaz_air has joined the channel [12:46] boaz_ has joined the channel [12:47] scheibo has joined the channel [12:52] philipharrison has joined the channel [12:52] sriley has joined the channel [12:53] jbpros has joined the channel [12:55] aheckmann has joined the channel [12:56] tanepiper: http://javascriptweblog.wordpress.com/2011/01/18/javascripts-arguments-object-and-beyond/ [12:58] enotodden has joined the channel [13:02] felixge has joined the channel [13:02] felixge has joined the channel [13:04] felixge: is anybody here doing socketpair() / file descriptor passing? [13:04] enotodden has joined the channel [13:04] martinciu has joined the channel [13:05] chrischris has joined the channel [13:10] devdrinker has joined the channel [13:11] devdrink_ has joined the channel [13:12] bradleymeck has joined the channel [13:15] romainhuet_ has joined the channel [13:15] cb2 has joined the channel [13:16] fairwinds has joined the channel [13:17] miccolis has joined the channel [13:18] c4milo1 has joined the channel [13:18] neynenmo has joined the channel [13:19] Twelve-60 has joined the channel [13:22] tfcoding has joined the channel [13:23] Wizek has joined the channel [13:23] Wizek: hi there [13:23] Wizek: Can I have an async for loop? [13:24] piscisaureus has joined the channel [13:25] felixge: Wizek: you can use process.nextTick [13:25] c4milo1 has joined the channel [13:26] jimt has joined the channel [13:28] Wizek: felixge: How does that work? I don't see it documented [13:29] liar has joined the channel [13:29] MrTopf has joined the channel [13:29] felixge: Wizek: is this a (for var x in y) loop, or for (var i = 0; ...) ? [13:30] Wizek: felixge: the former [13:30] felixge: Wizek: you're out of luck [13:30] felixge: Wizek: I mean before v8 executes such a loop, it builds an index of all keys [13:31] felixge: so if you have millions of keys, there is going to be a long break [13:31] felixge: if your main CPU time is spend in the loop, you might still be able to use process.nextTick [13:31] felixge: but it sounds like you might need workers [13:32] devdrink_: is there a testing framework i could use across my whole stack. NodeUnit will work well for testing NodeJs stuff, and I can use nodeunit to test against my couchdb functions (stored in files via couchapp), but what about in the browsers where we dont have commonjs and a js file might have dependenices on stuff load in other files [13:32] Wizek: felixge: All I want is a "global" callback, which gets executed when all the callbacks in the loop were already executed. [13:32] devdrink_: what approach are people taking with regards to full stack testing [13:33] devdrink_: and I dont mean ui automation [13:34] devdrink_: nodeunit sandbox looks interesting but I guess Ive have to concat all the files [13:34] felixge: Wizek: you will have to look at some of the flow control libraries out there [13:34] felixge: Wizek: or keep track of how many callbacks fired yet [13:34] felixge: devdrink_: Jasmine might be an option for you [13:35] Wizek: felixge: To be more precise: I'm making multiple accesses to the DB, and when all of them "return", meaning that I got the data from them, another callback is fired, making my code continue [13:35] felixge: devdrink_: http://pivotal.github.com/jasmine/ [13:35] devdrink_: just looking at that.. very interesting although im not a big BDD fan, i like the plain old nunit/junit style [13:35] felixge: Wizek: again, you have to track how many queries you send, and how many callbacks have returned to you yet [13:35] felixge: Wizek: using a simple counter variable [13:35] felixge: devdrink_: same here :) [13:36] liar has joined the channel [13:36] felixge: devdrink_: I'm working on a new lib, not sure if I'm going to do browser support so [13:36] felixge: it's kind of a pain in the ass [13:36] felixge: :) [13:37] arpegius has joined the channel [13:37] felixge: also, I don't know if unit testing makes sense in the browser [13:37] devdrink_: yeah I can imagine.... new lib?? wish you didnt abandon node-couchdb. workaround a few issues but will wait till node 0.4.0 before forking [13:37] felixge: I mean on the server side I mostly have to fight basic correctness issues [13:37] devdrink_: more integration tests [13:37] felixge: on the client side most bugs are misunderstood requirements / browser behavior [13:38] clarkfischer has joined the channel [13:38] felixge: devdrink_: well, I don't use couchdb for anything right now. So me maintaing the module is a little ridiculous : ) [13:38] felixge: devdrink_: I'm sorry about this so, I mean I usually don't abandon modules [13:39] devdrink_: of course! just kidding you, id do the same. its only a few small fixes but not in a releasable state atm, node 0.4 should be out soon tho [13:39] perlmonkey2 has joined the channel [13:39] felixge: devdrink_: the new lib will be called 'fake' and is focused on basic correctness testing [13:39] felixge: I don't think anybody besides me is doing basic correctness tests at this point in node [13:39] felixge: so you may not care [13:39] felixge: :) [13:40] saschagehlich has joined the channel [13:40] devdrink_: if Im honest what the difference between unit testing and basic correctness? [13:40] felixge: devdrink_: nothing. Except that "unit testing" has lost any meaning whatsoever [13:40] felixge: and most people who claim to do it are merely testing a few functions [13:41] felixge: but hardly ever isolating the unit they are testing [13:41] felixge: nor are they covering all behaviors [13:41] devdrink_: true [13:41] felixge: devdrink_: https://github.com/felixge/node-mysql/blob/master/test/simple/test-client.js [13:41] felixge: this is what I mean when I say "basic correctness" [13:42] devdrink_: sometimes you dont have to cover all behaviours, only parts where you get most value, always tempted to believe that in 100% code coverage means lost sight of business value in trying to be a perfection. some area offer low value in testing [13:43] jacobolus has joined the channel [13:43] devdrink_: very interesting.. [13:46] x_or: Anyone know what this means? I am getting it when I use the node-postgres library, unsure how to stop it. "Error: Uncaught, unspecified 'error' event." [13:48] felixge has joined the channel [13:48] felixge has joined the channel [13:48] felixge: sorry, kernel panic :) [13:48] devdrink_: do we have a rough idea for a 0.4 releasE? [13:48] devdrink_: of node that is [13:49] felixge: devdrink_: yeah, when it's done [13:49] felixge: :) [13:49] felixge: seriously, this kind of stuff is all up to ryan and I have little insight into it [13:49] devdrink_: fair enough. id have to wait for expressjs, jade, node-seq etc.. to catch up anyway [13:49] Eber has joined the channel [13:49] felixge: but probably before the summer [13:49] felixge: : [13:49] felixge: D [13:50] MikhX has joined the channel [13:50] yorick has joined the channel [13:54] dgao has joined the channel [13:55] Throlkim has joined the channel [13:58] hunterloftis has joined the channel [13:59] erlnoob has joined the channel [13:59] liar has joined the channel [14:04] rickard2_ has joined the channel [14:05] hjjaa has joined the channel [14:06] iFire has joined the channel [14:06] sh1mmer has joined the channel [14:07] beawesomeinstead has joined the channel [14:07] pignata_ has joined the channel [14:07] thorsteinsson has joined the channel [14:08] mif86- has joined the channel [14:08] KyleXY has joined the channel [14:08] KyleXY has joined the channel [14:08] saschagehlich has joined the channel [14:08] meder has joined the channel [14:09] Noya has joined the channel [14:10] Ari-Ugwu has joined the channel [14:10] sugardave has joined the channel [14:10] sth has joined the channel [14:10] halfhalo has joined the channel [14:10] yorick has joined the channel [14:10] x_or: Does this article indicate correctly that if an event "error" is emitted without a listener that the entire node process will quit? http://howtonode.org/demystifying-events-in-node [14:10] backthatzachup_ has joined the channel [14:11] kawaz_work has joined the channel [14:11] MikhX has joined the channel [14:11] fly-away has joined the channel [14:11] blowery_off has joined the channel [14:11] pquerna has joined the channel [14:11] peteatolia has joined the channel [14:11] hosh_office has joined the channel [14:11] slloyd has joined the channel [14:11] shajith has joined the channel [14:11] Roelven has joined the channel [14:11] backthatzachup_ has left the channel [14:12] mAritz: are there good libraries/plugins for hashchange stuff that work in ie7-9, ff, chrome, opera, safari? [14:12] Kyso has joined the channel [14:12] mAritz: (ie6 would be cool as well) [14:14] Maxx_ has joined the channel [14:14] nu- has joined the channel [14:14] CIA-89 has joined the channel [14:15] xSmurf has joined the channel [14:16] Bosmon2 has joined the channel [14:16] Aikar: people still support ie6? [14:16] comster1 has joined the channel [14:16] Aikar: hell at my last job, one of the largest telcos in the usa, we stopped supporting ie6 for new sites lol [14:17] jchris1 has joined the channel [14:17] polotek has joined the channel [14:17] squeeky: I'll support IE6. For an extra fee. [14:17] edw` has joined the channel [14:18] davglass has joined the channel [14:18] rsterner has joined the channel [14:18] mif86 has joined the channel [14:18] Aikar: time has a greater value than money :| [14:18] Maxx_: we not support ie6 [14:19] Evet_ has joined the channel [14:19] Ezku\_ has joined the channel [14:19] zedas_ has joined the channel [14:19] olegp_- has joined the channel [14:19] chrischr_ has joined the channel [14:20] markwubben1 has joined the channel [14:20] dspree_ has joined the channel [14:20] dspree_ has joined the channel [14:20] skohorn has joined the channel [14:20] formido1 has joined the channel [14:20] hij1nx has joined the channel [14:20] adambeynon has joined the channel [14:20] ntelford has joined the channel [14:20] Aikar: BOOM HEADSHOT [14:21] temp01 has joined the channel [14:21] iaurynn has joined the channel [14:21] ewdafa has joined the channel [14:22] nlacasse has joined the channel [14:23] charlenopires has joined the channel [14:23] enotodden has joined the channel [14:25] saschagehlich: lol. [14:26] squeeky: FLAWLESS VICTORY [14:27] coobr has joined the channel [14:28] ajcool has joined the channel [14:31] romainhuet_ has joined the channel [14:32] pietern has joined the channel [14:32] dnolen_ has joined the channel [14:32] x_or1 has joined the channel [14:33] wink_ has joined the channel [14:33] alek_br has joined the channel [14:33] brianc: x_or: I know what that means [14:34] brianc: x_or: if you're still around [14:34] iszak has joined the channel [14:34] iszak has joined the channel [14:34] brianc: x_or1: I will contact you on github since you don't seem to be here anymore [14:34] lukegalea has joined the channel [14:34] BillyBreen has joined the channel [14:35] plemarqu has joined the channel [14:38] mAritz: Aikar: yeah, we don't even know yet if we have to support ie6 in our current project. that's why i qualified it as a bonus ;) [14:38] sivy has joined the channel [14:40] jouz has joined the channel [14:41] m3nt0r^aw has joined the channel [14:41] mikew3c has joined the channel [14:41] jherdman has joined the channel [14:41] fermion has joined the channel [14:42] jouz: hi there. Is it possible to "stream" a file from another server as if it was served by my server? (ie myserver.com/myfile.png streams the file myotherserver.com/myfile.png) [14:43] cferris has joined the channel [14:43] mAritz: jouz: util.pump(readableStream, writableStream, [callback]) [14:45] jouz: mAritz: thanks, that looks good, i'll try it! [14:45] ttpva has joined the channel [14:45] d0k has joined the channel [14:45] trotter has joined the channel [14:48] jakehow has joined the channel [14:49] masahiroh has joined the channel [14:49] Aikar: ryah_: or anyone know why im getting this error? https://gist.github.com/784525 vm does not want to work ;( [14:50] miccolis has joined the channel [14:51] bradleymeck has joined the channel [14:51] mmso has joined the channel [14:52] ben_alman has joined the channel [14:52] fumanchu182 has joined the channel [14:57] rjack: is https client back in v0.3.5? [14:58] alek_br_ has joined the channel [14:58] x_or1: brianc: Oops, I am here. What is up? [14:59] nsswb has joined the channel [15:01] RushPL_ has joined the channel [15:01] muk_mb has joined the channel [15:01] noahcampbell has joined the channel [15:01] RushPL_: hello there .. I am wondering if anybody is using web sockets in a p2p fashion or whether it is possible at all. [15:02] Aikar: as in no server? [15:02] brianc: x_or1: just sent you a message on github but I'm here if you have other questsions [15:03] Kingdutch has joined the channel [15:04] Aikar: RushPL_: websockets do not have the ability to create a server and client side firewalls would be an issue anyways, so its not possible to do traditional p2p, need some man in the middle server [15:04] RushPL_: http://www.w3.org/TR/2008/WD-html5-20080122/#peertopeerconnection - I was just reading this [15:04] jaredstilwell has joined the channel [15:04] RushPL_: and it sounded tempting :) [15:05] Kingdutch: Aikar, why not a push through server [15:06] RushPL_: (my application would sometimes benefit from connecting clients in p2p fashion) [15:06] Kingdutch: Just use a server as a NAT-punch through [15:06] yhahn has joined the channel [15:06] Kingdutch: And then use websockets for peer to peer [15:07] RushPL_: Kingdutch: hmm, please continue. I am not familiar with how it could work. [15:08] xla has joined the channel [15:08] x_or1: brianc: Ok, thank you! I think I figured out the issue, I believe I was calling query() without providing a callback, and then an error was emitted inside your module. [15:08] brianc: yeah [15:08] brianc: if you don't provide a callback [15:08] Kingdutch: RushPL_: I just know the term, google 'NAT Punch through' [15:08] brianc: the query will emit an 'error' event [15:08] montylounge has joined the channel [15:08] Kingdutch: `v google Nat punch through [15:08] v8bot: Kingdutch: Simple NAT punch-through - http://www.mindcontrol.org/~hplus/nat-punch.html [15:08] brianc: if you DO provide a callback, the error will be passed to the callback instead [15:08] RushPL_: Kingdutch: both ends initiate a connection and connect to a server socket on the middle host, can they really only talk to each other then? [15:08] x_or1: Is there a way to listen on this event? I tried calling client.on( 'error', …) and it did not seem to work for me. [15:08] Kingdutch: `v google for RushPL_ Nat punch through [15:08] v8bot: Kingdutch: No search results found. [15:09] Kingdutch: >.> [15:09] Kingdutch: lol [15:09] RushPL_: all right [15:09] brianc: yeah, query.on('error', ...) [15:09] brianc: like you do this: [15:09] x_or1: Ah, Ok. [15:09] x_or1: Got it. [15:09] brianc: var query = client.query("select * from blah)" [15:09] brianc: query.on('error'...) [15:09] Kingdutch: RushPL_: I never implemented something like that, so not sure if it's possible, it's an idea though [15:09] brianc: x_or1: there are mucho examples in the wiki [15:09] RushPL_: Kingdutch: because you can't accept connections .. [15:10] RushPL_: on web sockets [15:10] Kingdutch: Oh hmm [15:10] void_ has joined the channel [15:10] Kingdutch: So then yeh, might not be possible [15:10] codemanki has joined the channel [15:10] Kingdutch: you might always need the server [15:11] wink_: if websockets arent accepting connections there is no might about it :p [15:15] Aikar: Kingdutch: you really should go learn about websockets lol [15:15] Kingdutch: Aikar: I know -.-' [15:15] Kingdutch: And I will [15:15] Kingdutch: But first I want to create a terrain editor in your browser [15:15] Kingdutch: It's easier [15:16] Aikar: ex coworker of mine was doing that [15:16] Aikar: he had it working very well [15:16] Kingdutch: It's the base of what I'm making so yeh, good to know it's possible :') [15:17] c4milo has joined the channel [15:17] Aikar: he was doing it as a basis off of the RPGMaker [15:20] blueadept has joined the channel [15:21] pengwynn has joined the channel [15:23] confoocious has joined the channel [15:23] confoocious has joined the channel [15:24] blueadept has joined the channel [15:25] Aikar: so does anyone know why my node is blowing up in vm.js [15:25] Aikar: https://gist.github.com/784525 [15:26] blueadept has joined the channel [15:28] ceej has joined the channel [15:29] bludadept_work` has joined the channel [15:29] akahn has joined the channel [15:30] romainhuet has joined the channel [15:31] zemanel has joined the channel [15:31] bludadept_work` has joined the channel [15:33] Aha has joined the channel [15:34] blueadept has joined the channel [15:34] Aha: !start [15:34] Aha: v8: "hi"; [15:34] v8bot: Aha: "hi" [15:34] arpegius has joined the channel [15:35] altamic has joined the channel [15:36] shinmei has joined the channel [15:36] pjackson has joined the channel [15:36] nefD has joined the channel [15:37] Aikar: oh i figured it out, theres an error in my vm code but the error is triggering in vm.js [15:37] overra has joined the channel [15:38] bradleymeck has joined the channel [15:38] bradleymeck: what is "code" that is being sent to Script [15:40] femtoo has joined the channel [15:42] claudiu__ has joined the channel [15:51] figital has joined the channel [15:51] Vertice has joined the channel [15:52] x_or1: brianc: When I used to do a lot of perl, the DBI interface would return the ID of the last inserted row with the object. Does your module do anything like that? [15:53] cainus has joined the channel [15:56] bradleymeck: x_or1, if it is following mysql, it would be query callback's 2nd argument, aka arguments[1].insertId, no idea if it is implemented [15:58] brianc: x_or1: haven't implemented that yet [15:58] brianc: x_or1: will work on that today if I have time [15:58] djanowski has joined the channel [15:58] brianc: x_or1: going to open issue on github now [16:00] brianc: x_or1: I've got austin javascript tonight so not sure if i'll be able to get to it tonight, but I'll get it in there asap [16:00] softdrink has joined the channel [16:02] Me1000 has joined the channel [16:03] x_or1: No worries, just wondering. It is a good module. Maybe I will catch you at Austin JS some day, starting to date someone from Texas. :) [16:03] fairwinds: hi. attempting to get connect-auth working with express mvc. can anyone point me to wiki, blog post or a paste as a helper [16:04] bingomanatee: There re auth examples in the express source. [16:04] sonnym has joined the channel [16:05] Yuffster has joined the channel [16:05] fairwinds: bingomanatee:k, let me check [16:06] bingomanatee: New Node.js Bay Area meetup: http://www.meetup.com/Node-js-sfbay/ [16:06] davidwalsh has joined the channel [16:06] bingomanatee: Everyone's invited, even if you're Dutch [16:06] piscisaureus: bigomanatee: it's a start [16:07] piscisaureus: bigomanathee: but the bay area is still 12 hrs flight :[ [16:07] bingomanatee: Make time [16:08] piscisaureus: heheh [16:08] fairwinds: was looking at creating a requiresAuth method and putting into routes on map like app.get(prefix + '/:id.:format?', requiresAuth, fn); [16:08] cyberdelia has joined the channel [16:08] dsirijus has joined the channel [16:09] xSmurf: so, why doesn't fs.stat return dates in Date objects?? [16:10] jpld has joined the channel [16:12] mraleph: ryah_: GDBJIT landed to bleeding_edge in r6367 [16:12] SamuraiJack has joined the channel [16:13] sudoer has joined the channel [16:13] akahn has left the channel [16:16] Utkarsh_ has joined the channel [16:19] tfe_ has joined the channel [16:20] hasenj has joined the channel [16:20] fairwinds: bingomanatee: I had read the auth example in express a few days back but is it very simplistic. connect-auth provides one or more methods that can be used. In my particular case, am looking for basic auth when not coming from browser and form based auth with session from user when on browser. [16:21] fairwinds: have been googling looking for a post about connect-auth with express [16:22] Chris_B has joined the channel [16:22] jbergstroem has joined the channel [16:22] benburkert has joined the channel [16:23] ajpiano has joined the channel [16:26] matt_c has joined the channel [16:26] Utkarsh__ has joined the channel [16:27] squeeky: crazy idea: CI npm packages? [16:28] Aikar: CI? [16:29] Aikar: squeeky: ^ [16:29] squeeky: Continuous Integration. [16:30] cyberdelia has left the channel [16:31] squeeky: Basically smoke testing everything against multiple versions of node and ensuring tests provided pass and everything compiles (only exit code 0 is kosher). Then aggregate those results so that authors of packages can see the results and troubleshoot any version or OS specific issues. [16:31] briznad has joined the channel [16:32] JusticeFries has joined the channel [16:34] brapse has joined the channel [16:35] luke` has joined the channel [16:35] booo has joined the channel [16:35] hellp has joined the channel [16:36] bradleymeck: squeeky, would be a good idea, but node's api right now is still too maleable [16:36] devdrin__ has joined the channel [16:36] JusticeFries has joined the channel [16:37] Aikar: yeah something like that would really only be plausible when we hit 1.0 [16:38] christophsturm has joined the channel [16:38] nonnikcam has joined the channel [16:38] squeeky: I think the maleability (sp?) of node in it's current state is the best reason to do it - it'll help authors deal with API changes if unstable/bleed are being tested, and it'll give devs confidence in what they have runs. [16:40] broofa has joined the channel [16:40] sprout has joined the channel [16:42] brianc: squeeky: I think that responsibility should lie with the package authors [16:43] Utkarsh__ has joined the channel [16:43] confoocious has joined the channel [16:43] squeeky: brianc: the problem with that is package authors may not have the resources to deal with edge cases or operating systems they dont use. [16:43] confoocious has joined the channel [16:43] luke` has joined the channel [16:44] luke`_ has joined the channel [16:45] Utkarsh_ has joined the channel [16:45] brianc: squeeky: I see what you're saying. I authored node-postgres and it has a test dependency on an active running instance of postgres and needs credentials supplied so the CI box would need that. and mysql. and mongo, etc... [16:46] richcollins has joined the channel [16:46] x_or has joined the channel [16:46] brianc: squeeky: so I not sure doing CI would be feasable in an automated fashion for some libs. I do have access to a mac & linux & postgres 8.x and 9.x so I got at least a small matrix of configurations covered & tested [16:47] squeeky: brianc: tests should be written so that deps like a running SQL server are skipped if it's not available. [16:48] squeeky: in most part, the majority, I could bet of all packages on npm wouldn't need an external dependency like that. [16:48] brianc: squeeky: yeah the library has unit tests with no dependencies and integration tests with dependencies...but still...not really fully test covered under CI that way [16:48] mscdex: rewrite postgres in js! [16:48] mscdex: :-D [16:48] bentomas has joined the channel [16:48] squeeky: It wouldn't, you're right. But I don't agree with the idea that "if we can't get the entirity, we won't do it at all". [16:49] tjholowaychuk has joined the channel [16:49] bradleymeck: squeeky I think the problem is just hitting 0.2.6 and 0.3.x is brutal if you use anything that changed [16:50] squeeky: I don't understand. [16:51] bradleymeck: having to test against a CI without being payed would take far more time than is able to be justified for people, if other people submit pull requests right now it would do the same as a CI server [16:51] bradleymeck: most authors right now aren't making modules for all platforms, but rather their specific needs [16:51] squeeky: huh? [16:52] squeeky: right. [16:52] bradleymeck: so a CI server would not really encourage them more than pull requests do right now [16:52] kawaz_air has joined the channel [16:52] squeeky: Pull requests aren't QA. [16:53] brianc: but is it up to the community to provide centralized QA for all of the modules? [16:53] springmeyer has joined the channel [16:53] MrWarGames has joined the channel [16:53] squeeky: the smoking and reporting doesn't have to be centralised - only the collection of reports. [16:53] bradleymeck: squeeky they are personal qa against personal development, a corporate qa would require corporate dev [16:54] squeeky: I disagree. [16:54] Kingdutch: Meh my webGL terrain only runs at 15 FPS [16:54] Kingdutch: I need to implement LoD lol [16:54] bradleymeck: squeeky then we disagree hehe :) [16:54] kubrow has joined the channel [16:55] Qbix1 has joined the channel [16:55] brianc: squeeky: I think some sort of way to say "hey, this module worked for me on this setup" would be nice and then anyone could say yes or no but that's kinda what github + issues is for...if I am going to use a module I check # of watchers, date of last commit, open/closed issues, and kinda go off of that [16:56] prettyrobots has joined the channel [16:56] squeeky: how about this: I'm in the midst of writing an injector to run my own npm mirror. I've got a couple of spare pizzaboxes here that can spin up a few OS's, and with n I can get a few versions of node. Writing a smoker isn't hard, just make the bugger make test and listening for non-0 exit. [16:56] daniellindsley has joined the channel [16:57] jamund has joined the channel [16:58] squeeky: (what'd be really hot is a standard output format for tests like junit/tap etc but that's another battle) [16:58] sudoer has joined the channel [16:59] sh1mmer has joined the channel [17:00] bradleymeck: might want to use an async framework vows and expresso are pretty standardized if you are looking for output [17:01] tjholowaychuk: they are? [17:01] tjholowaychuk: the output is completely different [17:01] tjholowaychuk: bradleymeck: he's talking about this http://en.wikipedia.org/wiki/Test_Anything_Protocol [17:02] tjholowaychuk: which would be nice for CI [17:02] tjholowaychuk: I usually just exit(failureCount) [17:02] bradleymeck: i mean more they output enough info, i guess they arent standardized against eachother [17:02] tjholowaychuk: and convert ansi-escape colors to css [17:02] squeeky: tjholowaychuk: let the harness handle the colour bit, the producer ideally should just spew out ascii. [17:03] tjholowaychuk: meh [17:04] BillyBreen has joined the channel [17:04] herbySk has joined the channel [17:05] stephank has joined the channel [17:06] saschagehlich has joined the channel [17:07] hobodave has joined the channel [17:07] m64253 has joined the channel [17:11] jpiche has joined the channel [17:12] prettyrobots has joined the channel [17:13] tanepiper: anyone heard about the 'rest' and 'spread' stuff being proposed for ES5? [17:13] flippyhead has joined the channel [17:13] bradleymeck: yep [17:13] tanepiper: bradleymeck: looks interesting, reminds of **kwargs from python [17:14] bradleymeck: rest needs some work, no one responded to the issue i brought up on es-discuss about it being fail for tail arguments :( [17:15] broofa has joined the channel [17:15] tanepiper: i can see some benefits, but also wonder what it really has over the arguments array [17:16] bradleymeck: i really like rest/spread over kwargs [17:16] femtoo has joined the channel [17:16] bradleymeck: tanepiper it has a couple, the new operator works with spread while right now you have to do hacks for chaining vararg constructors [17:17] bradleymeck: removal of the arguments object means a speedup in several situations (in particular setting an argument variable) [17:17] bradleymeck: using spread you can also do some interesting things like foo(...bar,...biz) [17:18] bradleymeck: all without the need for rebinding a context [17:18] bradleymeck: s/context/this variable [17:19] yyamano has joined the channel [17:19] mikeal has joined the channel [17:20] tanepiper: how would ...bar,...biz work? pass in arrays as parameters? the way i'm reading it, you add it at the end to capture all non-defined args [17:21] bradleymeck: well it would be an invocation not definition [17:21] bradleymeck: it would mean set up the args for the length of bar and continue adding arguments for the length of biz [17:21] confoocious has joined the channel [17:21] confoocious has joined the channel [17:21] sonnym has joined the channel [17:21] bradleymeck: the problem with having multiple rest parameters in the definition is ambiquity [17:22] bradleymeck: and right now you cant have tail args ala function foo(a,...b,c) [17:22] tjholowaychuk: i think we get by just fine without most of that stuff [17:22] admc has joined the channel [17:22] ph^ has joined the channel [17:23] bradleymeck: tjholowaychuk yep [17:23] tjholowaychuk: I dont really miss it from ruby [17:23] bradleymeck: dont need em, but an interesting prospect, i do want weakmaps though [17:23] tjholowaychuk: yeah I would much rather have stuff like that [17:23] bradleymeck: only thing it really brings is a good means to deal w/ vararg constructor chaining [17:24] bradleymeck: ACTION ponders if his weakmaps work on the new node api [17:24] langworthy has joined the channel [17:24] kevwil has joined the channel [17:25] booo: best way to create an md5 from buffer? [17:25] booo: lib? [17:26] tanepiper: booo: the crypto lib [17:26] tanepiper: http://nodejs.org/docs/v0.3.5/api/crypto.html [17:28] Aikar: booo: require('crypto').createHash(data).digest('md5').toString(16); something like that [17:28] Aikar: npm install hash is a very short lib that wraps all that [17:28] jamesarosen has joined the channel [17:29] perezd has joined the channel [17:29] booo: thx [17:30] prettyrobots_ has joined the channel [17:30] zzak has joined the channel [17:30] zzak has joined the channel [17:30] banjiewen has joined the channel [17:31] Tprice has joined the channel [17:31] dgathright has joined the channel [17:34] tapwater has joined the channel [17:35] noahcampbell has joined the channel [17:36] CrypticSwarm has joined the channel [17:36] eags_ has joined the channel [17:36] sprout has joined the channel [17:40] herbySk has joined the channel [17:42] papandreou has joined the channel [17:43] yozgrahame has joined the channel [17:44] papandreou: tjholowaychuk: I'm struggling with an Express route that needs to accept an email address as a path fragment, and I got as far as app.get('/:email(*)/foo', ...); which seems to work. I found the (*) thing somewhere in examples/ [17:45] strmpnk has joined the channel [17:45] tjholowaychuk: papandreou: what's wrong? if that is working [17:45] papandreou: tjholowaychuk: However it seems like I'm still doing it wrong, because app.get('/:email(*)/:id, ...); doesn't work. req.param('id') gets the wrong thing. [17:46] tjholowaychuk: the splats (*) can span accross segments [17:46] papandreou: tjholowaychuk: The id is in req.params[0] but not req.param('id'), which is kinda strange [17:46] tjholowaychuk: so it might swallow the '/' and your id [17:46] papandreou: tjholowaychuk: Oh, that would explain it. [17:46] tjholowaychuk: you might want a regexp for that one [17:46] papandreou: tjholowaychuk: Is there a splat variant that doesn't match slash? [17:47] eags_ has left the channel [17:47] charlenopires has joined the channel [17:47] tjholowaychuk: regular :email should technically work but there is a bug in connect right now preventing periods [17:47] tjholowaychuk: one sec ill try something [17:48] davidascher has joined the channel [17:49] papandreou: tjholowaychuk: Ok, if you consider the period thing to be a bug, I can wait :) [17:50] pagameba has joined the channel [17:51] tjholowaychuk: papandreou: I would just do this for now [17:51] tjholowaychuk: app.get(/^\/([^\/]+)\/(\d+)/, function(req, res, next){ [17:51] tjholowaychuk: console.log(req.params); [17:51] tjholowaychuk: }); [17:52] pagameba: anyone around that works on or uses node-boilerplate? [17:54] prettyrobots has joined the channel [17:54] papandreou: tjholowaychuk: Thanks! Crossing my fingers for that Connect fix though. [17:54] msekimura has joined the channel [17:55] eazyigz has joined the channel [17:55] markwubben has joined the channel [17:56] devdrinker has joined the channel [17:57] klaytonix has joined the channel [17:57] omarkj has joined the channel [17:58] eazyigz has left the channel [17:58] mikew3c_ has joined the channel [17:59] omarkj: Hey all I'm trying to emit loads of data onto a stream. Each 'message' starts with the 0 byte and ends with byte 255. The odd thing is that sometimes I'm getting the data malformed over the wire, that is, not ending with 255. Any idea what that could be about? [17:59] brianc: what's the best bet for a test framework that runs in node and the browser? Everything I've found seems a bit kludgey so far [17:59] ryah_: ACTION waves [18:00] brianc: ACTION throws the outdated "surfs up" hand signal [18:01] kevwil has joined the channel [18:02] mgutz has joined the channel [18:02] zomgbie has joined the channel [18:03] Max-Might has joined the channel [18:04] qFox has joined the channel [18:06] piscisaureus: ACTION drops by [18:07] piscisaureus: ryah_: can you land this: https://github.com/piscisaureus/node/compare/ry...push [18:07] piscisaureus: ACTION drops on his knees and begs for mercy [18:08] piscisaureu_ has joined the channel [18:09] pedrobelo has joined the channel [18:09] ryah_: piscisaureus: ok [18:10] ryah_: -fno-builtin-memcpy ? [18:10] Ori_P has joined the channel [18:11] piscisaureus: ryah_: http://code.google.com/p/v8/issues/detail?id=884 [18:11] mraleph: darkish magic [18:11] sonnym has joined the channel [18:11] markstory has joined the channel [18:11] piscisaureus: one-but-last comment [18:11] mraleph: maybe it is better to switch strict-aliasing instead of switching of builtin memcpy optimization [18:12] piscisaureus: ryah_: mraleph is king here. I just did what vegorov suggested [18:12] mraleph: we are the same actually :-) [18:12] mraleph: I am vegorov [18:12] piscisaureus: LOL [18:13] Kingdutch: Meh my terrain is slow as shit without LoD :( And I don't have the lighting + multitexturing yet [18:13] Kingdutch: ACTION hates school [18:13] Kingdutch: Got a screenshot in wireframe mode though :') [18:13] mraleph: I suggested -fno-builtin-memcpy cause it allows to check whether you are experiencing that same bug or different one. [18:14] mraleph: ACTION hates strict aliasing rules and all related bugs in compilers [18:14] mraleph: ryah_: I've commited gdbjit if you have not seen that yet :-) [18:15] ryah_: mraleph: oh, i haven't got to that list yet. yey! [18:15] djanowski_ has joined the channel [18:15] Kingdutch: Anyone wanna see the screeny? It's being served by node.js <3 [18:15] pagameba: web workers - a force for good or evil? [18:15] pagameba: Kingdutch: sure :) [18:15] Kingdutch: http://img248.imageshack.us/img248/7503/screenyz.png [18:16] dguttman has joined the channel [18:16] piscisaureus: mraleph: then I have another a question for you [18:16] piscisaureus: https://gist.github.com/784879 [18:16] mraleph: jesus christ [18:16] piscisaureus: getting "unreachable code" with node_g.exe test/simple/test-buffer.js [18:16] mraleph: ok checking that line [18:16] piscisaureus: I'm pretty sure it's a v8 bug [18:18] mraleph: yep it looks like V8 bug [18:18] mraleph: is it x64 or ia32 [18:18] mraleph: ? [18:18] creationix has joined the channel [18:18] mraleph: ia32 as far as I see [18:18] piscisaureus: ia32. mingw32. gcc 4.5. [18:19] mraleph: any special patches applied? [18:19] jakehow has joined the channel [18:19] piscisaureus: mraleph: only fno-builtin-memcpy [18:20] mraleph: ok [18:20] Country has joined the channel [18:20] mraleph: it this the most recent version of node? [18:20] piscisaureus: mraleph, sorry I have to go now. bad timing :-( [18:20] piscisaureus: will be back later today [18:20] tfe_ has joined the channel [18:21] mraleph: I am going to sleep later today... different timezone :-) but I will look into it tomorrow. [18:21] pdelgallego has joined the channel [18:21] creationix: anybody have code for converting a number to the 8 bytes needed for a uint64? [18:21] piscisaureus: mraleph: we are in the same time zone :-) [18:21] mraleph: ah [18:21] piscisaureus: I will be back before you go to sleep [18:21] ryah_: mraleph: is the wiki page up somewhere? [18:21] mraleph: ryah_: not yet. writing it now [18:22] mraleph: piscisaureu_: in any case I will not have access to windows machine until I return to office tomorrow morning. [18:22] MikhX has joined the channel [18:22] piscisaureus: mraleph: ok. [18:22] hornairs has joined the channel [18:23] ryah_: piscisaureus: you needed to modify the base64 stuff? [18:23] ryah_: piscisaureus: what's that about? [18:24] cronopio has joined the channel [18:25] ryah_: oh nevermind [18:25] saikat has joined the channel [18:25] piscisaureu_: ryah_: bbl. sorry bad timing [18:27] amerine has joined the channel [18:27] fly-away has joined the channel [18:28] ryah_: np [18:29] miccolis has joined the channel [18:29] Evet: ryah_: feature request, opencv binding [18:30] ryah_: Evet: that's my feature request to you [18:30] eee_c has joined the channel [18:30] Nohryb has joined the channel [18:30] Nohryb has left the channel [18:30] Evet: ryah_: where to start hacking? v8 core? [18:31] ryah_: Evet: just a normal node binding [18:31] kiddphunk has joined the channel [18:32] Kingdutch: Good night all [18:32] kevwil has joined the channel [18:33] Guest55362 has joined the channel [18:33] cronopio has joined the channel [18:33] langworthy has joined the channel [18:33] hij1nx has joined the channel [18:33] pedrobelo has joined the channel [18:34] mnbvasd: is there a way to list all listeners for events of a object? [18:34] tfe_ has joined the channel [18:35] mscdex: mnbvasd: emitter.listeners(event) [18:35] mnbvasd: mscdex: ta [18:36] Utkarsh has joined the channel [18:37] mnbvasd: hmmm, emitter not defined?, there' socket.emit ... i want to list all listeners on a socket, suck as socket.on ( 'data', ..... ? [18:38] richcollins has joined the channel [18:38] creationix: hmm, I can't seem to find in the docs how to create streams [18:38] creationix: v0.3.x [18:39] razvandimescu has joined the channel [18:39] mnbvasd: what sort of stream? [18:39] creationix: do I just make an object that inherits from the Stream prototype? [18:39] opengeard has joined the channel [18:39] mnbvasd: http://nodejs.org/docs/v0.3.4/api/all.html#streams [18:39] CIA-89: node: 03Bert Belder 07master * rb8879d6 10/ TODO.win32 : Remove completed TODO.win32 items (+10 more commits...) - http://bit.ly/gg55j4 [18:40] ryah_: piscisaureu_: merged, thanks. [18:40] creationix: mnbvasd: yeah, I know the stream api, I just thought we had put in a way to make custom ones easily [18:40] bingomanatee has joined the channel [18:40] creationix: ryah_: do you remember if we ever did that? [18:40] mnbvasd: I'm trying to hack tls.js to let me create a tls server, then secure a plain text socket :-/ [18:40] mnbvasd: stuck at transfering events accross :( [18:41] bradleymeck: creationix nope [18:41] creationix: bradleymeck: do I just inherit from Stream and make sure to call it's constructor in mine? [18:41] creationix: that's what I do for custom EventEmitters [18:41] aklt has joined the channel [18:42] bingomanatee: http://www.meetup.com/Node-js-sfbay/ is up if you want IRL node in SF. [18:42] bradleymeck: no sadly Stream for the longest time isnt its own actual constructor (unless that changed recently) I have always had to make a stream from ground up [18:42] tjholowaychuk: bradleymeck: there is stream.js now [18:42] bingomanatee: or if you want to pimp your github [18:43] tjholowaychuk: finally :) [18:43] hij1nx has joined the channel [18:44] FuzzYspo0N has joined the channel [18:44] dgathright has joined the channel [18:44] bradleymeck: well nm then haha [18:44] FuzzYspo0N: Anyone here embedded debugger support for a c++ v8 application other than in node? [18:45] eikke: creationix: you wanted to talk some more about coroutines ;) [18:45] ryah_: creationix: ? [18:45] k04n has joined the channel [18:46] creationix: ryah_: is there a preferred way to make custom streams? [18:46] creationix: or just make a "class" that inherits from Stream? [18:47] ryah_: creationix: yeah, just inherit [18:47] creationix: eikke: I did, but I'm about to head out to work right now [18:47] mjr_ has joined the channel [18:47] halfhalo: its like 11 am! [18:48] halfhalo: what is wrong with you people at palm [18:48] creationix: ryah_: do you know what module it's in [18:48] creationix: halfhalo: hey, I go in before 9 most days [18:48] eikke: creationix: ok. if you'd want to talk later, /msg me [18:48] tjholowaychuk: creationix: stream.js [18:48] halfhalo: suuuure [18:48] ryah_: creationix: stream [18:49] elijah-mbp1 has joined the channel [18:50] creationix: ryah_: thanks [18:50] mikeal has joined the channel [18:52] tlrobinson has joined the channel [18:53] tlrobinson: what's the status of the backtraces that span events? can someone point me to the mailing list post about it? [18:53] tlrobinson: i recall seeing it a few weeks ago but can't find it [18:54] mjr_: tlrobinson: you mean the new support to make that scenario better? [18:55] cadorn has joined the channel [18:56] flippyhead has joined the channel [18:56] tlrobinson: mjr_: yes [18:56] creationix: ACTION now has a streaming msgpack encoder that's pretty fast [18:56] rburhum has joined the channel [18:56] mjr_: That's called EventSource. [18:57] mjr_: tlrobinson: I'm not sure if it has made much progress lately. [18:57] tlrobinson: mjr_: thanks, that's what i was looking for [18:59] HAITI has joined the channel [19:00] isaacs has joined the channel [19:00] matt_c_ has joined the channel [19:01] mdoan has joined the channel [19:03] gkatsev has joined the channel [19:04] mikeal: it's wildly out of date with master [19:04] mikeal: ry said he's going to have to re-write it [19:04] dgathright has joined the channel [19:05] tjholowaychuk: mikeal: EventSource stuff? [19:05] mikeal: yeah [19:05] tjholowaychuk: oh cool, didnt know it was still in the plans [19:05] mikeal: it better be [19:05] mikeal: it's the most important thing we could do except for HTTPS [19:06] tjholowaychuk: yeah it would be great, I thought you guys had tried it but it was to costly or something [19:06] mikeal: not just getting nice tracebacks on error, but unifying the API between the event system and javascript so that we can add stronger hooks [19:06] mikeal: right, keeping every stack around for debugging is going to be a command line option [19:08] elygen has joined the channel [19:09] springmeyer has joined the channel [19:09] miccolis_ has joined the channel [19:10] elygen: im trying to install node.js i followed the directions but am getting an erro "died wating for dll loading, errno 11" followed bu /xxx/xxx/node/wscript:175: error: could notconfigure a css compiler". what do i do? [19:10] yhahn has joined the channel [19:10] davida has joined the channel [19:11] cloudhead has joined the channel [19:11] dguttman_ has joined the channel [19:12] brianc: elygen: what system are you on? cygwin? [19:12] sonnym has joined the channel [19:12] w0rse has joined the channel [19:13] rauchg_ has joined the channel [19:14] yhahn has left the channel [19:15] elygen: yes cygwin [19:15] elygen: i just found that i may need to rebase? coudl this be right? [19:15] admc has joined the channel [19:15] ewdafa has joined the channel [19:17] yozgrahame has joined the channel [19:18] jimt_ has joined the channel [19:18] fairwinds: hi. I have been playing around with connect-auth. methods follow same pattern for setup. have run into this error. here is a paste http://pastebin.com/y18nPyS3 of simple test with basic auth. [19:18] brianc: elygen: you might have more luck building the 0.2.x branch [19:19] elygen: brianc: I ran the rebaseall and it seems to be working. [19:19] elygen: thanks [19:19] creationix has joined the channel [19:20] eazyigz has joined the channel [19:20] benburkert has joined the channel [19:21] stepheneb has joined the channel [19:22] fairwinds: this is 0.2.1 connect-auth with most recent express and 0.3.5 node [19:22] tjholowaychuk: fairwinds: I have not used it so I cant help, sorry [19:22] Tprice: anyone use node-insoector [19:22] charlenopires has joined the channel [19:23] Tprice: im running node 3.4 and wanted to know if it works with node-inspector [19:23] Tprice: 0.3.4 [19:23] bradleymeck: tprice it should work on any version of node since it is tied to v8 rather than node actually, havent tested against 3.4 here [19:24] Tprice: do you have an idea on how to change the host then? [19:25] Tprice: maybe thats its set to localhost [19:25] bradleymeck: idk [19:25] springmeyer has joined the channel [19:25] markstory has joined the channel [19:28] ryah_: tlrobinson: https://github.com/ry/node/tree/eventsource [19:28] ryah_: tlrobinson: hasn't been worked on since sept. It needs to be ported to the new code and landed. [19:29] liar has joined the channel [19:30] wao__ has joined the channel [19:30] fairwinds: tjholowaychuk: sure, np. It looked like a useful lib. Maybe it is just broken. Guess I can create a small module to deal directly with headers as opposed to looking at an external lib. [19:30] tilgovi has joined the channel [19:31] maushu has joined the channel [19:32] lukegalea: fairwinds: I'm using auth [19:32] lukegalea: gimme a sec.. I've had that error.. just trying to remember. [19:32] fairwinds: lukegalea: sure thanks [19:32] mraleph: ryah_: http://code.google.com/p/v8/wiki/GDBJITInterface [19:32] banjiewen_ has joined the channel [19:33] lukegalea: try auth.Basic({ validatePassword: getPasswordForUser }); [19:34] gf3 has joined the channel [19:34] ryah_: mrtrosen: great [19:34] lukegalea: fairwinds: That's what my code has, and it's fine. yours is {getPasswordForUser: getPasswordForUser}.. I don't think auth is looking for a property called getPasswordForUser... [19:34] jimt has joined the channel [19:35] jakehow has joined the channel [19:36] fairwinds: lukegalea: ah, k. maybe a silly mistake on my part. thanks, will try [19:36] unomi has joined the channel [19:38] garrensmith has joined the channel [19:39] garrensmith: hi all [19:39] binarypie has joined the channel [19:40] Qbix1 has joined the channel [19:41] tanepiper: Appcelerator Acquires Aptana [19:41] c4milo: tjholowaychuk: can we set more that one path for views? [19:41] tanepiper: do they still use Jaxer? [19:41] c4milo: tjholowaychuk: in expressjs [19:41] tjholowaychuk: c4milo: not right now nope [19:41] tjholowaychuk: c4milo: although I have done it in other projects by proxying render() [19:42] garrensmith: tjholowaychuk: I'm using expresso to test express, if I have app.use(express.session()); [19:42] garrensmith: enabled the tests never finish. How do I end the sessions? [19:42] c4milo: tjholowaychuk: do you have any gists somewhere? [19:42] tjholowaychuk: garrensmith: express.session(new express.session.MemoryStore({ reapInterval: -1 })) [19:42] tjholowaychuk: c4milo: nope sorry man [19:43] c4milo: tjholowaychuk: no worries [19:43] neynenmo has joined the channel [19:44] garrensmith: tjholowaychuk: sorry doesn't seem to help [19:44] Floxxx has joined the channel [19:44] tjholowaychuk: my bad, { store: new ... } [19:44] tjholowaychuk: garrensmith: you need that as the store option [19:45] garrensmith: tjholowaychuk: sorry could you write the whole line for me? [19:45] tjholowaychuk: garrensmith: express.session({ store: memoryStoreInstance }) [19:45] mjijackson has joined the channel [19:45] garrensmith: tjholowaychuk: perfect thanks a lot [19:46] mdoan has left the channel [19:46] nejucomo has joined the channel [19:46] c4milo: tjholowaychuk: is there any plans to support it? (many view paths) [19:46] garrensmith: tjholowaychuk: does it not use the memory store by default? [19:47] mjijackson has left the channel [19:47] tjholowaychuk: c4milo: it would be nice, but it is pretty opinionated. for example in mine each "package" could have it's own views, so you dont want them all renderable from other packages [19:47] tjholowaychuk: c4milo: what is your use-case? [19:48] tjholowaychuk: garrensmith: yeah it does, but there is a setInterval, reapInterval: -1 disables it for tests n such [19:48] garrensmith: tjholowaychuk: cool thanks [19:48] c4milo: tjholowaychuk: I am trying to develop a plugin system on top of expressjs. Every plugin is a expressjs app [19:49] tjholowaychuk: c4milo: ah, sounds similar to what I did then [19:49] tjholowaychuk: one sec [19:49] c4milo: tjholowaychuk: ok [19:49] estrathmeyer has joined the channel [19:50] tjholowaychuk: c4milo: not a full example, but you have to proxy the http verb methods, and render to provide the dirname https://gist.github.com/b19d012340192f23b830 [19:50] tjholowaychuk: so each plugin can have it's own views [19:51] tjholowaychuk: its a little hard to explain [19:52] c4milo: tjholowaychuk: aha I am going to try to understand. Thanks [19:52] garrensmith: tjholowaychuk: sorry this still fails app.use(express.session({ store: new memoryStoreInstance({ reapInterval: -1 }) })); [19:53] tjholowaychuk: garrensmith: var MemoryStore = express.session.MemoryStore; var store = new MemoryStore({ reapInterval: -1 }) [19:53] tjholowaychuk: lol [19:53] tjholowaychuk: not new memoryStoreInstance :p [19:53] garrensmith: lol sorry [19:53] tjholowaychuk: pass that store var to express.session({ store: store }) [19:53] brianc: garrensmith: did you initialze the cookie store? [19:54] brianc: garrensmith: errr....cookie middleware. not cookiestore. but even the memorystore needs the cookie middleware. [19:54] estrathmeyer has left the channel [19:54] ircretary has joined the channel [19:54] isaacs: ircretary: hello [19:54] ircretary: isaacs: Hello :) [19:55] garrensmith: tjholowaychuk: that worked lol, thanks [19:55] tjholowaychuk: np [19:55] garrensmith: brianc: all sorted [19:55] clarkfischer has joined the channel [19:55] c4milo: tjholowaychuk: the code you sent me works right away or it is just to show how it can be implemented? [19:56] tjholowaychuk: c4milo: that is not the complete code, but that is an example [19:56] c4milo: tjholowaychuk: I see [19:56] mdoan has joined the channel [19:56] bingomanatee: new js group logo: http://photos3.meetupstatic.com/photos/event/4/8/a/9/global_20898601.jpeg [19:57] mikedeboer has joined the channel [19:57] Gregor: bingomanatee: But what if my favorite framework is Node D-8 [19:57] davidascher has joined the channel [19:58] jpick has joined the channel [20:01] fairwinds: lukegalea: it's good. thanks. [20:02] bradleymeck: dont worry gregor node is always eating itself [20:02] brianc: bingomanatee: what about http://static.brianc.me/img/coke.jpg? too much? [20:02] lukegalea: fairwinds: great. Glad to hear it. [20:02] Tprice has joined the channel [20:03] sh1mmer has joined the channel [20:04] brianc has joined the channel [20:05] booo has joined the channel [20:05] Bonuspunkt: FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory <-- anyone got a wild guess how to fix? [20:05] peol has joined the channel [20:05] femtoo has joined the channel [20:05] mape: Bonuspunkt: Use less memory? :) [20:07] Bonuspunkt: open tcp connection to irc that parses 4 url downloads and saves it to couchdb [20:07] peol: Hi, quick question, if I have third-party modules (from github) in my project, that uses libraries/modules from require.paths that isn't in require.paths for _that_ module, can I add those somehow without adding them to ~/.node_modules (perhaps symlinking?) [20:07] swistak has joined the channel [20:07] robotarmy has joined the channel [20:08] kiddphunk_ has joined the channel [20:08] kiddphunk has joined the channel [20:10] lukegalea: tjholowaychuk: Hey. Great work on Mastering Node. I've just been doing some proofreading on it to correct spelling mistakes, etc.. I was going to send you a pull request, but I'm having a hard time doing a make regenerate. Where can I find "ronn" that's used? [20:10] tjholowaychuk: lukegalea: it's a ruby gem, dont worry about regenerating though I can do that :) [20:10] gf3` has joined the channel [20:10] lukegalea: tjholowaychuk: Thanks. I just realized you mention it in the readme. Sorry :) Okay. I'll leave that to you. [20:11] HAITI has left the channel [20:11] tjholowaychuk: you need quite a few tools to generate all the outputs so its all good dont worry about that [20:11] pietern has joined the channel [20:11] pagameba: hi - question about express for node, I don't quite get the views thing - if I have a view index.ejs will that be rendered for a request to /index.html? [20:12] tjholowaychuk: pagameba: no, res.render('index') will render it [20:12] tjholowaychuk: or res.render('index.ejs'), so you create a route for '/' or '/index.html' if you wanted [20:12] tjholowaychuk: pagameba: view some of the examples in the repo, or the guide [20:13] yhahn has joined the channel [20:13] yhahn: mikeal: ping [20:13] pagameba: tjholowaychuk ok thanks will do [20:13] mikeal: pong [20:13] yhahn: mikeal: quick question about request in node-utils ? [20:14] fallsemo has joined the channel [20:14] ryah_: pquerna: still interested in doing a patch? [20:14] ryah_: pquerna: i did the pointers for io_watchers in net.Server [20:15] ryah_: pquerna: you could do it for net.Socket (which is much more involved) [20:15] pagameba: tjholowaychuk: ok, I see - thanks [20:16] pagameba: I need to add a route (server.get('/') and then use res.render('') - it doesn't automatically connect views to routes [20:16] tjholowaychuk: pagameba: no it does not [20:16] lukegalea: tjholowaychuk: great. Pull request sent. [20:17] pagameba: tjholowaychuk: I thought there was some magic happening there :D [20:17] ossareh has joined the channel [20:17] tjholowaychuk: lukegalea: thanks man, will try and check it out soon [20:17] peol: gf3: Question, if a git module not in require.paths requires another module, that it expects in require.paths, can I enable that somehow? Adding the required module through require.paths.unshift in my main js file doesn't seem to cut it [20:17] tjholowaychuk: pagameba: no lol I dont like magic like that [20:17] tjholowaychuk: at all [20:17] pquerna: ryah_: sure, is your current work in a branch on gh? [20:17] ryah_: pquerna: i'll send you the stuff [20:17] pquerna: ryah_: kk [20:17] gf3: peol: it should work by adding the correct path [20:18] pagameba: tjholowaychuk: one more q - is it possible to route two things to the same handler short of using a named function? (i.e. / and /index.html) [20:18] tjholowaychuk: pagameba: redirect, haha [20:18] peol: gf3: I have that `vendor` directory with all the checked-out modules that I use, and added that directory to require.paths, but perhaps I need to be more specific (add per-module paths)? [20:18] tjholowaychuk: or rewrite req.url and next() [20:19] justinw312 has joined the channel [20:19] tjholowaychuk: I would just use a named function [20:19] peol: Docs doesn't really say how to [20:19] pagameba: tjholowaychuk: great, thanks [20:19] pagameba: will stop abusing your patience now :) [20:19] gf3: peol: well that might not be enough [20:20] gf3: peol: e.g.: `project/vendor/dep/lib/dep.js` might be the actual include [20:20] gf3: in which case just adding `project/vendor` to the require paths is not enough [20:21] peol: gf3: Oh, I thought it resolved those, since all the modules has a certain pattern with lib/ and all :) [20:21] justinw312: Does anyone know of a module to escape html tags within strings, or should I do it from scratch? Like htmlspecialchars() in php. I know it's trivial to make an almost working replace function, but I'm worried that some kind of odd method of encoding angle brackets would get through a trivial function. [20:22] gf3: peol: no sir [20:22] mraleph has joined the channel [20:22] gf3: peol: you could always use npm, and bundle your deps [20:22] gf3: which is what I do with my libraries [20:22] justinw312: < to < etc [20:23] peol: gf3: Ok, great. Thanks, gonna try to be more specific. Hm, seems a bit too advanced atm, I just want this up and running, I might do something like that when/if I push it to github :) [20:24] ewdafa has joined the channel [20:24] justinw312: Basically need a way to take potentially malicious strings from one user and transmit a sanitized version to another user. Was thinking it was probably a solved problem, but none of my googling has turned up anything. [20:26] Me1000 has joined the channel [20:26] Qbix1 has joined the channel [20:27] Bonuspunkt: justinw312 ExtJS has something like that - Ext.util.Format.htmlEncode -> Convert certain characters (&, <, >, and ") to their HTML character equivalents for literal display in web pages. [20:27] tjholowaychuk: lololo [20:27] pieterv has joined the channel [20:27] tjholowaychuk: enterprise! [20:28] FuzzYspo0N: hey guys, anyone who uses the eclipse debugging stuff with node? I had some questions about running and connecting automatically [20:28] c4milo: tjholowaychuk: does jade has a config option to get html output formatted? [20:28] c4milo: tjholowaychuk: sorry for the noob questions [20:28] saikat has joined the channel [20:29] tjholowaychuk: c4milo: nope, I had started it but never finished [20:29] tjholowaychuk: it was messing up the whitespace a bit so I turfed it [20:31] justinw312: Bonuspunkt: thank you, I'll check it out. [20:31] FuzzYspo0N: no one using eclipse for debugging? [20:33] stagas: I need something to convert shell color codes to html. any suggestions? [20:34] altamic_ has joined the channel [20:35] techwraith has joined the channel [20:38] CIA-89: node: 03Ryan Dahl 07pointer_bindings * r7ccd9fe 10/ (lib/net.js src/node_io_watcher.cc): experimental: light ev_io binding for net.Server - http://bit.ly/h0I2Fo [20:38] ryah_: pquerna: ---^ [20:39] FuzzYspo0N: ryah_, did you ever wrap your head around the eclipse stuff :P i was reading logs [20:39] ryah_: FuzzYspo0N: eclipse? [20:39] FuzzYspo0N: ryah_, terrible ide thing [20:39] piscisaureu_ has joined the channel [20:40] ryah_: wwhat about it? [20:40] FuzzYspo0N: Is it possible to run node first and then attach in one button kinda thing? [20:40] FuzzYspo0N: Like some sort of run-debug combo. [20:40] FuzzYspo0N: Such a pain to keep running it in the background and then alt tab and connect [20:40] ryah_: yes [20:40] ryah_: i think [20:41] tjholowaychuk: ryah_: raw pointer thing is interesting [20:41] heavysixer has joined the channel [20:42] FuzzYspo0N: ryah_, any links or suggestions? iv tried every ugly blue menu i can find [20:42] ryah_: tjholowaychuk: you like that? :) https://github.com/ry/node/blob/7ccd9fe2192920344c0db7f66cc22e6f723af0e9/src/node_io_watcher.cc#L22-32 [20:42] tjholowaychuk: haha yeah [20:42] ryah_: FuzzYspo0N: i think there is a wiki page about it on github [20:43] FuzzYspo0N: ryah_, are you referring to connecting to node, and debugging? That part is easy, i want to automate the 'test this code shiz' in the ide [20:43] ryah_: tjholowaychuk: small integers are really fast in V8, but they have to be less than 32bits [20:43] tjholowaychuk: ryah_: yeah I noticed "smi" optimized all over the place [20:43] ryah_: tjholowaychuk: so we offset address by the start o fthe heap [20:44] ryah_: FuzzYspo0N: i don't know anything more about it than that, sorry [20:45] FuzzYspo0N: ryah_, all good, thanks. And btw : A lot of the stuff node does is super useful when dealing with the mysterious and dark world of v8. Its helped me more than once in my game engine that uses v8 [20:45] ryah_: FuzzYspo0N: why isn't your game engine on top of node? :) [20:45] ryah_: FuzzYspo0N: then you get networking for free [20:46] FuzzYspo0N: ryah_, hah, i actually started with v8 long before i found out about node [20:46] FuzzYspo0N: and iv been using node since 0.1.* [20:46] FuzzYspo0N: But id love too , theres so many awesome things i want from it [20:46] FuzzYspo0N: Id have to embed it, though [20:46] hornairs has joined the channel [20:46] bradleymeck: fuzzyspo0n has a game engine? (is giving a talk about JS game dev tonight) [20:46] FuzzYspo0N: wasn't too sure that was even plausible [20:47] FuzzYspo0N: bradleymeck, D: [20:47] ryah_: FuzzYspo0N: why do you need to embed it? [20:47] FuzzYspo0N: Yea its coming along nicely now actually, runs on mac, win, linux, iOS and almost android [20:47] FuzzYspo0N: ryah_, it doesnt run on windows? [20:47] ryah_: sort of [20:47] ryah_: getting closer [20:47] FuzzYspo0N: well, i have copied snippets [20:48] FuzzYspo0N: and used those directly, as i have v8 [20:48] ryah_: it builds on mingw [20:48] FuzzYspo0N: so a lot of their voodoo is great [20:48] bradleymeck: i wonder if you could get v8 to swap out an assembler for the jvm [20:49] FuzzYspo0N: ryah_, by embed, i meant just take the critical pieces into my code base i guess, seeing as i have contexts and all that but i can see the complexity levels rising as i open the node folder [20:49] FuzzYspo0N: lol [20:49] justinw312: bradleymeck; wouldn't you just use Rhino, then? [20:49] piscisaureus: ACTION makes the hello gesture [20:50] springmeyer: is it intended for the node interpreter/repl to automatically call functions? seeing some odd behavior, see: https://gist.github.com/785112 [20:50] bradleymeck: justinw312 not if you use the c++ api right now, i dont want to rebuild that hell [20:50] bradleymeck: would just have to hook the jni to call out to native [20:51] justinw312: oh, sorry for missing the begining of the conversion. :( [20:51] Bonuspunkt: anyone has some hints how to stop node.js from consuming more memory? [20:51] FuzzYspo0N: heh interesting though bradleymeck , what happened to your game enginey thing [20:51] dguttman has joined the channel [20:51] ryah_: Bonuspunkt: don't leak :) [20:51] FuzzYspo0N: Bonuspunkt, close the executable? [20:51] FuzzYspo0N: >.> [20:52] ryah_: Bonuspunkt: there are no known memory leaks in node [20:52] ryah_: so, it's your code or a library you're using [20:52] ShiZWeaK has joined the channel [20:53] elux has joined the channel [20:53] Bonuspunkt: is node-couchdb know for leaking? [20:53] bradleymeck: fuzzyspo0n i never made one, just presenting on the state of things. I did end up building a layout manager for canvas but work has me drained for quite a while. [20:53] FuzzYspo0N: bradleymeck, i see, i thought you mentioned some sort of opengl thing last time [20:53] bradleymeck: most C++ addons leak sadly (use MakeWeak damn you people!) [20:54] FuzzYspo0N: hmm , make weak is nice. [20:54] bradleymeck: fuzzyspo0n nah, i hooked up sfml to node a while back and might hack on that in a few [20:54] FuzzYspo0N: ah yea sfml , thats it. [20:54] tfe_ has joined the channel [20:54] bradleymeck: it works and gets you windows and pixel buffers right now, stopped before merging its event loop in [20:54] FuzzYspo0N: cool [20:55] FuzzYspo0N: i have a sample of a semi older build of my engine, if you wanted to see [20:55] bradleymeck: so basically worthless until i merge that loop and/or integrate w/ node canvas [20:55] FuzzYspo0N: I actually recently started working from home, so that i can work more on it [20:55] bradleymeck: lucky [20:55] FuzzYspo0N: and in the last week iv added like 100 features, its awesome [20:55] mraleph: ryah_: I still think that your AddressToJS will bite you someday :-) but I have not come up with anything both correct and overhead free yet :-) [20:55] FuzzYspo0N: SO nice working in JS, really. [20:55] matt_c_ has joined the channel [20:55] ryah_: mraleph: why? [20:56] ryah_: mraleph: and if it does i'll switch to External [20:56] springmeyer: ah, ha, just figure it out [20:56] mraleph: ryah_: somebody will allocate ev_io 32 bits away from etext [20:56] FuzzYspo0N: ryah_, id really love to pick your brain about of some things in v8 sometime. There are things i cant be sure im doing well. [20:57] FuzzYspo0N: and for a game engine, it should be as fast as it can [20:57] springmeyer: named my function "inspect" in the c++ addon, and that clashed with line 86 of util.js [20:57] trotter has joined the channel [20:57] ryah_: mraleph: v8 could easily implmeent External as SMI in most cases [20:58] FuzzYspo0N: bradleymeck, i have lasers : http://img708.imageshack.us/img708/2575/screenshot174i.png [20:58] ryah_: as long as the heap is addressable by 32 bits it could use SMI [20:58] bradleymeck: real particle effects? nice [20:58] ryah_: mraleph: nm - that's wrong [20:58] ryah_: mraleph: i guess the correct thing to do is implement a malloc [20:58] FuzzYspo0N: yea, im using http://phoenixgl.googlecode.com wrapped in v8 - along with ENet and many others obviously [20:59] sonnym has joined the channel [20:59] ryah_: mraleph: wrap the system malloc [20:59] mraleph: ryah_: well for 32-bit node.js you can just use External --- it will not incur any overhead. [20:59] eikke: anyone ever benched node/v8 with different malloc implementations? [20:59] FuzzYspo0N: eikke, i tried nedmalloc [20:59] FuzzYspo0N: but without actually benchmarking, so, nothing to report [21:00] piscisaureus has joined the channel [21:00] eikke: ACTION adds item to TODO [21:00] FuzzYspo0N: i was gonna be testing and profiling again soon though, might be interesting [21:00] mraleph: ryah_: in 64bit v8 we have a similar problem: we what all jumps and calls to be encodable in 32-bits to reduce code size. [21:00] mraleph: ryah_: to guarantee this we reserve 2gb of virtual address space and then use only this 2gb for code objects [21:01] briznad1 has joined the channel [21:01] ryah_: mraleph: all of my objects that i want to address with AddressToJS are small internal things [21:01] piscisaureus: mraleph: wrt that v8 bug we discussed earlier tonight, there is one more patch I'm floating on v8 [21:01] ryah_: mraleph: i could just reserve my own space [21:01] piscisaureus: it's documented here: http://codereview.chromium.org/6056006/ [21:01] piscisaureus: I don't think it relates to the bug though. [21:03] rauchg_ has joined the channel [21:03] mraleph: ryah_: yeah. that should work. you can allocate some big continious chunk of memory and use it for you objects. might be overkill though. [21:03] mraleph: piscisaureus: ok [21:03] tlrobinson has joined the channel [21:04] piscisaureus: you'll need it too tomorrow :-) [21:04] ziro` has joined the channel [21:06] piscisaureus: ryah_: patch looks good, but you most not forget to remove the posix .cc files from the list of regular sources [21:06] m64253_ has joined the channel [21:07] jchris has joined the channel [21:09] justinw312: Thanks for your help guys, I'm out of here for the night. [21:11] ryah_: piscisaureus: good. can you apply it to your branch [21:11] ryah_: piscisaureus: i'll land it with your next batch [21:11] matt_c_ has joined the channel [21:11] piscisaureus: ryah_: ok. [21:12] ryah_: mraleph: i've got an idea. i'll just branch if the diff is too big. [21:12] CIA-89: node: 03Ryan Dahl 07pointer_bindings * rcef3864 10/ src/node_io_watcher.cc : Support larger addresses in AddressToJS - http://bit.ly/f0u9u6 [21:13] ryah_: mraleph: https://github.com/ry/node/blob/cef386484754b5128fb312a8e3dd244e70c8b2d9/src/node_io_watcher.cc#L22-41 [21:14] ryah_: that gets me in the good case 99% of the time. [21:15] ryah_: (even on x64) [21:15] ryah_: not that im too worried about the overhead of External [21:16] ryah_: but there's definitely something slow about ObjectWrap [21:16] ryah_: almost certainly it's the weak reference [21:17] jimt has joined the channel [21:17] blowery_off has joined the channel [21:18] danielqo has joined the channel [21:19] romainhuet has joined the channel [21:19] AlexMax: yikes [21:19] AlexMax: gone for a few days [21:19] AlexMax: 0.3.5 is already out [21:20] mraleph: ryah_: ! this is perfect solution... [21:20] mraleph: ryah_: there was some recent bugfixes in External::Wrap which probably made it slower [21:21] tob1 has joined the channel [21:21] mraleph: ryah_: but there is bug in you code you save difference but extract pointer from External [21:21] ryah_: oh right, i need the offset [21:22] mraleph: ryah_:  better save pointer and get pointer for External case [21:23] ryah_: good catch. that would be a difficult bug to find. [21:24] ryah_: https://github.com/ry/node/blob/be2d66e64c33302b4b4f1a3530e366a4109da5ad/src/node_io_watcher.cc#L22-41 [21:24] dgathright_ has joined the channel [21:25] mraleph: yeah... all this encode X-bits into Y-bits stuff is nasty and painful :-) [21:25] CIA-89: node: 03Ryan Dahl 07pointer_bindings * rbe2d66e 10/ src/node_io_watcher.cc : Support larger addresses in AddressToJS - http://bit.ly/g3Auih [21:25] c4milo: tjholowaychuk: another newbie question, can I specify with app.set the layout file location? [21:26] tjholowaychuk: c4milo: app.set('view options', { layout: 'absolute path here' }) [21:26] mraleph: ryah_: I would also go to external case if diff is < 0 [21:26] ryah_: mraleph: i don't think it can be less than etext? [21:26] c4milo: tjholowaychuk: thanks ! [21:27] ryah_: mraleph: i guess i shouldn't make that assumption though... [21:27] tjholowaychuk: c4milo: you could add the layout option in the render() proxy as well if you need it more dynamic [21:27] mraleph: ryah_: I doubt that there is any such restrictions on memory layout... [21:27] tjholowaychuk has left the channel [21:27] c4milo: tjholowaychuk: yes, I saw that in your documentation :) thanks TJ [21:28] CIA-89: node: 03Ryan Dahl 07pointer_bindings * r6fb73ee 10/ src/node_io_watcher.cc : Support larger addresses in AddressToJS - http://bit.ly/g6GIw0 [21:28] ryah_: mraleph: i think there are [21:28] ryah_: of course i don't know anything. [21:30] davidascher has joined the channel [21:32] jdalton has joined the channel [21:32] pjackson: I've written a bunch of tests (nodeunit) which have assertions at various levels of callback nesting. I'm finding tests aren't getting run until after nodeunit thinks we've finished. [21:32] EyePulp has joined the channel [21:33] zomgbie has joined the channel [21:33] pjackson: My head's in a muddle, maybe I'm being stupid, but is there simple way to block until all tests have run? [21:33] Utkarsh_ has joined the channel [21:34] gf3` has joined the channel [21:37] blowery_off has joined the channel [21:38] pjackson: Am I allowed to say "block" in here? [21:38] mikeal has joined the channel [21:40] bmizerany has joined the channel [21:41] bradleymeck: you can, but if you ever want to block multiple execution paths, it isnt possible [21:41] bradleymeck: you can stop the whole thing with a while loop though [21:41] opengeard has joined the channel [21:42] bradleymeck: basically since the event threads dont know/care about eachother, only their emitters/callbacks, ya cant specify you want x and y to stop but not z, you could say "once in z stop everything" but then you will never know if x or y complete [21:43] bradleymeck: which is because we dont want to share memory and thus have the hell of wait loops [21:43] bradleymeck: but you could use something like step/seq to have something happen after all those functions [21:43] cloudhead has joined the channel [21:44] brianc: pjackson: you need to implement some sort of sink and then signal it x number of times when each test is done and expect a certain number of signals. if not recieved in a reasonable time then you can throw an exception. at least that's what i did [21:44] pjackson: bradleymeck: Thanks [21:44] dmcquay has joined the channel [21:45] pjackson: brianc: I did wonder why that wasn't built into nodeunit [21:45] pjackson: Is your code public? [21:45] brianc: pjackson: https://github.com/brianc/node-postgres/blob/master/test/test-helper.js line #169 [21:46] brianc: pjackson: usage in this file as an example... https://github.com/brianc/node-postgres/blob/master/test/integration/client/api-tests.js [21:46] pjackson: brianc: Thanks for that. [21:46] markstory has joined the channel [21:47] brianc: pjackson: basically i had to wait for every query to finish but I don't know which will finish first [21:48] brianc: pjackson: that might not be the best way to handle it; however, it worked for me [21:50] pjackson: I think something like it, in nodeunit, using t.expect() and t.done() might work. [21:50] matjas has joined the channel [21:53] Aikar: ryah_: since you keep up on v8 obviously, any idea when js 1.7/1.8 features are coming into it? [21:53] stephen_mcd has joined the channel [21:54] matt_c has joined the channel [21:54] blowery_off has joined the channel [21:54] matt_c has joined the channel [21:55] piscisaureus: ryah_: posix key codes are making my head hurt. wtf is all this with vt100, vt220, x11r6 xterm, xfree86 xterm, rxvt [21:55] tfe_ has joined the channel [21:56] piscisaureus: how am i supposed to know what I'm using anyway [21:56] eikke: piscisaureus: echo $TERM ? [21:56] rololololo has joined the channel [21:56] mraleph: Aikar: anything that is not ECMA standard or supported by Safari is not going to come into v8 [21:57] piscisaureus: so: xterm. is that X11R6 xterm or XFree86 xterm [21:59] pdelgallego has joined the channel [22:00] briznad has joined the channel [22:00] MrWarGames has joined the channel [22:02] desaiu has joined the channel [22:02] tfe__ has joined the channel [22:02] desaiu: What are the use cases for the Express framework and JavascriptMVC? JavascriptMVC is based on node.js, I think. [22:03] jdalton has left the channel [22:03] eikke: desaiu: is it? I though JSMVC is client-side targetted [22:03] tapwater has joined the channel [22:03] mscdex: piscisaureus: xfree86 according to wikipedia [22:03] tfe__ has joined the channel [22:04] mscdex: piscisaureus: doing console stuff? [22:04] piscisaureus: parsing keys from escape sequences [22:04] wasabist` has joined the channel [22:05] briznad has joined the channel [22:05] mscdex: ah [22:05] mscdex: yeah that can be tricky [22:06] piscisaureus: iow it sincerely sucks [22:06] slaskis: i'm having troubles getting node-compress to compile, getting this error: https://gist.github.com/39aae567740807c99f08 [22:07] slaskis: actually, i can't even find the real error there... [22:08] Ond has joined the channel [22:09] Tropicana has joined the channel [22:11] bingomanatee: I ******* ********** HATE CSS for layout stuff! [22:11] bingomanatee: Its just so ********* WRONG in every way. [22:11] cloudhead: does node have SSL support in 0.3.5? [22:11] blowery_off has joined the channel [22:12] cloudhead: I thought it did, but it's telling me server.setSecure doesn't exist [22:12] bradleymeck: bingomanatee blame the containing box model not the syntax [22:13] bradleymeck: anyone know of an Aspect Oriented Programming framework that doesn't blow perf to the floor [22:13] mscdex: cloudhead: i think setsecure was removed, i don't think ssl support is 100% complete yet [22:13] mnbvasd: cloudhead: yes.. you've got to use the tls module. [22:13] cloudhead: ah [22:13] slaskis: cloudhead: i think it is, through the https module [22:14] mnbvasd: it works from what I've played with it. [22:14] slaskis: which wraps the http and tls in a simple package :) [22:14] mnbvasd: not well though. [22:14] mnbvasd: (3.5). [22:14] cloudhead: mnbvasd: I'll try that out [22:14] Aikar: with the tcp NoDelay option, how do you guys recommend going about calling that on an http connection to a client if you want to drop permissions on a http server process? [22:14] wasabist` has joined the channel [22:15] softdrink: nice. there's a homebrew recipe for zmq [22:16] mnbvasd: cloudhead: I've just been working on a patch to allow you to secure an existing socket... so you can write clients and servers with starttls type protocols, like smtp and xmpp. [22:16] mnbvasd: tls.createServer(options).secureSocket( c, function ( d ) { c=d; } ); [22:16] mnbvasd: I'm note quite sure that's elegant enough :-/ [22:17] cloudhead: hmm [22:17] whack: Aikar: I use 'setcap cap_net_bind_service=+ep /usr/bin/node' and run node as non-root on privileged ports that way [22:17] blowery_off has joined the channel [22:17] whack: Aikar: not sure if that's what you were asking [22:18] mnbvasd: and for a client: s = tls.secureSocket ( s ); [22:19] gf3 has joined the channel [22:22] gf3 has joined the channel [22:22] herbySk has joined the channel [22:24] charlenopires has joined the channel [22:25] mbrochh has joined the channel [22:26] nolan_d has joined the channel [22:27] amerine has joined the channel [22:27] roncioso has joined the channel [22:27] mscdex: yeah, that's really what i'd like to see - securing an existing unsecure socket [22:27] Aikar: whack: i was going to start it as root then use setuid/gid to drop priv on the web server child process. but doesnt setNoDelay require root? [22:27] mscdex: that would really help with imap [22:27] whack: Aikar: nodelay is a general socket option not requiring root. [22:28] davida has joined the channel [22:28] Aikar: hmm i remember getting access denied in php [22:28] Aikar: maybe i got confused on error and it wasnt about nodelay [22:28] piscisaureus: v8: '\u001b'.charAt(0) [22:28] v8bot: piscisaureus: "" [22:28] richcollins has joined the channel [22:28] Aikar: or php was enforcing root on nodelay [22:28] piscisaureus: > v8: '\u001b'.charCodeAt(0) [22:28] piscisaureus: v8: '\u001b'.charCodeAt(0) [22:28] v8bot: piscisaureus: 27 [22:29] Aikar: okay well that solves that issue [22:30] brianc: v8: Buffer("\0") [22:30] v8bot: brianc: ReferenceError: Buffer is not defined [22:30] brianc: v8: new Buffer("\0") [22:30] v8bot: brianc: ReferenceError: Buffer is not defined [22:30] brianc: v8: you're mean to me [22:30] v8bot: brianc: SyntaxError: Unexpected token ILLEGAL [22:30] tfe__ has joined the channel [22:30] Aikar: even though i think in my case i could still do it even it irequires root. as i have a parent process that accepts connection, then passes the FD to another process (to achieve multi core concurrency) which would be dropped. so i could keep the TCP server as root and setNoDelay there before passing it to unprivledged process [22:31] jacobrelkin has joined the channel [22:32] [[zz]] has joined the channel [22:34] colinclark_ has joined the channel [22:36] mnbvasd: mscdex: https://gist.github.com/785304 [22:37] tob1 has joined the channel [22:37] mnbvasd: mscdex: I need to sort stuff out so I can try submit it. [22:37] mnbvasd: not sure I'm upto the grade though ;) [22:38] mscdex: that's alright, i haven't even had a chance to start testing 0.3.x with my modules yet [22:39] mnbvasd: diff a/tls.js b/tls.js | wc -l [22:39] mnbvasd: 87 [22:41] jherdman has joined the channel [22:42] roncioso has left the channel [22:43] whack has left the channel [22:43] jchris has joined the channel [22:44] Aikar: isaacs: poke, alive? [22:48] Me1000 has joined the channel [22:48] jherdman has joined the channel [22:49] tapwater has joined the channel [22:49] bmavity has joined the channel [22:50] davidc_ has joined the channel [22:50] bmavity: anyone know of any guidance on when to use eventEmitter vs. callback in your api? [22:51] stagas: mape: ping [22:51] mape: stagas: pong [22:51] stagas: mape: modded your wargamez again :) [22:52] stagas: mape: http://live.stagas.com [22:52] mape: ah neat [22:52] rauchg_ has joined the channel [22:52] stagas: tail -f :) [22:52] mape: snassy [22:52] Evet has joined the channel [22:53] ShiZWeaK: gwoo: Joining the SSJS bandwagon? :) [22:53] yhahn: bmavity: i would imagine that if you expect that multiple parties might be interested in reacting to the particular event in your api you'd use eventEmitter [22:53] softdrink: anyone particularly familiar with operational transformation? [22:54] mnbvasd: stagas: ace, that makes safari go boom! [22:54] stagas: mnbvasd: boom? :) [22:55] bmavity: yhahn: that makes sense. i guess i need to think about it a bit more. thanks :) [22:56] CIA-89: node: 03Ryan Dahl 07master * r2ec4cd5 10/ (3 files in 2 dirs): factor linklist code into own file - http://bit.ly/h4Uawk [22:56] yhahn: bmavity: np, other people might have a better answer for you [22:56] mnbvasd: stagas: it makes it crash ;( [22:56] MikhX has joined the channel [22:56] hellp has joined the channel [22:56] CIA-89: node: 03Ryan Dahl 07pointer_bindings * r888b1a7 10/ (lib/net.js src/node_io_watcher.cc): experimental: light ev_io binding for net.Server - http://bit.ly/hMACTl [22:56] CIA-89: node: 03Ryan Dahl 07pointer_bindings * r7a631a0 10/ src/node_io_watcher.cc : Support larger addresses in AddressToJS - http://bit.ly/gbOK2y [22:56] CIA-89: node: 03Ryan Dahl 07writev * raf26e37 10/ lib/net.js : No longer using END_OF_FILE (+33 more commits...) - http://bit.ly/i8ZIJI [22:56] CIA-89: node: 03Ryan Dahl 07pointer_bindings * r53baa54 10/ (lib/_set.js test/simple/test-set.js): Add internal set library - http://bit.ly/hqYjnz [22:56] CIA-89: node: 03Ryan Dahl 07pointer_bindings * rf1210f0 10/ (lib/net.js lib/_io_watcher.js): Abstract watcher class, add keep references - http://bit.ly/eLANDk [22:56] stagas: mnbvasd: ff and chrome work [22:57] bartt has joined the channel [22:57] stagas: and safari on windows works too [22:57] mnbvasd: stagas: safari has been quite unstable since my last update. [22:57] mnbvasd: stagas: I mainly use opera, but that fialed. [22:57] mnbvasd: s/ia/ai/ [23:01] zomgbie has joined the channel [23:03] jchris has joined the channel [23:03] tapwater_ has joined the channel [23:04] davidascher has joined the channel [23:05] binarypie has joined the channel [23:10] mnbvasd: stagas: is that code public? [23:10] stagas: mnbvasd: it's based on https://github.com/mape/node-wargames/ [23:11] MrTopf has joined the channel [23:11] stagas: mnbvasd: but I'll put this one up on github also. needs some more work [23:12] rudyl313 has joined the channel [23:12] Aria has joined the channel [23:12] mnbvasd: stagas: cool :) [23:12] mape: should create a map for each country [23:13] stagas: I want it to be a command, so you can tail -f any log file and create a server for you [23:13] jeff_horton has joined the channel [23:13] mape: as long as it contains an ip? [23:13] stagas: yes it grabs any line with an ip in [23:13] mape: and then each entry will link to where the server is? [23:13] Qbix1 has joined the channel [23:14] rudyl313: so I'm a rails web developer thats interested in trying out node to develop a web app ... should I go with Express or Geddy? [23:14] stagas: no it just displays the line [23:14] mape: Hmm k [23:14] tlrobinson has joined the channel [23:14] stagas: converts the ansi colors to html [23:14] mape: would be neat to add a command to get the link back [23:14] stagas: what link? [23:14] tanepiper: rudyl313: express is more sintra-like [23:14] mape: the ip listed in the line to where the server is [23:15] rudyl313: tanepiper: and geddy? [23:15] tanepiper: probably more djano-like, but dunno i haven't really used it [23:15] brianc: rudyl313: express is more widely adopted as well [23:15] rudyl313: brianc: I see [23:15] tanepiper: yea, express makes no assumptions about other parts like db, geddy does [23:15] booo has joined the channel [23:16] tanepiper: express provides routes and some middleware, but you don't have to use the middleware, you can write your own [23:16] stagas: mape: yeah but how would it know which is the server. now it's not aware of any enviroment it's just doing tail -f on the nohup.out which all servers write to [23:16] rudyl313: tanepiper: ok cool [23:16] tanepiper: rudyl313: it even has a choice of rendering engines, although jade is probably the most popular [23:16] mape: stagas: easy enough to find the public ip of the node instance and geoip that? [23:17] tanepiper: but you can use EJS, haml, or just plain html [23:17] rudyl313: tanepiper: oooh, I like haml [23:17] rudyl313: tanepiper: although isn't haml tied to ruby? [23:17] tanepiper: nope [23:18] rudyl313: tanepiper: what about if/else statements.. do I use js instead? [23:18] tanepiper: https://github.com/creationix/haml-js [23:18] rudyl313: tanepiper: ahh [23:19] stagas: mape: I don't understand! :) maybe I'm tired.. [23:19] brianc: rudyl313: if you like haml, you might want to check out jade. it's similar but without the % to denote a starting tag [23:20] mape: stagas: I start your tail node app, it pings something, gets back the ip/location, then every incoming message with an IP in it adds a link back to the server which runs the process [23:20] rudyl313: brianc: will do [23:20] ryah_: pquerna: nm, i kind of did the net socket binding too [23:20] jimt has joined the channel [23:21] ryah_: now to test how fast it is... [23:21] reid has joined the channel [23:21] CIA-89: node: 03Ryan Dahl 07pointer_bindings * rdbe4138 10/ (lib/_io_watcher.js lib/net.js): net.Socket uses new IOWatcher binding - http://bit.ly/dSv8tp [23:22] tanepiper: mikeal: is any of your blog stuff open source (I'm assuming it's just a couchapp?) [23:23] blueadept2 has joined the channel [23:23] ryah_: leaks memory -_- [23:23] stagas: mape: but it's not bound to any server it just reads the stdout of the tail -f, if you mean a link to the server it converts http links etc to clickable. the servers write to console.log [23:24] mape: stagas: the server running the app has an IP no? [23:24] stagas: mape: yeah :) [23:24] saikat has joined the channel [23:24] mape: And some lines have IPs? [23:25] stagas: mape: yeap [23:26] mape: So if I run my nodeapp, I can start the tail app and get lines showing requests connecting to the servers location [23:26] desaiu has joined the channel [23:27] stagas: mape: oh I get it you want to make a bow to the server location? [23:27] mape: bow, line, connection, path, yup :) [23:27] stepheneb has joined the channel [23:27] tanepiper: any nodefu people around? [23:28] matjas has joined the channel [23:29] stagas: mape: that'd be easy I haven't messed with the client side much, it still thinks it's on irc etc [23:29] mape: Yup, just an idea [23:30] c4milo1 has joined the channel [23:31] stagas: another idea I had is to click on the user list on an ip and be prompted to enter a name [23:31] stagas: so you can have known locations showing by name instead of ip [23:34] hosh_work has joined the channel [23:35] CIA-89: node: 03Ryan Dahl 07pointer_bindings * refdbb69 10/ (lib/net.js src/node_io_watcher.cc): Fix memory leaks - http://bit.ly/i0txbY [23:36] elijah-mbp has joined the channel [23:38] piscisaureus: ryah_: rxvt ... is that a common terminal ? [23:38] ryah_: pquerna: slower. [23:38] ryah_: piscisaureus: yes [23:38] warz has joined the channel [23:38] jacobolus has joined the channel [23:38] Lorentz: piscisaureus: I prefer it. [23:39] Lorentz: A lot of people do, I think. [23:39] ryah_: mraleph: pointer bindings don't seem any faster than ObjectWrap [23:39] piscisaureus: ok. clear. [23:40] admc has joined the channel [23:40] pquerna: ryah_: hmm. do you have it all seutp with uh oprofile? [23:40] skm has joined the channel [23:41] ryah_: pquerna: i could - i suspect it's just that GC of iowatchers is not the bottleneck in the http_simple.js test [23:44] tlrobinson has joined the channel [23:45] GasbaKid has joined the channel [23:45] mikeal: tanepiper: it is [23:45] mikeal: github.com/mikeal.js [23:46] mikeal: whoops [23:46] mikeal: github.com/mikeal/mikeal.js [23:46] estrathmeyer has joined the channel [23:46] mikeal: if you want a blog that can't be crawled by Google, you might want to fork it :) [23:46] bingomanatee: Won't be much of a blog then will it? [23:46] tanepiper: mikeal: lol, ok :) [23:47] bingomanatee: more like a diary [23:47] estrathmeyer has left the channel [23:47] tanepiper: basically i'm looking to add a news feed to our app, powered by couchdb [23:47] mikeal: haha [23:47] mikeal: it still works in your browser, on the internet [23:47] tanepiper: so indexing won't be an issue [23:47] masahiroh has joined the channel [23:47] mikeal: it just doesn't get crawled by Google, because Google hasn't figured out server side javascript yet [23:48] tanepiper: well i was looking for something i can stick on top of couch to add/edit posts from the browser [23:48] tanepiper: it'll then just get pulled into our ExtJS app dashboard [23:48] markwubben has joined the channel [23:49] mraleph: ryah_: why am I not surprised? :-) [23:49] mraleph: ryah_: are you testing it on ia32? [23:49] omni5cience has joined the channel [23:49] ryah_: x64 [23:50] wdperson has joined the channel [23:51] mraleph: ryah_: well... then probably you just don't create toooons of wrappers. [23:51] mraleph: maybe this was never a bottleneck [23:52] mraleph: why did you even decide to optimize it? [23:52] Sidnicious has joined the channel [23:52] derferman has joined the channel [23:53] bantic has joined the channel [23:54] micheil has joined the channel [23:54] dgathright has joined the channel [23:54] micheil: no tim-smart? [23:54] mraleph: your optimized approach should definitely have better memory footprint... but if all this wrappers die young and you don't have 2^20 of them floating around simultaneously --- this just does not matter. [23:54] bantic: Is it possible to see the code that makes up the built-in node modules "http" and "events"? Is that in javascript, or are those compiled C code? [23:55] micheil: bantic: if you checkout the git repo, then yes; /lib/ is the javascript, /src/ is the c [23:55] derferman has joined the channel [23:55] bantic: Thanks micheil [23:55] micheil: anyone got any other way's to contact tim-smart? [23:58] herbySk has joined the channel [23:58] mikew3c_ has joined the channel [23:58] hij1nx has joined the channel [23:59] gartenstuhl has joined the channel