[00:00] isaacs: inimino: me too! [00:00] steez has joined the channel [00:00] inimino: ^.^ [00:01] steez: i want to use node to connect to and send data to a tcp socket server [00:01] steez: but i only know how to use node to make a tcp socket server [00:01] steez: can someone guide me? [00:01] jedschmidt has joined the channel [00:01] _ry: steez: net.createConnection [00:02] JimBastard: i love the influx of new people, fucking awesome [00:02] JimBastard: :-) [00:03] steez: how does that function work? i guess i'll just view the source? [00:03] steez: oh the api is better than i thought [00:03] isaacs: rtfs ftw! [00:05] _ry: despeartely need anchors in the docs [00:05] steez: ah okay so createConnection returns a stream object -- that wasn't apparent to me before you encouraged me to take its entry seriously, _ry [00:05] isaacs: _ry: yeah, i miss those [00:05] _ry: steez: you can also just: s = new net.Stream(); s.connect(80, "google.com") [00:06] isaacs: _ry: i'd just type "http" and the firefox Awesome Bar would take me to the docs in the right spot [00:06] steez: and then s.write('importantdata') [00:06] steez: thanks, this shit rocks [00:06] joshbuddy has joined the channel [00:07] stevendavie has joined the channel [00:10] isaacs: mscdex: thanks [00:10] isaacs: github issues rock. [00:11] isaacs: it's like someone set out to make an issue tracker that was awesome in all the ways that jira is awful [00:11] mscdex: heh [00:13] dgathright has joined the channel [00:14] mscdex: oh hey, a markdown to groff converter in haskell! :P [00:14] linuxsable has joined the channel [00:15] Ned_: Hmmm, is there a manpage for node ? [00:15] mscdex: blargh, it still requires me to install something ;() [00:16] mscdex: er wait, maybe now [00:16] mscdex: *not [00:16] Ned_: isaacs: it's a fairly simple issue tracker, but yeah, nice :-0 [00:17] isaacs: Ned_: not "but" [00:17] isaacs: Ned_: yeah [00:17] isaacs: we need jonn [00:17] isaacs: like ronn but for js [00:17] Ned_: heh [00:17] isaacs: and at that point, only the "o" will be a connection to [tg]?roff [00:17] mjr_: Ned_: "make doc" will build you a node manpage. [00:18] Ned_: mjr_: ahhh, ta [00:18] Ned_: mjr_: I have some angry debian package :p [00:18] Ned_: I'm coercing it into playing nice ... [00:19] mjr_: It's stopping you from installing ronn? [00:19] mscdex: isaacs: yeah that's what i was saying -- we need jonn :> [00:19] Ned_: not like when I said we needed CNAN, and npm already existed :p [00:20] Ned_: shit, ronn is the thing to build the docs ? [00:20] Ned_: :-( [00:20] mscdex: pandoc has an online converter [00:20] Ned_: there doesn't appear to be a debian package for it ? [00:20] mscdex: :-) [00:21] mjr_: Ned_: it's a ruby gem [00:21] Ned_: oh .. [00:21] Ned_: poo [00:21] mscdex: http://johnmacfarlane.net/pandoc/try [00:21] mikejs has joined the channel [00:22] Ned_: ronn --roff [00:22] Ned_: for some reason I find that rather amusing :p [00:23] dgathright has joined the channel [00:24] Ned_: are there other tools that can make me a man page from the markdown ? [00:24] joshbuddy has joined the channel [00:24] creationix has joined the channel [00:24] hellp has joined the channel [00:24] _ry: not yet [00:24] mscdex: Ned_: that pandoc link is probably your best bet if you don't want to install anything extra [00:25] _ry: Ned_: but it would be a nice little project [00:25] _ry: 3 hour hack [00:25] Ned_: _ry: I thought there would be something for html => man [00:25] Ned_: :-( [00:25] _ry: http://github.com/evilstreak/markdown-js <--- [00:25] Ned_: there's plenty of man => html [00:25] gf3 has joined the channel [00:25] _ry: using that markdown -> groff is pretty easy [00:25] isaacs: _ry: doesn't ronn use hpricot? [00:26] _ry: i dont think so [00:26] isaacs: but i guess it wouldn't be necessary to generate the html [00:26] mscdex: is there an example of a man page for a node binding? [00:26] isaacs: _ry: http://github.com/rtomayko/ronn/blob/master/lib/ronn/roff.rb#L1 [00:26] Ned_: mscdex: the online converter truncated it :-( [00:26] Ned_: it's too long ... [00:26] isaacs: it actually just html-ifies the markdown, and then roff-ifies the html [00:27] _ry: isaacs: ah [00:27] _ry: lame [00:27] isaacs: which is great if you've already got a good html ,ib [00:27] isaacs: lib [00:27] isaacs: but js doesn't. [00:27] Ned_: isaacs: yes, that's what make doc does too [00:27] _ry: luckily we can parse markdown though [00:27] isaacs: right [00:27] mscdex: Ned_: oh, i guess i didn't try a long enough markdown hehe [00:27] Ned_: mscdex: I pasted api.markdown [00:27] isaacs: could definitely port the roff html logic to good markdown stuff [00:27] isaacs: not a 3-hour hack, though [00:28] isaacs: more like 6 [00:29] mjr_: I've been playing with WebSockets today. I can move a small UTF-8 string from Safari, through node, then into Chrome in about 5ms. Pretty neat. [00:31] Ned_: mjr_: websockets are pretty cool :p [00:31] Ned_: mjr_: I want to make a script that tails multiple files => web browser window [00:31] Ned_: with some handy tools for filtering etc on the web frontend [00:31] Ned_: (using web sockets) [00:31] mjr_: That's sort of what I'm doing, but in a very application specific way for this internal tool. [00:31] Ned_: cool [00:32] Ned_: I've made a fairly specific one for work [00:32] Ned_: that logs from multiple ssh tail -f commands at once [00:32] Ned_: and outputs to a single terminal [00:32] Ned_: but yeah, websockets => webbrowser with filters [00:32] Ned_: is the next goal [00:32] Ned_: :-) [00:32] Ned_: crap, band practice ... [00:32] Ned_: ACTION will be back later :p [00:33] mjr_: I keep getting these "Stream is not writable" exceptions though when a WebSocket client times out or goes away, and then immediately after that the 'close' event will fire with error set to true. [00:33] mjr_: This seems wrong. [00:34] _ry: mjr_: why? [00:35] _ry: mjr_: or - i mean - what part of that seems wrong? [00:35] mjr_: shouldn't close fire as soon as the stream becomes not writable? [00:36] _ry: i guess it depends [00:36] _ry: if you stream.end(); stream.write("something"); [00:36] _ry: that should be an error [00:36] _ry: but it's possible to receive data after .end() [00:36] mjr_: Sure, but I'm trying to write data [00:37] _ry: and you get like an EPIPE while writing? [00:37] mjr_: And then I get exceptions when clients go away, because they've gone away. As soon as I get that exception, then the close event seems to fire. [00:37] pjb3 has joined the channel [00:37] mjr_: I get this: http://gist.github.com/401872 [00:37] _ry: mjr_: i suspect that's because they haven't sent the FIN packet - and node thinks it's still there? [00:38] mjr_: somehow the stream became non-writable though. Whatever triggered that seems like it should have fired the close, right? [00:38] _ry: um - i suppose [00:39] _ry: unless someone else did socket.end() [00:39] _ry: in which case i think it'd be okay [00:39] mjr_: I wonder if there's some funny business with the http upgrade thing. [00:39] pavelz: anyone knows what's compatible version of coffee script with current express? [00:39] mjr_: Because I'm doing the whole upgrade thing. [00:39] _ry: mjr_: hm - pretty sure http takes its hands off [00:40] _ry: so basically something is setting stream.writable to false [00:40] _ry: but unknown who [00:40] _ry: or why [00:40] mjr_: or when [00:40] _ry: sounds unpleasent [00:40] _ry: :) [00:41] mjr_: It might be that I'm not listening for something that I should be, or have some other bug. It's very suspicious though. [00:41] mjr_: I've worked around it by try / catch at the moment, which will be fine until Monday when I'll look at it again. [00:45] siculars has joined the channel [00:51] mattly has joined the channel [00:56] richcollins has joined the channel [00:56] richcollins: How do you look up globals in node? [00:56] richcollins: in the browser: window["SomeSlot"] [00:57] richcollins: for instance, if I do this in my main file: [00:57] richcollins: Foo = {}; [00:57] mikeal has joined the channel [00:57] richcollins: Can I look up foo from another context using this["Foo"] [00:58] _ry: richcollins: global['Foo'] [00:58] richcollins: _ry: ty [00:59] creationix: or global.Foo ;) [01:04] Yuffster has joined the channel [01:04] dgathright has joined the channel [01:08] airportyh has joined the channel [01:13] creationix has joined the channel [01:24] bmizerany has joined the channel [01:26] WALoeIII has joined the channel [01:27] creationix has joined the channel [01:29] dgathright has joined the channel [01:30] airportyh has joined the channel [01:32] bmizerany: is there difference between sha256 and hmac-sha256? [01:32] bmizerany: if so, which does crypto use? [01:33] creationix: since when did node close http requests instead of crashing when there was an exception in the code? [01:33] creationix: good for server reliability, but makes debugging painful [01:33] creationix: and wrapping in a try..catch doesn't help [01:35] polo: bmizerany: I suppose hmac-sha256 does the hmac using sha256 [01:35] polo: so if you just want the fingerprint use sha256 [01:36] bmizerany: polo: ah. I see [01:36] bmizerany: thx [01:36] _ry: creationix: yeah... [01:37] creationix: _ry: is there an error event or something I can catch so I can send proper 500 responses with stack traces? [01:38] _ry: creationix: you can wrap whatever you're calling in try {} catch{} [01:39] creationix: I tried that, and strangely, it doesn't do anything [01:39] creationix: the errors are synchronous [01:39] fermion has joined the channel [01:39] creationix: things like mispelled method names and using undefined variables [01:39] polo: Is it possible to redirect users to another port of my server (to simulate multiple servers) while I don't know my own IP address ? [01:39] _ry: creationix: just commited a failing test this morning for fixing this behavior [01:39] _ry: creationix: it's clearly undesirable [01:39] stepheneb has joined the channel [01:39] creationix: ok, good, so it's known [01:40] creationix: I can work around it for now, it just slows down my debugging since I don't get stack traces at all [01:42] bmizerany: hrm. what version what createHmac introduced? [01:42] CIA-74: node: 03Andrew Johnston 07master * r9599607 10/ (4 files in 4 dirs): Added posix fsync and fdatasync to fs module - http://bit.ly/c4Ci2z [01:44] _ry: bmizerany: i dont know [01:44] _ry: hat node version? [01:44] Aria has joined the channel [01:44] bmizerany: I'm on 93 and crypto.createHmac(..) throws and undefined error [01:44] bmizerany: I'm trying 95 [01:45] _ry: bmizerany: 92, i believe [01:45] bmizerany: hrm. then it must be me [01:47] bmizerany: _ry: http://gist.github.com/401926 [01:47] bmizerany: that's 93 [01:48] _ry: bmizerany: hm [01:48] bmizerany: _ry: wait. do I need to build special for openssl? [01:49] _ry: looks like it appeared in 1a317135 [01:49] _ry: which was released in 94 [01:50] bmizerany: _ry: ah! cool. the 95 should work. awesome [01:50] bmizerany: _ry: boom. works! thx [01:50] aho has joined the channel [01:52] jedschmidt has joined the channel [01:53] bmizerany: _ry: the cryto library is sick man. great work on making sure it's as solid as it is [01:53] _ry: bmizerany: i had little to do with it - rhys jones is the crypto man [01:53] bmizerany: _ry: then please pass that along [01:53] _ry: :) [01:54] bmizerany: it's so full featured. I was strugling in Go because it lacks a solid crypto package [01:55] _ry: yeah, we want to expose all the capabilities of openssl [01:56] _ry: the earlier gnutls binding left much to be desired [01:57] aaronblohowiak has joined the channel [01:59] Aria has joined the channel [02:00] softdrink has joined the channel [02:01] k3yvn has joined the channel [02:03] softdrink has joined the channel [02:03] aaronblohowiak: i am looking for a read-through cache implementation, googling did not produce a good result [02:04] keyvan has joined the channel [02:04] creationix: aaronblohowiak: what do you mean? [02:05] aaronblohowiak: a read-through cache will fill itself "on-demand" [02:05] rndmcnlly has joined the channel [02:05] CIA-74: node: 03Jonas Pfenniger 07master * r5014802 10/ (3 files): [02:05] CIA-74: node: Thinner SignalWatcher, only using callback [02:05] CIA-74: node: Since it is only used internally, we don't need the complexity of [02:05] CIA-74: node: EventEmitter. The new SignalWatcher's design was copied from [02:05] CIA-74: node: IdleWatcher. - http://bit.ly/aqjRtr [02:05] CIA-74: node: 03Jonas Pfenniger 07master * r4274e6b 10/ (3 files in 3 dirs): [02:05] CIA-74: node: FIX: signal-unregister bug [02:05] CIA-74: node: We now restore the default signal behavior when all listeners are [02:05] CIA-74: node: removed for a given signal. [02:05] CIA-74: node: Re-enabled test-signal-unregister - http://bit.ly/bl8Svr [02:06] creationix: aaronblohowiak: at what level, function memoizing, or a full on http proxy that caches results [02:06] aaronblohowiak: asynch function memoizing [02:06] creationix: sure, I've got several examples of that [02:06] creationix: do you need it for async functions or sync functions? [02:07] creationix: sync are easier [02:07] creationix: oh, I see, you said async [02:07] aaronblohowiak: +1 for async +2 for async and streaming [02:07] creationix: I haven't done streaming, but I guess that would stream on the first hit and then serve from the cache after that? [02:07] airportyh has joined the channel [02:08] aaronblohowiak: only if you want a whole copy in memory for every request out of the cache [02:08] aaronblohowiak: =) [02:08] creationix: http://github.com/creationix/node-git/blob/master/lib/git.js#L57 [02:08] creationix: that's the cache I use for wheat [02:09] creationix: it does memoizing AND merges concurrent requests into a single response [02:09] creationix: the latter only applies to async functions [02:09] aaronblohowiak: ah yes, your talk the other night got me on to this. sweeet! [02:09] creationix: because you may have several instances start before the first one finishes [02:10] creationix: that version in node-git makes some assumptions based on sha hashes, but a generalized one shouldn't be hard to write [02:10] aaronblohowiak: can add a license or a mention of a license to the repo? [02:10] aaronblohowiak: or, do you mind if i steal your work and generalize it [02:11] creationix: node-git is MIT, but the idea is public domain, I've explained it on the mailing list before [02:11] aaronblohowiak: :-) splendid, thanks. [02:11] creationix: you basically need the queue for concurrent requests, and the cache for memoizing [02:11] creationix: and probably some sort of timeout to expire caches that don't get used very often [02:13] aaronblohowiak: makes sense. thanks! [02:15] creationix: :) [02:15] CIA-74: node: 03Jonas Pfenniger 07master * rfea6f82 10/ (2 files in 2 dirs): [02:15] CIA-74: node: FIX: EventEmitter#removeListener logic [02:15] CIA-74: node: In the case of one defined listener, the function should only remove it [02:15] CIA-74: node: if it is the same as the passed listener. - http://bit.ly/9FVjkg [02:15] CIA-74: node: 03Jonas Pfenniger 07master * r53a9869 10/ lib/events.js : [02:15] CIA-74: node: FIX: EventEmitter#removeAllListeners signature [02:15] CIA-74: node: This function should return this is all cases. - http://bit.ly/91Hxwj [02:20] _ry: http://s3.amazonaws.com/four.livejournal/20100514/Photo%20on%202010-05-14%20at%2019.18.jpg [02:20] _ry: http://s3.amazonaws.com/four.livejournal/20100514/Photo%20on%202010-05-14%20at%2019.19%20%232.jpg [02:20] _ry: ^-- my office ^^ [02:21] smtlaissezfaire has joined the channel [02:22] richcollins has joined the channel [02:28] smtlaissezfaire has joined the channel [02:33] jbrantly has joined the channel [02:47] CIA-74: node: 03visionmedia 07master * r45948e0 10/ (4 files in 2 dirs): Added better error messages for async and sync fs calls with paths - http://bit.ly/abgabq [02:55] hassox has joined the channel [02:57] kriszyp_afk has joined the channel [03:00] mattly has joined the channel [03:11] phiggins has joined the channel [03:11] tylerstalder has joined the channel [03:13] smtlaissezfaire has joined the channel [03:18] justinlilly has joined the channel [03:20] Yuffster has joined the channel [03:31] mjr_ has joined the channel [03:33] nsm has joined the channel [03:33] towski has joined the channel [03:37] alexiskander has joined the channel [03:42] pavelz has joined the channel [03:44] tlrobinson_ has joined the channel [03:44] PyroPete1 has joined the channel [03:47] scudco has joined the channel [03:54] Joel has joined the channel [04:00] Guest35290: hello ..anyone have an idea what could give the "Error loading index.html" running the node_chat demo? [04:00] justinlilly: any other errors? [04:00] justinlilly: do you have an index.html? [04:00] Guest35290: snow leopard [04:01] Guest35290: yep [04:02] Guest35290: am i able to serve files in my user directory? [04:02] Guest35290: or does it need to be where node is [04:03] justinlilly: not sure really. [04:03] justinlilly: haven't run the chat example in a few months. [04:03] justinlilly: user directory should be fine, iirc though [04:03] mscdex has joined the channel [04:04] stevendavie has joined the channel [04:04] Guest35290: hmm.. does it matter that i'm using 10.0.1 instead of 127.0.0.1 [04:05] justinlilly: 10.0.1 isn't a valid IP address. [04:05] justinlilly: perhaps try 127.0.0.1 or localhost ? [04:07] Guest35290: sorry 10.0.1.201 - i've tried all three whenever i try to load the page in safari my terminal gives the Error loading index.html [04:07] Guest35290: ..at least i know its trying [04:07] mscdex: is it the right port? [04:08] Guest35290: yep [04:08] Guest35290: ive tried a few [04:09] justinlilly: Guest35290: do you have an updated version of http://github.com/ry/node_chat ? [04:09] justinlilly: I just downloaded it and it works perfectly. [04:09] Guest35290: on a mac? [04:09] justinlilly: linux. [04:09] justinlilly: though I doubt it matters. [04:09] Guest35290: where do you have the files? [04:09] justinlilly: just in a temporary directory [04:09] justinlilly: I'm in the same dir as server.js [04:10] justinlilly: then just run: node server.js [04:10] justinlilly: And when you start the server, it should tell you which address & port its running on. [04:11] Guest35290: ahh [04:11] Guest35290: thanks! [04:11] justinlilly: np :) [04:11] Guest35290: i wasn't in the folder [04:11] Guest35290: i was running node /dasdff/asdfa/sdfds/server.js [04:13] mattly has joined the channel [04:14] mrjjwright has joined the channel [04:15] mape: _ry: at current company? [04:18] _ry: mape: hey - what's up? [04:21] mape: Morning is what is up :( [04:21] mape: And the dawn of a hopefully productive day [04:22] justinlilly: mape: whatcha working on today? [04:22] jashkenas has joined the channel [04:22] mape: Hopefully an index listing for npm [04:24] justinlilly: how does npm compare to kiwi? [04:26] justinlilly: I only ask b/c I was forced to download kiwi to follow a tutorial and it has rather crummy defaults (and no easy way to override it) [04:27] mape: I don't have that much experience with it tbh, I just trust in isaac, and hoefully it is good for the community. [04:28] justinlilly: seems reasonable. He has quite the collection of js apps on his github thing :) [04:36] stevendavie has joined the channel [04:37] aaronblohowiak: hey folks, i just pushed out an initial version of an expiring cache. I think i've written about 4 versions of this for various apps, and hopefully this will do the job for the 80% case. more data structures on the way. http://github.com/aaronblohowiak/JavaScript-datastructures [04:37] jashkenas has left the channel [04:38] bmizeran_ has joined the channel [04:39] bpot has joined the channel [05:00] creationix has joined the channel [05:02] sztanphet has joined the channel [05:03] bmizerany has joined the channel [05:05] Ned_: crap, debian package installs node as "nodejs" [05:05] Ned_: wrong binary name :-( [05:13] creationix: Ned_: yep, node was already taken in debian [05:13] Ned_: :-( [05:13] mape: we should fight for it [05:13] Ned_: that sucks for #!/usr/local/ [05:13] Ned_: yes [05:15] aaronblohowiak has left the channel [05:15] aaronblohowiak has joined the channel [05:15] aaronblohowiak: well, /usr/local is wrong.. should always use env for shebang for exactly this reason [05:16] jedschmidt has joined the channel [05:16] rictic has joined the channel [05:19] aaronblohowiak: you're right that it stinks, though [05:19] Ned_: aaronblohowiak: sure, the problem with Debain is the binary is a different name :-( [05:19] Ned_: which is a bit shit ... [05:19] Ned_: nodejs rather than node [05:19] Ned_: so regardless of path, [05:19] Ned_: it's poked :-9 [05:19] Ned_: err, :-( [05:20] aaronblohowiak: yea, they'd need to make a symlink in path with the right name. :-( [05:21] mscdex: :( [05:22] Ned_: heh, lots-o-sadfaces [05:25] mscdex: you broke the chain! :P [05:26] mscdex: i think it's going to take me as long as it took me to write the ncurses binding to write the documentation for it [05:26] mscdex: heh [05:26] Ned_: my bad [05:26] Ned_: mscdex: documentation is seriously useful though [05:27] mscdex: i know [05:27] Ned_: it stops people asking you silly questions ;-) [05:27] Ned_: and people are more likely to use your stuff :p [05:27] mscdex: i should just write: [05:27] mscdex: :P [05:27] Ned_: heh [05:27] Ned_: people will poke you with sharp stuff if you do that [05:28] mscdex: as long as it's not c sharp [05:28] aaronblohowiak: the redis-client documentation punts similarly, but it is pretty straightforward as far as protocols go, and the excepts are very well documented and explained [05:33] Ned_: mape: did you see my client lib is on npm now ? [05:33] mape: the irc one? [05:33] Ned_: ya [05:33] Ned_: npm install irc [05:33] Ned_: :-) [05:33] mape: nice :) [05:33] Ned_: I had a chat to isaacs and got it all sorted [05:33] Ned_: :p [05:34] Ned_: I might write some methods this evening for sending/joining etc ... [05:34] mape: how is the disconnect/reconnect handling? [05:34] Ned_: mape: well, if the socket closes, it reconnects [05:35] mape: is there a good guide to adding things to npm? [05:35] Ned_: (I tested it by KILLing the client from my own IRC server) [05:35] Ned_: mape: yeah, npm docs are good [05:35] Ned_: mape: it also autorejoins when kicked :-) [05:35] Ned_: (although that's an option) [05:35] mape: why the need to ask isaac then? [05:35] Ned_: mape: well, I didn't know anything about npm [05:35] Ned_: he pointed me at the docs [05:35] Ned_: and then I found a few bugs :p [05:35] mape: ah k [05:35] Ned_: because I was doing shit in weird ways ... [05:36] Ned_: but it's all going nicely now [05:36] mape: neat [05:37] bmizeran_ has joined the channel [05:38] Ned_: any suggestions for event names for PM messages [05:38] Ned_: atm I have event "message" [05:38] Ned_: I'm thinking event "privateMessage" [05:38] Ned_: potentially also event "#" [05:38] Ned_: so you can just do something like [05:38] Ned_: addListener('#Node.js', function (nick, text) {}) [05:39] Ned_: not sure if that's a good idea or not ... [05:39] mape: have you looked at jQuery event namespacing? [05:39] Ned_: no [05:39] JimBastard has joined the channel [05:39] Ned_: ACTION googles [05:39] JimBastard: javascript party [05:40] mape: they have things like $('.thingy').bind('click.myPlugin', function(){}) [05:40] JimBastard: yo [05:40] JimBastard: i know abouts behavior bindings [05:40] JimBastard: sup [05:40] mape: so.. addListener('join') addListener('join#node.js') [05:40] Ned_: mape: yeah, I'm just reading http://docs.jquery.com/Namespaced_Events [05:41] Ned_: mape: ahhh, nice ... [05:41] Ned_: that could work nicely :p [05:41] JimBastard: also where the fuck is binary42 [05:41] stevendavie has joined the channel [05:41] Ned_: mape: how about private messages ? [05:42] mape: pm ? query? [05:42] Ned_: yeah [05:42] Ned_: oh, those are suggestinos [05:42] Ned_: :p [05:42] mape: hehe [05:42] mattly has joined the channel [05:44] Ned_: Hmmm ... [05:44] Ned_: addListener('pm', function (nick, message) {} ) [05:44] Ned_: that'll do :-) [05:45] mape: small and handy [05:45] Ned_: need to think about "actions" too [05:45] Ned_: like should I emit [05:45] Ned_: ACTION jumps [05:45] Ned_: different to [05:45] Ned_: jumps [05:45] Ned_: :p [05:45] mape: what about sending instead of the nick the user as an object? [05:46] Ned_: mape: yes, I was thinking that too [05:46] Ned_: and actually storing channels as objects too [05:46] mape: so you would do user.nick instead [05:46] linuxsable has joined the channel [05:46] Ned_: mape: well, you can make them stringify too right ? [05:46] Ned_: does nodejs support that ? [05:46] mape: Hmm not that I know of [05:46] Ned_: oh, :-( [05:49] Ned_: ACTION needs to find markdown syntax highlighting for vim [05:49] Ned_: heh, found it [05:51] sztanpet has joined the channel [05:54] Ned_: awesome, think I've done those events [05:54] mape: :) [05:55] Ned_: mape: pushed :-) [05:55] Ned_: actually, might have been worth testing it ;p [05:55] Ned_: but I'll do that in a bit ... [05:55] mape: hehe yeah [05:55] Ned_: http://github.com/martynsmith/nodejs-irc/blob/master/API.md [05:55] Ned_: you can read the events there :-) [05:55] Ned_: I added docs for the send() function too [05:56] Ned_: which I omitted the first time aroudn [05:56] mape: Hmm most modules are prefixed just node- [05:56] Ned_: yeah, [05:57] Ned_: it's just called "irc" on npm [05:57] Ned_: it'll be fine ... fine just fine [05:57] Ned_: :p [05:57] mape: k [05:57] Ned_: I guess now would be the time to rename it if I was going to [05:57] Ned_: since probably only a handful of people have it checked out :p [05:57] mape: jup [05:57] Ned_: wadda you reckon ? [05:57] Ned_: rename it ? [05:57] Ned_: or just leaveit ? [05:58] mape: i probly would rename, just since it is nice to stick to somekinda standard [05:58] Ned_: :-) [05:58] Ned_: okay, well I have to go to the shop right now [05:58] Ned_: but I'll be back in 30 minutes or so [05:58] Ned_: then I'll rename [05:59] Ned_: and prod you to update your origin :-) [05:59] Ned_: I should get a gravatar too [05:59] mape: hehe will do [05:59] Ned_: bbiab [06:01] smtlaissezfaire has joined the channel [06:12] mouarf has joined the channel [06:13] SamuraiJack has joined the channel [06:15] mikeal has joined the channel [06:23] bpot_ has joined the channel [06:24] bpot_ has left the channel [06:25] sztanpet has joined the channel [06:26] tlrobinson_ has joined the channel [06:31] towski has joined the channel [06:31] steadicat has joined the channel [06:32] sztanpet has joined the channel [06:40] steadicat has joined the channel [06:41] sztanphet has joined the channel [06:41] pkrumins: _ry: why is Buffer's constructor private in node_buffer.cc? [06:42] pkrumins: I'm building a module that uses a Buffer and now I can't construct an object because of that. [06:43] JimBastard has joined the channel [06:47] sztanpet has joined the channel [06:49] Ned_: mape: renamed [06:49] mattly has joined the channel [06:50] Ned_: mape: I need to do another release to npm now :-) [06:50] Ned_: after dinner [06:52] sztanphet has joined the channel [06:58] mscdex: dinner at 3am? ;-) [07:00] aaronblohowiak: i am hungrier and hungrier [07:07] Ned_: mscdex: I'm in NZ [07:07] Ned_: :p [07:07] mscdex: heh [07:07] Ned_: it's 7pm here [07:07] Ned_: I'm like way ahead of you! [07:09] Ned_: mape: pushing new version to npm :-0 [07:11] Ned_: crap ... [07:11] Ned_: npm broke :-( [07:11] Ned_: I can't push next version [07:13] mscdex: what's the future like? :D [07:13] Ned_: we have flying cars and everything! [07:13] mscdex: :0! [07:14] mscdex: what happens to node.js? [07:14] Ned_: ever heard of skynet ? [07:14] Ned_: :p [07:14] aaronblohowiak: spoilers! [07:14] mscdex: :> [07:14] Ned_: bother ... need to go drop GF off at Opera ... [07:14] Ned_: bbs :p [07:18] mscdex: 43 more functions to document. kill me now lol [07:18] stalled has joined the channel [07:19] rndmcnlly: what's the write way to simply plug a readstream into a writestream and not stay involved? [07:19] rndmcnlly: right* [07:26] mscdex: haha, awesome: http://www.groklaw.net/article.php?story=20100513121121635 [07:31] qFox has joined the channel [07:33] Ned_: rndmcnlly: can you just add a data listener that calls the write method on the other object ? [07:33] sztanpet has joined the channel [07:34] loxs has joined the channel [07:34] loxs: does socket.io have the notion of "channels"? I mean, is there some way to group clients together and send messages to a chosen group. [07:38] sveimac has joined the channel [07:39] mscdex: loxs: i don't think so [07:40] mscdex: loxs: faye supports channels out of the box, but doesn't have the number of transports socket.io does/will soon [07:41] loxs: mscdex, so what browsers are not supported in faye? [07:42] mscdex: iirc it only supports xhr long polling [07:42] mscdex: and in-process communication [07:42] mscdex: i can't remember if it supports cross-domain requests or not [07:43] micheil: anyone seen tim / creationix about? [07:44] mscdex: earlier tonight, yeah [07:46] pandark_ has left the channel [07:47] vandrijevik has joined the channel [07:48] sztanphet has joined the channel [07:52] sixtus42 has joined the channel [07:55] TobiasFar has joined the channel [08:00] sztanpet has joined the channel [08:01] sixtus42 has joined the channel [08:01] smtlaissezfaire has joined the channel [08:03] sztanphet has joined the channel [08:04] Elfix has joined the channel [08:05] JimBastard: zzzzz [08:06] JimBastard: cant sleep must finish codez [08:09] rndmcnlly: Ned_: thanks, I guessed that right after I asked, I've now got my nice sample-by-sample audio data streaming via http [08:11] sztanpet has joined the channel [08:11] rndmcnlly has left the channel [08:12] Ned_: JimBastard: perhaps sleep _then_ finish codez ? [08:12] JimBastard: nope, im almost done porting this lib [08:12] JimBastard: its working, i just gotta make it behave nice in the browser [08:12] JimBastard: and generate some sample data sets :-D [08:12] JimBastard: im gonna sign out and come back when im done [08:12] JimBastard: then hackernews and reddit yaaa [08:12] Ned_: heh, I was image searching for asleep on keyboard, and found this: http://almerimarlifestrays.com/blog/wp-content/uploads/2009/03/kitten-asleep-on-keyboard.jpg [08:12] JimBastard: (if im not still banned) [08:13] JimBastard: bbl [08:13] sztanphet has joined the channel [08:18] sztanpet has joined the channel [08:18] DracoBlue has joined the channel [08:21] sztanpet has joined the channel [08:27] sztanpet has joined the channel [08:30] sztanpet has joined the channel [08:31] aaronblohowiak: yaaaa [08:33] sztanphet has joined the channel [08:35] peutetre has joined the channel [08:37] sztanpet has joined the channel [08:39] Phazm has joined the channel [08:39] sztanpet has joined the channel [08:47] sztanpet has joined the channel [08:48] dgathright has joined the channel [08:49] sztanphet has joined the channel [08:50] derbumi has joined the channel [08:50] DracoBlue has joined the channel [08:51] sztanpet has joined the channel [08:55] sztanphet has joined the channel [09:05] mitkok has joined the channel [09:10] Ned_: does fs.watchFile() use inotify ? [09:11] aaronblohowiak: Ned_: it works on osx, so i dont think so [09:11] riottaba has joined the channel [09:12] aaronblohowiak: there is also a millisecond delay [09:12] Ned_: heh [09:13] Ned_: yes, it defaults to "0" [09:13] Ned_: and there's a persistent option [09:13] Ned_: I'm a little confused as to what they are ... [09:13] Ned_: _ry: do you know ? (if you're about) [09:17] MattJ has joined the channel [09:18] kkaefer: Ned_: afaik it uses inotify where it's available [09:18] kkaefer: Ned_: it falls back to polling on mac os x [09:18] kkaefer: by default, it polls every 5 seconds on os x iirc [09:18] kkaefer: (when it's polling) [09:19] Ned_: right ... [09:19] Ned_: so on Ubuntu Lucid it'll be using inotify ? [09:19] kkaefer: it should [09:19] Ned_: cool [09:19] kkaefer: there is a way to implement something like inotify on os x as well [09:19] kkaefer: http://en.wikipedia.org/wiki/FSEvents [09:19] Ned_: :-) [09:19] aaronblohowiak: i wonder what persistent means [09:20] Ned_: indeed [09:24] markwubben has joined the channel [09:24] nsm has joined the channel [09:28] nsm has joined the channel [09:28] nsm has joined the channel [09:28] _ry: watchFile uses inotify [09:28] _ry: (on linux, of course) [09:29] _ry: it only polls on mac [09:30] _ry: pkrumins: hm [09:30] _ry: pkrumins: i guess that should be changed then [09:30] _ry: ACTION sleep [09:31] nsm has joined the channel [09:31] Ned_: :_) [09:31] Ned_: thanks _ry [09:37] javajunky has joined the channel [09:39] pandark_ has joined the channel [09:44] hassox has joined the channel [09:55] mscdex: any V8 gurus awake? [09:58] hassox: hey guys [09:58] mape: morning [09:58] hassox: anyone up who can tell me how to initialize a stream? [09:58] hassox: I can't seem to find the right module (and it's not in the docs) [10:00] aaronblohowiak: what do you mean by initialize a stream? [10:01] hassox: I want a stream that I can write to, that I can add listeners to to do stuff [10:01] hassox: reading at the top of the docs there are a Readable and Writable stream... but I can't find a general stream implementation to instantiate [10:02] DrFlaska has joined the channel [10:03] aaronblohowiak: there isn't one, as such, yet [10:03] aaronblohowiak: there is a basic interface that they all implement [10:03] aaronblohowiak: and you are free to write your own that conforms to that interface [10:04] mape: Hmm tried to hook up repl using: repl.start('bot> ').scope.users = users; [10:04] aaronblohowiak: so, you create an instance of EventEmitter and handle the pause, resume and destroy methods and then the right events [10:04] mape: Shouldn't I be able to interact with that? Or does it just copy the current value at init and then it has nothing to do with the rest of the program anymore? [10:05] aaronblohowiak: at the top you will see it says that stream is an "abstract interface", which means that there is not a concrete implementation [10:06] hassox: right [10:06] hassox: ok I'll make something then [10:09] MattJ: hassox: I have an emit and addListener I've been using: http://code.google.com/p/prosody-modules/source/browse/mod_tcpproxy/web/xmpp.io.js#52 [10:11] hassox: MattJ: champ thanx :D [10:12] MattJ: Ah, I made a slight extension... the 3rd parameter to addListener specifies what you want 'this' to be inside the callback [10:13] MattJ: That always annoys me in Javascript :) [10:35] aho has joined the channel [10:35] derbumi has joined the channel [10:43] mscdex: whew, documentation is done and done [10:43] Tim_Smart has joined the channel [10:47] DrFlaska has joined the channel [10:48] mape: mscdex: It is never done ;) [10:48] mscdex: hehe [10:48] mscdex: readme just went from 476b to 17k :P [10:49] mape: tiny improvement! [10:50] mscdex: there's just one last thing left to do yet, which is add access to the special line graphics characters [10:50] mscdex: need to figure out how to add an object to a class in V8 [10:52] mscdex: snooze time! [10:53] Ned_: mape: you came back :p [10:53] Ned_: mape: I renamed my repo [10:54] mape: nice :) [10:56] mape: I'll be back in a bit [10:57] Ned_: heh [10:57] Ned_: righto [11:11] juye has joined the channel [11:11] javajunky has joined the channel [11:17] pkrumins: _ry: should also make node_buffer.h available to addons [11:19] olegp has joined the channel [11:46] jwinn has joined the channel [11:55] riottaba_ has joined the channel [12:17] pkrumins: _ry: got a question, how would I emit a Buffer? [12:18] pandark_ has joined the channel [12:18] juye has joined the channel [12:23] pdelgallego has joined the channel [12:27] ncb000gt has joined the channel [12:27] sztanpet has joined the channel [12:31] sztanphet has joined the channel [12:32] ncb000gt: how is everyone today? [12:32] MattJ: Good, good [12:33] hassox has joined the channel [12:34] sztanpet has joined the channel [12:35] ncb000gt: Good deal. Damn cat wouldn't let me sleep. He was all hungry and stuff...what's up with that? [12:35] ncb000gt: pfft [12:35] MattJ: I don't have a cat, so I wouldn't know :) [12:38] MattJ: Finally fixed a bug that's been hanging over me for weeks [12:38] polo has joined the channel [12:38] MattJ: Now furiously removing dozens of print()s from my code so I can commit the fix :) [12:40] sztanpet has joined the channel [12:42] kriszyp has joined the channel [12:42] ncb000gt: nice :) [12:46] Ned_: MattJ: it's like http://www.snotr.com/video/528 [12:47] Ned_: ncb000gt: you might wanna watch that too if you haven't seen it before ;-) [12:48] MattJ: :D [12:48] MattJ: Yes, that's how I imagine cats [12:48] ncb000gt: Ned_: ahh yes. i've seen it before [12:48] Ned_: MattJ: it's exactly how they are ... [12:48] Ned_: :p [12:49] ncb000gt: Ned_: That was pretty much how I woke up... [12:49] ncb000gt: =\ [12:49] Ned_: :-( [12:51] ncb000gt: Oh well, time for some node.js eh? :) [12:51] ncb000gt: Can thank the cat for that [12:51] Ned_: :-) [12:51] Ned_: it's nearly 1am here [12:51] ncb000gt: haha! [12:51] Ned_: it's sleeptime for Ned [12:51] ncb000gt: it's 9AM here [12:51] Ned_: I did some more patches to my IRC lib [12:51] ncb000gt: that said I was up till 3am playing SC2 [12:51] Ned_: now I need isaacs to come back and unbreak npm for me :p [12:51] Ned_: lol [12:51] ncb000gt: Ned_: nice [12:53] Ned_: anyway, laters [12:53] ncb000gt: later [12:54] nsm has joined the channel [12:57] juye has left the channel [13:13] thotypous has joined the channel [13:19] maushu has joined the channel [13:20] nsm has joined the channel [13:21] towski has joined the channel [13:26] airportyh has joined the channel [13:26] ncb000gt: mape: yt? [13:26] mape: mm [13:27] ncb000gt: does your graph reset daily? [13:27] mape: nah I reset it [13:28] mape: better to have actual data [13:28] ncb000gt: aha :) I noticed it was cleared. just curious. [13:28] mape: i will try to make sole autoclearing [13:28] mape: *some [13:30] joshr has joined the channel [13:41] ncb000gt: cool [13:47] jedschmidt has joined the channel [13:54] zimbatm has joined the channel [13:54] zimbatm: hello [13:54] zimbatm: how do you profile memory leaks again ? I can't seem to find good references of google [13:57] perdix has joined the channel [14:01] smtlaissezfaire has joined the channel [14:01] jedschmidt has left the channel [14:04] derRichard: zimbatm: you can use valgrind [14:06] zimbatm: derRichard: do you have any other solutions ? valgrind on OSX 10.6.3 is broken [14:06] derRichard: boot a linux system [14:07] zimbatm: sure, that's also a solution [14:07] derRichard: the hans böhm gc is also able to detect mem leaks. but i've never used it on osx [14:07] pkrumins: _ry: will send a patch (pull request) shortly about improvements in Buffer (so that it can be used from addons or other node classes). [14:10] towski has joined the channel [14:10] mattly has joined the channel [14:11] ncb000gt: zimbatm: what about valgrind is broken on osx (i don't have osx)? [14:12] derRichard: ncb000gt: valgrind is linux only. there is a hacky osx port. [14:12] ncb000gt: derRichard: i see [14:12] derRichard: i think osx is broken, not valgrind ;-) [14:13] zimbatm: ncb000gt: last official release of valgrind targets OSX 10.5.X. there are some patches in the bugtracker, but none fixes all the problems. [14:13] ncb000gt: derRichard: agreed [14:14] zimbatm: ncb000gt: I don't remember the specifics, but it's related to memory access [14:14] N` has joined the channel [14:14] ncb000gt: zimbatm: that's unfortunate [14:15] ithinkihaveacat has joined the channel [14:16] nsm has joined the channel [14:16] zimbatm: derRichard: I'm first going to look at node_g, since it's probably leaking in javascript land [14:17] zimbatm: (first) [14:19] derRichard: node_g? [14:19] pandark_ has joined the channel [14:20] ncb000gt: zimbatm: what are you doing? where do you suspect the leak is coming from? [14:20] softdrink has joined the channel [14:21] zimbatm: I'm doing some 1-N http streaming. It's probably some buffer not cleaning up [14:21] ncb000gt: hmm, gotcha [14:22] jenlindner has joined the channel [14:22] mrjjwright has joined the channel [14:23] mjijackson has joined the channel [14:26] pkrumins: Anyone who's coded V8 online? [14:27] pkrumins: Can't figure out how to Emit a Buffer. [14:27] kkaefer: seen felixge? [14:27] kkaefer: !seen felixge [14:27] jenlindner has joined the channel [14:29] smtlaissezfaire has joined the channel [14:40] towski has joined the channel [14:45] smtlaissezfaire has joined the channel [14:45] jenlindner has left the channel [14:49] lifo has joined the channel [14:50] juvenn has joined the channel [14:53] stevestmartin has joined the channel [14:58] sztanphet has joined the channel [15:12] creationix has joined the channel [15:14] alexiskander has joined the channel [15:15] sztanpet has joined the channel [15:18] dwww has joined the channel [15:26] towski has joined the channel [15:32] DracoBlue has joined the channel [15:40] SvenDowideit has joined the channel [15:48] smtlaissezfaire has joined the channel [15:51] towski has joined the channel [15:53] softdrink has joined the channel [15:56] jcouture has joined the channel [15:56] iheartnodejs has joined the channel [15:56] jcouture has left the channel [16:00] smtlaissezfaire has left the channel [16:01] smtlaissezfaire has joined the channel [16:03] steadicat has joined the channel [16:06] MattJ has joined the channel [16:06] rolfb has joined the channel [16:11] javajunky has joined the channel [16:15] towski has joined the channel [16:23] ncb000gt has joined the channel [16:30] creationix has joined the channel [16:37] sveimac_ has joined the channel [16:37] sveisvei has joined the channel [16:38] loxs has joined the channel [16:38] loxs: how do I use functions that I define in a separate file? (other than the one I run with node myfile.js) [16:40] mscdex: loxs: add the functions to the "exports" object. [16:40] dgathright has joined the channel [16:40] gwoo has joined the channel [16:41] ncb000gt: loxs: you need to add the function to the exports object in the other file, then require that file in myfile.js. You then can access the other functions. [16:42] vmx has joined the channel [16:42] loxs: I see, thanks [16:44] ncb000gt: sure [16:45] vmx: hi. is there a nodejs based irc daemon other than this gist? https://gist.github.com/a3d0bbbff196af633995 [16:45] mape: what is wrong with that one? [16:46] mscdex: well for one, it's still using the tcp module :P [16:46] ncb000gt: vmx: i'm unaware of one, I believe _ry wrote that as an example for JSConf.eu 2009 [16:46] mape: mscdex: shush :P [16:46] ncb000gt: lol [16:47] vmx: k, thx [16:47] mape: god damit a beer in the sunshine can make one feel good [16:48] ncb000gt: mape: I wish I could, open container laws prohibit that since I don't have my own land. :( [16:49] mape: Balcony? Porch? [16:49] mscdex: outhouse? [16:49] mscdex: :P [16:49] mape: hehe [16:49] ncb000gt: LOL [16:50] mape: We have the same laws in Sweden but no one cares unless you are taking a piss as public buildings whilst consuming alcohol [16:51] ncb000gt: so it's ok if you're not consuming alcohol?!? I need to move to Sweden. [16:51] mape: Well, not really [16:51] mape: Never tried it sober though [16:52] ncb000gt: Score! Going to a BBQ later. Will get my beer + sun + steak fix. [16:52] ncb000gt: hah! [16:53] mape: Bah I need isaacs to add jsonp [16:54] mscdex: heh [16:54] mscdex: i just used a server-side proxy [16:55] mape: but that is ugly! [16:55] loxs: I'm looking at express at the moment. But it's too "big" for my needs, are there other frameworks? [16:55] mape: fab [16:55] mape: loxs: http://wiki.github.com/ry/node/modules [16:56] stevestmartin has joined the channel [16:56] loxs: ah, thanks mape that's exactly what I needed :) [16:56] mape: :) [16:57] ncb000gt: loxs: there are a lot of modules/frameworks available. it's fairly impressive actually. :) [16:57] steadicat has joined the channel [16:57] loxs: ncb000gt, I feel like my head will explode. I have no idea what to pick for my project :) [16:58] mape: Guess the only issue is that there is no "USE THAT!" module [16:59] loxs: is there something like python's virtualenv? [17:00] kriszyp: is there a way to call setInterval such that it doesn't block the exit of the event loop (like {persistent: false} in watchFile)? [17:00] mape: package manager? [17:00] ncb000gt: loxs: there are a few projects: nvm, nave(new), and a couple others iirc [17:00] mape: kriszyp: clear the interval if it is ready to close? [17:01] kriszyp: how do you know if the event loop is ready to close? [17:01] loxs: mape, it's not a package manager, but a virtual environment to install packages there, instead of polluting my system [17:01] loxs: a directory [17:01] mape: Ah k [17:01] ncb000gt: loxs: nvm kind of does that, but not quite, it's not like the python virtualenv if that is what you are getting after [17:02] ncb000gt: you can't just put it in some dir you specify with or without libs [17:02] micheil: loxs: just add a path somewhere, then add in a require paths [17:02] micheil: require.paths.unshift(PATH) [17:02] micheil: iirc. [17:02] loxs: I see, thanks [17:03] dgathright has joined the channel [17:03] mape: depending of preference and order of pats [17:03] mape: *paths [17:03] mscdex: hmm... would ncurses be considered "Debugging / Console Utilities" or "Other" .... or "Graphics"? [17:03] loxs: wow, node.js is a bigger chaos than python web :) [17:04] mape: mscdex: Id put it in other, you always find the cool wonky stuff in others [17:04] mscdex: hey now, it's not so wonky :D [17:04] mape: wonky === 'not run of the mill software' [17:06] ineation has joined the channel [17:06] smtlaissezfaire has joined the channel [17:06] loxs: wow, it's really crazy :) I guess because of this I'll go the hard way. Start with pure node.js then search modules for what I need [17:07] mscdex: hmm, wonky to me means unreliable/unstable [17:07] mape: mscdex: I'm swedish [17:07] pjb3_ has joined the channel [17:07] mape: I get to use words I don't understand [17:07] mscdex: hehe [17:08] mape: hah! wonky === 'odd' [17:08] mape: that is what I'm going after [17:08] mscdex: i've had swedish cousine before [17:08] mape: crazy, loony [17:08] mape: "a mix of bonkers and wacky." [17:08] mscdex: that translates into unstable :P [17:08] mape: hehe [17:10] micheil: mscdex: I think the first thing to do would be to add it to npm [17:10] loxs: hmm, there doesn't seem to be a module for openid? [17:10] ncb000gt: loxs: that's a good way to get into node. once you get it you'll realize what most of the libraries start to provide [17:10] mape: loxs: there are, tons actually, one that works with express that does oath twitter and facebook if I recall correctly [17:11] mscdex: micheil: i'm waiting until i tag a release before i do that, so i can keep consistent version names between npm and github [17:11] micheil: mscdex: tag a very early release then ;P [17:11] micheil: 0.0.X [17:11] loxs: ncb000gt, yeah, but this way I'll lose too much time in finding "the right way to do it", rather than writing my project :) [17:11] micheil: or rather, 0.X.Y [17:11] mscdex: micheil: heh. i've posted a feature request to add a special version that points to a master/head/trunk version [17:12] ncb000gt: loxs: who doesn't enjoy shaving a few yaks? [17:12] ncb000gt: >=D [17:12] micheil: mscdex: good idea [17:12] loxs: ncb000gt, sorry, what's yaks :) [17:12] mape: http://1.bp.blogspot.com/_bvGTabKRLrk/S-rLF0vdveI/AAAAAAAAAGY/9ZmXsla9NKs/s1600/Untitled.jpg [17:13] ncb000gt: loxs: http://www.catb.org/~esr/jargon/html/Y/yak-shaving.html [17:14] creationix has joined the channel [17:14] ncb000gt: loxs: more specifically http://www.rarebreeds.co.nz/yak.jpg [17:14] ncb000gt: try shaving that [17:14] ncb000gt: ... [17:15] mscdex: that looks like one unhappy yak [17:15] ncb000gt: mscdex: that's because it's unshaven [17:15] ncb000gt: :( [17:15] mscdex: :( [17:15] loxs: ncb000gt, yeah, that's what I'm talking about. At the moment I prefer to be a bit more productive :) [17:16] ncb000gt: loxs: aye, I was being sarcastic ;D [17:16] micheil: couch is seriously confusing; is it a bird, is it a plane, is it a rocket? [17:16] ncb000gt: micheil: yes [17:16] loxs: micheil, it certainly is a lot less confusing than node.js ;) [17:16] mape: mscdex: planedb? [17:16] micheil: I'd say more [17:16] micheil: it's not at all like any of the other dbs I've worked with [17:17] loxs: it's much better :) [17:17] mscdex: mape: huh? [17:17] micheil: (mongo, redis, riak, mysql, sqlite, etc) [17:17] mape: mscdex: -> micheil [17:17] ncb000gt: that's because it's interface is purely http based [17:17] mscdex: oh [17:17] micheil: ncb000gt: but even then, it doesn't even have a standard startup thing like the other databases [17:18] ncb000gt: micheil: standard startup thing? [17:18] loxs: micheil, this may be a scary thing to say, but it doesn't need to :) [17:18] micheil: the others, you run the as a server, and you manipulate tables / databases / rows from the server [17:18] ineation has joined the channel [17:18] micheil: in couch you "design" your database by the looks [17:18] ncb000gt: micheil: futon is part of couchdb. it provides all of that in the browser [17:19] micheil: ncb000gt: I'm not looking for a GUI [17:19] ncb000gt: micheil: but...it's got ajax. [17:19] ncb000gt: o.0 [17:19] loxs: micheil http://localhost:5984/_utils [17:19] mape: I always thought the cool guys used mongo and people out of touch used couch which was "almost as good" [17:19] micheil: mape: I use mongo personally for most things, and it makes sense [17:20] loxs: it's really cool to shoot directly from your database to the client, via comet :D [17:20] ncb000gt: mape: I have a project that uses mongo and others using couch [17:20] mape: how do you make sure I don't remove every entry if I have direct access to the db? [17:20] micheil: it's probably this stuff that makes it so confusing: http://books.couchdb.org/relax/design-documents/figure/design-doc.jpg [17:21] loxs: mape, reverse proxies [17:21] ncb000gt: micheil: couchapp helps to make that less of a PITA [17:21] mape: k [17:21] towski has joined the channel [17:21] micheil: I dunno, it just seems crazy to me to need to predefine things [17:22] loxs: OK, going down to that weird thing called node.js in order to fully utilize the power of couch :) [17:22] micheil: I like the idea of no schema though [17:22] loxs: thanks all for the help [17:22] ncb000gt: micheil: no schema is fantastic. [17:22] micheil: ncb000gt: and couch appears to have schema [17:22] ncb000gt: loxs: enjoy :) [17:23] ncb000gt: micheil: it has some underlying things in it that allow you to build webapps within it' [17:23] ncb000gt: micheil: but your data isn't set to a structure [17:24] ncb000gt: your data lives in json and is stored that way [17:24] loxs: micheil, and even better, it has ways to directly initiate a push from the database up to the client via Comet. Which is crazy :) [17:24] ncb000gt: you can use map/reduce to filter out the data you want [17:24] micheil: when do you actually need to push from the database to the client? [17:25] micheil: I can't think of a practical application for it [17:26] mscdex: change notifications? [17:26] ncb000gt: depending on the technology you're using, you could be doing that with chat, if you need to notify people of things [17:26] micheil: well, I mean, the client isn't going to be connecting and writing directly to your database [17:26] micheil: (otherwise you'd have no security) [17:26] micheil: no authentication, etc. [17:26] ncb000gt: i worked on a CMS at one point where I made a tool to push messages to users "The system is going down in 30 minutes" kind of things [17:27] mscdex: i guess it's something like a built-in socket.io type thing [17:27] micheil: ncb000gt: that's slightly different [17:27] mscdex: only streams specific stuff? i dunno [17:27] ncb000gt: micheil: somewhat. [17:27] micheil: I mean, in a chat application, you normally send stuff to a server which directs messages out to all the other clients [17:27] mscdex: i've never used any of the k/v stores before [17:28] micheil: one of those clients may actually be a database that stores the messages [17:28] micheil: ncb000gt: well, just a notification that a site is going offline wouldn't be a use case for a database [17:28] ncb000gt: micheil: depends on how it's developed and the underlying tech. [17:28] loxs: micheil, I'll tell you what I intend to do: [17:28] ncb000gt: micheil: sure, but that was an example. [17:29] micheil: because the latency involved in sending the message to the database, and then having the database send the message to the client would be too great [17:29] ncb000gt: micheil: it also wasn't built on couch [17:29] micheil: loxs: I'm not critisizing your choice of db, I'm just trying to understand why I _should_ use it [17:30] ncb000gt: micheil: you should use what you feel comfortable with and whatever tool gets your job done the best [17:30] loxs: micheil, a game. All kinds of things happen in the game, for example your character's stats (like health) change constantly (for example after a battle you get healed by somebody). Somebody heals you (this gets written to the database). And the database instantly pushes that to your browser. So yor GUI gets updated. [17:30] micheil: well, yeah, I guess the specific case is something like NPM [17:31] admc has joined the channel [17:32] micheil: loxs: the better solution, imho, would be to do both on the server; have the server use say, websockets, and upon a stat changing the server receives a message from the client about it. The server then sends this message down to the other clients asyncly, then also writes it / updates the clients record in the database [17:32] micheil: so that if the database happens to lag, it isn't too much of an issue [17:33] loxs: micheil, there is no difference between "the server" and "the database" in couch's case [17:33] micheil: then how do you handle user authentication? [17:33] mape: or validation of data? [17:33] loxs: micheil, the thing with couch is that you can't lose that info (it's securely written before updating the clients) [17:33] micheil: and then also why do you need something like node.js? [17:33] mape: Could I just heal micheil 200% ? [17:33] micheil: or even php or ruby [17:34] loxs: mape, well, the healing url has some validators :) [17:34] ncb000gt: validation is easy, you send data to couch and it can process it before storing [17:34] mape: loxs: and the validator is inside the couch logic? [17:34] micheil: loxs: I think it's more that in a game you want as little lag as possible. [17:34] loxs: mape, in my case, I plan it to be in node.js [17:35] loxs: micheil, couchdb is fast :) [17:35] ncb000gt: mape: the validation would be inside the processing logic [17:35] micheil: loxs: fast until a point, like everything. [17:35] loxs: micheil, but has things like master-master replication ;) [17:35] quirkey has joined the channel [17:35] micheil: it doesn't matter about replication, there's only so many servers you can throw at a problem [17:36] ncb000gt: micheil: untrue, look at google [17:36] ncb000gt: :) [17:36] micheil: they threw a heap of servers, then made bigtable [17:36] micheil: or whatever their database is called [17:36] micheil: but google isn't a case for low latency really [17:36] ncb000gt: and then threw more servers [17:37] ncb000gt: true [17:37] micheil: google searches are necessarily realtime like a game or chat application [17:37] loxs: micheil, I'm not saying that couch is one and only best solution. I'm just sayin it's really great. And perfectly fits my needs [17:37] ncb000gt: the point was that you can throw as many servers as is needed [17:37] ncb000gt: to sufficiently get the job done [17:37] micheil: not really. [17:37] ncb000gt: that said, there will be a point on any machine where the delay exists [17:37] micheil: what about twitter? they had to create flockdb [17:38] micheil: there's a point there too — not every company is google [17:38] loxs: besides, my game is turn based. so lag is not the biggest problem [17:38] ncb000gt: :) truth [17:38] micheil: loxs: in which case, why not use long-polling? [17:38] loxs: micheil, I will use long polling [17:39] micheil: I dunno, couch just doesn't make sense to me for a server side database [17:39] ncb000gt: micheil: why did twitter have to create flockdb? why not use cassandra or something that already existed? [17:39] micheil: I place it on par with sqlite [17:39] ncb000gt: and, the db has to be suitable for the problem domain [17:39] ncb000gt: couch doesn't answer every problem, neither does mongo or mysql [17:39] loxs: micheil, I'll put this between couch and clients. http://hookbox.org/docs/intro.html#overview [17:39] micheil: ncb000gt: because of the sort of data, that form of data couldn't be model in something like what existed [17:40] ncb000gt: social graphs? [17:40] cij has joined the channel [17:40] mape: twitter just open sourced their db? [17:40] ncb000gt: it's my understanding that is exactly what cassandra is good for [17:40] ncb000gt: maybe i'm wrong [17:40] ncb000gt: mape: http://github.com/twitter/flockdb [17:40] mape: yeah [17:40] exlt: twitter is using cassandra for some things, now ;) [17:41] ncb000gt: exlt: ah ok :) [17:41] exlt: ACTION works with jbellis and eevans [17:41] mscdex: didn't several major sites switched to cassandra? [17:41] mape: I just get a bad vibe the the project is prefixed with apache [17:41] mscdex: *switch [17:41] loxs: in my case, probably the best thing I like couchdb for is that I don't need to convert between json and some other format [17:42] mape: loxs: doesn't both couch and mongo use json (bson)? [17:42] ncb000gt: mscdex: facebook is using it, rackspace is funding that services company (can't remember the name), and there are a number of others [17:42] loxs: mape, bson is not json :) [17:42] mape: digg [17:42] ncb000gt: mape: couch uses json, mongo uses bson [17:42] ncb000gt: mape: why would apache give you a bad vibe? [17:42] mape: loxs: If you were drunk enough, would you be able to tell the difference? [17:42] mscdex: bson looks like bison :P [17:43] ncb000gt: lol [17:43] mscdex: have you ever tried to shave a bison? [17:43] exlt: this is one of the best comparisons on nosql software I've seen lately (it's all about the data ;) http://bit.ly/9SriZm [17:43] loxs: well, can you serve bson directly (no conversion at all) to the browser? [17:43] mape: loxs: I guess that also depends on the level fo drunkeness [17:43] mape: *of [17:44] ncb000gt: micheil: like I said, gotta use what you're comfortable with and what sways your opinion, I think mogno and couch are comparable and haven't heard arguments to sway me either way yet. both solve different problems really well and others not so well. [17:45] mape: nice that there is competition :) [17:45] ncb000gt: exlt: that was a good read :) [17:45] loxs: yup [17:45] ncb000gt: mape: agreed [17:45] micheil: oh well; I'm probably going to fork npm, I'm thinking a mongo backed app for it would be better [17:45] mape: :S [17:45] mape: fork are the root of all evil [17:45] ncb000gt: but...what about riak?!? [17:46] ncb000gt: mape: fork you [17:46] ncb000gt: /duck [17:46] ncb000gt: bbiaf [17:46] mscdex: is forking supposed to be opposite of spooning? :P [17:47] mape: less love [17:47] exlt: so contributing == spooning? kinda makes sense [17:47] mape: Jup [17:47] dgathright has joined the channel [17:48] mertimor has joined the channel [17:48] mscdex: haha [17:48] javajunky has joined the channel [17:55] steadicat has joined the channel [18:02] gsf has joined the channel [18:05] peutetre has joined the channel [18:10] mikeal has joined the channel [18:11] javajunky has joined the channel [18:16] mrjjwright has joined the channel [18:18] dgathright has joined the channel [18:29] loxs: do i need to restart the server every time I cnahge something in my code? [18:30] gwoo: loxs: yes [18:30] MattJ: loxs: http://github.com/lrbabe/node-DJs [18:30] aaronblohowiak has joined the channel [18:30] steadicat has joined the channel [18:31] tlrobinson: heh _ry is the steve jobs of node http://groups.google.com/group/nodejs/browse_thread/thread/d7a40b7fbb5c557c (see: http://www.telegraph.co.uk/technology/apple/7503635/The-top-five-terse-Steve-Jobs-email-replies.html ) [18:31] TobiasFar has joined the channel [18:31] isaacs has joined the channel [18:32] loxs: thanks MattJ [18:32] mape: isaacs: What do I need to do inorder for you to enable jsonp on the js repo so I can mockup an index page? :) [18:32] isaacs: mape: um.. mentioning your desire in IRC should be plenty. gimme a minute.. [18:32] isaacs: :) [18:33] mape: hehe great [18:40] dgathright has joined the channel [18:40] kriszyp: loxs: nodules provides module reloading [18:41] kriszyp: loxs: http://github.com/kriszyp/nodules [18:41] loxs: thanks [18:42] gwoo: kriszyp: is there any performance implications of that? [18:45] kriszyp: gwoo: well, it does a watchFile on all the loaded modules. In my project, with probably a couple hundred modules loaded that is about 0.1% CPU util, I think [18:46] kriszyp: so it seems to be pretty cheap [18:46] gwoo: kriszyp: nice [18:47] kriszyp: nodules also does dependency tracking, so when the actual module reloading takes place, it reloads that module and then reruns all the factories for modules that are dependent on the reloaded module, so it keeps references up to date with the minimal amount of re-execution and reloading of modules [18:49] kriszyp: so you have to have a pretty enormous project before the monitoring or reloading would be noticeable at all, I think [18:49] gwoo: sounds like it [18:50] gwoo: awesome [18:50] kriszyp: thanks to node being so ridiculously fast [18:51] isaacs: i swear, sometimes nginx is just inexplicably annoying. [18:55] mape: isaacs: :/ [18:55] bigwavejake has joined the channel [18:56] isaacs: mape: http://izs.me/jsonp.php/npm/0.1.10?callback=foo [18:56] isaacs: put the registry request between the .php and the ? [18:57] bigwavejake: is there a good debugger I can use with emacs for node.js? [18:57] tylerstalder has joined the channel [18:57] mape: isaacs: doesn't set application/json? [18:57] isaacs: i'll add something like that into the couchapp, but for now just doing it in stupid ugly broken php is the fastest piece of duct tape i've got handy. [18:57] mape: or hmm.. [18:57] isaacs: mape: it sets text/javascript, since it's sending a javascript function call, not a json object [18:58] mape: ah k, breaks the pretty jsonview [18:58] isaacs: mape: the registry itself sets app/json [18:58] isaacs: right [18:58] mape: so you are proxying it through php? [18:59] Yuffster has joined the channel [19:00] isaacs: mape: yeah. [19:00] isaacs: mape: not a good permanent solution, but it should get you up and running. [19:00] isaacs: mape: i'll probably take whatever markup you write and just replace the jsonp.php proxy with something living in the couchapp instead. [19:01] mape: Yeah [19:01] isaacs: mape: or maybe, if you don't need to do dynamic stuff, just wrap it around the data blob inline. [19:01] isaacs: then it's super easy [19:01] mape: I could do that though, sorry you had to do it :/ Think there is already an jsonp proxy using node [19:02] isaacs: eh. took like 2 minutes to write the php, and the rest of the time was wrestling with nginx trying to get it to run php files on npmjs.org, before i gave up and just threw it on a hostname that's already proxying to php. [19:02] mape: http://blog.jsonpify.com/ [19:02] mape: hehe [19:02] isaacs: oh, hey, nice [19:03] isaacs: http://jsonpify.com/api?url=http://registry.npmjs.org/npm/0.1.10&jsonp=foo [19:03] mape: jup, just figured it would be neat native [19:04] mape: But that works :) [19:04] isaacs: it'd be cool to just tack ?jsonp=foo on any registry url to get that, though [19:04] isaacs: shouldn't be too hard. [19:05] KungFuHamster has joined the channel [19:05] peutetre has joined the channel [19:05] mape: jsonp should really be default on open data sites using json [19:06] isaacs: mape: btw, if you want, you can play around with the jsregistry code yourself. the code is sitting at http://github.com/isaacs/js-registry [19:06] isaacs: mape: you'd need to get couch and couchapp installed. [19:06] isaacs: which is a few steps, but isn't all THAT hard, really [19:06] mape: yeah, got no experience with couchapp so figured you would be better at implementing it [19:06] isaacs: hehe [19:07] isaacs: you have only slightly less experience than me, then :) [19:07] mape: but I'll put the time into frontend rather then getting that up ;) [19:07] mape: hehe [19:07] isaacs: totally [19:07] isaacs: whatever works [19:07] isaacs: i think if you see the code you write, and then see what it translates into in the couchapp code, it'll be easy to see how it works. [19:10] derbumi has joined the channel [19:10] mape: k :) [19:21] devinus has joined the channel [19:25] loxs: and after all, which of the frameworks is the most "established" one? [19:25] smtlaissezfaire: Anyone in here ever used quickcheck? I'm wondering if a testing library like that would be useful in a non-purefly functional language like javascript. [19:25] mape: express [19:26] juvenn has joined the channel [19:27] drudge has left the channel [19:28] loxs: where does kiwi install packages? Is it a single location or does it spread the packages all over my system? [19:29] smtlaissezfaire: loxs: in ~/.kiwi, I believe [19:29] airportyh has joined the channel [19:29] dgathright has joined the channel [19:29] loxs: ah, it can be used with a normal user [19:29] loxs: cool [19:29] smtlaissezfaire: I haven't had much luck with kiwi - it's very alpha stuff. I've heard good things about npm. [19:30] mfeiri has joined the channel [19:30] loxs: smtlaissezfaire, but express tutorial uses kiwi [19:30] isaacs: mape: ok, i stopped being lazy and figured out how to do this with the couchapp code. [19:31] mape: isaacs: nice! [19:31] isaacs: mape: append "/jsonp/blerg" onto any registry GET url now, and you'll get a jsonp function [19:31] isaacs: mape: like http://registry.npmjs.org/npm/0.1.10/jsonp/foo [19:31] mape: hmm [19:31] smtlaissezfaire: loxs: I've been "vendorizing" all of my code so far - none of the package managers seem up to speed. I know the rubygems took years in the ruby world to get to something that wasn't totally crappy. [19:31] isaacs: this might break if you have a tag called "jsonp", but i think it'll still be fine, since it needs that second part to know it's a function. [19:31] mape: guess I'll have to trick jquery into handling that [19:31] mape: But nice :) [19:32] mape: that doesn't work in the root rhough? [19:32] mape: *though [19:32] isaacs: mape: yeah, the couchdb rewrites don't understand anything but path parts [19:32] isaacs: mape: not on the root, since you might have a package named jsonp with a tag of "foo", so it's ambiguous [19:32] isaacs: mape: but this works: http://registry.npmjs.org/all/jsonp/foo [19:33] isaacs: er... no it doesn't? hrm.... [19:33] mape: Hmm might be better if I do jsonpify? That way paths stay the same and it would be easy to convert [19:33] mape: # reason: "document not found" [19:33] mattly has joined the channel [19:34] isaacs: ah, ok, fixed it [19:34] isaacs: maybe i should use /-/jsonp/foo instead of just /jsonp/foo [19:34] isaacs: so it's less ambiguous, and then you know you can always append the same string to whatever, including the root. [19:34] mape: Hmm yeah, or I'll use a proxy [19:35] mape: I though it was just prefixing the GET['callback']+'('+data+')' but if it is an issue I think proxy is easier [19:35] isaacs: ok, last one, i swear... [19:35] isaacs: append /-/jsonp/blerg to any GETable registry url [19:35] isaacs: and that should totally work [19:36] isaacs: not for PUTs or attachments, of course. [19:36] mape: yeah just listing [19:36] isaacs: or for packages or versions: http://registry.npmjs.org/abbrev/1.0.1/-/jsonp/blerg [19:37] isaacs: and since - isn't valid as a tag, version, or package name, it should be totally unambiguous, if a little bit ugly [19:38] mape: hehe k [19:38] isaacs: it's still sending application/json which might throw off IE or something, but i can figure that out later when i integrate your markup stuff and start using the Accept: header [19:38] mape: Don't really care much about IE [19:38] isaacs: me neither :) [19:39] mape: That will be a later issue [19:42] ineation has joined the channel [19:43] mrjjwright has joined the channel [19:44] dekroning has joined the channel [19:48] justinlilly has joined the channel [19:49] isaacs: sure [19:49] isaacs: mape: i dunno, i guess i care more about sending correct HTTP headers. [19:50] isaacs: mape: if you say content-type:application/json, and then send a javascript function call, you're lying, in a way. [19:50] isaacs: feels a bit icky [19:50] mape: hehe [19:52] alexiskander has joined the channel [19:54] ashb: isaacs: what do i have to do to get my markdown module in npm? [19:58] mikeal: isaacs: did you push those registry changes to github yet? [20:02] gwoo: does anyone have some buffer examples? [20:05] _ry: gwoo: check out node-amqp [20:05] gwoo: oo good call [20:06] _ry: also test/simple/test-buffer.js [20:07] TobiasFar has joined the channel [20:08] charlesjolley has joined the channel [20:09] gwoo: of course. /me smacks forehead [20:09] gwoo: tests are really the great form of docs imo [20:11] mjijackson has joined the channel [20:14] _ry: gwoo: feel free to contribute examples to doc/api.markdown if you feel there is a specific thing missing [20:14] _ry: :) [20:14] gwoo: √ [20:15] _ry: gwoo: regarding docs [20:15] _ry: er [20:15] _ry: buffers [20:17] gwoo: hmm, i may not even need the buffers [20:24] ncb000gt has left the channel [20:24] isaacs_mobile has joined the channel [20:26] isaacs_mobile: Mikeal: yes [20:26] isaacs_mobile: Ashb: man npm-developers [20:28] loxs: hmm, is node.js designed to run without nginx in front? [20:31] gwoo: loxs: sure [20:37] polo has joined the channel [20:37] aaronblohowiak has joined the channel [20:39] saikat has joined the channel [20:41] sveimac has joined the channel [20:42] loxs: the tutorials I find about express tend to use kiwi for deps retrieval. Isn't there some tut showing how to do it without kiwi? [20:42] sveisvei has joined the channel [20:43] justinlilly: loxs: I think its because the author of express also wrote kiwi. [20:43] justinlilly: I just sucked it up and installed it. [20:44] loxs: justinlilly, can't it be done without installation system wide? [20:44] justinlilly: that's the thing I didn't like. [20:44] justinlilly: There's a fork of it on github which I think lets you do that, but you have to manually edit the make file. [20:45] loxs: justinlilly, If I install it with kiwi, where does it go in the system? is it easily removable? [20:46] loxs: or manually [20:46] justinlilly: there's a `make uninstall` command if I recall [20:46] justinlilly: so you should be fine. [20:48] richcollins has joined the channel [20:50] steadicat has joined the channel [20:50] marktlang has joined the channel [20:54] dgathright has joined the channel [21:05] gwoo: what's the easiest way to parse a complete http message [21:05] gwoo: ? [21:05] gwoo: does HTTPParser handle strings? [21:09] smtlaissezfaire: gwoo: Build a GUI interface in visual basic: http://www.youtube.com/watch?v=hkDD03yeLnU [21:09] gwoo: smtlaissezfaire: no thanks [21:10] softdrink has joined the channel [21:10] stevel has joined the channel [21:11] stevel: i'm having trouble building v0.1.95 on my solaris (x86) box.. anyone seen this error before: [21:11] stevel: 50/67] libv8.a: deps/v8/SConstruct -> build/default/libv8.a [21:11] stevel: TypeError: cannot concatenate 'str' and 'NoneType' objects: [21:11] stevel: File "/export/home/stevel/node-v0.1.95/deps/v8/SConstruct", line 666: [21:11] stevel: SIMPLE_OPTIONS = { [21:11] stevel: this is with Python 2.4.4 [21:13] TobiasFar has joined the channel [21:13] gwoo: stevel: looks like a v8 issue [21:14] ewdafa_ has joined the channel [21:14] gwoo: http://8.19.35.89:8010/grid [21:14] gwoo: http://buildbot.nodejs.org:8010/waterfall [21:15] gwoo: stevel: looks like the buildbot is having the same issues [21:15] stevel: lovely :( [21:15] stevel: the solaris buildbot there looks like it's trying to use the wrong make [21:16] gwoo: are you using the release? [21:16] stevel: yeah [21:17] stevel: downloaded from the homepage link: http://nodejs.org/dist/node-v0.1.95.tar.gz [21:17] Aria has joined the channel [21:22] aaronblohowiak: someone last night had solaris issues [21:22] aaronblohowiak: gwoo: what do you mean by parse a complete http message? get the headers and such? [21:22] gwoo: yeah [21:23] aaronblohowiak: i believe that is handled down in c-world for the built-in http server [21:23] gwoo: i found a pure js parser, but i was hoping to use the internal one [21:23] stevel: ah, looks like the toolchain guess is failing [21:23] stevel: it's returning None, which is why it can't match it up [21:24] gwoo: aaronblohowiak: yeah thats the HTTPParser it seems [21:24] gwoo: but i think it only handles sockets [21:24] aaronblohowiak: gwoo: you want to give it a string ? [21:24] gwoo: yeah [21:24] aaronblohowiak: gwoo: interesting. why? [21:26] marktlang has joined the channel [21:27] mikeal has joined the channel [21:27] gwoo: i can't use the http.Client but i have a complete set of headers in string formate [21:27] darkf has joined the channel [21:35] stevel: woot. got it building finally. [21:35] mape: the ole switcharoo [21:36] stevel: fyi, in case anyone else comes by with solaris build issues, tel them to use gmake instead of make if they have the Sun Studio compilers installed, and to check GuessToolchain and explicitly set the CC environment variable to gcc so it doesn't pick up the Sun Studio cc compiler [21:37] bmizerany has joined the channel [21:37] mape: good to know :) [21:37] stevel: bmizerany: hey man. long time no see [21:37] aaronblohowiak: stevel: perhaps post that to the mailing list or a blog for increased googleability? [21:38] stevel: aaronblohowiak: sure, i'll post it to my blog and go lookup the mailing list info to send out something [21:38] mape: the irc logs are indexed [21:38] mape: but yeah [21:38] aaronblohowiak: they are, but must have a PR of -1 ;) [21:38] mape: hehe [21:38] mape: hopefully, since there are a lot of emails in these logs [21:38] aaronblohowiak: stevel: http://groups.google.com/group/nodejs [21:38] stevel: aaronblohowiak: danke [21:39] Ned_: mape: github question - did you "follow" my project ... what does that mean ? [21:39] Ned_: mape: and err, are you still following it?, or did that break when I renamed it ? [21:39] mape: Ned_: I get news in my dashboard if you do something? [21:39] Ned_: (or did you just unfollow it) :p [21:40] Ned_: mape: right ... [21:40] mape: Oh yeah I probly did since you said you renamed (which I thought meant started new repo) [21:40] Ned_: nah, there's a rename option [21:40] mape: There we go [21:40] Ned_: heh, cool [21:41] Ned_: isaacs_mobile: I think I broke npm again :p ... [21:41] Ned_: isaacs_mobile: I can't upload a second version of my module [21:41] mape: ou bumped the version? [21:42] Ned_: yup [21:42] Ned_: in package.json [21:42] Ned_: I could install it using npm link [21:43] mape: hmm I really should get prowl onto npm, if only to learn it [21:43] Ned_: and publish isn't giving me any errors [21:43] Ned_: it's just not working ... [21:43] mape: Ned_: btw why GPL over MIT? [21:43] Ned_: err, [21:43] Ned_: ACTION just picked somethng [21:43] Ned_: no reason [21:43] mape: Should go with MIT :) [21:43] Ned_: right ... [21:43] Ned_: ACTION could change it [21:43] mape: License issues suck but yeah.. [21:44] Ned_: oh well, I'll go change it in the next release [21:44] Ned_: just as soon as I figure out how to release it to npm again :p [21:44] mape: hehe [21:46] justinlilly: Ned_: fyi, MIT is "do whatever you want with the code, but you can't sue me." [21:46] iWaffles has joined the channel [21:47] iWaffles: Is it possible to use Node.js with rails? [21:47] isaacs_mobile has joined the channel [21:47] mape: use in what way? [21:47] justinlilly: the short answer is yes. [21:47] iWaffles: justinlilly: aware of any examples out there? [21:47] mape: use in what way? [21:47] justinlilly: what is it you're trying to accomplish? [21:48] iWaffles: Let's say building a chat room system [21:48] polo has joined the channel [21:48] polo: Wow!! [21:48] iWaffles: I'm interested in learning about it by building an example app [21:48] polo: I'm experiencing a reproducible memory leak of node here [21:49] mape: polo: Have you posted an issue on github with a gist with the code? [21:49] polo: nop I'm just having experienced it at the moment [21:49] aaronblohowiak: iWaffles: are you familiar with rack ? [21:50] iWaffles: aaronblohowiak: a bit, yeah [21:50] polo: and I'm still not sure which part of the code is involved [21:51] aaronblohowiak: iWaffles: Node.js is more like rack than like rails. it gives you a connection that you can do whatever you want with, but you can hold on to that connection instead of returning to it immediately [21:51] iWaffles: interesting.. [21:51] tlrobinson_ has joined the channel [21:51] iWaffles: I know the chat server demo is standalone, I'm tryingto build a rails version using node.js [21:52] iWaffles: Or at least thinking about how I'd go about building one [21:52] mape: polo: try tracking it down and post an issue :) [21:52] Ned_: iWaffles: well, if you're building a rails version, you're not really using nodejs :p [21:52] iWaffles: Ned_: I guess not [21:52] polo: mape: yeah, I'm trying :) [21:52] mape: _ry probly fixes it faster if he has more data to work with :) [21:52] mape: great [21:53] aaronblohowiak: iWaffles & Ned_ : well, you can use rails for persistence and for login and such, but use node for the connection management [21:53] polo: quite impressive though [21:53] iWaffles: aaronblohowiak: I wish I could find examples on how to accomplish that [21:53] justinlilly: iWaffles: iframe? [21:53] gwoo: aaronblohowiak: test-http-parser [21:53] aaronblohowiak: gwoo: nice. [21:55] devinus: man some people can be dicks on irc [21:55] iWaffles: devinus: no kidding [21:56] mape: devinus: it is the internets, people tend to be rude [21:56] mape: probly because they can [21:57] tmpvar has joined the channel [21:57] aaronblohowiak: iWaffles: so you want something like this: http://github.com/aaronblohowiak/Push-It [21:58] iWaffles: aaronblohowiak: Yeah, exactly! [21:58] aaronblohowiak: iWaffles: where do you live? [21:58] iWaffles: currently in Rochester, NY [21:58] aaronblohowiak: RIT ? [21:59] iWaffles: winner winner chicken dinner [21:59] iWaffles: who are you? [21:59] iWaffles: and how do you know me?! [21:59] aaronblohowiak: aaron blohowiak! [21:59] mape: hehe [21:59] Ned_: lol ... never would have guessed! [21:59] iWaffles: brain's running a bit slow today [21:59] Ned_: :p [21:59] aaronblohowiak: ;-) anyway. now that i have written the readme, the actual library is a simple matter of programming [21:59] mape: how sneaky obfuscating the nick like that [22:00] iWaffles: Did you go to RIT? [22:00] smtlaissezfaire has joined the channel [22:00] saikat` has joined the channel [22:00] justinlilly: aaronblohowiak: http://github.com/SeanOC/jquery.comet -- might be of interest. [22:00] aaronblohowiak: iWaffles: no, but i'm an east-coaster [22:01] iWaffles: aaronblohowiak: Ah.. [22:01] technoweenie has joined the channel [22:01] aaronblohowiak: justinlilly: this looks neat, thanks for the link [22:02] justinlilly: http://github.com/SeanOC/dev_push_server -- this is django specific, but might translate to rails if that's your thing. [22:02] iWaffles: I'm going to attempt building a chat server using rails and ..something.. with push [22:02] ashb: anyone know much about the IRC protocol? [22:02] justinlilly: ashb: what's the question? [22:03] ashb: quit messages [22:03] iWaffles: maybe not a chat server, but web app [22:03] justinlilly: iWaffles: what will rails have to do with it? [22:03] ashb: i can't get it to show up [22:03] iWaffles: justinlilly: authentication, and some other things i haven't thought of yet [22:03] ashb: my irssi client in the same channel just shows `test has quit []` [22:04] aaronblohowiak: justinlilly: also, if you want to re-use template code and view helpers &etc [22:04] mau has joined the channel [22:04] justinlilly: makes sense. I was just curious. [22:04] iWaffles: I've been playing with Pusher (http://pusherapp.com/) and it seems to be what I'm looking for [22:05] iWaffles: however I'd like to have my own version to save costs and actually learn :-D [22:05] justinlilly: ashb: perhaps try: "QUIT :%s" where %s is your message [22:05] ashb: justinlilly: that's what i'm sending [22:06] aaronblohowiak: iWaffles: is there a simple polling-based RoR chat? [22:06] iWaffles: I'm sure there are plenty of those [22:06] iWaffles: campfire isn't open source, but they use polling I think [22:06] ashb: just testing quit message from an actual irssi client - checkign the server has them enabled [22:07] ashb: which it seems not to :) [22:07] ashb: problem solved [22:07] smtlaissezfaire has joined the channel [22:07] justinlilly: heh [22:07] arlolra has joined the channel [22:07] justinlilly: ashb: if you have other irc protocol questions, this might be of help: http://twistedmatrix.com/trac/browser/tags/releases/twisted-10.0.0//twisted/words/protocols/irc.py#L1562 [22:07] justinlilly: that's a python implementation of an irc client. [22:07] ashb: justinlilly: thanks [22:07] aaronblohowiak: pusherapp looks neat, i just think it is weaksauce ;) [22:08] aaronblohowiak: by that, i mean.. i think an open-source alternative will pwn it [22:08] iWaffles: I wish I could write that alternative :-P [22:08] iWaffles: or at least an alternative for myself [22:08] mape: ashb: Ned_ is also doing IRC stuff on node so he might be of help [22:09] ashb: i'm not doing it on node, i just knew people in here have been playing with IRC [22:09] ashb: i'm doing it in objc [22:09] mape: ah k [22:09] mape: well the protocol is the same [22:09] aaronblohowiak: iWaffles: Push-It is about 4 hours from completion, which is to say that i havent started implementing it yet ;) [22:09] iWaffles: It looks very interesting [22:09] ashb: mape: indeed [22:09] richcollins: Anyone know why this happens? [22:09] richcollins: https://gist.github.com/c083067368e7372eaede [22:09] richcollins: maybe a V8 bug? [22:10] iWaffles: aaronblohowiak: I wish I could test it out [22:10] aaronblohowiak: richcollins: string literals arent strings [22:10] richcollins: aaronblohowiak: What are they? Special objects? [22:11] aaronblohowiak: iWaffles: email me: aaron.blohowiak@gmail.com and i'll let you know when it is ready (tomorrow, maybe) [22:11] justinlilly: bah. just follow it on github [22:12] arlolra has left the channel [22:12] arlolra has joined the channel [22:13] aaronblohowiak: richcollins: commented on your gist [22:13] ashb: try: cloneFunction.prototype = new String("aString"); [22:13] arlolra has joined the channel [22:14] ashb: tho .length is confused by the fact that function's have length properties too [22:14] richcollins: ah ok [22:14] aaronblohowiak: function length is arity? [22:14] ashb: yup [22:14] ashb: number of formal params [22:14] aaronblohowiak: delete does not work like you think [22:15] richcollins: No other language has so many warts covering a beautiful interior [22:15] aaronblohowiak: on f.length [22:15] igorgue_ has joined the channel [22:19] justinlilly has joined the channel [22:20] polo: mape: ok think it was my fault (not sure but I think I was removing a file which was still beeing read) [22:20] mape: polo: mv the mv to the callback of the read? :) [22:21] bmizerany: does v8 have a library for parsing XML? [22:21] polo: mape: I was using parallel() from Step lib [22:21] mape: hmm [22:21] polo: mape: but yeah [22:22] bmizerany: that's a no. just found my answer [22:22] polo: mape: I was like: fs.read(file, parallel()); fs.unlink(file, parallel()) [22:22] richcollins: Hrm readFileSync doesn't appear to work with String objects: [22:22] richcollins: readFileSync("/foo/bar.js") [22:22] mape: oh [22:23] richcollins: TypeError: Bad argument [22:23] richcollins: bmizerany: hey there [22:23] mape: yeah that seems like a bad idea [22:23] bmizerany: richcollins: hey man. what's new? [22:23] richcollins: bmizerany: Working on a node site [22:23] richcollins: implementing http://github.com/stevedekorte/vertexdb in javascript [22:23] polo: mape: not sure it was the cause. But anyway don't do it or you will soon come out of memory [22:24] mape: hehe [22:24] ajpiano has joined the channel [22:24] richcollins: Oops I mean that this doesn't work: readFileSync(new String("/foo/bar.js")) [22:25] ashb: justinlilly: ah it seems the server stomps on quit messages if you've been connected <5 mins [22:26] justinlilly: ashb: ooh. that's a neat feature :) [22:26] bmizerany: richcollins: awesome. how is the port going? [22:26] Phazm has joined the channel [22:26] mape: ashb: less spam? [22:26] ashb: mape: yeah [22:27] mape: perhaps you can just insert random spam if the errorMsg is empty [22:27] richcollins: bmizerany: good we just started now that node has a TokyoCabinet addon [22:28] bmizerany: nice [22:28] richcollins: Steve wrote a lua version but js will probably attract more interest [22:28] richcollins: even though Lua is faster, supports coroutines and is more dynamic [22:28] richcollins: its too bad that javascript doesn't support coros, it makes async programming a lot easier [22:29] mape: Collectors of Religion on Stamps? [22:29] markwubben has joined the channel [22:29] richcollins: as you can just use futures instead of nesting function callbacks within closures [22:30] richcollins: mape: coroutines :-P [22:30] mape: ;) [22:31] richcollins: but even with javascripts warts, its still more fun to use than more complicated languages [22:31] igorgue_: any experiences with Riak and Node.? [22:32] isaacs_mobile: Ned_: bbl. Email me. [22:33] olegp has joined the channel [22:33] aaronblohowiak: coffeescript looks neat. but i figure if you are going to program in a language, program in that language [22:34] ashb: ^^ [22:36] mscdex: heh [22:39] igorgue_ has joined the channel [22:41] igorgue_: aaronblohowiak: yeah, I think that's the way Vala works (compiles C# like language to C) [22:41] aaronblohowiak: if i were to do that, i think i'd just use mono's AOT [22:42] aaronblohowiak: the only exception that springs to mind is gambit-scheme [22:42] igorgue_: aaronblohowiak: yup, I like mono a lot more, but Vala is like a new laguange (I've never actually used it) [22:42] Aria: C has the convenience of also being a sort of intermediate language with semantics that drop all the way to the linker level without mangling [22:42] aaronblohowiak: ah, havent heard of it [22:43] aaronblohowiak: Aria: and it is supported _everywhere_ [22:43] Aria: Yep. [22:44] Aria: It's so easy to specify a foreign function interface for, too. The semantics are just darn simple. [22:45] stevel has joined the channel [22:46] aaronblohowiak: assembler-with-stack [22:46] aaronblohowiak: ;) [22:46] yellow-stevel has joined the channel [22:47] mscdex: so now, i'm thoroughly convinced that the markdown renderer on a github repo page != the showdown.js markdown preview page on github.github.com [22:48] ashb: mscdex: you should use evilstreak's markdown rendere [22:48] ashb: r [22:48] ashb: showdown is a pile of poo [22:48] ashb: >_> [22:48] mscdex: i just need something that will render exactly how github renders .md files on a repo [22:48] aaronblohowiak: gh markdown situation sucks. it also does not match the textmate md renderer [22:49] ashb: markdown is kinda like XML in that regard [22:49] ashb: mscdex: evilstreak's markdown parser is written to be easily pluggable [22:50] ashb: so if you work out the behaviour of GH's md you can easily add it without having to re-write all of the parsing steps [22:50] mscdex: that's the problem [22:50] TobiasFar has joined the channel [22:50] tylerstalder has joined the channel [22:50] ashb: the 'working it out' part? [22:50] mscdex: i'm pretty sure github doesn't do rendering client-side [22:50] mscdex: i have no way of knowing what differences they are doing [22:51] ashb: other than lots of trial and error [22:51] mscdex: heh... i've already gone through enough "trial and error" with my repo [22:51] ashb: ditto: http://ashberlin.co.uk/blog/markdown-lists [22:52] aaronblohowiak: just get a github firewall install ;) [22:53] mscdex: sure, if you're paying :-) [22:54] richcollins: Hrm any reason that higher order mustache has to return a function? Seems like the framework could just call the named function with the appropriate arguments [22:54] keyvan has joined the channel [22:55] richcollins: setting this appropriately of course [23:02] polo has joined the channel [23:07] silence has joined the channel [23:13] cij has joined the channel [23:16] delijah has joined the channel [23:17] dgathright has joined the channel [23:26] delijah: hi. does anyone know anything about the state of a multipart form data library? [23:26] delijah: i know there are the following 2: [23:26] delijah: http://github.com/isaacs/multipart-js [23:26] delijah: http://github.com/felixge/node-formidable [23:27] alexiskander has joined the channel [23:27] delijah: but which one is working, and which one is recomended, or will be included in node.js? [23:27] Guest97407: No idea. [23:30] keyvan has joined the channel [23:34] mjijackson has joined the channel [23:34] igorgue_ has joined the channel [23:38] delijah: if i look trough the irc-logs, it looks like felixge's multipart parser is the favorite at the moment.. [23:39] aaronblohowiak: man implementing data structures is boring. [23:39] aaronblohowiak: zzzzzzzzzZZZZ [23:39] jmar777 has joined the channel [23:39] Ned_: aaronblohowiak: it'd be nice when more browsers do websockets :p [23:39] Ned_: (I was just reading your Push-It page) [23:40] fernmicro has joined the channel [23:40] aaronblohowiak: Ned_: yea, when that happens i will probably flop over to Socket.IO .. the browser connection is middle part of the front-end, connection, pubsub, publisher model of Push-It [23:41] Ned_: aaronblohowiak: you could use websockets where they're available [23:42] Ned_: it would be more efficient [23:42] Ned_: :-) [23:42] Ned_: ACTION is a chrome user :p [23:42] aaronblohowiak: Ned_: yea, socketio uses the best method for connection management in the browser, be that websockets, long-polling or flash [23:43] Ned_: oh ... [23:43] Ned_: Socket.IO, is that core? [23:44] dgathright has joined the channel [23:44] Ned_: aaronblohowiak: http://github.com/LearnBoost/Socket.IO-node <-- is that what you're talking about ? [23:45] aaronblohowiak: Ned_: that is the server, there is also a client [23:45] Ned_: right, which runs in browsers I guess ? [23:45] Ned_: and supports "smart fallback" ? [23:46] gwoo_ has joined the channel [23:47] aaronblohowiak: Ned_: yep! [23:48] pandark_ has joined the channel [23:49] Phazm: anybody have a flickr api that can be run via command line (so I can use exec) they prefer? [23:50] Phazm: (for uploading images -- neither of the node modules support that) [23:54] cloudhead has joined the channel [23:54] aaronblohowiak: more data structures for your pleasure have been uploaded to the most boring project ever: http://github.com/aaronblohowiak/JavaScript-datastructures [23:55] chilts: heh, that kind of announcement makes me wanna check it out :) [23:55] aaronblohowiak: eventually, i would like to create redis-backed versions. [23:56] aaronblohowiak: chilts: haha, well, it is hard to get pumped about expiring caches... [23:59] dgathright has joined the channel