[00:00] JimBastard has joined the channel [00:00] JimBastard: http://www.youtube.com/watch?v=nOwvmZSVrNU [00:03] Viriix has joined the channel [00:05] mikew3c has joined the channel [00:06] monokrome: Are there any ORM libraries for node? [00:07] zemanel_ has joined the channel [00:07] tj: micheil: hmm yeah require('util').inspect in the repl for 0.2.5 is fine [00:07] tj: but require('util') outputs "2" [00:07] tj: haha [00:08] JimBastard: monokrome: a few [00:08] monokrome: Any recommendations? [00:08] micheil: monokrome: check http://github.com/ry/node/wiki/modules [00:08] JimBastard: monokrome: i use resourcer, but its only working engine is memory and couchdb [00:08] CIA-95: node: 03Ryan Dahl 07master * r9da29a6 10/ doc/index.html : Fix links - http://bit.ly/9pnkB5 [00:08] CIA-95: node: 03Tim Cooijmans 07master * rd4b726a 10/ lib/util.js : fix utils.inspect's detection of circular structures - http://bit.ly/9bsuPr [00:08] rbranson: ORM? this is node.js... we use fucking couchdb and shit [00:08] JimBastard: mongoose i hear is good for mongo [00:08] JimBastard: rbranson: more like ODM [00:08] JimBastard: object document mapper [00:08] rbranson: oh and mongodb... for web scale [00:08] monokrome: JimBastard: Yea, I'm there but I'm looking for an actual ORM layer. [00:08] JimBastard: monokrome: resourcer [00:09] tj: monokrome: id go with mongodb [00:09] JimBastard: monokrome: we are actually about to push v1.0.0 soon, lots of updates inc this month [00:09] tj: with whatever on top [00:09] tj: even just normal its nice [00:09] rbranson: mongodb is way more web scale [00:09] monokrome: link? [00:09] monokrome: It's not on that page. [00:09] JimBastard: https://github.com/indexzero/resourcer [00:09] JimBastard: its not "released" yet [00:09] JimBastard: we are using it in production though [00:09] JimBastard: @ nodejitsu [00:09] JimBastard: its nice, still missing a few things, but its a good base [00:10] JimBastard: will be continuing to support it for a while [00:10] JimBastard: there are others though [00:10] JimBastard: obviously im biased [00:10] JimBastard: i do love cloudhead's projects [00:10] aconbere has joined the channel [00:11] iaurynn has joined the channel [00:11] monokrome: Do any of them have documentation? :) [00:11] JimBastard: yeah, for sure, check the modules page [00:11] JimBastard: resourcer is doc-less since its not released, but the tests show all the usage [00:11] tj: less is a gooder [00:11] tj: even tho more and more I lean towards just regular css haha [00:11] tj: sick of compiled stuff [00:12] JimBastard: tj: json stylesheets fw [00:12] JimBastard: ftw [00:12] JimBastard: lol [00:12] tj: haha :D [00:12] JimBastard: old stuff, http://maraksquires.com/json_stylesheets/ [00:12] CIA-95: node: 03Dan Søndergaard 07master * r8591057 10/ doc/api/fs.markdown : Better description of lstat(). Wrapped all lines. - http://bit.ly/czIesK [00:12] JimBastard: lol [00:12] altamic has joined the channel [00:13] JimBastard: my compiler is a for loop and jquery [00:13] tj: hm, pretty sure im looking at a tornado [00:13] JimBastard: see ya canada [00:13] tj: good times in canada [00:13] tj: haha [00:13] JimBastard: nice knowing you [00:13] JimBastard: thanks for being a good hat [00:13] JimBastard: :-D [00:15] aubergine has left the channel [00:16] hassox has joined the channel [00:17] siculars has joined the channel [00:17] stagas has joined the channel [00:22] jerry has joined the channel [00:26] nbqx has joined the channel [00:28] Aria has joined the channel [00:28] aconbere has joined the channel [00:29] arpegius has joined the channel [00:30] devinus_ has joined the channel [00:32] rauchg_ has joined the channel [00:32] isaacs: later, canada! [00:33] isaacs: ACTION heading to the airport [00:35] micheil: early prototype of static toc's done. [00:37] charlenopires has joined the channel [00:39] mikeal1: isaacs [00:39] mikeal1: where is that article you wrote on semicolon insertion? [00:39] yhahn has left the channel [00:40] micheil: isaacs left.. [00:40] mikeal1: damn [00:40] micheil: I think it was inimino that wrote that article [00:40] micheil: http://inimino.org/~inimino/blog/javascript_semicolons [00:41] monokrome: Does that say to use semicolons [00:41] monokrome: or not to use them? [00:41] tj: its not insertion [00:41] tj: omg [00:41] tj: lol [00:41] softdrink has joined the channel [00:41] monokrome: semicolons are lame. [00:42] stephenjudkins has joined the channel [00:42] inimino: ACTION looks around [00:42] monokrome: ACTION looks at inimino  [00:42] stephenjudkins: i have an integer. i'd like to put it in a buffer as 32-bit big-endian bytes [00:43] jakehow has joined the channel [00:43] stephenjudkins: at a given offset. IE, 7 should be "00 00 00 07" [00:43] inimino: monokrome ⋱ I didn't say to use them or not, just stuck to the technical facts. [00:43] mikeal1: oh yeah [00:44] monokrome: inimino: I know! You also specifically said they weren't actually "inserted" so not sure what tj is on about :) [00:44] guybrush: inimino: this article and the other one regarding whitespaces helped me a lot, ty for that [00:44] tj: monokrome: I dont know, I didnt read it [00:44] tj: but it bugs me when people call it insertion [00:44] inimino: guybrush ⋱ great, thanks for letting me know :) [00:44] monokrome: tj: I can see why :) [00:45] rtomayko has joined the channel [00:45] inimino: tj ⋱ Eh, the spec calls it insertion, so I think I do to, though I think I mentioned that it's just a spec fiction. [00:46] tj: i guess they have to call it something [00:46] jvolkman: VirtualSemicolon [00:46] jvolkman: [If the first through the nth tokens of an ECMAScript program form are grammatically valid but the first through the n+1st tokens are not and there is a line break between the nth tokens and the n+1st tokens, then the parser tries to parse the program again after inserting a VirtualSemicolon token between the nth and the n+1st tokens] [00:46] inimino: Where's that from? [00:46] jvolkman: http://www.google.com/url?sa=t&source=web&cd=2&ved=0CB8QFjAB&url=http%3A%2F%2Fwww.ecmascript.org%2Fes4%2Fspec%2Fgrammar.pdf&rct=j&q=VirtualSemicolon&ei=HXfkTPL5OoPGlQetupnTDg&usg=AFQjCNGYUoY7rxshkKNIEnQ7BMhRdT6g1w&sig2=vjoYuqPxfVxORgC3fskLPg [00:46] jvolkman: whoops [00:46] tj: lol [00:47] inimino: o_O [00:47] JimBastard: dumb question, is there a way to queue up headers for response.writeHeader without implementing your own custom response object? [00:47] tj: so lame [00:47] jvolkman: http://www.ecmascript.org/es4/spec/grammar.pdf [00:48] saikat has joined the channel [00:48] inimino: jvolkman ⋱ Oh, ES4... long since dead, but I didn't know they redefined it that way, interesting. [00:48] tj: write a parser lol and tell me you insert semicolons for statement termination [00:48] tylerstalder has joined the channel [00:48] heavysixer has joined the channel [00:48] tj: vs just **allowing** a semicolon or newline [00:49] bradleymeck has joined the channel [00:49] johngbrooks has joined the channel [00:50] jvolkman: it's a gray area, but my take is that semicolons were an intended part of the language, and that attempting to support missing semicolons is just for compatibility reasons [00:50] inimino: JimBastard ⋱ You can add things to the request object. [00:51] inimino: jvolkman ⋱ I'm not sure that's entirely historically accurate. [00:51] tj: jvolkman: the a lexer could choose to use ';' as the token, and perhaps simple replace '\n' with ';' [00:51] tj: but typically you have something like Token::EOL where ';' or '\n' would return an EOL [00:51] tj: not complicated [00:51] tj: most languages do this [00:51] inimino: jvolkman ⋱ Anyway, what matters now is what's allowed, not what was originally intended. [00:51] jvolkman: inimino: perhaps not, but that's what I gather from the description in the grammar document [00:51] Evet has joined the channel [00:51] JimBastard: inimino: im actually trying to do session / set-cookie stuff. i want to set the cookie in the response before it gets sent off for processing (which could go to many different places). does that make any sense? [00:52] JimBastard: without a proper middleware i dont think i can [00:52] inimino: jvolkman ⋱ Ah, the ES4 spec is probably a bad way to get into the history of the language... there are some mailing list posts where Brendan Eich touched on some of the details but I can't recall them. [00:53] inimino: JimBastard ⋱ yes [00:53] JimBastard: well fuck [00:53] inimino: JimBastard ⋱ You can just attach your own properties to the req object, it's just a JavaScript object like any other, and as long as you use the same convention elsewhere in your code it will just work. [00:53] JimBastard: inimino: you mean anywhere i have a .writeHead, just reference the data i appended in the request object right? [00:54] inimino: yes [00:54] JimBastard: is that kosher? lol [00:54] JimBastard: seems a bit hacky [00:54] inimino: req.myExtraStuff=... [00:54] inimino: not really [00:54] JimBastard: i was thinking of creating a custom response object that override some of the built in methods [00:54] JimBastard: would be more work though [00:54] inimino: It's JavaScript; dynamism is a feature. [00:55] jvolkman: One could argue that a language truly designed to be free of semicolons would not have the handful of gotchas that javascript seems to have [00:55] inimino: you can go that route too, if you want [00:55] JimBastard: it might be nice for node to do that internally [00:55] JimBastard: so you could do something like .pushHeader() [00:55] JimBastard: and then when you writeHeader() it would pull up the history [00:55] inimino: jvolkman ⋱ Yes, it wasn't very well designed for use with or without them, there are gotchas either way. [00:56] inimino: jvolkman ⋱ They should have just made the semicolons forbidden, but it's too late now. [00:58] JimBastard: hrmmm fuck [00:58] losing has joined the channel [00:58] JimBastard: var proxy = new httpProxy.HttpProxy(request, response); proxy.proxyRequest(options.masterPort, options.masterServer, request, response); [00:58] JimBastard: inimino: i dont think i can enforce the convention there [00:59] JimBastard: http-proxy is kinda a proxy black box [00:59] erlnoob has joined the channel [00:59] inimino: JimBastard ⋱ can't you just add the headers before calling that? [00:59] JimBastard: inimino: to the response object? [00:59] JimBastard: that was my OG question, how can i add headers to a the response object without calling writeHeader() [00:59] inimino: I meant the request object. [00:59] tj has joined the channel [00:59] JimBastard: inimino: i could [01:00] JimBastard: inimino: but its never gonna actually set the cookie anywhere [01:00] zentoooo has joined the channel [01:00] JimBastard: i guess in my receiving app i'd change it too [01:00] JimBastard: leave http-proxy out of the equation [01:00] inimino: Ok, so you're setting your stuff before you send it to the proxy, and then you want the response to have the Set-Cookie headers? [01:01] JimBastard: inimino: pretty much [01:01] JimBastard: i think i'll have to enforce the request.cookie convention in the app its going to proxy too [01:01] JimBastard: that should work [01:01] inimino: I guess the question then is "how to add extra headers to a proxy response" [01:02] inimino: which I don't know, I don't think I've ever used the proxy. [01:02] inimino: I've done it manually, though. [01:03] JimBastard: im just trying to think of the most sane solution here [01:03] tj has joined the channel [01:03] inimino: Well, if you want to add your own cookie headers to the response that is otherwise coming from a proxy, you're going to have to deal with that no matter what right? [01:03] inimino: That's orthogonal to how you track cookies-to-be-appended in your own code. [01:04] JimBastard: inimino: well if i control all the locations is proxying to, i can actually not deal with it right? [01:05] JimBastard: what i am confused about, is if there is any way with vanilla node to queue up a header write for the response object [01:05] inimino: There isn't. [01:05] JimBastard: should there be? [01:05] JimBastard: or no? [01:05] inimino: I'm not sure what you mean about not dealing with it though. [01:05] inimino: I don't know. [01:06] inimino: I tend to think not, but... [01:06] JimBastard: well i can just do this in the app being proxied to [01:06] JimBastard: router.route(req, body, function (result) { result.headers['Set-Cookie'] = request.cookie || ''; res.writeHead(result.status, result.headers); res.end(result.body); }); [01:06] cloudhead has joined the channel [01:06] inimino: JimBastard ⋱ Where's the request cookie coming from? [01:06] JimBastard: request.cookie = session.getSetCookieHeaderValue(); [01:06] JimBastard: convention [01:07] inimino: If you've got arbitrary extra stuff added to the response object... [01:07] inimino: ACTION is confused [01:07] JimBastard: me too [01:08] JimBastard: oops [01:08] JimBastard: router.route(req, body, function (result) { result.headers['Set-Cookie'] = req.cookie || ''; res.writeHead(result.status, result.headers); res.end(result.body); }); [01:08] saikat has joined the channel [01:08] inimino: I thought you had cookie values to queue up in multiple places, so you were going to add them to the resp object in various places, so you don't have to track it separately [01:09] JimBastard: sorry, my bad [01:09] rtomayko has joined the channel [01:09] JimBastard: im going to work on this for a bit, i think i might be able to get it [01:09] JimBastard: i'll ping you / show you when i make some progress [01:09] JimBastard: thanks [01:10] richcollins has joined the channel [01:11] pedrobelo has joined the channel [01:12] Anti-X has joined the channel [01:13] breccan has joined the channel [01:15] ryah: ACTION wonders why socket.connect() doesn't have a callback param [01:15] ryah: definitely needs that. [01:16] rauchg_: easy with EventEmitter#once [01:17] aconbere has joined the channel [01:18] boaz has joined the channel [01:20] softdrink has joined the channel [01:21] aheckmann has joined the channel [01:23] pagameba: anyone have pointers on how to expose an array in a binding? [01:25] evanmeagher has joined the channel [01:26] admc has joined the channel [01:27] bradleymeck: pagameba, C++ side? and can you clarify on what you mean by expose, v8::Array or map something that represents and array in c++ [01:29] pagameba: bradleymeck: yes C++ … I have a Map that has some number of Layer objects … I'd like to be able to do map.layers.length and map.layers[i] in javascript [01:29] guybrush: this is how we fetch tweets, right? https://gist.github.com/704486 [01:29] pagameba: there would be C code to be executed in the binding to actually get the layer or layers [01:31] bradleymeck: pagameba, look into SetNamed/IndexedPropertyHandler to map the values, but you should set length yourself [01:31] pedrobelo has joined the channel [01:31] pagameba: bradleymeck: thx, will do [01:32] micheil: ryah: oh. I thought you'd be asleep, anyway, catch: https://gist.github.com/704490 [01:32] micheil: (my timezone conversions are obviously wrong) [01:33] micheil: (that's rebased to your master) [01:33] ryah: micheil: why the jquery upgrade? [01:34] ryah: i would have expected jquery to be removed [01:34] micheil: true, I could easily remove it, but for now, I've just upgraded it to keep it current [01:34] ryah: does anything depend on it? [01:34] micheil: only the core.js file [01:34] micheil: (and it's only for the show/hide stuff) [01:35] ryah: ok [01:35] micheil: when we get proper templates for the documentation & website, we will be able to merge the assets for the two. [01:36] micheil: we can remove doc/jquery.js [01:36] ryah: can i leave out the jquery upgrade? [01:36] micheil: sure. [01:37] micheil: hmm.. patch -p4 should apply that patch right? [01:39] ryah: -p1 [01:40] CIA-95: node: 03Micheil Smith 07master * r8d27393 10/ (Makefile doc/api_assets/core.js tools/doctool/doctool.js): Generate Table of Contents at compile time. - http://bit.ly/9HiALg [01:40] micheil: oh [01:40] ryah: micheil: thanks [01:40] micheil: uhh, I was just doing a new patch for you. [01:40] micheil: oh well. [01:41] micheil: ryah: did you make some style changes? [01:41] ryah: yes [01:41] micheil: k [01:41] mscdex: ryah: i think the change to readline.js awhile ago screws up cygwin after you exit the repl [01:42] ryah: mscdex: yeah, i saw on the mailing list [01:42] ryah: any idea how to fix it? [01:42] mscdex: :S [01:42] mscdex: not yet, i'll probably look into it tonight [01:42] ryah: the readline should be less prone to error [01:42] ryah: now [01:42] Me1000 has joined the channel [01:42] ryah: so i suspect it's something stupid... [01:43] mscdex: well, it is cygwin after all :> [01:43] micheil: ryah: let's drop jquery? https://gist.github.com/704506 [01:44] micheil: mscdex: could it be \r\n vs \n ? [01:44] mscdex: nah [01:44] mscdex: i'm pretty sure it has to do with the setRawMode changes [01:44] c4milo has joined the channel [01:44] ryah: micheil: i thought core.js needed it? [01:44] pagameba: bradleymeck: this looks good - not quite sure I understand how to use it yet :) [01:45] micheil: ryah: good point, I stuffed up that patch. >_> [01:45] micheil: we can deprecate doc/jquery.js at any rate. [01:46] mscdex: uh oh [01:46] mscdex: it doesn't affect just cygwin [01:46] mscdex: it affects linux too [01:46] mscdex: :o [01:46] micheil: ACTION bbl. [01:46] ryah: micheil: i'll wait for yout patch that removes them both, and removes the "hide" functionality from core.js [01:46] micheil: do we really want that functionality? [01:47] ryah: no [01:47] micheil: okay [01:47] ryah: i'd also like to go through the docs and fix the leading comma style [01:47] ryah: e.g. http://nodejs.org/docs/v0.3.1/api/fs.html#fs.stat [01:48] ryah: i'll add it to the todo [01:49] robotarmy has joined the channel [01:49] Aria has left the channel [01:50] CIA-95: node: 03Ryan Dahl 07master * r9f1b27b 10/ TODO : Add doc TODOs - http://bit.ly/dvIoI0 [01:51] mscdex: ryah: well, adding back the two setRawMode lines fixes things.... but i don't know if that messes up the writeFilter or anything [01:51] mscdex: the fix works on linux and cygwin [01:51] pagameba: bradleymeck: if I add an indexed property handler to my Map class then the syntax would be map[i] instead of map.layers[i] right? In which case I need another object to represent an array of layers in the Map … does that sound okay? [01:51] micheil: ack. [01:52] ajcates has joined the channel [01:52] mikew3c has joined the channel [01:52] micheil: oh yay. I've blown my donwloads.. [01:52] boaz has joined the channel [01:53] micheil: which oddly enough means my uploads get shaped as well.. [01:53] micheil: https://gist.github.com/704517 [01:53] micheil: ryah: ^^ [01:53] micheil: anchor links are easy enough. [01:55] ryah: mscdex: i don't want ot add back the setRawMode lines [01:55] ryah: (it breaks everything in the writev branch) [01:55] bradleymeck: pagameba thats fine [01:58] rcy has joined the channel [02:00] mikeal1: wow [02:00] jpld has joined the channel [02:00] jpld has joined the channel [02:00] mikeal1: i have this log parser code [02:00] CIA-95: node: 03Micheil Smith 07master * r57de0b1 10/ (7 files in 3 dirs): Remove jQuery from project - http://bit.ly/cslmLR [02:00] mikeal1: it writes to couchdb [02:00] ryah: micheil: thanks [02:00] mikeal1: it has this limit on how many docs it'll hold in memory before it pauses the input stream [02:00] micheil: ryah: patch for the permalinks is coming in about 2 mins [02:00] mikeal1: if that limit end up with over 100megs memory being uses [02:01] mikeal1: node will use 100% CPU [02:01] mikeal1: if that limit is less than 100 [02:01] ryah: ps do people like the improved echo server example at http://nodejs.org/index.html ? [02:01] mikeal1: it jumps to 50, then sits at nearly nothing until the stream is resumed [02:02] ryah: micheil: hmm? [02:02] ryah: er [02:02] ryah: mikeal1: hmm? [02:02] sechrist has joined the channel [02:02] mikeal1: shit, not i leaked [02:02] mikeal1: er now [02:02] mikeal1: went over 100, back to 100% CPU [02:02] mikeal1: damn damn damn [02:03] ryah: mikeal1: hm... [02:03] mikeal1: it's back down now [02:03] mikeal1: but yeah [02:03] mikeal1: if double up on the limits [02:03] mikeal1: it needs like 200megs of memory [02:03] mikeal1: mostly strings [02:03] mscdex: ryah: ok, calling self.rli.close(); before destroying the stream for ".exit" in repl.js fixes it too [02:03] micheil: ryah: https://gist.github.com/704521 [02:04] mikeal1: and once i do that it never lets go of that core [02:04] mikeal1: even when it's basically doing nothing [02:04] Yuffster has joined the channel [02:04] micheil: ryah: yeah, the improved index.html looks good. [02:04] wattzilla has joined the channel [02:05] wattzilla has left the channel [02:05] mikeal1: man, sometimes that gc just spikes [02:05] mikeal1: still [02:05] mikeal1: this is so much nicer than Python [02:06] mikeal1: so far I've written 2M log lines as entires in documents to CouchDB [02:06] mikeal1: in like a minute and a half [02:06] ryah: mikeal1: it sounds like a bug. [02:06] mikeal1: and it's pretty good about resource utilization [02:07] ryah: mikeal1: a nodejs bug [02:07] mikeal1: so long as i keep the limits down [02:07] mikeal1: you sure? [02:08] mikeal1: isn't this that v8 thing you hit when you use a lot of memory? [02:08] ryah: how much memory are you using? [02:09] mikeal1: if i up the limits and expose this issue, 200_ [02:09] mikeal1: er 200+ [02:09] ryah: 200 total? [02:09] micheil: ryah: are we using trailing comma now? [02:09] ryah: micheil: yes [02:09] mikeal1: 200 total but none of it is buffers [02:09] micheil: k, I'll add that to the todo list I keep. [02:10] mikeal1: for a few seconds buffers come in and account for an additional 50 [02:10] ryah: mikeal1: yeah - that's not the limit. [02:10] mikeal1: bu tthey all get converted to strings [02:10] marshall_law has joined the channel [02:10] ryah: mikeal1: which version of node? [02:10] micheil: ryah: just so you know, https://github.com/miksago/node/issues [02:11] mikeal1: 0.2.4 [02:11] jpld has joined the channel [02:11] jpld has joined the channel [02:11] micheil: ryah: did we want require("constants") documented? [02:12] ryah: sed -e 's/( +),(.*)$/\1\2,/g' ? [02:12] ryah: mikeal1: how many sockets do you have open? [02:12] mikeal1: one [02:12] mikeal1: and one readStream [02:13] ryah: if you strace or dtruss it - is it interesting? [02:13] msilverman2 has joined the channel [02:14] rtomayko has joined the channel [02:15] mikeal1: dtruss doesn't showing anything that stands out as odd [02:16] mikeal1: dammit [02:16] mikeal1: node just spun out of control and is hanging with 100% CPU [02:16] mikeal1: damn [02:16] mikeal1: and an EPIPE error [02:17] ryah: --trace_gc show anything? [02:17] micheil: ryah: better to do that manually, imo. [02:18] micheil: anyway. --out. [02:19] JimBastard: hey ryah do you have any opinion on adding a method to the httpServer response object? something like response.addHeader(key, value). this would temporarily store headers that would be written when response.writeHead() is called. any headers sent directly to writeHead() would override. [02:20] JimBastard: does that make any sense? [02:20] rwaldron__ has joined the channel [02:20] bartt has joined the channel [02:21] dnolen has joined the channel [02:22] derferman has joined the channel [02:22] amerine has joined the channel [02:25] kaichen has joined the channel [02:25] rwaldron_ has joined the channel [02:25] CIA-95: node: 03Ryan Dahl 07master * rbce092a 10/ (6 files in 2 dirs): Remove leading comma examples - http://bit.ly/9oKVCH [02:26] ryah: JimBastard: makes sense - but i think that can be left to the user [02:27] pedrobelo has joined the channel [02:27] JimBastard: ryah: the problem i'm having here is we have multiple end-points (read: modules) that deal with processing requests. since there is no middleware glue, i'll have to actually fork and modify each library to enforce any convention i come up with [02:27] matt_c has joined the channel [02:27] JimBastard: it seems to be discouraging modularity between http request processing, makes you use a "proper" middleware [02:28] dguttman_ has joined the channel [02:28] JimBastard: id much rather be able to just pass my request and response objects to methods and know that i can modify them along my processing chain [02:29] JimBastard: right now i have to store the information in the request object, and then pull it back out before i writeHead, a very lame convention [02:30] ryah: hm [02:30] ryah: i don't know. im not convinced [02:31] yatiohi has joined the channel [02:31] JimBastard: is there more to this then im seeing? [02:31] mscdex: ryah: https://gist.github.com/704548 [02:32] mif86 has joined the channel [02:33] c4milo has joined the channel [02:33] ryah: JimBastard: no - i just am reluctant to add methods [02:34] ryah: mscdex: what does rli.close do? [02:34] JimBastard: ryah: totally. i'll talk amongst my-selves and come back with a patch and write-up or just give up. thanks for listening :-D [02:34] agnat has joined the channel [02:35] ryah: mscdex: hm [02:36] ryah: mscdex: oh, okay [02:36] ryah: you're just adding close - i thought you were removing it [02:36] mscdex: correct [02:36] ryah: mscdex: that should be fine. but i don't think you need to destroy() [02:36] ryah: mscdex: can you check that [02:36] ryah: replace stream.destroy() with rli.close() in both cases [02:37] ryah: also merge the patches [02:37] ryah: and add your 'White' after your name. [02:37] ryah: :) [02:37] mscdex: yep, you're right, destroy() isn't needed [02:37] wilmoore has joined the channel [02:41] meso has joined the channel [02:43] mscdex: ryah: updated: https://gist.github.com/704548 [02:49] wilmoore has joined the channel [02:51] ryah: mscdex: thanks [02:51] CIA-95: node: 03Brian White 07master * r5908bda 10/ lib/repl.js : Make sure raw mode is disabled when exiting a terminal-based REPL. - http://bit.ly/cSh70j [02:51] CIA-95: node: 03Brian White 07v0.2 * ra904d12 10/ lib/repl.js : Make sure raw mode is disabled when exiting a terminal-based REPL. - http://bit.ly/98mq2h [02:52] mjr__ has joined the channel [02:58] drudge has joined the channel [02:58] pedrobelo has joined the channel [03:04] saikat: rauchg_: got flashsocket working with your suggestion - thanks. only odd thing is, on connect, my server gets two connections - is this expected? [03:05] saikat: i also see WebSocketMain.swf getting loaded twice (though once with 112 kb and once with 176 kb) [03:06] indutny has joined the channel [03:07] indutny: ACTION welcomes all [03:07] indutny: hi everyone! [03:07] barce: hi [03:08] mikew3c_ has joined the channel [03:09] ryah: mikeal1: we need to figure out what your problem is... [03:10] ryah: mikeal1: i don't think that should be happening. [03:10] ryah: okay. /me away [03:10] mikeal1: ok, i'll bring it in some time :) [03:16] cardona507 has joined the channel [03:18] skiz has joined the channel [03:20] alex_b has joined the channel [03:26] kawaz_work has joined the channel [03:27] tekky has joined the channel [03:31] dark has joined the channel [03:31] dark: I am looking for node.js in gentoo. I see https://github.com/monoid/gentoo-nodejs but it says it is discontinued, plus it has up to 0.2.3 [03:32] dark: in any event, I need to first install v8, right? [03:32] indutny: dark: no [03:32] indutny: it's shipped with nodejs [03:32] indutny: just build it [03:33] arpegius has joined the channel [03:33] boaz has joined the channel [03:34] dark: is it also necessary to define NODE_PATH="/usr/lib/node/libraries" at bash profile? can't this be configured at compile time? [03:34] dark: (I'm reading the ebuild) [03:34] indutny: in most of cases [03:34] indutny: you need just to build it [03:34] indutny: without any configurations [03:35] indutny: but yep you can run env NODE_PATH=... [03:35] indutny: it won't be configured at compile time [03:42] jdrannbauer has joined the channel [03:47] cloudhead has joined the channel [03:48] noahcampbell has joined the channel [03:48] dark: it looks like the guy installs every node.js module at /usr/lib/node/libraries [03:48] alek_br has joined the channel [03:49] dark: i mean, third-part libraries [03:49] indutny: on my pc is on [03:49] dark: in order to make node.js find them automatically, isn't the NODE_PATH thing necesary? [03:49] indutny: it's on* [03:49] dark: hum, it's where? [03:49] indutny: here: /usr/local/lib/node/libraries [03:49] indutny: and use npm [03:50] indutny: to install modules [03:50] dark: npm? [03:50] indutny: this should work "from a box" [03:50] indutny: node package manager [03:50] dark: ok, but I build with --prefix=/usr, not /usr/local [03:50] indutny: http://github.com/isaacs/npm [03:50] dark: hm interesting [03:51] dark: it installs the library per-user? [03:51] dark: isn't there an option for installing it globally? [03:51] indutny: it install it globaly [03:51] indutny: but you've an options [03:51] indutny: option* to install it as user [03:51] indutny: per-use* [03:51] indutny: per-user* [03:51] indutny: arghhh. typos [03:52] dark: "Using sudo with npm is Very Not Recommended. Anyone can publish anything, and package installations can run arbitrary scripts." [03:52] indutny: yes [03:52] davidascher has joined the channel [03:52] indutny: you need to setup rights [03:52] indutny: or install per-user [03:53] evanmeagher: mdc got a redesign, looks like: https://developer.mozilla.org/en/JavaScript [03:53] indutny: evanmeagher, thanks i've already seen [03:53] cjm has joined the channel [03:54] robotarm_ has joined the channel [03:54] evanmeagher: indutny: heh, that was meant as more of a general announcement [03:56] indutny: anyway, thank you ) [03:57] bentruyman has joined the channel [03:58] SubStack: of course, if some npm package deleted all the files in my home directory, that would pretty much be just as bad as deleting everything [03:58] rpflo has joined the channel [03:59] Tim_Smart: Oh, that really wasn't necessary. Never mind. [03:59] Tim_Smart: Wrong window :/ [04:00] indutny: :/ [04:00] dark: I use many users, one for developing, other for holding multimedia, other for browsing the web.. [04:00] dark: but I have to trust any kind of package - be it a ebuild, installing from source, a rubygem.. [04:00] dark: or a npm package [04:01] indutny: i think we need to write npm package [04:01] indutny: that will delete all others npm packages [04:01] indutny: npm install uninstall [04:01] indutny: :D [04:01] dark: I would like to use a computer with a better security model, kind like olpc's bitfrost.. but currently one has to trust the package.. [04:01] SubStack: awesome [04:01] guybrush: haha that would be fun [04:02] indutny: i'll do it! [04:02] indutny: :D [04:02] indutny: ftw [04:02] dark: well don't npm do collisions indutny? [04:02] dquestions has left the channel [04:03] derferman has joined the channel [04:03] dquestio2s has left the channel [04:03] dark: emerge will at prevent this silly thing at least (it forces the build system to install non-rooted into a destdir, then another program will check collisions, then root will copy [04:03] dark: but it's trivial for a rogue package to cause harm .-. [04:04] guybrush: omg nodejs is just awesome! just wrote a script to fetch tvmovie.de, select all stuff with jquery (jsdom) and pass it to an irc-bot which shows whats on tv when you ask with !tv [04:04] guybrush: lol... its like 100 lines of code [04:05] Me1000 has joined the channel [04:06] dark: i'm considering node.js, some lua solution or to stick with sinatra.. my main issue is support for postgresql notifications, my current ruby library (sequel) doesn't seem to handle this. i came to node.js seeing this: https://github.com/aurynn/postgres-js [04:07] dark: i also feel my ruby app a bit too slow, my queries are poor but they are way faster than the load time at psql prompt. node.js seems to rock in this area, and has some things like haml, too.. [04:07] dark: but I'm still to wrap my head around javascript [04:07] dark: or, jade [04:07] guybrush: dark: it's worth it! [04:07] skiz has joined the channel [04:08] aurynn: dark, I'm working on getting notifications in. [04:08] aurynn: :) [04:08] aurynn: listen/notify is very appealing to me [04:09] dark: aurynn, oh, you are that guy. great:D so notifications don't work right now? [04:09] aurynn: Support's not quite in there yet :( [04:10] monokrome: Are there any template languages in JS that have a normal "extend" functionality/ [04:10] tylerstalder has joined the channel [04:10] monokrome: Instead of this silly layout.jade requirement [04:11] dark: ok :) my issue with node.js was: https://github.com/ry/node_chat/blob/master/server.js this code doesn't seem clean "enough" (but maybe I just don't know js enough) [04:11] indutny: monokrome [04:11] indutny: monokrome: try nTPL [04:11] indutny: http://github.com/donnerjack13589/nTPL [04:13] aurynn: JS can be a bit warty [04:14] monokrome: ACTION thinks he likes mustache [04:15] dark: I didn't liked this syntax, fu.get("/who", function (req, res) { , but it seems to be idiomatic js [04:15] dark: I used jquery a bit and it has a lot of lambdas on middle of code too [04:15] monokrome: dark: I think most of NodeJS is meant to be abstracted instead of hardcoding sites like so [04:15] mriley has joined the channel [04:16] mriley_ has joined the channel [04:19] dark: sinatra's get '/who' { |..| .. } seems like a nicer syntax. but it's not like ruby doesn't have some syntactic oddities, and it is maybe a minor point considering the range of features [04:19] SubStack: express has sinatra-style routes [04:20] SubStack: or there are no shortage of other web framework libs [04:20] rkieffer has joined the channel [04:20] rkieffer has left the channel [04:21] mikeal1: why does my readStream emit end like 40 times at the end? [04:21] tlrobinson has joined the channel [04:23] deepthawtz has joined the channel [04:23] dark: SubStack, oh, I think that was an express example. or at least https://github.com/visionmedia/express has a similar code [04:24] dark: I'm now looking into lua equivalents of sinatra, and mercury is almost the same on this respect. it has get('/', function() return "Hello world" end) [04:25] SubStack: hmm I see both the ruby and above code as pretty much equivalent [04:25] jvolkman: What the hell. Iterating over the characters in a string directly is actually slower than first splitting the string into an array with string.split('') and iterating over the array. [04:25] dark: that is, that annoying "function" keyword doesn't belong there, but I guess one can't do better:P (it's like embedding syntax in lisp using (lambda () ..) instead of, say, macros) [04:26] dark: they are equivalent, ruby blocks just have a slightly more suited syntax (for this case) [04:27] jwm has joined the channel [04:28] robmason has joined the channel [04:28] SubStack: jvolkman: performance can be puzzling [04:29] SubStack: I just write it the way that looks prettiest, performance be damned [04:29] SubStack: dark: well there's coffeescript if you want more ruby-looking javascript [04:30] SubStack: also! [04:30] dark: yes [04:30] SubStack: I might finally throw my hat into the web frameworks fray [04:30] SubStack: at a cursory glance I don't see any continuation-based web frameworks [04:31] dark: maybe you haven't looked into common lisp ones? [04:31] SubStack: haskell-on-a-horse style [04:31] dark: or arc from paul graham (but not sure if it is) [04:31] SubStack: oh no I mean for node [04:31] SubStack: they certainly exist in other languages [04:32] dark: oh, so there are web frameworks on top of node? [04:32] SubStack: tons [04:32] dark: so what node is, a server? [04:32] SubStack: https://github.com/ry/node/wiki/modules#web-frameworks [04:33] SubStack: node is a thin wrapper around v8 to do file and network i/o [04:34] aconbere has joined the channel [04:35] Tim_Smart has joined the channel [04:36] mjr__: dark: node exposes file and network I/O to V8. You can make command line programs or servers, or whatever. It's JavaScript outside of the web browser that has access to files and network. [04:36] aurynn: so I need to write SDL bindings for node. [04:36] mjr_: BTW, somebody needs to add node.js to the Wikipedia page on JavaScript: http://en.wikipedia.org/wiki/JavaScript#Uses_outside_web_pages [04:37] Aikar: how can i spawn a process thats not attached to the parent, ie a 'starter' script in node thatll spawn another node process then kill itself [04:39] boaz has joined the channel [04:41] alcuadrado has joined the channel [04:47] kriszyp_ has joined the channel [04:48] FireFoxIXI has joined the channel [04:49] mbrochh has joined the channel [04:49] mbrochh has joined the channel [04:52] skiz has joined the channel [04:52] jesusabdullah: mjr_: Why not have that person be you? :v [04:52] mjr_: Yeah, it should be. Too busy working though. [04:52] admc has joined the channel [04:53] saschagehlich has joined the channel [04:54] ctp has joined the channel [04:59] sh1mmer has joined the channel [05:00] intacto has joined the channel [05:00] guybrush: mh is it ok to do a setInterval(cb, 1000*3600*24, .., ..) ? [05:01] guybrush: like a 1day cronjob [05:01] indutny: yes [05:01] indutny: but not ok if process will exit [05:01] indutny: cron is preferable [05:01] guybrush: i don't like cron :/ [05:02] guybrush: another thing i have to care [05:02] guybrush: when i write an app, i don't want to care about anything else but `npm install app` [05:03] wdperson has joined the channel [05:03] Tim_Smart has joined the channel [05:04] guybrush: sure, there could be some code which creates the cron-job when installing the app with npm - but thats like.. not so cool [05:04] JimBastard has joined the channel [05:05] JimBastard: hey micheil you busy? [05:05] Lorentz: You might look into doing a per-second setInterval, check a variable/db query/etc and run whatever job you have lined up if it's time to run it. [05:06] guybrush: Lorentz: mhm, like checking currTime against lastTime? [05:06] guybrush: where currTime is Date() and lastTime a variable [05:06] Lorentz: Something like it, I guess. [05:07] Lorentz: It's kinda wasteful, but it'll work if you don't want to do cron. [05:07] guybrush: ok, ty for the hint [05:08] JimBastard: if i start to make changes to the /lib folder of node, do i have to do anything to make it recompile? [05:09] mjr_: you have to recompile [05:09] indutny: papapapam.... [05:09] indutny: ACTION thinks that horror is near [05:09] JimBastard: lol [05:09] indutny: https://github.com/donnerjack13589/node.uninstall [05:10] googol has joined the channel [05:10] JimBastard: mjr_: how about if i want to run an individual test? is there a one liner for that? [05:10] indutny: ACTION thinks that end is near [05:10] indutny: JimBastard: https://github.com/donnerjack13589/node.uninstall [05:10] JimBastard: im kinda a huge core noob [05:10] indutny: everyone should try this: npm install uninstall [05:10] indutny: really [05:10] mjr_: JimBastard: you can run an individual test like this: node test/simple/test-http-head-request.js [05:10] indutny: ;) [05:10] mjr_: or whatever the test is called [05:11] JimBastard: ohh, i didnt realize the tests were in JS, duh [05:11] JimBastard: :-) [05:11] indutny: lol [05:11] JimBastard: i'm gonna try to do a patch. i'm leaving userland to the place where dragons be. [05:12] indutny: ACTION was hit by a dragon, -150 hp [05:13] derferman has joined the channel [05:14] superjudge has joined the channel [05:17] galaxywatcher has joined the channel [05:19] mopemope has joined the channel [05:20] indutny: ryah: are you here? [05:21] mopemope has left the channel [05:24] bpot has joined the channel [05:25] ceej has joined the channel [05:26] guybrush: mh i guess im implmenting it wrong, when i am doing a setInterval to make a request every view hours? I should do any form of caching, isn't it? [05:28] richcollins has joined the channel [05:29] mbrochh_ has joined the channel [05:29] jpld has joined the channel [05:29] jpld has joined the channel [05:35] jpld has joined the channel [05:35] jpld has joined the channel [05:35] mif86 has joined the channel [05:36] kjeldahl has joined the channel [05:37] devinus_ has joined the channel [05:38] richcollins has joined the channel [05:39] aconbere has joined the channel [05:41] bentruyman_ has joined the channel [05:43] rkieffer has joined the channel [05:45] rkieffer: Is there a built-in node equivalent to Object.keys()? [05:46] ryah: indutny: hi [05:46] ryah: https://gist.github.com/704668 [05:46] ryah: ^-- telnet.js [05:46] indutny: cool [05:46] indutny: :) [05:48] micheil: JimBastard: pong [05:48] skohorn has joined the channel [05:48] indutny: ryah: what about event propagation [05:48] indutny: i've started talk time ago [05:48] JimBastard: micheil: hey hey, i figured it out, thanks [05:48] micheil: rkieffer: Object.keys exists in node without it being builtin [05:49] micheil: JimBastard: okay cool [05:49] micheil: ACTION just got back [05:49] indutny: ryah: but you haven't joined conversation, so i don't know you opinion [05:49] indutny: ryah: what do you think? [05:49] ryah: indutny: oh yeah. link me? [05:50] ryah: i'm really ignoring the mailing lists these days [05:50] pquerna: ryah: tbh, it could just be a vanity twitter account; only tweet complete node.js programs [05:50] micheil: ryah: it'd actually be kinda cool to have make test require the test files, so it only runs those changes :D [05:51] rkieffer: micheil: ah, thx. brain fart (and a couple beers) on my part. :) [05:51] micheil: no worries [05:51] indutny: ryah: https://github.com/ry/node/pull/432 [05:51] ryah: oh yeah, i think i have the nodejs twitter account [05:51] indutny: ryah: previous pull request have disappeared [05:52] ryah: that would be fun [05:54] micheil: wow. that's kinda odd to see, these people how are consider almost gods of js and such are asking how to get started on the mailing list. [05:55] micheil: ryah: you could also tweet releases from it and stuff [05:59] justin_ has joined the channel [05:59] PorterTech has joined the channel [05:59] PorterTech: can someone please point me in the direction of zlib? :) [06:00] pquerna: zlib.org [06:00] mscdex: http://tinyurl.com/2eerf7e [06:00] mscdex: :> [06:00] indutny: ryah: what do you think? about event propagation [06:00] mikeal1 has joined the channel [06:01] PorterTech: yeah... thx guys. perhaps a node example to get me started? [06:01] softdrink has joined the channel [06:01] indutny: PorterTech: example of what? [06:01] indutny: zlib usage? [06:01] PorterTech: yes [06:02] micheil: PorterTech: what are you wanting to do with zlib? [06:02] PorterTech: decompress a datagram [06:02] micheil: okay [06:02] pquerna: sorry for being a jerk. there are a few modules that bind to zlib. node-compress being the most common. [06:02] indutny: yep [06:03] dohtem has joined the channel [06:03] indutny: i was finding it [06:03] dohtem has joined the channel [06:03] PorterTech: haha, np. it's irc, a hostile env :) [06:03] PorterTech: thanks [06:03] micheil: node-compress doesn't do zlib I don't think [06:04] pquerna: well, it uses zlib [06:04] pquerna: to do gzip [06:04] pquerna: but it only provids a stream api i thought [06:04] mscdex: this fork is a little more up to date: https://github.com/egorich239/node-compress/ [06:05] pquerna: https://github.com/egorich239/node-compress [06:05] pquerna: yeah [06:05] pquerna: github-- [06:05] v8bot: pquerna has taken a beer from github. github now has 0 beers. [06:05] mscdex: heh [06:05] PorterTech: haha [06:05] pquerna: it would be cool if beers were like antimatter and matter. [06:05] pquerna: to take one away from github it took one away from me [06:05] pquerna: or somehting [06:06] pquerna: though i don't know where they would come from then [06:06] pquerna: hatters gotta hate though. [06:06] mscdex: there's an infinite supply of digital beer [06:06] ryah: http://four.livejournal.com/1086535.html [06:06] ryah: ^- i really like these 'hello world' programs ;) [06:06] ryah: can anyone think of another [06:06] pquerna: tee [06:08] pquerna: grep? [06:08] pquerna: just thinking of things i pipe together. [06:08] pquerna: that node could do in 10 lines. [06:08] pquerna: a simple grep. [06:08] ryah: awk.js ? [06:08] pquerna: heh [06:08] guybrush: `mv ./telnet.js /usr/bin/telnet` :D [06:08] mscdex: netcat.js [06:08] mscdex: :p [06:09] ryah: i think there is a project like that [06:09] pquerna: first param javascript regex, stdin filter by line, output matches [06:09] ryah: used for parsing json [06:09] ryah: curl twitter | awk.js "arg['username'] == 'ryah'" [06:10] ryah: does grep use some special algorithm? [06:10] pquerna: yes [06:10] pquerna: ryah: http://lists.freebsd.org/pipermail/freebsd-current/2010-August/019310.html [06:11] MikhX has joined the channel [06:12] ryah: indexOf implements Boyer-Moore [06:12] ryah: so, perhaps you can do it [06:12] ryah: easily [06:12] indutny: really? [06:12] indutny: oh [06:12] indutny: you are talking about string, of course [06:13] ryah: oh, but you need it to operate on a stream... [06:13] ryah: we should have something for htat... [06:13] ryah: stream.grep... [06:13] ryah: :P~ [06:13] indutny: :) [06:13] pquerna: 3 instructions per byte will be hard :) [06:13] ryah: sure [06:13] jspiros has joined the channel [06:14] indutny: that must be a C++ part [06:14] indutny: anyway [06:14] indutny: js is to slow for that [06:14] pquerna: well [06:14] mscdex: js++ [06:14] v8bot: mscdex has given a beer to js. js now has 1 beers. [06:14] mscdex: :p [06:15] indutny: js-- [06:15] v8bot: js is getting too many beers. Don't let js get drunk! [06:15] indutny: haha [06:15] indutny: cool [06:15] mscdex: js is drunk with performance! [06:16] pquerna: jitaholics anonymous. [06:16] whyme has joined the channel [06:18] gkatsev: js actually means jillion screwdrivers [06:19] pquerna: http://code.google.com/p/re2/ [06:19] pquerna: i still need a project that actually needs that. [06:19] pquerna: i'll find one, someday. [06:20] gkatsev: I've linked that xkcd comic so much on ##javascript and #vim that I know the link from the top of my head [06:20] mbrochh has joined the channel [06:20] mbrochh has joined the channel [06:20] ryah: ACTION is thinking fucking process.openStdin().grep(process.argv[2]).pipe(process.stdout) [06:21] ryah: let's just start redoing all the unix utilites and start build them into streams.. [06:22] ryah: require('stream/unix-methods'); [06:23] wao: :)) [06:23] indutny: ryah: i think - next step is will be rebuilding linux [06:24] indutny: on nodejs [06:24] indutny: require('unix').start(function() { ... }); [06:24] guybrush: maybe it all gets done till 24/12, would be nice christmas-gift [06:24] mscdex: var lol = require('upstart'); [06:26] SubStack: you can already almost do that with lazy [06:27] pquerna: remove upstart from my life? [06:27] SubStack: no, the grep thing [06:27] pquerna: damn. [06:29] SubStack: https://gist.github.com/704694 [06:29] micheil: actually, would it be possible to write a process monitor in node? [06:29] micheil: (easily) [06:29] SubStack: a /bit/ verbose [06:30] micheil: ryah: we should run a small comp on this [06:30] pquerna: yes [06:30] indutny: lines isn't so interesting [06:32] davidascher has joined the channel [06:32] mjr_: pquerna: is SSL working better now in master? [06:32] mjr_: er, HTTPS I mean [06:33] dnolen has joined the channel [06:34] indutny: it should [06:35] comster: mjr_, a while back I couldn't get mine to work at all, now it works, but I'm having trouble getting all assets to load. not sure if its related [06:35] mjr_: I was encouraged by the release notes for the latest version. I'd love to get rid of my load balancer SSL offload. [06:36] comster: I didn't see anything written up about it, except the few lines of implementation. For you was it not working or just poorly? [06:37] mjr_: I've never used it. Everybody that did told me it was horribly unreliable [06:37] mjr_: So I've been staying away. [06:39] themiddleman has joined the channel [06:41] matjas has joined the channel [06:47] whyme has joined the channel [06:47] ryah: ACTION has been playing around with the ssl [06:47] ryah: found some bugs [06:47] comster: mjr_, thanks for the tip actually I think it was being "unreliable" for some of my requests. frustrating to troubleshoot. is this inherent of the crypto library? [06:48] comster: let me know if I can help [06:48] indutny: ryah: what about my commit? [06:48] ryah: indutny: oh right. [06:48] Dreamer3 has joined the channel [06:48] indutny: ryah: it's not for current changes [06:48] indutny: but may be for next release [06:48] indutny: because it could break compability [06:51] indutny: ryah: brb, had to go for 30 minutes [06:53] fangel has joined the channel [06:56] liar has joined the channel [06:59] Athox has joined the channel [06:59] nooder has joined the channel [07:00] nooder: hello. i have problem in converting binary to hex? anyone done this before? [07:01] mjr_: nooder: what problem are you having? [07:02] mjr_: ryah: so do you think https is usable for occasional small responses? [07:02] nooder: i have buffer with binary hex data. its an sha1 hash. and want make it back [07:02] nooder: but buffer.toString doesnt work and bin2hex functions from internet also [07:03] saikat has joined the channel [07:03] micheil: buffer.toString("ascii") [07:04] mjr_: Do you want each byte in hex then? [07:04] micheil: although, that sha, if from crypto will be able to be changed into hex [07:05] nooder: ascii, utf, binary gives same noting [07:05] dohtem has joined the channel [07:05] dohtem has joined the channel [07:05] nooder: example is here http://groups.google.com/group/nodejs/browse_thread/thread/f9a9ebcb04ba08d3# [07:05] micheil: http://nodejs.org/docs/v0.3.1/api/crypto.html [07:06] masahiroh has joined the channel [07:06] bpot has joined the channel [07:07] nooder: i checked this, but crypto.createDecipher(algorithm, key) [07:07] nooder: what is algorythm and key? i'm not chifing it [07:08] micheil: can you just send the non-binary form? [07:08] slickplaid has joined the channel [07:09] nooder: its impossible. program collects torrent client data [07:09] nooder: that is just the way they send info [07:10] nooder: in php bin2hex works perfectly. but i cant find answer for js [07:13] micheil: hmm.. [07:13] tilgovi_ has joined the channel [07:14] ryah: indutny: remind me about the patch again tomorrow [07:15] micheil: nooder: did you try: http://phpjs.org/functions/bin2hex:361 ? [07:15] jetienne has joined the channel [07:16] micheil: minds you, that code's kinda crap. [07:16] nooder: yes, it doing something wrong [07:16] micheil: hmm.. [07:16] mscdex: hmmm, terminal repl needs some more work [07:16] nooder: sec [07:16] mscdex: inserting in the middle of a line that overflows to the next line causes some odd behavior [07:17] nooder: thats the buffer for ex [07:17] nooder: phpjs function convirts each byte, thats wrong [07:19] micheil: yeah [07:21] nooder: so the main question - is buffer right? its length 36, after conversion must be 40 [07:23] nooder: php -r "echo strlen(urldecode('%d3%f2Ug%1f6v%24%5e%98%cb%0d%ac%a2%2f%9d%eb%da2%e6'));" this returns 20 [07:25] nooder: php -r "echo bin2hex(urldecode('%d3%f2Ug%1f6v%24%5e%98%cb%0d%ac%a2%2f%9d%eb%d8%a2%e6'));" returns d3f255671f3676245e98cb0daca22f9debd8a2e6 [07:25] nooder: which is right [07:26] mikeal1 has joined the channel [07:26] ryah: howdo you tell if a variable is a regexp? [07:27] ryah: how do you test its type [07:27] micheil: instanceof [07:27] mape: check if it has .exec? [07:27] micheil: v8: /test/ instanceof regexp [07:27] v8bot: micheil: ReferenceError: regexp is not defined [07:27] micheil: v8: /test/ instanceof regex [07:27] v8bot: micheil: ReferenceError: regex is not defined [07:27] micheil: v8: /test/ instanceof Regex [07:27] inimino: RegExp [07:27] v8bot: micheil: ReferenceError: Regex is not defined [07:27] murz has joined the channel [07:27] micheil: v8: /test/ instanceof RegExp [07:27] v8bot: micheil: true [07:27] micheil: there. [07:27] jetienne: :) [07:27] sveisvei has joined the channel [07:27] mape: v8: /test/.exec [07:27] v8bot: mape: function exec() { [native code] } [07:28] micheil: nooder: you can always do a process.spawn() and stub out to php [07:28] micheil: erm [07:29] sriley has joined the channel [07:29] micheil: http://nodejs.org/docs/v0.2.5/api.html#child_process-exec-96 [07:30] nooder: i know about it but program will be under real high load so its not acceptible [07:30] micheil: nooder: it looks like php is doing something odd.. [07:31] Blink7 has joined the channel [07:31] nooder: thats bad :( [07:33] nooder: i just cant understand - is info in buffer right? if it is, may be i can write c extension [07:36] jetienne has joined the channel [07:39] muhqu has joined the channel [07:39] micheil: nooder: http://svn.php.net/repository/php/php-src/trunk/ext/standard/string.c [07:39] micheil: search for {{{ php_bin2hex [07:39] virtuo has joined the channel [07:39] DoNaLd`: people, how can i set correctly io.socket on client site when is server side running on HTTPS (SSL layer) ? .. my setting socket = new io.Socket('localhost'); not working .. [07:40] micheil: nooder: so, given that, it should be replicatable [07:40] ph^ has joined the channel [07:41] siculars has joined the channel [07:42] sivy has joined the channel [07:44] Fullmoon has joined the channel [07:45] springify has joined the channel [07:46] ivanfi has joined the channel [07:48] rkieffer has joined the channel [07:55] ryah: i almost want to merge the writev now... [07:55] indutny: wow [07:55] indutny: good news everyone [07:55] indutny: ! [07:56] indutny: :) [07:56] micheil: "%d3%f2Ug%1f6v%24%5e%98%cb%0d%ac%a2%2f%9d%eb%d8%a2%e6".replace("%", "") [07:56] ryah: i think it should be kind of good [07:56] indutny: ACTION has opened nodejs repo and pressing F5 [07:56] micheil: v8: "%d3%f2Ug%1f6v%24%5e%98%cb%0d%ac%a2%2f%9d%eb%d8%a2%e6".replace("%", "") [07:56] v8bot: micheil: "d3%f2Ug%1f6v%24%5e%98%cb%0d%ac%a2%2f%9d%eb%d8%a2%e6" [07:56] indutny: v8: "%d3%f2Ug%1f6v%24%5e%98%cb%0d%ac%a2%2f%9d%eb%d8%a2%e6".replace(/%/g, "") [07:56] v8bot: indutny: "d3f2Ug1f6v245e98cb0daca22f9debd8a2e6" [07:56] micheil: yeah [07:57] nooder: d3f255671f3676245e98cb0daca22f9debd8a2e6 [07:57] nooder: must be that [07:57] SubStack: v8: unescape('%d3%f2Ug%1f6v%24%5e%98%cb%0d%ac%a2%2f%9d%eb%d8%a2%e6') [07:57] murz has joined the channel [07:57] indutny: v8: unescape.toString() [07:57] v8bot: indutny: "function unescape() { [native code] }" [07:57] indutny: v8: unescape('%d3%f2Ug%1f6v%24%5e%98%cb%0d%ac%a2%2f%9d%eb%d8%a2%e6') [07:57] indutny: hm... :) [07:58] nooder: thats querystring.unescape [07:58] indutny: v8: unescape('123') [07:58] v8bot: indutny: "123" [07:58] indutny: problem is not in escape function [07:58] micheil: v8: decodeURIComponent('%d3%f2Ug%1f6v%24%5e%98%cb%0d%ac%a2%2f%9d%eb%d8%a2%e6'); [07:58] v8bot: micheil: URIError: URI malformed [07:58] indutny: "\0\1" [07:58] indutny: v8: "\0\1" [07:58] v8bot: indutny: " [07:58] micheil: v8: decodeURIComponent('%d3%f2Ug%1f6v%24%5e%98%cb%0d%ac%a2%2f%9d%eb%d8%a2%e6'.replace(/%/g, "")); [07:58] v8bot: micheil: "d3f2Ug1f6v245e98cb0daca22f9debd8a2e6" [07:59] virtuo has joined the channel [08:00] micheil: nooder: I dunno, it is possible, I just cbf. to work it out right now [08:00] indutny: v8: "\r\n" [08:00] v8bot: indutny: "\r\n" [08:01] mraleph has joined the channel [08:01] MikhX has joined the channel [08:05] mAritz has joined the channel [08:08] superjudge has joined the channel [08:13] kjeldahl has joined the channel [08:15] micheil: ACTION goes back to work [08:15] EyePulp has joined the channel [08:15] indutny: ACTION wishes him a good luck with it [08:16] indutny: ACTION wonder: "why are writing it here?" [08:17] mikedeboer has joined the channel [08:21] mbrochh has joined the channel [08:24] dgathright has joined the channel [08:24] DoNaLd`: plz. people help me .. there missing description in documentation of socket.io about my issue, how can i set correctly io.socket on client site when is server side running on HTTPS (SSL layer) ? .. my setting: socket = new io.Socket('localhost'); not working .. [08:24] simme has joined the channel [08:28] mytrile has joined the channel [08:28] foertel has joined the channel [08:29] foertel: mornin' [08:33] derren13 has joined the channel [08:33] delapouite has joined the channel [08:34] micheil: hmm.. [08:34] micheil: what was that thing to set the command line flags? [08:34] indutny: optimist [08:34] indutny: ? [08:34] micheil: export [08:35] micheil: `export VAR=vlaue` [08:35] indutny: aa [08:35] indutny: dunno [08:35] SamuraiJack has joined the channel [08:35] [AD]Turbo has joined the channel [08:35] micheil: no, that was it. [08:36] mAritz: or on windows SET [08:36] mAritz: :( [08:36] [AD]Turbo: hi there [08:36] indutny: hi [08:38] micheil: mAritz: I'm hardly going to deploy to windows.. [08:38] mAritz: micheil: good :D [08:38] micheil: infact, this is pure ec2/ubuntu that it needs to run on [08:40] Druid_ has joined the channel [08:42] adambeynon has joined the channel [08:42] dgathright has joined the channel [08:43] tisba has joined the channel [08:45] ajcates_ has joined the channel [08:45] markwubben has joined the channel [08:46] plusgut_ has joined the channel [08:47] plusgut_: hi, just a short question is their a possibility to donate to node.js? [08:48] indutny: address this question here [08:48] indutny: ry@tinyclouds.org [08:49] plusgut_: allright, thanks [08:54] SubStack: you can donate to me instead [08:54] SubStack: cash money in an unmarked envelope [08:54] indutny: gotcha! [08:54] indutny: SubStack: I'd knew that it will happen! [08:55] jetienne: hmm socket.io is going mad [08:57] plusgut_: SubStack: if you build something that i use for work, than i will surely donate something [08:57] plusgut_: ryan did so, so i will donate [08:58] tilgovi__ has joined the channel [08:59] sveisvei has joined the channel [08:59] micheil: SubStack: if the envelope is unmarked, how do we address it? [08:59] indutny: just leave it on the train station [08:59] micheil: lol [08:59] indutny: at the 3.30 pm [08:59] indutny: :) [09:00] micheil: in a bin? [09:00] indutny: in the hollow of a tree [09:00] indutny: :D [09:00] micheil: you'd probably get arrested for like terrorism or something. [09:00] indutny: ACTION looks suspicious [09:00] micheil: XD [09:00] indutny: haha [09:00] micheil: bbl./ [09:00] indutny: ok [09:01] nolan_d has joined the channel [09:01] springify has joined the channel [09:02] jetienne: ok master on socket.io is really bleedy :) v0.6.2 seems to work [09:02] margle has joined the channel [09:03] hellp has joined the channel [09:03] SubStack: trying to look up how the villain in speed did it [09:03] altamic has joined the channel [09:03] SubStack: I think it was a mailbox [09:03] mscdex: weee... reworking the irc client example [09:04] mscdex: making it more complex :> [09:05] fangel: I wonder if you could do something like CSP for Node.js - that could be kinda interesting :) [09:08] ntelford has joined the channel [09:10] Locke23rus has joined the channel [09:11] dgathright has joined the channel [09:14] InsDel has joined the channel [09:17] nooder1 has joined the channel [09:17] derren13 has joined the channel [09:18] faust45 has joined the channel [09:19] steph2 has joined the channel [09:21] sriley has joined the channel [09:22] sh1mmer has joined the channel [09:22] whyme has left the channel [09:23] arlolra has joined the channel [09:24] rnewson has joined the channel [09:24] rnewson has left the channel [09:26] nsolsen has joined the channel [09:27] TomY has joined the channel [09:30] indutny: deep night in NY [09:31] foertel: nearly lunch in D [09:31] indutny: 15:32 in russia [09:31] indutny: :) [09:31] foertel: oh, they are GMT+2:01 [09:31] foertel: *g* [09:32] foertel: thinking about implementing redis scaffolding as RESTful API with express ;-) [09:32] foertel: don't really need it … [09:34] mscdex: neato, HP is now selling the unlocked node.js-powered Pre 2 for $450! [09:34] mscdex: :D [09:35] jimt has joined the channel [09:35] indutny: wow [09:36] SubStack: foertel: that sounds horrible [09:36] foertel: *g* [09:36] foertel: why? [09:36] SubStack: scaffolding [09:36] SubStack: it's code generation [09:36] foertel: somehow everything in me pulls against buying a phone running adobe flash [09:37] mscdex: but flash allows you to do websockets emulation [09:37] mscdex: :p [09:37] foertel: wanna trade your soul for websockts? [09:37] foertel: *g* [09:37] foertel: ah … right scaffolding is the wrong term ;) [09:37] SvenDowideit has joined the channel [09:37] mscdex: most people have traded their soul already elsewhere on the internets ;-) [09:37] danslo has joined the channel [09:38] SubStack: foertel: the term isn't what I am objecting to, it's the process itself [09:38] foertel: yah … i didn't meen code generation either ;) [09:39] T-Co: Checking for node path : not found [09:39] foertel: but just dynmic handling of database records through RESTful api [09:39] SubStack: how is scaffolding different from code generation? [09:39] SubStack: ah [09:39] T-Co: Is this environment variable I need to set? [09:39] T-Co: I installed node from git as root [09:39] foertel: men … I didn't mean neither scaffolding nor code generation *g* that's why I used the wrong term [09:39] foertel: it's not scaffolding nor ORM, but … [09:39] T-Co: (trying to waf node-base64) [09:40] SubStack: seems basically like what couch is [09:41] foertel: couch provides it's own restful api, yeah [09:41] foertel: but redis doesn't ;) it's text-based only [09:41] foertel: but you could easily map RESTful requests do redis commands [09:41] foertel: building a simple web-interface to your redis (what it does not provide itself) [09:42] mickal has joined the channel [09:42] mickal: guys .. what are you missing in node world? [09:43] SubStack: mickal: easy oauth+openid [09:43] SubStack: I don't like REST very much [09:43] mickal: SubStack: okay .. i thought there was oauth for node [09:44] SubStack: mickal: there is, but it isn't easy [09:44] mickal: SubStack: Soap? [09:44] guybrush: SubStack: have you tried connect-auth? [09:44] fangel: to be honest, he didn't say that oauth for node doesn't exist.. :) [09:44] mickal: oh [09:44] mickal: easy oauth =) [09:44] SubStack: guybrush: I've stared at it [09:44] SubStack: oh wait, that was something else [09:45] guybrush: SubStack: im pretty satisfied with connect-auth [09:45] SubStack: this looks pretty handy [09:45] guybrush: tbh i love connect-auth [09:45] Jonasbn_ has joined the channel [09:45] guybrush: it comes right after dnode on my list of fav node-modules :p [09:46] SubStack: connect-auth should really put some code in the readme [09:47] SubStack: beh these example files are hundereds of lines [09:47] mAritz: oh man... my new coworker is apparently a masochist. he doesn't like css3 and html5 and thinks it's stupid :( [09:47] Throlkim has joined the channel [09:47] SubStack: I like how html5 breaks REST [09:47] guybrush: i guess he likes cvs and xml? [09:47] jetienne: mAritz: what is he using instead ? [09:48] mAritz: example rounded corners: png background and static box sizes.... [09:48] SubStack: for a lot of applications streams make a lot more sense [09:48] jetienne: mAritz: well this is better for compatibility [09:48] guybrush: and ofc table-layout [09:49] mAritz: jetienne: yeah, but it sucks. [09:49] jetienne: mAritz: fully agreed :) [09:49] mAritz: and you can just do rounded corners for modern browsers only and fuck everyone else. [09:50] mAritz: i'm not someone who fights management to the death on this, but as a personal preference, i'll always use css3 [09:50] SubStack: I usually don't bother with rounded corners anyways [09:55] SubStack: guybrush: do you know of any *consise* connect-auth examples? [09:55] mikew3c has joined the channel [09:55] SubStack: all of the ones I am finding are far too long [09:57] xla has joined the channel [09:57] SubStack: looks like it's just a matter of calling req.authenticate... why are all of these hundereds of lines? [09:57] ewdafa has joined the channel [09:58] markwubben has joined the channel [10:01] indutny: i'm developing a framework right now [10:02] teemow has joined the channel [10:02] indutny: auth will be very simple with it [10:07] Anti-X has joined the channel [10:08] xla has joined the channel [10:11] markwubben has joined the channel [10:16] Evet has joined the channel [10:17] nooder has joined the channel [10:17] tg has joined the channel [10:18] altamic has joined the channel [10:18] aubergine_ has joined the channel [10:20] guybrush: SubStack: i am currently using connect-auth f1a458 2010-08-25 (with a custom auth-strategie based on couchdb, besides oauth) [10:21] nooder2 has joined the channel [10:21] caolanm has joined the channel [10:21] guybrush: there have been some modifications, we had not have the time to look into it [10:22] Ori_P has joined the channel [10:23] guybrush: ill create a gist with minimal example [10:25] slaskis has joined the channel [10:25] muhqu has joined the channel [10:33] Ori_P_ has joined the channel [10:35] cefn has joined the channel [10:35] paulwe has joined the channel [10:36] cefn has left the channel [10:39] cefn has joined the channel [10:40] sechrist has joined the channel [10:40] Ori_P_ has joined the channel [10:41] zimbatm has joined the channel [10:45] rikarends has joined the channel [10:47] Ori_P_ has joined the channel [10:50] aliem has joined the channel [10:50] markwubben has joined the channel [10:55] rnewson has joined the channel [10:56] margle has joined the channel [10:57] aconran___ has joined the channel [10:57] sh1mmer has joined the channel [10:58] SubStack: guybrush: thanks! [10:59] MattJ has joined the channel [10:59] guybrush: glad i could help [11:00] Kami_: hi, does this looks ok https://gist.github.com/704482 ? [11:02] indutny: bbl [11:12] ctp_ has joined the channel [11:13] saschagehlich has joined the channel [11:14] Yuffster_work has joined the channel [11:16] afan has joined the channel [11:17] Ezku\ has joined the channel [11:20] d0k has joined the channel [11:20] rikarends has joined the channel [11:22] jspiros has joined the channel [11:23] aubergine has joined the channel [11:24] ctp_ has joined the channel [11:29] rnewson has left the channel [11:32] zorzar__away has joined the channel [11:39] rnewson has joined the channel [11:40] kkaefer: when I press ^C, what signal does it send? [11:40] kkaefer: SIGHUP? [11:41] kkaefer: hm, SIGINT apparently [11:44] rnewson has joined the channel [11:46] webr3: 900 cores http://aws.typepad.com/aws/2010/11/new-ec2-instance-type-the-cluster-gpu-instance.html for $2.10 an hour [11:50] iszak has joined the channel [11:51] christophsturm has joined the channel [11:51] boaz has joined the channel [11:54] herbySk has joined the channel [11:55] shreekavi has joined the channel [11:56] rauchg_ has joined the channel [11:58] unomi has joined the channel [11:59] Jonasbn_ has joined the channel [12:05] JojoBoss has joined the channel [12:09] mif86 has joined the channel [12:12] hsuh has joined the channel [12:14] saschagehlich has joined the channel [12:15] mif86 has joined the channel [12:15] mbrochh has joined the channel [12:16] mif86 has joined the channel [12:18] mif86 has joined the channel [12:19] shreekavi has joined the channel [12:21] jspiros has joined the channel [12:23] c4milo has joined the channel [12:29] unomi has joined the channel [12:31] achristianson has joined the channel [12:39] SamuraiJack has joined the channel [12:42] dnn has joined the channel [12:43] aheckmann has joined the channel [12:45] jvolkman has joined the channel [12:45] jvolkman has joined the channel [12:47] dnn has joined the channel [12:49] pagameba: hi - looking for some C++ help coding an extension - I want to add a property to an object that works like an array, can't quite grok the C++ syntax for this [12:49] Aikar: is it type name[size]; format? [12:50] mohiam has joined the channel [12:50] pagameba: yeah [12:50] pagameba: well [12:50] pagameba: I think so :) [12:50] pagameba: I have an object called Map that has a C++ representation wrapping an external library [12:50] pagameba: that works [12:50] Aikar: that would be a pure array not an object, cant use string properties, you will prolly need to do something special with v8 types [12:50] Aikar: is it an stl map? [12:51] pagameba: n [12:51] pagameba: no [12:51] pagameba: a geospatial map :) [12:51] pagameba: it has an array of layers [12:51] pagameba: I'd like to expose map.layers[i] syntax [12:51] Aikar: stl map would work like an object in js, but that would require v8 to be able to handle its type [12:51] pagameba: um [12:52] pagameba: what I'd like to do is have a property on my Map object called layers [12:52] mikew3c has joined the channel [12:52] Locke23rus_ has joined the channel [12:52] Aikar: look at defining the prototype in v8 [12:52] pagameba: and have that be an object which implements SetIndexedPropertyHandler [12:57] dberlinger|afk has joined the channel [13:01] rajeshsr has joined the channel [13:03] bahamas has joined the channel [13:04] afan1 has joined the channel [13:05] pagameba: holy smokes batman, it worked! [13:06] capndiesel has joined the channel [13:06] heavysixer has joined the channel [13:06] josefrichter_ has joined the channel [13:07] afan has joined the channel [13:07] christophsturm has joined the channel [13:08] rajeshsr has joined the channel [13:09] tisba has joined the channel [13:13] zomgbie has joined the channel [13:13] sclaflin has joined the channel [13:15] kriszyp_ has joined the channel [13:15] mikew3c has joined the channel [13:15] zemanel has joined the channel [13:17] unomi has joined the channel [13:23] Gruni has joined the channel [13:23] johngbrooks has joined the channel [13:33] rnewson has joined the channel [13:34] zemanel_ has joined the channel [13:36] arpegius has joined the channel [13:38] arpegius has joined the channel [13:38] davidc_ has joined the channel [13:39] mif86 has joined the channel [13:41] rikarends has left the channel [13:42] davidc_ has joined the channel [13:44] petercooper has joined the channel [13:45] jetienne has joined the channel [13:46] MattDiPasquale has joined the channel [13:49] splashs has joined the channel [13:49] nooder has joined the channel [13:52] pgriess has joined the channel [13:55] kaichen has joined the channel [13:58] ysynopsis has joined the channel [14:00] Ori_P has joined the channel [14:02] jamund has joined the channel [14:02] Booths has joined the channel [14:03] malkomalko has joined the channel [14:05] shreekavi has left the channel [14:06] nsolsen has joined the channel [14:07] stagas: how do I rm all but one file? [14:07] wattz: morning [14:08] cloudhead has joined the channel [14:08] jetienne: stagas: easiest = mv the file you want to kjeep, rm all, move back the file [14:09] aubergine has joined the channel [14:21] mbrochh has joined the channel [14:21] aconbere has joined the channel [14:25] trotter has joined the channel [14:28] m0rganic has joined the channel [14:29] gnrfan has joined the channel [14:29] malkomal_ has joined the channel [14:32] dnolen has joined the channel [14:33] springify has joined the channel [14:36] mklappstuhl has joined the channel [14:36] eee_c has joined the channel [14:37] mklappstuhl: hey [14:37] mklappstuhl: what would be the simplest way to watch all files in a directory and it's subdirectories for change? [14:37] bradleymeck has joined the channel [14:38] mklappstuhl: i know about fs.watchFile but there is no obvious way to do it recursive as i can see [14:39] sth: Get a listing of the fs and then [14:39] sth: do fs.watchFile for each one [14:40] [AD]Turbo: in socket.io is possible to broadcast a message, specifying an "except" list; is it possible to broadcast to a list of desired targets? or do i have to client.send for each desired target? [14:40] sonnym has joined the channel [14:40] derren13 has joined the channel [14:41] jetienne: [AD]Turbo: i would say the later [14:41] ben_alman has joined the channel [14:41] jetienne: [AD]Turbo: quite easy tho, socket.io keeps an internal list of current clients [14:43] quirkey has joined the channel [14:43] [AD]Turbo: ah ok, maybe I'll write to the author in order to suggest this addition ;) [14:43] jetienne: [AD]Turbo: nah it is too specific to a given case to be usefull to the mass [14:45] aurynn has joined the channel [14:45] ooooPsss has joined the channel [14:46] Ori_P_ has joined the channel [14:46] zemanel has joined the channel [14:47] virtuo_ has joined the channel [14:48] johngbrooks has joined the channel [14:48] ThePub has joined the channel [14:52] Ori_P_ has joined the channel [14:57] mklappstuhl: js q: how can i filter an array [14:57] mklappstuhl: e.g. remove all elements that doesnt fit to a given regex [14:58] fangel: hint: the Array-object has a method called "filter".. :) [14:59] ThePub has joined the channel [14:59] fangel: hint 2: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter [15:00] christophsturm: caolanm: where can i find docs for the nodeunit mocks? [15:00] chrischris has joined the channel [15:01] mklappstuhl: fangel: found the same.. i just thought there might be a way without writing an additional funtion ... anyway thank you :) [15:01] temp01 has joined the channel [15:02] fangel: well.. not without a anonymous function, no.. [15:02] fangel: but hey, you can never have too many functions in JS.. at least not if you're used to functional programming :) [15:04] jetienne: ok socket.io works on my android 2.1 [15:06] prettyrobots has joined the channel [15:07] caolanm: christophsturm: not sure I follow, nodeunit doesn't provide mock objects itself [15:08] pagameba has joined the channel [15:08] SvenDowideit has joined the channel [15:08] christophsturm: caolanm: ah ok. but it does support running with an external mock lib? is there a recommended lib for mocks? [15:08] christophsturm: was just confused because the docs mention mocks [15:09] caolanm: christophsturm: I've not tried it, but you might want to try out sinon.js, its written by cjohansen who's contributed nodeunit code before [15:09] christophsturm: thanks [15:10] caolanm: he's also author of 'Test Driven JavaScript Development', so is quite into this stuff ;) [15:12] zomgbie has joined the channel [15:13] jetienne: caolanm: is there good test layer which works in server and client ? [15:14] kevwil has joined the channel [15:14] ceej has joined the channel [15:17] mape: best way to take a screenshot of a website from cli? [15:17] mape: on debian [15:19] mape: khtml2png or python-webkit2png? [15:22] ajcates has joined the channel [15:24] matt_c has joined the channel [15:24] mklappstuhl has joined the channel [15:24] caolanm: jetienne: its a bit tricky to do both cleanly atm [15:24] jetienne: caolanm: why that ? [15:24] c4milo has left the channel [15:25] caolanm: there isn't much to stop me porting nodeunit the the client in terms of its code [15:25] jetienne: mape: not khtml it hardly read a webpage [15:25] caolanm: its just that you don't have a commonjs environment in the browser [15:25] mape: jetienne: webkit2png seems neat but cant get it to install [15:25] caolanm: so its almost-but-not-quite the same [15:25] jetienne: caolanm: if you want only require and all this is quite easy and several alternative already exist [15:26] caolanm: yeah, I realise that, but most people still aren't using requirejs or other libs like that [15:26] jetienne: mape: i know it is possible to do inside chrome via its extension system. maybe a kludge is possible there [15:26] caolanm: I've been thinking about writing a browser test runner to nodeunit recently though [15:27] jetienne: caolanm: i use brequire. much simpler https://github.com/weepy/brequire/blob/master/lib/brequire.js [15:27] caolanm: even then, the requiring of modules is quite tied to the filesystem for most tests [15:27] zemanel has joined the channel [15:27] caolanm: I think it depends what you want to do with the tests [15:28] caolanm: if you just want to run your current unit tests against different js engines, that's one thing [15:28] mape: jetienne: hmm yeah, would rather not install x though [15:28] hellp has joined the channel [15:28] jetienne: mape: understandable. no idea there [15:28] jetienne: then [15:28] caolanm: if you want to use a test framework to test browser ui code, that's another [15:28] jetienne: caolanm: i want to test stuff without learning about 10 frameworks [15:29] caolanm: I totally agree :) [15:29] jetienne: i like to share js code between client and server. i need to know the code is working ok [15:29] jetienne: maybe qunit is able to run in client [15:30] caolanm: qunit was developed to run in the browser [15:30] caolanm: so yes, that should work [15:30] jetienne: poorly written tho. clearly not done to be a standalone deployed project from the start [15:30] caolanm: not sure what state its nodejs support is in though [15:30] caolanm: jetienne: I agree [15:30] caolanm: nodeunit on the other hand... ;) [15:30] jetienne: caolanm: nah qunit is full of dom stuff to displayt the result [15:30] caolanm: jetienne: that's what I thought [15:30] jetienne: nodeunit got the same issue [15:31] jetienne: too limited to be used in a browser [15:31] jpld has joined the channel [15:31] jetienne: so i cant test my code [15:31] caolanm: true atm [15:31] christophsturm: can't you just run the same suite in nodeunit on the server and in qunit in the browser? [15:32] caolanm: not quite [15:33] jetienne: not that qunit got a nice API, but at least it is widely used and will surely be maintained [15:33] caolanm: I don't think it would take much work to brind nodeunit to the browser though [15:33] caolanm: we'd need to port node's assert module [15:33] caolanm: but that's doesn't look to be too difficult [15:34] caolanm: the only other issue is deciding how / if to handle commonjs modules [15:34] sth: Should events.EventEmitter.call(this); make my class inherit all of the EventEmitter's methods? [15:34] dberlinger has joined the channel [15:36] caolanm: jetienne: would you mind sharing some of the tests you'd like to run both in node and the browser? [15:36] caolanm: it might help me figure out a browser api [15:36] jetienne: caolanm: i wouldnt mind. i dunno if i got any. tho [15:36] jetienne: caolanm: the browser API must be the same as the server one [15:37] jetienne: caolanm: this is the whole point. maybe to recode a runner. one for the browser. one for the server. but all individual test should be the same [15:38] jetienne: caolanm: to be complete (aka not my own need, but likely good for the future of your stuff). you should allow to test dom stuff too [15:38] jetienne: caolanm: ultimatly the goal is to have the same API for server test and for browser test [15:38] jetienne: something clean, widely deployed, well maintained [15:39] jetienne: caolanm: maybe qunit on nodejs with a good packaging to make it easy to run [15:40] rnewson has left the channel [15:43] sth: n/m [15:43] dohtem has joined the channel [15:43] dohtem has joined the channel [15:43] femtoo has joined the channel [15:44] BillyBreen has joined the channel [15:44] caolanm: jetienne: ok, I think I've got some ideas that would work... I'll experiment and post on the mailinglist if I get anything working [15:44] jetienne: caolanm: cool. have fun :) [15:46] aheckmann has joined the channel [15:47] jakehow has joined the channel [15:51] christophsturm: anyone here ever used sinon? i wonder if i can stub constructor calls with it [15:51] heavysixer has joined the channel [15:55] ivanfi has left the channel [15:56] Anti-X has joined the channel [16:00] wdperson has joined the channel [16:03] bentruyman has joined the channel [16:04] c4milo has joined the channel [16:05] indutny has joined the channel [16:05] indutny: hey everyone! [16:05] indutny: ryah: are you here [16:05] indutny: ? [16:05] Heldroe has joined the channel [16:05] Evet: micheil: are you using kyoto cabinet in production? [16:05] indutny: you've asked me to remind you about something [16:05] elijah-mbp: it's still pretty early on the west coast where ryah is... [16:05] tj has joined the channel [16:07] Heldroe: Hi, is there a way to use multiple .js files in a server or I must make modules ? [16:07] bradleymeck: how would you suggest using multiple files otherwise [16:08] bradleymeck: use modules [16:09] caolanm: anyone here use junit xml output? [16:09] Aikar: Heldroe: you can export the files to globals like global.express = express = require('express'); [16:09] Aikar: then express would be avail everywhere [16:10] benburkert has joined the channel [16:11] rajeshsr has joined the channel [16:11] Heldroe: but is this the right way ? I want to makes classes but the module system isn't clear at all [16:12] christophsturm: https://gist.github.com/5caafe6f7b85e5f522da is it possible to mock the new mongo.DB call here? [16:12] tj: Heldroe: module.exports = function MyConstructor(){}; var MyConstructor = require('./myconstructor') [16:13] tj: Heldroe: if a module exports one main constructor, I often do var exports = module.exports = function MyConstructor(){}; and continue exporting other variables [16:13] tj: on the function [16:13] tj: so that you dont need to require('something').Something [16:13] bradleymeck: 1. JS doesnt have classes, it uses prototypal inheritance 2. You can include multiple classes in modules, there is no real convention (for pure commonjs beyond node you wont want to use module.exports ='s, and only use exports.x=). [16:13] boaz has joined the channel [16:14] ehaas has joined the channel [16:14] Heldroe: javascript is so hardcore [16:15] c4milo has left the channel [16:15] Heldroe: there is no classes in JS but I can include multiple classes in modules ? [16:15] cjm has joined the channel [16:15] bradleymeck: what ppl often call classes [16:16] tj: Heldroe: functon Foo(){}; new Foo; just acts as a constructor for a plain object as "this" [16:16] tekky has joined the channel [16:16] bradleymeck: i just include #1 since a lot of people try to include classical inheritance [16:16] tj: nothing crazy [16:17] derren13 has joined the channel [16:17] baoist has joined the channel [16:17] Heldroe: the abscence of real convention confuses me [16:17] bradleymeck: you get used to it, makes ppl document things which is nice [16:17] Aikar: holy shit, who's ready for space travel lol http://gizmodo.com/5692614/antimatter-trapped-for-the-first-time [16:18] zimbatm has joined the channel [16:19] tj: Heldroe: that is the convention lol its a prototypal language [16:19] tj: that unfortunately has "new" [16:19] tj: which I guess is confusing [16:19] tj: Aikar: haha I read that last night, crazy stuff [16:20] c4milo has joined the channel [16:20] bradleymeck: going to blow stuff up with that++ [16:20] mikew3c has joined the channel [16:21] BillyBreen1 has joined the channel [16:21] gf3 has joined the channel [16:21] skiz has joined the channel [16:21] kjeldahl has joined the channel [16:24] aconbere has joined the channel [16:24] mriley has joined the channel [16:24] BillyBreen has joined the channel [16:25] WRA has joined the channel [16:27] amerine has joined the channel [16:31] rajeshsr_ has joined the channel [16:32] ooooPsss_ has joined the channel [16:35] galaxywatcher has joined the channel [16:36] cjm: anyone here from ny? [16:38] ThePub1 has joined the channel [16:38] Heldroe: if I want to create multiple objects I have to call require multiple times ? [16:40] jherdman has joined the channel [16:41] plusgut has joined the channel [16:41] ooooPsss has joined the channel [16:41] rkieffer has joined the channel [16:43] aurynn has joined the channel [16:43] galaxywatcher has joined the channel [16:44] intacto has joined the channel [16:44] devinus_ has joined the channel [16:44] jamund has joined the channel [16:45] oal has joined the channel [16:45] Draggor1 has joined the channel [16:45] rkieffer: Question about http.createClient() - all the examples I see create a client for each request they create. Is that necessary? Or can a single Client instance be used to issue multiple requests? [16:47] davidascher has joined the channel [16:48] tanepiper: is the dev of this (https://github.com/evnm/dropbox-node) around at all? [16:48] EyePulp has joined the channel [16:51] mape: rkieffer: might want to look at https://github.com/mikeal/node-utils/tree/master/request/ [16:51] wdperson has joined the channel [16:52] JojoBoss has joined the channel [16:53] benburkert has joined the channel [16:55] robmason has joined the channel [16:56] ThePub has joined the channel [16:56] ooooPsss has joined the channel [16:57] Lorentz has joined the channel [16:57] BillyBreen has joined the channel [16:58] rkieffer: mape: nice code, but I don't think it answers my question. I ask because it seems like it might be worth avoiding the creation of a bunch of Client objects if a server may be getting 100s or 1000s of reqs/sec. Dunno... maybe it doesn't matter (?) [16:58] Blink7 has joined the channel [16:58] mape: rkieffer: Hmm yeah, that suggestion was more for ease of use, not performance. [16:59] stephank has joined the channel [16:59] delapouite has joined the channel [16:59] Yuffster has joined the channel [16:59] isaacs has joined the channel [16:59] Nohryb has joined the channel [16:59] alek_br has joined the channel [17:00] ircretary has joined the channel [17:02] chrisdickinson: hate to be a bother, but has anyone else seen this error: https://gist.github.com/d6677ead29a8b50853f4 ? it's on node 0.3.0 [17:02] mape: chrisdickinson: Using socket.io? [17:02] matjas has joined the channel [17:02] chrisdickinson: mape: yes [17:03] mape: Then yeah, seen it, also using socket.io [17:03] mape: Not sure if it has anything to do with it, but might [17:03] sveisvei has joined the channel [17:06] danslo has joined the channel [17:06] indutny has left the channel [17:07] deepthawtz has joined the channel [17:09] jacobolus has joined the channel [17:12] Viriix has joined the channel [17:14] Yuffster has joined the channel [17:15] noahcampbell has joined the channel [17:21] ThePub has joined the channel [17:22] skiz has joined the channel [17:23] gf3 has joined the channel [17:25] isaacs has joined the channel [17:25] isaacs: wow, this kernel panic bug is super obnoxious [17:26] bpot has joined the channel [17:27] c4milo has left the channel [17:27] mape: isaacs: obnoxious? Sounds like party, super party fun. [17:27] Booths: rkieffer: I have a server that reads xml data from other servers that push to it, and I needed a way to simulate data being pushed so I could troubleshoot things. When I did, I just created one client and multiple requests off that client. [17:28] Booths: Worked for me, but I wasn't doing hundreds, more like 10-15 [17:28] mookid8000 has joined the channel [17:28] isaacs: mape: so, i'm trying to refactor npm view so that it is more useful. but logging data to stdout and also logging to stderr makes darwin have a siezure [17:29] mape: Hmm, that sounds.. Like it has been battle tested.. [17:29] mape: Or at least should be [17:30] mape: isaacs: Is it when doing it at the same time it borks out? [17:30] mape: Or just close proximity? [17:30] isaacs: mape: not sure. [17:32] JimRoepcke has joined the channel [17:33] mape: isaacs: oh and useful in what way? :) [17:33] isaacs: mape: npm view npm contributors.email contributors.name <-- prints out all the contributors name and email for npm@latest [17:33] isaacs: mape: npm view socket.io@'< 0.5.0' repository <-- prints out the repository info for each matching version [17:34] mape: Oh k, any thoughts on not listing every single version? Only the latest might be good enough? [17:34] mape: Unless the match is "tight" [17:34] JojoBoss has joined the channel [17:34] stephank: isaacs: Sounds similar to something I read on the mailinglist. Or was that you? [17:34] dgathright has joined the channel [17:35] isaacs: mape: yeah, if you don't provide a version, i'm goingto use latest [17:35] mape: isaacs: Nice [17:35] isaacs: mape: but if you provide a specific version, i'll use that, or a tag, i'll use that, or a range [17:35] agnat has joined the channel [17:35] mape: Yeah [17:36] isaacs: but also, it'll be a new object that's a merge of the version and the top-level data, so you can do : npm view npm maintainers [17:36] isaacs: (which is essentially what `npm owner ls npm` does) [17:36] stephank: isaacs: here we go, ryan mentions seeing this before at the end: http://groups.google.com/group/nodejs-dev/browse_thread/thread/d1fc1d262d0db957/efaabb82d689c798 [17:36] jakehow has joined the channel [17:37] daniellindsley has joined the channel [17:38] isaacs: stephank: yeah, i'ts definitely the same thing [17:38] isaacs: i can get around it by piping to cat [17:38] isaacs: dont' know why that helps, but whatever [17:38] mape: Them damned apples [17:38] strmpnk_ has joined the channel [17:39] mape: isaacs: So getting joyent designers to poke at an index soon enough? [17:39] isaacs: mape: not sure what's up with that [17:39] isaacs: been busy with other stuff :) [17:40] sh1mmer has joined the channel [17:40] mape: Seems like the demand would be good enough to get some talent on it [17:40] mape: Time is always an issue :/ [17:41] ThePub has joined the channel [17:41] mape: isaacs: Btw what happened to that package.json rush? Fiddled out since most major thingys are already on npm? [17:42] isaacs: mape: yeah, everybody just started doing it. [17:42] sriley has left the channel [17:42] isaacs: when i see a cool project that doesn't have one, i still send them a pull req and a nudge. [17:42] mape: UglifyJS is like that [17:42] mape: someone put it on npm but it isn't being updated :( [17:43] mape: Somekinda collective update thing would be nice [17:43] mape: but I assume it is an pita to implement [17:43] richcollins has joined the channel [17:43] aubergine has joined the channel [17:44] isaacs: mape: yeah, so, we need more candy treats. [17:45] isaacs: evanmeagher is working on an auto-documenting thing if you have markdown docs in a doc folder. then on top of that, we can add jsdoc or docco support. [17:45] isaacs: and then it'd be like, "wanna update your docs? publish a new version." [17:45] Max-Might has joined the channel [17:45] isaacs: also, "want your project to get attention and look professional? document it." [17:45] mape: isaacs: I still think the most candy of all is a "download" count, but I think you dissliked that? [17:45] isaacs: too easy to game. [17:46] isaacs: i want people to have to work a little bit for greater satisfaction :) [17:46] mape: Yeah, now that you say it I remember.. But then again.. People are lazy [17:47] isaacs: i'm gonna eventually build a stats db that parallels the jsregistry database, and can have stuff like that. but i really want it to be like a score system, where you get points for docs, and for tests, and for being used by a lot of other high-ranking packages, and download count doesnt' count for much. [17:47] tj: isaacs: do we have a $ npm open some-mod ? [17:47] mape: And your candy only works for people who want it on npm anyway [17:47] isaacs: tj: no, what would that do? [17:47] mape: Doesn't draw people in [17:47] isaacs: mape: i think having a nice looking website built out of your package automatically would be a big draw. [17:47] isaacs: doing that is a pain [17:48] tj: isaacs: open the mod in $EDITOR, gem had it, but I think it only works on a few platforms [17:48] mape: isaacs: Isn't that github? [17:48] tj: but its handy if you find a bug [17:48] sprout has joined the channel [17:48] tj: you can quickly edit the module to see if your change will work etc [17:48] isaacs: oic. [17:48] tj: or if you are like wtf how is this working... you can quickly open it up [17:48] isaacs: yah, that's clever. [17:48] isaacs: rigt [17:48] skohorn has joined the channel [17:48] isaacs: and it could just be $EDITOR {root}/.npm/module/version/ [17:48] mape: isaacs: That is like saying isaacs friend finder makes a pretty page, that won't work if people are still using facebook, no? [17:49] tj: thats one of the reasons i dont like how node compiles the source, its nice to poke around when you want to try something quick [17:49] isaacs: mape: yeah, but this would be awesomer and more specific to published versions. [17:49] mape: isaacs: Like path? :P [17:50] isaacs: path? [17:50] mape: https://www.path.com/home.html [17:50] mape: Facebook but for real friends, more specific and more info photos.. [17:50] isaacs: oh, ok [17:50] mape: But yeah, still think it is hard to bring in people without "easy" fun benefits [17:51] isaacs: well, let's say you go to the express page, right? [17:51] isaacs: it depends on connect. [17:51] aurynn: I oddly only use Facebook for real friends [17:51] mape: I don't care [17:51] mape: I use express, not connect [17:51] isaacs: that's not clear which version of connect, or if you go to the connect page, if you're seeing the docs for the version of connect you're actually using. [17:51] isaacs: it's kind of painful. [17:51] isaacs: one of hte most common requests i get is to put the `npm help` docs online. pointing people to the github repo where the markdown lives, that's not satisfying. [17:51] isaacs: "oh, yeah, i guess it's there.. but i'd have to know that" [17:51] isaacs: everyone structures it a little differently. npm could smooth out that surface. [17:52] mape: isaacs: Still, I don't think that is fun (I know.....) [17:52] tj: it would be nice if we had more of a standard way to construct modules [17:52] tj: not that it would ever really happen haha [17:52] mape: ACTION throws some game theory at isaacs  [17:52] isaacs: tj: we do [17:53] mape: Heard that is hot nowadays [17:53] isaacs: tj: throw some code together, then describe it in a package.json file [17:53] tj: isaacs: haha yeah, but as far as structure goes [17:53] isaacs: better descriptions will get more features. [17:53] isaacs: tj: yeah, but who cares if the structure is the same, if you can describe it properly? [17:53] isaacs: making it consistent means we have to agree, and we can't do that. [17:53] isaacs: i mean, look at us, right now, not agreeing. [17:53] tj: haha ya [17:54] isaacs: and now you agree with me, so we're not even agreeing on that. [17:54] aconbere has joined the channel [17:54] sechrist has joined the channel [17:54] mape: isaacs: Bah, you are just making that up as you go :P [17:54] isaacs: ACTION just got caught in a strange loop. fuck. [17:54] mape: ACTION throws more kernel panic at isaacs  [17:54] mape: Be gone evil creature! [17:54] isaacs: lol [17:55] isaacs: nono, trust me. docs will be good. http://docs.npmjs.org/npm/install is way nicer than https://github.com/isaacs/npm/blob/master/doc/install.md [17:56] isaacs: even if it's roughly the same content. [17:56] rpflo has joined the channel [17:56] isaacs: way more explorable [17:56] mape: isaacs: So, when someone comes in here asking for a good canvas modules for node [17:56] mape: Isn't it more common people tell other people about things that worked? [17:57] mape: Rather then 10 months old code that is properly documented? [17:57] deadlyicon has joined the channel [17:57] isaacs: mape: depending on your use case, the 10 month old code might be more stable, and the documentation more useful than having to ask. [17:57] isaacs: documentation doesn't go to bed, it's not in a different time zone, it never has a grumpy day. [17:57] mape: isaacs: Would you say that is common case? [17:57] deadlyicon has left the channel [17:57] isaacs: well, duh, mape, of course it's the common case, because there is no normal way to get at the docs. [17:58] tj: version specific docs would be good IMO [17:58] isaacs: i mean, by that logic, flying cars are useless. [17:58] mape: I'd rather have crazy russian nginx then neat documented apache [17:58] isaacs: no one uses them. [17:58] tj: I find it tough even with express, people will use an older version and be like WTF why dont I have feature X [17:58] mape: I wouldn't use node if I wanted documentation [17:58] isaacs: mape: sure, and that'll still be there. [17:58] tj: mentioned on the site [17:58] mape: isaacs: The idea is to push people to the best, not the most documented. [17:59] mape: And I mean how can you measure documentation? [17:59] isaacs: tj: yeah, and what if you could do `npm local-doc express` and get the documentation for the locally installed version of express? [17:59] isaacs: how sweet would that e. [17:59] mape: If I throw 40k lines of lorem ipsum into the docs would I win? [17:59] isaacs: mape: it's not like i'm going to count lines and keep score like that. [17:59] tj: isaacs: yeah im sure people would like that [17:59] mape: isaacs: Then would it be voting? [18:00] isaacs: mape: but good docs will surface to the top, because then the "how to search for modules" would be "use this little google sitesearch box" [18:00] mape: isaacs: So site hits? [18:00] isaacs: mape: no. no voting. no score. organic survival of the fittest, just like in the real world. [18:00] mape: Like the google? [18:00] isaacs: before you can start worrying about what to measure, you have to have something to measure. [18:00] isaacs: and right now, all we have is nothing. [18:00] isaacs: download counts are dumb. [18:01] mape: Says you [18:01] isaacs: while true ; curl http://registry.npmjs.org/..... [18:01] mape: Regardless engagement is good [18:01] mape: Rather have people engaged for dumb things then not at all [18:01] isaacs: check out how cpan does this. [18:01] mape: isaacs: I would hope you could figure out how to block that :) [18:01] isaacs: it's brilliant, and has 15 years of good ideas behind it. [18:01] isaacs: mape: what if you replicate the registry? [18:01] sh1mmer has joined the channel [18:02] mape: isaacs: That is an separate issue [18:02] mape: Might be an issue, but still separate [18:02] isaacs: ACTION got a meeting, we can continue this later [18:02] tj: isaacs: http://rdoc.info/gems/commander/4.0.2/frames [18:02] tj: might be something to look into [18:02] tj: I dont mine how rdoc.info does it [18:02] mape: isaacs: Telling imdb they had to be able to replicate, might screw some things up ;) [18:03] isaacs: tj: yeah, rdoc is pretty awesome. i want something like that. [18:03] mape: Or at least keep separate state [18:03] tj: I always got mad waiting for docs when install gems tho [18:03] springmeyer has joined the channel [18:03] tj: so i disabled rdoc/ri [18:03] tj: but the remote stuff is fine [18:03] isaacs: we can do better [18:03] isaacs: we're node. [18:03] mape: isaacs: I'll be ready with some ,,,,, ;) take care [18:03] isaacs: node is better than ruby in every way [18:03] tj: pretty much [18:03] halfhalo: OR IT IS! [18:03] tj: i hate ruby now lol [18:03] tj: when i use it im like omg.. why did i do this for years [18:04] mape: So the meta programing thingys in ruby is shit nowadays? (I have no experience) [18:04] isaacs: no, it's great [18:04] isaacs: ruby is a great language [18:04] quirkey has joined the channel [18:04] mape: Just the framework? [18:05] isaacs: turns out that being frozen is better than being great. [18:05] isaacs: ok, afk [18:05] femtooo has joined the channel [18:05] PorterTech has left the channel [18:05] mape: glhf [18:05] nsolsen has joined the channel [18:05] tj: i dont think ruby is a great language [18:06] tj: its a clusterfuck of ideas [18:06] tj: i like simple, pure languages like IO [18:06] isaacs: ACTION likes fucking clusters, apparently [18:06] tj: erlang etc [18:06] mape: tj: And js is clean and pure as snow? :D [18:06] aurynn: No language survives first contact with the developer. [18:06] tj: nope lol [18:06] isaacs: dude, js is the biggest clusterfuck [18:06] tj: but more so than ruby IMO [18:06] mape: isaacs: Hey! you were afk, that isn't fair [18:06] zimbatm has joined the channel [18:06] tj: ruby's grammar is a prime example haha of how much of a clusterfuck it is [18:07] mape: tj: Isn't it more that you are able to do whatevs? [18:07] mape: Kinda like js? [18:07] tj: js has far fewer fules [18:07] tj: rules* [18:07] mape: So how is that better? [18:07] tj: its simple [18:08] mape: The basics are? Or just overall? [18:08] jetienne: tj: js is simple ? wow [18:08] tj: js / ruby is like c / c++ [18:08] tj: simple vs clusterfuck [18:08] tj: lol [18:08] softdrink has joined the channel [18:08] mape: tj: Advance cf vs Bacis cf? [18:08] jetienne: i like c++ :) [18:09] mape: basic... [18:09] mraleph has joined the channel [18:09] jetienne: all in all, the best pro of js is to BE. no need to be good or bad. it is usable [18:09] jetienne: all we all need to know it due to its presence in webbrowser anyway [18:10] jetienne: beside this, on a grammar pov, js is crap :) [18:10] mape: I'm still having issues cleaning up, I want to keep everything around for fast cache but that easily catches up and breaks things with a lot of load [18:10] tj: jetienne: have you looked at ruby's grammar? [18:10] tj: its insane lol [18:10] hamsterspider has joined the channel [18:10] mape: So I end up with timeouts on each object just to clean it up if it isn't used [18:10] jetienne: tj: yep the 0 == true is due to their weird grammar [18:11] tj: hand-coded js parser vs the ruby ebnf and ruby's is still far far far larger [18:11] mape: Guess I could move that out to the db but then it would end up being slow, and that is no fun [18:11] jetienne: tj: now look at the produced code, which one is the most readable by far ? [18:11] tj: jetienne: js IMO [18:12] jetienne: tj: tss [18:12] tj: ruby is to ambiguous [18:12] jetienne: tj: you are using coffescript no ? [18:12] robmason has joined the channel [18:12] tj: foo can be a method, a local, something further up the scope chain etc [18:12] tj: no [18:12] tj: never [18:12] tj: haha [18:12] jetienne: lucky you :) [18:12] jetienne: tj: well the this in js is weirdo too [18:13] jetienne: note: here im argueing for the sake of it. i will use js anyway. because i want to know one or two languages [18:13] mape: tj: so foo can't be whatever in js as well? global, string, number, regex whatevs? [18:14] jetienne: to memorize 6 or too much [18:14] jetienne: but clearly "js is clean" is not my opinion :) [18:14] drudge: i don't get the draw of coffeescript [18:14] tj: mape: for example in ruby "foo" could be a method on the instance, a local, a method, a getter, something further up, blah blah [18:14] mscdex: starbucks should sponsor coffeescript [18:14] tj: haha [18:15] afan1 has joined the channel [18:15] mape: tj: Well it isn't like js is strongly typed? [18:15] jetienne: typed array are coming tho [18:15] jetienne: i liked as3 better :) [18:15] tj: mape: no, but it is less ambiguous, this.foo() vs foo, foo() vs foo [18:15] bartt has joined the channel [18:15] tj: in ruby "foo" can be so many things lol its just annoying [18:16] mscdex: maybe that's why people name their variables names other than 'foo' ;-) [18:17] jetienne: not ffmpeg people :) [18:17] mscdex: this is madness! [18:17] Anti-X: i name mine stuff like andy, anna, britney, barry, etc [18:17] Anti-X: andy = 5 [18:17] jetienne: this is sparta [18:17] mscdex: this is sparta.js! [18:17] jetienne: :) [18:17] Anti-X: thisis.js [18:18] mscdex: i could see Jim coming out with something like that [18:18] mscdex: :p [18:19] jetienne: well i had fun with webpage remote control via smartphone today. a fun/easy effect. [18:19] pagameba: stephank: I've made some good progress on node-mapserver, thanks for all your help the other day [18:19] jetienne: you sync with qrcode + random number and bla [18:19] mape: Ok so... talking about JS.. Why doesn't Isildur just cut down the human inside of Mordor and toss th ring? [18:19] ctp_ has joined the channel [18:19] mape: And how much of a help/pita would twitter be in Middle Earth? [18:19] jetienne: twitter worths 3b, respect them [18:20] mape: Be Mauron would pay for twitter feed access [18:20] jetienne: tj: this is the end of any seriousness now ;) [18:20] mape: *bet [18:20] tj: jetienne: :D [18:20] mape: tj: So how much is left on the canvas thingy? :) [18:20] jetienne: and superfeedr told us that pubsubhubsub is not a license! [18:21] tj: mape: not tons, just pushing jpeg support right now [18:21] mape: % for coverage and what perf gains when taking the time to look at it? [18:21] mscdex: pubsubhubbub? [18:21] jetienne: mscdex: a way to change any rss into a real time feed [18:21] tj: mape: I havent profiled yet at all, would be good to know what the bottlenecks are, just working on more features still [18:21] mscdex: :S [18:22] jetienne: mscdex: misunderstood techno. quite powerfull tho. worth to look at it for 20m. just to get what is it [18:22] mscdex: isn't that polling though? [18:22] mape: tj: Hmm, k. Do you think it ends up being cairo taking the bashing rather then the api? [18:22] mape: Or have you tried running cairo "raw" on the same tasks? [18:22] jetienne: mscdex: nope, they push you on notification [18:22] vnguyen has joined the channel [18:22] mscdex: for any rss feed? [18:22] tj: mape: oh yeah for sure, aside from things like gaussian blur [18:23] jetienne: mscdex: in ultra short, you register/auth a server, and this server will get a POST when a modification is done on the rss [18:23] jetienne: mscdex: yes [18:23] tj: mape: and slow things like manipulating pixel components in js-land via ImageData [18:23] mape: tj: So yeah, awsome work, I can't get it to work through npm on debian :( [18:23] tj: but that will always be slow [18:23] tj: shit :( [18:23] mape: Not sure that is your fault, but yeah.. Might be good to know [18:24] norviller has joined the channel [18:24] tj: the install fails? or something crashes? [18:24] mape: tj: https://gist.github.com/f3fbac20b1555a7b44a8 [18:24] mscdex: hmmm i guess i'm missing something here.... what's the url for this? [18:24] mape: tj: seems like configuration [18:24] tj: mape: hmm can you cat the build log [18:25] mape: tj: Sure I can... (No I can't...) How would I go about? [18:25] mscdex: oh, pubsubhubbub is a protocol.... [18:26] tj: cat /usr/local/lib/node/.npm/canvas/0.1.0/package/build/config.log [18:26] mscdex: it requires the publisher to push [18:26] derferman has joined the channel [18:26] mscdex: i thought it was just plain rss feeds with nothing extra :> [18:26] mape: tj: https://gist.github.com/94d8f98b6963f394fe00 [18:26] prettyrobots has joined the channel [18:26] tj: mape: ah, you need pkg-config [18:27] mape: tj: I don't care [18:27] mape: (I kinda do.. :P) [18:27] tj: haha [18:27] mscdex: it seems like things could get unwieldy with a setup like that [18:27] mape: But yeah.. perhaps let people know? :D [18:27] mscdex: if subscribers never de-register? [18:27] tj: its annoying i know, i might end up shipping it with a bunch of deps [18:27] tj: but tough call [18:27] tj: alot will be optional, libjpeg etc [18:27] jetienne: mscdex: superfeedr and other services provide a gateway to put any rss into pubsubhubbub stream [18:28] mscdex: jetienne: right, but they must poll then [18:28] mape: tj: Good error messages might be good enough [18:28] jetienne: mscdex: they pool for you and notify you. they factorize the polling to do it once, in short [18:28] tj: mape: well its there, just npm does not display that log [18:28] jetienne: !s [18:28] jetienne: !s [18:28] aurynn has joined the channel [18:29] jetienne: mscdex: facebook graph api notification are close to pubsubhubbub but not quite [18:29] mape: tj: Huh? The preinstall is just a script? Surely you can print things no? [18:29] tj: mape: I guess, but its just the regular node-waf configure build [18:30] mape: tj: are you sure? I put wonky bash shitz into node-profile [18:30] tapwater has joined the channel [18:30] mape: bash surely isn't that hot but still.. it should be doable [18:31] mape: tj: And to get great adoption it should be easy [18:31] mape: I want to add it as an dep to connect-assetmanager-handlers but then it has to work [18:31] mape: scroll smooth as butter [18:31] tj: yeah, but unfortunately nothing compiled that requires deps will ever be easy really [18:31] mape: and all that [18:32] mape: *easy enough [18:32] mape: ;) [18:32] mape: But yeah, I totally get the pita [18:32] tj: but I would like to fiddle with shipping node-canvas with cairo 1.10 and pixman [18:32] tj: most people have libpng so i dont think i need to worry there [18:33] mape: tj: so shipping with binaries? [18:33] tj: even just the source would help [18:34] mape: well, just so you know, I would love you do to it. I fiddled a node.js project into work and having node-canvas would help a lot [18:35] aurynn has joined the channel [18:35] mape: Trick them from LAMP to node.js funnies [18:35] steph2 has joined the channel [18:35] Epeli has joined the channel [18:36] mape: The road is long (they are still hating on the DOM (as if it is JS)) but I think I might swing it [18:36] tj: haha good luck [18:37] afan has joined the channel [18:37] mape: Don't worry, I talk the talk.. :P And I more or less walk the walk. Just need purty things to show along the way [18:38] mape: But when moving a 10minute+ import for twitter users in PHP to a 12sec import in node people are happy [18:39] aurynn has joined the channel [18:39] mape: Btw, the twitter API is shit for certain things :( Cursors in list lists aren't good for parallel requests [18:39] aurynn has joined the channel [18:40] mape: Especially if you can't just ask for list count [18:40] confoocious has joined the channel [18:40] confoocious has joined the channel [18:41] tlrobinson has joined the channel [18:42] Aria has joined the channel [18:43] mape: tj: So what will be the next cool thing you are working with? Anything planned out? [18:43] bradleymeck has joined the channel [18:43] tj: mape: we have a few things, and I have a few personal things as well [18:43] tj: running low on time lol but hopefully I can get some of them done [18:43] mape: Mind sharing? or all private? ;) [18:44] bpot_ has joined the channel [18:44] superjudge has joined the channel [18:44] tj: i have a cms and some smaller projects [18:44] tj: ci server, misc stuff [18:44] sriley has joined the channel [18:44] mape: Drupal kinda deep shit or whatnot? [18:45] qFox has joined the channel [18:45] tj: nah, drupal killer perhaps some day haha [18:45] tj: node has far more potential than php ever could [18:45] dmcquay has joined the channel [18:45] tj: I had started my cms with ruby, but now I have to port it over [18:45] mape: Hehe, if you do a drupal killer, please put all the JS at the top and have me dig for 5h to create a form without wrapping everything in 20 divs [18:46] tj: haha [18:46] tj: lovely aint it [18:46] mape: tj: But dudez! The wrapping things in 20 divs fixes a bug in IE 5.5 displaying inputs with type="hidde" [18:47] mape: Totally want that kinda help [18:47] tj: the thing is too, with ndistro, I could have a cms deployable within seconds, with no deps [18:47] tj: no apache crap, no mysql [18:47] mape: So is mysql really that bad? [18:47] mape: Or just people shitting on it? [18:47] tj: i dislike it, I wouldnt call it bad I guess but I prefer just about everything else [18:48] mape: Guess all it needs is a wrapper [18:48] mape: At least people don't hate it as much as mongo around here :P [18:48] tj: i love mongo lol [18:48] tj: n redis [18:49] mape: But you need 200 boxes with replications and black magic to keep shit shit [18:49] tj: pff [18:50] mape: I kinda feed the same way.. But then again I have never been bit [18:50] mape: I'm looking at options at saving TONS of xy data [18:50] mape: Mongo seems nice.. [18:50] mape: Redis seems nicer but with more management [18:50] tj: redis might be good for something like that [18:51] mape: Yeah.. [18:51] tj: redis is great, and uber simple [18:51] mape: I'm just worrying about the perf when the data is larger then the RAM capacity [18:51] mape: Haven't really seen how it manages to keep things fresh/fast [18:51] tj: AFAIK all of it is in memory [18:52] tj: but dont quote me on that lol [18:52] mape: Well it moves stuff to disc [18:52] comster has joined the channel [18:52] mape: But then.. should I just keep stuff as JSON.. the key/value.. and then move it to redis/ [18:52] mape: and have a redis post for the key/value stuff [18:53] isaacs: mape: couch is actually really nice for storing stuff like that. [18:53] isaacs: it's not quite as fast as mongo, but it's also reliable at all. [18:53] softdrink has joined the channel [18:53] mape: isaacs: So why use couch over redis? [18:53] isaacs: if you care less about reliability, and are ok with losing some data points, then mongo is pretty nice. [18:53] tj: just do "set 1:2 foo" if you are doing x/y [18:53] tj: not sure what you are doing [18:53] gkatsev: isaacs: 'but it's also reliable at all.'? [18:53] MikhX has joined the channel [18:53] mape: Isn't couch a dumbed down version of mongo? (put of fire suit) [18:53] isaacs: gkatsev: couch actually flushes stuff to disk, and has an append-only data structure. [18:54] isaacs: mape: oh, no, couch is not dumbed down at all. it's a data store for growups. [18:54] tj: everyone forgets you can configure these things lol [18:54] gkatsev: isaacs: just saying that wasn't a complete phrase in english. :P [18:54] isaacs: gkatsev: it's a complete phrase. [18:54] mape: isaacs: So, why use couch over redis? (if my data fits into redis.. some way) [18:54] isaacs: the opposite of "not reliable at all" is "reliable at all" [18:55] mape: isaacs: So redis is memcache with a little sure linings? [18:55] aurynn has joined the channel [18:55] bradleymeck: mmm for quite a few of the IE twitter responses I cant find the tweet they are responding to [18:55] tj: mape: you can configure redis if you need data integrity [18:55] mape: I kinda thought redis was nice for persistance (security) [18:55] isaacs: mape: couch is optimized for keeping your data safe, and never ever losing it, and doing brilliantly intelligent replication. [18:55] mape: isaacs: Hmm k [18:56] isaacs: couch also has really nice map-reduce, and a very simple and easy http api [18:56] gkatsev: isaacs: ok, I guess. Just never seen that and sounded weird. [18:56] mape: Isn't http rather slow? [18:56] mape: Or is that just in the browser realm? [18:56] isaacs: mape: http to localhost is fast :) [18:56] isaacs: but you can put your whole app in couchdb, too [18:57] mape: isaacs: Not a lot of overhead? Rather then having a protocol optimized for that? [18:57] strixv has joined the channel [18:57] isaacs: the bottleneck is definitely not the http ;) [18:57] tj: mape: couch is lame like that lol you can expose anything over http, but they chose to start there [18:57] tj: which is weird [18:57] strixv: ExpressJS: the built-in sass compiler keeps generating empty css files for me. Anybody else experienced this? [18:57] gkatsev: and also with backbone.js, now you dont need any serverside code [18:57] tj: but meh [18:58] isaacs: i mean, the futon app is just an app written in couch with client-side js and html attachments [18:58] mape: Guess I'll have to look at it.. Not that the db is an issue, seems that socket.io kills the process before it is old enough [18:58] isaacs: mikeal pretty much writes all his websites as couchapps (but he's also a couchdb dev, so it makes sense) [18:58] ctp has joined the channel [18:58] mape: isaacs: but does it get any load? [18:58] isaacs: mape: futon? no, almost none. [18:58] isaacs: but couchapps can handle a lot of load [18:58] mape: My sites do fine.. But they don't get any load... [18:59] mikeal1: futon is an admin interface for couchdb [18:59] mape: Except nodejs.se which breaks all the time, but never throws any errors :( [18:59] mikeal1: there are couchapps that get a ton of load [18:59] bradleymeck: depends if you can get a hold of a binary parser that is faster than http parsing if http is slow or fast [18:59] mikeal1: that just isn't one of them [18:59] mikeal1: but you're somewhat limited [19:00] hamsterspider has left the channel [19:00] mikeal1: all the data you're ever going to need has to be in that db [19:00] mikeal1: so if you wanna talk to multiple data sources, you're going to need to write some node code :) [19:00] strixv: Is there a way to get express.compiler to log what it's doing, so I know why it's generating empty css files? [19:01] mape: strixv: are you using pure express? [19:01] mikeal1: http isn't slow [19:01] mikeal1: btw [19:01] strixv: mape: I'm not sure I follow. It's straight from github, no mods by me [19:01] tj: strixv: lets see your config, send a gist [19:01] tj: i gotta run for lunch tho [19:01] mape: strixv: k nm then [19:01] mikeal1: your transport protocol is almost never your bottleneck [19:02] benburkert has joined the channel [19:02] mAritz: random thought: are ther async Array.filter/map/sort functions? [19:02] Aria: Yeah, only with things like remote filesystems, where you can saturate your line, you have huge numbers of metadata requests, etc. [19:02] strixv: tj: https://gist.github.com/705435 [19:02] mape: mikeal1: k, guess the feeling for http req being slow is from me doing frontend work, but then again I have to work with cross country/peer point latency [19:02] Aria: And then only over 10gbE ;-) [19:02] mikeal1: yeah, nfs and redis are cases where the latency is a big deal [19:03] dgathright has joined the channel [19:03] bradleymeck: mAritz, async filter/map/sort would be rather hard to deal with [19:03] mikeal1: mape: usually the delay is in all the blocking calls :) [19:03] mikeal1: if you already have the http connection open it's not a problem [19:03] mAritz: bradleymeck: why? [19:03] mikeal1: keep-alive ftw [19:03] mape: mikeal1: not if you put it in one bloated call at the bottom ;) [19:03] mikeal1: also, a custom tcp protocol has the same slow start problem [19:05] bradleymeck: mAritz, other functions may be messing with partially sorted/filtered/mapped stuff if it is in place, and if it returns a reference the reference would be invalid until done, oh and if you want to make the sort async it would be a performance hit due to function calls vs done sync for most situations [19:06] InsDel has joined the channel [19:07] mAritz: oh well [19:07] mAritz: :D [19:07] tilgovi_ has joined the channel [19:09] erlnoob has joined the channel [19:09] matjas has joined the channel [19:09] ph^ has joined the channel [19:12] fangel has joined the channel [19:12] evanmeagher has joined the channel [19:12] isaacs: mikeal1: put another way, *http* is not the bottlenekc. the bottleneck is *tcp* [19:12] isaacs: (if the transport matters, which it often doesn't) [19:12] isaacs: and flushing to disk is way faster if your db is append-only [19:12] rbranson: hmm [19:13] rbranson: does V8 store everything internally as a double? [19:13] rbranson: everything = any number [19:13] isaacs: rbranson: not sure. i know that you can get the uint32 val out of it [19:13] bradleymeck: rbranson no [19:13] rbranson: yeah [19:13] rbranson: you can get int64_t out of it too [19:14] rbranson: but it doesn't seem to store numbers accurately > ~2^54 [19:14] rbranson: so I'm wondering at what point it switches from an integer representation to a floating point [19:14] bradleymeck: most things are stored as double precision floats, but you can look at v8::Integer to see some stuff is stored as a raw integer [19:15] rbranson: IsInt32/IsUInt32? [19:16] hassox has joined the channel [19:16] sechrist_ has joined the channel [19:17] bradleymeck: rbranson, not too much on those that i know about but i doubt they are referring to the memory storage type [19:17] evanmeagher: isaacs: loading npm more than once within the same script seems to fail, complaining about the registry url not being defined [19:19] mikeal1 has joined the channel [19:20] dguttman has joined the channel [19:20] FLYBYME has joined the channel [19:22] automatthew has joined the channel [19:22] AAA_awright: Anyone else using mysql-libmysqlclient? I'm getting "Error on query execution" after I've been connected for a day or more [19:24] rbranson: bradleymeck: I guess part of my false assumption is that it's actually using the C++ code to interact with numbers, when, in essence, those are just wrappers to allow C++ code to access the numbers in the V8 heap [19:24] richcollins has joined the channel [19:24] evanmeagher: tanepiper: thanks for filing the issue about dropbox-node [19:25] evanmeagher: glad to have people use so any bugs can be wrestled out :) [19:25] cjm has joined the channel [19:27] tj: strixv: might have to do with conditionalGet, not sure I dont use that one [19:29] teemow has joined the channel [19:30] mape: tj: better docs [19:30] tj: mape: ? [19:31] shockie has joined the channel [19:31] mape: Why use it? Why wouldn't I? Better docs might be useful :) [19:31] tj: I didnt write it [19:31] tj: I dont use any of the middleware that are extremely general [19:31] tj: like the cache one [19:31] mape: Why not? [19:31] tj: they are to greedy and apply to pretty much everything [19:32] tj: cache is useless [19:32] mape: Wouldn't that be general good know why? :) [19:32] tj: id rather take it out [19:32] mape: But you can't, no? [19:33] tj: conditionalGet should be ok though in the case he is using it [19:33] tj: I could [19:33] tj: there are a few more that could come out [19:33] jaw6 has joined the channel [19:38] tanepiper: grrrrr [19:38] tanepiper: ACTION shakes fist at OAuth [19:38] rbranson: aheckmann: ping [19:38] aheckmann: yo [19:38] rbranson: so node-gmp [19:38] rbranson: is the abort() that gmp is causing totally unrecoverable? [19:39] aheckmann: well [19:39] aheckmann: i'm not the c++ expert but [19:39] aheckmann: it tears down node with it [19:39] aheckmann: what ive seen [19:39] bradleymeck: tanepiper, blame the glitchy implementations [19:39] aheckmann: is that you may be able to handle it on SIGINT but [19:39] aheckmann: that's not reliable apparently [19:39] rbranson: it looks like SIGABRT is what gets thrown [19:39] aheckmann: :( [19:39] aheckmann: ok can't remember [19:39] rbranson: bummer [19:39] aheckmann: yeah [19:39] aheckmann: node needs fast math like this [19:40] aheckmann: i mailed the gmp list [19:40] aheckmann: and they essentially said "tough" [19:40] aheckmann: haha [19:40] rbranson: wow [19:40] aheckmann: so i may look at bc or something [19:40] aheckmann: i dunno [19:40] rbranson: abort() is such a shitty way of handling it [19:40] aheckmann: yeah [19:40] rbranson: what causes the abort() ? [19:40] aheckmann: when they detect they'll run out of memory and something else i think [19:41] rbranson: ah [19:41] rbranson: so if you do like [19:41] tanepiper: bradleymeck: yea, it seems to be - i'm writing a Dropbox client, and I can go deep into folders [19:41] JimBastard has joined the channel [19:41] rbranson: (2 ^ 200) ^ (2 ^ 200) ^ (2 ^ 200) [19:41] tanepiper: but as soon as a folder has a space, it seems to cause an error in the OAuth request [19:41] rbranson: or something like that? [19:41] tanepiper: Invalid signature. Expected signature base string (helpful! not) [19:41] aheckmann: yeah i can get it to happen when I gmp(10000000).pow(10000000000000000) [19:41] aheckmann: haha [19:41] rbranson: heh [19:42] aheckmann: you'd think there is a good way to do this but [19:42] aheckmann: I'm not a c++ expert [19:42] aheckmann: in fact [19:42] aheckmann: i was using this project to learn [19:42] rbranson: ok [19:43] rbranson: i was curious, because node-ffi needs to be able to read/write 64-bit integers [19:43] rbranson: and V8 will fuck them up [19:43] aheckmann: i saw that v8 has been working on some internal bigint stuff [19:43] aheckmann: but [19:43] bnoordhuis has joined the channel [19:43] aheckmann: it's not going to be "real" support [19:44] rbranson: ah [19:44] aheckmann: i think its jsut handling str to decimal or something [19:45] rbranson: I might just use strings [19:45] podman has joined the channel [19:45] podman has left the channel [19:45] monokrome: FFI looks awesome [19:45] aheckmann: i had a benchmark in there [19:45] quirkey has joined the channel [19:45] aheckmann: that used the bigint lib from google [19:45] rbranson: the JS one? [19:45] aheckmann: i think from GWT [19:45] aheckmann: yeah [19:45] aheckmann: haha [19:45] aheckmann: that thing is soooo slow [19:45] rbranson: heh [19:45] rbranson: I don't need to manipulate the integers though, just move them around intact [19:45] aheckmann: ah [19:46] rbranson: there are types like "size_t" which are 64-bit on 64-bit systems [19:46] pagameba has joined the channel [19:46] rbranson: same with offset_t [19:46] alek_br_ has joined the channel [19:46] rleeds has joined the channel [19:46] rbranson: those are usually memory locations or file positions [19:46] aheckmann: strings sounds like it would work [19:46] rbranson: so it's fairly crucial they stay intact :D [19:46] mraleph has joined the channel [19:46] aheckmann: ha [19:47] ph^ has joined the channel [19:48] gnrfan has joined the channel [19:49] tlrobinson has joined the channel [19:53] dgathright_ has joined the channel [19:54] robmason has joined the channel [19:56] ph^ has joined the channel [19:57] Astro: mail from joyent... [19:58] rwaldron has joined the channel [19:58] Astro: what will they do to hobbyists using their beta, the people who would never pay for hosting? ;) [19:59] konobi: wild guess [20:00] Astro: what's your wild guess? [20:00] admc has joined the channel [20:00] konobi: Astro: you tell me... I'm the joyent guy =0) [20:01] Astro: host non-profit sites for free, just like github :) [20:01] hassox has joined the channel [20:02] justin__ has joined the channel [20:02] tj: +1 :) [20:02] Astro: konobi: now that you're listening, I've got a technical question... [20:02] tj: then I can put my CI stuff up there [20:03] pedrobelo has joined the channel [20:03] Astro: my node app is running for a month now and has mapped 264GB of VIRT [20:03] konobi: Astro: you have a non-profit 501(c)(3) status? [20:03] Astro: I'm an individual [20:04] konobi: Astro: sounds like you've got a leak somwhere =0) [20:04] konobi: though RSS is the more important number [20:05] Astro: yeah; how do I leak VIRT` [20:05] Astro: ? [20:05] sclaflin has joined the channel [20:05] Astro: for RSS I know where to look [20:06] bmizerany has joined the channel [20:06] konobi: ryah: did you ever work out what was going on with the RSS vs VIRT sizing stuff? [20:06] ph^ has joined the channel [20:06] nsolsen has joined the channel [20:07] hunter_loftis: Anybody know why sass-js uses :weird syntax instead of normal: syntax? [20:07] pagameba has joined the channel [20:07] bnoordhuis: hunter_loftis: it's ruby symbol syntax [20:08] tj: hunter_loftis: because it is really old [20:08] bnoordhuis: Astro: are you mapping large files into memory? [20:08] bnoordhuis: and not unmapping them? [20:08] hunter_loftis: bnoordhuis: tj: ok thanks. Just curious, I was trying to figure out why my sass wasn't compiling properly. [20:09] tj: hunter_loftis: and when implementing a small version it is easier to disambiguate between say :color val, vs color: val and foo:nth-child [20:09] Astro: bnoordhuis: nope [20:09] tj: hunter_loftis: but yeah I basically abandoned it because sass is flawed from the get go [20:09] tj: less is better [20:09] tj: and often just plain css is better lol [20:10] hunter_loftis: tj: I've taken a liking to jade, which is why today I decided to try sass, since it looked like jade:html = sass:css [20:10] bnoordhuis: Astro: what does your app do? [20:10] hunter_loftis: tj: Why do you say sass is flawed? I've already built most of the css in css, so this is a good time for me to decide not to use sass [20:10] tj: hunter_loftis: for sure, sass is fine if you dont need to use some of the fancy css syntax for key frames etc [20:10] mjr_ has joined the channel [20:11] Astro: bnoordhuis: http only [20:11] tj: hunter_loftis: it makes some things in css awkward to write [20:11] Astro: a bit of socket.io though [20:11] Astro: bnoordhuis: http://noatta.ch/ [20:11] rcy has joined the channel [20:11] hunter_loftis: tj: Does less not have those issues? [20:11] danslo has joined the channel [20:11] tj: hunter_loftis: not really no, less just adds on css [20:12] bnoordhuis: Astro: i suspect my file mapping suggestion wasn't that far off [20:12] tj: supporting nesting etc [20:12] tj: but it is not pythonic [20:12] murz has joined the channel [20:12] Astro: bnoordhuis: socket.io related? [20:12] hunter_loftis: tj: right, looking at the docs now. thanks for the feedback [20:12] bnoordhuis: Astro: no, this is probably about resources local to the servers [20:12] tj: hunter_loftis: np [20:12] bnoordhuis: *server (singular) [20:13] bnoordhuis: do you have some kind of open files counter in your app? [20:13] tj: hunter_loftis: I wrote sass, so take my advice :p haha, use regular css or less [20:13] tj: UNLESS you only plan on doing regular simple css [20:13] tj: and like the indentation stuff [20:13] bnoordhuis: and how do you store those files anyway? [20:13] Astro: bnoordhuis: lsof? [20:13] hunter_loftis: tj: did you write sass, or the sass compiler for node? [20:13] technoweenie has joined the channel [20:13] bnoordhuis: Astro: lsof would be a good start [20:13] Astro: yeah... what's the Sun equivalent? [20:13] tj: hunter_loftis: yeah, ive heard of it flaking out some times, no clue why though because both work fine for me [20:13] tj: and have since day one [20:14] hunter_loftis: tj: you use jade, right? Or should I stick with html? ;) [20:14] tj: hunter_loftis: jade [20:14] tj: or ejs is fine too [20:14] tj: but lots of visual clutter [20:14] bnoordhuis: Astro: solaris has lsof too [20:14] bnoordhuis: but you might need to install it first [20:15] konobi: `pkgin search lsof` [20:15] elijah-mbp: have to install - not stock available. ;) [20:15] Astro: [node@astro ~]$ pkgin install lsof [20:15] bnoordhuis: it's usually in /usr/local/bin [20:15] Astro: lsof is not available on the repository [20:15] hunter_loftis: tj: I've been digging the shorthand of jade, although I would love more feedback when stuff is parsed incorrectly. [20:15] hunter_loftis: tj: I often get things just not rendering if I have a blank first line or something [20:15] tj: hunter_loftis: hmm.. odd [20:15] tj: sometimes its hard for me to catch those sort of things [20:15] ph^ has joined the channel [20:15] tj: since everyone writes a bit differently [20:15] tj: I never use spaces for example [20:15] hunter_loftis: tj: You use tabs? [20:15] tj: sorry blanks [20:15] tj: not spaces [20:15] tj: haha [20:16] tj: sorry [20:16] hunter_loftis: tj: right, gotcha [20:16] hunter_loftis: tj: Well generally it's been cool, and I can always add logging output if I need it [20:17] hunter_loftis: tj: I also noticed that serving up blank files doesn't seem to work in express. I had a blank .css file that would just keep the connection open. I've gotta be careful about blank anything! [20:17] mAritz has joined the channel [20:17] ph^ has joined the channel [20:17] konobi: you can also use 'pfiles' iirc [20:17] tj: hunter_loftis: haha yeah, i think connect still fucks up on that [20:18] bnoordhuis: Astro: you can also look at /proc/PID/fd/ [20:18] bnoordhuis: but you need to be root for that [20:18] technoweenie has joined the channel [20:19] T-Co: What would I want to use for decoding quoted-printable mime encoded email body? [20:19] T-Co: (using node-imap) [20:19] T-Co: I think that the module doesn't provide decoding... [20:19] hassox has joined the channel [20:20] rtomayko has joined the channel [20:20] Aria has joined the channel [20:20] Astro: bnoordhuis: woohoo, 1122 fds [20:20] bnoordhuis: T-Co: maybe mscdex knows [20:21] bnoordhuis: Astro: i think you've found the cause :) [20:21] Astro: and all seem to be sockets... [20:21] Astro: I wish this was linux ;) [20:21] bnoordhuis: all sockets though? [20:21] T-Co: ah [20:21] tanepiper: heh, that 13 line telnet client ryah wrote is is nice :) [20:22] T-Co: mscdex, How do I decode quoted-printable email body? Does node-imap provide any functionality to do this? [20:22] gkatsev: heh, that <140char echo server ryah tweeted is nice :P [20:22] automatthew has left the channel [20:23] Astro: netstat says they're all half-closed to my port 80 [20:25] cjm: Ayone here from NY? [20:25] danslo has joined the channel [20:26] jesusabdullah: cjm: The nodejitsu guys are based outta NY [20:26] MattDiPasquale has joined the channel [20:26] jesusabdullah: oh God coffee in my eye [20:26] aurynn: hey, is anyone hiring node hackers? [20:27] bnoordhuis: v8: "=40".replace(/=([A-Fa-f0-9]{2})/, function(dummy, match) { return String.fromCharCode(parseInt(match, 16)) } ) [20:27] v8bot: bnoordhuis: "@" [20:27] bnoordhuis: T-Co: like that? [20:27] cjm: thanks jesusabdullah, and lol [20:28] gkatsev: any Boston guys here? [20:28] arpegius has joined the channel [20:28] cjm: freelancing node.js consulting aurynn? [20:28] T-Co: bnoordhuis, Nice [20:28] aurynn: freelance or, preferably, a long-term gig [20:29] cjm: where are you located? [20:29] gkatsev: isn't palm hiring node peeps? [20:29] aurynn: Calgary, Canada [20:30] nooder has joined the channel [20:31] evanmeagher: aurynn: campfire labs seems to be hiring node contractors: http://www.campfirelabs.com/jobs/ [20:31] pagameba has joined the channel [20:31] evanmeagher: aurynn: dunno much about them, though [20:31] Kami_: hey guys, does this getpwuid function looks ok - https://gist.github.com/704482 ? [20:31] mif86 has joined the channel [20:31] EyePulp: aurynn: we might have use for some node hacking. Our dev lead is painfully slow at figuring node out. [20:31] cjm: can you link to some of your work aurynn? [20:32] aurynn: https://github.com/aurynn/postgres-js [20:32] Astro: uh, contractor positions :( [20:32] aurynn: I forked creationix's lib and added prepared queries [20:32] aurynn: and rewrote most of the buffering [20:32] norviller has joined the channel [20:33] tj: aurynn: I was from edmonton :D haha go canada [20:33] Tobsn has joined the channel [20:33] aurynn: :D [20:34] Astro: do you also have transaction support? [20:34] Astro: I've never seen a pattern for that in async software [20:34] bnoordhuis: Kami_: few things [20:35] bnoordhuis: you don't need the Local::New(Null()), just Null() is enough (it's a singleton) [20:35] aurynn: Astro, yes [20:35] aurynn: transactions are (mostly) working :) [20:35] tj: bnoordhuis: I think it complains if you dont, if you are talking about Local args[] initializer [20:36] derferman has joined the channel [20:36] atmos has joined the channel [20:36] Evet: http://pastebin.com/Hh9W4Xc0 [20:36] bnoordhuis: Kami_: it == gcc? [20:37] aurynn: EyePulp, who are you with? :) [20:37] tj: bnoordhuis: g++ complains for me if you dont initialize with Local::New [20:38] mraleph: bnoordhuis: Null() returns Handle, not Local [20:38] bnoordhuis: mraleph: right you are, sir [20:39] bnoordhuis: okay, that's thing crossed off [20:39] bnoordhuis: Kami_: one more thing: getpwuid_r() leaks memory with older versions of glibc [20:39] bnoordhuis: but you probably shouldn't let that stop you [20:40] nsolsen has joined the channel [20:40] EyePulp: aurynn: Small company south of Chicago - mirusresearch.com. We do a lot of django & postgres app development for the insurance industry. [20:41] aurynn: EyePulp, Incidentally, I'm also big into python and PG. [20:41] aurynn: :) [20:42] EyePulp: I see that =P [20:43] ryah: konobi: bug in prstat [20:43] programble has joined the channel [20:44] CIA-95: node: 03Ryan Dahl 07writev * r34a55f4 10/ lib/net.js : Add todo about test-pipe.js and throwing on resume() (+46 more commits...) - http://bit.ly/9ZtEjo [20:45] bnoordhuis: Kami_: one more one more thing: you malloc() in CallGetPwUid() but don't check for NULL [20:46] Nohryb has joined the channel [20:47] rpflo has joined the channel [20:49] splashs has joined the channel [20:53] devinus_ has joined the channel [20:54] ctp has joined the channel [20:54] sechrist has joined the channel [20:54] mscdex: T-Co: you're right, it doesn't do decoding. [20:55] davidvanleeuwen has joined the channel [20:55] gnuzoo has joined the channel [20:56] mr_daniel has joined the channel [20:58] ctp has joined the channel [21:00] Ezku\ has joined the channel [21:01] sprout has joined the channel [21:02] Throlkim has joined the channel [21:02] Kami_: bnoordhuis: ok, thanks. So if malloc fails, I can just set result to ENOMEM and return, and AfterCallGetPwUid will call the callback with the error, right? [21:02] gnuzoo has left the channel [21:03] davidc_ has joined the channel [21:04] automatthew has joined the channel [21:05] davidc_ has joined the channel [21:05] bnoordhuis: Kami_: yes, that's correct [21:06] cjm has joined the channel [21:06] skiz has joined the channel [21:09] softdrink has joined the channel [21:09] kjeldahl has joined the channel [21:10] tanepiper: i love people who fix bugs :D [21:11] faust45 has joined the channel [21:12] evanmeagher: tanepiper: is it working now? [21:14] kriszyp has joined the channel [21:14] c4milo has joined the channel [21:16] tanepiper: evanmeagher: yes :D [21:16] tanepiper: i awarded you +5 awesome points :) [21:17] sechrist has joined the channel [21:17] tanepiper: it's so spooky that I decided to implement dropbox support, and you just released that lib [21:19] _mythz has joined the channel [21:20] eee_c has joined the channel [21:21] zomgbie has joined the channel [21:22] evanmeagher: tanepiper: i'm glad it's getting some use :) [21:22] steffkes has joined the channel [21:22] steffkes: hey guys [21:22] malkomalko has joined the channel [21:23] aubergine has joined the channel [21:23] steffkes: really short, noobish question: after changing my javascript files .. i have to cancel my running node process and to start it again to see the changes? or is there sth .. more simple while developing the first app? [21:24] Astro: nothing more simpler than that, sorry [21:24] malkomalko: anyone use expresso? trying to use assert.response, but the data param doesn't seem to be working at all [21:24] malkomalko: req.body is coming back undefined [21:24] jesusabdullah: There are ways to have automatic code reloading, but it's not exactly simple [21:25] tj: malkomalko: I use it in like 6 projects [21:25] tj: and it works [21:25] jesusabdullah: Often not TOO hard either [21:25] malkomalko: hmmm [21:25] steffkes: hm .. well yes Astro perhaps simple is the wrong expression .. it's just a little bit annoying after every save *g but ty anyway [21:25] tj: make sure you set headers accordingly [21:25] steffkes: jesusabdullah, any hints where to read about that? [21:25] malkomalko: you have a good example to look at from one of your projects tests? [21:25] tj: malkomalko: view the express tests for references [21:25] malkomalko: perfect [21:25] malkomalko: brb, thanks [21:25] jesusabdullah: Hmm [21:25] steffkes: jesusabdullah, at least, will have a look at it, and decide afterwards :> [21:25] jesusabdullah: steffkes: Trying to remember [21:25] tj: connect was older so it didnt use assert.response [21:26] jesusabdullah: steffkes: I'll see what I'm watching on github [21:26] stagas: steffkes: you can use one of the utils that do auto restart on file change https://github.com/ry/node/wiki/modules search for restart or reload [21:26] bentruyman has joined the channel [21:26] ryah: [04:12|% 100|+ 314|- 6]: Done [21:26] ryah: ^-- writev [21:27] steffkes: https://github.com/isaacs/node-supervisor ^^ [21:27] steffkes: thx stagas, just found the supervisor via google .. will try :) [21:27] jesusabdullah: steffkes: I was thinking of https://github.com/kriszyp/nodules [21:28] jesusabdullah: but any of the supervisor scripts should work [21:29] bnoordhuis: ryah: if `node` is a symlink, then process.execPath is what the symlink points to - is this a bug or expected behaviour? [21:29] rkieffer has left the channel [21:30] rkieffer has joined the channel [21:31] benburkert has joined the channel [21:31] ryah: bnoordhuis: i guess it's os dependent [21:32] ryah: i don't know if that should be a bug or not... [21:33] steffkes: thx jesusabdullah, stagas .. http://dev.nuclearrooster.com/2010/07/18/node-js-filesystem-watcher-auto-reload-server-on-code-change/ works like a charme :) [21:33] malkomalko: brilliant tj.. thanks [21:33] tj: np [21:33] malkomalko: got exactly what I needed from the express tests [21:34] skiz has joined the channel [21:35] nsolsen has joined the channel [21:36] nooder: hello. can someone help me with bin to hex decoding? [21:36] cjm: iphone has a good browser on it [21:36] bnoordhuis: nooder: i think there are some modules on the wiki page that will do that for you [21:37] nooder: bnoordhuis: i need to conver binary string in buffer back to hex [21:38] nooder: and still couldn't find an answer for this [21:38] pagameba: anyone know what this means: Assertion failed: (handle->InternalFieldCount() > 0), function Unwrap, file /usr/local/include/node/node_object_wrap.h, line 30. [21:39] bnoordhuis: nooder: my buffertools module has fromHex() and toHex() methods: https://github.com/bnoordhuis/node-buffertools [21:39] bnoordhuis: come to think of it, it probably isn't listed on the wiki [21:40] mraleph: pagameba: that means that some methods in some C++ module still lack proper checks... probably you invoked constructor like a normal function or something like that [21:40] nooder: thx. i`ll give a try now [21:41] pagameba: um [21:42] technoweenie has joined the channel [21:42] fangel has joined the channel [21:42] bnoordhuis: pagameba: where/when did you get that error message? [21:43] mjr_: ryah: so is writev much faster? [21:44] ryah: mjr_: in the typical hello world server, not really - because those are usually just one string anyway [21:44] mjr_: sure [21:44] ryah: although it is a 10-20% faster anyway [21:44] mjr_: Do you still have my streaming test bench? [21:45] jimt has joined the channel [21:45] ryah: just because you don't jump between c++/js so much for each write() [21:45] ryah: oh, yeah, isn't that in the repo.. [21:45] mjr_: I think we copied it up to one of your zones, not sure if it made it into git. [21:45] rburhum has joined the channel [21:45] pagameba: bnoordhuis: I'm building an extension for a C library [21:45] mjr_: That streaming test is the ideal candidate for showing the benefit of writev though. [21:46] ryah: test/disabled/test-http-big-proxy-responses.js [21:46] mjr_: that's not it [21:46] cardona507 has joined the channel [21:46] muk_mb: did youtube forget anyone else's subscriptions? [21:46] mjr_: Oh, I remember. It required two node processes, and it was awkward to fit into the test driver [21:46] bnoordhuis: pagameba: you are probably calling Foo() where it should be new Foo() [21:47] mjr_: ryah: it's not like it would "fail" without writev, it'll just be slower. [21:47] mjr_: I hope I still have it somewhere. [21:47] bnoordhuis: pagameba: you can check for that in c++ land with args.IsConstructCall() [21:48] bnoordhuis: pagameba: and in js land with this typeof Foo [21:48] muk_mb: oh hey, they're back [21:48] TheEmpath has joined the channel [21:48] pagameba: bnoordhuis: https://gist.github.com/705707 line 75 is where it is failing according to gdb [21:48] Athox has joined the channel [21:49] hsuh has joined the channel [21:49] mraleph: pagameba: we need full stack trace to help you [21:49] mraleph: pagameba: bt in gdb [21:50] mraleph: pagameba: another possibility is that some method incorrectly uses This() instead of Holder() [21:50] pagameba: mraleph: https://gist.github.com/705707#comments [21:51] nooder: bnoordhuis: nope, that didn't work [21:52] pagameba: mraleph: very possible! I don't know enough to know the difference [21:52] nooder: module don't have bin2hex functionality. toHex gives wrong output [21:52] pagameba: mraleph: note that the getter method works, its just the setter that is not working, I just added it :) [21:52] jchris has joined the channel [21:53] mraleph: pagameba: can you post source of setter and your failing test as well? [21:54] nooder: pagameba: my problem is described here - http://bit.ly/d4ZRUH [21:54] bnoordhuis: pagameba: simple check: what happens if you add assert(args.IsConstructCall()) at the top of New()? [21:54] pagameba: confirmed that if I remove the setter it runs … source of setter is in https://gist.github.com/705707 line 75 [21:55] mraleph: pagameba: http://groups.google.com/group/v8-users/msg/a002fc8ebe8c0e84 <- difference between Holder() and This() [21:55] Blink7 has joined the channel [21:56] pagameba: mraleph: reading [21:56] mraleph: pagameba: at the JS test you run which fails? [21:56] pagameba: bnoordhuis: where do I put that? [21:56] pagameba: mraleph: it happens just loading the binding [21:56] cloudhead has joined the channel [21:56] pagameba: or actually ... [21:56] bnoordhuis: pagameba: on line 21 [21:57] bnoordhuis: nooder: if you can write up a test case of what you expect toHex() to produce, i'll see what i can do [21:57] pagameba: I use for (var p in bind) exports[p] = bind[p]; in a js file [21:58] pagameba: bnoordhuis: same error, no assert triggered from that line [21:59] ryah: ACTION <3 writev branch [22:00] rkieffer has joined the channel [22:00] bnoordhuis: pagameba: that's good (if you compile without NDEBUG at least), one less pitfall [22:01] mraleph: i do not see how SetPropertyWithInterceptor can be invoked on for (var p in bind) exports[p] = bind[p] line. You are definetely doing something else [22:01] chrischris has joined the channel [22:01] rbranson: this is kinda cute https://github.com/rbranson/node-ffi/tree/master/example/factorial/ [22:01] brianmario has joined the channel [22:02] JimRoepcke has joined the channel [22:02] pagameba: mraleph: I am running node with this file and getting this error: https://github.com/pagameba/node-mapserver/blob/master/mapserver.js [22:02] admc has joined the channel [22:02] hellp has joined the channel [22:03] jpld has joined the channel [22:04] pagameba: mraleph: the full binding file is https://github.com/pagameba/node-mapserver/blob/master/mapserver_bindings.cc [22:04] pagameba: note the NamedPropertySetter method is commented out, that makes it work … uncommenting that causes the assertion [22:05] mraleph: can you get more frames in gdb? what's above 5th frame? [22:05] rbranson: that's going to break [22:05] rbranson: use sys.inherits [22:05] rbranson: I'd even rather do [22:05] rbranson: module.exports = bind; [22:06] mraleph: pagameba: btw. I see small problem here [22:06] mraleph:         t->PrototypeTemplate()->SetNamedPropertyHandler(NamedPropertyGetter); [22:06] pagameba: mraleph: apparently I can not get more stacks [22:07] mraleph: replace PrototypeTemplate() with InstanceTemplate() [22:07] sechrist has joined the channel [22:07] mraleph: in that line [22:07] mraleph: ouch [22:07] mraleph: wrong line [22:07] pagameba: frig [22:07] _mythz has left the channel [22:07] mraleph: but you see what I meant [22:08] pagameba: mraleph: thanks! [22:08] pagameba: rbranson: thanks! [22:08] mraleph: you should set getters and setters on instancetemplate not on prototype [22:09] pagameba: mraleph: works - amazing, thank you! [22:09] mraleph: otherwise they will be called when someone sets/gets a field from prototype itself which is obviously wrong [22:09] brianmario has joined the channel [22:09] mraleph: pagameba: don't forget to fix all places [22:09] mraleph: =) [22:10] nooder: pagameba: test - http://pastebin.com/hZznx40A [22:10] tanepiper: Anyone got a snippet on using fs.readdir + fs.Stats at all? basically i'm trying to read a dir and work out if it's contents are files or paths [22:10] pagameba: mraleph: :D [22:10] mraleph: api is so complicated *sigh* [22:11] steph3 has joined the channel [22:12] pagameba: mraleph: agreed :) its been quite a learning curve. all tests (so far) work [22:12] malkomalko: tj: still around by any chance? wondering with express if I wanted to hit a url and the url is trying to spit back a csv file, if there was a way I can sys.pump or stream that data down [22:12] malkomalko: never had to do that before, just wondering the pattern to use [22:12] pagameba: gotta run (late for dancing lessons with the wife!) [22:12] tj: malkomalko: use the same pattern you would with any node req/res [22:12] tj: you dont HAVE to use res.send() [22:13] tj: you can use res.writeHead() / res.write() / res.end() like usual [22:13] tj: ACTION assert module sucks [22:13] davidc_ has joined the channel [22:14] admc has joined the channel [22:14] benburkert has joined the channel [22:15] nooder: ohoh… binary buffer problem, anyone? [22:16] benburkert has joined the channel [22:18] [[zz]] has joined the channel [22:18] bnoordhuis: nooder: was that link meant for me? [22:18] sonnym has joined the channel [22:19] gf3 has joined the channel [22:19] nooder: bnoordhuis: i'm still having problems. buffertools doesn`t work also [22:19] hassox has joined the channel [22:19] josefrichter_ has joined the channel [22:21] dylang has joined the channel [22:21] derferman has joined the channel [22:21] bnoordhuis: nooder: qs.unescape() isn't binary safe - it tries to make a utf-8 string from its argument [22:21] bnoordhuis: if you're shoveling binary data into it, strange things will happen [22:22] nsolsen has joined the channel [22:23] nooder: bnoordhuis: i was thinking about it. what to do with it then? [22:23] quirkey has joined the channel [22:24] ryah: writev is slower. but compare the system times: [22:24] devP has joined the channel [22:24] bnoordhuis: nooder: submit a bug report, let ryah fix it [22:24] ryah: writev: ./node test/disabled/test-http-big-proxy-responses.js 38.58s user 0.82s system 99% cpu 39.531 total [22:24] ryah: master: ./node test/disabled/test-http-big-proxy-responses.js 25.71s user 4.60s system 99% cpu 30.408 total [22:24] ryah: i'm pretty sure that user time can be mitigated [22:24] baoist has joined the channel [22:25] ryah: (like master branch is concating strings in its write queue - writev is not) [22:26] MikhX has joined the channel [22:27] papandreou has joined the channel [22:27] ryah: nooder: so basically you're trying to send arbitrary binary through a query string [22:27] ryah: and it's not coming out correctly [22:27] ryah: url encoded. [22:28] ryah: so you probably want to give a decoding option to qs.unescape() ? [22:28] mif86 has joined the channel [22:28] ryah: qs.unescape(something, 'buffer') ? [22:28] nooder: i recive binary string in url query [22:28] nooder: urlencoded [22:29] nooder: so i want to make it hex back [22:29] ryah: hex back? [22:29] nooder: program sends me urlencoded binary sha1 [22:29] markwubben has joined the channel [22:30] nooder: throw announce?info_hash=%d3%f2Ug%1f6v%24%5e%98%cb%0d%ac%a2%2f%9d%eb%d8%a2%e6 [22:30] papandreou: mscdex: Checking out node-imap, looks great! Found an issue with parsing FETCH responses because Courier puts FLAGS before INTERNALDATE, which your regexp doesn't take into account. Do you intend to write a real tokenizer/parser, or should I report issues like that? [22:30] chrischris has joined the channel [22:30] nooder: i need to unescape and turn it back to sha1 [22:31] bnoordhuis: looks like bittorrent [22:31] nooder: yep [22:31] bnoordhuis: only fully legal linux iso's, right? [22:31] nooder: im collecting data from clients [22:31] mscdex: papandreou: yeah i've been wanting to use the parser for that, i'll probably work on it tonight. thanks for the heads up [22:32] sriley has left the channel [22:32] isaacs: nooder: the issue is that strings in js are utf encoded [22:32] nooder: nothing illegal, our county laws are very strong. [22:32] isaacs: nooder: and what you're getting on the qs isn't valid utf [22:32] ryah: it seems like we should have the option to qs.unescape(string, 'buffer') [22:33] isaacs: yeah, that's be nice. [22:33] nooder: yep [22:33] ryah: we don't have buffer -> hex atm though [22:33] ryah: but that's easy to do yourself [22:33] bnoordhuis: awful syntax though [22:33] JimBastard: rauchg_: you going to that drinkup tonight? [22:33] devP has left the channel [22:33] ryah: bnoordhuis: what do you suggest? [22:34] bnoordhuis: something like qs.unescapeBuffer(s)? [22:34] ryah: sure. [22:34] isaacs: ryah: seems like the more nodey api would be for qs.unescape to return a buffer, and call qs.unescape(s, "utf8") if that's what you want [22:34] bnoordhuis: or that [22:34] ryah: isaacs: i like that. [22:34] ryah: we should move that back into js land [22:34] isaacs: qs.unescape(string [encoding]) [22:34] ryah: what was i thinking. [22:34] isaacs: hahah [22:34] isaacs: you were thinking that C is best for all things [22:35] ryah: yeah, that was retarded. [22:35] isaacs: as programming biases go, it's not a terrible one. err on the side of pushing stuff down as far as it fits. [22:35] isaacs: this was kind of a tight squeeze [22:35] papandreou: mscdex: Cool, I won't spam you anymore with that, then. Do you know what your level of ambition with the lib is? I might be interested in using it for a webmail backend. [22:35] nooder: guys, i`ll be very glad to see this feature. i spent 2 days working on useless for now code :( [22:35] isaacs: http.urlDecode could return a buffer, though [22:36] bnoordhuis: nooder: i write enterprise software for a living, i do the same for months :( [22:36] papandreou: mscdex: Ie. are you going to implement rfc2231/rfc2047/charset decoding? [22:36] isaacs: ryah: is there some easy way in c++ to create a buffer object from a cstring? [22:36] isaacs: Buffer::New(myCString) or something? [22:36] mscdex: papandreou: i'm pretty well committed to it, especially since i may be using it for work down the road [22:37] ryah: isaacs: a slow buffer, yes [22:37] bnoordhuis: isaacs: Buffer::New(s, size) [22:37] isaacs: ahh, ok [22:37] isaacs: yeah, i don't want one of those [22:37] nooder: bnoordhuis: but it makes you money then? :) [22:37] bnoordhuis: nooder: that's the upside of it, yes :) [22:37] mscdex: papandreou: i've been contemplating adding decoding functions.... forgot to add that to the todo [22:38] alek_br has joined the channel [22:38] papandreou: mscdex: Would be nice to have as much of that ugliness handled by the library :). The iconv bindings will help a great deal, I guess. [22:39] nooder: mscdex: that sounds very good, now im spawning iconv processes :( [22:40] bnoordhuis: ehm... http://github.com/bnoordhuis/node-iconv [22:40] mscdex: papandreou: yeah that's the thing, i wasn't sure if i wanted to include stuff for decoding since some people may want to use different means for decoding [22:40] nooder: not working with 0.3 buffers [22:40] mscdex: i dunno [22:40] nooder: tested month ago [22:40] bentruyman has joined the channel [22:40] mscdex: e.g. using crypto's base64 vs third party base64 [22:41] bmizerany has joined the channel [22:41] bnoordhuis: nooder: i upgraded it to the 0.3.x buffer api some weeks ago [22:41] nooder: bnoordhuis: nice to meet you! :) [22:42] cjm has joined the channel [22:42] papandreou: mscdex: Right, maybe it should be handled by another layer, possibly a general purpose MIME lib. [22:42] CIA-95: node: 03Ryan Dahl 07writev * r31ea1f4 10/ lib/net.js : Only try to flush big buffers once (+49 more commits...) - http://bit.ly/8YfCtz [22:43] isaacs: hooray!! [22:43] mscdex: papandreou: that's what i was thinking. i was really trying to keep this module fairly low level and just have what's necessary [22:44] MikhX has joined the channel [22:44] mscdex: that's how a lot of imap clients have been doing things from my research [22:45] mscdex: having a separate set of mime functions [22:46] papandreou: mscdex: Although some of them fail to provide that layer or a means to talk to other modules, such as Mail::IMAPTalk in perl. [22:47] papandreou: mscdex: Anyway, just wanted to say thanks for open sourcing it. Really looking forward to see what you'll do with it :) [22:47] mscdex: i was thinking someone had actually done some mime stuff for node once [22:47] mscdex: but i'm not sure [22:48] mif86 has joined the channel [22:48] benburkert has joined the channel [22:48] papandreou: mscdex: Haven't seen anything besides extension-to-mime type and multipart handling. [22:49] mscdex: ah, maybe that was it then, extension to mime type [22:50] Tim_Smart has joined the channel [22:50] tilgovi has joined the channel [22:53] [[zz]] has joined the channel [22:53] CrabDude has joined the channel [22:55] MattDiPasquale has joined the channel [22:56] ysynopsis has joined the channel [22:57] shachaf has joined the channel [22:59] _CrabDude has joined the channel [23:04] unomi has joined the channel [23:04] Booths has joined the channel [23:06] mklappstuhl has joined the channel [23:11] MikhX has joined the channel [23:12] technoweenie has joined the channel [23:13] CIA-95: node: 03Ryan Dahl 07master * r2219c64 10/ test/disabled/test-http-big-proxy-responses.js : fix race in test-http-big-proxy-responses.js - http://bit.ly/bwKuD1 [23:13] CIA-95: node: 03Ryan Dahl 07master * r57d8172 10/ (lib/querystring.js src/node_http_parser.cc): query-string unescape moved to js land - http://bit.ly/aQVmCi [23:13] CrabDude has joined the channel [23:14] cjm has joined the channel [23:14] mif86 has joined the channel [23:14] cagdas has joined the channel [23:14] micheil: Evet: no, I'm not using kyoto cabinent [23:15] ryah: i'm going to do unescapeBuffer because I'm lazy [23:15] ryah: isaacs - if you want to do your cuter version feel free [23:15] isaacs: haha [23:16] isaacs: ryah: it'd just be the samething, but calling toString if there's an encoding arg. [23:16] isaacs: if (encoding) b = b.toString(encoding) ; return b [23:16] ryah: yeah, but it's an api chage - so maybe you nee dto go update some other stuff [23:17] isaacs: oh, ok [23:17] isaacs: most things dont' use qs.unescape directly [23:17] skiz_ has joined the channel [23:18] isaacs: but i can handle the rejiggering later. [23:18] afan1 has joined the channel [23:18] CIA-95: node: 03Ryan Dahl 07master * r6ff12c4 10/ lib/querystring.js : Add querystring.unescapeBuffer - http://bit.ly/8YHyCz [23:18] ryah: nooder: there you go ---^ [23:18] tj: haha clever, textmate displays code between #if 0 as a comment [23:20] nooder: thx! ill give a try now [23:20] petercooper has joined the channel [23:21] murz: are there any nodejs cloud hosts that are open to the public yet? [23:21] micheil: pgriess: ping? [23:21] micheil: nodejitsu? [23:21] pgriess: micheil: hey [23:25] danslo has joined the channel [23:27] tapwater_ has joined the channel [23:27] tapwater has joined the channel [23:28] ben_alman has joined the channel [23:28] tapwater__ has joined the channel [23:29] seanbo has joined the channel [23:30] tapwater___ has joined the channel [23:30] tapwater____ has joined the channel [23:33] cferris has joined the channel [23:36] davidvanleeuwen: hi, does anyone here have experience with node-couch? [23:37] nooder: davidvanleeuwen: i had, and couchdb is really slo [23:37] nooder: dramatically slow [23:37] papandreou: davidvanleeuwen: A little if it's felixge's [23:37] davidvanleeuwen: :| [23:37] nooder: 10x slower mysql [23:37] papandreou: davidvanleeuwen: You are aware that he's not currently maintaining it, right? [23:38] davidvanleeuwen: mikeal's node-couchdb? [23:38] mklappst1hl has joined the channel [23:38] davidvanleeuwen: http://nodul.es/modules/couchdb [23:38] tanepiper: check out cradle [23:39] tanepiper: it's activly in development and has caching features [23:39] mklappst1hl: hey ... i'm combining 2 strings (function arguments) with ++ and get a "unexpected identifier" error [23:40] tapwater_ has joined the channel [23:41] davidvanleeuwen: tanepiper: i'll give it a try, thanks [23:41] mklappst1hl: does anyone have an idea what could cause this? [23:41] mklappst1hl: the line is like: [23:41] mklappst1hl: path = base ++ file; [23:41] unomi: why ++ ? [23:41] papandreou: mklappst1hl: Use path + file [23:42] mklappst1hl: oh, strange :D I thought ++ is for strings... probably in another language :) [23:42] mklappst1hl: thanks [23:43] mikew3c has joined the channel [23:45] papandreou_ has joined the channel [23:50] papandreou_: Apropos couchdb. Does any of the libraries (except Creationix') attempt to support streaming? [23:52] eee_c has joined the channel [23:59] johngbrooks has joined the channel