[00:00] charlesjolley has joined the channel [00:04] _ry: i think we should do redirects [00:04] _ry: maybe [00:07] smtlaissezfaire has joined the channel [00:09] isaacs: _ry: i'd vote against it [00:09] isaacs: it's easy to do manually. [00:10] charlesjolley has joined the channel [00:11] bmizerany: isaacs: where were you the past few days when I needed a SAX parser? :P hahaha. damn it. I've been dicking with my own for days. I never saw yours until now. :P [00:11] isaacs: bmizerany: didn't i ping you with a link when you mentioned it in here? [00:12] bmizerany: isaacs: I didn't get that. man. I don't know. argh. [00:12] isaacs: oh well :) [00:12] isaacs: hey, i was meaning to ask you, have you seen nave? is that helpful for you guys at all, or do you already have lots of fancy gizmos to handle that stuff? [00:14] bmizerany: isaacs: I have not seen it. link? [00:14] isaacs: http://github.com/isaacs/nave [00:15] isaacs: bmizerany: it's a virtualenv type thing for node [00:15] bmizerany: isaacs: oh right. [00:15] isaacs: it's pretty basic. [00:15] isaacs: but you probably don't want lots of node installs in userspace anyhow... [00:16] bmizerany: isaacs: we'll take a look at a it for sure. [00:20] mjr_: wow, finally wrestled V8 into submission and got pcap capping packets [00:21] mjr_: code is a giant mess [00:21] mjr_: But victory is in sight. And now it is time to drink a beer. [00:21] tmpvar: nice [00:21] tmpvar: thats slick man [00:22] _ry: mjr_: what was wrong [00:22] _ry: meh [00:23] tmpvar: HA, ab'ing some java app. -c 5 -n 100 -- this is going to take a while [00:24] tmpvar: lol, 3 minutes [00:24] pgriess has joined the channel [00:28] Aria has left the channel [00:29] Aria has joined the channel [00:31] Aria has joined the channel [00:34] siculars has joined the channel [00:35] voodootikigod has joined the channel [00:36] voodootikigod has left the channel [00:41] maushu: Hmmm... an irc bot that receives a feed from stackoverflow.com and then announces in the channel that someone asked a question about node.js? [00:42] maushu: Pretty useful imho. [00:42] CIA-74: node: 03Peter Griess 07master * r2420f07 10/ (src/node.cc test/disabled/test-setuidgid.js): Allow process.setuid() and process.setgid() to accept string names in lieu of numeric IDs - http://bit.ly/9kUTOt [00:42] sh1mmer has joined the channel [00:42] aaronblohowiak has joined the channel [00:55] Phazm: tmpvar: have you spoken with Aria re: HTML5 parser for jsdom yet? [01:05] tmpvar: not really [01:06] tmpvar: we exchanged words, but I haven't had time to put into it as of late [01:06] voodootikigod has joined the channel [01:07] tmpvar: i really dont think it would be that hard [01:07] tmpvar: but i havent looked ;) [01:10] Aria: Hehe. It wouldn't -- I got a start on making it work. [01:10] Aria: But jsdom ended up being fragile in a couple places, and I was having trouble instantiating things empty enough to start with. [01:10] tmpvar: oh yeah? [01:11] tmpvar: do you recall what/where? [01:11] Aria: Yeah. Now that I have the whole test suite passing (save one case, but whatever), I was going to go back and play with it and make a list. [01:11] tmpvar: cool, feel free to add issues -- i can take a stab at them when i get a chance [01:12] Aria: Hehe. I'll do that. (Thursday, likely, since I have a two-hour wait in a waiting room while I wait for my husband, and I spend it hacking each week.) [01:12] tmpvar: sounds good, hope he is alright [01:14] Aria: Oh, fine. [01:14] Aria: Definitely nothing to worry about. [01:15] tmpvar: good! well im still at work, I really need to roll before I end up sleeping here [01:15] Aria: HEhe, aright. Ta! [01:15] tmpvar: peace [01:17] charlesjolley has joined the channel [01:22] ditesh|cassini has joined the channel [01:22] siculars has joined the channel [01:32] Azeroth has joined the channel [01:33] mjijackson has joined the channel [01:35] JimBastard: what do i fail at instanceof ? [01:35] JimBastard: http://gist.github.com/405836 [01:35] JimBastard: is it possible to actually get that to return true [01:36] inimino: JimBastard: only line 14 [01:37] inimino: ...erm, if you are testing the right variable [01:37] JimBastard: AHAH i fail [01:37] JimBastard: i didnt swap the vars [01:37] JimBastard: thanks inimino [01:37] mscdex: hehe [01:37] inimino: ^.^ [01:37] isaacs: JimBastard: http://gist.github.com/405840 [01:37] JimBastard: doing a format.js lib [01:37] JimBastard: yeah i got it isaacs [01:38] JimBastard: thanks [01:38] JimBastard: anyone got any cool / odd formatters they got kicking around? [01:38] JimBastard: weight? length? science math? [01:38] JimBastard: i got all the basics covered + inflectors [01:39] isaacs: formatters? [01:40] gwoo has joined the channel [01:40] JimBastard: date / time / money / numbers [01:40] dgathright has joined the channel [01:40] inimino: I need one for dates [01:40] JimBastard: there are a shit ton out there [01:40] JimBastard: im unifying here http://github.com/Marak/format.js/tree/master/lib/ [01:40] JimBastard: and making it work dual-side [01:41] inimino: input is a date, output is a short string, no more than two tokens, like "Aug. '08", or "yesterday" [01:41] JimBastard: also a lot more stuff with sugar syntax, rails like stuff [01:41] isaacs: inimino: http://www.google.com/search?q=strftime+javascript&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a [01:41] JimBastard: yeah inimino , im on it [01:41] isaacs: oh, you want like a "shortest possible human readable version" or something? [01:41] inimino: I think strftime is too low-level [01:41] isaacs: right [01:42] isaacs: you want "5 minutes ago" or "yesterday" or "June 6" [01:42] inimino: yeah, something extremely short and friendly, sacrificing accuracy [01:42] JimBastard: ive got all the basics pretty much covered [01:42] JimBastard: and the easy english syntax stuff [01:42] JimBastard: im thinking if i missed any other units aside the ones in the /lib/ [01:42] JimBastard: units that people will need [01:44] mscdex: date.js is pretty decent for dates [01:44] mscdex: like "last April" and stuff [01:44] JimBastard: sigh [01:44] JimBastard: lol [01:45] mscdex: might be good to incorporate something like that [01:45] mscdex: :S [01:45] inimino: hm [01:45] inimino: that's the Rubyish one? [01:45] JimBastard: all that shit is already mapped out [01:45] JimBastard: you guys dont listen [01:46] JimBastard: there is even some sample syntax in the code online in the comments [01:46] joshbuddy has joined the channel [01:46] JimBastard: i was asking about non standard units [01:46] JimBastard: not the ones in the /lib/ folder [01:46] inimino: (3).days().ago(); // hate [01:46] JimBastard: date, time, inflector, currency, number [01:46] mscdex: inimino: yeah, not that, but entire string parsing [01:47] JimBastard: thats not even remotely close to anything [01:47] JimBastard: i give up [01:47] mscdex: haha [01:47] isaacs: inimino: me too [01:48] isaacs: inimino: (3).magic().functions().kill().me().now() [01:48] inimino: yeah [01:49] isaacs: that's read-only code. [01:49] isaacs: like applescript. it's VERY clear what it does, but writing it is like an endless tedious process of looking shit up. [01:49] inimino: ah, yes [01:51] charlesjolley has joined the channel [02:00] siculars has joined the channel [02:01] mikeal has joined the channel [02:01] tlrobinson_ has joined the channel [02:06] sh1m has joined the channel [02:09] rra_ has joined the channel [02:17] charlesjolley has joined the channel [02:28] smtlaissezfaire has joined the channel [02:31] jedschmidt has joined the channel [02:35] mjijackson has joined the channel [02:37] Tim_Smart: Anyone made a web scraper with node.js yet? [02:39] Aria: Not quite yet. [02:54] mscdex: unless you use regex :P [02:55] Aria: Well, you can parse now ;-) [02:55] Aria: But nothing more developed than a box of parts. [02:56] _ry: Aria: but i hope that's what you're aiming for :) [02:56] micheil has joined the channel [02:56] Aria: Yep! [02:57] _ry: very good :) [02:57] Aria: Starting to work on code that USES the parser now. [02:57] _ry: scraping = very important [02:57] ryan[WIN] has joined the channel [02:57] micheil: hmm.. [02:57] smtlaissezfaire has joined the channel [02:58] cloudhead: anyone know how I can call a constructor with apply() and new at the same time? [02:59] _ry: cloudhead: what? [03:02] cloudhead: _ry: like, pass an array of arguments to a contructor call [03:04] _ry: oh i dont know [03:05] jedschmidt: cloudhead: i don't think that's possible. [03:05] fizx has joined the channel [03:06] tpryme has joined the channel [03:07] cloudhead: jedschmidt: alright, I thought it might not be [03:08] jedschmidt: cloudhead: yeah, i think the best bet is for the constructor to detect if it's an instance of itself, and then re-call with `new` if it's not. [03:08] jedschmidt: cloudhead: (assuming you have control over the constructor) [03:08] rra has joined the channel [03:08] aaronblohowiak: jedschmidt: i do that very frequently.. i think that requiring "new" from the outside is a design mistake of the language [03:09] cloudhead: jedschmidt: interesting, I do have control of it [03:09] cloudhead: aaronblohowiak: +1 [03:09] jedschmidt: aaronblohowiak: agreed. that's why i love FP in javascript... all functions are "new" anyway. [03:10] smtlaissezfaire has joined the channel [03:10] aaronblohowiak: jedschmidt: i also have taken to doing self = this; and then defining this.frequentlyUsedAsACallback to only refrence self so i dont have to create a billion anon fn's or use bind or proxy [03:12] aaronblohowiak: is the author of Socket.IO seen here? [03:12] aaronblohowiak: or the author of node-websockets-server [03:12] mjijackson has joined the channel [03:14] mscdex: aaronblohowiak: that's rauchg, he's not in here though [03:14] aaronblohowiak: mscdex: thanks. [03:14] mscdex: rauchg is the author of socket.io [03:17] mscdex: weee \o/ common asterisk events fully working now [03:17] aaronblohowiak: mscdex: niiice! [03:20] alexiskander has joined the channel [03:21] tylerstalder has joined the channel [03:22] morgan has joined the channel [03:22] creationix has joined the channel [03:24] creationix: I remember hearing about a new protocol that replaces http here a while back [03:24] creationix: what was it [03:24] creationix: I think it started with an n? [03:24] mikeal: NNTP! [03:25] mikeal: HTTP before HTTP was HTTP [03:25] voodootikigod_ has joined the channel [03:25] aaronblohowiak: SPDY [03:25] mikeal: expect…. really shitty [03:25] KungFuHamster: gopher [03:25] aaronblohowiak: http://en.wikipedia.org/wiki/SPDY [03:25] creationix: thanks aaronblohowiak [03:26] aaronblohowiak: creationix: np. thanks for the great software :-) [03:26] KungFuHamster: mmmm compressed headers [03:26] creationix: so do any browsers support this yet? [03:26] aaronblohowiak: creationix: http://src.chromium.org/viewvc/chrome/trunk/src/net/spdy/ [03:28] voodootikigod has joined the channel [03:28] aaronblohowiak: did i just drink this litre of water, or is this an old empty bottle and my bottle is somewhere else in the house? [03:28] aaronblohowiak: ACTION is feeling loopy after a nice run through palo alto [03:32] aaronblohowiak: creationix: are you at the new place already? [03:33] creationix: yep [03:33] creationix: err, no, not apartment [03:33] creationix: I get the key tomorrow [03:33] creationix: (thought you were asking about new job) [03:34] aaronblohowiak: :-) ah, no, i was seeing if you were fulfilling the google group prophecy of neighbor-wifi0stealing ;) [03:34] voodootikigod_ has joined the channel [03:35] creationix: man, someone needs to implement spdy, it's just too cool [03:35] creationix: way more work than I have right now though [03:35] creationix: I was thinking about implementing MySql's protocol though [03:36] nsm has joined the channel [03:37] aaronblohowiak: creationix: i can write that quick tut on writing your own module if you'd like [03:38] aaronblohowiak: if that will free you up for more funky protocol hacking ;) [03:38] creationix: aaronblohowiak: that would be great, just checkout wheat and howtonode and add a new article [03:38] aaronblohowiak: creationix: checkout or fork? [03:38] creationix: sorry, clone [03:38] creationix: if you fork it you can send a pull request [03:39] aaronblohowiak: great, will do [03:39] creationix: but for wheat, you only need to clone it to your machine [03:39] PyroPete1 has joined the channel [03:40] jedschmidt: creationix: i seem to remember ryan showing some interest back when SPDY came out. [03:41] creationix: yes, spdy, or something like it needs to catch on [03:41] creationix: http is a good standard, but we can do so much better now [03:41] nsm has joined the channel [03:43] aaronblohowiak: creationix: "Content should always be sent in a compressed format. " =( [03:44] aaronblohowiak: ACTION loves text protocols [03:44] creationix: aaronblohowiak: then use HTTP, it's not going away any time soon [03:44] creationix: but compressing all text over the wire will save a ton on the world's banwidtth [03:45] creationix: besides, I doubt SPDY will catch on, I just think it would be neat to implement it in node to show how versatile node is. [03:45] aaronblohowiak: creationix: it mostly is already, it is really just the headers that arent [03:45] aaronblohowiak: creationix: ah, for that i agree 100% [03:46] creationix: and with node based SPDY server and clients, web services can go over SPDY instead of HTTP [03:46] creationix: even if the browsers never implement it [03:47] aaronblohowiak: creationix: why have services over spdy instead of sockets ? [03:47] creationix: but what protocol? [03:48] creationix: SPDY and HTTP are both over sockets, it's just a common protocol [03:48] aaronblohowiak: what books do you recommend for getting into protocol implementation -- is there a JavaScript: The Good Parts for this sort of thing? [03:48] creationix: aaronblohowiak: doubt it, before node, I'm, not sure anyone implemented binary protocols in javascript [03:48] creationix: and before buffers it didn't really make sense [03:49] creationix: unless you count c extensions, but that's a very different route [03:49] aaronblohowiak: creationix: i meant in the general sense. like Effective C++ (and More Effective C++) or K&R [03:49] creationix: aaronblohowiak: you can start with my postgres driver, it's probably not the best code, but it works [03:49] aaronblohowiak: i dont particularly care what the example language is in the book, i'd like to learn how to think about socket-level programming [03:50] creationix: ahh, that probably exists [03:50] creationix: but I'm not a c coder, so I've never read such a book [03:50] creationix: http://github.com/creationix/sousaball/blob/master/lib/postgres-pure.js [03:51] creationix: my suggestions would be to abstract the messages into events and then write logic against the events [03:51] creationix: also remember to not trust tcp chunks to end at message boundaries [03:51] creationix: it will often work in test mode, but then fail under high load [03:52] Tim_Smart: Do the fs file function return buffer objects, or the raw data? [03:52] Tim_Smart: I should probably try it, but I'm in Mac OS X atm, and only my Ubuntu install has node installed [03:53] scudco has joined the channel [03:53] creationix: Tim_Smart: in the lastest version fs.readFile returns buffers if you don't specify the encoding [03:53] Tim_Smart: Brilliant [03:53] creationix: and I think the stream does buffers too, but most of it doesn't [03:54] Tim_Smart: Static File servers should be really fast then [03:54] creationix: yep, I get about 250mb/sec serving static files with no cache [03:54] Tim_Smart: How does that compare with nginx? [03:54] aaronblohowiak: creationix: this is great! i will have to go through this in more detail on the train tomorrow. thanks for the inks! [03:55] creationix: aaronblohowiak: no problem, good luck [03:55] Tim_Smart: May Crockford be with you, aaronblohowiak [03:56] creationix: Tim_Smart: not sure, but according to _ry's slides it's on par with nginx [03:56] Tim_Smart: That is very very promising [03:56] creationix: I know that if I enable in-memory caching I get about twice the performance [03:56] creationix: actually more on throughput, about 650mb/sec [03:56] aaronblohowiak: Tim_Smart: in case this somehow escaped you: http://crockfordfacts.com/ [03:56] creationix: and I just stat the file every 100ms to see if it changed [03:56] Tim_Smart: It hasn't :) [03:56] aaronblohowiak: :-) nice [03:57] aaronblohowiak: no website can escape Tim_Smart ;) [03:57] Tim_Smart: creationix: Hmm, what about watchfile? [03:57] creationix: that would work too [03:58] creationix: I don't actually do a setInterval, I just invalidate the stat cache after 100ms [03:58] creationix: and then invalidate the file cache if the stat mtime changes [03:58] Tim_Smart: ok [03:59] Tim_Smart: So running nginx in front of node.js is almost not needed anymore [03:59] Tim_Smart: All we need now is a decent web worker api for load balancing [03:59] admc has joined the channel [04:00] creationix: :) I've got something up my sleeve [04:00] Tim_Smart: An arm? [04:00] creationix: once node supports passing FD's to child processes, it will be possible to make something faster than an nginx reverse proxy [04:00] inimino: aaronblohowiak: have you read the Stevens book? [04:01] Tim_Smart: creationix: So sendfd isn't working quite yet? [04:01] aaronblohowiak: inimino: nope [04:01] stepheneb has joined the channel [04:01] inimino: aaronblohowiak: start there... Richard Stevens, Unix Networking or some such title [04:02] aaronblohowiak: inimino: 1998. oldie but goodie? [04:02] inimino: it is the classic on TCP/IP [04:02] inimino: yep [04:02] Tim_Smart: creationix: I remember playing with sendfd a while back, but I didn't really know what I was doing and ended up with segfaults [04:02] aaronblohowiak: splendid. ty. [04:05] steadicat has joined the channel [04:06] steez has joined the channel [04:14] aaronblohowiak: creationix: TypeError: Object has no method 'match' [04:15] aaronblohowiak: creationix: what version of node are you running? i am on 0.1.95 -- i get this when viewing http://localhost:8080/volcano-wheat home page loads fine [04:15] creationix: aaronblohowiak: what project [04:15] aaronblohowiak: howtonode.org, sorry [04:15] creationix: ahh, look for the fs.readFile in the node-git library [04:15] creationix: hmm, I'll do it real quick, just a sec [04:16] creationix: (fs.readFile now gives buffers by default, they don't have a "match" method) [04:16] aaronblohowiak: i'll specify an encoding, but not include that in my commit [04:16] aaronblohowiak: so it will work for my dev and you can fix at your leasure, if you'd like [04:16] creationix: yeah, specify utf8, and you'll be good to go [04:17] creationix: hmm, that's not it, I'm specifying the encoding everywhere [04:19] aaronblohowiak: i changed git.js#229 to no effect [04:19] creationix: aaronblohowiak: can you find the line with the offending match? [04:20] aaronblohowiak: dataSources()..preProcessMarkdown(markdown)..#220 [04:21] ajpiano has joined the channel [04:22] creationix: aaronblohowiak: fixed it :) [04:22] creationix: git pull [04:23] aaronblohowiak: creationix: you, sir, are a scholar and a gentleman [04:23] inimino: ACTION needs to update node [04:23] aaronblohowiak: creationix: embedded script is the winnerest [04:23] creationix: aaronblohowiak: you're quite welcome, thanks for working on an article [04:24] aaronblohowiak: creationix: i think i am going to go with CodeMirror for snippet showing whenever i get around to ToyLanguage.com [04:25] jedschmidt has joined the channel [04:29] justinlilly has joined the channel [04:49] JimBastard has joined the channel [04:49] JimBastard: ACTION has recharged the noob capacitors [04:53] Phazm: is there an easy conversion to get rid of process.mixin? [04:53] Phazm: have an old script that uses it [04:54] inimino: Phazm: you could just copy it into your project [04:55] inimino: for most uses a simple for-in loop or Object.keys will suffice [04:56] Phazm: http://github.com/mrjjwright/flickrnode/blob/master/lib/multipartform.js [04:56] Phazm: it's that one [04:56] aaronblohowiak: creationix: should i fix authors/Tim Caswell.markdown Location: [04:57] mjr_ has joined the channel [04:58] mjijackson has joined the channel [04:58] sudoer has joined the channel [04:59] JimBastard: yo Phazm [04:59] JimBastard: there is [04:59] JimBastard: http://github.com/creationix/proto [04:59] JimBastard: .mixin prototype on objects [05:00] ddollar has joined the channel [05:01] JimBastard: http://gist.github.com/405971 [05:01] JimBastard: isNumber() is funny business [05:01] JimBastard: its not really a number unless its new Number() [05:02] aaronblohowiak: JimBastard: does that return 8675309 ? [05:03] JimBastard: ? [05:04] aaronblohowiak: JimBastard: pop culture http://www.youtube.com/watch?v=axLRUszuu9I&feature=related [05:05] JimBastard: ? [05:05] aaronblohowiak: http://en.wikipedia.org/wiki/867-5309/Jenny [05:05] aaronblohowiak: nevermind, lame-ass joke attempt =( [05:06] JimBastard: ? [05:07] inimino: obligatory xkcd: lame ass-joke attempt [05:07] JimBastard: someone really needs to add audio and alerts to the node-chat http://chat.nodejitsu.com/ [05:11] JimBastard: and like we should hook that up to the irc, even if its just a proxy for now [05:11] JimBastard: i know irc.createServer is being working on [05:11] JimBastard: but a proxy would be fine for now...link up the webchat for the irc room [05:11] JimBastard: that whole app is opensource [05:11] jpld has joined the channel [05:11] JimBastard: and i can deploy updates to the live site anytime [05:18] richcollins has joined the channel [05:20] mscdex: nodebot! [05:22] charlesjolley has joined the channel [05:22] JimBastard: does anyone wanna help me with format.js? i really need a hand with the inflectors.js. i have everything you need in place to get started (docs, links, sample code). will require 13 methods get ported and prob like 20+ unit tests [05:22] JimBastard: any takers? [05:23] JimBastard: i got two partial samples that have all the funny words with regex in a nice structure [05:23] JimBastard: so that part is done [05:23] steadicat has joined the channel [05:23] JimBastard: http://github.com/Marak/format.js/blob/master/lib/inflector.js [05:24] siculars has joined the channel [05:26] zomgbie has joined the channel [05:30] saikat` has joined the channel [05:31] gbot2 has joined the channel [05:32] mscdex: JimBastard: it might be worth looking at the cakephp inflector class in addition to the ruby regexes, there's some in there that aren't in ruby's [05:35] JimBastard: mscdex: can you pleeeeeease find them and comment on the page....or fork and stub out the methods. i'll give you 10 internet dollars [05:35] JimBastard: redeemable at your local internet dollars bank [05:36] mscdex: JimBastard: http://github.com/cakephp/cakephp/blob/master/cake/libs/inflector.php [05:36] mscdex: ;-) [05:36] JimBastard: fail [05:36] bolson has joined the channel [05:36] JimBastard: but thank you! ill add now [05:37] Phazm: JimBastard: cannot for the life of me figure out how to use that - seems to break my script by just requiring it [05:37] JimBastard: i just had a minor seizure starting to read through that php [05:37] JimBastard: what what Phazm ? [05:37] JimBastard: proto? [05:37] Phazm: yea [05:37] JimBastard: creationix [05:38] JimBastard: it should be really easy [05:38] JimBastard: you can include it [05:38] JimBastard: and then on your object do [05:38] JimBastard: obj.mixin(obj2) [05:38] JimBastard: i use it in a bunch of places [05:38] mscdex: inherits! [05:39] mscdex: doesn't inherits do the same thing? or no? [05:39] Phazm: I have the uncanny ability to make even the simplest of processes break ;) [05:39] JimBastard: okay i got inflectors from rails and from cakephp, what else is there [05:44] linuxsable has joined the channel [05:44] aaronblohowiak: JimBastard: GPL ok? [05:44] Phazm: I'm not really sure what .mixin is/was used for -- would it be easy to convert this bit? http://github.com/mrjjwright/flickrnode/blob/master/lib/multipartform.js#L171 [05:44] JimBastard: aaronblohowiak: depends id have to see it [05:45] aaronblohowiak: JimBastard: nevermind. python's NLTK is not worth deciphering [05:45] JimBastard: k [05:46] mscdex: heh [05:49] isaacs has joined the channel [05:50] mscdex: Phazm: I've never used it before, but looking at the old source code for it, it looks like it's assigning the properties of that object to the exports object [05:50] mscdex: in your case [05:50] tlrobinson_ has joined the channel [05:50] bpot has joined the channel [05:50] mscdex: similar to jquery's .extend() [05:51] isaacs: am i correct in thinking that fs.read doesn't have a Buffer interface? [05:51] isaacs: i see the buffer-style API for fs.write [05:51] isaacs: but not for read [05:51] JimBastard: Marak (11 commits, 602 additions, 18 deletions) >.< [05:51] JimBastard: one day [05:51] Phazm: mscdex: I'm pretty much a noob when it comes to this stuff. [05:51] JimBastard: on one project [05:51] JimBastard: huzaah for javascript [05:53] Phazm: http://www.tacobell.com/promo/limeade-coupon <-- free taco bell limeade if you convert it for me ;) [05:54] isaacs: oh, wait, i was on an old branch... [05:56] aconbere: hmmm [05:56] aconbere: anyone tried compiling node-discount on 64 bit linux? [05:56] Phazm: aconbere: works for me on ubuntu 64 bit [05:56] aconbere: hmmm [05:56] Phazm: desktop version [05:56] aconbere: I have issues linking against the shared discount lib [05:57] mscdex: Phazm: maybe you can get by with inimino's shallow copy replacement here: http://groups.google.com/group/nodejs/msg/32c779942e90f784 [05:57] aconbere: /usr/bin/ld: /usr/local/lib/libmarkdown.a(mkdio.o): relocation R_X86_64_32 against `fgetc' can not be used when making a shared object; recompile with -fPIC [05:57] aconbere: /usr/local/lib/libmarkdown.a: could not read symbols: Bad value [05:58] aconbere: so.. well clearly it tells me that I should recompile discount with -fPIC [05:58] mscdex: Phazm: or just manually assign each of those properties to the exports object [05:58] aconbere: but, discount uses its own crappy configure script [05:58] rictic has joined the channel [05:59] mscdex: aconbere: add -fPIC to the CCFLAGS or whatever it is in the Makefile [05:59] Phazm: mscdex: I'm just not sure what the syntax should be to do that [06:00] mscdex: Phazm: well if you do it manually, it should be as simple as: exports.file = function(...); exports.data = function(..); exports.sizeOf = function(...); etc. if I'm understanding the behavior of process.mixin in this scenario [06:00] linuxsable has joined the channel [06:01] pandark_ has joined the channel [06:01] Phazm: ah, I'll give it a shot [06:01] Phazm: thanks [06:03] aconbere: hot [06:03] aconbere: that was surprisingly easier than I thought [06:04] mscdex: yeah, i had to do that for my x64 machine for node-ncurses [06:05] tpryme has joined the channel [06:07] gf3 has joined the channel [06:09] SamuraiJack has joined the channel [06:10] bpot_ has joined the channel [06:11] Phazm: mscdex: seems to have done the trick thanks -- unfortuantely, this script is just way too out of date to be used as-is [06:11] Phazm: looks like I'm going back to exec for flickr uploads :-/ [06:14] mscdex: hmm isn't the flickr upload api just consist of one command? [06:15] Phazm: I think the implementation of sending the file makes it more difficult [06:15] Phazm: as apposed to just sending text [06:17] mscdex: sending text? [06:17] Phazm: like for twitter [06:17] scudco has joined the channel [06:18] mscdex: you said you are shelling out to do flickr uploads? [06:19] Phazm: yea, using flickcurl [06:21] mscdex: and you're using flickrnode for everything else? [06:21] Phazm: not using flickrnode at all, as I only need to upload [06:21] Phazm: and flickrnode doesn't support oauth, which is required to upload, and that fork doesn't work [06:22] sveisvei has joined the channel [06:22] mscdex: then why were you trying to use flickrnode in the first place? :S [06:23] mscdex: that link you pasted [06:23] Phazm: that link I pasted was the fork I was trying to get working :) [06:23] mscdex: oh [06:24] Phazm: after I got the mixin working (thanks to you) I realized that it was using some old version of the api, calling 'up.flickr.com' instead of 'api.flickr.com' and it was sending 'suggested filename' which as far as I can tell, the current flickr api doesn't support at all [06:24] mscdex: ah [06:25] bpot has joined the channel [06:31] jpld has left the channel [06:32] isaacs: mjr_: i think i'm hitting your "http needs throttling" issue. [06:32] isaacs: mjr_: but in this case, node is the client, not the server. [06:37] jsilver has joined the channel [06:37] mape: Are there any benchmarks out there on twisted vs node? [06:41] JimBastard: yo mjijackson whats up with this [06:41] JimBastard: TypeError: Cannot call method 'writeError' of undefined at Stream. (/Users/Marak/dev/mint/lib/mint.js:308:23) at IOWatcher.callback (net:303:16) at node.js:748:9 [06:41] JimBastard: it seems to not like my file [06:41] JimBastard: paths should all be correct.... [06:42] JimBastard: mint -o doc/Faker.js ../Faker.js/Faker.js [06:42] JimBastard: i think it might be choking on my file [06:44] JimBastard: lol [06:45] kennon has joined the channel [06:49] isaacs: Ned_: hey, i think i figured out your problem. [06:50] isaacs: Ned_: definitely a node bug somewhere in the http client. [06:50] hassox has joined the channel [06:52] kjeldahl has joined the channel [06:53] DrFlaska has joined the channel [06:55] mikeal has joined the channel [06:57] rra has joined the channel [06:57] javajunky has joined the channel [06:58] charlesjolley has joined the channel [06:58] aaronblohowiak: creationix: you still there [07:00] markwubben has joined the channel [07:01] _cheerios has joined the channel [07:01] derbumi has joined the channel [07:04] hassox has joined the channel [07:05] morgan has joined the channel [07:19] jedschmidt has joined the channel [07:20] JimBastard: >.< ugh [07:20] JimBastard: http://github.com/Marak/format.js [07:20] hassox has joined the channel [07:20] JimBastard: might have to take a break now lol [07:20] JimBastard: i think i can finish this in a < 1 week [07:21] aaronblohowiak: JimBastard: does this readme contain the to-do or the to-done? [07:22] JimBastard: it contains a 1-1 mapping of the exports in the /lib/ directory [07:22] JimBastard: there are tests [07:22] JimBastard: i wouldnt bother looking through any of it [07:22] JimBastard: if you want to help i can get you up to date [07:24] aaronblohowiak: JimBastard: i can take inflector [07:24] JimBastard: word? that would be nice [07:24] JimBastard: i have two JS implementations one sec [07:24] JimBastard: http://gist.github.com/405575 [07:25] JimBastard: http://gist.github.com/405579 [07:25] aaronblohowiak: getNumbers should use \d*\.?\d* [07:25] aaronblohowiak: welll, that isnt true [07:25] aaronblohowiak: \d*|\d*\.\d* [07:25] JimBastard: there are comments @ http://gist.github.com/405575 too [07:25] JimBastard: at the bottom [07:26] JimBastard: and then http://github.com/Marak/format.js/blob/master/lib/inflector.js [07:26] JimBastard: has some links as well to cakephp and rails [07:27] JimBastard: the unit tests are done in vows [07:27] JimBastard: http://github.com/Marak/format.js/blob/master/tests/types.js [07:27] JimBastard: let me know if you got any questions [07:28] aaronblohowiak: JimBastard: k [07:28] aaronblohowiak: will probably start on the train tomorrow [07:29] JimBastard: cool cool [07:32] Dennus has joined the channel [07:39] aaronblohowiak: i wish JSON included regular expressions as a native datatype [07:39] JimBastard: json-schema? [07:40] aaronblohowiak: JimBastard? json.org [07:41] aaronblohowiak: [string, number, object, array, true, false, null] should contain regexp [07:41] aaronblohowiak: ;) [07:45] mscdex has joined the channel [07:49] mape: Hmm .. http://pic.thefarm.se/mape/20100519094703/ [07:49] mape: That shows in the browser.. [07:50] mape: when doing: [07:50] mape: res.writeHead(200, {'Content-Type': 'application/json'});res.end(JSON.stringify(contents)); [07:51] mape: And after a refresh it works fine (outputs json) [07:52] mscdex: maybe it's something on the client side? [07:52] aaronblohowiak: http://groups.google.com/group/nodejs/browse_thread/thread/f127a283d7079214/87da314861f00be0?lnk=gst&q=integer+http#87da314861f00be0 [07:52] aaronblohowiak: turn off gzipping in nginx [07:52] mape: Using apache [07:53] mape: And not using express [07:53] mape: or not even that [07:53] mape: I'm using http.createServer and connect straight to the port [07:56] aaronblohowiak: is it always 10e625 [07:56] aaronblohowiak: 106e25 .. slightly different number [08:02] aron has joined the channel [08:06] ac94 has joined the channel [08:10] johan-s has joined the channel [08:10] johan-s has joined the channel [08:15] SvenDowideit_ has joined the channel [08:18] xla has joined the channel [08:19] SvenDowideit has joined the channel [08:21] N` has joined the channel [08:25] SvenDowideit has joined the channel [08:36] cedricv has joined the channel [08:36] SvenDowideit has joined the channel [08:46] kennon has joined the channel [08:46] SvenDowideit has joined the channel [08:50] linusthiel has joined the channel [08:51] SvenDowideit has joined the channel [08:51] TomY has joined the channel [08:52] johan-s has joined the channel [08:53] Tim_Smart has joined the channel [08:54] javajunky has joined the channel [08:58] sh1m has joined the channel [08:59] SvenDowideit has joined the channel [09:02] pandark_ has joined the channel [09:02] hellp has joined the channel [09:10] SvenDowideit has joined the channel [09:13] dgathright has joined the channel [09:19] dgathright has joined the channel [09:24] dgathright_ has joined the channel [09:25] maushu has joined the channel [09:33] dekroning has left the channel [09:49] zomgbie has joined the channel [10:01] jan____ has joined the channel [10:04] MattJ has joined the channel [10:04] jan____ has joined the channel [10:06] derbumi has joined the channel [10:11] SubStack: net.Stream has no flush -_- [10:12] tpryme has joined the channel [10:13] SubStack: I rather need to flush the socket so I can read back the response [10:14] mcarter has joined the channel [10:17] zomgbie has joined the channel [10:18] dgathright has joined the channel [10:21] SubStack: and here I wrote this crazy binary stream parser [10:21] SubStack: but I can't even use it without flushing the socket! [10:29] SubStack: aha, setNoDelay! [10:36] siculars has joined the channel [10:42] derbumi has joined the channel [10:48] SubStack: hah, problem turned out to be unrelated to flushing! [10:51] Ned_: heh, xkcd.com did pretty well today ;-) [10:53] chilts: lol [10:53] chilts: that's awesome :) [11:00] fermion has joined the channel [11:21] mertimor has joined the channel [11:24] olegp has joined the channel [11:39] spotify|rsms has joined the channel [11:39] rsms has joined the channel [11:40] felixge has joined the channel [11:41] ditesh|cassini has joined the channel [11:45] hassox has joined the channel [11:52] Ori_P has joined the channel [11:53] phiggins has joined the channel [11:56] mape: javajunky: yt? You created the oath for express right? [11:57] javajunky: not the producer api [11:57] mape: But the OAuth module? [11:57] javajunky: I have implement an authentication framework for express that provides SSO against Yahoo,Twitter, Facebook and others etc yes [11:57] javajunky: I've also written the node-oauth module yeah ? [11:58] javajunky: but again crucially these are all *client* / consumer side things [11:58] javajunky: although I guess the node-oauth could be used to do that, its just not where I was coming from when I wrote the APIs..they're a bit client centric. [11:58] mape: k I moved the twitter one out of the express oauth stuff, and it works fine. except for 'http://api.twitter.com/1/'+name+'/lists/memberships.json?cursor='+cursor; which gives me Incorrect signature [11:59] javajunky: is this when using getProtectedResource ? [11:59] mape: yes [11:59] mape: could it be that the one working doesn't need oauth to work? [12:00] ditesh|cassini has joined the channel [12:00] javajunky: the one demonstrated in the auth framework does need oauth [12:00] javajunky: its more likely to be to do with the way the parameters ?cursor=xxx is being encoded in the signature in the library , most likely a bug :( [12:00] mape: Well doesn't work if I remove cursor [12:00] javajunky: unfortunately I'm about to leave for a week holiday in a few hours, not sure when I'll be back near a keyboard . [12:01] mape: Ah well, I'll poke at it [12:01] javajunky: sorry dude, if (when) you find the problem please fork it and I'll pull the changes in [12:02] mape: Yeah need to make sure the session stuff isn't bad first [12:02] javajunky: this stuff is a *NIGHTMARE* ..the spec's really unclear about what to do about parameters in various cases … [12:02] javajunky: which version are you using ? [12:02] mape: Latest clone from github [12:02] quirkey has joined the channel [12:02] javajunky: hmm should be ok (I fixed some testcases last night) … but I did notice I'd broken my previously working ie-term example (that had parameters on it... [12:03] javajunky: (which I removed to get the test passing, perhaps that was a mistake :( ) [12:04] voodootikigod_ has joined the channel [12:08] arnaudsj has joined the channel [12:13] fermion has joined the channel [12:14] javajunky: mape it looks like you're right it just isn't working :( .. goddamn [12:14] javajunky: I've not got a second to look at this right now :( . [12:14] mape: javajunky: Hmm I got mine working, I had used the wrong oauth info [12:14] javajunky: oh. [12:14] javajunky: errr .. scratch that then [12:14] javajunky: ;) [12:14] mape: hehe [12:14] javajunky: [12:14] javajunky: glad it works [12:14] javajunky: feel free to add examples to the node-oauth docs ;) [12:15] javajunky: my current working example *is* the express auth framework. [12:15] javajunky: (which covers off twitter, facebook, yahoo … but only really cares about SSO not really getting resouces) … plus the API's crap for posting [12:16] ZhouYu has joined the channel [12:31] derbumi_ has joined the channel [12:32] kriszyp has joined the channel [12:33] andrewhampton has joined the channel [12:33] smtlaissezfaire has joined the channel [12:47] felixge has joined the channel [12:47] felixge has joined the channel [12:47] arnaudsj has left the channel [12:47] thoolihan has joined the channel [12:49] maushu: I'm having problems with setSecure. [12:49] maushu: I have two files a .key and .pem, how do I use them with setSecure to receive https requests? [12:51] maushu: I tried to put the contents of each file in the proper var... it returned this: TypeError: Bad parameter in the createCredentials. [12:52] behmann has joined the channel [12:56] maushu: Searched the irc logs, didn't find anything. >_> [12:56] maushu: Trying the group now. [12:59] pgriess has joined the channel [13:00] maushu: Huh, nevermind... it runs now. O_o [13:00] maushu: After I changed the readFiles to sync. [13:01] maushu: Yay! It works! [13:04] derbumi has joined the channel [13:07] stepheneb has joined the channel [13:07] jherdman has joined the channel [13:22] quirkey has joined the channel [13:22] quirkey has joined the channel [13:26] cssboy has joined the channel [13:28] stepheneb has joined the channel [13:36] tbassetto has joined the channel [13:39] pandark_ has joined the channel [13:40] mikeal has joined the channel [13:44] pandark_: mape, the nm site has gone ? [13:44] pandark_: *npm [13:44] mape: pandark_: ? [13:44] mape: Oh yeah [13:44] mape: I figured if isaac wanted it he should pay for it [13:45] mape: (or I changed httpd and the vhost isn't working :P) [13:45] pandark_: ^^ [13:45] mape: there you go [13:46] stepheneb has joined the channel [13:46] mape: Hmm something is off though [13:47] mape: Hmm guess it is just the screen size that differs :/ [13:47] andrewhampton has left the channel [13:47] pandark_: mape, right it's back :o) is the sorting thing supposed to actually do something ? [13:48] mape: No right now it is just dummy/layout test [13:48] pandark_: ok :) [13:51] mape: pandark_: Any ideas of feedback? :) [13:51] JAAulde has joined the channel [13:51] JAAulde has joined the channel [13:56] pandark_: mape, Well� I'll first use it "for real" and then give a feedback :) [13:56] mape: k [13:59] rra has joined the channel [13:59] gf3 has joined the channel [14:03] fermion has joined the channel [14:05] robrighter has joined the channel [14:05] micheil: hey rob. [14:06] micheil: felixge: oyu there? [14:07] micheil: *you [14:07] felixge: micheil: yeah [14:08] felixge: micheil: sup? [14:08] micheil: on async testing: would it make sense to have a library that defines a method: assert.emits(object, event, [args]) [14:08] micheil: which uses the addListener eventEmitter api to attach a generated function that checks if the event is actually emitted [14:09] ceej has joined the channel [14:09] micheil: similarly, somethingWithACallback(new assert.callback([args...])); [14:09] ncampbell has joined the channel [14:10] micheil: where assert.callback returns a function that checks for the given args [14:11] Dennus has joined the channel [14:12] fermion has joined the channel [14:14] micheil: felixge: that's up ^^ [14:14] micheil: I'm not sure how it'd work yet, but yeah, something I've been thinking about [14:17] ac94 has joined the channel [14:19] andy__ has joined the channel [14:20] Yuffster has joined the channel [14:23] andy__: hi installing hummingbird I'm always arriving here: http://github.com/mnutt/hummingbird/blob/master/server.js#L21 running the node mongodb tests all pass - what can be a cause for not being able to connect to mongod ? [14:23] andy__: pkrumins: OT thanks for all your awesome articles ;) [14:23] mjijackson has joined the channel [14:25] pkrumins: hey [14:25] pkrumins: you're very welcome [14:25] andy__: the error message that mongod gives me is "MessagingPort recv() errno:104 Connection reset by peer 127.0.0.1:4076" but the mongo guys (rightly) don't know why [14:26] softdrink has joined the channel [14:27] andy__: more generally - how does one debug a node app? [14:27] ncampbell: andy__: sys.puts("HAI") [14:27] ncampbell: :) [14:27] felixge: micheil: yeah, I could need something that helps testing event emitters [14:27] felixge: micheil: not sure if it should be in node core so [14:28] micheil: felixge: well, it'd definitely clean up a lot of the tests [14:28] andy__: so this is where you hangout now felixge [14:28] felixge: AD7six: hah, welcome old friend :) [14:28] micheil: I suppose the only problem with adding extensions to the assert module is testing your code that tests [14:28] felixge: AD7six: what ya doing here? [14:28] AD7six: embarassing myself probably ;) [14:29] AD7six: I've only got 20mins node.js under my belt :) [14:29] micheil: AD7six:check the port that mongodb is running on [14:29] micheil: it's default is something like 27017 [14:29] felixge: micheil: I guess we could need a kick-ass test library that helps with things like mocking & also the event emitters [14:30] micheil: hmm.. when I do more work on my websocket server I'll write the methods described above [14:30] micheil: (I'm meaning to write tests for it, just not having the time all the time) [14:30] AD7six: that's what it's using micheil I see "connection accepted ... MessagingPort recv() errorno:104 .... end connection" in my mongod console [14:30] micheil: hmm.. [14:31] micheil: odd [14:31] AD7six: but if I run the driver tests of course there's no errors [14:31] ncb000gt: AD7six: which mongo - node module are you using? [14:32] micheil: ncb000gt: hummingbird uses -native [14:32] kkaefer: * need merging/review of 965 [14:32] ncb000gt: ok [14:32] kkaefer: wrong channel [14:32] ncb000gt: i've used that before and it worked fine. =\ [14:32] AD7six: ncb000gt: http://github.com/christkv/node-mongodb-native ah. [14:35] AD7six: well, figured out how to get a stacktrace at least [14:36] AD7six: sys.puts(fluffybunnies); [14:40] scott_gonzalez has joined the channel [14:42] spotify|rsms has joined the channel [14:42] nefD: hrm.. anyone have any suggestions on a web service/api that will allow be to post a value to it and get back a response which tells me if it is a valid (properly spelled) english word? [14:43] mape: Could use http://dictionary.reference.com/browse/test and scrape the page for a description? [14:44] mape: or just regex the src for [0-9]+ dictionary results [14:48] rsms has joined the channel [14:48] rsms has joined the channel [14:50] AD7six: how can I (ahem) do the equivalent of this sys.puts(JSON.stringify(self)); [14:50] AD7six: I just want to get a look at it [14:51] ncb000gt: Isn't there an inspect method on objects? [14:51] ncb000gt: I can't remember off the top of my head but maybe? [14:51] ncb000gt: or maybe it's on sys [14:51] javajunky: sys.p [14:51] javajunky: will puts + inspect [14:51] javajunky: or sys.inspect on its own [14:51] mape: sys.p [14:51] ncb000gt: javajunky: ahh cool [14:51] mape: duh [14:52] bradleymeck has joined the channel [14:52] AD7six: awesome. sys.puts(sys.inspect(self)); [14:53] ncb000gt: AD7six: from what javajunky was saying, sys.puts(self) should do that too. [14:53] AD7six: orly [14:53] ncb000gt: yarly. [14:53] AD7six: gives me no output [14:53] ncb000gt: hmm [14:53] ncb000gt: ok guess not, [14:54] AD7six: didn't give me an error though - which is what I was expecting (not a string type) [14:54] javajunky: sys.p(self) [14:54] ncb000gt: err sys.p? [14:54] javajunky: => sys.puts(sys.inspect(self)) [14:54] javajunky: give or take [14:54] javajunky: err yes [14:54] ncb000gt: heh [14:55] AD7six: where is sys.p documented [14:55] AD7six: I'm scanning here http://nodejs.org/api.html [14:55] javajunky: err I dunno I just use it [14:55] gwoo: AD7six: good to see u [14:55] AD7six: ha another buddy [14:55] ncb000gt: well what do you know. [14:56] AD7six: how's life at unnamed-bit-company gwoo [14:56] ncb000gt: AD7six:  [14:56] javajunky: perhaps ist aliased somewhere [14:56] ncb000gt: AD7six: http://github.com/ry/node/blob/master/lib/sys.js#L185 [14:56] gwoo: AD7six: fork the project and add the docs [14:56] gwoo: there are a lot of little things like that [14:56] joshbuddy has joined the channel [14:57] magcius has joined the channel [14:58] christkv has joined the channel [14:58] AD7six: oh I must not have saved my file sys.p(self); gives the same thing as you said javajunky [14:59] javajunky: indeed [14:59] AD7six: can anyone link me to an example doc block which is correct/good [14:59] javajunky: doc block ? [15:00] gwoo: AD7six: look at the one for inherits [15:00] gwoo: at the bottom sys [15:00] AD7six: cool [15:01] gwoo: anything that exports needs docs [15:05] caolanm has joined the channel [15:06] mscdex: nefD: google has a spellchecker api [15:09] texodus has joined the channel [15:09] Aria has joined the channel [15:12] AD7six: javajunky: worrying reply :) [15:13] phiggins has joined the channel [15:14] nefD: mscdex: Hmm checking that out now, thanks for the heads up.. i'm wanting to do a word-puzzle type game in js+node.. would ultimately like to cache confirmed good words in a local db to prevent gratuitous hitting of googles service, but im hoping I wont hit a rate limit on their end to start with :P [15:14] sudoer has joined the channel [15:15] jpld has joined the channel [15:16] AD7six: does this mean anything? { message: 'Bad argument', stack: [Getter/Setter] } [15:17] AD7six: oops, truncated. anything I can use to look in the code somewhere more specific. [15:19] joshowens has joined the channel [15:26] mscdex: nefD: http://gist.github.com/406421 [15:26] mscdex: the api uses xml :\ [15:27] phiggins has joined the channel [15:32] mattly has joined the channel [15:33] tlrobinson_ has joined the channel [15:33] ncb000gt: mscdex: omg e4x [15:33] ncb000gt: ACTION ducks [15:33] mscdex: heh [15:34] caolanm: has anyone managed to figure out running unit tests async? I don't see a sensible way it could be done without writing a custom require function with lots of hackery... [15:34] mscdex: well, it's not an official google ajax api [15:34] mscdex: it's used by their toolbar [15:34] ncb000gt: gotcha [15:35] caolanm: since stubbing functions in other modules would affect other tests running in parallel [15:35] ncb000gt: caolanm: http://wiki.github.com/ry/node/modules#testing there looks to be some async testing modules [15:35] ncb000gt: such as Vows [15:36] caolanm: but I think they all handle testing of async code, but can't run tests in parallel [15:36] caolanm: I might be wrong [15:36] caolanm: ACTION investigates [15:37] ncb000gt: caolanm: it's possible, i'm not sure whether they do or not [15:37] caolanm: hmm, you might be right about vows, reading the README [15:37] caolanm: wonder how they're handling the moduleCache [15:37] ncb000gt: maybe they wrapped the module code to manage it themselves [15:38] caolanm: yeah, that's the only way I could think of it working [15:38] caolanm: but it would be a bit nasty [15:39] mjijackson has joined the channel [15:40] ncb000gt: caolanm: no idea, i didn't see anything about modules in the lib directory [15:40] ncb000gt: but that is a fast visual scan, hardly worth trusting ;D [15:41] caolanm: me neither, perhaps vows isn't running everything async [15:41] ncb000gt: maybe not [15:49] kevwil has joined the channel [15:57] phiggins has joined the channel [15:57] voodootikigod_ has joined the channel [15:58] AD7six: gwoo: felixge @all cu guys ;) [15:58] AD7six has left the channel [15:59] ac94 has joined the channel [16:00] scott_gonzalez_ has joined the channel [16:02] Phazm has joined the channel [16:05] wilmoore has joined the channel [16:06] pjb3 has joined the channel [16:10] ditesh|cassini has joined the channel [16:13] caolanm: ncb000gt: just managed to hack around the moduleCache using require.registerExtension to manipulate the source before it gets eval'd ...interesting, but there is no way in hell I'm letting this see the light of day ;) [16:19] _ry: felixge: ping [16:20] binbash^ has joined the channel [16:20] cce_ has joined the channel [16:21] felixge: _ry: pong [16:22] linuxsable has joined the channel [16:22] gwoo: 1 minute latency [16:23] gwoo: felixge: i thought you were in the US now [16:23] felixge: gwoo: the economy, I can't afford to type faster [16:23] felixge: gwoo: ;) [16:23] gwoo: haha [16:24] gwoo: felixge: i know you lost a lot of $ this week on the Euro going down [16:25] felixge: gwoo: who says this didn't happen because I bought all the dollars I could? [16:25] gwoo: hehe [16:25] _ry: felixge: i'm working on your patch [16:26] felixge: _ry: what's wrong with it? [16:26] brianmario has joined the channel [16:26] felixge: I guess I could have changed the names of the arguments in the function to reflect the primary interface [16:26] _ry: right now the legacy string interafce does the encoding in c [16:26] _ry: i'd rather pull that out into js [16:26] _ry: just use the buffer implementation and encode it [16:27] _ry: it will still be a legacy interface though [16:27] _ry: but that'll allow me to simplify node_file.cc code sooner [16:28] bpot has joined the channel [16:28] indiefan has joined the channel [16:29] SubtleGradient has joined the channel [16:29] felixge: _ry: so you mean you want to use the: new Buffer('string', encoding) for it? [16:29] felixge: _ry: should be pretty simple to do [16:29] mikeal has joined the channel [16:29] SubtleGradient: anyone know if node.js works on windows yet? [16:30] _ry: felixge: yeah [16:30] morgan has joined the channel [16:30] steadicat has joined the channel [16:31] _ry: SubtleGradient: it doesn't [16:31] SubtleGradient: thx [16:31] SubtleGradient: any plans for making that happen? [16:31] SubtleGradient: ACTION doesn't use Windows, but works with people who do. [16:33] mjijackson has joined the channel [16:34] mjr_ has joined the channel [16:35] _ry: SubtleGradient: yes [16:35] _ry: SubtleGradient: it's not a huge priority - but it's something i'd like to happen in the near future [16:37] JimBastard has joined the channel [16:37] maushu: _ry: ssl is working for me. [16:37] maushu: So that you know. [16:37] maushu: :3 [16:37] jsilver: Windows sucks [16:37] _ry: maushu: good [16:38] maushu: I will buy a cheap ssl certificate later on and try it out. Probably rapidssl. [16:38] maushu: Well, they do have a trial. [16:39] felixge: maushu: there is a free one [16:39] felixge: maushu: let me see if I can find that for you [16:39] cloudhead has joined the channel [16:40] maushu: felixge: Free ones are usually not supported by most browsers. [16:40] maushu: ...and for that I might as well make my own certificate. [16:40] joshr has joined the channel [16:40] felixge: maushu: no, I know of one that is supported in most browsers [16:40] maushu: Like i did. [16:41] maushu: ...you lie! YOU LIE. [16:41] maushu: Seriously? Weird. [16:41] felixge: maushu: http://www.startssl.com/ [16:43] pquerna: this just in, CAs are terrible. [16:43] maushu: Humm. Low assurance obviously. [16:43] JimBastard: you want ssl? i haz, 20 dollars plz [16:43] felixge: maushu: I can't find the list of supported browsers, but it was recommended by a large IT site [16:43] JimBastard: certified from microsoft [16:43] Aria: StartSSL does more checking than most I've used. [16:43] JimBastard: lolwut [16:44] Aria: I got a call from the CEO to verify my identity. [16:44] maushu: Aria: For the free one?! [16:44] Aria: And I couldn't use my preferred name, it had to be my legal one. [16:44] Aria: No, not for the automatic validation only. [16:45] Aria: But GeoTrust doesn't check any more than StartSSL, and they charge $69 for the privilege [16:47] maushu: Aria: This is also everything about branding. [16:48] Aria: Is it? [16:48] Aria: (I've not once had a customer care where the SSL cert came from, and I'm an ISP!) [16:49] maushu: Lucky you for not having picky customers. :p [16:49] maushu: VERISIGN IS GREAT! THEY MATCH MY NIKE SHOES! [16:51] mattly has joined the channel [16:57] Ori_P has joined the channel [16:57] Aria: Hehe. [17:01] Ori_P: ping _ry [17:02] maushu: Request timeout. [17:03] _ry: Ori_P: hey [17:04] Ori_P: yeepy. At last synchronized.. [17:05] isaacs has joined the channel [17:07] phiggins has joined the channel [17:09] scudco has joined the channel [17:12] isaacs: _ry: you around? [17:13] _ry: isaacs: yeah [17:13] isaacs: did you see the bug i sent to the list about uploading big things? [17:13] isaacs: that's killing a few npm publishes atm. [17:14] mjr_: Is this a new issue? I thought I'd tested really big uploads in previous versions. [17:15] isaacs: mjr_: i'm not sure, i was wondering if it was something you've run into before, since you've kind of been the guy complaining about this surface. [17:15] mjr_: My buffering issues have always been with http server, not client. [17:15] isaacs: right [17:15] _ry: isaacs: yeah, i don't know what that is [17:16] isaacs: so, it seems like the server isn't able to accept all the data being uploaded. but the client doesn't have a drain event [17:16] _ry: im at google i/o right now - so i might disappear [17:16] isaacs: oh, ok, cool [17:16] isaacs: have fun! [17:16] steez has joined the channel [17:17] mjr_: That event sold out pretty quickly. I was meaning to go, since it is right down my street. [17:20] isaacs: hrm. so, is there any way at all to know that the client is done uploading its data? like an underlying socket or something? [17:21] mjr_: there is an underlying socket in .connection [17:21] ssteinerX has joined the channel [17:21] isaacs: ok, and *that* thing would have a drain event, yes? [17:22] mjr_: I forget what the current status is. That thing should have a drain, yes. I think it doesn't work or something though. [17:22] mjr_: This is my mikeal re-did his node proxy to use tcp client instead of http client. [17:24] _ry: isaacs: it should, but it doesn't [17:24] isaacs: i see [17:24] isaacs: i'd really rather not use tcp just because i have to uplaod a file that's bigger than 4kb [17:25] mjr_: it's odd that it doesn't work. [17:25] isaacs: it sounds like this is an opportunity to dig through and fix something. [17:25] mjr_: In fact, I regularly http post documents into couchdb that are larger than 4KB. [17:25] isaacs: in the meantime, keep your npm packages small :) [17:25] isaacs: mjr_: with node? [17:25] mjr_: Like, many times per second. [17:25] mjr_: yeah, with node. [17:25] isaacs: the frequency doesn't seem to matter. just the size. [17:26] mscdex: so you mean size matters? [17:26] charlesjolley has joined the channel [17:26] mscdex: huhu [17:26] isaacs: mscdex: the size, and how fast you put it in, yeah. [17:26] isaacs: if i write it all in one go, it fails for everything bigger than about 4kb. if i send it in 4kb chunks every 100ms, it works for things up to about 10kb. Ned_'s 40kb tarball fails all over the place. [17:27] mjr_: It looks like I stream my upload from the data handler of an incoming http. [17:27] mjr_: So it's kind of hard to say how fast they are going, but I know they are much larger than 4KB. [17:29] mikeal has joined the channel [17:31] _ry: isaacs: is there anyway that you can make a test? [17:31] isaacs: yeah, i'll try it. [17:31] _ry: i think we've got a test already that does upload [17:31] _ry: isaacs: is it chunked? [17:31] isaacs: i really wonder if this is a problem uploading to nginx [17:31] wilmoore has joined the channel [17:31] isaacs: _ry: i think since it's an nginx proxypass, it only does http1, right? [17:31] _ry: oh, probably [17:32] _ry: does http1.0 not do chunked? [17:32] isaacs: hm, the response is still 1.1, though [17:32] isaacs: so it must just be that nginx is caching the data or something and speaking 1.0 to the backend [17:33] _ry: nginx definitely buffers the enitre uplaod before passing it back [17:34] _ry: but if yu hit node directly do you have the same behavior? [17:34] _ry: springsource/gwt tracer looks really nice [17:34] _ry: of course, disgusting - but it looks nice [17:35] isaacs: oh, wait, actually Ned_'s package is only 18kb, not 40 [17:38] isaacs: alright, i'll do some more thorough testing soon. for the moment, it looks like my hacky setTimeout workaround works for everyone who isn't in New Zealand. [17:39] isaacs: so i think there's some kind of network latency issue affecting the situation, which makes it trickier to test. [17:39] mjr_: isaacs: if you are willing to ship something using setTimeout, can you just child_process out to curl and use that to upload? [17:39] isaacs: mjr_: true, it wouldn't be much worse. but otoh, i'd like to not require curl. [17:39] mjr_: well, sure. it is pretty sad that you can't use node to do the upload, but I guess that's why the version number starts with a 0. [17:39] isaacs: exactly [17:39] isaacs: npm's and node's both [17:40] mjr_: curl is really good at uploading [17:40] isaacs: i really want to write a nice full-featured curl-like tool built on node. [17:40] mjr_: Yeah, that'd be great. [17:40] isaacs: maybe not doing ftp, but cookies, custom headers, following redirects, etc. [17:41] _ry: isaacs: yeah [17:41] isaacs: it'll make my node-web-browser dream more attainable :) [17:42] felixge: _ry: do you need any help with that patch? [17:42] _ry: felixge: yes, please [17:42] _ry: it seems like i won't get a chance til later today [17:43] felixge: _ry: got a diff you want to send me? or should I continue with what I have? [17:45] dgathright has joined the channel [17:46] _ry: felixge: no [17:46] felixge: ok [17:46] _ry: well let me send you something [17:47] _ry: but it's broken [17:47] _ry: maybe just to give you an idea [17:47] _ry: nevermind [17:47] _ry: just do it however [17:47] _ry: i think it's broken and messy [17:48] isaacs: felixge: what diff is this? [17:48] pandark_: Today is (un)officially vp8/webm day ! :o) [17:48] felixge: isaacs: fs.write / buffer stuff [17:49] stevendavie has joined the channel [17:49] TobiasFar has joined the channel [17:49] aconbere: anyone use the optparse module? [17:51] _ry: i wonder if anyone is working on ftp [17:53] gwoo: how cute...http://github.com/saucelabs/monocle/blob/master/examples/http_server.py [17:54] dgathright has joined the channel [17:55] _chakrit has joined the channel [17:57] kriszyp: The docs say I can access the connection stream from request.stream, but that seems to always be undefined for me. [17:57] kriszyp: any suggestions on how to access the tcp stream? [17:57] kriszyp: or otherwise be notified when a connection gets closed by the client? [17:57] kriszyp: and determine the remote ip address of a client [17:58] mjr_: I think it is request.connection [17:58] mjr_: it is odd that the docs say request.stream [17:59] kriszyp: oh, nice [17:59] kriszyp: the next best thing to good docs is a good irc channel ;) [17:59] _ry: i think that was a global replace problem [18:01] mikeal has joined the channel [18:01] gwoo has joined the channel [18:01] CIA-74: node: 03Ryan Dahl 07master * rc489c2c 10/ doc/api.markdown : Fix api for request.connection - http://bit.ly/bVVRrR [18:04] SubtleGradient: is there a test/runner module for node.js? [18:04] stephenlb has joined the channel [18:04] SubtleGradient: the node.js tests seem to be using python to run them. Bizarre [18:05] kriszyp: there is a nice selection of testing tools for node on the node modules page [18:05] kriszyp: I was actually looking for something similar to test/runner for node [18:05] JimBastard: i like vows [18:05] kriszyp: I liked node-async-testing, fwiw [18:05] SubtleGradient: http://github.com/subtleGradient/Sheet.js/blob/develop/Test/lib/sg-testrunner.js [18:05] SubtleGradient: that's what I'm using right now [18:05] JimBastard: http://github.com/cloudhead/vows [18:05] kriszyp: but I am curious what others like [18:05] SubtleGradient: it works with narwhal style tests [18:06] JimBastard: SubtleGradient ^^ [18:06] kriszyp: it is somewhat similar, but narwhal doesn't have any async support, AFAICT [18:06] _ry: SubtleGradient: what's wrong with python ?:) [18:06] kriszyp: what I really miss is the recursive object descent and global var checking of narwhal's test/runner [18:06] JimBastard: vows has async support [18:07] kriszyp: probably easy to add to any of them though [18:07] SubtleGradient: It's like Python using Ruby to run its tests [18:07] SubtleGradient: nothing wrong with Ruby, just… bizarre [18:07] _ry: SubtleGradient: for running tests piggybacking on something not under heavy development is good [18:07] fermion has joined the channel [18:07] SubtleGradient: yeah, I guess you shouldn't let something test itself [18:08] _ry: process.platform is also taken directly from python :) [18:08] SubtleGradient: I'm quite happy about tons of concepts and things taken from Pythong. [18:08] SubtleGradient: they really did a lot of stuff right [18:08] _ry: yep [18:09] SubtleGradient: I still like JS better though :D [18:10] SubtleGradient: My goal is to write universal JS. Code that works everywhere with no modifications and minimal dependencies. [18:11] SubtleGradient: Sofar I've managed to get my Sheet.js http://github.com/subtleGradient/Sheet.js running and testing on node.js, narwhal & web with only 2 extra files than my bare tests. A test runner for node.js and a test runner for QUnit. [18:12] SubtleGradient: and those 2 extra files are only necessary to make the narwhal test/runner style tests run on node.js and the web using qunit [18:12] JimBastard: SubtleGradient: what about the browser? [18:12] maushu has joined the channel [18:12] SubtleGradient: Browser: http://subtlegradient.github.com/Sheet.js/Test/run.html CommonJS: http://subtlegradient.github.com/Sheet.js/Test/run.js [18:13] SubtleGradient: my tests are actually totally implementation agnostic. [18:13] JimBastard: got ya [18:14] SubtleGradient: so on the web I'm running my API verification tests against both Sheet.js (my own code) and the browser's native document.styleSheets [18:15] SubtleGradient: supporting async tests universally would be the next logical major leap [18:16] SubtleGradient: I'll look into vows [18:16] SubtleGradient: the fact that it appears to only target node.js is kindof worrying. [18:17] SubtleGradient: it'd be nice to have only a single solution for all CommonJS environments and a single solution for all web browsers (including mobile and embedded) [18:17] aconbere: is there a good reason for path.join("", "x") to return "/x" [18:17] aconbere: this is... pretty scarry behavior [18:18] aconbere: mostly it scares me in situations like [18:18] ncb000gt: aconbere: you prefixed it with "" [18:18] aconbere: fs.rmdir(path.join(myVar, "home")); [18:18] aconbere: in the chance that myVar is null / "" [18:18] aconbere: we remove /home [18:19] aconbere: ncb000gt: yeah but in most of the languages I can find path joining on an empty string returns the original string [18:19] ncb000gt: aconbere: check before you do fs.rmdir [18:19] aconbere: so [18:19] aconbere: ncb000gt: I would have to check before path.joining [18:19] aconbere: you can't check before rmdir [18:19] aconbere: cause... well.. you might want to rmdir a root directory [18:20] aconbere: I mean that's what I do [18:20] aconbere: I just monkey patch path's join [18:20] aconbere: to behave safely [18:20] ncb000gt: aconbere: seems you're right, if that's been standardized then i'd think that path.join should function similarly [18:20] ncb000gt: to remove the confusion [18:20] felixge: _ry: patch time: http://github.com/felixge/node/commit/39504904125cd6779dee54a89b12d22e56df3998 [18:20] felixge: :) [18:21] aconbere: bah [18:21] ncb000gt: aconbere: submit a patch [18:21] aconbere: ruby does it that way [18:21] ncb000gt: hmm [18:22] felixge: whups, copy & paste fail in the commit msg [18:22] felixge: fixing [18:22] aconbere: well, maybe I'll be stuck with my monkey patched version [18:22] felixge: _ry: http://github.com/felixge/node/commit/5bc89f931130bee4739fc11c28abb61c81c44014 [18:23] ncb000gt: heh ok [18:23] mikeal has joined the channel [18:23] aconbere: It seems like a ... bad default for a dynamic language [18:23] aconbere: :) [18:25] aconbere: oooooh [18:25] aconbere: node> ["", "test"].join("/") [18:25] aconbere: '/test' [18:25] aconbere: that's why [18:25] felixge: _ry: also see this comment: http://github.com/felixge/node/commit/5bc89f931130bee4739fc11c28abb61c81c44014#L2R594 [18:26] aconbere: ACTION suspects [18:26] aconbere: I should just look at the code [18:26] ncb000gt: aconbere: yes [18:26] ncb000gt: :) [18:26] ncb000gt: exports.join = function () { return exports.normalize(Array.prototype.join.call(arguments, "/")); [18:26] ncb000gt: }; [18:26] ncb000gt: it's doing exactly the call above [18:27] stephenlb: heh [18:27] mikeal: does someone have code that sits on the twitter push stream for search? [18:28] mde: mikeal: aconbere has been asking about fs/path-wrangling code. You have anything like that? [18:28] mjr_: mikeal: somebody posted one a while ago. It is super amazingly easy to write it. [18:29] mikeal: path wrangling like what? [18:29] mikeal: i have a walk function for recursively parse a directory tree [18:29] mde: Yeah, I think that's exactly what he's talking about. [18:31] mikeal: http://gist.github.com/406652 [18:31] mikeal: i should stick that in an installable library [18:32] mikeal: oh, that reminds me [18:32] mikeal: i was going to add some features to request today [18:32] fermion has joined the channel [18:33] charlesjolley has joined the channel [18:34] felixge has joined the channel [18:34] felixge has joined the channel [18:34] mikeal: isaacs: http://gist.github.com/406655 [18:34] mikeal: error updating npm [18:34] aconbere: mikeal: yeah I have one too [18:35] aconbere: mikeal: and a bunch of path functions (abspath / relpath, etc.) [18:35] aconbere: and mkdirs (from isaacs) [18:35] mikeal: __dirname and __filename are already abspath [18:35] aconbere: (for mkdir -p behavior) [18:35] mikeal: and i almost always start with those [18:36] aconbere: mikeal: I need abspath of arbitrary file paths [18:36] mikeal: i don't need abspath nearly as much as i did in Python [18:36] aconbere: mostly expanding .'s and ~'s [18:36] mikeal: node is a lot more consistent [18:36] aconbere: and joining the path to process.cwd() [18:37] mikeal: oh man, i forgot about something i was going to log [18:37] mikeal: the subprocess stuff needs to accept a different cwd [18:38] wilmoore_ has joined the channel [18:46] bpot has joined the channel [18:48] aconbere: mikeal: so yeah I was thinking about trying to collect some of these tools and publish them [18:48] mikeal: where is that HTTP SSL client demo? [18:48] aconbere: I'm sure my implimentations aren't perfect [18:48] mikeal: i have a repo that I'm doing that in [18:48] mikeal: node-utils [18:48] aconbere: ah yeah I've seen that [18:48] mikeal: i have one module, request, which is all my http code [18:49] mikeal: that i used to cut and paste around [18:49] mikeal: you can go ahead and fork it and add your stuff if you want [18:49] mikeal: just create another commonjs module in there and push it to the npm registry when you're done [18:49] mikeal: dirutils or something like that [18:50] aconbere: sounds good [18:50] bananushka has joined the channel [18:51] mikeal: it sounds like a very useful assortment of code, i'm sure I'll use it too :) [18:52] netz has joined the channel [18:52] aconbere: yeah I end up using it a lot [18:52] charlesjolley has joined the channel [18:53] mikeal: once isaacs got npm working I had a reason to stop cutting and pasting all this code around :) [18:54] aconbere: heh [18:54] aconbere: how about fileutils [18:54] aconbere: kind of mirrors where Ruby sticks all this junk [18:54] mikeal: sounds good to me [18:54] mikeal: i suck at names :) [18:54] ncb000gt: mikeal: pfft...DRY...it's a fad. [18:54] aconbere: who said that computer science was that art of naming? [18:55] mikeal: ncb000gt: it's not that, it's that I would fix a bug or add a feature and then I'd have to track down all the places i used the damn code [18:55] ncb000gt: mikeal: heh, the main reason to DRY [19:00] _chakrit: or to strong-type :) [19:00] netaez has joined the channel [19:01] _ry: felixge: i think you can call ASYNC_CALL now [19:01] felixge_ has joined the channel [19:01] felixge_ has joined the channel [19:01] polo has joined the channel [19:01] _ry: felixge: also the sync legacy [19:02] _ry: line 603 node_file.cc [19:03] mikeal: so [19:03] felixge_: _ry: ok [19:03] mikeal: when i'm using the assert module [19:03] mikeal: and i have a callback with an error object [19:03] mikeal: what is the best way to pass that to assert to get it to throw the error? [19:03] mikeal: or should i just not bother with assert and throw it? [19:03] felixge_: _ry: what about using ASYNC_CALL? [19:06] netaez has joined the channel [19:08] felixge_: _ry: got rid of the second legacy thing: http://github.com/felixge/node/commit/0280d4cf119d457ccfd9214525025526e645f97d [19:13] christkv has joined the channel [19:16] technoweenie has joined the channel [19:17] Ori_P has joined the channel [19:17] sveisvei has joined the channel [19:18] wilmoore has joined the channel [19:22] joshowens has joined the channel [19:25] aconbere: mikeal: my approach has been to throw them [19:25] aconbere: but lord knows if that's best [19:25] aconbere: :-P [19:26] mikeal: assert throws them as well [19:26] mikeal: it would be really nice if i could get rid of this if statement [19:26] mikeal: assert.ifError(error) [19:26] mikeal: which will throw it if it's not null or undefined [19:26] aconbere: that's cute [19:26] aconbere: I like it [19:26] mikeal: really useful when testing callback [19:26] aconbere: yeah [19:26] aconbere: as opposed to always writing [19:27] aconbere: if (err) { blah...} [19:27] mikeal: _ry: would that be accepted or are you sticking with stuff defined by commonjs in that assert module? [19:27] mjijackson has joined the channel [19:27] aconbere: mikeal: do you have any testing preferences, I use minitest right now which I like pretty well for managing my tests (nothing special, but I don't feel like reinventing the wheel) [19:28] mikeal: i haven't used any of them [19:28] mikeal: everyone was going nuts for spec modules and I really hate that crap [19:28] mikeal: so i just kind of stayed out of all the testing modules [19:28] mikeal: assert is nice tho [19:28] aconbere: right, so minitest is mostly a wrapper around assert [19:28] mikeal: does it just collect and run test functions in modules? [19:29] aconbere: http://github.com/botanicus/minitest.js/tree/ [19:29] aconbere: no! [19:29] aconbere: but I wish it did [19:29] aconbere: like nose or... py.test [19:29] mikeal: pretty highlighitng [19:29] mikeal: don't get me started on nose [19:29] aconbere: I suppose we could just... write nose.js [19:29] aconbere: :P [19:29] aconbere: haha [19:29] aconbere: not a fan? [19:29] mikeal: i'm super annoyed a those guys [19:29] aconbere: I always used py.test [19:29] mikeal: no, the opposite [19:29] mikeal: it's a great module [19:30] mikeal: but there are a bunch of bugs [19:30] aconbere: lame [19:30] aconbere: built by tummy right? [19:30] mikeal: and they wont't take patches for known bugs unless you write twice as many lines of test code [19:30] aconbere: hahaha [19:30] aconbere: well of course ;-) [19:30] mikeal: i know those guys fairly well [19:31] mikeal: and they all know each other and mostly live in Chicago [19:31] mikeal: contributions outside of that circle just have a hard time making it in [19:31] aconbere: right [19:31] mikeal: like, if you aren't Titus or one of his undergrads or someone at Frog labs or whatever that place is called, just forget it [19:32] aconbere: well I agree... an assert oriented inline test collection tool would be optimal [19:32] aconbere: I don't suppose it would be that hard [19:33] aconbere: basically... walk through a directory structure ("./") [19:33] aconbere: require every js file you find [19:33] aconbere: search those objects for keys taht start wtih ("test_") [19:33] aconbere: and then run those functions [19:33] mde: Wow, that sounds so familiar somehow ... [19:33] aconbere: haha [19:33] aconbere: who wrote this already! [19:34] aconbere: I demand to know [19:34] aconbere: actually it sounds a lot like my static blog generator [19:34] aconbere: but I'm hoping mde meant a testing tool [19:34] mde: Well, it's for client-side code, but: http://wiki.github.com/windmill/windmill/javascript-tests [19:34] maushu has joined the channel [19:34] smtlaissezfaire has joined the channel [19:35] mikeal: mde: your js code doesn't collect the files tho [19:35] mikeal: my Python code is what does that :) [19:35] mde: mikeal: Yeah, but tjat [19:35] mde: That's the easy part. [19:35] mde: It also has to do all that ugly injection stuff, which wouldn't be needed server-side. [19:35] felixge has joined the channel [19:35] felixge has joined the channel [19:35] mikeal: yeah, windmill requires a lot more "framework" tho [19:35] mikeal: there is a lot of synchronous state that has to get kept around [19:36] mikeal: minitest looks nice but even this is too much boiler [19:36] mikeal: minitest.context("Context#setup()", function () { [19:36] mikeal: i'm never typing that [19:36] mde: Wouldn't be too hard to pull out the parser/runner. [19:36] mikeal: i want something less than the windmill framework tho [19:36] mikeal: for node unit testing you don't need all that setup and teardown stuff [19:37] mde: I want something minimal to parse/run/report. [19:37] mikeal: right [19:37] mikeal: i say, have the file execute on it's own [19:37] mde: Just that what you're describing is the WM parse code, exactly. [19:37] mikeal: so disabling tests in the file is just commenting out the line that runs them [19:37] aconbere: I mean ... I think my approach above would actually work [19:37] christkv2 has joined the channel [19:37] mikeal: don't do setup/teardown stuff [19:38] mde: And I want something that I *can* use to run the same tests in a browser. [19:38] aconbere: wait... but why even do that [19:38] aconbere: why not just inject the setup code by having a specially named fucntion [19:38] aconbere: _test_setup [19:38] aconbere: or whatever [19:38] aconbere: if that exists [19:38] aconbere: we run it [19:38] mikeal: i don't want it to run the functions for me [19:38] aconbere: and then we run the tests [19:38] aconbere: ooooh [19:38] mikeal: because then you're going to be defining a bunch of ordering stuff [19:38] mikeal: and then you have a big framework [19:38] mikeal: which you don't need [19:39] mikeal: if you step back a bit [19:39] mikeal: the biggest reason you have all this crap in Python/Ruby/Everywhere [19:39] mde: I just want a basic runner that I can tell to wait between tests for different stuff to happen. [19:39] mikeal: is that when you finish executing a file the VM exits [19:39] mjr_: pcap is coming together. I think I have all the C++ plumbed now, so just need to write decoders in JS for IP, TCP, etc. [19:39] mjr_: http://github.com/mranney/node_pcap [19:39] technoweenie has joined the channel [19:39] mikeal: so you *have* to build framework around it that will run things in order and wait for them to return/exit before exiting the interpreter [19:40] mikeal: with node you dont' [19:40] mikeal: let the file be executable [19:40] mikeal: let do everything in the order it wants to [19:40] mikeal: then it can do all kinds of crap in callbacks [19:40] mikeal: set a sane default, let the script change the default if it wants [19:40] mde: I just want some basic asserts and a waitForCondition. [19:41] mikeal: mde: basic asserts are already in the assert module [19:41] morganallen_ has joined the channel [19:41] derbumi has joined the channel [19:41] mde: Yeah, I looked at it very briefly when I was building the Postgres module. [19:41] mikeal: you also don't need waitForCondition [19:41] aconbere: hmmm [19:41] mikeal: waitForCondition is a hack [19:41] mikeal: to wait for some external event/callback to happen but block some main execution [19:42] aconbere: mikeal: okay... so we collect all the tests in the modules [19:42] mikeal: you don't need it if the interpreter isn't going to exit until everything exits the event loop [19:42] aconbere: then what do we do? [19:42] mikeal: subprocess exec them one at a time [19:42] mde: No, I don't want to always have to add something test-specific to the callback. [19:42] mikeal: and check their exit code [19:42] mde: Or wrap it. [19:42] mde: I just want to run my async tests, and make sure the next one waits until some external condition is satisfied. [19:42] mikeal: mde: i know what you're asking for, and i think you're wrong [19:43] mde: Just like it would be in production. [19:43] mikeal: it's actually less code to handle it in the test [19:43] mikeal: and all the API already support this, unlike what we have to contend with in windmill [19:43] mikeal: so [19:43] mikeal: stop thinking "async" test [19:43] mikeal: all tests are async because all code is async [19:43] mde: I'm dubious, but I'll suspend judgement until I write more tests. [19:43] mde: Not all code is async. All I/O is async. :) [19:44] aconbere: hehe [19:44] aconbere: mde: and I had this discussion :) [19:44] mikeal: same diff :) [19:44] mde: Haha [19:44] mikeal: i'll write something up [19:44] mikeal: it won't add any API surface [19:44] mde: Good to have something to throw rocks at. [19:44] mikeal: just collect and run test files [19:45] aconbere: mikeal: do we care about running them all in a collection? [19:45] mikeal: a directory is a collection [19:45] mikeal: you pass a directory to the command line utility [19:45] aconbere: mikeal: why not just use async file IO to discover the modules, and then run them from there [19:45] aconbere: I guess subprocesses would give you some inssulation from failure [19:46] mikeal: it also doesn't get in the way [19:46] mikeal: it means the test is already and executable file [19:46] mikeal: that you can just run node test_file.js on [19:47] aconbere: so you're still suggesting we have external tests (not inline) [19:47] mikeal: yes [19:47] mikeal: i feel the same way about inline tests as I do about big ass inline doc strings [19:47] mikeal: fuck em [19:47] aconbere: heh [19:47] aconbere: okay [19:48] mikeal: they just make the code long and ugly and put the test/doc somewhere that a normal tester/user won't find it [19:48] aconbere: it's true [19:48] aconbere: I generally end up using py.test like you're describing anyway [19:48] mikeal: py.test has some cool stuff or parallelized testing [19:48] mikeal: but this stuff will work easily in parallel [19:49] phiggins has joined the channel [19:50] sechrist has joined the channel [19:50] Aria has joined the channel [19:50] aconbere: okay I'm all ears I have some notion of how I think this would work, but I'm curious to see what your approach will be [19:50] sechrist: node stdin and stdout with encoding? [19:50] sechrist: awww shit [19:50] aconbere: in the mean time, I'm going to write some minitest tests for my file and path functions [19:50] aconbere: :) [19:51] aconbere: I figure I can convert them later [19:52] javajunky has joined the channel [20:06] felixge has joined the channel [20:06] felixge has joined the channel [20:07] Ori_P_ has joined the channel [20:08] bengl has joined the channel [20:10] marktlang has joined the channel [20:11] sechrist: so is there a way I can tell if an object would be freed by the gc? [20:11] sechrist: it's using C++ code and the CPP code looks error free, but I can't be sure.. doing the GD operation 500 times in a loop gets ridiculous on memory usuage [20:13] N` has joined the channel [20:13] DracoBlue has joined the channel [20:16] ewdafa_ has joined the channel [20:20] charlesjolley has joined the channel [20:22] ac94 has joined the channel [20:27] _ry: felixge: okay i think the patch looks good [20:27] felixge: _ry: cool :) [20:30] mattly has joined the channel [20:31] sechrist: _ry, is there any sort of method to free an object explicitly, c-style? Or a way to see if the gc would free an object?.. or rather.. invoke the gc? [20:31] sechrist: trying to test for a leak and I'm finding it difficult [20:32] Aria has joined the channel [20:34] technoweenie has joined the channel [20:36] elliotcm has joined the channel [20:40] derbumi has joined the channel [20:42] maushu: sechrist, hummmn, the closest thing would be to put undefined in the variable. [20:43] maushu: Don't forget about closures. Those are a pain. [20:43] sechrist: well, I'm calling gd.createFromPngPtr(result.response.body); in an interval [20:43] sechrist: not assigning it to a variable, just calling [20:43] sechrist: and it's leaking hardcore [20:44] sechrist: so it may be the GD binding [20:44] sechrist: I have no idea how to tell >:( [20:44] wilmoore has joined the channel [20:44] sechrist: nearly 200kB of leak per call [20:45] sechrist: surely it varies per image size [20:45] DennusB has joined the channel [20:51] CIA-74: node: 03Felix Geisendörfer 07master * rc46cbe0 10/ (5 files in 4 dirs): [20:51] CIA-74: node: Deprecate string interface for fs.write() [20:51] CIA-74: node: This patch makes buffers the preferred input for fs.write() and [20:51] CIA-74: node: fs.writeSync(). The old string interface is still supported by [20:51] CIA-74: node: converting strings to buffers dynamically. This allows to remove the [20:51] CIA-74: node: C++ code for string handling which is also part of this patch. - http://bit.ly/a8PdUM [20:51] _ry: felixge: thanks [20:51] felixge: _ry: thanks for merging / reviewing! [20:52] _ry: slightly changed - just did the ASYNC_CALL [20:55] tilgovi has joined the channel [20:56] siculars has joined the channel [20:56] creationix: has anyone recently used the optparse-js library [20:56] creationix: I'm having trouble getting any of the events to fire [20:57] javajunky: ughh going to be afk for a week , wonder if node will have bumped to 0.4 by the time I get back ;) [20:58] creationix: javajunky: we'll be on v0.1.9997 [20:59] wilmoore has joined the channel [21:00] _ry: felixge: will you do fs.read too? [21:00] felixge: _ry: yes [21:00] _ry: cool [21:00] felixge: _ry: I need my buffers happy :) [21:01] gwoo: felixge: you dump httpsocket for buffers, didnt you? :P [21:01] fizx has joined the channel [21:01] felixge: gwoo: I can have both, can I not? :) [21:01] fizx has joined the channel [21:01] gwoo: i had not pegged you as a swinger [21:01] sechrist: http://github.com/taggon/node-gd/blob/master/gd_bindings.cc -- the Persisent<> templ -- around line 83 -- does that place the object's memory into v8's scope? [21:02] sechrist: trying to figure out wtf is leaking this memory :( [21:02] sechrist: valgrind crashes with node for me [21:05] mscdex: sechrist: well, there should generally be a HandleScope at the top of the functions [21:05] felixge: correct me if I'm wrong, but there is no way to tell the name of a function if one only has a reference to it in JS, is there? [21:05] felixge: :| [21:05] mscdex: but i'm not sure that will help the function in question [21:06] sechrist: mscdex: it has it, as far as I know [21:06] mikeal: ry, aconbere: http://github.com/mikeal/node/commit/9e13daadc0432c69aeb4213937230dc6d1f4d09c [21:06] sechrist: I didn't write it -- i'm just trying to get image processing working without leaking :\ [21:07] creationix: felixge: there are ways [21:07] felixge: creationix: tell me! [21:07] mikeal: so nice to use when testing callback errors [21:07] aconbere: ACTION looks [21:08] aconbere: mikeal: totally [21:08] aconbere: I like it [21:08] creationix: felixge: one way is to decompile the function and use regexp to pull out the name [21:08] mscdex: sechrist: i mean in the CreateFrom##TYPE## and CreateFrom##TYPE##Ptr functions [21:08] creationix: not ideal, but possible [21:08] felixge: creationix: I don't get the name of a function when toString()ing it [21:08] creationix: then it's not named [21:08] felixge: creationix: I'm talking about a function like this: Obj.prototype.foo = function() { [21:08] creationix: felixge: no, there is no way to find what variables point to an object [21:09] felixge: creationix: ok [21:09] felixge: creationix: thanks [21:09] mscdex: sechrist: same with any of the other static functions -- but like i said, adding the HandleScope to the top for some of those functions may not matter [21:09] creationix: if you knew the object, you could search through it for a property that points to the function [21:09] creationix: I think === will work there [21:09] mscdex: sechrist: might be worth a shot though [21:09] sechrist: mscdex: adding that line wouldnt really do much without calling the new handle object right? I'm not familiar with these interfaces [21:10] mscdex: sechrist: how much of a "memory leak" is it? does the leak stabilize after some time? [21:10] sechrist: no, it doesn't [21:10] sechrist: it's linear [21:10] sechrist: 700 objects and 2 hours later node is at like 500mB memory usage [21:10] sechrist: and climbing [21:11] sechrist: I did a slow setinterval because I read the GC only runs idle [21:11] sechrist: so I gave it a lot of idle time [21:11] mscdex: hrm [21:11] rolfb has joined the channel [21:11] sechrist: mscdex: also that #define func RETURN_IMAGE has the HandleScope [21:11] sechrist: which is used in the static funcs createfromX etc [21:11] mscdex: yeah i just saw that [21:12] mscdex: such an odd way of coding [21:12] sechrist: it's so C [21:12] sechrist: obviously taggon likes C over C++ [21:13] mscdex: sechrist: i'm wondering if it has to do with the use of Persistent [21:13] mscdex: in RETURN_IMAGE [21:13] sechrist: yeah I mentioned that earlier [21:13] sechrist: but I don't know what these templates do -- I'm very new to v8 even [21:14] sechrist: I guess I can try to take that out -- and watch crashes ensue [21:14] jbrantly has joined the channel [21:15] sveisvei has joined the channel [21:15] javajunky has joined the channel [21:15] mscdex: sechrist: persistent handles have to be explicity disposed of [21:16] sechrist: mscdex: well okay, if RETURN_IMAGE gives it to the js engine -- there's no way to kill the object from within node that I know of [21:16] sechrist: or how is this supposed to be handled [21:16] mscdex: sechrist: i'm not an expert on V8 either, just some experience from writing one binding yet ;-) [21:17] mjr_: I don't really know what I'm doing with v8 either, but I have noticed that another valid word before Persistent is Local. [21:17] mjr_: er, instead of Persistent [21:18] DracoBlue has left the channel [21:18] mscdex: yeah, that's a local V8 pointer to the c++ pointer [21:19] mscdex: sechrist: maybe try adding a function that disposes an image handle that's passed in [21:19] mscdex: then call it from js [21:19] mscdex: see if it helps any [21:19] sechrist: that's silly, but okay [21:20] mscdex: heh [21:20] sechrist: I do like the idea though -- I dislike the concept of GCs [21:20] sechrist: any language with a GC and a delete/free = :D [21:20] andrewhampton has joined the channel [21:21] mscdex: well, i'm thinking that since it's a persistent handle, it stays in memory until you say you're done with the image [21:21] mscdex: and so you have to have a way to tell it you're done with the image resource [21:22] mscdex: *shrug* [21:23] sechrist: mscdex: can I make it a local handle? [21:24] samsonjs has joined the channel [21:24] mscdex: give it a try, it might get GC'ed though [21:24] sechrist: hahahahaha, mscdex, taggon already implemented .destroy() [21:24] sechrist: but no documentation or use of it in the examples! [21:25] mscdex: heh [21:26] sechrist: well now the memory usage stabilizes. Fantastic! [21:27] siculars has joined the channel [21:29] mscdex: yay [21:30] _ry: mikeal: can you add docs to your commit? [21:30] mikeal: sure [21:30] mikeal: i'll update the branch and send you a branch diff [21:30] mikeal: all unified and nice how you like it :) [21:30] _ry: :) [21:31] _ry: ACTION bbiab [21:33] sechrist: my code is working perfectly now -- I think node is the fastest development environment i've ever adapted to [21:34] mscdex: ;-) [21:34] saikat` has joined the channel [21:35] bmizerany has joined the channel [21:36] mjr_: Did we ever come up with a sub-millisecond time solution? [21:36] bmizerany has joined the channel [21:37] sechrist: mjr_: what are you doing, writing an atomic clock in node? [21:37] mjr_: no, just targeting nuclear missiles. [21:37] sechrist: ah okay [21:37] sechrist: Is there anything like a 'stable' release of node? or just the current version in git? [21:38] mjr_: JavaScript's Date time is milliseconds, which seems fine for browsers, but isn't precise enough for my network timing thing. [21:38] isaacs has joined the channel [21:38] sechrist: I wrote part of a gameserver in node, and even with bandwidth calculation based on latency MS and drop metrics ms was fine [21:39] sechrist: but yeah I digress, everybody needs nanoseconds :D [21:40] darkf has joined the channel [21:42] mscdex: sechrist: 0.1.95 is the latest stable [21:42] sechrist: oh so there is a concept of stable [21:43] mscdex: yes [21:43] sechrist: I've just been checking out whatever is on github [21:43] mjr_: well, *kinda* stable. [21:43] sechrist: which is 0.1.95 [21:43] charlesjolley has joined the channel [21:43] sechrist: ah okay [21:43] mscdex: well, stable compared to git head [21:43] mjr_: every version so far has its own charming bugs and differences. [21:43] mscdex: *more stable [21:43] mscdex: ;-) [21:43] sechrist: the dev cycle is so rapid right now [21:43] mjr_: But tagged versions are your best bet compared to HEAD. [21:44] elliotcm: New branch designations? Stable, stabler and stablest? [21:44] sechrist: I haven't encountered a dehabilitating bug yet [21:44] sechrist: is there like a feature freeze, then bug fixes, or kind of a clusterfuck? [21:47] mscdex: mjr_: for nanosecond accuracy, you could whip up a little addon that uses clock_gettime() from sys/time.h [21:47] mjr_: sechrist: I believe the plan is that 0.2.0 will have a more stabilized API. Until then, things are pretty dynamic. [21:48] mjr_: mscdex: Yeah, that's already what I'm doing. I'm passing those times back into JavaScript, where they get truncated to the nearest millisecond. [21:48] sechrist: mjr_: no kidding -- just about every module on the github list throws "deprecated -- use blah blah instead" [21:48] jbrantly has left the channel [21:48] mscdex: mjr_: truncated on purpose or? [21:48] mjr_: sechrist: it's all a bit crazy right now, and knowing all of this, I'm still here. [21:49] mjr_: mscdex: The JS Date object only stores milliseconds, doesn't it? [21:49] mscdex: mjr_: oh, i thought you were just using the raw value and not converting it to a date? [21:50] mjr_: I have a struct timeval and I'm converting it with Date::New() in C++ land. [21:50] sechrist: mjr_: oh the crazyness is fun -- but using this for production apps has been somewhat grey-hair causing [21:50] sechrist: luckily I've got everything down so far [21:52] mikeal: resig wrote a big blog post about this like a year ago [21:53] mikeal: the limitations of performance time testing in javascript [21:53] isaacs: mikeal: yeah, that's why node-bench just runs your test a bunch of times, and then divides the number of runs by the actual reported time. [21:54] _ry: there was a patch for getting nanosecond timings [21:54] isaacs: the science of sociology is based on the principle that the unreliability of individual measurements can often be abstracted out en masse [21:54] mikeal: a patch for v8? [21:54] _ry: isaacs: where was that patch you sent me yesterday [21:55] _ry: that removes a bunch from script.cc [21:55] _ry: mikeal: for node [21:55] _ry: s/nano/micro/ ? [21:55] mikeal: i would have thought it was a v8 thing [21:55] isaacs: _ry: oh, um.... can you email me? i'm just about to head out in a few minutes. [21:56] _ry: isaacs: nm i'll find it [21:56] isaacs: kk [21:56] aconbere: mikeal: I sent you a pull request [21:56] isaacs: _ry: it's on my repl-cwd branch [21:58] mikeal: aconbere: which repo? [21:59] maushu has joined the channel [22:01] aconbere: node-utils [22:02] Dennus has joined the channel [22:03] CIA-74: node: 03Ryan Dahl 07master * rd8af9d8 10/ (src/node_file.cc test/simple/test-fs-write-buffer.js): Minor style changes for fs.write code - http://bit.ly/atT5Wg [22:03] CIA-74: node: 03isaacs 07master * r78be1e4 10/ src/node_script.cc : [22:03] CIA-74: node: Remove the ReportException from the Script class [22:03] CIA-74: node: This is so that syntax errors can be handled discretely in places like the [22:03] CIA-74: node: repl, where SyntaxErrors are expected and normal. - http://bit.ly/bYxkgw [22:04] sechrist: agh! node-s3 doesn't support streaming files >= 10mB yet? hmm [22:04] _ry: is there an upload bug? [22:04] _ry: :/ [22:05] mjr_: I often can't do proper sarcasm detection on _ry's IRC persona. [22:07] sechrist_ has joined the channel [22:08] sechrist: _ry: yes Cannot call method 'flush' of undefined [22:08] sechrist: it's in the notes http://github.com/grippy/node-s3 [22:09] mjr_: Also isaacs posted on the mailing list about it and in the scrollback. [22:09] bmizerany has joined the channel [22:09] mikeal: aconbere: i think "file" might actually be a reserved package name [22:09] isaacs: sechrist: you are feelingmy pain! [22:10] mikeal: aconbere: nevermind [22:10] mikeal: it's not [22:11] sechrist: isaacs: indeed [22:11] isaacs: sechrist: can you do this reliably locally? [22:11] mikeal: aconbere: merged/pushed [22:11] mjijackson has joined the channel [22:11] mikeal: did you push this to the npm package registry yet? [22:11] sechrist: I haven't even used the library yes, isaacs [22:11] mikeal: also, README.md would be nice :) [22:11] sechrist: I was going to git clone and start using it [22:11] sechrist: then I read the readme [22:11] sechrist: and went :( [22:14] aconbere: mikeal: I haven't pushed to npm yet [22:14] aconbere: mikeal: would you like a global readme or locals for both packages? [22:14] derbumi_ has joined the channel [22:14] mikeal: it's a flat namespace so if you want the module named "file" you should do it now :) [22:14] mikeal: locals [22:14] sechrist: isaacs: are you saying the >=10mB bug isn't reproducible? [22:14] isaacs: mikeal: it's like twitter's namespace. it's flat, but there's a dictator. [22:14] mikeal: the one for request is in /request/README.md [22:15] isaacs: sechrist: not reliably. sometimes it works fine for me. [22:15] aconbere: ah [22:15] aconbere: I'll add one for file [22:15] isaacs: sechrist: but it doesn't work from new zealand. [22:15] sechrist: new zealand creates software bugs? [22:15] sechrist: wat [22:15] mikeal: aconbere: eventually there will be a top level one that just links to the others [22:15] isaacs: aconbere, mikeal: also, npm is enforcing ownership now. i'll add something soon to be able to have two users attached to a project. [22:16] mikeal: contrubutors attribute? [22:16] isaacs: sechrist: i think it's a network latency issue. [22:16] micheil: hmm.. that latest hto article leaves a bit to be desired [22:16] isaacs: micheil: there's something on the top level object, actually; [22:16] sechrist: isaacs: any failed packet = flush fail? [22:16] sechrist: makes sense [22:16] isaacs: er, mikeal ^^ [22:16] isaacs: sechrist: not sure. [22:16] mikeal: cool [22:17] isaacs: mikeal: check out my js-registry fork for details. [22:17] mikeal: i think the most pressing issue is that pretty web page :) [22:17] isaacs: yeah, totally [22:17] isaacs: mape's on that [22:17] mikeal: i need to merge that [22:17] tilgovi has joined the channel [22:19] sechrist: isaacs: how reliable is this module for small files under 10mB? -- like thousands of thumbnails :) [22:24] mikeal: ok [22:24] mikeal: time to head to the city [22:24] mikeal: isaacs: speaking on browser testing [22:24] mikeal: there is a meetup at the Mozilla office tonight [22:24] mikeal: Selenium people, but i'll be there and i think maybe some other node people [22:25] isaacs: mikeal: interesting. [22:25] isaacs: why do i alwyas hear about the se things at the last minute? [22:25] isaacs: hehe [22:25] mjr_: yeah, me too. [22:25] mikeal: well, it's in your hood [22:25] isaacs: rightright [22:25] mjr_: I guess I'm not on the right twitters. [22:25] isaacs: what time? [22:27] aconbere: hmpf [22:28] mikeal: like 6 i think [22:28] mikeal: gotta run to the city to catch my ride [22:28] mikeal: you've got my number if you need to call [22:28] aconbere: http://gist.github.com/406932 [22:28] aconbere: isaacs: ^ [22:28] isaacs: oh, found it http://www.meetup.com/The-Mountain-View-Mozilla-Meetup-Group/calendar/13323102/ [22:29] aconbere: so install failed with an eaccess failure (okay I get that) [22:29] aconbere: I would rather have installed it locally [22:29] aconbere: but either way [22:29] aconbere: now when I try to install it proper, it says everything is installed [22:29] isaacs: aconbere: you can get around that by setting the --binroot config to tell it where to go [22:29] aconbere: and there's no clean target [22:29] isaacs: aconbere: make uninstall [22:29] tylerstalder has joined the channel [22:29] isaacs: aconbere: yeah, rollback-able installs coming soon. [22:31] aconbere: hmmm... I feel al ittle dumb but make --binroot=/path/ ? [22:32] isaacs: aconbere: sorry, i mean, use npm directly by doing ./cli.js --binroot=/path/ [22:32] isaacs: but i should probably have the makefile pass params along, that'd be cool [22:32] spotify|rsms has joined the channel [22:32] isaacs: aconbere: or edit your ~/.npmrc file and add "binroot = /path/" in there [22:33] aconbere: pffft [22:33] aconbere: that sounds like a plan [22:37] isaacs: oh, wait, no = in the cli arg [22:38] gf3 has joined the channel [22:40] freshtonic has joined the channel [22:40] inimino: http://hacks.mozilla.org/2010/05/firefox-youtube-and-webm/ [22:41] inimino: awesome [22:42] derRichard: yeah. :) [22:46] hassox has joined the channel [22:56] jedschmidt has joined the channel [23:00] aconbere: okay [23:01] aconbere: ACTION crosses his fingers [23:01] aconbere: I'm going to try publishing to npm [23:01] isaacs: sweet [23:01] isaacs: the adduser worked? [23:02] MattJ: npm is yesterday [23:02] MattJ: node needs an app store [23:02] isaacs: hahaha [23:02] isaacs: srsly! [23:02] MattJ: We'll be millionaires overnight [23:02] isaacs: how can you even BEGIN to take a piece of technology seriously if it doesn't have an app store!? [23:02] MattJ: Exactly. [23:02] chilts: lol [23:06] aconbere: isaacs: nope! auth failed, and the man pages aren't leading me to an adduser [23:06] isaacs: aconbere: npm help adduser [23:07] isaacs: npm adduser [23:07] bolson has joined the channel [23:07] aconbere: yep got it [23:07] aconbere: and it published [23:07] isaacs: aconbere: this is also helpful: http://github.com/isaacs/npm/blob/master/doc/developers.md#readme [23:07] aconbere: oooo [23:07] aconbere: yeah I probably should have started there [23:08] isaacs: aconbere: yeah, so, you probably saw when you installed that it complained about not being able to install hte documentation. [23:09] isaacs: aconbere: those man pages are also in the repo. you can do "man man/developers.1" and that's just like doing "man npm-developers" if it installed right. [23:12] pandark_: 'night [23:12] aconbere: cool, well... it looks like file is reserved [23:12] aconbere: but if I require the full path to the file [23:12] aconbere: require("file/main") [23:12] aconbere: that works [23:12] aconbere: hmpf [23:13] aconbere: well maybe that's something to fix for another day [23:14] airportyh has joined the channel [23:14] siculars has joined the channel [23:15] ryan[WIN] has joined the channel [23:19] sechrist_ has joined the channel [23:20] mattly has joined the channel [23:22] sechrist_: isaacs: Is there a branch of s3 that is compatible with 0.1.95 out of the git? [23:23] isaacs: sechrist_: no idea [23:23] _ry: is tehre a js meeting today? [23:23] _ry: so many meetings [23:24] sechrist_: Are there JS meetups in mountain viewish? [23:24] sechrist_: seems like I remember seeing something advertised at the hacker dojo but I don't remember [23:24] grahamalot has joined the channel [23:26] joshbuddy has joined the channel [23:27] bmeck has joined the channel [23:29] felixge has joined the channel [23:29] felixge has joined the channel [23:31] aconbere: it's a js meetup every day in my hawaiian bungolo [23:31] robinduckett has joined the channel [23:34] hober: aconbere: when did you leave seattle? [23:35] aconbere: hober: a year and a half ago :) [23:35] aconbere: chased a girlfriend [23:35] aconbere: got her pregnant [23:35] aconbere: heading back for the family :) [23:37] Phazm has joined the channel [23:37] bmeck has joined the channel [23:38] aconbere: besides you wouldn't believe how lame the tech scene in hawaii is [23:39] isaacs: _ry: its' a browser testing meetup, not a js meetup. [23:40] smtlaissezfaire has joined the channel [23:40] hober: aconbere: good times [23:42] polotek has joined the channel [23:43] mjr_: node> (204 << 24) === (204 * 16777216) [23:43] mjr_: false [23:43] mjr_: boo [23:43] mjr_: I guess bit shifting doesn't work past a certain point, so why is it even in there? [23:44] bmeck: well bit shifting in javascript is generally to be avoided to begin with [23:44] wilmoore_ has joined the channel [23:45] mjr_: ok, sure, but why is it there then if it doesn't work? [23:45] bmeck: plus unless you are using longs instead of ints that would occupy 32 bits alone (including the sign bit!) [23:46] bmeck: so some semantic difference due to the ability to keep multiplication in float could cause that error [23:47] mjr_: yeah, I know it set's the "sign" bit, depending on how that is stored internally, but I 204 * 16777216 yields the expected, unsigned, answer. [23:50] Tim_Smart has joined the channel [23:51] bradleymeck: well the multiplication is not done by ints generally [23:51] bradleymeck: bit operations imply casting to int performing operation and then recasting to float/double [23:58] felixge_ has joined the channel