[00:00] Tim_Smart has joined the channel [00:00] JimBastard: like, ive injected this thing many ways into many browsers [00:00] jakehow has joined the channel [00:00] JimBastard: and its ughhh [00:00] JimBastard: quirksmode++ [00:00] kpx has joined the channel [00:00] rauchg: require('http').createServer(function(req, res){ require('sys').log(require('sys').inspect(res.flush)); }).listen(8000) [00:01] rauchg: gives undefined [00:11] SteveDekorte has joined the channel [00:15] pandark_ has joined the channel [00:16] softdrink has joined the channel [00:20] kevmmm has joined the channel [00:21] visnup has joined the channel [00:26] saikat has joined the channel [00:26] saikat: there isn't a way to test functions that are internal to my file without adding them to the exports for that file right? [00:29] blackdog_ has joined the channel [00:30] saikat` has joined the channel [00:30] saikat`: oops, got kicked off - sorry if someone answered my question already [00:31] saikat`: but i was asking - there isn't a way to test functions that are internal to my file without adding them to the exports for that file right? [00:32] isaacs has joined the channel [00:32] rauchg: ryah: is .flush gone from ServerResponse ? [00:33] rauchg: saikat`: you can export a function and pass a string of the internal function as a parameter :P [00:36] kpx: I wanted the simple features multiple chatrooms with any number of clients. Making a simple chatserver(HTTP) with all clients seeing everyones messages is fairly simple... But how do I design multiple chat rooms without sending a broadcast to every one? I want to filter requests on the server only.... [00:36] Tim_Smart: saikat`: http://nodejs.debuggable.com/ [00:36] saikat`: oh right - thanks Tim_Smart, rauchg [00:37] kpx: Am fairly new to node.js [00:38] kpx: I was thinking and the onnly way that came to me was to have multiple instances of node.js [00:39] kpx: But is that scalable? [00:39] Tim_Smart: kpx: You implementing something similar to IRC [00:40] isaacs: kpx: you define the rooms as javascript objects, and only send the messages to clients that are connected to those rooms. [00:40] isaacs: kpx: room.forEach(function (response) { response.write(message) }) [00:41] isaacs: kpx: using separate node instances for each room is probably overkill [00:41] kpx: isaacs: It is similar to IRC yeah... [00:42] isaacs: kpx: did you see ryah's irc example? [00:42] kpx: isaacs: no [00:42] isaacs: kpx: it's way out of date by now, but he wrote an irc server in like 70 lines of nodejs code [00:42] kersny: https://gist.github.com/a3d0bbbff196af633995 <~ irc [00:43] kersny: it only takes a few modifications to get it up and running, I just did it today [00:43] isaacs: kpx: you could also check out http://github.com/martynsmith/node-irc [00:43] isaacs: though that's a client, not a server [00:43] rauchg: isaacs: 70 !== 470 [00:43] isaacs: whoa, it's 470? [00:43] isaacs: i thought it was much smaller. [00:43] kpx: kersny: Is that the IRC server app? [00:43] rauchg: it's super short nonetheless :D [00:44] kpx: Yeah super short... [00:44] jbrantly has joined the channel [00:44] kersny: kpx: yeah [00:45] kpx: kersny: So this is TCP I assume we could do the same with HTTP... [00:45] kpx: kersny: Wanted to connect to this using a browser based app... [00:46] Tim_Smart: Similar, yeah. I would use something like Socket.IO [00:46] grantmichaels has joined the channel [00:46] isaacs: yeah, isn't socket.IO kinda built for exactly this kinda thing? [00:46] kersny: kpx: Yeah, Socket.IO is good for this stuff [00:47] kersny: kpx: this code uses Socket.IO to communicate with an IRC backend but it would probably be helpful for a pure HTTP Chat [00:48] kersny: kpx: http://github.com/halfhalo/Node.js-IRC-Client <~ link [00:48] Tim_Smart: kersny: How much of IRC does your ircd implement? [00:48] Tekerson has joined the channel [00:49] Tim_Smart: Just the basics I'm guessing [00:49] rob___ has joined the channel [00:49] kpx: kersny: Thanks Ill look into it... [00:49] sanderjd has joined the channel [00:49] kersny: Tim_Smart: its not mine, its ryan's [00:49] Tim_Smart: Ah ok [00:49] kersny: but it workd fine for me testing a pretty simple IRC bot [00:49] isaacs: Ned_: hey, you around? [00:50] pgriess: ryah: yt? [00:53] sanderjd: Does anybody know of a project/easy way to package a node.js into an executable? [00:53] sanderjd: (besides "#!/usr/sh; node blah.js" perhaps) [00:54] sixthgear: how about stick "#!/usr/bin/env node" at the top of your js and chmod 755 :) [00:55] sanderjd: ha, ok, that is *technically* different, but only just barely [00:56] richcollins has joined the channel [00:56] sanderjd: I haven't been able to find anything searching around, but I thought it might be poor search terms [00:56] sanderjd: but maybe nobody has tried/wanted this so far? [00:57] sanderjd: is it unreasonable for some reason? [00:57] sixthgear: so you want to include the v8/node runtime along with your application script in a single binary? [00:57] sanderjd: yes, that is the idea [00:58] sixthgear: well i do that with python, but I use tools like py2exe and py2app [00:59] sanderjd: yeah it would be similar (perhaps identical?) to that, just haven't seen anything of the sort for node [00:59] sixthgear: me neither [01:00] sixthgear: but for server side stuff, im not sure the market is there for that tool. I mean the reason you bundle python is because you don't expect all of your users to neccessarily havea python vm kicking around [01:00] sixthgear: for the server, i'm much more inclined to be used to compiling source [01:00] sixthgear: or at least using a package manager [01:01] sanderjd: uhm hmm, yeah I see that, and even if you want to install through a package manager it's easy to declare dependencies [01:01] ryan[WIN]: ahoy hoy [01:02] isaacs: sanderjd: you could just have #!/usr/bin/env node at the start of your file [01:02] isaacs: sanderjd: that's what we do :) [01:03] sanderjd: yeah for sure, but it would be fun to have a *real* binary :) [01:04] SteveDekorte has joined the channel [01:04] Ned_: isaacs: am now [01:04] sanderjd: I guess a followup I have would be, has anyone considered using or used node for a client app, and if not, why is node particularly unsuited to that use case [01:04] isaacs: Ned_: hey, just emailed you. you're martynsmith, right? [01:04] Ned_: ]yup [01:04] isaacs: great. [01:04] Ned_: I see you :-) [01:05] sanderjd: it seems to me that it is merely more suited to server usage, rather than unsuited to client usage [01:05] Ned_: isaacs: oh yeah, renaming is fine :-) [01:05] sixthgear: as a server admin, i try to shy away from binary distributions anyway :) [01:05] Ned_: isaacs: not really interested in writing a server ;-) [01:05] Tim_Smart: sanderjd: These has been a first attempt at gtk bindings [01:05] isaacs: sanderjd: so, i actually thing client (desktop, cli, etc.) apps in node is a much more interesting avenue. [01:05] isaacs: sanderjd: web frameworks are great and all.. [01:05] sanderjd: yeah that's where my head is as well [01:05] Ned_: isaacs: how do I go about doing that / [01:05] isaacs: Ned_: check the gist i emailed you the link to [01:06] isaacs: Ned_: it's out of date, but should just take a bit of sprucing up to make work [01:06] sanderjd: it seems like the web arena has been pretty well explored so far, but I don't see *much* movement outside that [01:06] sanderjd: Tim_Smart: you say "has been", is it dead now? hit road blocks? [01:06] Ned_: isaacs: yeah, I don't really have time though :-( [01:06] Ned_: isaacs: I'm happier to rename ;-) [01:06] isaacs: Ned_: kewl. would you accept a pull req with it? [01:06] Tim_Smart: sanderjd: I haven't been following it [01:06] Ned_: isaacs: yeah [01:06] Ned_: definitely [01:07] Ned_: that'd save me renaming ;-) [01:07] isaacs: Ned_: it'd be cool to have a single "irc" lib that has a client and server, especially if there was a bit of symmetry in the APIs. [01:07] Ned_: I'd just have to move some documentation around [01:07] Ned_: isaacs: :-) [01:07] sanderjd: Tim_Smart: well thanks, that's an interesting avenue, I'll have to check that out [01:08] isaacs: sanderjd: there's also Aria's html5, and tmpvar's jsdom, and npm, and irc clients and servers, and websockets and so on [01:08] isaacs: sanderjd: if it involves the file system and/or networks, then it's a pretty good fit for node. [01:09] Tim_Smart: js + c++ would make great GUI apps though [01:09] isaacs: node is not "for servers". Node is "for programs that do i/o" [01:09] sanderjd: right, it strikes me it is a natural UI fit as well [01:09] kpx: kersny: So the idea is that everytime a user joins he is assigned a socket and messages are routed through that.... [01:09] sanderjd: most UI libs either have or mimic eventedness anyway [01:09] sanderjd: yeah, what Tim_Smart said [01:10] Tim_Smart: Write all your computation in c++ as node addons, and bind it together in js [01:10] Ned_: isaacs: I actually run an IRC server with 20-30 people on it most of the time, if someone put an irc server lib in there, I'd consider using it (be good for finding bugs) [01:10] Ned_: :-) [01:10] isaacs: Ned_: cool. [01:10] Ned_: it would probably motivate me to fix things when they broke too [01:10] Ned_: :-) [01:10] ditesh|cassini has joined the channel [01:11] kersny: kpx: Yeah, and you can keep an array of the users and transmit to each connection for messages and such [01:12] kpx: kersny: Now see pure HTTP cant do that, atleast I cant think of anyway.. So you have to write a backend with sockets and route calls through HTTP wrapper... [01:12] isaacs: kpx: have you seen http://chat.nodejs.org/? [01:13] kersny: kpx: Yeah, Socket.IO does that pretty ell [01:13] kersny: *well [01:13] Tim_Smart: sanderjd: http://github.com/brainfucker/node-gui [01:14] kpx: kersny: Ok then i guess Socket.io is the best solution for now.. [01:14] kpx: Thanks every one. [01:14] deanlandolt_home has joined the channel [01:15] isaacs: kpx: np [01:16] kersny: kpx: yup [01:18] jherdman has joined the channel [01:19] sanderjd: Tim_Smart: very cool [01:22] joshbuddy has joined the channel [01:25] jakehow has joined the channel [01:34] creationix has joined the channel [01:36] creationix: So the request object in http callbacks is also a readable stream right [01:36] sanderjd has joined the channel [01:36] Tim_Smart: creationix: Yup [01:36] creationix: And the response object is a writeable stream [01:36] visnup has joined the channel [01:36] creationix: Hmm [01:36] Tim_Smart: creationix: Actually, not the request object [01:37] creationix: Oh yeah, the stream is embedded in it [01:37] creationix: Even better [01:37] creationix: I was to use streams in connect instead of wrapping calls to write and end [01:37] Tim_Smart: The response should be though [01:38] creationix: But I really want the first two arguments to be req and res [01:38] creationix: I'll have to check that when I'm on my laptop again [01:39] creationix: So last night i finally understood the forEach thing in jsgi [01:39] creationix: It's great except you don't have streams with throttling [01:39] creationix: And the writing end of it is kinda hard to use [01:39] isaacs: creationix: that's kind of why i wrote ejsgi [01:39] creationix: But connect doesn't have throttling either, its even harder to use [01:40] creationix: isaacs: I know [01:40] isaacs: creationix: it's out of date, and i'm not terrifically enthused about getting into the middleware game, but you might want to check it out [01:40] creationix: But I really want something with the same signature of nodes http handler is possible [01:40] isaacs: app-is-a-function and nesting closures is really fun [01:40] isaacs: maybe expand it to have 2 args instead of one, though [01:40] creationix: I did, it looks neat [01:41] isaacs: i'm not in <3 with forEach-style streams [01:41] tlrobinson: creationix: you can do throttling, i think. just have the "write" function passed to the forEach callback return a promise which is resolved when the "resume" event (or whatever its called) would be emitted [01:41] isaacs: i'm even less in <3 with promises [01:41] creationix: I'm just wondering if I can use the req and res objects as is without abstracting [01:41] rob___ has joined the channel [01:41] isaacs: creationix: yeah, you should be able to with ejsgi's metaphors without changing too much [01:41] creationix: tlrobinson: Interesting [01:42] tlrobinson: no one has implemented but if i understand things correctly its possible [01:42] creationix: Well I got to go, I don't have internet on my laptop and was stealing the wides iPad [01:42] creationix: tlrobinson: Cool, I'll check it out [01:42] isaacs: tlrobinson: i think node-jsgi does that [01:43] tlrobinson: isaacs: orly [01:43] tlrobinson: i'll have to check on that [01:45] isaacs: tlrobinson: i found that the promising-forEach style doesn't jive as consistently with node's streams, though [01:45] isaacs: there ends up being a lot of translating back and forth [01:45] isaacs: supporting streams directly is really easy now [01:46] tlrobinson: ok... but if you want to use node streams why not use them directly [01:46] isaacs: tlrobinson: well, the wrapping-functions style of middleware stacking is really nice. [01:46] tlrobinson: i don't see the point in making a generic web server interface that relies on node's specific streams [01:46] isaacs: tlrobinson: done right, ejsgi could be *almost no* code. [01:46] isaacs: tlrobinson: it didn't originally rely on node's streams. [01:47] isaacs: it relied on "event emitting stream objects", which just happened to be where node's api ended up going. [01:47] tlrobinson: ok well very close to node's way of doing things [01:47] isaacs: at the time, there was a fair bit of facade-ing going on [01:48] isaacs: and node only just recently got streams for http clients [01:48] isaacs: the server bits have been there for a while [01:48] stephenjudkins: is it possible to do async responses using express? [01:49] zaach has joined the channel [01:50] polotek has joined the channel [01:55] jakehow has joined the channel [01:57] richcollins has joined the channel [02:09] tilgovi has joined the channel [02:16] stephenjudkins: so, it seems strange that node has almost completely asynchronous IO, but almost every web framework for it has synchronous callbacks [02:16] batasrki: is mongoose self-containing or do I need a nodejs driver for mongo? [02:17] rauchg: batasrki: it includes the node-mongodb-native driver [02:17] rauchg: which is pure node as well [02:17] polotek: stephenjudkins: how do you mean? [02:17] jedschmidt has joined the channel [02:18] batasrki: rauchg: is there are reason I'd get this error then: "Error: Cannot find module 'mongodb/index'" [02:18] rauchg: have you done [02:18] rauchg: git submodule update --init --recursive ? [02:18] rauchg: then run make test [02:18] rauchg: also, use latest master [02:18] rauchg: i haven't tagged yet [02:18] batasrki: the submodule thing, again [02:18] batasrki: damn it [02:18] batasrki: thanks rauchg that's probably it [02:19] stephenjudkins: polotek: in express, you do get("/foo", function() { return "response here"; }); i'd like to do get("/foo", function(callback) { setTimeout(function() { callback("response here"); }); }); [02:19] rauchg: stephenjudkins: you don't _only_ do that [02:19] rauchg: that's one way [02:19] rauchg: you just don't walk into mordor [02:19] rauchg: you can do [02:19] rauchg: asynchronously [02:19] rauchg: this.render() [02:20] rauchg: or this.respond(404) [02:20] rauchg: in the setTimeout() [02:20] polotek: stephenjudkins: you can make anything async with process.nextTick or setTimeout. [02:20] polotek: but most examples in frameworks just don't bother with async examples in the response [02:21] visnup has joined the channel [02:21] rictic has joined the channel [02:22] stephenjudkins: ok, i believe you that it's possible *in express* to do async responses [02:22] polotek: it should be possible in any framework. [02:23] polotek: the response doesn't end until you call res.end() [02:23] polotek: so you can do any async work you need to [02:23] stephenjudkins: however, you can't "make anything async". if express always invokes the callback with the data returned from the get callback, you cannot stop it from doing that (besides doing something like throwing an exception) [02:23] stephenjudkins: polotek: no, it would be possible to write a framework where it is not possible. [02:24] rauchg: i don't understand whatcha saying [02:24] polotek: stephenjudkins: it's possible to break any api if that's what you're trying to do. I'm not sure I get what issue you're having [02:24] jedschmidt: AFAIK express was never intended to be async. that's why theu started writing connect. [02:25] stephenjudkins: i want to perform an async response using connect. that's my first-order problem [02:25] rauchg: how is it sync though? [02:25] polotek: jedschmidt: that's not true. express handles async responses just fine. [02:25] stephenjudkins: polotek: how do I do this? [02:25] rauchg: you just can't turn async (http) into sync [02:25] isaacs: jedschmidt: afaik, the motivation for connect was stackable middleware, not asyncness [02:25] rauchg: like you can't just walk into mordor. [02:25] isaacs: no, you gotta take the #25 buss [02:25] jedschmidt: polotek: yes, i'm aware of that. but async is an afterthought in express. [02:25] isaacs: you'll get a transfer, that gets you onto the 17 [02:26] polotek: jedschmidt: also not true. what are you basing this on? [02:26] polotek: I'm not affiliated with express by the way, just don't know where you're getting your info [02:27] Aria has joined the channel [02:27] polotek: jedschmidt: if anything I'll say that the express api makes it *easier* to treat it like a sync framework [02:27] polotek: because that's what people are used ot [02:27] polotek: and the raw node api is a little less friendly in that respect [02:27] stephenjudkins: so, in a framework that has almost exclusively async IO, what is even the point of having a synchronous web framework? it seems you can't do anything non-trivial without going back to async [02:27] polotek: but working with asynchronously is still just as easy I think [02:28] jedschmidt: polotek: http://nodejs.debuggable.com/2010-05-31.txt [02:28] jedschmidt: at 14:17 [02:28] jakehow has joined the channel [02:28] jedschmidt: "[14:17] tjholowaychuk: as for async being an after thought, I wanted users to actually feel comfortable with the whole idea, which is why things like uploads are left pending until complete until the route is hit [02:28] jedschmidt: " [02:28] paul_irish has joined the channel [02:29] rictic has joined the channel [02:29] paul_irish: remind me what that pretty popular framework that runs on top of node is? [02:29] polotek: jedschmidt: I don't read that the same way you do [02:29] polotek: I read it the way I just said [02:29] polotek: the api makes sync easier on new users [02:30] mde: paul_irish: Express is the best knowwn. Then there's fab. I'm building one called Geddy. [02:30] polotek: I think the point you and stephenjudkins are making is that you don't like the api [02:30] paul_irish: Ah yes express is it. i <3 fab. and i was just searching for 'getty' .. :) [02:30] polotek: which is fine [02:30] paul_irish: thx mde [02:31] mde: paul_irish: No problem. Kick the tires on Geddy, lemme know what you think. [02:31] polotek: you guys could try something lighter weight like node-router [02:31] rauchg: jedschmidt: he basically delays calling the route, asynchronously [02:31] polotek: just gives you url routing and otherwise you're using the basic node async http api [02:31] rauchg: still not sync. [02:32] jedschmidt: i'm not saying it's sync. [02:32] stephenjudkins: polotek: http://github.com/creationix/node-router/blob/master/hello_world.js looks synchronous to me. [02:32] polotek: stephenjudkins: it is, because that's the easy path for those who don't *need* async [02:33] stephenjudkins: polotek: ok, if you do *any* IO, you do need async. [02:33] jedschmidt: i'm just saying it borrows very much from existing sync frameworks. which is totally cool, since express was perhaps the first web framework on node. [02:33] kriskowal has joined the channel [02:36] jedschmidt: in my book, any framework that relies on using return to write responses is sync. [02:36] stephenjudkins: jedschmidt: +1 [02:37] polotek: http://gist.github.com/441607 [02:37] stephenjudkins: polotek: thanks! [02:38] polotek: jedschmidt, stephenjudkins any node framework should support this type of async response in some form [02:38] stephenjudkins: i shouldn't complain about the lack of documentation because i'm not getting off my ass to contribute anything...but it's definitely not there yet [02:38] polotek: framework devs are opinionated about what a nice api looks like [02:38] polotek: so they'll differ [02:39] polotek: and maybe provide a more sync looking option for the easy case [02:39] polotek: but async is always a possibility [02:39] rauchg: jedschmidt: "relies" is the wrong word though [02:39] rauchg: "has as an option" is more like it. [02:39] mscdex: geddyyyyyyyyy [02:40] mde: What's up, mscdex? :) [02:40] mde: How are things? [02:40] mscdex: hehe [02:41] mscdex: someday i'll finally get a chance to try geddy out [02:41] mde: It's still early, dude. We're not even 0.1 yet. [02:41] mscdex: are you planning on implementing a pluralizer? [02:41] mde: Yeah, inflections are on the road map. [02:42] mscdex: ok [02:42] polotek: stephenjudkins: complaining is a human right. knock yourself out ;) [02:42] mde: Right now it's very low-fi, but you can specify your own special plural if you have one. [02:42] stephenjudkins: polotek: ok then: there appears to be no meaningful documentation for express [02:42] mscdex: yeah [02:42] mde: "geddy-gen resource zoob,zoobeaux" [02:43] mde: It's lazy, but there's still so much other shit to build. [02:44] polotek: http://howtonode.org/express-mongodb [02:44] polotek: that's a pretty extensive tutorial [02:44] polotek: unfortunately the api used there is outdated at this point [02:46] mde: I'm trying to create a Rails app for some benchmarking. script/generate doesn't set up CRUD/REST mappings? [02:46] stephenjudkins: mscdex: i can't believe I know where your nick comes from. [02:46] mde: What am I missing here? [02:46] polotek: I'm gonna write a tutorial on the node http api [02:46] polotek: ACTION just decided this [02:46] rauchg: all i can think of when i read that is pokedex [02:46] polotek: been thinking about it, but it's sorely needed [02:47] mde: This is like, state of the art in Ruby-land? [02:48] mde: Kinda mystifying. [02:50] mscdex: stephenjudkins: hehe ;-) [02:50] stephenjudkins: takes me back to the days of boot disks to run every other game. [02:50] mscdex: mscdex /D:IDECD0001 [02:50] mscdex: :-D [02:51] ryan_gahl has left the channel [02:52] mscdex: is anyone doing a full-fledged smtp client lib for node? [02:53] rauchg: mscdex: i was gonna start on it, but sendmail is doing it for now [02:53] polotek: mscdex: I've heard folks talk about doing that [02:53] polotek: general concensus was, "it's really hard" [02:53] mscdex: i started on one earlier today, but didn't want to get too far if there was one already started elsewhere [02:54] rauchg: it's not hard [02:54] polotek: if it's not on the modules page I wouldn't hold my breath [02:54] rauchg: but there's a lot of work to do [02:54] polotek: rauchg: probably more accurate [02:54] polotek: don't quote me [02:54] mscdex: " don't quote me" [02:54] mscdex: oops ;-) [02:55] mscdex: anyway, i'm thinking of modelling the api after phpmailer [02:55] aconran has joined the channel [02:56] falconair: hi, i have a .js file with nothing but one large object literal with key/val pairs: { "1":"asdf", "2":"xyz" ...}, jslint tells me it is ok, but node complains about the ":" key/val separator [02:56] falconair: how can i resolve this? [02:57] mscdex: the keys shouldn't be quoted unless it's json [02:58] falconair: mscdex: the file is supposed to be used only as a store of key/vals, i want to be able to 'require' it in my server... [02:58] polotek: mscdex: if it's not json it shouldn't matter if the keys are quoted right [02:58] falconair: since it only has key/vals, doesn't it make it json? [02:58] rauchg: http://github.com/kennethkalmer/node-smtp [02:58] rauchg: http://github.com/miksago/node-smtp-client [02:58] polotek: falconair: exports = {...} [02:59] falconair: doh' [02:59] polotek: actually I think that won't work [02:59] mscdex: rauchg: yikes, january :P [02:59] polotek: module.exports = {...} [02:59] rauchg: yep [03:00] falconair: btw, i am only using "exports" throughout my code, how is "module.exports" different? [03:00] polotek: falconair: they're mostly equivalent [03:00] polotek: I think it's better to use module.exports to replace the whole exports object rather than just setting properties on it. [03:00] bradleymeck has joined the channel [03:00] polotek: e.g. exports.MyClass = ... [03:01] aaron__ has joined the channel [03:01] bradleymeck: dont forget module.exports, makes some things much nicer [03:01] Tim_Smart1 has joined the channel [03:01] falconair: in my code I am doing "exports.createServer = function..." , I should be using "module.exports.createServer = function..." ? [03:02] isaacs: falconair: those two would be identical [03:02] polotek: falconair: nah, you're fine with that [03:02] bradleymeck: exports.y is the norm unless you are completely replacing the exports object [03:02] isaacs: falconair: module.exports = someFunction --> var someFunction = require("some-function") [03:03] isaacs: falconair: exports.someFunction --> var someFunction = require("some-function").someFunction [03:03] falconair: ah, i see, thanks isaacs, et al [03:03] kersny has left the channel [03:04] aaron__: anyone have it in them to help answer a question about the right way to wire up my async code? A bit confused about how to achieve my goal. Got a great proxy app written in node, but unsure how to combine a streaming proxy w/ an upfront database lookup [03:04] Tim_Smart has joined the channel [03:05] bradleymeck: sure aaron, got a gist or paste? [03:05] aaron__: well, it's a conceptual question [03:05] aaron__: (and thank you) [03:06] isaacs: aaron__: you set up each piece to take a callback. then you compose multiple callback-taking functions into one bigger one that joins them together. [03:06] isaacs: ACTION gisting... [03:06] aaron__: how do you do that join? [03:07] bradleymeck: hes making you a gist [03:07] aaron__: just to flesh out my context/goal, I want to lookup two pieces of data from the DB based on a header, and depending on their value, stream the request, or buffer & transform it [03:07] rauchg: he's gisting [03:08] isaacs: aaron__: http://gist.github.com/441634 [03:08] aaron__: assuming some node contributors are in here? Let me say, it's a blast working w/ it :) [03:08] isaacs: yes, there are some node contributors in here. [03:08] isaacs: always :) [03:09] AndChat: :) [03:09] aaron__: isaacs: so, I understand callback chaining, [03:09] AndChat: Sargent [03:09] aaron__: and continuation passing style in general, [03:09] isaacs: right, but you wanna do TWO things in parallel, then a third when they're done? [03:10] rauchg: mscdex: http://github.com/pilif/node-smtp this one is april 14 [03:10] rauchg: more recentish [03:10] mscdex: hrmm [03:11] creationix: isaacs have you tried step [03:11] isaacs: creationix: i have. [03:11] isaacs: ACTION likes just passing cb funcs around [03:11] isaacs: it's more fun that way [03:11] isaacs: i also juggle knives. [03:11] isaacs: ;) [03:11] creationix: Fair enough [03:11] mscdex: it uses promises :S [03:12] mscdex: hmm [03:12] aaron__: I don't care about parallelization yet, I just know in my (req, resp) callback I need to immediately bind the handlers (write/end) to req; I can't wait to do that in a DB call back, correct? the behavior of those handlers though I want to be db dependent [03:12] aaron__: or at least, when I don't bind handlers immediately, stuff goes to hell ;-) [03:12] mscdex: i'll take a closer look at that fork of node-smtp tomorrow [03:13] creationix: aaron__ look at the filters in connect for some crazy wrapping [03:14] creationix: GitHub.com/extjs/connect [03:14] aaron__: heading there now [03:15] creationix: Not sure I understand though [03:15] aaron__: I can 'gist' it up [03:15] mde: aaron__: It's JavaScript you can do foo.myHandler = function () {}; but you can always point it to some other function later. [03:15] mde: JavaScript is all loosey-goosey that way. [03:16] isaacs: aaron__: http://gist.github.com/441634 [03:16] mde: I guess the technical term for that is lazy function definition. [03:16] aaron__: mde: it's not a typing/binding issue in that sense, I can't ensure I'll swap that function out before someone calls back to it [03:17] isaacs: aaron__: yeah, but your handlers can do different things based on the database response, or you can .pause() the incoming request so that it waits for your db (though ti's probably better to just buffer it,up to a point) [03:17] mde: It's dependent on the DB call, but you can't depend on it waiting until the DB calls are done? :) [03:17] aaron__: isaacs: thanks for the join code; also: was not aware of pause, that would be the simplest solution to at least get my logic right, then I can optimize it later w/ a buffer [03:17] isaacs: aaron__: your best bet is probably to just .pause() the incoming request right away, and when the db comes back, then .resume() it and do the right thing [03:18] creationix_ has joined the channel [03:18] aaron__: isaacs: agreed, thank you! [03:18] aaron__: looking up pause [03:18] mscdex: lol @ "loosey-goosey" :P [03:18] JimBastard has joined the channel [03:18] isaacs: aaron__: that's only really an issue if you're accepting uploads [03:18] mde: Yerp. :) [03:18] creationix_: Yay iPad [03:18] aaron__: isaacs: what's specific to file uploads? [03:18] mde: creationix_: Nice to be connected to the outside world, yeah? :) [03:18] isaacs: aaron__: the pause/resume stuff. you're building a server, yes? [03:19] creationix: Irc on my phone is about impossible [03:19] creationix: The iPad is much better [03:19] aaron__: isaacs: yes, http proxy [03:19] isaacs: aaron__: kewl [03:19] creationix: isaacs: You can pause? [03:19] isaacs: creationix: yeah [03:19] creationix: Didn't know that [03:20] isaacs: creationix: you can pause/resume any stream nowadays [03:20] isaacs: even http clients! [03:20] tmpvar has joined the channel [03:20] creationix: aaron__: I meant to point to the providers/static.js file in connect [03:20] bradleymeck: ipads hurt my hands holding em :/ [03:20] JimBastard: me in #github : hey tekkub, if i wanted to re-order my friends so my top friends appeared on my home page, would that be cool or uncool? i dont want to fuck with your servers. would be like 700 requests i could do it over a span [03:20] aaron__: creationix: thank you, will dig through. the more example code the better! [03:20] creationix: I didn't know about pausing and did some crazy stuff to delay the stream [03:20] isaacs: aaron__: you may want to talk to mikeal and/or mjr if you ever see them around. [03:21] isaacs: aaron__: mikeal has a proxy/load-balancer/thing that sits in front of couch [03:21] aaron__: isaacs: oh cool [03:21] SteveDekorte has joined the channel [03:22] isaacs: aaron__: and mjr has done a lot of stuff with proxying and dealing with laggy connections [03:22] creationix: aaron__: So you want to reroute a stream, but not till after an asynchronous operation? [03:22] mscdex: JimBastard: it's not facehub [03:22] JimBastard: yo i wanna give big ups to my javascript homies [03:22] mscdex: huhu [03:22] mscdex: kid.js [03:23] aaron__: isaacs: so I'm building a dynamically programmable proxy, [03:23] aaron__: isaacs: request comes in, based on URL ferrets out some custom script from mongo db, [03:23] aaron__: isaacs: and may identity-proxy, or may transform, based on presence of scripts tied to that URL [03:23] aaron__: isaacs: 'grease-monkey' as an http-proxy, in essence [03:23] JimBastard: i just commited to js-fu, gonna finish that shit i swear [03:23] aaron__: creationix: yes, re-route or transform [03:23] aaron__: creationix: or just byte-for-byte proxy, but that's the space of it [03:23] creationix: Yeah, i think pause will be your friend [03:23] isaacs: yep [03:23] mscdex: JimBastard: there is never an end to one's javascript-fu! [03:23] aaron__: yup, pause is exactly what I need right now [03:23] creationix: I know pause will solve my problem with static [03:23] isaacs: then you don't buffer more than necessary, you just tell the kernel to stop accepting packets for a sec [03:24] creationix: isaacs: But pause isn't immediate ring? [03:24] creationix: Right? [03:24] isaacs: creationix: well, i think from your code's pov, it is [03:24] creationix: So you still have to buffer a few chunks [03:24] chilts: I watched Douglas Crockford's Google Tech talk last night, "JavaScript: The Good Parts" ... it was good :) [03:24] aaron__: creationix: if you call it after you set up your handler, but before you return control, you're good I bet [03:24] pzich has joined the channel [03:24] isaacs: creationix: if you pause before the first chunk, it should be fine [03:24] chilts: am gonna start using JSLint I think :) [03:25] mscdex: The Crockford Files [03:25] creationix: Talked to ryah about this last week and I think that even with pause the first chunk might already have fired [03:25] isaacs: ACTION breaks most of jslint's rules [03:25] mscdex: starring James Garner as Crockford [03:25] isaacs: creationix: it might, but i think node buffers it for you [03:25] isaacs: mscdex: it'd be cooler if you'd said Jennifer Garner [03:25] isaacs: she'd look good with a beard [03:25] creationix: Maybe that was what we were tAlking about [03:25] mscdex: i don't think she cross-dresses though [03:26] isaacs: mscdex: ahem. http://www.imdb.com/title/tt0171804/ [03:26] JimBastard: hrmmm [03:26] isaacs: oh, wait, that's hillary swank, not jeninfer garner [03:26] polotek: creationix: if you call pause before you wire up the data event listener it should be fine [03:26] JimBastard: i think i can make kohai not pollute your git history [03:26] mscdex: psh 1999 [03:26] JimBastard: ill just create a kohai branch in each repo and touch that [03:26] JimBastard: that way the master branch is not touched [03:26] JimBastard: WIN! [03:27] JimBastard: http://github.com/marak/kohai [03:27] creationix: Well if pause works that way, that sous be fabulous [03:27] isaacs: whatever, they're almost the same. [03:27] creationix: Sous? This autocomplete is retarded sometimes [03:27] creationix: That's not what I typed [03:28] aaron__: creationix: what iPad IRC app/site are you using? would love to know! [03:28] creationix: Colloquey [03:28] polotek: I've use colloquy on the iphone [03:28] creationix: And andChat on my nexus phone [03:29] polotek: it works [03:29] polotek: can't say it's fun [03:29] aaron__: is it ipad native? or just scaled up iphone? :) [03:29] aaron__: haha [03:29] creationix: iPad native [03:29] aaron__: rock [03:29] creationix: Much better [03:29] aaron__: grabbing it now [03:29] creationix: The keyboard is almost usable [03:30] jbrantly has joined the channel [03:30] isaacs: JimBastard: http://www.maraksquires.com/articles/2009/11/19/front-end-development-manifesto/ [03:31] isaacs: JimBastard: you should start that with a disclaimer: "As soon as you write it, it's out of date." [03:31] JimBastard: isaacs: im sure thats horribly outedated and wrong [03:31] JimBastard: ahaha [03:31] JimBastard: yeah [03:31] JimBastard: i was just mad at our contractors yo [03:31] isaacs: i hear that [03:31] JimBastard: they needed to recognize [03:32] creationix has joined the channel [03:33] creationix: So isaacs, back to my question from earlier. Does the req object have a fully implemented stream interface in it? [03:33] creationix: And same for res [03:33] isaacs: creationix: yes. [03:33] creationix: But not req itself, just some prop on it? [03:33] isaacs: afaik, req is a readable stream, and res is a writeable stream, with all that entails. [03:33] isaacs: they just have some goodies attached [03:33] creationix: Maybe it's just the socket that's internal [03:33] isaacs: like headers and whatnot. [03:33] isaacs: yeah, the socket/connection is internal [03:34] creationix: So like res.end takes data [03:34] isaacs: and the streamy goodness on req/res might be proxying. i dunno. [03:34] isaacs: creationix: i think that's in the stream api [03:34] creationix: Really? [03:34] isaacs: you can send one last write() with the end() [03:34] creationix: ACTION needs internet so I can look up this stuff on my own [03:34] isaacs: why you has no internets? [03:35] creationix: I'm in Texas at my old house [03:35] isaacs: ooohhhhh [03:35] isaacs: that's not as awesome. [03:35] creationix: Just iPad and phone with 3G [03:35] bradleymeck: hes on irc w/o internets, hes a witch! [03:35] isaacs: why not wire your 3g phone up to your laptop? [03:35] isaacs: it's android? [03:35] bradleymeck: creationix, you moving away from TX? [03:35] creationix: I tried to figure out how to git commit from my laptop yesterday [03:36] creationix: Even started a local web server on my laptop, created a local wifi network, hit it with the iPad web browser, and copied the contents to the clipboard [03:36] creationix: But the github text areas don't work right on the iPad [03:36] isaacs: creationix: telling you, tether your laptop [03:37] creationix: bradleymeck: Yeah, I live in palo alto now [03:37] creationix: isaacs: How? [03:37] falconair: is there a java utility library folks here use? i need things like mapping over an array, without all the DOM related stuff...any suggestions? [03:37] isaacs: creationix: http://code.google.com/p/azilink/ [03:37] isaacs: android or iphone? [03:37] bradleymeck: falconair ummm java? [03:37] creationix: iPad and nexus one (android) [03:37] kpx has joined the channel [03:37] falconair: javascript :) [03:38] isaacs: creationix: you may have to go to a wifi hub or something to download the parts. [03:38] isaacs: creationix: but it works really well. i use it regularly [03:38] bradleymeck: [].map(function(item){return blah;}) [03:38] creationix: Awesome thank [03:38] bradleymeck: can also use underscore [03:38] creationix: Got to go though, see you all tomorrow [03:38] bradleymeck: http://documentcloud.github.com/underscore/ [03:39] falconair: bradleymeck: is there really a map function on arrays? i need better javascript references [03:39] isaacs: creationix: here's a better link: http://thinkden.com/index.php/general/admin/75 [03:39] bradleymeck: its not in ie T_T but then, what is [03:39] morganallen has joined the channel [03:39] bradleymeck: so he needs to install things, from the internet to tether the internet? [03:40] polotek: falconair: it's not available in all browsers [03:40] aaron__: isaacs, creationix: thanks again, gonna crank on this w/o IRC distraction ;-) hope to see you around (& maybe via iPad IRC, woah..) [03:40] polotek: gotta be careful with compatibility [03:41] polotek: using something like underscore helps with that [03:41] falconair: polotek: i need a utility library for my node.js work, most of the utility libs seem to be for the web (DOM functions, etc.) [03:42] polotek: falconair: underscore works fine in node [03:43] polotek: I'm using it in evented-twitter [03:44] falconair: polotek: never knew of underscore, thanks [03:44] joshbuddy has joined the channel [03:45] mikeal has joined the channel [03:46] creationix: falconair: I made a page on the node wiki documenting all the es5 goodies implemented in v8 [03:46] creationix: Has array.prototype.map and friends [03:47] bradleymeck: wonder how to implement a with statement from c++ [03:49] falconair: creationix: interesting info, thx [03:49] bradleymeck: guess ill join tekkub w/ his wow addiction jimbastard? [03:50] mscdex: Jim is MIA [03:50] mscdex: javascript-fu got the best of him [03:50] markwubben has joined the channel [03:52] wilmoore has joined the channel [03:57] pzich has joined the channel [04:00] falconair: creationix: on the wiki page you mentioned, there is an entry for "keys(object)" , but when i try to use keys, i get "keys is not defined" ... do i need to "require" something? [04:01] pzich has joined the channel [04:07] JimBastard: sup [04:07] JimBastard: you just gotta call my name [04:07] JimBastard: im about to release another library [04:08] JimBastard: also i shouldnt abuse the github employees [04:08] JimBastard: thats not cool [04:08] KungFuHamster: again? [04:08] JimBastard: but like that dude was being really snarky [04:08] JimBastard: http://support.github.com/discussions/feature-requests/898-sortable-and-pinnable-repos [04:10] cloudhead: can node expand globs? [04:11] cloudhead: I mean, can it list files, given a glob, somehow [04:11] JimBastard: fuck whats a glob again [04:11] cloudhead: or would I have to use a child process [04:11] cloudhead: JimBastard: **/*.js [04:12] JimBastard: yeah [04:12] JimBastard: i got you [04:12] JimBastard: one sec [04:12] Tim_Smart: cloudhead: child_process me thinkgs [04:12] Tim_Smart: *thinks [04:12] JimBastard: http://gist.github.com/441670 [04:12] JimBastard: like that? [04:12] cloudhead: hmm [04:13] JimBastard: i dont use that as a webservice though... [04:13] JimBastard: its a build script [04:13] cloudhead: JimBastard: I gave you that code ;) [04:13] JimBastard: ahah lolwut [04:13] JimBastard: you sure [04:13] cloudhead: yeh [04:13] JimBastard: i thought it was creationix [04:13] cloudhead: I use it in vows [04:13] JimBastard: well then [04:13] JimBastard: the guy i got it from said it was good [04:13] JimBastard: you should message him [04:13] cloudhead: hehe [04:13] JimBastard: ACTION fails [04:14] JimBastard: everybody STOP [04:14] JimBastard: javscript time [04:14] cloudhead: yea, that works, but globs would be nice [04:14] JimBastard: sys exec ls ? [04:14] JimBastard: >.< [04:14] cloudhead: JimBastard: yea.. [04:14] cloudhead: would be nice to have this built-in [04:14] JimBastard: if you make the traversal code work ill wrap it up in a package [04:15] JimBastard: you think in core? [04:15] cloudhead: yea [04:15] cloudhead: it's quite useful [04:15] JimBastard: fancy! [04:15] JimBastard: ryah ? [04:16] JimBastard: has this been discussed on mailing list maybe? [04:16] JimBastard: maybe its been brought up [04:16] cloudhead: dunno [04:16] cloudhead: yea [04:16] saikat has joined the channel [04:16] cloudhead: for instance can do glob('**/*.js') [04:16] cloudhead: to list all .js files in all sub directories [04:17] cloudhead: hmmmm [04:17] cloudhead: gonna code it up [04:17] cloudhead: with `ls` [04:17] JimBastard: ahahahah [04:18] JimBastard: :-( [04:18] cloudhead: although hmm [04:18] cloudhead: how hard would it be to write a glob parser [04:18] cloudhead: probabbly not very [04:19] JimBastard: yo cloudhead , search the mailing list for "glob" [04:19] JimBastard: there is a lot of talk and links [04:19] JimBastard: +4 informative [04:20] cloudhead: oh ok [04:22] cloudhead: hmm [04:22] cloudhead: seems like they didn't come to conclusion [04:27] JimBastard: so listen to whatever they said [04:27] JimBastard: then ignore it [04:27] JimBastard: and make that shit work [04:27] JimBastard: caus they didnt get shit done [04:27] JimBastard: is it possible to do easily? [04:27] cloudhead: isaac's node-glob? [04:27] JimBastard: why did he stop work on it? [04:28] JimBastard: .addCallback(function (matches) [04:28] JimBastard: OOFA! [04:28] cloudhead: hehe [04:29] cloudhead: I don't know [04:29] cloudhead: also I'm not sure what the cc file is for [04:29] JimBastard: whats wrong with fs.readdir(path, callback) [04:29] JimBastard: ? [04:29] cloudhead: what do you mean? [04:29] JimBastard: cant you do a glob like that? [04:29] cloudhead: oh [04:29] cloudhead: no [04:29] JimBastard: why not? [04:30] cloudhead: well, it's just not a glob [04:30] JimBastard: cant you just write a parser or something to read the snytax [04:30] cloudhead: readdir doesn't understand '*/**' [04:30] JimBastard: and that make that the traverse [04:30] JimBastard: i know [04:30] JimBastard: just build a intermediary layer [04:30] cloudhead: well [04:30] cloudhead: yea [04:30] JimBastard: or patch readdir [04:30] JimBastard: you can do that too [04:30] cloudhead: but [04:30] JimBastard: in realtime or whatever [04:30] cloudhead: they were talking about that not being the best solution [04:30] JimBastard: uhhh [04:31] cloudhead: they want to go to libeio directly [04:31] JimBastard: you need high performance directory parsing? [04:31] cloudhead: "This is really something that needs to be done by the Libev / Libeio libraries or by the node C bindings, " [04:31] cloudhead: I was at one stage working on a form of this, but couldn't get it working properly, I don't think. [04:31] JimBastard: dude [04:31] JimBastard: you have to remember what slow performance in nodejs means [04:31] JimBastard: lol [04:31] JimBastard: how many dirs / how many times you need to do this [04:31] cloudhead: well [04:32] JimBastard: you can hook into libeo or whatever [04:32] cloudhead: I'm just saying, that's the 'proper' way to do it [04:32] JimBastard: i have no idea how [04:32] sanderjd has joined the channel [04:32] JimBastard: i dont get why one of them just didnt do it [04:32] JimBastard: is it hard? [04:32] cloudhead: sort of [04:32] cloudhead: well [04:33] cloudhead: it's non-trivial ;) [04:33] cloudhead: isaacs has something pretty good going though [04:33] cloudhead: could try to work with that [04:33] cloudhead: but yea I dunno [04:33] Tim_Smart: I made a quick'n'dirty example for parallel http://gist.github.com/438828 [04:33] cloudhead: I think I'll just use a child_process [04:33] Tim_Smart: for anyone interested in parallel tasks [04:34] cloudhead: cool [04:35] Tim_Smart: I use it in node-asset :) Similar to step and flow I guess [04:36] hassox has joined the channel [04:36] cloudhead: except it seems to have a decent API [04:37] cloudhead: well, flow doesn't look that bad [04:37] Tim_Smart: Task id's can also be strings as well. It uses a EventEmitter on the backend [04:38] Tim_Smart: http://github.com/Tim-Smart/node-common/tree/master/lib/parallel/ [04:43] chrischris has joined the channel [04:51] siculars has joined the channel [04:57] zaach has left the channel [04:59] ceej has joined the channel [05:00] wilmoore_ has joined the channel [05:02] dabreaka has joined the channel [05:04] polotek: Does this make sense? [05:04] polotek: http://marcorogers.com/blog/static/content/images/libxmljs_memory_spaces.jpg [05:04] cloudhea has joined the channel [05:04] stephenjudkins has joined the channel [05:04] richcollins has joined the channel [05:07] Aria: MAkes sense to me... [05:08] polotek: word [05:08] polotek: I made it at 3am last night [05:08] polotek: can't really be sure I was still lucid [05:11] chrischris has joined the channel [05:12] ceej has joined the channel [05:12] mostlygeek has joined the channel [05:13] sechrist: creately looks neat [05:13] polotek: sechrist: yeah it is. I was surprised by the level of functionality they provide in a browser [05:14] polotek: It's 90% of what a dev person like me will want to do with diagrams [05:14] polotek: some pain points in the UI, but that's to be expected [05:14] polotek: and I did this complete diagram and was able to export it to jpg for free [05:14] aglemann has joined the channel [05:19] JimBastard: anyone feel like making their browser asslpode? [05:19] JimBastard: http://maraksquires.com/pdf.js/ [05:19] JimBastard: also https://github.com/Marak/pdf.js [05:19] JimBastard: for shits and giggles [05:19] JimBastard: worst library ever [05:19] JimBastard: fuck post script [05:19] JimBastard: pdf sucks [05:19] halorgium: lol, js -> pdf generator? [05:22] AndChat| has joined the channel [05:22] Aria: No boom for me. [05:23] JimBastard: yeah halorgium [05:23] JimBastard: it works dual sided [05:23] JimBastard: i got demos for node and a interactive demo for browser [05:23] JimBastard: it sucks though [05:23] JimBastard: i mean hard [05:24] JimBastard: fuck post script [05:24] JimBastard: it does work though [05:24] halorgium: JimBastard: ps is pretty logic, just like sgml is logical [05:25] JimBastard: word [05:25] JimBastard: well like [05:25] JimBastard: i just sent a mailings [05:25] JimBastard: to the list [05:25] JimBastard: feel free to respond with some knowledge [05:25] JimBastard: ill see what everyone thinks [05:25] JimBastard: i really have no idea how that shit works [05:25] JimBastard: IT TURTLES ALL THE WAY DOWN [05:25] JimBastard: TURTLES AND MAGIC [05:25] JimBastard: thats pretty much how i operate [05:26] Tim_Smart: 3 images on this page http://121.79.216.71:8000/ . CSS3 is hawt [05:26] JimBastard: so is yer mum [05:26] cloudhead: ok for some reason I can't get `ls` to do a glob in child_process [05:27] cloudhead: something's fuckd [05:28] Determinist has joined the channel [05:28] halorgium: cloudhead: you'll need to do sh -c '...' [05:28] halorgium: the glob is shell expansion [05:29] mikeal has joined the channel [05:30] ceej has joined the channel [05:31] JimBastard: cloudhead: you passing the commands right? [05:31] cloudhead: halorgium: ahh fuck [05:31] JimBastard: as an arguments array? [05:31] cloudhead: JimBastard: yea [05:31] cloudhead: gonna try what halorgium said [05:31] JimBastard: i just posted pdf.js to hackernews and reddit and the lists. i cant wait till people flame me for "stealing" all that code [05:32] JimBastard: >.< [05:35] manveru: heya [05:35] manveru: halorgium: looong time no see :) [05:36] brianmario has joined the channel [05:36] manveru: can't seem to find a way to iterate over lines in a string... is there anything builtin? [05:37] JimBastard: .split('\n') ? [05:37] manveru: something like "foo\nbar".each_line(function(line){}) [05:38] cloudhead: yea just split it [05:38] cloudhead: fuck `sh` doesn't have full glob support [05:38] cloudhead: oh well. [05:38] Tim_Smart: What does ctime stand for? [05:38] mape: create time? [05:38] cloudhead: changed time? [05:38] Tim_Smart: It is always higher than mtime [05:38] cloudhead: hmm create yes [05:38] mape: mtime is modified? [05:39] mape: hmm [05:39] Tim_Smart: mtime is modified [05:39] Tim_Smart: Just wondering if mtime and ctime are getting confused somewhere [05:40] sudoer has joined the channel [05:40] manveru: hm [05:40] manveru: there seems to be no split function? [05:41] manveru: http://pastr.it/16790 [05:41] polotek: manveru: I bet you're dealing with a Buffer instead of a string [05:42] jedschmidt has joined the channel [05:42] manveru: heh, quite possible [05:42] polotek: yep [05:42] polotek: pass an encoding the fs functions to make sure you get a string [05:42] polotek: fs.readFileSync('test.ox', 'utf8') [05:42] manveru: thanks [05:42] cloudhead: or .toString() [05:42] polotek: yeah [05:43] manveru: toString needs 3 parameters... i prefer giving the encoding :) [05:43] polotek: manveru: ? [05:43] polotek: no it doesn't [05:43] manveru: buffer.toString(encoding, start, end) [05:43] manveru: Decodes and returns a string from buffer data encoded with encoding beginning at start and ending at end. [05:44] polotek: should all be optional [05:44] manveru: even the encoding? [05:44] polotek: defaults to utf8 [05:44] polotek: give it a shot. make sure I'm not nuts [05:45] manveru: you're not [05:45] manveru: :) [05:45] manveru: thanks [05:46] nsm has joined the channel [05:47] manveru: btw, is the require style i'm using ok? [05:47] manveru: shuold i use 'var fs ='? [05:47] manveru: i'm just getting started as you may notice [05:48] manveru: my problem is that if i use var, then i cannot get it inside the p function for example [05:49] JimBastard: i guees annoucer is gone [05:51] rauchg: JimBastard: [05:51] rauchg: pdf.js looks sweet [05:51] rauchg: not the API, but the result [05:51] polotek: manveru: you should use var [05:51] polotek: it's good javascript style to declare your variables as local [05:51] polotek: but why wouldn't you be able to get at it in the p function? [05:52] manveru: ReferenceError: sys is not defined [05:52] visnup has joined the channel [05:53] polotek: strange. closure make sure sys is in scope [05:53] polotek: i still works outside of p? but as soon as you try to use it in p you get that error? [05:53] manveru: yeah [05:53] manveru: it seems logical [05:53] manveru: but inconvenient [05:54] JimBastard: rauchg: yeah, the API is the suck [05:54] JimBastard: i want to send it HTML [05:54] manveru: i could do a require inside p, not sure how slow things get then or if it causes other issues [05:54] rauchg: JimBastard: it'd be cool to support a subset of CSS [05:54] manveru: since i don't use it outside that function [05:55] rauchg: so instead of setFontSize(22) + .text(20, 30) font-size: 22; left: 20; top: 30 [05:55] manveru: hmm [05:55] manveru: maybe i'm just stupid, brb [05:56] JimBastard: rauchg: i accept pull requests :-D [05:56] manveru: yes, i'm stupid... was caused by a modification of pegjs that relied on sys.puts [05:57] JimBastard: you have to appreciate as of today, i have literally zero usecase for this [05:57] JimBastard: just keeping it real [05:57] polotek: manveru: cool [05:57] JimBastard: :p [05:57] rauchg: hahahahhha [05:57] JimBastard: im more of an ideas type of guy [05:57] JimBastard: ahahahaha [05:57] manveru: speaking of pegjs [05:57] polotek: JimBastard makes keeping it real into a profession [05:58] JimBastard: you gotta keep it real [05:58] hammerdr has joined the channel [05:58] softdrink has joined the channel [05:58] JimBastard: most of my rap songs are about being white and awesome and from new york [05:58] JimBastard: ACTION word [05:58] JimBastard: i gotta make the git rap [05:59] JimBastard: ive been talking about that for a few months [05:59] manveru: polotek: http://pastie.org/1008047 [05:59] manveru: is that supposed to work on v8? [06:00] manveru: because all i get from throw is throw new this.SyntaxError( [06:00] polotek: ACTION shrugs [06:00] polotek: assuming SyntaxError is a proper subclass of Error [06:01] polotek: looks like Error doesn't take those line and column parameters [06:01] polotek: it should give a stack trace with a line number anyway though [06:01] polotek: err.stack [06:01] manveru: no... i get no such thing [06:02] polotek: where is SyntaxError coming from? [06:02] sixthgear has left the channel [06:02] manveru: it doesn't seem to be defined in pegjs [06:02] manveru: maybe it's part of rhino? [06:02] polotek: oh, it's actually part of javascript [06:02] polotek: never used it [06:03] polotek: you probably don't need "this." [06:03] manveru: aight, that fixes it [06:03] manveru: thanks again :) [06:04] zomgbie has joined the channel [06:09] bpot has joined the channel [06:10] polotek: anybody here familiar with waf and node-waf? [06:13] muhqu has joined the channel [06:14] micheil has joined the channel [06:19] jetienne has joined the channel [06:27] rictic has joined the channel [06:34] JimBastard: http://www.endlessyoutube.com/watch?v=sbQwQetKm2g&start=0m30s&end=0m33s [06:34] JimBastard: !~!!!! [06:35] Tim_Smart: That is just weird [06:36] JimBastard: ACTION says its getting wierd in here baby [06:36] JimBastard: im gonna keep that on loop for a while full volume, will help me relax [06:37] zomgbie has joined the channel [06:37] JimBastard: or have a seizure, not sure [06:38] Tim_Smart: You should loop one of RayWilliamJohnson's vids [06:46] rauchg: cya guys [06:51] zomgbie has joined the channel [07:03] derbumi has joined the channel [07:03] halorgium: hrm, why would i be getting sys is not defined errors [07:04] ryan[WIN]: do you have this at the top? [07:04] ryan[WIN]: var sys = require('sys'); [07:04] halorgium: yes [07:04] halorgium: it is odd [07:05] TomY has joined the channel [07:10] deanlandolt_home has joined the channel [07:11] slaskis has joined the channel [07:17] voodootikigod_ has joined the channel [07:20] nsm has joined the channel [07:23] mtodd has joined the channel [07:37] saikat has joined the channel [07:37] teemow has joined the channel [07:42] virtuo has joined the channel [07:42] hassox has joined the channel [07:44] SteveDekorte has joined the channel [07:45] polotek has left the channel [07:50] joshbuddy has joined the channel [07:58] mitkok has joined the channel [08:00] hellp has joined the channel [08:03] aglemann has joined the channel [08:21] jbrantly has joined the channel [08:25] mAritz has joined the channel [08:28] bpot has joined the channel [08:37] xla has joined the channel [08:39] Tim_Smart: Can anyone comment on the speed of jsdom and friends? [08:44] ewdafa has joined the channel [08:47] botanicus has joined the channel [08:48] N` has joined the channel [08:55] SteveDekorte: does node.js have at most two kernel threads? (one for v8, one for the debugger) [09:00] jetienne: SteveDekorte: from my understanding it has more than that... in order to emulate async for sync call [09:00] jetienne: my shallow understanding from a ryan[WIN] video talk [09:00] Tim_Smart: ryah you mean [09:01] jetienne: i guess he got too many usernames [09:01] ryan[WIN]: i have videos too [09:01] jetienne: ryan[WIN]: are you ry from github ? [09:01] ryan[WIN]: jetienne, no that would be ryah [09:01] jetienne: ryan[WIN]: oh my bad then [09:05] jbrantly has joined the channel [09:06] SvenDowideit has joined the channel [09:06] SteveDekorte: ah, which calls are sync? [09:06] SteveDekorte: (that the threads make look async) [09:06] Tim_Smart: SteveDekorte: There is the main event loop, v8 thread, libeio thread pool, and probably a few others [09:06] mitkok has joined the channel [09:07] Tim_Smart: SteveDekorte: Disk access for one, which is handled by libeio [09:08] pufuwozu has joined the channel [09:08] SteveDekorte: why not use the OS's async file i/o calls? [09:09] romainhuet has joined the channel [09:10] SteveDekorte: or does libeio do that if possible? [09:11] Tim_Smart: Not sure, take a look http://software.schmorp.de/pkg/libeio.html [09:11] SvenDowi- has joined the channel [09:16] SvenDowideit_ has joined the channel [09:18] SteveDekorte: oh wow, aio is based on this? [09:18] Tim_Smart: on what? [09:18] Tim_Smart: libeio? [09:18] SteveDekorte: right [09:19] SteveDekorte: yikes, that means a 2M os kernel thread gets created for every active descriptor? [09:20] jetienne: SteveDekorte: look at memory usage during usage. this is extra low and quite constant [09:21] caolanm has joined the channel [09:21] Validatorian has joined the channel [09:21] Validatorian: ryah, around? [09:21] SvenDowideit_ has joined the channel [09:22] Validatorian: well, when you return, here is the stack trace for the ETIMEDOUT error I am getting -- just got it again: [09:22] Validatorian: Error: ETIMEDOUT, Connection timed out [09:22] Validatorian: at IOWatcher. (net:753:22) [09:22] Validatorian: at node.js:204:9 [09:22] jetienne: Validatorian: there is a "timeout" event [09:22] jetienne: Validatorian: i bet you will catch this exception if you bind the event [09:23] Validatorian: ahh. O [09:23] Validatorian: we [09:23] Validatorian: I'm just watching 'error' [09:23] Validatorian: didn't know about 'timeout' [09:23] Validatorian: thanks [09:25] jetienne: Validatorian: you got a point, error should be notified [09:25] jetienne: Validatorian: in my opinion at least [09:25] Validatorian: doesn't seem to be, if it should be [09:26] jetienne: may be interesting to talk about this on the mailing list to see if it is a bug or a feature [09:27] joshbuddy has joined the channel [09:28] SvenDowideit_ has joined the channel [09:28] sechrist has joined the channel [09:33] SvenDowideit_ has joined the channel [09:34] nsm has joined the channel [09:38] SvenDowideit_ has joined the channel [09:39] Validatorian: wanna submit it? :) [09:39] mikeal has joined the channel [09:40] jetienne: your stuff go ahead, dont be shy or anything, the community is nice and responsive [09:40] jetienne: the bug i submitted got fixed overnight [09:41] SvenDowideit has joined the channel [09:43] SvenDowi- has joined the channel [09:44] Validatorian: sent! [09:45] SvenDowideit_ has joined the channel [09:47] pufuwozu has joined the channel [09:51] tbassetto has joined the channel [10:09] sechrist: this is so weird [11:05] rnewson has joined the channel [11:13] trochala has joined the channel [11:30] Ori_P has joined the channel [11:58] Ori_P has joined the channel [12:26] rnewson has left the channel [12:47] phiggins has joined the channel [12:48] mw has joined the channel [12:50] davidsklar has joined the channel [12:51] markwubben has joined the channel [13:06] jetienne has joined the channel [13:08] jetienne has joined the channel [13:10] pjb3 has joined the channel [13:10] Tim_Smart has joined the channel [13:11] gf3 has joined the channel [13:12] Tim_Smart1 has joined the channel [13:13] micheil: wtf? It's so quiet in here! [13:14] blowery: TROLOLOLOLOLOLOLOLOLO [13:14] mape: I think it has to do with the major power outage in europe [13:14] micheil: major power outage? [13:14] mape: Yeah [13:16] micheil: mape: hmm.. I can't find any info on this, any links? [13:17] mape: micheil: Oh sorry, I was just lying. Trying to strike an conversation [13:17] mape: Guess you rather google then talk though :P [13:17] micheil: oh, right. >_< [13:18] micheil: *sigh* Can't be doing any node dev tonight cos' I've gotta work on a fairly major assessment task for school :( [13:18] mape: school :/ [13:18] micheil: yeah, my feelings excatly. [13:19] Tim_Smart has joined the channel [13:19] micheil: it's sorta you're there because you've got nothing else to do (read: fulltime paid employment) and that you need it to get into university if you're under 25yrs [13:20] mape: hard getting a job even though you are good at what you do? [13:21] micheil: well, it's more or less I live in a town of 6000, which is a country farming town, so the best I can get is just contractor based work, nothing fulltime. [13:21] mape: oh k [13:21] dbrans has joined the channel [13:21] mape: pain to move? [13:21] micheil: 'sides, having jeresig as a referee gets you places. [13:21] Ori_P_ has joined the channel [13:21] micheil: yeah, I don't have the money to move, being still in school & such. [13:21] mape: ah k [13:22] kodisha has joined the channel [13:22] micheil: kinda sucks, but I've only got 6 months left here. [13:22] mape: what is different now from 6months ahead? [13:23] micheil: well, 6 months ahead, and I can probably get more easily a job with some firm in Sydney or overseas. [13:23] micheil: because I'll be of "legal age" [13:23] mape: oh yeah you are in australia [13:23] micheil: ya [13:23] jos3000 has joined the channel [13:23] Tim_Smart1 has joined the channel [13:24] mape: how is the js/web community in australia? [13:25] micheil: it's fairly strong in sydney, and there's a group organising Sydjs [13:25] micheil: but, as soon as you get away from the cities, the tech industry is non-existent [13:25] mape: hmm k [13:26] micheil: I've had people tell me that they thought that the websites wrote them selves & programs made themselves.. they didn't realise that there was actually people doing the job [13:26] mape: :D [13:26] Tim_Smart has joined the channel [13:27] micheil: yeah, "Watch out! The machines will build themselves and take over the WHOLE CITY!!?!, Run for your lives!" [13:27] micheil: :D [13:27] felixge has joined the channel [13:27] felixge has joined the channel [13:28] jetienne: ok extjs people are doing the gpl or pay for their new stuff [13:28] felixge: micheil: PARTEEYEYEYEYYYYYY [13:28] micheil: felixge: HORAAY! [13:28] felixge: micheil: screw work, let's procrastinate :) [13:29] felixge: micheil: how is it going? [13:29] micheil: felixge: it's assessment work :( [13:29] micheil: so, not too good. [13:29] felixge: micheil: assessment work? [13:29] micheil: gotta finish some essay thing on Urban Dynamics of a rural country town by 3pm tommorrow. [13:29] micheil: school [13:29] JAAulde has joined the channel [13:30] micheil: really want to start trying to figure out the annoying bug in the websocket-server manager code.. which causes the app to crash.. [13:31] felixge: micheil: I'll trade you [13:31] felixge: micheil: internationalizing an iphone app right now [13:31] micheil: also wanting to try and port Object Browser to the web platform [13:31] micheil: ooo, fun :D [13:31] felixge: makes me wonder how apple gets away with this shit [13:31] mape: felixge: great products? [13:31] micheil: I haven't done much iPhone work before.. but I know objective-c ain't nice. [13:32] felixge: mape: ? [13:32] micheil: felixge: there's a reason Uxebu use phonegap + html / css / js for their apps. [13:32] mape: felixge: getting away? great products? [13:32] felixge: mape: geting away from what? I don't follow : ) [13:33] mape: 15:31:37 < felixge> makes me wonder how apple gets away with this shit [13:33] felixge: micheil: well, I'm worried that putting an abstraction layer in between you and their SDK isn't really solving any problems : ) [13:33] felixge: (if you just care about iPhone) [13:33] felixge: mape: oh [13:33] felixge: mape: well, I don't care. You have to pay money to develop on their plattform (!) [13:33] felixge: I want flying spaghetti monsters doing my translations [13:33] mape: Hehe [13:34] micheil: felixge: well, I think it'd be easier to internationalise a dojo+html app, then it would an objective-c one [13:34] felixge: micheil: well, I got it all figured out now. But basically it boils down to not using their interface builder and running some crazy dude's python script because they are unable to merge translation files [13:34] felixge: oh, and their translation files are utf-16 - no git diff :) [13:34] micheil: ugh' [13:34] micheil: hmm.. [13:35] felixge: micheil: so about that project I was gonna trade with you! ... [13:35] felixge: :) [13:35] micheil: felixge: a quick search says vimdiff [13:35] micheil: http://stackoverflow.com/questions/777949/can-i-make-git-recognize-a-utf-16-file-as-text [13:35] Ori_P has joined the channel [13:36] felixge: micheil: I found this: http://www.kaleidoscopeapp.com/ to be nicer :) [13:36] micheil: ah, yeah [13:36] micheil: it's good [13:36] felixge: I wasn't sure if I was gonna buy it yet, but it worked right out of the box [13:36] felixge: so I think I'm sold [13:36] felixge: :) [13:37] micheil: really new too. [13:38] micheil: heh, the way I write my essays? markdown + staticmatic (until I write a node.js tool to do the converting) [13:39] Tim_Smart: apple claims they are beating chromes javascript speed huh [13:39] mape: Tim_Smart: That is a good thing [13:39] mape: Just pushes Chrome even further [13:39] Tim_Smart: Yeah, but I wonder how much weight their claims carry [13:39] mape: Except IE, they just plain lie in a funny way [13:40] Tim_Smart: They probably made the benchmarks especially for this test case [13:40] mape: Most likely [13:40] Tim_Smart: Anyway 'night folks [13:41] micheil: felixge: like how I roll? http://github.com/miksago/Journal--Education [13:43] ditesh|cassini has joined the channel [13:44] pgriess has joined the channel [13:45] Ori_P has joined the channel [13:46] sanderjd has joined the channel [13:47] Tim_Smart: mape: heh http://arstechnica.com/apple/news/2010/06/safari-5-tested-chrome-opera-still-have-javascript-edge.ars [13:47] JimBastard: pdf.js seems to be getting some attention [13:47] JimBastard: worst project ever [13:47] JimBastard: http://maraksquires.com/pdf.js/ [13:47] JimBastard: http://github.com/marak/pdf.js [13:47] mape: Tim_Smart: Yeah, I don't really care if any of those say they are the fastest [13:47] mape: As long as IE doesn't I'm happy [13:48] Tim_Smart: IE9 won a test at the bottom [13:48] mape: Of being shitty? [13:48] sechrist: ie 9 is not shitty actually [13:48] mape: sechrist: Canvas works nice? [13:48] Tim_Smart: and is faster than firefox at the v benchmark [13:48] Tim_Smart: *v8 [13:48] gwoo has joined the channel [13:48] sechrist: it's a wip -- but it aims to be really good [13:48] mape: How about websockets? [13:49] sechrist: seems like it'll have ws by beta [13:49] sechrist: i read that somewhere [13:49] mape: Yeah, considering the fact it takes years to transfer users from versions on IE I don't really care it aims to be good right now [13:49] sechrist: it's like alpha alpha [13:49] Tim_Smart: Are they getting rid of all their attachEvent etc crap? [13:49] sechrist: that I do not know [13:50] sechrist: does anybody in here follow a shitload of people on twitter? [13:50] Tim_Smart: about time: http://blogs.msdn.com/b/ie/archive/2010/03/26/dom-level-3-events-support-in-ie9.aspx [13:51] sechrist: I mean if IE is supposed to be the bottom bar of browsers [13:51] sechrist: and it becomes that good [13:51] sechrist: that means everybody should be able to use websockets and canvas by 2020! [13:52] Tim_Smart: Until then, we shall use hacky workarounds [13:53] sechrist: luckily most of the internet has flash [13:53] sechrist: and iOS4 is getting websockets in mobilesafari [13:53] sechrist: so that's good [13:53] micheil: wooo [13:53] derbumi has joined the channel [13:53] margle has joined the channel [13:53] sechrist: yeah ws has been in ios4 since the early developer releases [13:53] sechrist: it runs on my iphone now [13:53] micheil: actually, didn't IE8 or 9 support websockets? [13:54] sechrist: ie 8 definitely doesn't [13:54] sechrist: there's no official word on ie 9 [13:54] sechrist: I figure they'll do it [13:54] sechrist: canvas is a hell of a lot harder to implement than websockets [13:55] sechrist: though I don't understand why MS just hasn't bought opera or something -- I guess it's cheaper to develop it in house? :\ [13:55] sechrist: opera's a nice product [13:55] chrischris has joined the channel [13:55] sechrist: it's that crappy backwards compatibility [13:56] sechrist: woah opera has like $78 million in revenue? [13:57] micheil: sechrist: yeah, even with all the new sec stuff in websockets, it's still easier to implement then canvas [13:58] sechrist: sec stuff? [13:58] micheil: yeah [13:58] sechrist: I thought it was just a same domain policy [13:58] sechrist: and it relied on ssl [13:58] micheil: sec-websocket-key1, key2, etc. [13:58] micheil: nup [13:58] sechrist: oh wtf [13:58] micheil: check out draft76 [13:58] micheil: implements challenge based handshaking [13:59] sechrist: it's hard to implement something that's always changing [13:59] sechrist: look at node frameworks! [13:59] micheil: websockets has only had that one major change, but it wasn't too hard to upgrade [14:00] sechrist: i'm using learnboost's socketio for now [14:00] sechrist: wonder if that's implemented [14:00] micheil: ACTION doesn't like sockets.io [14:00] sechrist: what's wrong with it? [14:00] sechrist: I found it rather nice [14:01] micheil: I dunno, it seems to do too much [14:01] sechrist: the fallbacks are it's selling point [14:01] zaach has joined the channel [14:01] sechrist: there's standalone ws servers for node but those are just that [14:01] micheil: well, I'd rather see one WS implementation, and then other's that layer on top of that. [14:01] sechrist: if I have a production app that uses websockets -- I need fallbacks :\ [14:04] wink_ has joined the channel [14:04] wink_: anyone around that is familiar with orlandov's node-mongodb extension? i cant seem to get the find method to find any documents in my db [14:04] JimBastard: orlandov maybe [14:05] micheil: wink_: make debug iirc. [14:05] micheil: erm [14:05] micheil: make test rather [14:05] micheil: check if the code still works. [14:05] wink_: does it make any difference that inserts work a-ok? :p [14:06] dahankzter has left the channel [14:09] Yuffster has joined the channel [14:10] Tim_Smart: Right, this I'm really off. 'night [14:10] mtodd has joined the channel [14:12] wilmoore has joined the channel [14:13] hellp has joined the channel [14:16] wink_ has left the channel [14:17] ceej_ has joined the channel [14:17] kodisha has joined the channel [14:19] ncb000gt has joined the channel [14:21] jherdman has joined the channel [14:22] jbrantly has joined the channel [14:29] Ori_P has joined the channel [14:35] nefD has joined the channel [14:39] ryan_gahl has joined the channel [14:39] jbrantly1 has joined the channel [14:40] jakehow has joined the channel [14:44] chadj has joined the channel [14:45] bradleymeck has joined the channel [14:45] Ori_P has joined the channel [14:47] aiskander has joined the channel [14:47] mitkok has joined the channel [14:47] voodootikigod has joined the channel [14:48] chadj: So, I'm trying to write a simple podcast grabber in Node and I think I am running into a bug in the http client. I have encapsulated the code down to this: http://gist.github.com/442211. [14:48] chadj: Am I doing something obvious wrong? [14:50] mw2 has joined the channel [14:50] mape: chadj: Perhaps the dot in the end of the url? ;) [14:50] Ori_P has joined the channel [14:51] mape: could do var port = rss_url.port ? rss_url.port : 80; as var port = rss_url.port || 80; [14:51] mape: same with pathname [14:52] chadj: mape: Which one has a dot at the end? [14:52] mape: bad joke, talking about " I have encapsulated the code down to this: http://gist.github.com/442211." [14:52] jedschmidt has joined the channel [14:52] chadj: Lol, gotcha [14:53] mape: hmm addListener('response', function (response) { [14:53] jos3000: curl http://noagenda.podshow.com/feed -O [14:53] jos3000: % Total % Received % Xferd Average Speed Time Time Time Current [14:53] jos3000: Dload Upload Total Spent Left Speed [14:53] jos3000: 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Warning: Failed to create the file feed [14:53] jos3000: 0 1146k 0 885 0 0 2586 0 0:07:34 --:--:-- 0:07:34 5267 [14:53] jos3000: curl: (23) Failed writing body (0 != 885) [14:54] jos3000: There's something wrong with that feed [14:54] mape: jos3000: great paste [14:54] jos3000: if you drop that one, does it work? [14:54] kevwil has joined the channel [14:55] chadj: jos3000: Still fails [14:55] mape: With what? [14:55] ajpiano has joined the channel [14:55] chadj: Same error [14:55] chadj: It will fail at random points [14:55] chadj: It might throw that error after only receiving the response for 4 urls [14:56] mape: same error what? [14:57] chadj: Error: http://gist.github.com/442238 [14:57] mape: chadj: looked at something like request? [14:58] chadj: mape: Are you suggesting I look at the code http request? [14:59] mape: I suggest you use something that might fix your issue [14:59] chadj: Is "request" a module then? [15:00] mape: yes [15:00] chadj: Ahh [15:00] chadj: That makes sense then [15:00] jos3000: Same problem when I run it [15:02] chadj: mape: Have a link handy for request? [15:02] mape: it is on the module page [15:03] chadj: Ahh, just found it [15:03] chadj: I'll give that a shot [15:04] creationix has joined the channel [15:04] ncb000gt: mape: nice work with npm.mape.me :) looks nice and simple for people [15:06] mscdex: mape: were you aware that the npm package description being cut off bug still exists? [15:08] joshbuddy has joined the channel [15:08] mscdex: i wasn't sure if that had been fixed yet [15:10] mape: ncb000gt: thanks :) [15:11] mape: mscdex: well, yeah, I need to look at that, now beer and sunshine though [15:11] mape: Will fix issues though :) [15:11] stevendavie has joined the channel [15:13] chadj: mape: request did the trick [15:14] chadj: mape: no issues with list of urls at all [15:14] jos3000 has left the channel [15:14] jos3000 has joined the channel [15:18] Ori_P has joined the channel [15:19] mindeavor has joined the channel [15:20] dabreaka has joined the channel [15:21] JimBastard has joined the channel [15:21] bradleymeck: http://web.archive.org/web/20040203041440/http://devedge.netscape.com/library/manuals/2002/plugin/1.0/ <-- could be interesting to support if anyone has time lol [15:23] mscdex: support what exactly? [15:23] JimBastard: LOL pdf.js is #60 on reddit [15:23] JimBastard: people are stupid [15:23] cloudhead has joined the channel [15:23] mscdex: what? it should be higher? :P [15:24] JimBastard: who in their right mind would want to create a PDF in the browser [15:24] JimBastard: cloudhead: im #60 on reddit lol [15:24] JimBastard: i cant wait till i release a real library [15:24] JimBastard: shit will be over [15:24] mscdex: javascript-fu! [15:24] JimBastard: i made a commit last night! [15:24] JimBastard: i fixed a bunch of stuff [15:24] mscdex: awsum [15:24] JimBastard: but really data-behaviors and broodmother [15:25] JimBastard: is where its at [15:25] JimBastard: aight time to wokr [15:25] mscdex: aw man [15:25] femto has joined the channel [15:25] mscdex: var broodmother = require('javascript-fu'); [15:25] mscdex: huhu [15:27] sanderjd has joined the channel [15:30] mravaux has joined the channel [15:30] creationix has joined the channel [15:31] kevwil_ has joined the channel [15:33] o_o has joined the channel [15:33] JimBastard: mscdex: why you gotta be a hater [15:33] JimBastard: my ratio of real software to vaporware isnt that bad [15:34] mscdex: i'm saying broodmother requires some javascript-fu [15:34] mscdex: not the project called javascript-fu [15:35] bradleymeck: anywho yea, supporting the NPAPI browser plugin interface would mean i could do server side plugins (flash/java/silverlight/etc) which would be interesting... rather redundant w/ a browser but meh [15:36] JimBastard: lol [15:36] bradleymeck: almost have a node direct jni thing in alpha [15:36] pandark_ has joined the channel [15:37] derekcollison has joined the channel [15:38] derekcollison: Anyone know how to trap EPIPE (Broken Pipe) on net.stream? [15:38] derekcollison: node 0.1.98 and head do same thing.. [15:38] derekcollison: I have try - catch blocks and I look at stream.readyState.. [15:38] bradleymeck: wonder if we can get a ruby vm interface since soo many ppl use both? ... now im just rambling [15:38] wink_ has joined the channel [15:41] wink_: i need some help understanding the node_postgres extension. when i issue a query, it's returning an object full of my rows, if i index into that object like an array im seeing really weird results [15:41] wink_: http://pastebin.com/uzGHeSqf thats my code [15:42] voodootikigod_ has joined the channel [15:42] wink_: occasionally it seems that it will print the id column for that row, and occasionally it prints undefined [15:42] wink_: when i stringify the row, i dont see any column names in the json, ever [15:42] voodootikigod has joined the channel [15:46] bradleymeck: is err ever defined? [15:46] softdrink has joined the channel [15:47] mravaux has joined the channel [15:47] whoahbot has joined the channel [15:48] tjholowaychuk has joined the channel [15:48] mscdex: anyone know why ServerResponse.flush() was removed awhile ago? [15:50] bradleymeck: probably the pause and resume, otherwise its assumed you want to flush? [15:52] mscdex: i dunno, i was pretty sure those two methods had existed before flush() was removed though [15:53] ly- has joined the channel [15:53] mscdex: JimBastard: you have sprintf defined/exported twice in pdf.js? [15:53] JimBastard: do i? [15:54] JimBastard: must be a copy pasta fail [15:54] voodootikigod_ has joined the channel [15:54] JimBastard: let me check one sec mscdex [15:56] JimBastard: mscdex: http://github.com/Marak/pdf.js/commit/b7b3da08b6f20f86ce8893c3e6e175fff81c46cd [15:56] JimBastard: thanks [15:57] mscdex: woot [15:57] voodootikigod has joined the channel [16:00] creationix has joined the channel [16:00] kevwil has joined the channel [16:00] JimBastard: voodootikigod: can i get more shoutouts on twitter? ive been releasing shit nonstop :p [16:01] JimBastard: i havent figure out how to do anything with twitter but post links to github [16:01] JimBastard: that shit is hard [16:01] JimBastard: ^_^ [16:01] mattly has joined the channel [16:02] ajpiano has joined the channel [16:02] mtodd has joined the channel [16:03] jedschmidt has joined the channel [16:04] jxson has joined the channel [16:04] bpot has joined the channel [16:05] deanlandolt_home has joined the channel [16:06] ceej_ has joined the channel [16:08] atmos: JimBastard: just type SEO javascript and social media into a tweet [16:08] atmos: you'll get some experts following you immediately, emulate those guys [16:09] JimBastard: fuck man [16:09] JimBastard: i knew i should have been working on my socialmedia-fu [16:09] creationix1 has joined the channel [16:09] atmos: you might have to make some facebook pages, that you link to from yoru twitter account [16:09] atmos: but have the facebook pages point to your blog [16:09] atmos: or in your case, github pages [16:09] maushu has joined the channel [16:09] JimBastard: its times like this im happy i deleted my facebook and myspace [16:10] atmos: btw you owe me a beer sometime for droppin all this knowledge [16:10] JimBastard: and my blog is uber spartan [16:10] JimBastard: and i refuse to use twitter [16:10] jstewart1: The cost of travel would be way more than the conference itself. [16:10] atmos: do you dislike bands that other people discover because after you because "they used to be good" [16:10] atmos: :) [16:11] atmos: fictorial: around ? [16:11] JimBastard: atmos: i only listen to barbershop quartets [16:11] kriszyp has joined the channel [16:12] JimBastard: or make my own rap songs about videos and reddit [16:12] atmos: JimBastard: good man, glad someone is keepin' that vibe alive [16:12] atmos: got a link to those ?! [16:12] JimBastard: lol you wanna see the reddit rap? [16:12] JimBastard: its terrible [16:12] atmos: yes, if you actually did a reddit rap i'd love to laugh at it ! [16:13] mscdex: pwnt [16:13] JimBastard: you just gotta promise to watch until the end where im dancing in the club with the bitches on the table with my fur coat [16:13] JimBastard: http://www.youtube.com/watch?v=IrkDqh9ZVog [16:13] JimBastard: if you google my handle / name you'll find many many many things [16:13] JimBastard: ACTION circle jerk off [16:14] bradleymeck: is _announcer open source? [16:16] JimBastard: my favorite this month though atmos is http://www.youtube.com/watch?v=8aJB7Le2_kU . i made this rap song about a video game and posted it to some forum. these guys made a youtube video for it lol [16:16] JimBastard: same with the Everquest Rap from 1999, http://www.youtube.com/watch?v=zCvFxf41cbU [16:16] JimBastard: i remember we got that track on somethingaweful, was epic [16:16] JimBastard: (i made all those tracks), none of the videos [16:17] JimBastard: those are the popular ones i guess, there are sooo many more songs [16:17] JimBastard: like jesus [16:17] JimBastard: hundreds [16:17] JimBastard: http://myspace.com/yeoldewreckingshoppe [16:18] JimBastard: i could keep going, gotta work though [16:19] atmos: holy shit [16:19] atmos: that's awesome dude [16:20] JimBastard: i try to keep it real [16:20] JimBastard: thanks [16:23] LowValueTarget has joined the channel [16:24] voodootikigod has joined the channel [16:24] brainproxy: any one thinking of how this could play nicely with node? [16:24] brainproxy: http://sheddingbikes.com/posts/1276761301.html [16:25] brainproxy: i mean beyond simply just sitting in front of a node process [16:28] creationix: brainproxy: what protocol does it speak to the backend? [16:28] creationix: reminds me of the push module for nginx [16:28] mscdex: "Use the latest event systems (poll, epoll, kqueue) but rather than force you to understand async events, it will use a fast context switching coroutine system based on ucontext or assembler." [16:28] mscdex: heh [16:28] brainproxy: zeromq [16:28] brainproxy: which I'd not heard of till reading the front page of the mongrel2 site [16:29] creationix: ohh, supports raw sockets too [16:29] brainproxy: http://www.zeromq.org/ [16:30] creationix: interesting, that's something node should support I think [16:30] creationix: or at least have a module for it somewhere [16:30] creationix: lol [16:30] creationix: • AMQP: 100x faster to do the same work and with no brokers (and 278 pages less spec). [16:30] oberhamsi has joined the channel [16:30] creationix: yeah, it's not hard to be faster than AMQP [16:31] brainproxy: this is what I've been using [16:31] brainproxy: http://faye.jcoglan.com/ [16:31] brainproxy: for message passing [16:32] creationix: yeah, faye is cool [16:32] brainproxy: I've been thinking of rewriting it in Joose [16:32] brainproxy: to I can wield some if its internals more elegantly [16:32] brainproxy: and since I'm using Joose elsewhere [16:32] brainproxy: I think I've started to learn enough to be able to do something like that [16:32] brainproxy: just need to find the time [16:33] creationix: brainproxy: when I get back to CA next week I'll be working on connect full time again, maybe I could integrate it with that [16:33] [[zz]] has joined the channel [16:37] stevendavie has joined the channel [16:37] brainproxy: "that" being mongrel2 [16:37] brainproxy: or the hypothetical faye-rewrite [16:38] creationix: faye or 0mq [16:38] creationix: so it would play nice with mongrel [16:38] creationix: not sure really, just want something better than http or raw tcp socket [16:39] Ori_P has joined the channel [16:39] brainproxy: connect's purpose is to be a middle layer, like rack? [16:39] JimBastard_ has joined the channel [16:40] creationix: brainproxy: yeah, but it also is a collection of middleware libraries [16:40] creationix: and it does some hosting related stuff [16:40] creationix: the "connect" binary, for example can do multi-core node apps [16:41] creationix: and they don't even have to be connect apps, just any instance of HttpServer [16:41] tjholowaychuk: net.Server now [16:41] tjholowaychuk: tcp too [16:41] brainproxy: i need to learn more about it [16:42] brainproxy: I'll read the example stuff to try and get my head around it [16:43] tjholowaychuk: brainproxy: working on the docs right now too [16:44] brainproxy: docs are good :D [16:44] brainproxy: documented examples are really good :) [16:44] tjholowaychuk: better usually, but would be nice to have middleware usage examples for man [16:44] creationix: tjholowaychuk: so, I was talking to isaacs yesterday, and I think we can use streams in middlewares without changing the interface [16:45] creationix: req and res are already streams [16:46] tjholowaychuk: creationix: ya. it would just be nice to get away from our writeHead write() proxy crap as much as possible [16:46] tjholowaychuk: thats the only thing that bugs me [16:46] pandark_: Someone using express with npm ? I'm not sure how to "require" it (need to require express' lib dir too ?) [16:46] tjholowaychuk: pandark_: nope [16:46] brainproxy: kiwi ftw [16:46] tjholowaychuk: just require('express') its all relative now so you dont need to unshift the lib [16:47] tjholowaychuk: im just to lazy to update docs [16:47] creationix: tjholowaychuk: btw, I modified wheat to run on connect [16:47] creationix: it didn't take too much changing [16:47] pandark_: 'k thx tjholowaychuk [16:47] tjholowaychuk: creationix: nice! cant wait to get express on there [16:49] onar has joined the channel [16:58] mattly has joined the channel [16:59] creationix: alright time to get wheat on npm [16:59] mjijackson has joined the channel [16:59] creationix: it's got like 10 depedencies and I'm tired of bundling them in submodules [16:59] mjijackson: Good morning Node! [16:59] creationix: mjijackson: mornin' [16:59] brainproxy: just curious, has npm or kiwi picked up more steam for pkg mgmt [16:59] brainproxy: for node [17:00] tjholowaychuk: brainproxy: I dont actively support kiwi anymore, it is not going anywhere though no worries [17:00] tjholowaychuk: and i will still push stuff to it for quite a while [17:00] brainproxy: gotcha [17:00] brainproxy: well I like it, but I haven't tried npm yet [17:00] mjijackson: Does anyone here know of a js minifier that is written in js? [17:01] mjijackson: oooh. wait. i think packer is written in js... [17:01] JAAulde: this looks super interesting: http://cryp.sr/hostproof.html [17:01] tjholowaychuk: brainproxy: npm is coming around nicely, first few times i tried it the thing just broke but i am having success now :) [17:02] JAAulde: combining those concepts with a Node powered storage server would be neat [17:02] creationix: bleh, npm still doesn't play nice with nvm [17:02] creationix: where is isaacs today? [17:02] ryah: npm is definitely looking good [17:03] brainproxy: tjholowaychuk: well if kiwi is becoming stale (albeit what you said is true about keepint it alive) [17:03] brainproxy: I think I'll lookt to switch [17:03] ryah: isaacs has non-node work :( [17:03] creationix: ryah: ok, so no week-long internet-less cruise or anything [17:03] mscdex: ryah: what was the reason OutgoingMessage.prototype.flush() was removed in http? [17:03] tjholowaychuk: creationix: really? works fine with nvm for me at least [17:03] tjholowaychuk: or my fork of nvm [17:03] ryah: mscdex: i just replied on the list, but basically it doesn't do anything [17:03] creationix: tjholowaychuk: yeah, your nvm works very different I seem to remember [17:04] mscdex: oh [17:04] mscdex: *checks* [17:04] jakehow has joined the channel [17:04] creationix: npm only uses the system lib path if you're root user [17:04] ryah: mscdex: it was also undocumented (private) API [17:04] creationix: but in nvm you want to use the system lib path since it's in your home directory [17:04] creationix: but npm uses the global .node_libraries [17:05] creationix: wasn't sys.p undocumented too? [17:05] mscdex: ryah: thanks for the input [17:05] brainproxy: creationix: ah thanks for the heads up on your branch of nvm not necessarily playing nicely with npm [17:06] isaacs has joined the channel [17:06] brainproxy: whoah, his ears must have been burning [17:06] creationix: brainproxy: I mean it works fine, it just installs stuff in the global (per user) folder instead of the per node versio n dir [17:06] ryah: creationix: can you explain that again with the system lib path? i don't get it [17:07] creationix: so npm checks the user id [17:07] creationix: if you're root, it puts stuff in $PREFIX/lib/node [17:07] creationix: and if not it puts it on $HOME/.node_libraries [17:07] creationix: but with nvm $PREFIX is in your home directory [17:07] creationix: and doesn't require root to use [17:08] creationix: I would rather it always try $PREFIX/lib/node first and only fallback to $HOME/.node_libraries if the first isn't writable [17:08] isaacs: all of npm's config default logic is here: http://github.com/isaacs/npm/blob/master/lib/utils/default-config.js [17:08] isaacs: creationix: the reasoning for that is that if yo'uer running as you, then it should just install for you, not for all users on the machine [17:09] isaacs: or at least, not for all users of that node instance [17:09] creationix: isaacs: of course, the .node_libraries isn't used by nvm [17:09] creationix: it's global for the user, across all version of node [17:09] isaacs: particularly: http://github.com/isaacs/npm/blob/master/lib/utils/default-config.js#L17-21 [17:09] isaacs: creationix: true. nvm (and nave, also) lead to a weird situation where you have multiple nodes per user, rather than multiple users per one global node [17:10] creationix: I just think checking if the $PREFIX path it writable is better than checking the user id [17:11] creationix: some people might have write access to the system global path and not run as root too [17:11] isaacs: creationix: but in my case, i WANT it in my home dir, but my $PREFIX is writable. [17:11] isaacs: i own /usr/local [17:11] micheil: same. [17:12] isaacs: creationix: you can always do npm config set root /whatever/you/want [17:12] isaacs: but the issue there is that you probably want it to change on each different node, when you switch nodes in nvm [17:12] isaacs: or nave [17:13] isaacs: what if it supported something templatey, so you could set it to "{PREFIX}/lib/node" [17:14] creationix has joined the channel [17:14] creationix: tether fail [17:14] isaacs: oh, cool, so you got that set up? [17:14] creationix: I think my usb cable is faulty, it disconnects randomly [17:14] isaacs: ah, that's lame [17:15] creationix: isaacs: yep, it's awesome [17:15] creationix: I have a real keyboard! [17:15] isaacs: there's a way to do it via bluetooth, too, but that drains battery SUPER fast. [17:15] isaacs: with the usb, it charges about as fast as the added network drains it [17:15] creationix: also my phone only has edge, no 3g [17:15] creationix: so it's pretty slow [17:15] isaacs: ew. nexus1? [17:15] isaacs: creationix: anyway, all you missed was: isaacs: what if it supported something templatey, so you could set it to "{PREFIX}/lib/node" [17:17] kriskowal has joined the channel [17:17] creationix has joined the channel [17:17] creationix: hmm, maybe it's bandwidth related, it crashes when I visit a heavy page [17:17] creationix: better stick to irc and git for now [17:17] skampler has joined the channel [17:18] isaacs: ah, yeah [17:18] isaacs: edge is not so good for anything non-textual. sometimes i tether in a coffeeshop just to prevent myself from getting distracted by web browsing and videos and other mental candy [17:18] stephenjudkins has joined the channel [17:19] creationix: isaacs: what about an environment variable NPM_LIB [17:19] isaacs: hrm... [17:19] creationix: that's really easy for both nvm and npm [17:19] isaacs: yeah, and nave could handle that, too. [17:19] isaacs: i'd rather have an env var that points to the .npmrc to use [17:19] creationix: sure, for more options down the road [17:20] creationix: I'll just have to generate a file per envroment [17:20] isaacs: right... or maybe not even, since npm will generate it if it's not there. [17:20] creationix: also I don't like the crazy symlinking and multiple version support [17:20] creationix: that may be harder to make an option though [17:21] creationix: the goal is to eventually have arbitrary named environments in nvm [17:21] isaacs: well, re symlinking, there's really no other way to provide a consistent interface even in the face of radically crazy different ways to install crap. [17:21] isaacs: it is all contained in the root folder, though [17:21] isaacs: well, and also the binroot, which is kinda lame. [17:22] isaacs: re multiple versions simultaneously installed, that's a good thing. [17:22] creationix: it's good only if you need it [17:22] creationix: it's unneded complexity otherwise [17:22] creationix: with multiple environments, you don't need it [17:22] isaacs: you might still need it in multiple environments. [17:23] creationix: no because a single program can never use two versions of a library at the same time [17:23] creationix: and you can create an environment per app [17:23] creationix: I'm thinking this will need tighter integration and more thinking to do right the way I want [17:24] isaacs: if you have express depending on haml-0.1.2 and fab depending on haml-0.2.3, and you have a site using both, then you're boned. [17:24] creationix: maybe I'll just have my own client that uses the npm repo [17:24] creationix: isaacs: interesting [17:24] isaacs: creationix: i'd rather you use npm, and help with it. ideas are always welcome [17:25] creationix: so how, in npm, do you require two versions as once [17:25] creationix: is there an extra verbose require statement or something [17:25] isaacs: well, in the above situation, fab would get haml 0.1.2 when it does require("haml"). express would get 0.1.2 when it does require("haml") [17:26] isaacs: and once node's module loader is properly caching based on filename rather than id, that will actually work :) [17:26] isaacs: if your module wants to include both, you can do require("haml-0.1.2") and require("haml-0.2.3") [17:26] creationix: oh right, because npm changes the require path on the fly [17:26] creationix: I remember now [17:26] isaacs: well, provided that you always go through the main module, yeah [17:26] isaacs: if you do require("express/foo") then it's up to express to manage that stuff. but that's less common. [17:27] creationix: sounds like it could get messy [17:27] tjholowaychuk: express just has them bundled right now [17:27] isaacs: in that case, the package would want to use the "link" thing to bring its version of whatever budled in [17:27] isaacs: *bundled [17:27] tjholowaychuk: or are you just discussing npm future? [17:27] micheil: hmm.. how to kill 24minutes.. [17:28] isaacs: so, the whole idea of npm is to cut the "dependency hell" knot in half. [17:28] kriszyp has joined the channel [17:29] isaacs: the securable module architecture makes this possible. [17:30] rictic has joined the channel [17:30] jxson has joined the channel [17:31] creationix: I'll have to think for a while about what I really want for nvm, then I'll come back [17:33] ryah: it'd be nice if you could do NODE_VERSION=0.1.96 [17:33] ryah: and then type "node" and have it work [17:33] creationix: ryah: so integrate nvm like functionality into a node binary [17:33] ryah: i think this could be acheived if nvm had its own "node" script which proxied execution to the real node [17:34] creationix: that could be done, I've seen debian package stuff like that [17:34] tjholowaychuk: was just going to say that [17:34] ryah: then it wouldn't rely on people installing some bash functins [17:34] creationix: would you want this packaged with node, or still third party [17:34] ryah: also multiple shells could be using differnt versions [17:34] isaacs: ryah: nave is not too different from that. you do "nave use 0.1.96" and then "node" and it works [17:35] isaacs: ryah: and doesn't require any bash functions [17:35] isaacs: ryah: but it does use subshells [17:35] ryah: nave? [17:35] creationix: subshells are messy though, unneeded processes [17:35] isaacs: ryah: yeah [17:35] creationix: isaacs: that's yours right [17:35] isaacs: yeah [17:35] isaacs: ryah: http://github.com/isaacs/nave [17:35] ryah: http://github.com/isaacs/nave [17:35] ryah: okay [17:37] ryah: creationix: i don't want to put that the node distro, no [17:37] isaacs: creationix: i've been using nave for a while. the subshell aspect is not bad. [17:37] ryah: creationix: but i want you and tjholowaychuk and isaacs to do something like that :) [17:37] isaacs: in fact, it's kind of nice. [17:37] ryah: creationix: i liked your idea of having it all in one folder [17:38] creationix: ok, we'll collaborate then [17:38] steadicat has joined the channel [17:38] ryah: like "unzip this and add node_folder/bin to your PATH" [17:39] creationix: if only $PREFIX could be relative and not absolute [17:39] creationix: then it would be perfect [17:39] isaacs: ryah: what about something like "curl http://blerg | bash" [17:39] ryah: creationix: like what? [17:39] ryah: isaacs: yeah that too :) [17:39] mikeal has joined the channel [17:40] ryah: curl http://nodejs.org/easy_distro_install.sh | sh [17:40] ryah: node -v [17:40] ryah: done [17:40] creationix: well, if we want to distribute pre-built binaries, then we need to find a way for $PREFIX to not be hard-coded to /use/local [17:40] creationix: but as long as we're compiling on the fly we can set it to whatever we want [17:40] ryah: creationix: you can ./configure --prefix=blah ? [17:41] creationix: but I can tell from experience, downloading xcode, homebrew, git, and node is a lot of work on a new machine [17:41] ryah: oh i see what you mean [17:41] ryah: so you can move the folder around [17:41] micheil: ryah: totally off topic, but mongrel2? [17:41] creationix: yeah, my nvm overrides the PREFIX in a configure flag [17:41] isaacs: nave does that, too [17:41] ryah: micheil: ? [17:41] micheil: ryah: http://mongrel2.org [17:41] micheil: any thoughts? [17:42] ryah: micheil: http proxy [17:42] tjholowaychuk: creationix: yeah man, such a PITA, my ffriend here has nothing so i was like shit go wait a few hours to download / install xcode n crap [17:42] micheil: okay [17:43] ryah: no reason to write a new one, nginx is very good [17:43] isaacs: nginx is not a good proxy [17:43] isaacs: ryah: i strongly disagree with that statement. [17:44] ryah: adding web socket proxying to nginx is less difficult than writing a new one [17:44] isaacs: having used nginx as a proxy for the npm registry, i can say with confidence that it is total shit as a proxy. [17:44] ryah: haproxy is also fine [17:44] ryah: isaacs: why? [17:44] isaacs: ryah: it's an http1osaurus [17:45] ryah: that's true [17:45] isaacs: ryah: no streaming to/from backend servers, which means that it's ass for file uploads. [17:45] isaacs: or large downloads, for that matter. [17:45] ryah: isaacs: well, i htink just having nginx write it to disk is fine [17:45] ryah: oh, but you're using couch [17:45] isaacs: it has inexplicable strange timeouts and whatnot [17:45] ryah: i can see your problem [17:46] isaacs: the only reason i'm using it is for the ssl capabilities that couch lacks, and that makes it even more flaky as a proxy [17:46] cloudhead has joined the channel [17:46] ryah: does erlang not have ssl? [17:46] isaacs: like, a 5MB file will fail, but you rename the files inside the tarball so it's 5.1MB and it works. [17:46] linuxsable has joined the channel [17:46] isaacs: ryah: i don't know, but couch is planning on adding it soonish, i believe [17:46] mikeal: mochiweb recently got ssl support [17:47] mikeal: so it's available somewhere in erlang [17:47] ryah: which reminds me . i want to get node's ssl support better [17:47] mikeal: yeah, as soon as it ships in mochiweb it'll be in couch [17:47] isaacs: ryah: yeah, do that. i plan to have npm being its own registry by the end of hte summer. [17:47] isaacs: ryah: and if summer's not long enough, i'll move furhter south to finish it. [17:47] isaacs: :) [17:49] bradleymeck has joined the channel [17:49] felixge has joined the channel [17:49] felixge has joined the channel [17:50] ryah: isaacs: :) [17:50] mtodd has joined the channel [17:52] matzie has joined the channel [17:53] matzie: hi - slightly off topic - anyone here played with JSLINQ? I don't get how to use the Distinct operator... [17:54] cadorn has joined the channel [17:59] micheil: ryah: hmm.. I'm not sure if it's something node related, but I have seen a lot of people having odd stuff come up when running under ubuntu as an os with node [18:00] felixge: micheil: like what? [18:00] felixge: micheil: I've been using node on ubuntu ever since and never had ubuntu specific issiues [18:00] micheil: I've seen various issues come up, like odd disconnects, mismatches with upgradeHeads, etcc. [18:01] mape: I'm using node on debian which is pretty much ubuntu? [18:01] micheil: also, akamai download's a bastard. it paused on me because I removed focus >_> [18:01] mape: Never had any issues that weren't my fault [18:01] JimBastard has joined the channel [18:01] micheil: heh.. I've still gotta work out the best way to sort out my connection manager issues [18:02] micheil: I've got a race-type condition, but I can't figure out a good way to fix / prevent it [18:02] JimBastard: micheil: dont be racist [18:02] micheil: yeah, uh. funny. [18:03] femto: lol [18:03] JimBastard: http://www.reddit.com/r/programming/comments/cfw5i/pdfjs_create_basic_pdf_files_in_the_browser_and/ cheaaaa [18:04] JimBastard: so funny [18:05] matzie: for the benefit of the logs - what works for me now is: .Distinct(function(item) { return item;}) which feels superluous but works. [18:06] JimBastard: lol is that linq? [18:06] JimBastard: matzie: ? [18:06] richcollins has joined the channel [18:08] mape: lints? [18:10] qFox has joined the channel [18:10] bradleymeck: ooo jim your demo blew up firefox [18:10] linuxsable has joined the channel [18:10] bradleymeck: on mac os x [18:10] tjholowaychuk: creationix: we probably should not default static to CWD lol I see some issues there [18:10] tjholowaychuk: if anything require that root be set [18:11] JimBastard: tjholowaychuk: i released that pdf shit [18:11] tjholowaychuk: JimBastard: saw that! [18:11] tjholowaychuk: cool shit man [18:11] JimBastard: now go build me a HTML => postscript convertor [18:11] JimBastard: you know how to write javascript rite [18:12] tjholowaychuk: me?? [18:12] JimBastard: lol [18:12] tjholowaychuk: so lost lol [18:13] bradleymeck: uggg npapi is gonna take me to end of the month in spare time [18:13] JimBastard: have you tried finding jesus? [18:13] bradleymeck: if you get that you could embed the adobe reader in nodejs? [18:13] mape: tjholowaychuk: So what are the plans to expand the middleware core? add more stuff? or foster a community part? [18:14] micheil: shit. my websocket server's so fast at reconnecting clients I can't reproduce a bug any more.. [18:14] tjholowaychuk: mape: reasonable / expected stuff I would like bundled, but we do need a contrib repo going [18:15] morganallen has joined the channel [18:15] tjholowaychuk: i was thinking just have the contrib repo use submodules to your own projects so that they can just clone our connect-contrib [18:15] tjholowaychuk: and update the submodules [18:15] mape: like npm but connect/middleware ? [18:15] tjholowaychuk: for quick access to tons [18:16] SteveDekorte has joined the channel [18:17] romainhuet has joined the channel [18:17] JimBastard has joined the channel [18:17] ceej: tjholowaychuk: hey....do you know if the image streaming from express on heroku ever got sorted? [18:18] tjholowaychuk: ceej: cant remember :s sorry man [18:18] stephenlb has joined the channel [18:18] micheil: woah. [18:18] micheil: just crashed two independent node servers at once. [18:18] isaacs has joined the channel [18:18] JimBastard: does anyone mess with http://projects.zoulcreations.com/jquery/growl/ [18:20] sanderjd has left the channel [18:21] micheil: if it's the one we had from jquery ui, it may be good [18:21] bradleymeck: jim we have a custom one at work w/ raw dom [18:21] micheil: but I don't think it is. [18:22] ceej: tjholowaychuk: np, i guess express has been put on the back burner until connect is there. I guess I'll start having to look at connect :) [18:22] JimBastard: http://www.erichynds.com/examples/jquery-notify/ looks better [18:22] JimBastard: raw dom is for sadist [18:22] JimBastard: i love myself too much to not use jquery [18:22] phiggins: ACTION sighs [18:22] bradleymeck: oh and tjholowaychuk any chance routes can not end in /? [18:23] derferman has joined the channel [18:23] bradleymeck: raw dom is for simple things [18:23] ezmobius has joined the channel [18:23] tjholowaychuk: bradleymeck: not sure what you mean [18:23] mape: JimBastard: it doesn't stack sideways :S [18:23] JimBastard: is it suppose to? [18:23] ceej: tjholowaychuk: is there session support in connect yet? or just cookie [18:23] bradleymeck: just pulled down connect to work on Layer.route and noticed you had made it so that it will always end in a / [18:24] bradleymeck: ceej use node-cookiejar until tj's is out [18:24] mape: JimBastard: I would assume it does if it mimics growl [18:24] tjholowaychuk: ceej: session is coming, more or less done i think, just solidifying apis and securing things but it is a WIP that I will merge today [18:25] tjholowaychuk: bradleymeck: we normalize for several reasons, but "foo" and "foo/" should be treated equally I think, forget [18:26] ceej: tjholowaychuk: nice :) So connect pretty much has all the components of express right? [18:26] sanderjd has joined the channel [18:26] tjholowaychuk: ceej: getting there, minus a few (views etc) but they are coming :D [18:27] ceej: There's a few nice example of doing views here that I'm going to use until official support comes out http://github.com/extjs/Connect/tree/master/examples/sousaball/ [18:27] kuya: hello, is there a way to print a stack trace? [18:28] ceej: thanks to Tim :) [18:28] JimBastard: i got you mape , well if you got a better one let me know mang [18:29] tjholowaychuk: ceej: pretty easy to roll your own, not so easy to create something everyone will accept / like [18:29] tjholowaychuk: im working on a haml killer though BTW :D [18:29] mape: JimBastard: Yeah, same, if you find a better one let me know [18:29] tjholowaychuk: well not right now but as a side project [18:29] jbrantly has joined the channel [18:29] ceej: tjholowaychuk: nice :) I like simple ejs the best [18:29] tjholowaychuk: i hate ejs :D haha to each their own, the simplicity is nice and appretiated [18:30] aconran has joined the channel [18:30] jbrantly has left the channel [18:30] jbrantly has joined the channel [18:30] ceej: ejs is good for us as we're forced to use php at the moment so it's just <% instead of jup thing again), that has got to have a reference to the context of the render's output i would think [19:11] micheil: ryah: mexico winning? [19:11] JimBastard: sup? [19:11] JimBastard: bradleymeck: you wanna hit me on skype chat? [19:11] micheil: I heard my younger brother getup to watch it earlier [19:11] bradleymeck: sure [19:12] JimBastard: im very interested in getting HTML => JUP [19:12] ryan_gahl has joined the channel [19:21] chrischris has joined the channel [19:22] tilgovi has joined the channel [19:22] mravaux has joined the channel [19:23] fizx has joined the channel [19:26] technoweenie has joined the channel [19:28] jbrantly has joined the channel [19:28] maushu has joined the channel [19:34] saikat has joined the channel [19:35] Judofyr has joined the channel [19:36] kixxauth has joined the channel [19:36] tmpvar has joined the channel [19:37] tmpvar: yo [19:40] JimBastard: SUP BIOTCH [19:41] tmpvar: what up [19:43] JimBastard: working [19:43] JimBastard: tmpvar: im trying to do this
[19:43] JimBastard: you understand what that does? lol [19:44] kevwil has joined the channel [19:44] JimBastard: FF hates it though, too much recursion [19:44] DRMacIver has joined the channel [19:44] DRMacIver has joined the channel [19:44] JimBastard: error occurred trying to render behavior: list.nested Maximum call stack size exceeded [19:44] tmpvar: JimBastard, looks like you need to add some checks in there ;) [19:44] JimBastard: or too much recursion in FF [19:44] JimBastard: is document infinite recursive? [19:44] JimBastard: can i not jump through it like that? [19:44] tmpvar: does it keep on re-evaluating the that div? [19:45] JimBastard: i dont think so.... [19:45] JimBastard: it should just pull it as text [19:45] JimBastard: ill try a smaller selector [19:45] tmpvar: yeah, im not sure I understand.. but it looks like you are recursing endlessly [19:46] JimBastard: yeah, i think its document [19:46] tmpvar: bradleymeck, you around? [19:46] bradleymeck: mmm? [19:46] tmpvar: how goes man, got your mail earlier [19:47] bradleymeck: yea apparently sent to wrong person lol [19:47] tmpvar: haha, np [19:47] bradleymeck: that was a couple weeks ago too [19:47] tmpvar: im not sold on requiring an addon to get jsdom to work [19:47] mattly has joined the channel [19:47] tmpvar: as an optional component, sure [19:47] tmpvar: but how to make the distinction is the question [19:48] bradleymeck: it would be optional, it implements node.queryselector...() almost 1-1 for now [19:48] bradleymeck: so could hook it to prototypes? [19:48] tmpvar: hrm, this is for the live node lists, right? [19:49] bradleymeck: oh, that was to slick, for overload, we could use the ES Harmony Proxy API which is supports i guess [19:50] bradleymeck: since that is actually starting to crop up [19:51] tmpvar: alright, what exactly is witch? [19:51] felixge has joined the channel [19:51] felixge has joined the channel [19:51] tmpvar: a complete browser on node? like env.js? [19:52] felixge: france can go home [19:52] felixge: :) [19:52] bradleymeck: it was a testing bed for things, right now its a bit outta date from my work at home, it can browse though yea [19:53] tmpvar: im down with some of this stuff [19:53] tmpvar: events look promising, although untested ;) [19:54] bradleymeck: scripts / styles dont work, trying to figure out npapi. its tested at my work to heck [19:54] bradleymeck: but no files lol [19:54] tmpvar: hehe, yeah I mean unit tests :) [19:54] tmpvar: what is the license on this? [19:55] bradleymeck: yub, as its not a spec, all my stuff is MIT (w/o license) unless otherwise noted, can put a file up if you need one [19:55] jbrantly has left the channel [19:55] fizx has joined the channel [19:56] n8o has joined the channel [19:56] tmpvar: fizx, yo [19:56] fizx: tmpvar: hey hey [19:56] n8o has left the channel [19:57] fizx: hows avro-land [19:57] tmpvar: havent touched it :{ [19:58] tmpvar: I have learned a ton about node addons though [19:58] tmpvar: by way of node-ogl [19:58] fizx: nice [19:58] fizx: the project i wanted to use node for ended up needing java-interop [19:58] fizx: so it's in java now [19:58] tmpvar: ah, is that still on the table? [19:59] tmpvar: ah [19:59] tmpvar: im sorry :P [19:59] fizx: yeah [19:59] fizx: som possibility of scala [19:59] fizx: which is fun and all [19:59] fizx: but less urgency to work on stuff [19:59] Judofyr has left the channel [19:59] fizx: yeah, that's how my life goes [20:00] tmpvar: yeah, damn [20:00] bradleymeck: jni <-> node wont be for a while i bet [20:00] fizx: write in java, or write project + a whole bunch of special purpose libraries that already exist in java [20:00] tmpvar: im currently involved with a legacy java application at work, pushing really hard for node+mongodb re-write [20:01] fizx: yeah, i understand [20:01] fizx: my preference is to start moving chunks to jruby and/or scala [20:01] fizx: when i get in those situations [20:01] boaz has joined the channel [20:01] fizx: i dont think i could afford the rewrite in any of the apps i'm working on [20:01] fizx: as fun as it would be [20:02] phiggins has joined the channel [20:02] tjholowaychuk has joined the channel [20:03] tjholowaychuk: I have libssl in /usr/lib and cat /usr/include/openssl/ssl.h | grep SSL_library_init [20:03] tjholowaychuk: is all good [20:03] tjholowaychuk: and yet configure says Not Found. anyone know whats going on? [20:05] felixge: GOOALALALLA [20:05] kuya: hi, do i have to do smething special to get at JSON.parse/stringify with node HEAD ? [20:05] JimBastard: AAAAAL [20:06] JimBastard: +2 for ryah [20:06] JimBastard: and mexico [20:06] bradleymeck: nope kuya [20:06] kuya: hrm [20:07] JimBastard: pure functional programming languages are for mathematicians [20:07] kuya: i just updated node and now i get some error with no message and the error code is 11 o_0 [20:07] JimBastard: if you cant toString() and eval() you fail [20:07] brainproxy: kuya: I've had issues at that with that in the past [20:07] brainproxy: and basically a buffer needed to get converted first [20:07] bradleymeck: eval is luff if used write, else tis ebola [20:07] brainproxy: to toString [20:07] webr3: tjholowaychuk, when you configure there's about 3 or 4 ssl related things that show up, so long as you have one it's cool ;) [20:07] brainproxy: as JimBastard bsuggested [20:07] webr3: tjholowaychuk, it just checks all the options [20:07] JimBastard: i can do literally anything with toString() + eval() [20:08] JimBastard: and enough patience [20:08] cloudhead has joined the channel [20:08] bradleymeck: except hide the global object w/o a jsparser :( [20:08] kuya: ACTION still confused [20:09] kuya: what should i check for? [20:09] bradleymeck: kuya, is there a buffer in the object you are calling those on? [20:09] kuya: calling what on? toString ? [20:09] brainproxy: kuya: try this [20:09] brainproxy: JSON.parse(yourthing.toString()); [20:10] kuya: oh! [20:10] kuya: thats better [20:10] brainproxy: :) [20:10] kuya: thanks brainproxy :) [20:10] brainproxy: yw [20:10] brainproxy: for some reason that made me think of this: [20:10] brainproxy: http://xkcd.com/327/ [20:11] siculars has joined the channel [20:11] kuya: lol [20:13] mravaux has joined the channel [20:15] kuya: oh well upgrading didnt help my other error - it was a bit of a longshot :) [20:15] brainproxy: what's your other error [20:15] kuya: im calling setInterval but it just seems to stop for no reason [20:16] bradleymeck: so it loops a few times and then stops? [20:16] kuya: yup [20:16] kuya: its an irc bot [20:16] kuya: and it runs until it joins a room and then it stops interval-ing [20:17] fizx has joined the channel [20:17] brainproxy: perhaps are you calling setInterval in a recursive fashion (not meaning too) and so you're eventually crapping it out [20:17] brainproxy: or something [20:17] bradleymeck: paste/gist? [20:18] kuya: i think ill have to work on it a bit and narrow it down some [20:19] phiggins has joined the channel [20:19] kuya: yep its definatly in my code somewhere - commenting out a bunch of stuff makes it work :) [20:22] JimBastard: ACTION pooped um [20:22] bradleymeck: ... [20:23] kuya: aha! an infinate loop somewhere else was causing it to break [20:23] brainproxy: :) [20:23] kuya: forgot a .length :) [20:24] JimBastard: phiggins: !!!!!!!!!!! [20:24] JimBastard: THERE WILL BE NO PRACTICING OF JAVASCRIPT IN THIS DOJO [20:25] phiggins: ok [20:25] brainproxy: there.is.no.Spoon(); [20:25] mostlygeek_ has joined the channel [20:26] webr3: is there an eclipse plugin for node.js? or just the v8 one configured as per instructions from feb [20:26] kuya: assert(require('there').Spoon() === undefined) ? [20:26] kuya: :) [20:31] fizx has joined the channel [20:38] gwoo has joined the channel [20:39] PyroPeter: how do I close the TCP connection opened by a http.Client? [20:40] JimBastard: .end ? [20:40] JimBastard: client.end() ? [20:42] tjholowaychuk: ACTION finally gets around to process.daemonize() [20:44] fizx has joined the channel [20:44] derbumi has joined the channel [20:45] PyroPeter: JimBastard: does not work, there is no such function, no close() also [20:46] JimBastard: its there [20:46] JimBastard: one sec [20:47] JimBastard: its .end() [20:47] JimBastard: you just calling it wrong [20:47] JimBastard: sorry , back to work [20:48] PyroPeter: maybe you mean request.end() ? [20:48] JimBastard: ( i check my reverse proxy code, we doing create client and using .end() [20:50] JimBastard: you can double check against a bunch of projects [20:50] JimBastard: lots of people doing that [20:53] JimBastard: also you can inspect the object you have right? [20:53] JimBastard: PyroPeter: i would recommend using http://github.com/cloudhead/eyes.js/tree/ [20:53] PyroPeter: yes, I did that [20:54] JimBastard: you probaly are trying to close the connection object itself and not the request [20:54] JimBastard: i dunno [20:54] JimBastard: im pretty bad at javascript i just copy paste [20:54] PyroPeter: yea, I want to close the client. the request is already sent at that moment [20:55] JimBastard: look at the reverse proxy code [20:55] JimBastard: there are like 5 examples [20:55] JimBastard: one of which is a blog post [20:55] JimBastard: they all have client http requests [20:57] DracoBlue has joined the channel [20:57] PyroPeter: what reverse proxy do you mean? [21:00] ryah: yey mexico [21:01] skampler: :) [21:01] JimBastard: PyroPeter: google that shit man [21:02] JimBastard: making a reverse proxy in node like easy as shit [21:02] JimBastard: there are multiple implenetnation [21:02] JimBastard: and they all use http module [21:02] JimBastard: and client [21:02] JimBastard: its just a place where you can find sample code [21:02] PyroPeter: yay, and you dont understand my problem [21:02] JimBastard: lol [21:02] JimBastard: no i do [21:02] JimBastard: you cant read the docs [21:02] JimBastard: and are too lazy to google [21:02] JimBastard: i understand perfectly friend [21:02] JimBastard: have fun solving your issue [21:03] JimBastard: maybe someone nicer will step in to save you [21:04] bmizerany: has anyone used v8's profiler on their own C++ binding? I'm trying to make sense of the output [21:05] tjholowaychuk: bmizerany: i think v8 has more tools to fiddle with the output [21:05] tjholowaychuk: cant remember i used it a few months ago [21:06] bmizerany: tjholowaychuk: yeah. I used the mac-tick-.. thing and after some time building the report, I got #'s. I'm not sure what I should be looking for in terms of where to optimize. [21:06] bmizerany: https://gist.github.com/823f1bf7b9dc940f3b57 [21:06] richcollins has joined the channel [21:07] bmizerany: "113 unaccounted" what does that mean? are those memory leaks? [21:08] SteveDekorte has joined the channel [21:08] tjholowaychuk: idle maybe im not sure [21:09] tjholowaychuk: let me know when you find out :) haha [21:11] xla has joined the channel [21:11] jakehow has joined the channel [21:11] PyroPeter: so there is no way to close/reset a TCP connection opened by http.Client ? [21:12] fizx has joined the channel [21:12] bradleymeck: the request property has a end method? [21:13] PyroPeter: no, not the request, the underlying TCP-connection [21:13] PyroPeter: some servers do not close it [21:13] bradleymeck: give sec to look [21:13] PyroPeter: I dont want to depend on Connection:Close [21:14] fizx has joined the channel [21:17] bradleymeck: wait, if you dont want to use Close what are you asking? [21:19] PyroPeter: I want to close a http.Client connection after it received as much bytes as noted by the Content-Length header [21:22] bradleymeck: bleh, cant see how to stop it from js side on first glance ryah might have more to help, socket.end is doing naught on it [21:25] bradleymeck: request.socket._shutdownImpl(), looks promising [21:27] cloudhead has joined the channel [21:27] JimBastard: ohh there was talk about this before [21:27] JimBastard: i forgot the solution [21:28] JimBastard: someone wanted the same thing [21:28] JimBastard: ryah said something i think [21:29] bradleymeck: well the request.socket._shutdownImpl() closes the thing, but the OS buffer is still spewing stuff into the listeners [21:29] markwubben_ has joined the channel [21:31] ezmobius has joined the channel [21:33] jbrantly1 has joined the channel [21:37] ryah: bradleymeck: what's up? [21:38] fizx has joined the channel [21:38] ryah: PyroPeter: req.connection.destroy() ? [21:39] bradleymeck: *makes note* [21:40] ryah: the raw tcp connection is req.connection always [21:40] ryah: so you can do things like req.connection.addListener('data [21:40] ryah: if you wanted to see raw http [21:40] ryah: etc [21:41] joshbuddy has joined the channel [21:41] PyroPeter: ok, that makes sense [21:42] JimBastard: yeah thats it [21:42] JimBastard: thats not the request thats the connection [21:43] JimBastard: sorry PyroPeter , i did misunderstand [21:43] JimBastard: thought you wanted to close the request [21:44] geojeff has joined the channel [21:44] PyroPeter: no problem, could have happened to anyone [21:46] JimBastard: i assume a high level of fail when i see new people asking questions [21:46] JimBastard: it usually works [21:46] JimBastard: but not always [21:46] JimBastard: :-p [21:47] ceej: connect restart server.js doesn't seem to recompile the server code..... [21:48] tjholowaychuk: ceej: it does a stop / start so it should kill the processes completely [21:48] tjholowaychuk: if the pidfiles are available [21:48] tjholowaychuk: this will all work better once process.daemonize() is in place then i can finish up the --workers support etc [21:48] ceej: it's not for some reason http://screencast.com/t/ZWM4NzRkNm [21:49] ceej: even with connect stop server.js [21:50] tjholowaychuk: hm [21:50] tjholowaychuk: try connect status [21:50] tjholowaychuk: and double check that your pidfiles are correct [21:51] ceej: http://screencast.com/t/ZjBjNzYw [21:51] ceej: the pid is correct http://screencast.com/t/NjhjNDhmNDQ [21:52] tjholowaychuk: connect stop (and restart / status) use pids/connect.pid by default [21:52] pufuwozu has joined the channel [21:53] tjholowaychuk: i need to implement mkdir -p for that [21:53] ceej: so i need to make a folder? pids/connect.pid? [21:53] tjholowaychuk: ill fix that asap, but for right now just do mkdir pids [21:53] tjholowaychuk: and then try [21:53] tjholowaychuk: or connect -v to see whats going on [21:55] ceej: I added the pids folder http://screencast.com/t/Njk1YjM1O but still can't start and stop [21:57] gerad has joined the channel [21:58] ceej: ye it's not creating anything in pids [21:58] tjholowaychuk: without --daemonize implemented i cant do that right now [21:58] tjholowaychuk: you can use --workers NUM [21:58] tjholowaychuk: like connect -v --workers 2 & [21:59] tjholowaychuk: which will write out pids/connect.worker.{0,1}.pid [21:59] tjholowaychuk: but yeah cant finish the rest until process.daemonize() is there :( sorry [21:59] ceej: ah k np :) [21:59] ceej: I'll do that for now [22:00] ceej: need to update my node [22:00] jbrantly has joined the channel [22:00] ryah: tjholowaychuk: what about killing the parent? [22:01] tjholowaychuk: ryah: that is fine when we use --workers, but it would be cool to have the parent stick around to trap SIGCHLD n whatnot [22:01] pufuwozu` has joined the channel [22:01] tjholowaychuk: or if you dont want child processes -D would be nice and simple [22:02] tjholowaychuk: i was thinking ideally the parent could just sit around waiting for the children to die and re-spawn [22:03] visnup has joined the channel [22:03] jbrantly has joined the channel [22:04] ceej: tjholowaychuk: do you think you'll make a dev mode for connect where it auto restarts the server if it notices any changes in the server code? [22:05] tjholowaychuk: ceej: started playing around with that earlier today [22:05] ceej: o nice :) that would really speed up dev time [22:05] gerad: yo, just opened registration on http://nodeknockout.com/ [22:05] gerad: I assume you all will compete:-) [22:05] gerad: ryah and isaacs are going to judge [22:05] gerad: among others [22:06] isaacs: gerad: that reminds me, i gotta send you that logo [22:06] gerad: oh yeah [22:06] gerad: sorry, I was heads down working on reg the last two days [22:06] gerad: so I've dropped the ball on the sponsor stuff [22:06] isaacs: oh, no worried [22:06] isaacs: *s [22:06] gerad: can you send it to all@nodeknockout.com ? [22:09] mjr_ has joined the channel [22:11] isaacs: gerad: sure, will do [22:12] DracoBlue has left the channel [22:12] JimBastard: yeaah nodeknockout [22:12] JimBastard: i think we gonna try to make an event out of here in nyc [22:12] JimBastard: ohh nice it looks like mongo got in there [22:13] JimBastard: i was emailing back and forth with one of the mongo chicks [22:13] JimBastard: i told her to email you guys [22:13] JimBastard: whoever is running it lol [22:20] JimBastard: Nice work! Your team, The NYC Nodejitsu Ninjas, is officially registered for Node.js Knockout. [22:20] JimBastard: FUUUUU WE WIN [22:26] grahamalot has joined the channel [22:27] aho has joined the channel [22:29] derbumi has joined the channel [22:33] bradleymeck: can we get a freelancer section for teams that might need someone, or a request for members for teams something... heh [22:39] ajpiano has joined the channel [22:39] mscdex: freenode lancer! [22:39] mscdex: :P [22:40] bradleymeck: if only we had some horses [22:42] bradleymeck has left the channel [22:42] isaacs: so, i've been watching The Tudors [22:43] isaacs: jousting is a SERIOUS sport [22:43] isaacs: we need to get that on ESPN [22:43] isaacs: i'd pay for cable [22:43] isaacs: dudes get stabbed in the face with a freakin TREE [22:45] mscdex: heh [22:45] micheil: pgriess: I cannot reproduce issue #7 for the life of me. [22:45] mscdex: just play Defender of the Crown [22:45] mscdex: ;-) [22:45] isaacs: mscdex: SO not the same [22:45] mscdex: lol [22:46] pgriess: micheil: hm [22:46] mscdex: ACTION fires up an Amiga emulator [22:46] isaacs: also, they had a lot of sex in the middle ages, apparently. [22:47] isaacs: and swore! [22:49] pgriess: micheil: i can repro 100% of the time on the first client [22:49] micheil: that is very odd. [22:49] pgriess: micheil: 1) fire up echo-server.js 2) fire up examples/client.js (from pgriess-node-websocket-client) 3) ^C client [22:50] pgriess: works like a charm [22:50] pgriess: need a packet trace? [22:50] micheil: yeah [22:50] joshbuddy has joined the channel [22:50] pgriess: ok, 1s [22:50] micheil: even when I modded the examples/client to automatically die mid connection I couldn't get it to do it. [22:52] gerad: bradleymeck: good idea [22:52] pgriess: micheil: what do you want me to do w/ the pcap file? email to you? [22:52] micheil: oh. wtf. it just did it. [22:52] pgriess: ok, well lmk if you still want the pcap [22:52] gerad: JimBastard: ooh, I need to talk to you about nodeknockout, ryah told me to [22:55] mscdex: Jim has left the building [22:55] micheil: pgriess: try pulling development again. [22:55] micheil: I just pushed a change [22:58] micheil: pgriess: pay attention to the commit message; that's why it broke. [22:58] isaacs: gerad: http://npmjs.org/npm.png http://npmjs.org/npm-large.png [23:00] micheil: pgriess: I've got a half-way branch for uid / username -> pw object, and gid / groupname -> grp object. [23:01] [[zz]] has joined the channel [23:01] hassox has joined the channel [23:02] micheil: pgriess: does that work for you? [23:02] pgriess: micheil: ok, trying now [23:02] micheil: k [23:03] pgriess: micheil: cool about getpwnam/getgrnam. what are you planning on using that for? i started down that road about a month ago but ultimately decided that making setuid/setgid blocking wasn't a big deal [23:03] micheil: someone asked for it. [23:03] micheil: that's the pure reason. [23:05] pgriess: micheil: cool, the second patch works. now running tests for the first one [23:05] micheil: k [23:08] charlesjolley-_ has joined the channel [23:10] sanderjd has joined the channel [23:10] gerad: isaacs: ooh, looks great, that font is familiar from somewhere... [23:10] gerad: I guess I'll have to grab jim tomorrow [23:10] micheil: I shouldn't feel this good. I've only had 1.5 hours sleep. >_> [23:12] derferman: how would I go about adding a link to the modules page [23:12] derferman: ? [23:13] micheil: create a github account, got to the page, click edit, copy and paste the line from another item on the page, and then change the details [23:13] micheil: (generally name & url) [23:14] micheil: if you're not on github, ask someone else to edit the page for you. [23:14] derferman: micheil: Thanks [23:15] micheil: for syntax help, try: http://textile.thresholdstate.com/ [23:17] ec: inimino: around? Pay attention to ##Paws real quick, I need you to talk me down off my crazy-horse [23:18] micheil: pgriess: so, they were all good? [23:18] pgriess: micheil: not sure yet. i ran into a handshaking bug in my client that i'm tracking down first [23:19] hassox has joined the channel [23:19] micheil: pgriess: also, if you need testing gear with another server, try pusherapp.com [23:19] pgriess: micheil: good idea, thx [23:19] micheil: they do draft76 as well [23:21] micheil: and I know of few of the guys who developed it from conversations about architecture of services, and they're all very smart and on the mark as far as websockets & stuff [23:23] Tim_Smart has joined the channel [23:28] micheil: pgriess: I'll catch you later, just add more data / issues to the githubs if it doesn't work. [23:28] pgriess: micheil: yup, l8 [23:28] isaacs: gerad: didn't mention in the email, but you can link to http://npmjs.org/ [23:28] isaacs: gerad: i'll put up a basic getting started type guide there soon [23:31] gerad: suh'weet [23:33] gerad: we're going to line up a set of "how to" posts on the nodeknockout blog starting in august [23:33] isaacs: awesome [23:34] gerad: so that's our timeline :-) [23:34] tjholowaychuk has left the channel [23:34] tjholowaychuk has joined the channel [23:34] isaacs: actually, i could write a basic "how to npm" blog already. i'd like to have some snazzy way to make the docs all compiled into some fancy html stuff on npmjs.org [23:36] gerad: ooooh.. that'd be nice [23:36] isaacs: gerad: srsly. [23:36] isaacs: right now, the way to link to a doc is that I tell people to do "npm help whatever" [23:37] isaacs: which is great and necessary and all, but sucks for hyperlinking [23:40] JimBastard has joined the channel [23:40] gerad: yeah, all docs need to be on the web [23:40] gerad: google is my documentation [23:40] gerad: preferably with comments [23:41] gerad: python especially drives me crazy [23:41] gerad: it's cool that you can call help on any function and get the docstring, but I never do it for some reason [23:42] isaacs: gerad: well, it is online in github, i guess, since the docs are all just markdown in the source code [23:42] isaacs: and people do link there, but it's long stupid urls, like http://github.com/isaacs/npm/blob/master/doc/developers.md#readme [23:42] gerad: ah, makes sense… though at least it's always up to date!:-) [23:49] freshtonic has joined the channel [23:50] mscdex: javascript-fu! [23:54] cataska has joined the channel [23:54] tsyd: o_0 [23:56] reid\work has joined the channel