[00:00] jed has joined the channel [00:02] n8o has joined the channel [00:15] botanicus_ has joined the channel [00:16] charlenopires has joined the channel [00:24] inkubus08 has joined the channel [00:41] hassox has joined the channel [01:16] hassox: anyone got an exmaple of using moustache.js with node? [01:16] hassox: there is no export in the file so wondering how to get at it :\ [01:24] hassox has joined the channel [01:24] inkubus08 has joined the channel [01:24] charlenopires has joined the channel [01:24] jed has joined the channel [01:24] Vito` has joined the channel [01:24] scudco has joined the channel [01:24] alex-desktop has joined the channel [01:24] erichocean has joined the channel [01:24] bryanl has joined the channel [01:24] gwoo has joined the channel [01:24] sudoer has joined the channel [01:24] jbowman_afk has joined the channel [01:24] cloudhead has joined the channel [01:24] kriszyp has joined the channel [01:24] JimBastard has joined the channel [01:24] binary42 has joined the channel [01:24] Atm0z has joined the channel [01:24] Connorhd_ has joined the channel [01:24] rictic has joined the channel [01:24] emyller has joined the channel [01:24] grantmichaels has joined the channel [01:24] mikekelly has joined the channel [01:24] tlrobinson1 has joined the channel [01:24] Yuffster_ has joined the channel [01:24] wil has joined the channel [01:24] Biscuits has joined the channel [01:24] sztanpet has joined the channel [01:24] bengl has joined the channel [01:24] taf2 has joined the channel [01:24] xantus has joined the channel [01:24] mcarter has joined the channel [01:24] FoxFurry has joined the channel [01:24] ryah_away has joined the channel [01:24] tmpvar_ has joined the channel [01:24] CIA-56 has joined the channel [01:24] Sembiance has joined the channel [01:24] mediacoder has joined the channel [01:24] Sinjo has joined the channel [01:24] zimbatm has joined the channel [01:24] intellectronica has joined the channel [01:24] [k2] has joined the channel [01:24] rektide has joined the channel [01:24] martyn_ has joined the channel [01:24] erikg has joined the channel [01:24] tlrobinson has joined the channel [01:24] ashb has joined the channel [01:24] tlockney has joined the channel [01:24] onar has joined the channel [01:24] nefD has joined the channel [01:24] jazzychad has joined the channel [01:24] rudebwoy has joined the channel [01:24] orlandov has joined the channel [01:24] cadorn has joined the channel [01:24] skampler has joined the channel [01:24] beppu_ has joined the channel [01:24] erikcorry|away has joined the channel [01:24] RJ2 has joined the channel [01:24] deanlandolt has joined the channel [01:24] hornbeck has joined the channel [01:24] jan____ has joined the channel [01:24] Hannan_ has joined the channel [01:24] CraigW has joined the channel [01:24] svei has joined the channel [01:24] eviltwin has joined the channel [01:24] elliottcable has joined the channel [01:24] frodenius has joined the channel [01:24] evilhackerdude has joined the channel [01:24] halorgium has joined the channel [01:24] aurynn has joined the channel [01:24] Pilate has joined the channel [01:24] inimino has joined the channel [01:26] keeto has joined the channel [01:27] n8o has joined the channel [01:27] jed: hassox: cat the file and eval it. [01:28] hassox: there's not a nicer way huh :( [01:28] hassox: thanx mate [01:28] jed: hassox: doesn't look like it. might be nice to fork it and add a quick exports. i'm sure janl would pull that. [01:29] hassox: yeah good point [01:29] hassox: will do [01:29] tmpvar has joined the channel [01:40] sudoer has joined the channel [01:42] JimBastard: hassox i have examples [01:42] JimBastard: its really easy [01:42] n8o has left the channel [01:42] hassox: JimBastard: do you have anything accessible? [01:43] JimBastard: if you give me a minute ill gist something [01:43] JimBastard: its soo simple [01:43] hassox: awesome :D [01:43] hassox: thanx [01:43] emyller: anyone here experienced with express [01:44] JimBastard: hassox, do you have the commonJS mustache.js yet? [01:44] JimBastard: how far did you make it? [01:44] hassox: er [01:44] hassox: no [01:44] JimBastard: i wonder if its online, one sec [01:44] hassox: I just grabbed mustache.js from janls github [01:45] soveran has joined the channel [01:45] JimBastard: yeah... [01:45] JimBastard: one sec [01:46] JimBastard: http://gist.github.com/264118 [01:47] JimBastard: its pretty much the same, except for the bottom [01:47] JimBastard: exports.to_html = Mustache.to_html; [01:47] hassox: yeah I vendored it and did something similar [01:47] JimBastard: then in your node script you do, var mustache = require('./js/mustache'); [01:47] hassox: added a test to see if exports is defined and then exports it if it is [01:48] JimBastard: so is that method available? [01:48] JimBastard: mustache.to_html [01:48] hassox: yeah [01:49] hassox: how do I load up my view tempaltes though :\ [01:50] JimBastard: http://gist.github.com/264119 [01:51] JimBastard: with mustaches [01:51] JimBastard: you see that [01:51] JimBastard: then if you want to use files as templates wrap it in a posix.cat() [01:51] JimBastard: as to load the external template files [01:52] JimBastard: all mustaches does really is replace {{variable}} with a string that can be created from any javascript logic [01:52] JimBastard: or {{{variable}}} for unescaped [01:52] JimBastard: protip ^^ [01:56] hassox: sweet [01:56] JimBastard: is that working for you? [01:56] hassox: so I just worry about getting the file contents and tracking those [01:57] JimBastard: sure [01:57] JimBastard: if you want to use files [01:58] hassox: yup that works a treat :D [01:58] hassox: thanx [01:58] JimBastard: does anyone know the best way to fire an event that will do some file i/o as the node instance ends/shutdown? [01:59] hassox: process has an exit event [01:59] hassox: althouh there's no io [01:59] JimBastard: A listener on this event should not try to perform I/O since the process will forcibly exit in less than microsecond. [01:59] hassox: yeah [01:59] JimBastard: i wanted to serialize the state of my application if node shat itself [01:59] JimBastard: or was shut down [02:00] hassox: there are the standard signals [02:00] hassox: not sure how robust that would be though [02:00] JimBastard: any idea on usage docs or examples? [02:00] JimBastard: i have no idea what fires when [02:00] JimBastard: or how to bind to them [02:00] hassox: it's just an event right [02:01] hassox: process.addListener("SIGINT", function().... [02:01] JimBastard: so are there more then one signal i need to catch? [02:01] hassox: could be [02:01] hassox: depends what kill signal the process is given [02:01] JimBastard: http://www.standardml.org/Basis/posix-signal.html ? [02:01] hassox: hence the reason I say it may not be robust [02:02] JimBastard: http://en.wikipedia.org/wiki/Signal_(computing) [02:02] hassox: usually quit and kill are the ones I watch for [02:02] JimBastard: id probaly need to wrap a bunch of them [02:02] hassox: yeah [02:02] JimBastard: im sure someone has done this before [02:03] hassox: there's also stop abrt [02:03] JimBastard: the wiki seems comprehensive [02:03] JimBastard: ill see whats supported [02:03] JimBastard: thanks [02:03] hassox: np [02:03] JimBastard: :-) [02:07] JimBastard: pizza time [02:07] n8o has joined the channel [02:07] jbowman: I think my work on Jsondra is going to go on hold... mongodb looks like a better all around solution than cassandra for my app [02:08] jbowman: except I don't feel like dusting off my c or c++... so I'll probably use tornado to create a basic rest interface for mongodb using it's python bindings [02:13] JimBastard: its soo annonying there is no rest interface for mongo [02:13] JimBastard: i was complaining about this last night in #mongodb [02:13] JimBastard: someone get mongo working with node plz [02:16] jbowman: I'm reading the mongodb documentation tonight, and probably into tomorrow. Then I'll probably work on a tornado based interface. Just trying to figure out things like if I should add a memcached layer, and the best way to optimize for queries. MongoDB is pretty different than the other key/value tables I've been looking at [02:17] jbowman: It's kind of funny to me that the mongo shell is javascript, but there's nothing for node.js yet. [02:19] JimBastard has joined the channel [02:19] bengl has joined the channel [02:19] evilhackerdude has joined the channel [02:19] halorgium has joined the channel [02:20] jbowman: I'm reading the mongodb documentation tonight, and probably into tomorrow. Then I'll probably work on a tornado based interface. Just trying to figure out things like if I should add a memcached layer, and the best way to optimize for queries. MongoDB is pretty different than the other key/value tables I've been looking at [02:20] jbowman: It's kind of funny to me that the mongo shell is javascript, but there's nothing for node.js yet. [02:54] sudoer has joined the channel [02:55] tmpvar: hello, has anyone here used nodemachine? [02:55] tmpvar: curious as to what you think about it [03:25] sudoer has joined the channel [03:33] micheil has joined the channel [03:33] micheil: hmm.. [04:18] RayMorgan has joined the channel [05:01] tlrobinson1 has joined the channel [05:09] sudoer has joined the channel [06:08] n8o has joined the channel [06:46] inkubus08 has joined the channel [08:26] spoob has joined the channel [08:55] sudoer has joined the channel [09:20] sudoer has joined the channel [09:25] rtomayko has joined the channel [10:02] felixge has joined the channel [10:08] qFox has joined the channel [10:11] erichocean has joined the channel [10:42] JimBastard has joined the channel [10:51] Micheil1 has joined the channel [11:08] hassox has joined the channel [11:08] Micheil1 has joined the channel [11:09] felixge: ACTION is working on an improved version of hot module loading [11:10] JimBastard: awesome felixge [11:11] felixge: JimBastard: let me know if you want to try it [11:11] felixge: its almost ready and will be the version I'll suggest to ryan [11:11] felixge: Basically all modules can now how their own cache [11:11] felixge: as long as you do normal require() calls, the same module cache gets re-used [11:12] felixge: but if you do require.hot() then a new module cache is create for all children of that module [11:12] felixge: I think that is how it should be done propelry [11:12] felixge: * properly [11:13] hassox: hallo everyone [11:17] micheil has joined the channel [11:20] JimBastard: i dont really have a need yet to do it [11:22] qFox has joined the channel [11:33] JimBastard: does anyone know any good libraries for doing lazy init type stuff? i have this helper method jset() which will define an object with a default variable if it doesnt exist : http://gist.github.com/264247 [11:49] botanicus_ has joined the channel [12:01] JimBastard: yo felixge [12:04] felixge: JimBastard: sup? [12:06] JimBastard: for your hot require shit [12:06] JimBastard: watchFile [12:06] JimBastard: have you thought about that at all [12:08] felixge: JimBastard: well, you can easily combine the two [12:09] JimBastard: it would be a nice option [12:09] felixge: I don't see any reason for coupling them so [12:10] JimBastard: well they are related [12:10] felixge: yeah, but watchFile is not recursive [12:10] felixge: but require.hot() is [12:10] JimBastard: is hot require? [12:10] felixge: so they don't match up all that well [12:10] felixge: yeah, require.hot() will reload all children as well [12:10] JimBastard: so while its doing that it could attach event handlers to all of them [12:11] JimBastard: it would be insanely cool to fire require.hot() when a source file in the live directory was updated [12:13] felixge: JimBastard: you probably don't want that. [12:14] felixge: it would make things much more complicated [12:14] felixge: and very very hard to debug [12:14] JimBastard: i gotta restart node everytime i make a source modification [12:14] felixge: JimBastard: then reload on each http request [12:14] JimBastard: i guess that would work [12:15] felixge: require.hot('./my_responder').addCallback(function(responder) {responder.respond(req, res)}); [12:15] felixge: something like that inside your http request callback [12:15] felixge: but I'll keep this in mind [12:16] felixge: if I see a way to make life easier here, I will [12:16] felixge: you would have other issues with this so, lets say you safe a file with a syntax error - this will crash your server [12:17] felixge: I often save while I edit as I'm paranoid, so this wouldn't work well for me :) [12:22] JimBastard: yeah felixge thats the idea, it will crash [12:22] JimBastard: so you need to have a unit test for every commonjs module.... [12:23] JimBastard: also the loading would have to have a try / catch [12:23] felixge: that is run before the hot code reload? [12:23] felixge: :D [12:23] JimBastard: continous integration [12:23] JimBastard: continious [12:23] JimBastard: engrish [12:23] felixge: seems like sci-fi to me ;) [12:23] JimBastard: aye [12:23] felixge: I just don't think people develop like this in the real world [12:24] JimBastard: where [12:24] felixge: and those who do spend more time developing than delivering - not my target audience ;) [12:25] __botanicus__ has joined the channel [12:29] felixge: JimBastard: http://github.com/felixge/node/commit/775ef3f6f2ad08d29ece17669464bb8d26eafb3e [12:29] felixge: feel free to try this one [13:28] botanicus_ has joined the channel [13:31] DamZ has joined the channel [13:41] DamZ_ has joined the channel [13:46] wil has joined the channel [13:54] felixge: ryah_away: let me know if you happen to be around [13:54] felixge: having problems with stat calls failing when running gdb [14:02] micheil has joined the channel [14:08] kriszyp has joined the channel [14:24] cloudhead has joined the channel [14:25] wil has joined the channel [14:29] jan____ has joined the channel [15:02] Sembiance: so far I've found three different implementations of a WebSocket node.js implementation ;) [15:03] inkubus08 has joined the channel [15:13] Connorhd_: any of them any good? :P [15:13] Connorhd_: http://github.com/zimbatm/nodejs-http-websocket looked fairly neat, but needs patches to node, I haven't looked at the others yet [15:13] Sembiance: dunno, trying them out now :) [15:14] Sembiance: The other ones: http://github.com/ncr/node.ws.js http://github.com/alexanderte/websocket-server-node.js http://github.com/Guille/node.websocket.js/ [15:14] Sembiance: Haven't seen the one you mentioned, guess that's #4 :) [15:20] wil has joined the channel [15:21] Connorhd_: the one I linked to seems to integrate very nicely with the http server in node [15:23] charlenopires has joined the channel [15:26] alex-desktop has joined the channel [15:26] hassox has joined the channel [15:26] felixge has joined the channel [15:26] gwoo has joined the channel [15:26] Yuffster_ has joined the channel [15:26] taf2 has joined the channel [15:26] mcarter has joined the channel [15:27] mikekelly has joined the channel [15:28] inimino has joined the channel [15:47] hassox has joined the channel [15:47] felixge has joined the channel [15:47] gwoo has joined the channel [15:47] Yuffster_ has joined the channel [15:47] taf2 has joined the channel [15:47] mcarter has joined the channel [15:48] inimino has joined the channel [15:58] micheil has joined the channel [16:32] _maurice_ has joined the channel [16:48] jbowman has joined the channel [16:55] aguynamedben has joined the channel [17:10] jed has joined the channel [17:25] harryv has joined the channel [17:25] harryv: any luck that anybody is doing some sip work w/ node? [17:39] mikeal has joined the channel [17:58] sudoer has joined the channel [17:59] felixge: harryv: sip? [18:00] Booster has joined the channel [18:06] binary42 has joined the channel [18:25] jed has joined the channel [18:31] grantmichaels has joined the channel [18:35] Booster has joined the channel [18:36] jed has joined the channel [18:37] aguynamedben has joined the channel [18:37] mikeal has joined the channel [18:39] harryv: felixge: session initiation protocol [18:40] felixge: harryv: hm, not me [18:40] felixge: what are you working on? [18:40] felixge: VOIP ? [18:40] harryv: yeah [18:42] inimino: cool [18:43] harryv: and the one thing I'm always missing is a decent sip stack (or just bindings) in a decent language [18:44] harryv: ruby, js, lua, whatever. [18:44] eddanger has joined the channel [18:46] jed has joined the channel [18:56] bryanl has joined the channel [18:57] jed has joined the channel [18:58] n8o has joined the channel [19:10] jed has joined the channel [19:19] mikeal has joined the channel [19:19] inkubus08_ has joined the channel [19:20] jed has joined the channel [19:25] felixge_ has joined the channel [19:31] elliottcable: Hello, all (-: [19:33] inimino: hello [19:33] Connorhd_: hi [19:36] inkubus08 has joined the channel [19:38] felixge_: harryv: well, you could take any C++ binding you may find and hook it into node [19:38] felixge_: hey elliottcable [19:38] elliottcable: odd, didn’t get hilighted by felixge_ [19:38] elliottcable: oi it’s harryv! [19:38] elliottcable: harryv: did you ever get your Wave invite? [19:39] elliottcable: also… anybody else in here want to comment on some of my ideas? Want moar input. [19:39] ashb: Wave? you actually use it? [19:39] harryv: elliottcable: yep, got it, shut it down after 7s :P [19:39] elliottcable: harryv: heh [19:39] elliottcable: harryv: )-: [19:39] elliottcable: harryv: but… I want input )-: [19:39] elliottcable: ashb: yep [19:40] jed has joined the channel [19:40] elliottcable: felixge_: you got Wave? And care to take a look? /-: [19:40] felixge_: elliottcable: what ideas? Are they related to fixing my libeio bug ? [19:40] elliottcable: felixge_: hahah no [19:40] felixge_: elliottcable: yeah wave ... seems like useless shit [19:40] elliottcable: felixge_: new language [19:40] felixge_: new language? [19:40] harryv: felixge_: and there goes the evented advantage. oh well. [19:41] elliottcable: felixge_: yep [19:41] harryv: I'm probably better of fixing my c skills and make some ruby bindings for sofia [19:41] elliottcable: harryv: are your C skills broken? d-: [19:41] felixge_: harryv: why? If the lib you find is sync you can put your calls to it in a thread pool [19:41] harryv: elliottcable: they've never been anything but [19:42] felixge_: elliottcable: Why? Are the ones we've got not causing enough problems in your daily life already? :D [19:42] elliottcable: felixge_: *shrugs* quite a few reasons. It’s all written up on a small pile of waves… I’d appreciate your input [19:43] elliottcable: harryv was *going* to halp, but he got all bitch about wave and left d-: [19:43] harryv: elliottcable: ok, I'm there in 2m [19:43] harryv: dammit. [19:43] elliottcable: s/bitch/\0y/ [19:43] elliottcable: harryv: I’m actually about to leave @SnowCityCafe [19:44] elliottcable: harryv: what’s your Wave address? I’ll add you to the original wave [19:44] harryv: harryvangberg [19:44] felixge_: my wave greeting msg: "This wave has been corrupted. Please reopen it. Some recent changes may be lost." [19:44] harryv: :P [19:44] felixge_: elliottcable: how do I get your wave? [19:44] elliottcable: felixge_: welcome to Google’s web-client [19:44] elliottcable: felixge_: it’s a flying pile of shit… on a stick. With herpes. [19:45] elliottcable: felixge_: what’s your addy? [19:45] felixge_: elliottcable: I really wish they would fix gmail ... fucking idiots ;) [19:45] felixge_: elliottcable: haimuiba@gmail.com is my gmail [19:45] felixge_: not sure what my "wave" is [19:45] elliottcable: felixge_: and you registered for Wave? [19:45] elliottcable: ah, yep, you are [19:45] elliottcable: it’s haimuiba@googlewave.com d-: [19:46] felixge_: elliottcable: I guess, try contacting me there [19:46] felixge_: elliottcable: I am registered for it [19:46] felixge_: just never used it [19:46] felixge_: only looked at it once [19:46] elliottcable: felixge_, harryv, here’s the original wave: https://wave.google.com/wave/#minimized:nav,minimized:contact,restored:wave:googlewave.com!w%252BsZ2Vy2J_E [19:46] elliottcable: felixge_, harryv: Some of that is out of date; I stopped updating it, and moved to a Google Group so I can create different waves for different topics (the original wave is *huge*, and really slow to load) [19:47] elliottcable: felixge_, harryv: there’s instructions at the top for joining the group and looking at the other waves. [19:49] felixge_: elliottcable: so you are creating a language just for fun? [19:49] elliottcable: felixge_: pretty much. [19:50] elliottcable: felixge_: I want to explore some concepts I’ve never seen in a language before, and some combinations of concepts from other languages I love [19:50] felixge_: elliottcable: I make sure to dedicate serious amounts of time into my procrastination studies, but I don't think I'd be able to help you with that :) [19:51] felixge_: sorry [19:51] elliottcable: felixge_: I’m just interested in input. You don’t have to know anything about interpreter design, etc [19:54] felixge_: elliottcable: sure - I just don't even know where to start - can't read that whole thing right now [19:54] elliottcable: felixge_: No prob. /join ##Paws, I’ve gotta roll [19:54] inimino: the trouble with giving advice on programming language design is that it takes a long time to understand the design [19:55] felixge_: elliottcable: but for starters, I don't think I agree with the design goal of creating the single slowest language ever - that makes all further properties of the language rather uninteresting to me [19:55] felixge_: inimino: exactly [19:55] elliottcable: inimino: yap )-: [19:56] elliottcable: felixge_: yep, it’s certainly not a language with large general appeal. I don’t plan for it to be. [19:56] inimino: so, people who are really qualified to give good advice are probably too busy to do so, at least until the language has some momentum [19:56] inimino: by then it tends to be too late to fix most of the mistakes... [19:56] elliottcable: felixge_: I’m certainly going to make it as fast as I can, but… well, A) I know nothing about interpreter theory and things like that. [19:56] felixge_: If resources were infinite, my language of choice would be interpreted by humans and called english. But I doubt my processors of choice would agree with my ideas for using their brain power ;) [19:56] elliottcable: felixge_: and B), there’s no way I’m making any concessions to performance that will detract from my primary goals for the language [19:57] elliottcable: inimino: so true. [19:57] elliottcable: inimino: Luckily, I have three or four language-y people already on board [19:57] inimino: it's the history of programming languages in a nutshell :) [19:57] harryv has left the channel [19:57] elliottcable: inimino: generally not to use it, because they all think it’s a horrible idea, like felixge_… but I’m calling in favours, and they’re at *least* willing to offer advice (-: [19:58] inimino: is this purely a fun/educational thing, or are you hoping people will use it? [19:58] elliottcable: It’s about 1/3rd the first bit, and 2/3rds option C): hoping *elliottcable* will use it. [19:59] elliottcable: I’ve always gone my own way; I have no problem using an environment or ecology that I have to create entirely from scratch, on my own. [19:59] elliottcable: so as long as *I* like this language, and can be productive in it, I’ll consider it a success. [19:59] felixge_: elliottcable: what are you trying to do with your life? [19:59] inimino: it's an expensive road :) [19:59] elliottcable: felixge_: … essentially, this. [19:59] felixge_: elliottcable: good, because you may not see hello world for a few years ;) [20:00] elliottcable: felixge_: haha [20:00] felixge_: well, I'm exaggerating, but you get what I mean [20:00] elliottcable: felixge_: Yep. [20:00] elliottcable: felixge_: To tell the truth, I have high hopes for this; first off, I’m writing the initial implementation in JavaScript, much easier than, say, C or on the JVM. [20:00] felixge_: elliottcable: so you happen to be independently rich? Or who is sponsoring this hobby of yours? :) [20:00] elliottcable: felixge_: second, the *actual language* is, by design, absolutely tiny. In fact, that’s one of two core tenets of the language. [20:00] elliottcable: felixge_: the former. [20:01] elliottcable: felixge_: or rather, enough so to focus, at least for a while, on the things I really care about. [20:01] elliottcable: I’ve really gotta go, but I’ll be back online in ~30m or less. [20:01] elliottcable: (~≤30m) [20:02] elliottcable: (hah!) [20:02] felixge_: elliottcable: nice, I'm kind of jealous. Gotta to think more result-oriented at this point, but language design certainly is a fascinating topic [20:02] felixge_: k, ttyl [20:02] elliottcable: felixge_: yep [20:02] jed has left the channel [20:02] elliottcable: felixge_: would really appreciate any input you have time to proffer, though [20:02] elliottcable: bbl [20:02] felixge_: elliottcable: let me know when you have a more concise /organized writeup at some point - I'd certainly look over that [20:02] felixge_: but this whole wave would take me too long to digest [20:02] elliottcable: felixge_: the stuff in the group is exactly that [20:03] elliottcable: felixge_: unfortunately, it’s not all migrated yet [20:03] felixge_: k, will look at it [20:03] elliottcable: felixge_: some stuff essential to understanding the language is still locked in that old wave’s content. Even worse, some of it’s in *blips* on that old wave. [20:03] elliottcable: blahawdawf. [20:04] inimino: +1 to getting your ideas out of the wave [20:13] jcrosby has joined the channel [20:27] elliottcable: inimino: There’s a lot of unsure things, though. That’s why it’s on Wave in the first place; it’s still at the collaborative stage [20:27] inimino: "still"? [20:27] elliottcable: Once I have a few more things worked out, I’m going to document it all *off* of Wave, probably on GitHub [20:28] elliottcable: felixge_: I can’t believe I came in *this channel* and talked about Paws, without mentioning the fact that it’s fully asynchronous [20:28] inimino: the problem with Wave is that it's a terrible format for collaboration [20:28] elliottcable: inimino: Here’s the thing: Google’s protocol sucks; Google’s server sucks, Google’s web-client sucks, and rich text sucks [20:28] felixge_: elliottcable: I assumed it to be async without looking at it ;) [20:28] elliottcable: inimino: and you put those all together, and Wave is *still* better than anything else. *That’s how freaking amazing Wave is.* [20:29] felixge_: elliottcable: well, it was mentioned in the wave early on as well [20:29] elliottcable: I can’t wait until I get my Wave server and clients written (far future, mind you); I hate how everyone is judging Wave based on Google Wave [20:29] elliottcable: felixge_: assumed that? o_O [20:29] inimino: elliottcable: that's largely because nothing in Wave is new, except Google's implementation of it [20:29] elliottcable: felixge_: There’s never been an asynchronous language, how could you assume that? d-: [20:30] felixge_: elliottcable: well node is awesome and you are asking users of node [20:30] felixge_: *awesome = asycn [20:30] elliottcable: felixge_: Yeah. I suppose it is fairly obvious that I’d base it on Node concepts, having just come from Node.js >,> [20:30] rictic has joined the channel [20:31] elliottcable: anyway, the core principle of the language is that there are no sync operations, really; ‘functions’ (similar to the ones in JS) have no return values. [20:32] inimino: elliottcable: what do they have? [20:32] elliottcable: inimino: only an argument [20:32] inimino: how do they affect the future state of the system? [20:33] elliottcable: inimino: soely through other routines passed to them [20:33] inimino: ah, continuation passing [20:33] elliottcable: I’d call them ‘callbacks’, except they never call *back*… they’re really more of call*forwards* [20:33] inimino: call it a continuation :) [20:33] elliottcable: ugh no [20:34] elliottcable: I don’t understand that word; I’ve had it explained to me a multitudinous clusterfuck of ways, and I have yet to have figured out [20:34] inimino: it's exactly what you just described [20:34] elliottcable: haha [20:34] elliottcable: a function? [20:34] elliottcable: that’s silly. [20:35] elliottcable: and *way* less complex than everyone else makes it sound. Why call it a coninuation instead of a closure, then? [20:35] inimino: yes, not a pure or mathematical function, but a procedure or routine [20:35] inimino: a closure is just one way of constructing a continuation [20:35] inimino: some languages have built-in support for capturing a continuation [20:36] inimino: this is commonly called "call/cc" or call-with-current-continuation [20:36] elliottcable: Ruby’s got callcc(), but I really have no idea how that works. [20:36] elliottcable: It’s one of about five total things about Ruby that I *don’t* know d-: [20:36] inimino: in languages which do not have such support, such as JavaScript, continuations must be constructed explicitly [20:36] inimino: e.g. as closures [20:37] inimino: I was planning on writing a blog post about the connection between continuation passing and promises/deferreds [20:37] inimino: I guess I could explain what call/cc does at the same time [20:37] inimino: they are all quite closely related [20:38] inimino: you can actually implement call/cc in JavaScript if you use a compiler to convert the JavaScript-plus-call/cc dialect to plain JavaScript [20:39] elliottcable: heh [20:39] elliottcable: sounds like a job for JESS d-: [20:39] inimino: sure [20:41] inimino: elliottcable: do you know about LtU? [20:44] elliottcable: nope [20:44] elliottcable: ah okay [20:44] elliottcable: heard of it somewhere [20:44] elliottcable: okay that is fucking *eye searing* [20:45] elliottcable: God, what *fucktard* thought it would be a good idea to display blockquotes in *blue*!? [20:45] inimino: heh [20:46] elliottcable: ACTION sets div.content blockquote { color: black; } [20:46] inimino: heh [20:46] inimino: http://lambda-the-ultimate.org/node/492 [20:46] inimino: that's the thread I had in mind [20:47] elliottcable: just clicked it [20:47] elliottcable: but ouch long [20:47] inimino: but you'll probably want to digest the entire site :-) [20:47] elliottcable: ack [20:47] elliottcable: that definately goes in the ‘maybe later’ pile. [20:47] elliottcable: hahahaha [20:51] inimino: elliottcable: see also http://lambda-the-ultimate.org/node/86#comment-458 [20:54] elliottcable: inimino: hey, /join ##Paws [20:54] elliottcable: ACTION just moved over there [20:55] DamZ has joined the channel [20:58] n8o has joined the channel [21:01] inimino: elliottcable: as soon as I get the limit raised on number of channels [21:01] elliottcable: inimino: That should only take a moment [21:22] felixge has joined the channel [22:10] isaacs has joined the channel [22:10] makoto has joined the channel [22:11] n8o has joined the channel [22:16] Booster has joined the channel [22:20] isaacs: Hey, if the request method is HEAD, shouldn't sendBody be a no-op? [22:21] inimino: isaacs: yeah, I promised to write a patch for that but haven't ever delivered [22:22] isaacs: i could see the argument for not having that in node, and instead providing in a wrapper lib [22:22] inimino: (and today's not going to be the day) [22:22] inimino: it should be in node [22:22] isaacs: kk [22:22] isaacs: http://github.com/isaacs/simple-node-server/commit/285594ebb0fdb9cd165328b82815a5a7244fbedd [22:22] inimino: node tries to guarantee adherence to HTTP when possible [22:22] isaacs: i see [22:23] isaacs: yeah, that makes sense [22:23] inimino: if someone wants to write a non-HTTP HTTP server they have TCP [22:23] isaacs: right [22:24] isaacs: make common things easy, and uncommon things possible. [22:25] isaacs has joined the channel [22:25] inimino: yep [22:25] inimino: in http.js there's a function that sets up the request and response objects when a request comes in [22:26] inimino: that'd be the thing to edit if you want to patch it :) [22:27] isaacs: kewl [22:27] isaacs: i'll probably leave it alone for now [22:27] isaacs: my little oneliner patch in sns is doing fine for my purposes. [22:28] isaacs: if i get to it before you do, i'll let you know. seems like the best approach would be to read through that part of the spec, and make sure that sendBody is disabled for any bodiless requests [22:28] isaacs: (or is HEAD the only one?) [22:30] inimino: there are others, actually [22:30] inimino: but HEAD is the only one that people are likely to implement by hooking up to an existing GET handler [22:30] inimino: well, s/people/me/ [22:32] inimino: I should say there are bodiless responses, like 204... I can't think of another bodiless request [22:33] inimino: but you could do the same for them on sendHeader if you wanted to get fancy [22:35] isaacs: oh, good point... [22:36] isaacs: it's not just if we get a HEAD request, it's also if you've set a bodiless status. [22:47] jamiew has joined the channel [23:05] voodootikigod has joined the channel [23:05] voodootikigod: hey [23:13] voodootikigod: i have a question about file reading [23:14] voodootikigod: anyone around that knows how to stream read a file? [23:14] inimino: voodootikigod: just ask [23:14] voodootikigod: really focused on how to trigger the next read without recursing (and thus running into the max stack depth) [23:14] voodootikigod: inimino: was typing [23:15] voodootikigod: essentially if i have a 5gb file [23:15] voodootikigod: i don't want to posix.cat it [23:15] voodootikigod: obvously [23:16] inimino: right [23:16] inimino: you are not going to hit a stack limit in practice [23:16] voodootikigod: but reading and keeping track of the file description pointer dies after 50k callback recursion [23:16] inimino: well [23:16] inimino: you are going to have a callback function, which will call your function again [23:17] voodootikigod: right [23:17] voodootikigod: this i know [23:17] voodootikigod: but for large files [23:17] voodootikigod: that happens a lot [23:17] voodootikigod: and eventually hits the force stack depth limit [23:17] inimino: it's coming in afresh from the event loop each time, there's nothing to do with the JavaScript stack [23:17] inimino: JS stack usage will be flat [23:17] voodootikigod: hmm [23:23] inimino: voodootikigod: you can look here: http://boshi.inimino.org/3box/asof/1261723280866/nhttpd/fileIO.js [23:23] inimino: voodootikigod: for some code I've written that does streaming, full of false starts and mistakes, but maybe those will be illustrative too [23:23] voodootikigod: thanks [23:24] inimino: voodootikigod: I am using this code and it does work, even if it all needs a rewrite :-) [23:25] voodootikigod: cool [23:25] voodootikigod: will dig through it [23:25] JimBastard: sup voodootikigod [23:25] voodootikigod: hey hows it going JimBastard [23:25] JimBastard: chillin like a villian [23:26] JimBastard: i got really tired of not having a good database working for node [23:28] JimBastard: so i did this http://gist.github.com/264446 [23:28] Connorhd_: what would be a good database? quite a few have modules for node now [23:29] JimBastard: mongo [23:29] JimBastard: or redis with a real wrapper [23:29] Connorhd_: I wanna play with mongo actually [23:29] JimBastard: xmas wish [23:29] jamiew: funny talking about redis like a database :) [23:29] Connorhd_: I was tempted to try and write a pure javascript driver, but I hadn't had time [23:29] JimBastard: >.< [23:29] JimBastard: well im just gonna use an application scope for now [23:29] Connorhd_: also wasn't sure whether bindings to the C library would be better/faster/easier [23:30] JimBastard: and keep my application state saved as a serialzed JSON document [23:30] voodootikigod: JimBastard: i ahve been using restler for mongo/couch/riak [23:30] JimBastard: how do you REST mongo? [23:30] voodootikigod: same way you would couch [23:30] JimBastard: couch has built in fuzzy ness for REST? [23:30] JimBastard: mongo does not? [23:31] voodootikigod: http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON [23:31] ashb: i've got mongo bindings for my non-node-js :) [23:31] JimBastard: caus restler + mongo rest would be amazing [23:31] voodootikigod: wait wrong link [23:31] JimBastard: lol [23:31] voodootikigod: http://www.mongodb.org/display/DOCS/Http+Interface [23:31] voodootikigod: there you go [23:31] JimBastard: :-( [23:31] JimBastard: i know where this is going [23:32] JimBastard: so i have that running already [23:32] JimBastard: is it fully implemented? [23:32] JimBastard: it seems its not [23:32] voodootikigod: umm not completely no [23:32] voodootikigod: but for what i needed it worked [23:32] voodootikigod: :) [23:32] JimBastard: is there anywhere to read on this? [23:32] JimBastard: ive been looking at that specific tool for a while now [23:33] JimBastard: with restler [23:34] voodootikigod: just ask kyle and the guys in #mongodb [23:35] JimBastard: they yelled at me [23:35] JimBastard: and asked if i wanted to get burped and a clean diaper [23:35] JimBastard: i said id take the burping but then silence [23:36] jbowman has joined the channel [23:36] voodootikigod: haha [23:36] voodootikigod: who said that to you [23:37] voodootikigod: god damn crazy peoples [23:39] voodootikigod: hmm [23:39] voodootikigod: i think i got it [23:39] voodootikigod: inimino: about to put your magics to the test here :) [23:39] inimino: alright :) [23:40] elliottcable: voodootikigod! [23:40] voodootikigod: elliottcable: [23:40] JimBastard: im just waiting for someone to finish the mongodb node driver [23:40] voodootikigod: how goses it [23:40] elliottcable: voodootikigod: Good. Paws’in. /join ##Paws? [23:40] voodootikigod: JimBastard: I know binary42 is working on a more binary capable [23:41] voodootikigod: elliottcable: I saw, was doing the family thing and just got down to FLA for vaca [23:41] voodootikigod: joinign now [23:41] Connorhd_: JimBastard, has someone started one? [23:45] jbowman has joined the channel [23:48] sudoer has joined the channel [23:49] binary42: voodootikigod: Yeah. I have a prototype that is somewhat broken. I'd finish it but work has kept me from those projects. [23:56] JimBastard: a few people have started [23:56] Connorhd_: only one I've seen is the one that scrapes the shell output