[00:00] xla has joined the channel [00:00] isaacs: micheil: i've never heard that [00:00] quirkey has joined the channel [00:00] kgf: micheil: only if you were referencing something.Something multiple times, presumably [00:01] isaacs: micheil: yeah, what kgf said [00:01] micheil: kgf: yeah [00:01] micheil: like stream.Stream vs Stream [00:01] jashkenas has joined the channel [00:01] skohorn has joined the channel [00:03] mikeal1 has joined the channel [00:03] Tim_Smart: ryah: What is a ByteArray? http://code.google.com/p/v8/source/browse/trunk/src/heap.cc#2365 [00:05] davidascher has joined the channel [00:05] [[zz]] has joined the channel [00:05] Nohryb has joined the channel [00:07] _announcer: Twitter: "1. node.js | 2. WebSockets | 3. CSS preprocessors | 4. Web Workers | 5. OAuth # this is the new web" [es] -- Luis de Jesus. http://twitter.com/lucks17/status/27082711335 [00:07] davidwalsh has joined the channel [00:07] Tim_Smart: ryah: Also http://www.google.com/codesearch/p?hl=en#W9JxUuHYyMg/trunk/src/objects-inl.h&q=ByteArray%20package:http://v8%5C.googlecode%5C.com&l=1947 [00:10] ben_alman has joined the channel [00:10] mikeal1: Tim_Smart: it's part of the WebGL spec [00:10] cloudhead has joined the channel [00:10] Tim_Smart: mikeal1: Yeah I know that much, but can we use them today? [00:11] zemanel_ has joined the channel [00:11] mikeal1: it's a binary datatype for javascript that you need for doing OpenGL stuff [00:11] mikeal1: i think we do [00:11] Tim_Smart: mikeal1: Nope, we allocate outside the heap [00:11] mikeal1: i think we use that code or something [00:11] _announcer: Twitter: "Nice little web app for designers: Draw on any webpage in the browser. http://markup.io/ #node.js" -- Jason Melgoza. http://twitter.com/jasonmelgoza/status/27083088330 [00:12] MobileSidnicious has joined the channel [00:12] Tim_Smart: mikeal1: http://github.com/ry/node/blob/master/src/node_buffer.cc#L171-175 [00:13] creationix has left the channel [00:13] _announcer: Twitter: "VERY successful #nodejs and #socket.io test. can't wait till this hits production." -- Dan Panzarella. http://twitter.com/dpanzarella/status/27083270734 [00:15] Tim_Smart: I think announcer needs more rate limiting. [00:15] ryah: Tim_Smart: ByteArray is an internal thing [00:17] jperras has joined the channel [00:18] micheil: ryah: would it be wise to have an official announcement on the mailing list about the sys -> util migration [00:18] Prometheus has joined the channel [00:19] micheil: as well as a patch for 2.X to add a symlink of sys -> util [00:19] micheil: (I'm not sure if that's possible though) [00:19] sprout has joined the channel [00:21] ryah: a backport for 2.x would be nice [00:21] ryah: gtg [00:22] niko has joined the channel [00:24] radiofreejohn has left the channel [00:24] Gurpartap has joined the channel [00:30] threeve has joined the channel [00:33] banjiewen_ has joined the channel [00:37] Viriix has joined the channel [00:39] Mikushi1 has joined the channel [00:40] dbathurst_ has joined the channel [00:42] _announcer: Twitter: "Message me if you want to see a preview of my [barely] secret project. Plenty of html5/javascript/node.js/websockets. ;-) #dontmissout #cool" -- Justin Vaillancourt. http://twitter.com/jvaill/status/27086807926 [00:42] rkieffer has joined the channel [00:43] ryah: tell me what the syntax error is here: [00:43] ryah: http://s3.amazonaws.com/four.livejournal/20101011/node_natives.h [00:43] bpadalino: oh god it's quiz time [00:43] ryah: i'm getting default/src/node_natives.h:58: error: braces around scalar initializer for type ‘const char*’ [00:43] rkieffer: Is there a (simple) way to detect if a file is run from the command line .vs. being required? [00:44] rkieffer: e.g. I'd like to be able to run some test code if a file is launched explicitely, but only in that case. It'd be convenient to be able to add something like function __main() {/* run test code */} to the file. [00:45] ryah: (line number isn't matching, necessarally) [00:46] ako has joined the channel [00:46] _announcer: Twitter: "I have a strong desire to write XMPP libs in node.js, java, and golang. Then I remember I can barely keep up on maintaining my Python lib." -- fritzy. http://twitter.com/fritzy/status/27087536621 [00:48] niko has joined the channel [00:49] jperras has joined the channel [00:50] herbySk has joined the channel [00:51] twoism has joined the channel [00:53] rkieffer: nm. "if (__filename == process.argv[1])" works [00:53] JimBastard_ has joined the channel [00:54] Tim_Smart: ryah: Interesting, all the braces matched up. [00:54] Tim_Smart: Vim has trouble rendering everything though. [00:54] bpadalino: ryah: i can't get anything with using numeric constants for char *'s to work [00:55] bpadalino: i also get a deprecated conversion from string to char * warning .. [00:55] _announcer: Twitter: "27 10 node.js http://atnd.org/events/8756 drinking party in Shibuya" [ja] -- Daisuke Horie. http://twitter.com/dice/status/27088996088 [00:57] jperras has joined the channel [00:57] dilvie: What is "this" in the module scope? [00:58] Tim_Smart: dilvie: exports [00:58] dilvie: Thanks Tim... trying to read somebody else's code. =) [00:59] bpadalino: ryah: using strings as "\xAA\xBB\xCC" for the array seems to make things much happier [00:59] davidascher has joined the channel [00:59] bpadalino: g++ has the warning for deprecated string -> char * conversion, but gcc seems cool with it [01:00] pengwynn has joined the channel [01:01] dohtem has joined the channel [01:01] dohtem has joined the channel [01:04] davidwalsh has joined the channel [01:06] sudoer has joined the channel [01:06] gerred has joined the channel [01:06] breccan has joined the channel [01:08] _announcer: Twitter: "node.js Hey hot, I wish like to try soon. http://d.hatena.ne.jp/koichik/20100918" [ja] -- _y_u_y_a. http://twitter.com/pypupypa/status/27090080434 [01:09] mbrochh has joined the channel [01:09] jacobolus has joined the channel [01:10] langworthy has joined the channel [01:11] isaacs: we need some fuse bindings for nodejs [01:11] isaacs: it'd be rad to write file systems in node. [01:12] Yuffster has joined the channel [01:13] cloudhead has joined the channel [01:13] steadicat has joined the channel [01:14] niko has joined the channel [01:15] _announcer: Twitter: "Got no answer to this one earlier: any best practices for *generating* (versus parsing) #XML from #nodejs?" -- Matthew Turland. http://twitter.com/elazar/status/27090671386 [01:16] roger_raymond has joined the channel [01:16] mikeal1 has joined the channel [01:16] micheil: Tim_Smart: hey, did you end up testing a full C websocket parser? [01:17] Tim_Smart: micheil: Sorta. Calling functions and making buffers in C++ is really slow. [01:17] SubStack: annoyance: expresso -c only works if libs are in lib/, not . [01:17] Yuffster has joined the channel [01:17] michael_ruddy has joined the channel [01:18] michael_ruddy: Hey dudes [01:18] Tim_Smart: SubStack: I usually set up a Makefile with a test task. [01:18] Tim_Smart: expresso -I lib --serial test/*.test.js is the runner. [01:18] SubStack: -c is for coverage, which is only something I care about occasionally [01:18] Tim_Smart: Oh right. [01:19] apage43 has left the channel [01:19] antono has joined the channel [01:19] _announcer: Twitter: "Web Worker tapje in IE, a good feature would be. nodejs waiting for the day .. that is associated with http://www.whatwg.org/specs/web-workers/current-work/" [ko] -- nanhapark. http://twitter.com/nanhapark/status/27091077565 [01:19] bradleymeck has joined the channel [01:19] softdrink has joined the channel [01:20] michael_ruddy: If someone has a sec to give me feedback on my startup project I would be very thankful. It's at http://skanr.com, thanks in advanced. [01:20] softdrink1 has joined the channel [01:20] apage43 has joined the channel [01:20] boaz_ has joined the channel [01:21] tav has joined the channel [01:22] AAA_awright: Can Nodejs authenticate users with PAM, anyone know? [01:24] _announcer: Twitter: "@ Outsider__ nodejs see you're interested in two minutes. Hello. ^ ^" [ko] -- nanhapark. http://twitter.com/nanhapark/status/27091524248 [01:24] niko has joined the channel [01:24] softdrink has joined the channel [01:26] Aria has joined the channel [01:27] AAA_awright: How does one sugguest I implement authentication? [01:28] micheil: Tim_Smart: who says you need to create Buffer's in C++? [01:28] micheil: just memcopy on write [01:28] micheil: you already have a Buffer [01:28] EyePulp has joined the channel [01:28] micheil: surely? [01:28] Tim_Smart: micheil: Because you need to alloc the buffer. [01:28] micheil: oh. yeah [01:29] Tim_Smart: And there isn't a way to manipulate memory pointers in ecmascript. [01:29] dbathurst has joined the channel [01:29] micheil: hmm, is it possible to make C++ creation of Buffer's faster? [01:30] Tim_Smart: Hmm not really. [01:30] Mikushi1 has joined the channel [01:30] hassox has joined the channel [01:31] micheil: it should be. [01:32] micheil: what about doing: [01:32] micheil: char *data = Buffer::Data(args[0]->ToObject()); [01:32] micheil: is that slow? [01:32] sprout has joined the channel [01:33] Tim_Smart: http://github.com/ry/node/blob/master/src/node_buffer.cc#L109-123 [01:34] micheil: meaning? [01:34] micheil: I'd say that's not slow. But I could be wrong. [01:35] Tim_Smart: The only overhead is the check for indexed properties, and the unwrap. [01:35] cloudhead has joined the channel [01:36] Evet has joined the channel [01:37] micheil: so it's fast, right? [01:37] Tim_Smart: Well the slow bit the buffer creation. [01:37] Tim_Smart: *is the [01:37] Tim_Smart: Which is why we made fast buffers :) [01:38] _announcer: Twitter: "25 more stories of the 12th season. Using the online game Node.js. What have we come here, you feel it. http://bit.ly/b9qQBl" [ja] -- Atsushi Nakatsugawa. http://twitter.com/moongift/status/27092819739 [01:38] pydroid has joined the channel [01:39] micheil: Tim_Smart: so, if I just do the state machine + parsing, then just emit "data" events or something like that, then that should be faster [01:39] Tim_Smart: micheil: Problem is, as soon as you put a .toString() in there somewhere, is becomes a lot slower than strings. [01:40] Tim_Smart: So maybe just use strings for utf8 message ;) [01:40] _announcer: Twitter: "I'm excited that #nodejs' Buffer may be getting pushed down into V8. Efficient binary data handling on the client-side of an XHR? Rad." -- Edward O'Connor. http://twitter.com/hober/status/27092994641 [01:40] micheil: like, I can still do all the heavy buffer work in js land [01:40] Tim_Smart: micheil: With that c++ code I showed you earlier, no buffer work is done in C++ land. [01:41] Evet: nodejs isnt yet enough to replace nginx? [01:41] micheil: but, at the same time, I can do the heavy parsing of data in C, where it's quicker [01:41] Tim_Smart: micheil: Yes. [01:41] Evet: *stable [01:41] micheil: Tim_Smart: so, essentially, I'm doing similar to what you're doing in C, but slightly differently [01:41] Tim_Smart: micheil: And don't call callback's in c++ as well, try to return directly. [01:42] micheil: for example: emit("start", idx) [01:42] Tim_Smart: Function calls are slow it seems. [01:42] micheil: could be the start of a packet [01:42] micheil: emit("end", idx) could be the end of a packet [01:42] _announcer: Twitter: "you might say you can use node.js fugue" [ja] -- yutaka matsubara. http://twitter.com/mopemope/status/27093182382 [01:42] micheil: then I could just slice both [01:43] micheil: Tim_Smart: any stats on EventEmitter's in C land? [01:43] Tim_Smart: nope. [01:43] danielzilla has joined the channel [01:43] Tim_Smart: I don't even think node itself uses them. [01:44] Tim_Smart: Actually, it does. [01:44] _announcer: Twitter: "500 yen or worry about whether Node.js premium member be too concerned about the game made." [ja] -- id:slowbirds. http://twitter.com/slowbirds/status/27093373356 [01:45] michael_ruddy: Hey guys, I think my startup can be useful to some folks here. I could use some input if you have a sec, thanks! http://skanr.com/ [01:46] JimBastard_: heard you the first time michael_ruddy [01:46] JimBastard_: try the mailing list with a quick write up, you might get better feedback [01:46] JimBastard_: also, on your site, i didnt see anywhere mentioning node [01:46] JimBastard_: maybe i missed that part [01:46] JimBastard_: are you releasing any of your tech stack as open-source? [01:47] bentruyman has joined the channel [01:48] Mikushi1 has left the channel [01:48] michael_ruddy: Good call, I'm using node for the backend so I can handle many quick requests. I don't have a definitive plan yet but open-sourcing it is a possibility. [01:49] JimBastard_: well, i think you'll find most of the people here will find open-source node software useful. [01:50] JimBastard_: do a write up of what your service does (perhaps with an emphasis of how to use it in conjunction with node) and post that to the mailing list. [01:50] JimBastard_: i read the copy on your site and didnt really get it, but then again im pretty dumb [01:50] niko has joined the channel [01:51] micheil: Tim_Smart: node doesn't use node_events.h [01:51] michael_ruddy: No I need to work on the delivery, I'll take you up on your advice tho, thanks. [01:51] cferris has joined the channel [01:51] JimBastard_: the design looked good for the site though! [01:51] gerred: curious: why use express.js over say, sinatra? [01:51] _announcer: Twitter: "@melgray How often are you using node.js?" -- Robby Colvin. http://twitter.com/geetarista/status/27093874987 [01:51] JimBastard_: gerred: caus its node? [01:51] michael_ruddy: ha thanks, credit to weethemes [01:52] micheil: because you can, and you think javascript is more awesome then ruby? [01:52] gerred: JimBastard_: i'm having the issue where I fal back to ruby. ;) [01:52] Tim_Smart: micheil: It is used in stat watcher http://github.com/ry/node/blob/master/src/node_signal_watcher.h#L6 [01:52] JimBastard_: gerred: use the best tool for the job [01:52] gerred: where are you finding node is the best tool for the job out of curiousity? [01:52] micheil: ah, missed that there Tim_Smart [01:52] JimBastard_: gerred: webservices [01:53] micheil: realtime stuff [01:53] micheil: fun [01:53] JimBastard_: gerred: i can role out a powerful api very quickly. if i need some browser real-time, its easy as well [01:53] JimBastard_: like micheil says [01:53] gerred: ah ha [01:53] JimBastard_: if you only need sinatra, use sinatra [01:53] gerred: using socket.io i assume? [01:53] micheil: no. [01:54] micheil: using node-websocket-server. [01:54] JimBastard_: lol micheil [01:54] stephenjudkins has joined the channel [01:54] micheil: why? because I'm totally biased towards my own code. [01:54] gerred: haha [01:54] gerred: hey if it makes my life happy [01:54] gerred: i'm not at the point with JS or node that I'm writing my own modules. [01:54] micheil: ACTION is. [01:54] JimBastard_: i would assume socket.io is gonna be more noob friendly [01:55] JimBastard_: since its higher level? [01:55] micheil: I also like deleting code, as the last few patches to node that I've added do. [01:55] gerred: eh I'll dig into it. [01:55] micheil: JimBastard: yeah [01:55] gerred: I'm still reading JS: the good parts. ;) [01:55] xdamman_ has joined the channel [01:55] micheil: gerred: never read it. I know what's good though. [01:55] dilvie: ls [01:55] dilvie: oops [01:55] dilvie: =) [01:55] micheil: not happening. [01:55] gerred: i like the idea of server side js [01:56] gerred: is this on npm micheil? [01:56] micheil: yes [01:56] micheil: websocket-server [01:57] dilvie: gerred: the most difficult aspect of using node is that you have to roll your own solutions to a lot of common problems at this stage. [01:57] dilvie: That is changing very quickly, though. [01:57] saikat has joined the channel [01:58] gerred: true. [01:58] micheil: not really. [01:58] micheil: there's not a whole heap of rolling your own needed now, depending on what you do. [01:59] gerred: i figure I'm at a point where I'd have to be insane to try to ignore javascript's existence any longer. [01:59] astrolin has joined the channel [02:00] JimBastard_: gerred: at least you arent in denial [02:00] JimBastard_: bad news everyone, javascript isnt going anywhere anytime soon [02:00] gerred: plus... [02:00] ossareh_ has joined the channel [02:00] dilvie: JimBastard_: That's great news. [02:00] JimBastard_: isnt going away* [02:00] gerred: "hay guys I know server side javascript hire me" [02:01] gerred: I totally get evented code, I do it with eventmachine....it's just applying it to JS. ;) [02:01] dilvie: gerred: Yeah, that line doesn't work too well, yet. [02:01] dilvie: employers are just beginning to discover Node. [02:01] saikat: in javascript there isn't a way to make a variable that points to, in the pointer world, the equivalent of a reference to another variable rather than the value pointed to by another variably right? or any trick that can achieve something similar? [02:01] micheil: JavaScript is evented code. [02:02] micheil: there's no applying involved. [02:02] saikat: basically, if i have arr = ["a", "b"]; x = arr[1]; arr[1] = "foo";, arr[1] is "foo" and x is "b" but is there a way to do the equivalent of x = &arr[1] in javascript so when arr[1] changes, x is also "foo" [02:02] gerred: micheil: rather, I learned it in Ruby. [02:02] gerred: micheil: reducing my barrier to entry. [02:02] micheil: yeah. but the barrier in EM is massive. [02:02] gerred: true. [02:03] SubStack: EM is clunky too if you need to pass varibles into your classes [02:03] SubStack: that is a problem generally with ruby code, confusing as fuck scoping [02:03] dguttman_ has joined the channel [02:04] MikhX has joined the channel [02:05] gerred: very true [02:05] gerred: whereas with js the scoping is fairly strict and obvious. [02:05] SubStack: yeah, it's just closures everywhere [02:05] micheil: also, why do we always have these language X vs javascript or tech X verse node.js discussions? [02:06] SubStack: it's really bad in ruby when you have a nested class but you can't get at the parent block's local vars [02:06] SubStack: micheil: therapy [02:06] gerred: micheil: i don't think its vs., I'm just struggling to get to that point where I know node.js is the tool for a certain job. [02:08] saikat_ has joined the channel [02:08] micheil: gerred: just try it. If it fails, so be it. [02:08] softdrink has joined the channel [02:08] micheil: but seriously. It's not likely to fail. [02:08] _announcer: Twitter: "Creating voice, SMS, IM and Twitter apps using Node.js and Tropo http://bit.ly/db5hAc" -- Dan York. http://twitter.com/danyork/status/27095476481 [02:08] onar_ has joined the channel [02:14] pedrobelo has joined the channel [02:16] niko has joined the channel [02:18] mAritz: so, how would i best unittest a webapp (besides testing the models)? [02:19] _announcer: Twitter: "Experimental night with node.js lead to OAuth fun with the Twitter API and some WebSockets, but failed at the Streaming API, kept timing out" -- Bartek Ciszkowski. http://twitter.com/bartekci/status/27096764554 [02:20] jakehow has joined the channel [02:21] techwraith has left the channel [02:22] zooko has joined the channel [02:30] micheil: ryah: ping. [02:30] isaacs has joined the channel [02:30] isaacs: micheil: yeah, i'm thinking python can suck it [02:31] micheil: heh [02:31] micheil: isaacs: y'know much on fast buffers? [02:31] isaacs: a bit. what's up? [02:31] micheil: like, is it just the one buffer allocated? [02:32] micheil: say I want new Buffer(30), that would be a fast buffer, because it's < 8*1024 [02:32] micheil: if I allocated another new Buffer(30) [02:32] isaacs: they'd have the same parent, and teh second one would be offset by 30 bytes [02:32] micheil: then the second buffer and first buffer would both be in the one buffer [02:32] micheil: yeah [02:32] isaacs: ie, the first would be 0-30 and the second would be 31-60, in the SlowBuffer parent [02:33] micheil: yeah [02:33] micheil: thinking if that can help me in the quest for a faster websocket parser [02:33] isaacs: when it runs out of space, it throws it away and starts using another one [02:33] isaacs: well, the thing is, you should just magically start being faster now. [02:33] isaacs: :) [02:33] isaacs: the more you allocate small buffers, the more the increase [02:34] dpritchett has joined the channel [02:34] Tim_Smart: If the pool size is too small, Buffer.poolSize = 1024 * 1024 etc. [02:35] robotarmy has joined the channel [02:36] micheil: yeah [02:36] _announcer: Twitter: "Creating voice, SMS, IM and Twitter apps using Node.js and Tropo ...: I freely admit to being intrigued by all the... http://bit.ly/a0m6Nj" -- Old Mac Donald. http://twitter.com/twittafarm/status/27099707595 [02:37] Tim_Smart: ryah: That eio.h warning is start to drive me crazy... [02:37] Tim_Smart: *starting [02:38] _announcer: Twitter: "Twitter: Twitter Streaming API + node.js + Appcelerator Titanium = Real-time tweet map |  @ecito: http://bit.ly/bQrd0A" -- fury. http://twitter.com/__fury/status/27099844680 [02:38] twoism has joined the channel [02:39] stephenjudkins has joined the channel [02:39] micheil: isaacs: npm supports make scripts, right? [02:39] isaacs: micheil: yeah [02:39] isaacs: npm help json [02:39] micheil: k [02:39] isaacs: search for "scripts" [02:39] nuba has joined the channel [02:39] isaacs: or npm help scripts for even more inf [02:39] isaacs: info [02:40] hzin has joined the channel [02:41] niko has joined the channel [02:42] micheil: isaacs: http://blog.ksplice.com/2010/07/building-filesystems-the-way-you-build-web-apps/ [02:42] micheil: isaacs: k, just thinking if it's worth implementing this stuff with C or not. [02:42] isaacs: micheil: well, really i want to implement everything in JS [02:42] micheil: yeh [02:42] isaacs: micheil: so i'm going to bind the entire fuse API to node [02:43] micheil: isaacs: bind to it using? [02:43] isaacs: micheil: well, C++ (mostly C, except for the v8 stuff) [02:43] micheil: k [02:43] micheil: I'd like to have part in, this sounds like fun [02:43] isaacs: kewl :) [02:44] isaacs: i'm actually looking into it as a way to test flaky filesystems. [02:44] Tim_Smart: isaacs: Does fuse have its own event loop or anything? [02:44] isaacs: Tim_Smart: not really. it's not really for "real" filesystems, as far as i can tell ;) [02:44] micheil: flaky filesystems>? [02:44] isaacs: Tim_Smart: or rather, it doesn't matter. [02:44] Tim_Smart: Or is it just a bunch of sys calls? [02:44] isaacs: Tim_Smart: like, if your app is non-blocking, it'll be nonblocking [02:44] Tim_Smart: Right. [02:44] Tim_Smart: So not like GTK or anything? [02:45] isaacs: Tim_Smart: no, it sorta hops in the middle, and routes those syscalls to your app. [02:45] Tim_Smart: Right. [02:45] isaacs: micheil: yeah, like if you read() a file that's got 1000 bytes in it, and you say "gimme 1000 bytes", and it only gives you 1 byte each time. [02:45] isaacs: micheil: pathological [02:45] mAritz: how do you guys test your node.js websites? [02:45] micheil: ouch [02:45] micheil: mAritz: I don't. [02:45] mAritz: i looked at selenium and that looks like a pain in the ass :( [02:46] Tim_Smart: mAritz: I test the tools I make them with. [02:46] isaacs: micheil: not that this is common, but with a long enough event horizon, every hard drive's survival rate goes to zero [02:46] micheil: (but then again, I don't test, unless it's a patch to node.js) [02:46] isaacs: s/event/time/ [02:46] dilvie: Is there a caching module for express? [02:46] isaacs: micheil: it's a hard thing to test for [02:46] mAritz: and not the pages themselves? hm... i just really don't want to introduce regressions, because the site will grow more than anything else i've done so far. (if i find the time) [02:47] isaacs: micheil: so, i really don't dig the python API. it is very pythonic, and that's great, but node's should be more node-like [02:47] isaacs: it should be guessable, because the fuse api mirrors the posix api so closely [02:47] micheil: isaacs: yeah, but at any rate, I remember when reading that ksplice article, I was like, "wow. I want to do that in node.js" [02:47] isaacs: kewl :) [02:47] micheil: so, if you're up for doing it, I am. [02:48] micheil: (pengwynn will tell you how much I say "yeah' it'd be cooler if it was node.js") [02:48] micheil: :D [02:48] isaacs: i think the pattern that works best in node is to bind at the C layer as low and tight as possible, even to the point of being obnoxious about it, and then wrap it in pretty js [02:48] path[l] has joined the channel [02:48] isaacs: just expose every function with teh minimum amount of v8 code possible [02:48] mAritz: dilvie: you can use connect.cache (or express.cache if you want to keep it in express lingua, no difference though since express just uses the connect one ;) ) [02:49] micheil: isaacs: yeah [02:49] dilvie: mAritz: Thanks. =) [02:49] isaacs: the tricky bit here is that you have to create a bigass struct of object pointers when you mount, so i'll have to figure out how to pull that off of an object with methods [02:49] micheil: man.. hitting disc when you what memory sucks balls. [02:49] micheil: isaacs: and don't you mention those 8gbs. [02:49] micheil: >_> [02:49] isaacs: hehe [02:50] isaacs: i was eating all 4GB with some vmware stuff. even with 8, it's kinda slowish [02:50] isaacs: but ram doesn't matter until you run out of it, right? [02:50] micheil: 4 Gigs here, with 7 gigs in swap [02:50] isaacs: yikes [02:50] micheil: yeah [02:50] MikhX_ has joined the channel [02:50] micheil: safari using 1Gb of active ram [02:50] micheil: (tonnes of stuff open) [02:51] ysynopsis has joined the channel [02:51] _announcer: Twitter: "Node.js future will be driven mainstream events like but I think server-side JavaScript is used in the future I can not imagine too many" [ja] -- nog. http://twitter.com/nog/status/27100824591 [02:51] micheil: isaacs: check that: http://drp.ly/quCq [02:51] isaacs: youare in teh hurty ram plae [02:51] isaacs: *place [02:51] micheil: haha, yeah [02:52] micheil: can't do much though. considering this is a nov. 09' macbook pro. [02:52] dilvie: hmm.. I don't understand that last tweet at all. [02:52] dilvie: =) [02:52] gerred: hmm [02:52] micheil: I need to get a mac mini or something; do all the node.js dev on that. [02:52] gerred: any method to reopen a closed websocket connection? [02:52] micheil: gerred: no. [02:52] micheil: gerred: you just create a new socket [02:52] gerred: ah [02:52] micheil: gerred: have a look at http://github.com/miksago/drano [02:53] micheil: erm [02:53] micheil: http://github.com/miksago/drano.js [02:54] Tim_Smart: micheil: http://dl.dropbox.com/u/396394/screenshots/ubuntu-memoryusage.png ;) [02:54] Tim_Smart: Mac is a memory hog, windows even more. [02:54] micheil: ... [02:55] micheil: Tim_Smart: I've literally got about 200 - 400 tabs open in safari. [02:55] _announcer: Twitter: "Oh I get the feeling that node.js of memory should I use to see a millionaire" [ja] -- yutaka matsubara. http://twitter.com/mopemope/status/27101109163 [02:55] gerred: figured it out...and now I'm hooked on node. [02:55] Tim_Smart: micheil: Oh... [02:55] micheil: yeah. [02:55] micheil: haha [02:55] Tim_Smart: I'm always closing my tabs. [02:56] mAritz: Tim_Smart: how's biggie-orm going? :) [02:56] micheil: yeah, I don't [02:56] hzin has joined the channel [02:56] seangrov` has joined the channel [02:56] Tim_Smart: mAritz: The orm is pretty good. A few things with associations need polishing. [02:56] micheil: Tim_Smart: most stuff is 90Mb< Virtual memory [02:56] Tim_Smart: Ah ok. [02:57] mAritz: Tim_Smart: and documentation :D [02:57] micheil: mAritz: pft. source code. [02:57] micheil: :P [02:57] mAritz: :D [02:57] Tim_Smart: My largest process is firefox, which I only using for email (Googe Gears_ [02:57] Tim_Smart: *Google Gears [02:58] mAritz: btw: does biggie-orm support custom functions in the models? like if i have a user model that needs something like if(user.checkPrivilege('admin')) [02:59] micheil: Flash is ~500Mb virtual [02:59] Yuffster has joined the channel [02:59] micheil: Safari 1.8Gb virt. [02:59] Tim_Smart: mAritz: Sure, just chuck them in the definition. [02:59] micheil: then a bunch of other things at ~400Mb virtual [02:59] mAritz: oh, okay. cool. :) [03:00] mAritz: Tim_Smart: another question: does it use a specific keyspace? can i define one? [03:00] Tim_Smart: Specific key space for the time being. [03:00] Tim_Smart: ("assoc:", "index:", "id:", "view:") [03:00] mAritz: ok, but not like connect-redis which just uses uuids as redis keys -.- [03:01] _announcer: Twitter: "Hi .. @ nanhapark Yes Is gwansimjeongdoman. node.js Do you? Heh" [ko] -- Outsider. http://twitter.com/Outsider__/status/27101561337 [03:01] Tim_Smart: mAritz: Models use "model_name:id" [03:01] mAritz: oh, no biggie:something:something? :( [03:01] Tim_Smart: Nope. [03:01] joshpeek has joined the channel [03:01] mAritz: ACTION is a sad panda. [03:01] Tim_Smart: That is what "select" is for ;) [03:01] dipser_ has joined the channel [03:02] mAritz: grml [03:02] _announcer: Twitter: "But now, node.js What? * Tw in NS *" [ja] -- カトウ キミノリ. http://twitter.com/kimikato/status/27101666968 [03:02] mAritz: so the connection is exposed? [03:02] Tim_Smart: Yeah, orm.db.client [03:02] Tim_Smart: (I think) [03:03] mAritz: And this months winner for worst tweet goes tooo... KIMIKATO! Congratulations! [03:03] mAritz: btw, regarding virtual memory: right now java has > 2.3gb vm for 2 applications -.- [03:04] TheEmpath has joined the channel [03:06] micheil: isaacs: given cb is Local cb = Local::Cast(cb_v); [03:07] jwm has joined the channel [03:07] CIA-36 has joined the channel [03:07] isaacs: say what? [03:07] niko has joined the channel [03:07] micheil: then to get the result of calling a JS function, you'd do: Local result = cb->Call(args..) [03:07] micheil: right? [03:07] isaacs: yeah, i think so [03:08] micheil: k [03:08] isaacs: maybe cb.Call() [03:08] isaacs: i always forget [03:08] micheil: in which case fuse bindings may be piss easy [03:08] isaacs: oh, yeah, it's a handle, so -> [03:08] isaacs: the dicy bit seems to be the ObjectWrap stuff [03:08] isaacs: but yeah, not rocket surgery [03:09] micheil: hmm.. [03:11] meso has joined the channel [03:11] micheil: yeah. this should be pretty easy to implement I think. [03:11] richcollins has joined the channel [03:11] Tim_Smart: micheil: Yeah its cb->Call(context, argc, arv); [03:11] micheil: not sure on the ObjectWrap stuff [03:11] sh1mmer has joined the channel [03:11] micheil: maybe something to talk through with ryah? [03:14] TheEmpath: hi [03:14] TheEmpath: so node.js and oauth.... thoughts? debtaes? beef? tacos? [03:16] _announcer: Twitter: "@HunterLoftis have you seen some of the utility functions in Async.js? It's a nice complement to #nodejs. http://github.com/caolan/async" -- Corey Ballou. http://twitter.com/cballou/status/27102762552 [03:17] _announcer: Twitter: "wow, I like Jade (a haml descendant for node.js)." -- Giles. http://twitter.com/gilesgoatboy/status/27102859366 [03:18] jamesarosen has joined the channel [03:18] _announcer: Twitter: "Is #nodejs was an animal, it'd be a cougar. For the speed and maturity." -- NodeCore. http://twitter.com/nodecore/status/27102988570 [03:20] Me1000 has joined the channel [03:20] dilvie: anybody using CouchApp and node together? [03:21] mbrochh has joined the channel [03:22] TheEmpath: how about node.js and mongo? thoughts on what to use? [03:23] micheil: isaacs: I don't think HandleScope is an issue. [03:23] _announcer: Twitter: "I',m a big fan of @changelogshow , #websockets, #node.js" -- Francisco Reyes. http://twitter.com/pacorro2000/status/27103310916 [03:24] HAITI has joined the channel [03:24] HAITI has joined the channel [03:24] dilvie: TheEmpath: npm install mongodb [03:25] TheEmpath: what is that installing andw here can i find documentation of it? [03:26] jamesarosen has joined the channel [03:27] dilvie: TheEmpath: http://github.com/christkv/node-mongodb-native [03:27] TheEmpath: nifty [03:27] marshall_law_ has joined the channel [03:30] meso_ has joined the channel [03:33] niko has joined the channel [03:37] andrewfff has joined the channel [03:39] ben_alman has joined the channel [03:46] murphy has joined the channel [03:47] bradleymeck has joined the channel [03:47] hassox_ has joined the channel [03:47] _announcer: Twitter: "http://github.com/stephank/orona OMFG NODE.JS GAMES LOL #NODE.JS" -- HELLO I AM RUBY BOTS. http://twitter.com/elotente/status/27105242003 [03:47] murphy has joined the channel [03:49] Tyler has joined the channel [03:49] hassox__ has joined the channel [03:50] codebudo has joined the channel [03:52] quirkey has joined the channel [03:52] TheEmpath: mongoose looks silly good [03:53] codebudo: better than os x? [03:53] mAritz: mongoose also didn't have an update since end of august. also, last time i checked a lot did not work. (and the 26 open issues don't make a strong case for it either.) [03:54] _announcer: Twitter: "GigGITy: http://github.com/creationix/node-git/blob/master/lib/git-fs.js # L310" [fil] -- Benjamin Truyman. http://twitter.com/bentruyman/status/27105746230 [03:56] sh1mmer: ryah: did you ever do anything with zeromq [03:57] niko has joined the channel [03:57] micheil has joined the channel [03:58] murz has joined the channel [03:58] TheEmpath: npm for mongoose is busted [03:59] isaacs: TheEmpath: installs fine. care to be more specific? [03:59] jansc has joined the channel [03:59] TheEmpath: making an issue now [03:59] isaacs: if it's a mongoose bug, you should make it there [04:00] matt_c: sh1mmer: I think the consensus was that making the 0mq bindings work well with libev wasn't as trivial as it might usually be. [04:00] sh1mmer: ok [04:00] TheEmpath: http://github.com/isaacs/npm/issues/issue/280 [04:00] TheEmpath: isaacs: http://github.com/isaacs/npm/issues/issue/280 [04:00] sh1mmer: last time I'd talked with Ryan he said he thought he had a way to do it, but that was a few weeks back [04:00] isaacs: TheEmpath: don't install trees. [04:00] isaacs: TheEmpath: install tarballs [04:00] sh1mmer: ACTION is prepping code to do onna plane [04:00] TheEmpath: then mongooses instructions are bad? [04:01] isaacs: TheEmpath: probably [04:01] TheEmpath: k [04:01] isaacs: npm install mongoose <-- that works fine [04:01] TheEmpath: k [04:02] TheEmpath: looking good! [04:02] TheEmpath: ty [04:02] isaacs: np [04:02] TheEmpath: ACTION loves this chan. [04:02] mAritz: TheEmpath: biggie-orm is 10x better than mongoose, use it! :D [04:03] TheEmpath: shameless promotion or scientific fact!? [04:03] dilvie: what's biggie-orm? [04:03] jwcooper: ^^ [04:03] TheEmpath: ACTION reviews the reaction of the crowd! [04:04] jwcooper: TheEmpath: are you using mongoose off of master, or of the 1.x branch? It looks like it's going through a re-write...significant changes between the two branches. [04:05] twoism has joined the channel [04:05] TheEmpath: npm install mongoose worked. its using http://registry.npmjs.org/mongoose/-/ [04:05] mAritz: dilvie: biggie-orm is a fast fast fast fast redis orm [04:05] TheEmpath: errr [04:05] mAritz: TheEmpath: yep. i have written another redis orm before tim even started biggie-orm... i was pretty bummed about it. but biggie-orm is just better. :) [04:06] TheEmpath: http://registry.npmjs.org/mongoose/-/mongoose-0.0.3.tgz [04:06] TheEmpath: i mean [04:06] mikeal1 has joined the channel [04:07] bentruyman: are there any decent git libraries for node? [04:07] _announcer: Twitter: "Reading the #nodejs docs revives those long lost eureka moments of when I first learned unix." -- Mike Repass. http://twitter.com/mdrcode/status/27106698345 [04:10] sh1mmer: I like Node it makes people happy. [04:10] sh1mmer: Happiness is good. [04:11] mAritz: indeed it does. :) [04:12] bentruyman: sh1mmer: GO BACK TO YOUR BUDWEISER! [04:12] sh1mmer: I HAVE NO BUDWEISER. [04:12] sh1mmer: but I do have my self-repsect. [04:12] sh1mmer: heh [04:13] sh1mmer: This will become and in-joke. I'm sure I owe you a beer now. [04:13] bentruyman: (budweiser is one of our clients, hehe) :-) [04:13] Tim_Smart has joined the channel [04:13] dnolen has joined the channel [04:13] dilvie: Is there a good best practices doc for writing node modules? [04:13] sh1mmer: bentruyman: I know. That's why I apologised for trolling on twitter. [04:13] bentruyman: heh, okay [04:13] TheEmpath: woooow ORM mongo [04:13] TheEmpath: yaaay i wrote one of those in php once [04:13] bentruyman: no, I'm a fan of Blue Moon myself ;-) [04:13] TheEmpath: took me 3 days [04:14] sh1mmer: dilvie: I haven't seen any, but what kind of suggestions are you looking for? [04:14] mikeal1: and…… I'm drunk! [04:14] TheEmpath: ^^ [04:14] sh1mmer: bentruyman: personally I like something IPA or dark like a Porter but it's good in a pinch [04:14] mikeal1: 3 hour dinners are the best [04:14] mikeal1: i'm just sick and tired of west board over-hopped insanity [04:14] sh1mmer: mikeal1: are you counting stout as a meal? [04:15] mikeal1: no, i went to Camino [04:15] mikeal1: 3 courses and 5 cocktails [04:15] dilvie: sh1mmer: I don't know.. just some basic introductory info with some common patterns and pitfalls to avoid. [04:15] mikeal1: good times [04:15] isaacs: wow, the fuse_lowlevel api is a lot like libeio [04:15] sh1mmer: furf took me to some place with a rad selection of Porters in NYC the other week [04:15] mikeal1: isaacs: inorite! [04:15] mikeal1: it's f'ing awesome [04:15] mjr_ has joined the channel [04:15] sh1mmer: dilvie: best advice check out some established libs like connect or express [04:15] isaacs: all the functions, you get a request struct and a bunch of args. [04:15] mikeal1: i looked at it after ry said how good of a match it was [04:16] isaacs: yeah [04:16] dilvie: sh1mmer: That is good advice. =) [04:16] sh1mmer: dilvie: you don't really need the module pattern or other encapsulation since the modules do that already [04:16] sh1mmer: in general you should have some kind of factory method [04:16] isaacs: i was kind of playing with making bindings to fuse's normal api, and like, "man, this sucks" [04:16] isaacs: mikeal: everything blocks all over its face. [04:16] sh1mmer: so that people can create instances of whatever it is you are building [04:16] sh1mmer: singletons are bad [04:17] mikeal1: yeah, it's surprising how many established APIs are a bunch of bad blocking code over evented code [04:17] sh1mmer: after that it's the usual advice from Crock. Capitals for Classes; lower case for objects. [04:17] mikeal1: tcpdump is the same way [04:17] isaacs: mikeal: that also explains why most fuse programs are slow and awful [04:17] _announcer: Twitter: "nodejs for hosting / nodejitsu.com http://htn.to/eFvt1a" [ja] -- Yuji Okazawa. http://twitter.com/yujiorama/status/27107439389 [04:17] isaacs: mikeal: like, lock up your whole system while they do some network bs [04:17] dilvie: sh1mmer: "singletons are bad" is kindof vague advice. [04:17] mikeal1: yup [04:18] sh1mmer: dilvie: don't write modules which force you to have one instances of whatever you get from that module [04:18] mikeal1: if you want a singleton put it in Redis :) [04:18] isaacs: dilvie, sh1mmer: a better way to say it is that require("foo") already IS a singleton [04:18] sh1mmer: dilvie: in general [04:18] mikeal1: oh no, that's what you mean [04:18] mikeal1: yeah, those break [04:18] mjr_: mikeal1: thank goodness somebody went and wrote a non-blocking tcpdump for node [04:18] sh1mmer: helper functions, such as sys, are ok in that style [04:18] isaacs: dilvie, sh1mmer: so require("foo").createSingleton() is dumb. [04:18] mikeal1: require('blah') in one module is not guaranteed to be the same as require('blah') in another module if you're using npm [04:18] isaacs: sh1mmer: it's "util" now. [04:19] mikeal1: so don't use module level singletons [04:19] _announcer: Twitter: "[Js 人 気 情报] RingoJS vs. Node.js: Runtime Values - Hannes Wallnöfer http://bit.ly/9uMvdf # javascript" [de] -- jsMagazine. http://twitter.com/jsMagazine/status/27107536812 [04:19] isaacs: mikeal: actually, it is [04:19] isaacs: mikeal: oh, unless they require different versions. [04:19] mikeal1: mjr_: i know, that guy rocks :P [04:19] sh1mmer: isaacs: well server = require('myawesomeserver').server; // dumb [04:19] _announcer: Twitter: "@ Outsider__ four, nodejs fun. Approximately one month became manjinji. ^ ^" [ko] -- nanhapark. http://twitter.com/nanhapark/status/27107553385 [04:19] isaacs: but if they have the same versions, it is [04:19] mikeal1: i said "guaranteed" [04:19] sh1mmer: isaacs: I've been out for a couple of weeks [04:19] sh1mmer: isaacs: as you've all possibly noticed [04:19] mikeal1: the version requirements of a module you're using are opaque to you [04:20] sh1mmer: one less gobby bastard [04:20] isaacs: hehe [04:21] mikeal1: we should have Tim write up the node best practices [04:21] mikeal1: it'll be like a month of arguments [04:21] isaacs: mikeal: haahhahahah [04:21] isaacs: a [04:21] isaacs: mikeal: cuz we don't ahve enough of those? [04:21] mikeal1: but at the end of it we'll have something good to point people to [04:21] Tim_Smart: Heh. [04:21] isaacs: mikeal: you mean caswell or smart? [04:21] mikeal1: stuff like comma first won't make it in [04:21] mikeal1: Caswell [04:21] isaacs: hahah [04:21] dilvie: sh1mmer: What's your reasoning behind creating factories? [04:22] mikeal1: but we'll have like "don't use module level singletons" [04:22] isaacs: "put commas first" isn't a best practice, it's a style [04:22] isaacs: a best practice is, "have a consistent style, and document it" [04:22] mikeal1: true enough [04:22] sh1mmer: dilvie: there are lots of places that people want to run multiple instances of things in node [04:22] niko has joined the channel [04:22] sh1mmer: dilvie: like lots of http clients [04:22] mikeal1: javascript that isn't in the browser is fairly new [04:22] mikeal1: it would do us some good to write up the obvious things [04:23] sh1mmer: or multiple http servers on multiple ports, one hosting a site another providing admin [04:23] sh1mmer: etc [04:23] dilvie: sh1mmer: You can do that with the closure that modules provide, can't you? [04:23] isaacs: mikeal: i think most of these things are not new, though [04:23] mikeal1: i just hate the word "factory" [04:23] isaacs: mikeal: just same old "don't do bad programming" stuff [04:23] mikeal1: it carries too much baggage [04:23] sh1mmer: dilvie: it's just the way that people have done it so far [04:23] mikeal1: isaacs: in browser js you use singletons all the time tho, you kind of rely on them [04:24] sh1mmer: dilvie: you probably could do it with the module closure, but it's more convention now [04:24] mikeal1: the structural patterns differ [04:24] isaacs: mikeal: you do in node, too, you just call them "modules" and you create them with require() [04:24] mikeal1: it's obvious to me and you at this point but i see new people trip over it over and over again [04:24] dilvie: sh1mmer: That wasn't really a question. You can do it with the closure provided by CommonJS modules. Just create a function level scope with instance variables declared with var. [04:24] MikhX has joined the channel [04:25] mikeal1: we have the same conversations in here every day [04:25] sh1mmer: dilvie: right. and I'm saying it's a node convention to have included modules be factories rather than calling require more than once [04:25] mikeal1: "don't do that, you'll hurt yourself" [04:25] isaacs: mikeal: and, while you can't guarantee that require("foo") is the same thing in all programs if you're using npm, you *can* guarantee that it's the same thing in all points in a single program [04:25] isaacs: mikeal: yeah, i'm all about doc'ing the common questions [04:25] mikeal1: "you don't want to use mongodb, no really, i'm serious, don't" [04:26] sh1mmer: dilvie: also, require is sync so calling it in the main event loop is probably bad [04:26] dilvie: sh1mmer: Ah, that makes sense. I actually think it looks funny when people require stuff in the middle of their module, rather than the top [04:26] mikeal1: would be nice to just point to a page [04:26] sh1mmer: or rather calling it once you have servers serving [04:26] sh1mmer: yeah [04:26] sh1mmer: ok [04:26] dilvie: it kindof feels wrong not to keep all the dependency declaration at the top of the file.. [04:26] sh1mmer: I'm going to find some food before I board [04:26] mikeal1: didn't we talk at one point about have require() throw a warning if you called it after the initial js load? [04:26] sh1mmer: talk to you all later [04:27] dilvie: mikeal1: I missed that. =) [04:27] mikeal1: it's a damn good idea [04:27] dilvie: mikeal1: I really would appreciate an article that goes over this stuff. [04:27] joshpeek: could someone please review my patch: http://github.com/ry/node/pull/343 [04:28] mikeal1: joshpeek: the only person who can commit it is ry :) [04:28] jamesarosen has joined the channel [04:28] joshpeek: i know, looking for feedback though [04:28] mikeal1: oh man, he wants this tho [04:28] mikeal1: he was hunting down these bugs all day yesterday [04:28] mikeal1: man, all these low level changes to networking [04:28] mikeal1: feels like February [04:29] mikeal1: :) [04:29] isaacs: i take back what i said about fuse_lowlevel api being like libeio. it's way nicer than libeio. [04:29] dilvie: mikeal1: If ry gets ruch, moves to a private island, and abandons the project, do we all battle it out like gladiators to determine the new canonical repo? =) [04:29] isaacs: i mean, it can be, because it's not actually doing something. [04:29] dilvie: ruch = rich [04:29] tyfighter has joined the channel [04:29] mikeal1: dilvie: no, the project would just die :) [04:30] mikeal1: if Linus died in the first 2 years of writing Linux you'd have never run it [04:31] mikeal1: it's way way too early in the project to have the "hit by a bus" talk [04:31] ben_alman has joined the channel [04:32] mikeal1: why do i feel like the old open source fogie [04:32] mikeal1: i'm like 27 [04:32] mikeal1: or 28 [04:32] gerred: i'm 22 [04:32] mikeal1: i can't remember [04:32] Aria: Hehe. I'm 29 this week. You're in good company. [04:32] mikeal1: nevermind, pquerna is the old salty open source guy [04:32] gerred: it seems like everybody in startupland is 22-30. [04:33] gerred: at least in ruby/js areas. [04:33] mikeal1: you can't live like this with kids [04:33] dilvie: I think I used linux the year after the first release... [04:33] mikeal1: well, you cna [04:33] dilvie: but I get the point. =) [04:33] gerred: mikeal1: what do you mean, constant binge coding sessions? ;) [04:33] mikeal1: you just have to have enough experience to tell people that you aren't staying past 6 [04:34] gerred: my issue where I'm at is I need to get out of my chair at around 6. if we had a couch... [04:34] gerred: it'd be dangerous. [04:34] mikeal1: dilvie: when about was that? [04:34] mikeal1: my office has a big read couch, because we kinda have to, it's required :) [04:35] gerred: why's that? [04:35] mikeal1: couchone.com :) [04:36] gerred: oh nice. [04:36] gerred: i looked at you guys while you were hiring, I decided my erlang wasn't strong enough atm though. [04:36] gerred: i guess that was cloudant [04:37] mikeal1: we hire developers, we don't worry that much about erlang [04:37] mikeal1: erlang isn't that hard to learn [04:37] mikeal1: but i don't even write erlang at the moment [04:37] mikeal1: we have too much javascript to write [04:37] gerred: it's not my time is just limited. [04:38] mikeal1: Damien is famous as stating multiple times that "he doesn't know erlang" [04:38] gerred: i just ported your example to eventmachine... [04:38] jesusabdullah: Who is Damien? [04:38] gerred: and I like the node.js version better. ;) [04:38] mikeal1: he was Erlang Developer of the year :) [04:38] jesusabdullah: Hah [04:38] mikeal1: damien katz, creator of couchdb [04:38] jesusabdullah: Cute [04:38] tyfighter_ has joined the channel [04:38] gerred: or rather I like your framework better [04:39] mikeal1: gerred: if you're looking for a job tho, send your resume [04:39] gerred: especially conn.storage [04:39] gerred: hmm [04:39] jesusabdullah: JOBS YOU SAY [04:39] jesusabdullah: er, I mean [04:39] Tim_Smart: JOBS, STEVE. [04:39] jesusabdullah: Wat [04:39] jesusabdullah: O NOES [04:39] jesusabdullah: run away [04:39] jesusabdullah: ! [04:40] Tim_Smart: I'm looking for a job, I would be up for relocation too. [04:40] Tim_Smart: (I'm in New Zealand atm) [04:41] jesusabdullah: I have a while before jobbing becomes a serious concern [04:41] jesusabdullah: and I'm not really worried [04:41] jesusabdullah: At some point in my head, though, something broke and now I feel like I should constantly be handing out resumes and Making Connections and scoring interviews and shit [04:41] jesusabdullah: This is what engineering school does to you. [04:42] Tim_Smart: I'm not worried, but I might be in a few months.. [04:43] Tim_Smart: Hot. Finally re-factored the node-gtk to be more awesome. Now I need to re-factor my re-factor. [04:43] jesusabdullah: Yeah, if anything, I need to *stop* looking at work [04:45] mAritz: Tim_Smart: noo, now you need to port it to qt xD [04:45] mAritz: (and then back when you realize that qt is kind of a big clunky mess as well) [04:46] Tim_Smart: Na. Gnome it only getting my love at this stage. [04:46] Tim_Smart: *is [04:46] xdamman has joined the channel [04:46] mAritz: redis > gnome [04:46] mAritz: :P [04:46] _announcer: Twitter: "built a miniapp in node.js. that was crazy fast/easy! like it mucho. will deploy in a day or two." -- Giles. http://twitter.com/gilesgoatboy/status/27109397732 [04:47] SubStack: jesusabdullah: yeah just keep pushing shit to github [04:47] SubStack: best way to show that you'd be a good hire [04:47] jesusabdullah: :) [04:47] jesusabdullah: At this point, I need to [04:47] jesusabdullah: EAT FOOD [04:47] jesusabdullah: >:O [04:47] jesusabdullah: again [04:47] jesusabdullah: I feel like I've eaten a lot of food today :) [04:47] Tim_Smart: SubStack: Am I pushing enough crap? http://github.com/Tim-Smart [04:48] jesusabdullah: later, I should try to hack some more [04:48] niko has joined the channel [04:48] jesusabdullah: Oh, that reminds me [04:48] Tim_Smart: Hah, that can be taken the wrong way quite easily. [04:48] SubStack: Tim_Smart: you can never push enough [04:49] SubStack: just like the rest of life, pushing to github is fundamentally unsatisfying [04:49] SubStack: but you should still do it [04:49] jesusabdullah: SubStack: Fixed the bot, probably :) [04:49] Tim_Smart: You push some, you pull some.. [04:49] jpld: has anyone else seen that new Date() in node is wrong? is that something that must be manually configured? [04:49] hober: in soviet russia, github pushes to you [04:50] jpld: for example, node-repl claims it is the following right now Tue, 12 Oct 2010 04:49:49 GMT [04:50] gerred: is js: the good parts worth reading through or just referring to as I need it? [04:51] SubStack: so that's not what time it is? [04:51] SubStack: ah, it's doing UTC [04:51] SubStack: but reporting GMT [04:52] SubStack: UTC doesn't have daylight savings time [04:52] jpld: yeah… [04:52] jpld: bit bizarre really, i was trying to save a timestamp in my db and i didn't realize it was constantly offset [04:54] Tim_Smart: Date.now() is what I usually use. [04:54] Tim_Smart: v8: Date.now() [04:54] v8bot: Tim_Smart: 1286859250491 [04:54] jpld: that just prints ms since epoch right? [04:54] Tim_Smart: Yeah. [04:54] SubStack: v8: new Date [04:54] v8bot: SubStack: "Tue Oct 12 2010 00:54:28 GMT-0400 (EDT)" [04:54] jpld: ahh you just store that… [04:55] jchris has joined the channel [04:55] Tim_Smart: v8: new Date().toUTCString() [04:55] v8bot: Tim_Smart: "Tue, 12 Oct 2010 04:55:09 GMT" [04:58] dilvie: Connect.createServer(function (req, res, next) <-- what is next? [04:59] astrolin_ has joined the channel [05:00] Tim_Smart: dilvie: Calls the next layer if you aren't sending off an response. [05:00] chrischris has joined the channel [05:00] jesusabdullah: What's a good html parser for node? [05:01] Aria: html5 ;-) [05:02] jesusabdullah: Hmm? [05:03] _announcer: Twitter: "wondering when #heroku #node.js will be ready for production? :)" -- Yevgeniy Viktorov. http://twitter.com/yviktorov/status/27110406701 [05:04] dilvie: Tim_Smart: Thanks. Am I supposed to do something with next inside the function? [05:06] pufuwozu has joined the channel [05:06] _announcer: Twitter: "Getting close to a working ESI reverse proxy in Node.js. It's fast. Really fast." -- Joshua Hull. http://twitter.com/joshbuddy/status/27110629100 [05:07] dilvie: Tim_Smart: Nevermind. Reading "Connect It" on How To Node. I think that'll answer my questions. [05:11] dilvie: Should I call next() only if the request wasn't handled, or should I always call next()? [05:11] Tim_Smart: If the request wasn't handled. [05:12] Tim_Smart: So things like 404 handlers etc can catch it. [05:12] dilvie: Cool. =) [05:13] niko has joined the channel [05:15] Tobsn has joined the channel [05:15] TheEmpath: mongoose.load() doesn't exist anymore :( [05:15] TheEmpath: so how do i aggressively/dynamically load models? :X [05:16] _announcer: Twitter: "Dealing with some NodeJS memory leaks with @ggoodale. Memory leak might be a putting it lightly. More like a deepwater horizon memory spill" -- Jacques Crocker. http://twitter.com/railsjedi/status/27111185101 [05:17] gerred: hmm so how are things like db modules written in a non-blocking way? i guess I could look at the code myself. [05:17] TheEmpath: async functions within async functions [05:17] TheEmpath: only way [05:17] Tobsn: or remove the doorstopper [05:18] TheEmpath: openSocket() { getDatabase() { getTable() { runQuery() {} } } } [05:18] gerred: ahh. [05:18] gerred: okay that makes sense. [05:19] gerred: with each of those being an async callback [05:19] TheEmpath: yep [05:19] TheEmpath: that forces concurrency [05:19] Tobsn: openSocket() { $this->remove( 'doorstopper' ); } [05:19] gerred: getDatabase listening for a db response, getTable listening for that particular response and runQuery...done deal. [05:19] TheEmpath: dunno what this doorstopper thing is [05:19] dilvie: TheEmpath: No events/listeners? [05:19] TheEmpath: ACTION looks at his doorstopper and realize he hasn't fed her in a while. [05:19] Tobsn: its a global variable that keeps functions from being async [05:20] TheEmpath: you could toss events, but listeners are expensive [05:20] gerred: now I just need to get into TDD/BDD with node. ;) [05:20] TheEmpath: when you mass them up and fail to remove them over time [05:21] JimBastard_: gerred: www.vowsjs.org [05:21] TheEmpath: i like async functions :D [05:21] dilvie: TheEmpath: isn't it also expensive to pass the same anonymous callback function again and again? [05:21] TheEmpath: lets look into it! [05:21] Tobsn: TheEmpath: www.doorstopperjs.org [05:21] mbrochh has joined the channel [05:21] mbrochh has joined the channel [05:23] matjas has joined the channel [05:24] Tobsn: hmm 1.5 hours till medal of honor. [05:25] TheEmpath: dilvie: for YahooUtils at least: http://2tbsp.com/node/91#comment-2553 [05:25] Tobsn: btw. does anyone use the DUI? [05:25] Tobsn: digg UI stuff [05:26] Tobsn: they have all their stuff on github.com/digg [05:26] Tobsn: but i never saw anyone using it [05:27] dmcquay has joined the channel [05:31] dilvie: TheEmpath: I was hoping you were going to post a test comparing memory overhead from event listeners to memory overhead from anonymious function callbacks in Node. =) [05:31] TheEmpath: drat! [05:31] TheEmpath: how dare you foil my claim! [05:31] TheEmpath: i'll run a benchmark in a few days [05:31] TheEmpath: i know in flex if you have all kinds of orphaned listeners floating around, the bubbling phase takes super long [05:32] TheEmpath: and over the course of an apps runtime, it bogs down badly [05:32] dilvie: TheEmpath: hehe, yeah, saying "event delegation is faster than attaching individual event listeners per element" is a bit of a no brainer. =) [05:32] dilvie: TheEmpath: oh, you obviously can't just let your event listeners get orphaned. =) [05:33] TheEmpath: you'd be surprised how many people let that one slip by [05:33] dilvie: TheEmpath: That's how you create memory leaks and crash your app every 20 minutes. [05:33] TheEmpath: with javascript as a server side language now, people wont detect orphan issues up front anymore [05:33] TheEmpath: server has way more resources than the client browser [05:33] bpot has joined the channel [05:34] TheEmpath: so you can go longer before hitting issues associated with orphan leaks [05:34] dilvie: TheEmpath: Depends on how much traffic you get, I suppose. =) [05:34] TheEmpath: that too [05:34] TheEmpath: lol [05:34] dilvie: if you're getting 10 hits a day, you might not notice for a month or two. =) [05:34] TheEmpath: lol [05:35] TheEmpath: how quaint! /reboot [05:35] TheEmpath: ACTION feels like he is building Zend Framework in node.js [05:35] jesusabdullah: urgh, node-htmlparser has a frustrating api [05:36] jesusabdullah: and apricot is teh brokens from what I can tell [05:37] rkieffer has joined the channel [05:39] evl has joined the channel [05:39] niko has joined the channel [05:40] HAITI has joined the channel [05:42] dilvie: is it a good idea to define my express app routes in separate files? [05:44] SubStack: good ideas do not exist [05:45] SubStack: I split up my routes like that in my current project though [05:45] jesusabdullah: Hah :D [05:47] quag has joined the channel [05:51] unomi has joined the channel [05:57] _announcer: Twitter: "@tobsn as I'm using node.js with web sockets I can't put it behind lighthttpd or nginx." -- Arnout Kazemier. http://twitter.com/3rdEden/status/27113416311 [05:58] Tobsn: ha. [06:00] mape: Tobsn: haproxy :) [06:00] Tobsn: well i just told him that he can use xcache for internal caching of small objects or a small amount of objects [06:00] Tobsn: since its included into the webserver its a tiny tiny bit faster than memcache [06:00] Tobsn: because there is no tcp/udp connection etc. [06:01] Tobsn: i removed a scratch from my car today :D [06:01] Tobsn: its shiny again. [06:01] quag: how? [06:01] Tobsn: quixx easy repair blah [06:02] Tobsn: it was really just on the surface [06:02] Tobsn: not deep... just the super highest level of paint was irritated... [06:02] Tobsn: but on a large area [06:02] Tobsn: ~8 sq inch probably [06:03] Tobsn: but i found a real scratch on his ass... inch long really deep... [06:03] Tobsn: http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs186.snc4/37663_405106921862_733566862_5034401_2280922_n.jpg [06:03] Tobsn: shiny. [06:03] andrewfff has joined the channel [06:04] quag: Tobsn: good work! [06:04] Tobsn: :D [06:04] Tobsn: took me two weeks, every day ~15min to deep clean that car after i drove with it from chicago to cali [06:04] Tobsn: ~3200 miles [06:05] Tobsn: i bet around ~2000 insects from small to 3 inch long over the whole front [06:05] niko has joined the channel [06:06] Tobsn: http://sphotos.ak.fbcdn.net/hphotos-ak-ash2/hs019.ash2/34333_405678096862_733566862_5046999_7052071_n.jpg [06:06] Tobsn: that was already after the second day [06:07] quag: woah [06:07] quag: you're a killing machine [06:07] quag: :) [06:07] Tobsn: lol yeah [06:07] Tobsn: thats when i drive over the badlands [06:07] Tobsn: seeing mount rushmore etc. [06:08] Tobsn: its all fields everywhere [06:08] Tobsn: tons of insects [06:08] Tobsn: i think that picture is from after we left minnesota... so after south dakota there were like 10 times more insects glued to it [06:13] muhqu has joined the channel [06:15] jansc has joined the channel [06:15] TheEmpath: yessss mongoose implemented and fucntional [06:15] TheEmpath: and abstracted into the model layer [06:15] TheEmpath: ACTION vrooms. [06:17] SamuraiJack has joined the channel [06:17] Tobsn: npm available? [06:17] Tobsn: ah wait no, mongoose worked [06:17] Tobsn: something else was broken [06:18] jakehow has joined the channel [06:18] Tobsn: oh yeah 3rdEdens memcache thing [06:20] bahamas has joined the channel [06:22] TheEmpath: hrmm if i pass a new Mongoose Model back through socket, the Model gets stringified :( [06:24] leeeb has joined the channel [06:29] solidsnack has joined the channel [06:32] niko has joined the channel [06:40] SINPacifist has joined the channel [06:41] dilvie: Are most node apps using connect-auth for authentication? [06:41] SINPacifist: There's no documentation for sys.ingerits and some other sys methods [06:41] yviktorov has joined the channel [06:42] SINPacifist: *sys.inherits [06:42] bahamas: can anyone recommend a module for csv writing? i found ya-csv so far. should i go with it? [06:42] SINPacifist: How can I ask developers to add this methods to docs? [06:43] jpld: dilvie: i was just looking at that too, sadly won't work with npm/node0.2.3 [06:44] Tim_Smart: SINPacifist: http://nodejs.org/api.html#sys-inspect-82 [06:44] tobeytailor has joined the channel [06:46] dohtem has joined the channel [06:46] dohtem has joined the channel [06:47] dilvie: jpld: Are you talking about connect-auth or express-auth? [06:47] jpld: dilvie: actually, neither seem happy to install on node@0.2.3/npm@0.2.3 [06:48] SINPacifist: Tim_Smart: there's no a single word about sys.inspect or any developer's contacts [06:48] SINPacifist: Is google groups the only way to send a message to developers? [06:48] dilvie: connect-auth@0.1.3 =ciaranj installed latest remote [06:48] jpld: dilvie: right, but try to install it… [06:49] jpld: ERR! Error: connect-auth@0.1.3 not compatible with your version of node [06:49] Tim_Smart: SINPacifist: The API has an entry for sys.inspect, I linked you to it... [06:49] ajsie: is there a way to create full resource route like in Rails? [06:49] SINPacifist: Tim_Smart: yes, but I found that socket.io developers using sys.inspect [06:49] dilvie: jpld: oh, nevermind - I'm on node 0.2.0 [06:49] SINPacifist: Tim_Smart: sys.inherits, sorry [06:50] EyePulp has joined the channel [06:50] SINPacifist: Tim_Smart: and could not find any docs for it [06:50] jpld: dilvie: if only i could go backwards… (0: [06:50] SINPacifist: Tim_Smart: sys.inspect(sys.inherits) says that's a function [06:50] SINPacifist: Tim_Smart: and that's all [06:50] dilvie: how do I upgrade node? [06:50] Tim_Smart: SINPacifist: Ah. It isn't recommended to use that. It is used internally. [06:51] dilvie: better question - do I want to upgrade node? =) [06:51] SINPacifist: Tim_Smart: I think there should be a notice about it)) Thanks [06:51] jpld: dilvie: not if you want to use connect_auth (0: [06:51] SINPacifist: Tim_Smart: for help [06:51] Tim_Smart: SINPacifist: All it does is perform basic prototypical inheritance. [06:53] jacobolus has joined the channel [06:53] Tim_Smart: SINPacifist: http://github.com/ry/node/blob/master/lib/util.js#L382-390 [06:54] zemanel has joined the channel [06:54] Tim_Smart has joined the channel [06:54] deoxxa: does hton/ntoh/htons/ntohs/etc exist somewhere in v8 or node? [06:55] ajsie: is there a cucumber for node.js? [06:55] ajsie: or an equivalent? [06:57] SINPacifist: Tim_Smart: thanks once again) [06:58] niko has joined the channel [06:58] breccan_ has joined the channel [06:58] ivanfi has joined the channel [07:00] Anti-X has joined the channel [07:01] chetan51 has joined the channel [07:02] ajsie: why is JSpec no longer supported: http://github.com/visionmedia/jspec [07:02] fbits has joined the channel [07:03] sean` has joined the channel [07:03] chetan51: are there any official / quotable benchmarks for Node.js performance, compared to Apache and such? [07:05] aubergine has joined the channel [07:07] Anti-X: ajsie, there is jasmine [07:07] Anti-X: which sort of took over from it [07:07] ajsie: Anti-X: but no documentation [07:07] ajsie: and don't tell me to read the source code :) [07:07] Anti-X: read the source code :p [07:07] Anti-X: no i think it's fairly new [07:07] Anti-X: it'll come [07:08] _announcer: Twitter: "Me likes the nodecasts initiative http://is.gd/fYfjc by @emerleite. #nodejs #radar" -- Raphael Stolt. http://twitter.com/raphaelstolt/status/27116775479 [07:08] Anti-X: the main problem is that it's missing the __global__ docs [07:08] Anti-X: that's the one you need!! [07:08] Anti-X: to use it [07:09] Anti-X: but i thought there was a list of commands somewhere [07:09] Anti-X has joined the channel [07:09] Anti-X: bluh [07:10] virtuo has joined the channel [07:10] jetienne has joined the channel [07:11] Max_Might has joined the channel [07:16] overra has joined the channel [07:16] JimBastard has joined the channel [07:19] Tim_Smart: Hmm getting an idiomatic way to map glib signals to ecmascript is interesting,,, [07:19] _announcer: Twitter: "node.js remote debugging in eclipse http://groups.google.com/group/nodejs/browse_thread/thread/10cfb1465f40436d?pli=1" -- Bumphrey Hogart. http://twitter.com/leftieFriele/status/27117279865 [07:21] ph^ has joined the channel [07:22] mbrochh has joined the channel [07:24] niko has joined the channel [07:25] ph^ has joined the channel [07:27] markwubben has joined the channel [07:29] Mobbit has joined the channel [07:29] pufuwozu has joined the channel [07:32] daglees has joined the channel [07:34] evl has left the channel [07:34] _announcer: Twitter: "Doesn't Open Source just rock! Had a problem with MongoDb driver for #nodejs in the evening and by the morning it was all solved." -- Andris Reinman. http://twitter.com/andris9/status/27117947134 [07:34] chetan51: Node official benchmarks? Anyone? [07:35] Tim_Smart: chetan51: Node usually only benchmarks against itself. [07:35] _announcer: Twitter: "rabbit.js for node-rabbit-socket.io things - nodejs | Google Groups http://monk.ly/aZ5Hdc cc @sogrady" -- James Governor. http://twitter.com/monkchips/status/27117983955 [07:35] Tim_Smart: There isn't any 'official' comparative benchmarks around. [07:37] chetan51: So is there no way to prove that Node is faster than other server platforms? [07:38] pufuwozu has joined the channel [07:41] stephenjudkins has joined the channel [07:42] JimBastard: chetan51: node has flux_capacitor.cc [07:42] JimBastard: i dont think that is in dispute [07:43] pufuwozu has joined the channel [07:43] masch: JimBastard: O.o ryl? nice! [07:44] JimBastard: yeah, we've been able to respond to http requests here before they actually exist. been causing a major race condition [07:45] masch: xD [07:45] masch: awesome [07:45] JimBastard: plutonium.js [07:46] JimBastard: im debating doing the nodejitsu how it works section by hand or in mspaint [07:46] JimBastard: maybe i can make it a rage comic [07:47] aubergine_ has joined the channel [07:49] masch: JimBastard: use mspaint. the rage comes by itself [07:49] pufuwozu has joined the channel [07:49] niko has joined the channel [07:49] JimBastard: masch: i did a whole series of mspaint comics once, they went well [07:49] JimBastard: the internet liked it for a while lol [07:49] masch: skill0r [07:49] _announcer: Twitter: "Node.js as the persistence layer what is good I guess. / CouchDB and I compared MongoDB - Masatomo Nakano Blog http://htn.to/yPD4MQ" [ja] -- 河合 太郎. http://twitter.com/inuro/status/27118604543 [07:50] JimBastard: http://s478.photobucket.com/albums/rr145/JimBastard/ [07:50] JimBastard: ahaha [07:50] JimBastard: old stuff [07:50] teemow has joined the channel [07:51] sideshowcoder has joined the channel [07:51] simme has joined the channel [07:54] _announcer: Twitter: "In return the node.js SJIS, node-iconv Spending. Note Note http://github.com/bnoordhuis/node-iconv" [ja] -- goodoo. http://twitter.com/goodoo/status/27118792003 [07:54] _announcer: Twitter: ""CouchDB QueryServer synchronization of IO interfaces, but are designed for, node.js of Non-Blocking I / O base asynchronous SSJS have Damejan Kitara" hum / 2010-01-24 - We ... http: / / htn.to/4FvsyV" [ja] -- 河合 太郎. http://twitter.com/inuro/status/27118826864 [07:55] pufuwozu has joined the channel [07:58] ajsie: Anti-X: this look promising: http://vowsjs.org/ [07:58] ajsie: Anti-X: you can use it with cucumber: http://github.com/nodejitsu/kyuri [07:59] Anti-X: is the site slow? [07:59] Anti-X: oh there it is [07:59] SubStack: vows is pretty verbose [07:59] _announcer: Twitter: "Carsonified : Around the Web: Node.JS Goodness, Amit on Humble Pied, & Riak 0.13... http://inblogs.org/go/dxc29" -- inBlogs. http://twitter.com/inBlogs/status/27119039607 [08:00] SubStack: from that webpage anyhow, I've only used expresso [08:00] SubStack: I like not having to name stuff that isn't important [08:00] Anti-X: i use nodetest for node [08:00] Anti-X: perty neat [08:00] pufuwozu has joined the channel [08:01] ajsie: SubStack: yeah .. =) [08:02] hjjaa has joined the channel [08:02] ajsie: Anti-X: you got github link? [08:02] ajsie: cant find it [08:03] Nohryb has joined the channel [08:03] Anti-X: it's on npm [08:03] MikhX has joined the channel [08:03] ajsie: i have to read documentation [08:03] JimBastard: vows is pretty easy once you figure it out [08:03] Anti-X: oh it's not on npm [08:03] Anti-X: hm [08:03] hjjaa has left the channel [08:04] Anti-X: where did i get it from [08:04] Anti-X: hehe [08:04] ajsie: JimBastard: i like the object literal structure in Vows [08:05] ajsie: good documentation too [08:05] ajsie: compared to others [08:05] JimBastard: ajsie: aye. have you seen http://github.com/nodejitsu/kyuri ? [08:05] ajsie: JimBastard: yeah .. thought about using it with vows [08:05] pufuwozu has joined the channel [08:05] ajsie: JimBastard: you got something more to recommend? =) [08:06] Anti-X: i think nodetest is called ntest [08:06] ajsie: im new to node and want to know my stack environment [08:06] ajsie: okay [08:06] JimBastard: ajsie: there is a wiki page [08:06] JimBastard: http://github.com/nodejitsu/ [08:06] ajsie: yeah node modules .. have looked it it [08:06] Anti-X: http://github.com/technoweenie/ntest [08:06] JimBastard: http://github.com/marak/ [08:06] JimBastard: http://github.com/cloudhead/ [08:06] JimBastard: http://github.com/indexzero/ [08:06] ajsie: great =) [08:06] JimBastard: also [08:06] JimBastard: http://github.com/creationix [08:07] JimBastard: http://github.com/visionmedia [08:07] ajsie: i see your strategy [08:07] MikhX has joined the channel [08:07] Anti-X: ignore that link i posted, it's not that [08:07] Anti-X: strange [08:07] ajsie: Anti-X: okay [08:07] Anti-X: can't find it [08:08] Anti-X: oh it's called nodeunit [08:08] Anti-X: haha [08:08] Anti-X: that's why [08:08] Anti-X: caolan's [08:08] ajsie: yeah found it [08:08] sechrist: -node- UNIT [08:08] ajsie: just looked at it before [08:09] jblanche has joined the channel [08:09] ajsie: but vows look so amazing =) [08:10] Anti-X: the difference is that vows is behaviour driven [08:10] Anti-X: which is fine, i like that [08:10] ajsie: yeah [08:10] Anti-X: but you may need nodeunit if your code is not behaviour oriented :p [08:11] Anti-X: i dunno what i'm on about [08:11] ajsie: but isnt everything about behaviour [08:11] Anti-X: it's early [08:11] pufuwozu has joined the channel [08:11] Anti-X: 10 am is like death to a programmer [08:11] ajsie: i should write my libraries in a behaviour driven aproach [08:12] Anti-X: definately [08:13] rra_ has joined the channel [08:13] Anti-X: but a behaviour oriented way does not take into account that your function throws exceptions on horrible errors, because that's not behaviour (on good/bad input), it's a systems failure [08:13] daglees has joined the channel [08:13] Anti-X: i don't know, it may take it into account, but i haven't seen that on other behaviour testing things [08:13] ajsie: yeah [08:14] ajsie: how do you guys set up your development environment? [08:14] ajsie: local on Mac/Windows/Linux? virtual with VirtualBox/Vmware? remote with VPS hosting? (i want to find a remote hosting for managing my VPS) [08:15] Anti-X: as long as i have git and komodo edit available, i'm good wherever i am [08:15] bronb has joined the channel [08:15] Anti-X: and internet to get my code down [08:15] _announcer: Twitter: "Playing around with node.js reminds me how much I hate JavaScript's lack of sensible builtins, like format strings." -- Jeremy Grosser. http://twitter.com/synack/status/27119736568 [08:16] ajsie: Anti-X: but the environment you download your git repo to have to suit your needs [08:16] ajsie: eg. ruby/rails, javascript/node, all gems/npm packages etc [08:16] niko has joined the channel [08:16] Anti-X: not necessarily [08:16] ajsie: okay .. you just edit the source code then push the changes up again? [08:17] Anti-X: i can program hundreds of line of code without running it, because i have a rough idea in my head how it will work out.. usually once i run it i just have to fix 3-5 small bugs [08:17] christophsturm has joined the channel [08:17] Anti-X: like typos and stuff [08:17] ajsie: Anti-X: but if you write an application from scratch [08:17] pufuwozu has joined the channel [08:17] Anti-X: that's even better [08:17] ajsie: how do you set up everything? [08:17] Anti-X: because then i have it all in my head [08:17] ajsie: :) [08:17] _announcer: Twitter: "That said, node.js is awesome because it lowers the barrier to entry for server-side programming while keeping everything cleanly async." -- Jeremy Grosser. http://twitter.com/synack/status/27119829011 [08:19] Anti-X: remember that you can't run it before you code it, and as long as you know fairly well how it's going to be, you can code _a lot_ before you test anything at all, because you know you'll just need to fix some names or arguments that you forgot, or stuff like that... the main work of writing all the code will be done, and can be done "anywhere" [08:21] _announcer: Twitter: "1 st unconference at Mejsla success.Topics explored:cuke4duke,node.js, html5,death 2 mvn,CoffeeScript,TDD javascript,Kanban vs Scrum,DVCSs" -- Lars Westergren. http://twitter.com/wgren/status/27119978137 [08:22] pufuwozu has joined the channel [08:22] Anti-X: when i wrote http://github.com/torvalamo/htmlaudio i wrote the whole simpleaudio.js two days before i even ran it [08:23] astrolin has joined the channel [08:23] Anti-X: and i haven't ran audio.js yet, but it's still almost done [08:23] ajsie: okay [08:23] Anti-X: ;) [08:23] ajsie: i have to think what is the best effective way for me to code and push it up [08:24] _announcer: Twitter: "@ Koichik it a shame Oh! I'm easy to get into the event Wednesday is at work. . I'm looking forward to the end of nodejs seeing you at drinking!" [ja] -- 西山 雄也/Nishiyama Yuya. http://twitter.com/nsyee/status/27120107262 [08:24] astrolin has joined the channel [08:27] unomi has joined the channel [08:27] pufuwozu has joined the channel [08:30] derferman has joined the channel [08:30] saikat has joined the channel [08:30] Aamir has joined the channel [08:33] pufuwozu has joined the channel [08:34] zomgbie has joined the channel [08:36] xraid has joined the channel [08:39] FransWillem has joined the channel [08:41] pufuwozu has joined the channel [08:43] caolanm has joined the channel [08:46] pufuwozu has joined the channel [08:47] _announcer: Twitter: "For now, note. / WebSocket aim for the "real Web"! Node.js first shock and the Prosperous Future WebSocket - @ IT http://htn.to/wEFsUH" [ja] -- 中村英都. http://twitter.com/Hideto_N/status/27121175814 [08:49] _announcer: Twitter: "Spoke about the report he heard on the # codefest NodeJS. More desire to understand the technology ..." [ru] -- Maxim Denisov. http://twitter.com/global_max/status/27121229871 [08:50] xla has joined the channel [08:51] _announcer: Twitter: "postgres.js, a pure postgresql driver for node.js, alpha released http://tri.mu/04m #postgresql #js #incredible" -- Piedvache Hervé. http://twitter.com/footcow/status/27121321822 [08:51] pufuwozu has joined the channel [08:52] _announcer: Twitter: "MarkUp lets you draw on any website, lovely bookmarklet. Built in node.js. http://markup.io" [nl] -- Ruben Bos. http://twitter.com/rubenbos/status/27121371935 [08:53] murphy has joined the channel [08:53] murphy has joined the channel [08:56] benreesman has joined the channel [08:56] Aamir has left the channel [08:57] pufuwozu has joined the channel [08:58] olegp has joined the channel [08:58] path[l] has joined the channel [09:00] [[zz]] has joined the channel [09:00] jpld has joined the channel [09:01] Nohryb has joined the channel [09:01] pufuwozu has joined the channel [09:02] nsm has joined the channel [09:03] TomY has joined the channel [09:06] _announcer: Twitter: "And Tb @ ncorreia adepti node.js do?" [hu] -- joão machado. http://twitter.com/joao_machado/status/27121996399 [09:06] TomsB has joined the channel [09:07] pufuwozu has joined the channel [09:10] nsm has joined the channel [09:11] mytrile has joined the channel [09:12] pufuwozu has joined the channel [09:12] unomi has joined the channel [09:13] niko has joined the channel [09:14] jetienne: hmm what is the name of the js framework with no code ? the one from jsconfeu ? [09:15] ajsie: is joyent in the same leagues as heroku? [09:15] ajsie: their approach seems different .. like a better VPS .. not like heroku that seems to be managed hosting [09:16] jetienne: ajsie: i experienced heroku this weekend. it is easy and fast to setup. but may rapidely become quite costy [09:16] jetienne: ajsie: i dunno for joyent [09:17] ajsie: yeah i've used heroku .. great service [09:17] ajsie: but want to understand joyent and see if it's something for me [09:18] jetienne: ajsie: there is a #joyent channel if you want [09:18] ajsie: yeah i know but i rarely get response =) [09:18] ajsie: i have NEVER got a response to be precise [09:19] pufuwozu has joined the channel [09:20] unomi has joined the channel [09:22] mbrochh has joined the channel [09:22] hdon has joined the channel [09:24] pufuwozu has joined the channel [09:25] MikhX has joined the channel [09:26] MikhX has joined the channel [09:27] _announcer: Twitter: "Created a new issue for #nodeunit. http://github.com/caolan/nodeunit/issues/issue/26 Any #nodejs guy out there with an idea? /cc @caolan" -- Kadir Pekel. http://twitter.com/kadirpekel/status/27122974694 [09:28] boaz_ has joined the channel [09:28] unomi has joined the channel [09:28] aubergine has joined the channel [09:29] pufuwozu has joined the channel [09:29] deoxxa: ok, i'm just banging my head on a wall now [09:29] aubergine has joined the channel [09:29] deoxxa: what would be the fastest way to take the buffer Buffer('\x01\x00') and get the integer 100 from it? [09:30] mikeal1 has joined the channel [09:30] deoxxa: this is an operation that will be done potentially tens of thousands of times per second, so it needs to be pretty quick [09:31] deoxxa: actually, i'm just doing this in completely the wrong way, never mind me [09:31] deoxxa: ACTION goes back to attacking his wall [09:32] Jonasbn_ has joined the channel [09:33] antono has joined the channel [09:34] pufuwozu has joined the channel [09:34] delapouite has joined the channel [09:34] sideshowcoder has joined the channel [09:39] pufuwozu has joined the channel [09:40] digitalspaghetti: any nodejitsu people around?> [09:45] pufuwozu has joined the channel [09:45] daglees has joined the channel [09:46] holydevil has joined the channel [09:48] robotarmy has joined the channel [09:48] ajsie: is it possible to register in https://no.de/ [09:48] ajsie: i dont get what a coupon is? [09:49] omarkj has joined the channel [09:52] pufuwozu has joined the channel [09:53] ajsie: could anyone donate a node account on Heroku to me? I'd glad to pay for it =) [09:54] agnat has joined the channel [09:56] Jonasbn_: ajsie: I was actually just about to look into how to get a Heroku node account. Let me know if there's and easy solution! :) [09:57] digitalspaghetti: Heroku no longer offer the node service to new customers, only to existing who signed up before a certain date [09:57] digitalspaghetti: it's still in alpha [09:57] pufuwozu has joined the channel [09:57] ajsie: digitalspaghetti: yeah i know [09:57] ajsie: im desperate [09:58] ajsie: i pay!! [09:58] digitalspaghetti: you might be better off with something like this: http://github.com/nodejitsu/node-cloudservers [09:58] digitalspaghetti: rackspace cloudservers [09:58] ajsie: how does it work [09:59] digitalspaghetti: well it's just a cloud server instance, kind of like ec2, so just do something like this: http://blog.nodejitsu.com/nodejs-cloud-server-in-three-minutes [09:59] _announcer: Twitter: "@hugoahlberg There's also one in #nodejs here http://github.com/sbrekken/Rumpetroll #yay" -- Simen Brekken. http://twitter.com/simenbrekken/status/27124533687 [10:02] MattJ has joined the channel [10:02] ajsie: no one that want to sell their account? =) [10:02] pufuwozu has joined the channel [10:04] Kami_ has joined the channel [10:07] hellp has joined the channel [10:08] pufuwozu has joined the channel [10:10] JimBastard: ajsie: why do you need public hosting soo badly right now? [10:10] JimBastard: do you have an application ready to be rolled out? [10:11] ajsie: JimBastard: just want to test =) [10:11] JimBastard: ajsie: test locally [10:11] ajsie: yeah [10:12] JimBastard: you can sign up @ www.nodejitsu.com if you'd like. we'll be public end of month [10:12] ajsie: i already have [10:12] ajsie: first I didn't get the page [10:12] ajsie: so you are providing hosting for node apps? [10:13] JimBastard: aye [10:13] ajsie: what is the vision [10:13] ajsie: or concept [10:13] JimBastard: 20/20 [10:13] ajsie: like heroku/joyent or more like slicehost/rackspace [10:13] JimBastard: i can't get into too many details, but it will be the best most awesome thing ever [10:13] ajsie: 20/20? [10:13] JimBastard: like heroku [10:13] ajsie: okay [10:14] ajsie: can't tell anything? [10:14] JimBastard: but with a few things that heroku and joyent dont do at all [10:14] ajsie: oh [10:14] ajsie: interesting [10:14] stride: unicorns? great! :> [10:14] JimBastard: for instance, if you are a development shop or if you work for clients [10:14] JimBastard: we'll have tools to help manage that [10:14] JimBastard: like automated billing and what not [10:15] ajsie: JimBastard: i c [10:15] JimBastard: other things as well though [10:15] ajsie: will it be beta then? [10:15] JimBastard: ? [10:15] ajsie: or official launch [10:15] ajsie: at the end of the month [10:15] JimBastard: i think we arent going to charge people for a while, so i guess thats beta [10:16] JimBastard: we've been testing since april or so [10:16] pufuwozu has joined the channel [10:16] ajsie: okay [10:16] ajsie: i think i get one of your features [10:16] ajsie: you are the guys of prenup and kyuri [10:16] JimBastard: aye [10:16] ajsie: you are going to integreate those frameworks on it! [10:16] ajsie: :) [10:17] JimBastard: something like that! you'll have to wait to see! :-) [10:17] ajsie: yeah [10:17] JimBastard: if you are an open-source application developer, you'll really like some of the stuff we will be doing [10:17] ajsie: yeah i am very focused on OS-app develeopment [10:18] ajsie: so bad of you to trigger my expectations and impatience [10:18] ajsie: i want christmas! [10:18] JimBastard: we are working on some things that can help proliferate and even help monetize OSS apps [10:18] JimBastard: node apps that is! [10:19] SubStack: this is relevant to my interests [10:19] JimBastard: ;-) [10:19] ajsie: i read your prenup [10:19] JimBastard: big hint : irc friends are gonna the best treatment for this app marketplace :-) [10:19] SubStack: being that I have a big OSS app that is also written in node [10:19] ajsie: first page .. maybe you mean billing automation =) [10:20] SubStack: but there is other stuff todo with that [10:20] ajsie: JimBastard: my biggest "issue" is right now development and production envionrment are 2 different places [10:21] pufuwozu has joined the channel [10:21] _announcer: Twitter: "Node.js before you finished down when used without permission" [ja] -- ぐらンダー武蔵. http://twitter.com/grapswiz/status/27125626081 [10:21] ajsie: eg. production is no brainer with Heroku .. but locally I have to install everything .. using chef/vagrant etc .. its a burden really .. not sure you guys are going to fix that .. but just wanted to share my thoughts [10:23] JimBastard: ajsie: we actually have been thinking about that as well [10:23] Gruni has joined the channel [10:23] JimBastard: the jump to actually shipping binaries for OS's though is a bit far away [10:23] JimBastard: but eventually you could download the nodejitsu env [10:24] JimBastard: thats not this year though [10:24] ajsie: cool [10:24] mape: ACTION burns Drupal to the ground [10:24] mape: Want to add a class to a automated wrapper div? Jump through 13 hoops [10:25] JimBastard: oofa [10:25] ajsie: JimBastard: What do you think about Heroku's and Joyent's node competition? [10:25] JimBastard: ajsie: in what regard? [10:25] ajsie: why would people choose you before them? [10:25] Anti-X: is there a browscap thingy thangy for node? or even just a bullet proof simple one for the <10 largest browsers [10:25] JimBastard: its a completely different class of service [10:25] Anti-X: i just need browser name and version (and os) [10:25] ajsie: especially Heroku with lots of future addons for node [10:25] JimBastard: our support and agility will be unbeatable [10:26] ajsie: i c [10:26] JimBastard: ive got bad news about heroku ajsie , their node hosting is dead until next year [10:26] ajsie: i bet you have encoded some agile methods in a framework ready to use for developers [10:26] JimBastard: they are a ruby company at heart [10:26] pufuwozu has joined the channel [10:26] ajsie: JimBastard: yeah i know [10:26] ajsie: how about joyent? [10:26] ajsie: they are node company at heart! [10:27] Anti-X: a cow in buffalo's clothing [10:27] JimBastard: joyent is a great company. if you have the budget to get joyent to consult at your company and do all your node hosting and assist with your application design, you should [10:27] JimBastard: if you want to get the CEO and CTO answering your support tickets personally, you should do nodejitsu [10:28] JimBastard: making node hosting work is our number one priority [10:28] JimBastard: nothing else is more important to us, then the node hosting working right [10:28] ajsie: sounds like you have thought a lot about the developers .. looking forward to it [10:28] ajsie: cool [10:28] JimBastard: :-D [10:29] Anti-X: you're talking about just drop in .js files and make them run, right? because i don't see how it's hard to make node itself run on a vps, say [10:29] chapel: what kind of prices JimBastard ? [10:29] micheil: although, naturally, JimBastard is biased towards his own services [10:29] JimBastard: chapel: comparable with heroku [10:29] JimBastard: micheil: i dont think its unfair to say that nodejitsu is the most focused on node cloud hosting then any of the other companies? [10:30] JimBastard: joyent has a huge stake in enterprise, and heroku is focused on ruby [10:30] JimBastard: i dunno, im sleepy [10:30] chapel: honestly I think a bw and process based price model would be good, ie charge for bw used and how many processes you have running, but ignore memory usage [10:30] micheil: yeah, but joyent are doing heaps of stuff to ensure node works [10:30] JimBastard: micheil: of course [10:30] chapel: its crazy how big node has become [10:31] chapel: I know ruby had a huge rise as well [10:31] digitalspaghetti: JimBastard: you work at nodejitsu then? [10:31] chapel: but the hosting side of things didn't hit as soon [10:31] chapel: ceo right? [10:31] ysynopsis has joined the channel [10:31] JimBastard: digitalspaghetti: aye, founder [10:31] JimBastard: with indexzero [10:31] digitalspaghetti: cool, i'm checking out your node-cloudserver stuff [10:31] chapel: ah [10:31] chapel: I wondered [10:32] pufuwozu has joined the channel [10:32] digitalspaghetti: i was going to look at EC2, but this looks much simplier from a deploy script point of view [10:32] mr_daniel: I want to write an inherit-method similar to sys.inherits (http://github.com/ry/node/blob/master/lib/util.js#L382), but for the browser side. Unfortunately JS engines differ. [10:32] chapel: how are you planning scalability? [10:32] JimBastard: chapel: use web scale 2.0 [10:33] mr_daniel: for example: some have Object.create, others don't; some allow access to __proto__, some don't [10:33] digitalspaghetti: i need to be able to deploy node + my app + couchdb 'database' of designs + some initial data [10:33] micheil: mr_daniel: just look in git history [10:33] JimBastard: digitalspaghetti: yeah exactly! i think we will be using couchone for our couch hosting [10:33] mr_daniel: I know how to check if Object.create is available: if(Object.create==='function'), but how can I check if __proto__ is available [10:33] chapel: I have a couchone instance [10:33] JimBastard: unless someone wants a dedicated / local one [10:33] chapel: seems nice [10:33] mr_daniel: micheil: does the history shows how to check for __proto__ availablity? [10:33] chapel: though I haven't used it much yet [10:34] digitalspaghetti: JimBastard: yea, looking at cloudserver, inter-server communication is free [10:34] digitalspaghetti: so i think i might set up one machine for the couchdb instance, one for our client apps [10:34] micheil: mrsort of, one sec. [10:35] JimBastard: digitalspaghetti: ec2 is a little cheaper then rackspace, but rackspace is pretty amazing [10:35] micheil: mr_daniel: or, just steal from another JS librayr [10:35] JimBastard: support is very very good [10:35] ajsie: JimBastard: its like 2 weeks from now [10:35] digitalspaghetti: JimBastard: yea, it's the support + the API looks much simplier [10:35] JimBastard: ajsie: ? [10:35] ajsie: JimBastard: from your public release [10:35] digitalspaghetti: EC2 is a bit of a pig, especially with using Java for the ec2 tool set [10:35] JimBastard: ajsie: well its a good thing broodmother has over 200 passing tests! [10:36] micheil: rackspace wouldn't take my service because I'm still < 18 [10:36] ajsie: :) [10:36] chapel: for simple cheap hosting, I have been using webfaction [10:36] JimBastard: im hacking away at the client website for now [10:36] chapel: enjoying it [10:36] ajsie: yeah good website is a must! =) [10:36] JimBastard: if you look at the github ajsie , you'll see most of the pieces of our stack are open and have good test coverage [10:36] digitalspaghetti: chapel: i was using webfaction too, but try running a django site + node, they kept killing my node stuff [10:36] JimBastard: we are using almost all those projects live [10:36] chapel: lol yeah digitalspaghetti [10:36] micheil: mr_daniel: I'm gunna be a little slow replying. for some reason everything at the moment that should be hitting memory on this box is hitting disk. [10:36] digitalspaghetti: kept pushing over the memory limits [10:36] chapel: have to watch node, since it is a memory hog [10:37] micheil: node isn't a memory hog. [10:37] chapel: well [10:37] chapel: it can be [10:37] chapel: like anything [10:37] digitalspaghetti: chapel: especially with using express + YUI :D [10:37] JimBastard: res.end() [10:37] digitalspaghetti: i use the YUI stuff from davglass to do parsing [10:37] micheil: I can parse like 1 GB data / s with it and it handles with ~50-100Mb. [10:37] digitalspaghetti: (http://tanepiper.com) [10:37] digitalspaghetti: micheil: yea, the problem is on my webfaction i also have a django site with apache + mod_python [10:38] chapel: sorry, wasn't meaning to say node was bad, just saying that in a restricted environment, it is easy to overextend your memory limit using node [10:38] digitalspaghetti: that uses a lot of memory as well [10:38] micheil: node's memory usage is fine. [10:38] mr_daniel: micheil: maybe your OS is using the swap parition right know? [10:38] pufuwozu has joined the channel [10:38] micheil: mr_daniel: nawh, just too much open. [10:38] digitalspaghetti: node would be < 60mb, but combined everything kept going over 170mb [10:38] chapel: micheil: well with the basic plan at 80mb, you have to watch it [10:38] ajsie: JimBastard: i like that you have used Vows and Kyuri to test [10:39] chapel: I just had a simple script using jsdom and http-agent to parse a site, and it hit 40mb [10:39] ajsie: JimBastard: maybe you will be the next "Heroku" but for Node =) [10:39] JimBastard: ajsie: thats the idea! [10:39] digitalspaghetti: chapel: i suspect it's using DOM on the server side [10:39] digitalspaghetti: it's not memory optimised [10:39] chapel: yes [10:39] chapel: its not [10:39] chapel: :) [10:39] pngll has joined the channel [10:39] chapel: not specific to node [10:40] chapel: if it was anything else, doubt it would have been above 20mb [10:41] micheil: DOM is expensive in node still [10:41] micheil: if you don't use DOM implementations, node is fine. [10:41] micheil: it's the DOM libraries that push it beyond [10:42] micheil: mr_daniel: http://github.com/ry/node/blob/v0.1.92/lib/sys.js#L232-238 [10:42] chapel: in the future, would there be cheaper ways to parse dom? [10:42] micheil: should work in a browser [10:43] micheil: chapel: write a DOM implementation in C/C++ like chrome, firefox, safari, etc use, then yes [10:43] digitalspaghetti: chapel: there is no real proper implementaion of DOM in C++ [10:43] micheil: but until then, no. [10:43] chapel: or should I do string parsing instead of dom parsing? [10:43] micheil: definitely [10:43] micheil: if possible. [10:43] chapel: hmm, anything you recommend? [10:44] micheil: mustache, jade, haml? [10:44] chapel: considering what I want to build, Im going to have to queue jobs [10:44] micheil: all of those are pretty light weight. [10:44] chapel: eh [10:44] chapel: not for rendering [10:44] chapel: for parsing/scraping [10:44] micheil: ah [10:44] micheil: in which case your only real choice is probably jsdom. [10:44] chapel: already using it [10:44] micheil: or, take up the code gloves and write a C implementation. [10:45] ajsie: JimBastard: have you thought about developers using MongoDB/CouchDB .. eg. in Heroku we can just use the addons .. will there be any kind of support/abstractions of Database in nodejitsu? [10:45] pufuwozu has joined the channel [10:45] chapel: heh, outside of my scope :( [10:45] chapel: at least atm [10:45] micheil: then you'll have to do with jsdom. [10:45] JimBastard: ajsie: something similiar, yes [10:45] ajsie: okay great [10:46] _announcer: Twitter: "Head to BKK for urgent meeting, Node.js for distributed system and large scale products." -- Neung Poowanai. http://twitter.com/taneung/status/27126957599 [10:46] ajsie: JimBastard: RabbitMQ, Sendgrid then? Support or "i am on my own"? [10:47] chapel: so my idea for my app is to queue up jobs, scrape the site as there is a queue, and put all the data into couchdb, at which time have an active renderer that takes the data and does something with it [10:47] JimBastard: ajsie: if you want it, we'll add it [10:47] JimBastard: as long as you are paying, lol [10:47] _announcer: Twitter: "A multi-user experiment with Node.js input and physics calculation, connected to HTML5 canvas: http://2x.io/g" -- Einar Otto Stangvik. http://twitter.com/einaros/status/27127012579 [10:47] ajsie: JimBastard: of course =) [10:47] chapel: ajsie: look at it this way, they are small enough they can add whatever you want, :P [10:47] chapel: but smart enough to listen and be agile [10:47] chapel: amirite? [10:48] digitalspaghetti: chapel: i used davglass's YUI implementation, it made stuff really easy for parsing [10:48] digitalspaghetti: I can parse HTML + XML [10:48] ajsie: chapel: yeah interesting field .. the best user-experience will win [10:48] chapel: I saw it, but how light is it? I am not familiar with yui (not that its much different) [10:48] micheil: being able to read heaps of different programming languages is useful when writing FUSE bindings. [10:48] digitalspaghetti: it's not light, but it's fast - and i just cache the page contents to file, not in a db instance [10:49] chapel: I guess my question is, am I over engineering the problem, by separating the tasks, is that even node like? [10:49] digitalspaghetti: as i say, my 4 page site goes to ~60mb if you view all the pages, then it sits ~ 25mb when idle [10:49] ajsie: making it simple to develop .. i don't even want to set up my own VPS manually .. i just want to choose from a list "ruby 1.9.2", "node latest", "mongodb latest" etc and have it all installed so i can code and then just through one command have it deployed [10:50] pufuwozu has joined the channel [10:50] chapel: digitalspaghetti: I haven't even got to a front end, I am just working on the scraping and logic atm [10:51] digitalspaghetti: http://github.com/tanepiper/tanepiper.com/blob/master/apps/linkedin/index.js is an example of one of my DOM-based scrapings [10:52] digitalspaghetti: i parse my LinkedIn page and re-present it [10:52] digitalspaghetti: http://github.com/tanepiper/tanepiper.com/blob/master/apps/twitter/index.js is doing a RSS feed [10:53] digitalspaghetti: although i wrote this when i was first starting out with node [10:53] digitalspaghetti: there is probably a lot of optimisation i can do [10:55] pufuwozu has joined the channel [10:56] chapel: well I want only certain info from the webpage I am parsing [10:56] _announcer: Twitter: "…@simenbrekken forked & made a Node.js version: http://bit.ly/d9iQja — (he also built the org Rumpetroll code in EventMachine/Ruby!)" -- Hugo Ahlberg. http://twitter.com/hugoahlberg/status/27127522249 [10:56] _announcer: Twitter: "My puny node.js server handled that remarkably well, however useless the application. http://2x.io/g" -- Einar Otto Stangvik. http://twitter.com/einaros/status/27127524505 [10:56] chapel: and sadly, its a lot of pages I have to parse [10:56] chapel: not just one [10:58] chapel: someone gives a username, I then parse a few pages for links to games (each game has its own page) I then goto each page for each game and gather information from it, I want to store it in a database so I don't have to redo each game incase another user with the same game comes and uses the site [10:59] ysynopsis has joined the channel [11:01] micheil: ryah: ping. [11:01] pufuwozu has joined the channel [11:01] Tim_Smart: micheil: Is ryah in SF? [11:01] chapel: what do you think digitalspaghetti ? [11:01] micheil: yeah. [11:01] micheil: oh. 4am. [11:01] Tim_Smart: It is 4am there ^^ [11:02] Tim_Smart: Yeah. [11:02] chapel: heh [11:02] chapel: its 4am here [11:02] chapel: :) [11:02] micheil: Tim_Smart: any ideas on how a C binding should call functions into javascript? [11:02] chapel: 4:02 up 2 days, 19:15, 2 users, load averages: 0.25 0.39 0.41 [11:02] Tim_Smart: micheil: Call function from C? [11:02] Tim_Smart: Sure. [11:03] micheil: because it looks like FUSE loads the C api you describe, rather then being JS calling into C it's the other way round [11:03] micheil: C calling into JS [11:03] micheil: most things in node are js invoking C methods [11:03] ysynopsis has joined the channel [11:04] _announcer: Twitter: "Using server-side Javascript NodeJS or what has become a reality much longer. Javascript is called at all I mean I can not imagine 10 people in development, or rather loosely speaking NodeJS long after checking inside or touching." [ja] -- disktnk. http://twitter.com/disktnk/status/27128002511 [11:06] fermion has joined the channel [11:07] aliem has joined the channel [11:07] pufuwozu has joined the channel [11:10] rnewson has joined the channel [11:12] astrolin_ has joined the channel [11:12] zorzar_ has joined the channel [11:12] pufuwozu has joined the channel [11:15] kjy112 has joined the channel [11:18] pufuwozu has joined the channel [11:18] christophsturm has joined the channel [11:18] Tim_Smart: micheil: http://gist.github.com/622021 [11:19] gregerolsson has joined the channel [11:20] _announcer: Twitter: "@ Munichjs I can show what node.js. Will anyone? # # Toomuchjsexception nodejs # muchjs" [de] -- Sebastian Schürmann. http://twitter.com/sschuermann/status/27128955523 [11:21] micheil: Tim_Smart: can't do that. [11:21] micheil: due to how fuse.h says the C api needs to be' [11:22] Tim_Smart: micheil: I use a similar approach for node-gtk (For widget signals) [11:22] micheil: hmm.. [11:22] micheil: I'll have to check that. [11:23] mbrochh has joined the channel [11:23] Tim_Smart: micheil: http://github.com/Tim-Smart/node-gtk/blob/master/src/ngtk_widget.cc#L16-20 [11:23] micheil: like, static int hello_getattr(const char *path, struct stat *stbuf) [11:24] pufuwozu has joined the channel [11:24] breccan_ has joined the channel [11:26] cefn has joined the channel [11:26] cefn has left the channel [11:27] micheil: Tim_Smart: yeah, I think gtk is slightly different [11:28] Tim_Smart: micheil: Here is what a standard api looks like: http://github.com/Tim-Smart/node-gtk/blob/master/src/ngtk_entry.cc#L95 [11:29] pufuwozu has joined the channel [11:31] _announcer: Twitter: "Sschuermann lol @ # # nodejs munichjs" [hr] -- Nils Hitze. http://twitter.com/kojote/status/27129575346 [11:31] Gruni has joined the channel [11:32] _announcer: Twitter: "# Darkvander (coyote)-D # # Sschuermann nodejs munichjs" [hr] -- TwittServices. http://twitter.com/TwittServices/status/27129628810 [11:32] Anti-X: Tim_Smart, is there a problem with FF 3.6 and socket.io? it seems that it wants to use websockets, but there's nothing happening other than an error from the ws.proto.disconnect function, even though it never even connects according to the events [11:32] Tim_Smart: Not sure/ [11:33] Anti-X: you're a dev on that aren't you? [11:33] Tim_Smart: Haven't used it all that much. [11:33] Tim_Smart: Nope. [11:33] Anti-X: hm [11:33] micheil: FF3.6 shouldn't have "WebSocket" in window [11:33] Anti-X: you're listed on npm [11:34] pufuwozu has joined the channel [11:34] Anti-X: micheil, i know... that's what's weird [11:37] _announcer: Twitter: "Node.js at Google Tech Talk .. http://youtu.be/F6k8lTrAE2g cooler than cool .." [de] -- MacbethIII. http://twitter.com/MacbethIII/status/27129978389 [11:38] path[l]2_ has joined the channel [11:38] Anti-X: where is guillermo when you need him [11:39] sudoer has joined the channel [11:40] pufuwozu has joined the channel [11:40] _announcer: Twitter: "ever since watching the nodejs talk, I've had "body body body body body body body" in Ryan Dahl's voice stuck in my head" -- David Hall. http://twitter.com/cowsandmilk/status/27130166564 [11:43] holydevil has left the channel [11:43] bradleymeck has joined the channel [11:44] micheil_mbp has joined the channel [11:45] pufuwozu has joined the channel [11:46] breccan__ has joined the channel [11:46] _announcer: Twitter: "node.js I'd classify you like a mouse compared to the processing of the octopus, I never gone to sea rats? Ah, the sea cucumber sea cucumber ... but I yeah. Even though rabbit grazing is also why the mice first place (ry / WebSocket aim for the "real Web"! - @ IT http://j.mp/cWsYPG" [ja] -- 未席汚してやんよ. http://twitter.com/imashi/status/27130527170 [11:47] _announcer: Twitter: "Normally I would never edit live, but I was playing with some node.js. File was gone, still loaded in node... #wheretheresawilltheresaway" -- Richard Assar. http://twitter.com/richardassar/status/27130576024 [11:49] sth has joined the channel [11:50] sth: Hi, is there a way to inspect an object to stdout? [11:50] sth: n/m [11:50] Anti-X: sys.inspect [11:50] Ori_P has joined the channel [11:51] pufuwozu has joined the channel [11:52] Gruni has joined the channel [11:56] pufuwozu has joined the channel [11:57] ben_alman has joined the channel [11:57] tobeytailor has joined the channel [11:58] digitalspaghetti: with JSON.stringify, is there a way to get it to pretty print with indents? [11:58] digitalspaghetti: rather than one blob line of text? [12:01] hoodoos has joined the channel [12:02] pufuwozu has joined the channel [12:02] herbySk has joined the channel [12:02] Tim_Smart: digitalspaghetti: I don't think so. The is always sys,inspect + console.log :) [12:03] digitalspaghetti: yea, there is :D found it [12:03] digitalspaghetti: var output = JSON.stringify(design, null, '\t'); [12:03] digitalspaghetti: takes design and makes it pretty output with tabs [12:03] digitalspaghetti: i knew there was something like that [12:04] _announcer: Twitter: "I'll be talkin riakjs for nodejs this Thurs @ the nycjs group. Will cover some of the new riak hotness. http://bit.ly/bpdR6e" -- alexander sicular. http://twitter.com/siculars/status/27131690951 [12:04] digitalspaghetti: the problem was I wanted 4 spaces insstead [12:04] digitalspaghetti: you can't just pass a number though, you have to do: [12:04] digitalspaghetti: var output = JSON.stringify(design, null, new Number(4)); [12:04] _announcer: Twitter: "@caseywstark I was always a fan of Ruby and Rails, but node.js is getting my attention." -- Antonio Salazar. http://twitter.com/lightfiend/status/27131712105 [12:04] digitalspaghetti: instead of just 4 [12:07] pufuwozu has joined the channel [12:07] herbySk has joined the channel [12:08] tg has joined the channel [12:08] Anti-X: micheil, for some reason my firefox does have 'WebSocket in window'... v 3.6.4 [12:08] mif86 has joined the channel [12:09] micheil: it shouldn't. [12:10] Anti-X: well it does! but it doesn't have send methods on it... :-/ [12:10] Anti-X: so that makes it pretty fail [12:11] micheil: Anti-X: checking with the firefox guy in #whatwg. [12:11] Anti-X: i just did alert('WebSocket' in window) and it says true [12:11] Anti-X: so there's no arguing that it's there [12:11] micheil: it shouldn't be. [12:12] ashb: in a blank window? [12:12] Anti-X: hold on [12:12] Anti-X: never mind [12:13] Anti-X: socket.io made it [12:13] Anti-X: for some reason [12:13] micheil: >_> [12:13] pufuwozu has joined the channel [12:13] Anti-X: but there's still an error in my ff regarding it [12:13] Anti-X: since it calls it [12:14] Athox has joined the channel [12:14] _announcer: Twitter: "@aarongodin Enjoying your slides and blog post [http://goo.gl/siIi] Will definitely follow up when you blog about Node, Processing.js, etc." -- Andy L. http://twitter.com/ALindeman/status/27132368521 [12:15] _announcer: Twitter: "While we look RingoJS NodeJS and differences. The NodeJS Async (asynchronous), but the intention, RingoJS is not the case? ?" [ja] -- fu_su. http://twitter.com/fu_satou/status/27132438055 [12:15] micheil: ah. Flash cobbles the WebSocket constructor [12:15] Athox: and it specifically calls the WS object, which is directly connected to a WebSocket object [12:16] Athox: yeah but then it should use the FlashWebSocket object, and the thing it calls now is WS.prototype.blabla, which IS WebSocket [12:16] micheil: Anti-X: it's a bad implementation that; As soon as you load up the flash fallback, it takes over the WebSocket object, and replaces it [12:17] Athox: yeah but the WS setup is before the FlashWS setup [12:17] Athox: unless [12:18] dnolen has joined the channel [12:18] micheil: well, if you load up socket.io in firefox 3.6.X then you'll get flash fallback loaded [12:19] pufuwozu has joined the channel [12:19] micheil: so then if you do: new WebSocket() that'll be a call to flash [12:19] micheil: not to the browser. [12:19] sudoer has joined the channel [12:19] micheil: to fix: [12:19] micheil: return 'WebSocket' in window && WebSocket.prototype && ( WebSocket.prototype.send && !!WebSocket.prototype.send.toString().match(/native/i)) && typeof WebSocket !== "undefined"; [12:22] heavysixer has joined the channel [12:22] _announcer: Twitter: "Video: Node.js, JavaScript development on the server. Quite an interesting concept. http://tumblr.com/xktlh2oag" -- Felipe Lalanne. http://twitter.com/pipex/status/27132965793 [12:24] pufuwozu has joined the channel [12:24] Anti-X has joined the channel [12:27] sveimac has joined the channel [12:28] micheil has joined the channel [12:29] pufuwozu has joined the channel [12:32] _announcer: Twitter: "Really neat product: @MarkupIO, http://markup.io/ built using @nodejs and @RaphaelJS" -- John Wards. http://twitter.com/johnwards/status/27133679312 [12:33] roger_raymond has joined the channel [12:34] _announcer: Twitter: "Async node.JS http://github.com/caolan/async" [pl] -- Yuri Nevsky. http://twitter.com/outself/status/27133792811 [12:35] pufuwozu has joined the channel [12:37] Tim_Smart has joined the channel [12:39] hunt0r has joined the channel [12:40] pufuwozu has joined the channel [12:43] Ori_P has joined the channel [12:43] _announcer: Twitter: "getting ready for the first of my own talks: "JavaScript on client and Server". I thought it would be obvious it's a node.js introduction…" -- Dirk Ginader. http://twitter.com/ginader/status/27134482017 [12:44] Anti-X has joined the channel [12:46] pufuwozu has joined the channel [12:51] bahamas has joined the channel [12:52] pufuwozu has joined the channel [12:55] jtsnow has joined the channel [12:57] jansc_ has joined the channel [12:57] trotter has joined the channel [12:57] ysynopsis has joined the channel [12:58] pufuwozu has joined the channel [13:00] pengwynn has joined the channel [13:04] pufuwozu has joined the channel [13:04] washingmachine has joined the channel [13:05] MasterCJ has joined the channel [13:06] sveimac has joined the channel [13:09] pufuwozu has joined the channel [13:10] boaz_ has joined the channel [13:14] pufuwozu has joined the channel [13:18] ajpiano has joined the channel [13:21] bradleymeck has joined the channel [13:22] WALoeIII has joined the channel [13:23] pufuwozu has joined the channel [13:24] robotarmy has joined the channel [13:25] Ari-Ugwu has joined the channel [13:29] xak466 has joined the channel [13:29] pufuwozu has joined the channel [13:29] xak466: hi. i am making working on a long polling server in node js. [13:29] xak466: is it advisable to proxy it behind nginx? [13:30] Anti-X: it's not a problem [13:30] xak466: any performance issues? [13:30] davidsklar has joined the channel [13:31] xak466: previously someone advised me against proxying node js behind apache. is that relavent? [13:31] Anti-X: yeah [13:31] dylan- has joined the channel [13:32] xak466: so it's ok to proxy on nginx, but not on apache. is that right? [13:33] Anti-X: if you care to read my answer here: http://stackoverflow.com/questions/3878096/nodejs-nodejs-org-experience-comments/3884324#3884324 [13:33] xak466: thanks Anti-X [13:33] Anti-X: it may give you a clue of why apache is bad for node [13:34] Tim_Smart has joined the channel [13:34] xak466: Anti-X: if i wanted to run apache on the same server, would i put apache and node behind nginx? [13:34] pufuwozu has joined the channel [13:35] Anti-X: you would at least need to not have apache in front [13:35] Anti-X: because that's where the limit is [13:35] xak466: ok thanks. [13:35] Anti-X: but there's no reason to run apache behind nginx, unless of course it's on a different machine [13:35] Anti-X: nginx can do pretty much what apache can do [13:35] emmanueloga has joined the channel [13:35] xak466: what i want really is to be able to run apache and node on port 80 [13:35] mbrochh has joined the channel [13:35] mbrochh has joined the channel [13:36] xak466: ahhh... so nginx can do php, etc? [13:36] Anti-X: well if the php developers haven't managed to slime their way onto nginx yet, i'm pretty sure it will happen [13:36] bradleymeck: nginx has fastcgi [13:36] xak466: sorry i am new to nginx [13:37] xak466: i'm just asking about it because i want to run a webserver as well as node both behind port 80. any better suggestions? [13:37] Anti-X: i saw someone was making php for android, and i fried some brain cells out of anger [13:37] ysynopsis has joined the channel [13:38] Anti-X: using nginx and node seems to become more common [13:38] Anti-X: where nginx is the static fileserver and node is the streaming part [13:38] zum: i use lighttpd to serve my site (static & php) and route some of the requests to a local node.js server [13:39] chapel: well there is fastcgi [13:39] zum: nginx seems to be more popular, but I'm sure it can do that as well [13:39] Anti-X: yeah you can use php with fastcgi [13:39] chapel: but if you want a more nginx way of doing php, get php-fpm [13:39] chapel: zum http://interfacelab.com/nginx-php-fpm-apc-awesome/ [13:40] chapel: or xak466 [13:40] chapel: sorry [13:40] zum: last time I checked, nginx was buggy and maldocumented, but things might have changed since then... [13:40] Anti-X: it's nerdware, so it will pick up [13:40] Anti-X: once more nerds discover it [13:41] xak466: i know this is kind of an open ended question, but is nginx hard to pick up? [13:41] chapel: webfaction uses a large nginx server to handle their whole clientbase for all their servers, with local apache servers for each server for users with php [13:42] Tim_Smart has joined the channel [13:42] c4milo has joined the channel [13:43] zum: hmm this seems to hype nginx (over lighttpd at least), maybe it is worth a look then [13:43] hpoydar has joined the channel [13:43] bradleymeck: lighttpd will be below nginx until it patches that memory leak [13:44] Anti-X: i think lighttpd is aimed at being the end server, whereas nginx is probably more aimed at being a proxy/distributor thing [13:44] xak466: how would it compare to something like pound which is just a proxy [13:47] pufuwozu has joined the channel [13:48] Anti-X: you just answered that question yourself [13:49] Lerchmo has joined the channel [13:49] xak466: Anti-X: yes i know. but performance wise? [13:50] micheil: uhh, I'd recommend against having node and php on the same port. [13:50] Anti-X: a pure proxy would probably be extremely optimized, so you can imagine [13:50] micheil: (for instance, if node is doing anything with websockets, then you could (atm) be opening your self up for cross-protocol attacks) [13:50] xak466: would it be better to A) nginx + node proxied by nginx or B) apache + node behind pound [13:51] dylan- has joined the channel [13:51] micheil: well, really, depending on how you think of node, you can do just C) Node [13:51] micheil: for instance, I'd be happy to run stuff straight off node at this stage. [13:51] micheil: (unless I needed SSL) [13:51] Anti-X: i do that [13:51] Jonasbn_ has joined the channel [13:52] xak466: micheil: i'm still more familiar with php and am more comfortable with it [13:52] charlenopires has joined the channel [13:52] xak466: so, lesser of two evils i guess - A) or B)? [13:52] micheil: xak466: well, I'm not sure about you, but I'd be learning javascript. [13:52] Anti-X: you'll get into it very quickly [13:52] akweon has joined the channel [13:52] pufuwozu has joined the channel [13:52] Anti-X: also there's a js library for php functions [13:52] micheil: you could also do: D) Node on say, :8080, PHP on :80 [13:52] Anti-X: if you're really really weird [13:53] davidwalsh has joined the channel [13:53] micheil: xak466: also, there's a heap of really good tutorials on learning JavaScript about, such as sitepoint.com [13:54] xak466: i know javascript [13:54] xak466: just not in the way that php is used i guess [13:54] mif86 has joined the channel [13:54] xak466: with templating [13:54] xak466: and other stuff [13:54] xak466: im transitioning i guess [13:54] micheil: xak466: well, node with templating is more like rails or sinatra then php [13:54] micheil: in the sense that you use say, HAML (or Jade) [13:54] Nohryb has joined the channel [13:55] xak466: do i still need to restart node each time i fix something? [13:55] micheil: and then that language gets transformed into a JS function. [13:55] xak466: atm it's like that [13:55] micheil: xak466: yes. [13:55] xak466: yeah [13:55] micheil: xak466: although, there are libraries to automate that [13:55] xak466: :) [13:55] micheil: (imho, node should never auto-reload) [13:55] jamesarosen has joined the channel [13:56] xak466: im something like a chat server [13:56] xak466: web based chat [13:56] xak466: browser based [13:56] micheil: why's everyone want to do that? [13:56] xak466: so im using apache/php to send out the client files [13:56] xak466: and node to just to the messaging [13:56] hoodoos: guys, is Do should be considered as best practice for solving async related issues? [13:56] bradleymeck: micheil to learn [13:56] micheil: xak466: perhaps something like pusherapp would be better suited, unless you want to learn node. [13:57] micheil: hoodoos: Do? [13:57] xak466: i suppose it's part of my learning by studying the sample nodechat [13:57] sugardave has joined the channel [13:57] xak466: it's not anything great, but you can check it out here http://twich.me/isaacsu [13:57] hoodoos: micheil, yes, lib Do, which allows to run funcs parallel/in chain [13:57] bradleymeck: hoodoos Do, Conductor, and Step are the main libs for async issues, i use Step for simple things and manually write complex things [13:58] pufuwozu has joined the channel [13:58] dpritchett has joined the channel [13:58] dpritchett: is it possible to create two separate staticProviders under a single instance of Connect? [13:58] hoodoos: bradleymeck, i've read about conductor and step today, conductor's quite nice, combines chain with parallel easy [13:59] bradleymeck: dpritchett yes, look into router [13:59] micheil: xak466: well, yeah, kinda, because it's like longPolling + tables for layout. [13:59] xak466: micheil: yeah i know. it's a start, and i'm working on it [13:59] dpritchett: thanks [13:59] xak466: :) [13:59] micheil: k [14:00] xak466: micheil: thanks for dropping by [14:00] micheil: ACTION needs to work on websocket parsers and fuse [14:01] xak466: thank you everyone for your help Anti-X micheil bradleymeck chapel [14:01] xak466: bye [14:01] xak466 has left the channel [14:02] andrewa2 has joined the channel [14:03] caolanm: hoodoos: http://github.com/caolan/async provides a pretty comprehensive set of tools for async problems, though I'm obviously biased in recommending it ;) [14:03] pufuwozu has joined the channel [14:03] caolanm: hoodoos: useful if you use underscore.js, since it provides async versions of many of the same functions [14:04] hoodoos: caolanm, what is underscore.js? [14:06] caolanm: hoodoos: http://documentcloud.github.com/underscore/ [14:07] caolanm: functional stuff like map, reduce, filter... [14:07] Anti-X: i'm starting to think that java developers like it just because they can split the source into 4000 files of 1kB, so it looks like a huge project [14:07] Anti-X: java that is [14:08] pufuwozu has joined the channel [14:09] spetrea: maybe someone here is interested , just forked the code of some pretty smart russian guy, and hacked it to get images attached to labels of github users -> http://i.imgur.com/YAuwI.png [14:09] Anti-X: and every file is half copyright notice. the other half is 50% comments, 25% class declarations and if you strip away all the abstractions just to make every function contain less than 3 operations, you're left with just about 5 lines of code [14:09] spetrea: it uses the thejit visualization toolkit for Javascript [14:10] ircretary has joined the channel [14:10] micheil: hmm.. sounds like graph databasing github [14:10] bradleymeck: anti-x don't forget the interfaces for one time use classes [14:10] Anti-X: of course [14:11] Anti-X: and to be honest, that is a huge project, but it doesn't have to be [14:12] marshall_law_ has joined the channel [14:12] Anti-X: grunt programmers need work too [14:12] aheckmann has joined the channel [14:12] Anti-X: i guess [14:13] nerdEd has joined the channel [14:13] pufuwozu has joined the channel [14:14] fjakobs has joined the channel [14:15] matt_c has joined the channel [14:16] EyePulp has joined the channel [14:16] Me1000 has joined the channel [14:16] yhahn has joined the channel [14:17] Tim_Smart has joined the channel [14:18] spetrea: micheil: graph databasing ? [14:18] Tim_Smart has joined the channel [14:18] micheil: spetrea: as in the data is modelled as if it were a graph database [14:19] spetrea: micheil: yeah, do you like it ? :) [14:19] pufuwozu has joined the channel [14:19] spetrea: micheil: do you consider it a good/bad thing ? [14:19] micheil: like what? [14:20] spetrea: micheil: the idea of graphing github [14:20] spetrea: or of some form of visually navigating through github's repositories/users/forks/commits [14:20] micheil: uh, I'm referring to technology like Neo4j, where user N has X jumps to user M [14:21] micheil: visualisation != graph database [14:21] dmcquay has joined the channel [14:23] ceej has joined the channel [14:25] spetrea: I had to patch thejit to do this lol [14:25] Anti-X: bradleymeck, can you tell that i have to look through java sources atm? :p [14:25] antono has joined the channel [14:25] pufuwozu has joined the channel [14:25] ajsie has joined the channel [14:26] Anti-X: i'm slightly agitated [14:26] bradleymeck: anti-x really?? lol, better than reading python to find a bug [14:26] spetrea: micheil: haf you used neo4j ? I'm interested in it and watching their videos right now [14:26] ajsie: i find it very difficult to get started with express.js [14:26] ajsie: due to the non-structure [14:26] micheil: spetrea: I've not used it, purely because I don't know much about Java [14:26] ajsie: dont know where to put anything and require it [14:27] delapouite has joined the channel [14:28] astrolin has joined the channel [14:29] digitalspaghetti: so i've done a fresh install here, and i notice it says 'The 'sys' module is now called 'util'. It should have a similar interface.' [14:29] digitalspaghetti: isn't that going to break a lot of stuff :D [14:29] spetrea: micheil: I don't know much either about java. It seems a bit weird that they say it's "performant graph database" since it's written in java but hey ... :) [14:30] pufuwozu has joined the channel [14:30] hsuh has joined the channel [14:32] bradleymeck: java still runs a bit faster than js on raw benches [14:32] T-Co has joined the channel [14:33] DrunkDwarf has joined the channel [14:33] herbySk has joined the channel [14:34] T-Co: Sorry for offtopic, but there is no support channel for dbslayer. Some someone know if it is possible to compile dbslayer with automake-1.11? It has static references for automake-1.10 and aclocal-1.10? [14:34] pashields has joined the channel [14:35] Anti-X: bradleymeck, but then you realise you have to program in java [14:35] muhqu_ has joined the channel [14:36] reifter has joined the channel [14:36] pufuwozu has joined the channel [14:39] micheil: digitalspaghetti: no. [14:39] micheil: digitalspaghetti: it's a soft migration, given say, 3 or 6 months, the sys file will probably get removed [14:41] pufuwozu has joined the channel [14:42] Anti-X: and you can't expect stuff to remain the same when it's still in version 0.x [14:42] Anti-X: that's the whole point of 0.x [14:43] gerred has joined the channel [14:43] Anti-X: the liberty to pull the rug out from under people's feet [14:43] softdrink has joined the channel [14:44] ajsie: anyone here use express.js? [14:45] micheil: Anti-X: soft migration means, you can still use sys, you just get a warning to upgrade [14:45] ajsie: i wonder if there is a shortcut to create resourceful routes like Rails [14:45] Anti-X: i know what it means [14:45] ajsie: instead of writing every route [14:45] Anti-X: i'm just saying, complaining that v 0.x changed stuff, isn't really a valid complaint [14:45] micheil: Anti-X: so, we're not pulling the rug out from under anyones feet. [14:45] micheil: unless they called their npm package util [14:45] dshaw has joined the channel [14:46] Anti-X: well that's just a stupid name for a custom package :p [14:46] pufuwozu has joined the channel [14:46] mAritz has joined the channel [14:46] Anti-X: speaking of v0.x, noticed that inkscape has been around for 10 years and still is only at 0.42 or something? [14:47] Anti-X: they seem to be taking the 0.1 increment approach [14:47] Anti-X: no matter what [14:48] tmedema has joined the channel [14:48] cefn has joined the channel [14:48] cefn has left the channel [14:49] tmedema: Hi folks, if one is to publish an investment heavy website with node as it's backend, is it still recommended to use a "stable" webserver as a proxy, like NGinx? [14:49] tmedema: With investment heavy, I mean one that would result in severe losses if something happens to the web server [14:50] mape: loadbalance it for redundancy? [14:50] micheil: tmedema: I'm not sure by what you mean as losses, but if there's a large amount of money processing, it may be wise not to use node [14:51] micheil: but as with any application redundancy increases the reliability of it. [14:51] tmedema: That's what I mean yes micheil. With NGinx proxying to node it should be stable right? [14:51] micheil: tmedema: not necessarily [14:51] pufuwozu has joined the channel [14:51] c4milo: tmedema: not necessarily [14:51] c4milo: ahah [14:52] micheil: although, a lot of money processing applications I know of actually use machine code, to increase stability and reduce attack vectors [14:53] tmedema: Ah, well I don't mean money processing as in bank transfers etc. Rather, if the webserver is vulnerable to attacks which would result in downtime it would result in liquidity losses [14:53] dshaw: tmedema: explain [14:53] mape: then make sure it has redundancy? [14:53] Anti-X: well there are definately ways to bring node down [14:54] mape: Anti-X: there are ways of bringing anything down? ;) [14:54] micheil: you can bring down in server given the right conditions [14:54] Anti-X: mape, yes, but with node there may be EASY ways, that haven't been detected yet [14:55] tmedema: mape: alright, you're talking about load balancing over multiple servers right? [14:55] mape: tmedema: I was talking about multiple node instances [14:55] mape: but sure, that as well [14:55] seanouimet has joined the channel [14:56] micheil: Anti-X: go find one then. I'm betting there'd be less vunerabilities in node's http_parser then say rails, django, etc. [14:57] gregerolsson: micheil: That's speculations. [14:57] tmedema: Alright, it seems to me that having such setup with NGinx as a backend proxying to node should be quite stable [14:57] Anti-X: micheil, no need to get defensive [14:57] gregerolsson: micheil: Rails doesn't have an HTTP parser for that matter [14:57] micheil: gregerolsson: it is speculation. Although, I'd be willing to put things there [14:58] micheil: gregerolsson: rails mightn't have a http parser, but it still uses one somewhere along on the stack [14:58] gregerolsson: Out of curiosity, if Nginx just upstreams to Node, in what way can Nginx help keep a cluster of node processes alive better? [14:58] c4milo: tmedema: node is still in heavy development, I would recommend you to be very careful with your test cases, specially, you should try to test your nodejs demons for a considerable amount of time before going to production. I know people who have been in troubles because its demons die unexpectedly and without any obvious reason. [14:59] gregerolsson: micheil: Yup, there are lots of HTTP parsers to choose from, based on which HTTP server you put in front of it. It's Rack-based. [14:59] tmedema: gregerolsson: I was thinking more about the vulnerability of outside attacks.. NGinx would serve as somekind of firewall right? [14:59] gregerolsson: micheil: Yup, got it. Just reacted to your statement. [14:59] tmedema: c4milo: alright thanks [14:59] c4milo: tmedema: apache + mod_security works [14:59] c4milo: for security concerns [15:00] pufuwozu has joined the channel [15:00] gregerolsson: micheil: Not sure what Nginx can protect against. We use it for SSL and some rewrites before upstreaming to our webstack behind it (and LB'ing of course). Apart from that, I don't see what kind of attacks it can prevent. [15:01] dshaw: tmedema: You're still going to need to have a baseline organizational understanding that with Node you're really going live with bleeding edge. [15:01] tmedema: gregerolsson: I don't know either, I'm not experienced in this field at all.. just heard people say "I recommend you to use NGinx together with node for security concerns, rather than just node as a webserver" [15:01] micheil: gregerolsson: well, that's my point. At present, Node is probably less or equally as vulnerable to http style attacks compared to other stacks [15:02] gregerolsson: dshaw: Yes, my point exactly. Fronting with another web server may not prevent attacks from slipping though. [15:02] gregerolsson: micheil: Agree completely. [15:02] gregerolsson: micheil: So sticking Nginx in front may not help at all. [15:02] micheil: as for stability, redundancy and monitoring is the only way to ensure it. [15:03] gregerolsson: Granted, Nginx has been exercised a bit more than Node, but eventually your request hits node anyway [15:03] micheil: at present, I'd be happy with having node facing raw http. [15:03] jetienne has joined the channel [15:03] steadicat has joined the channel [15:03] micheil: ryah on the other hand may have other opinions on that. [15:03] EyePulp: heh [15:03] tmedema: gregerolsson: the request only hits node if it is accepted by Nginx, I think thats the point of it.. right? [15:03] c4milo: tmedema: another thing is nodejs doesn't have a good support for SSL so yes, if you want SSL you need put a webserver in the front (nginx, apache, etc) [15:04] EyePulp: c4milo: can you elaborate on that? [15:04] jamesarosen has joined the channel [15:04] gregerolsson: tmedema: Sure, it can possibly help prevent some attacks. I was curious myself. [15:04] micheil: EyePulp: it's documented in the issue tracker, but basically the bindings are still unstable [15:04] c4milo: tmedema: if you want to take security as serious concern, you should use mod_security [15:04] dshaw: Which is fairly easy to do. SSL [15:05] tmedema: c4milo: I am not really happy with using apache [15:05] chapel: hmm [15:05] dshaw: Someone should blog that out. :) [15:05] EyePulp: micheil: ah, interesting. [15:05] chapel: anyone used cloud9? [15:05] Yuffster has joined the channel [15:05] c4milo: tmedema: you I don't like neither but I really like mod_security [15:05] c4milo: s/you/yeah/ [15:05] micheil: EyePulp: like, occassionally odd bugs are seen and things like that. [15:05] EyePulp: micheil: when you say unstable - is that a server-wide instability or per-connection oddities? [15:06] pufuwozu has joined the channel [15:06] micheil: EyePulp: I don't know the details of it. [15:06] dshaw: tmedema: …and if you want stable, Apache's definitely been around the block. [15:06] EyePulp: gotcha [15:06] quirkey has joined the channel [15:07] tj has joined the channel [15:07] norviller has joined the channel [15:07] mbrochh_ has joined the channel [15:07] tmedema: "W3Techs reports that 5.1% of the top 1 million sites on the web (according to Alexa) use nginx. Hence nginx is on the 3rd place after Apache (70.2%) and IIS (20.5%)." Seems to be that NGinx should be pretty stable too. I heard good things about it efficiency wise [15:08] c4milo: EyePulp: yep, that are the issues with SSL, thanks micheil :) [15:08] gregerolsson: tmedema: The fact that it too is evented may prove it a better fit with node if you expect many many concurrent connections. [15:08] c4milo: tmedema: if you want efficiency , choose nginx [15:08] tmedema: yeah gregerolsson, think ryan seriousely prefered NGinx over apache in some presentation he did.. or maybe it was someone else.. [15:09] gregerolsson: Every benchmark I've seen shows Nginx to be more efficient, but I can't speak for resilience regarding attacks [15:09] tmedema: I looked on github for a stable nodejs webserver, couldn't actually find one.. maybe I overlooked it though [15:09] Anti-X: apache should definately never be used with node [15:10] c4milo: Anti-X: why ? [15:10] Anti-X: at least not in front of it i mean [15:10] sonnym has joined the channel [15:10] Anti-X: because of its limitations with concurrent connections [15:11] c4milo: Anti-X: yeah, the performance could be less [15:11] pufuwozu has joined the channel [15:11] Anti-X: it's already less by using apache [15:11] Anti-X: in general [15:11] gregerolsson: Yeah, Nginx really screeams speed. [15:12] c4milo: Anti-X: but I will choose apache if I want to feel security and the performance isn'r really a concern for my app [15:12] c4milo: I mean, I wish nginx have a mod_security port [15:12] micheil: tmedema: uh. Node.js is the webserver. [15:13] lakin has joined the channel [15:13] zemanel has joined the channel [15:13] gregerolsson: c4milo: I've never read anywhere that Mginx is less safe than Apache. Is that really true? Anyone? [15:13] bronb has joined the channel [15:13] micheil: gregerolsson: probably not. [15:13] micheil: urban myth I'd say. [15:13] c4milo: gregerolsson: no, I'm talking about apache + mod_security [15:14] Anti-X: micheil, i think he meant actual js code to make node.js act as one, because out of the box, node isn't [15:14] tmedema: micheil: I guess I am talking about the next stage, eg. templating system - so that you can write websites object oriented in server sided javascript [15:14] gregerolsson: micheil: Truly hope so :-) Have had it in production over a year now. [15:14] micheil: c4milo: if you're adding specific security patches to apache, then it's no longer just apache. [15:14] micheil: apply a similar patch to nginx or node and you have the same security. [15:14] c4milo: micheil: patches. ? I'm talking about modules [15:15] c4milo: micheil: do you know some web app firewall as module for nginx ? [15:15] mvt_ has joined the channel [15:15] micheil: Anti-X: wtf? The idea of node.js is that you write a dynamic webserver, no one is ever saying (or should ever being saying) that you should throw out nginx or apache or lighty or whatever for node. [15:16] micheil: c4milo: no, as I'm not a sys op/admin. [15:16] pufuwozu has joined the channel [15:16] Anti-X: micheil, i meant.. you need to write code that starts a server/listener [15:16] micheil: ask in say #nginx. [15:16] micheil: Anti-X: that's the idea of it. [15:16] Anti-X: yeah but maybe that's what he was looking for [15:16] c4milo: c4milo: me neither but I know a little of that :) [15:17] tmedema: micheil: did you get what I mean with node webserver? [15:17] Anti-X: finally found the .java file i was looking for, and then it turns out it's doesn't do things half as good as i thought it did :/ i could seriously kill right now [15:17] micheil: tmedema: it depends what you want to do. [15:18] micheil: if you want to do static file serving, try paperboy [15:18] Anti-X: wasn't that a game once? [15:18] gregerolsson: hehe [15:18] gregerolsson: C64 [15:18] micheil: if you want to do dynamic stuff like what a rails or sinatra app may do, try express or connect [15:19] bentruyman has joined the channel [15:19] tmedema: thanks micheil, do you have any idea which of those is the most actively developed / most popular? [15:20] rauchg_ has joined the channel [15:20] gregerolsson: tmedema: They do different things [15:20] micheil: express and connect are actively developer, not sure as to paperboy. [15:20] gregerolsson: tmedema: Connect basically is a port of Rack from the Ruby world [15:20] gregerolsson: And Express is more akin to Sinatra in the Ruby world [15:20] tmedema: alright, thanks a lot [15:20] gregerolsson: So they fit nicely together [15:20] gregerolsson: And sprinkle some Sass and Haml into the mix and you're smiling [15:21] micheil: gregerolsson: Jade's better :P [15:21] gregerolsson: micheil: Agreed!! Love it. [15:22] pufuwozu has joined the channel [15:22] gregerolsson: micheil: We use it to compile templates to CommonJS-modules that we can run directly in the browser. It so sweet. [15:22] Anti-X: i've yet to have node manipulate html for me in any way (except i made an SSI thing once) [15:22] micheil: ACTION did have a fork of jade for the client side. [15:22] micheil: it's outdated though [15:22] gregerolsson: micheil: cool [15:23] viirya has joined the channel [15:24] noahcampbell has joined the channel [15:26] benburkert has joined the channel [15:26] richcollins has joined the channel [15:28] pufuwozu has joined the channel [15:30] bradleymeck: its really easy to port to browser [15:30] Anti-X: it's not incidentally written in js, is it? :P:P [15:30] tmedema: Question, if you write your websites in node with a node web library like express, how would you add Javascript to the html page? Basically, you have to write client side javascript inside server side javascript? [15:31] deanlandolt: tmedema: but adding a