[00:00] bmizerany has joined the channel [00:01] JshWright: creationix: heh, I just realized I hit the wrong irssi window, this is a couchdb issue, not a node.js issue [00:01] creationix: ahh, I was about to day that looks like a couch query [00:01] JshWright: indeed it it [00:01] JshWright: s/it$/is/ [00:01] creationix: no problem, good luck [00:03] quirkey: creationix: hey hey [00:04] quirkey: creationix: at nyc.js [00:04] creationix: I saw a great presentation on sammy last tuesday by Brandon Aaron (from jQuery) [00:04] quirkey: yeah, I heard [00:04] quirkey: his demo was awesome [00:04] creationix: the html5 and css3 really made the demo [00:05] quirkey: yeah, it looked great [00:05] mikeal: ok _ry, i've got a minimal reproduction [00:05] mikeal: http://gist.github.com/360681 [00:06] binary42 has joined the channel [00:06] mikeal: i don't even know how to title this issue [00:08] creationix: mikeal, that's an awesome test to thrash the browser [00:08] creationix: does it pull the iframe before receiving all the content [00:08] mikeal: i force refresh the page really really fast [00:08] mikeal: yeah, it creates as many connections as the browser has for the site limit [00:11] mikeal: improved http://gist.github.com/360681 [00:12] mikeal: now it won't try to write if the events have fired [00:19] _ry: hm, he's listening on the request object not the http object .. [00:24] brainproxy has joined the channel [00:26] bronson has joined the channel [00:32] mravaux has joined the channel [00:52] charlesjolley has joined the channel [00:53] brapse has joined the channel [00:53] sh1mmer has joined the channel [00:56] dcnstrct has joined the channel [00:57] dcnstrct: anyone doing: facebook -> flash -> (the internets) -> node.js -> avro -> Cassandra ? or will I be the first if I get it working ? [00:57] KungFuHamster: I'm trying to do Facebook/Flex/node, but not the rest [00:58] dcnstrct: good enough, best of luck to ya [00:58] KungFuHamster: thanks, you too [00:59] sh1m has joined the channel [01:06] devinus: dcnstrct: wow...thats....quite the rube goldberg machine you've got there [01:08] dcnstrct: lol [01:08] dcnstrct: I thought someone might get a kick out of it [01:09] dcnstrct: I'm trying to see just how bleeding edge I can get [01:09] mjr_: That edge sounds awfully bloody. [01:09] dcnstrct: if I were using HTML5... [01:09] mjr_: and websockets [01:10] dcnstrct: now you're talkin [01:14] jbowman has joined the channel [01:20] mjr_: I just upgraded my HTTP proxy thing to HEAD, and I sometimes see the "Stream already opened" error that mikeal was getting. [01:20] mjr_: http://gist.github.com/360754 [01:21] mjr_: The error message is somewhat confusing because the line that caused it was calling .close(), because I wanted it closed. [01:21] mjr_: I guess the client went away and I didn't properly notice it. [01:21] derferman has joined the channel [01:23] ditesh|cassini has joined the channel [01:30] fictorial: creationix: what'd you find out about websockets and node HEAD? [01:30] creationix: you have to send the framing bytes as binary [01:30] creationix: utf8 can't send FF bytes anymore (they're illegal in utf8 anyway) [01:31] mjr_: Life was so much simpler before UTF-8 [01:32] fictorial: creationix: ah, makes sense - I think ws.js was doing setEncoding('utf8') for the life of the socket [01:32] creationix: well, setEncoding is for reading, not writing [01:32] mravaux has joined the channel [01:32] fictorial: oh really? what does write() use when you don't specify the encoding? [01:33] creationix: the second argument is the encoding [01:33] fictorial: right, what if one does not specify it [01:33] bpot has joined the channel [01:34] _ry: yeah there are some funky things going on still on HEAD [01:34] _ry: damn it.. [01:35] fictorial: binary [01:35] fictorial: ok [01:35] fictorial: had to chase that done through the code to node.h, ParseEncoding [01:36] creationix: _ry, do we have showstoppers still? [01:36] fictorial: heh, I didn't realize that TBH. I assumed setEncoding was for both read and write. ok, good to know. [01:37] _ry: creationix: i think what mjr_ and mikeal brought up are pretty bad [01:37] _ry: http://github.com/ry/node/issues#issue/95 [01:38] softdrink has joined the channel [01:38] isaacs has joined the channel [01:38] creationix: dang, so I'm guessing no release yet? [01:38] fictorial: I don't get that gist: var closer = function () {response.closed_} [01:39] _ry: no, no release yet [01:39] _ry: yeah the gist is messed up [01:39] gf3: creationix: howtonode.org isn't on Wheat yet? [01:39] _ry: he should listen for errors on req.connection [01:39] devinus: isaacs: comma-first sucks [01:39] creationix: gf3, no, I hope to have it done this week [01:39] devinus: there. i said it. [01:39] isaacs: devinus: how long have you been using comma-first style? [01:39] fictorial: well the end doesn't close anything, at least in that gist. unless I'm missing something. [01:40] devinus: isaacs: tried it for a day. didn't enjoy it [01:40] isaacs: devinus: then you're not qualified to comment yet. sorry. [01:40] _ry: /kick devinus [01:40] fictorial: haha [01:40] gf3: devinus / isaacs: with proper syntax highlighting, it doesn't matter where the commas are :) [01:40] _ry: ;) [01:40] isaacs: devinus: keep using it. let me know what you think in august. [01:40] fictorial: are you referring to object literals? [01:40] isaacs: ACTION starting to regret commenting on the subject... [01:41] fictorial: I'm trying it too, I kind of like it. [01:41] gf3: creationix: cool, I plan to use Wheat for my personal site [01:41] devinus: isaacs: getting abused? [01:41] isaacs: hehe [01:41] isaacs: devinus: no, it's just a bikeshedding can of worms. [01:41] gf3: mhmm [01:41] isaacs: so, anyone know how to get a Handle with "[object Object]" out of a v8::Object value? [01:42] isaacs: _ry: ^? [01:42] _ry: hmm? [01:42] isaacs: _ry: if i've got a Handle, is there a way to get "[object Object]" out of it? [01:42] mravaux has joined the channel [01:42] isaacs: _ry: obj->ToString() returns undefined, apparently. [01:43] _ry: that would be my only suggestion [01:43] isaacs: hrm. ok. [01:43] isaacs: well, don't throw non-errors or non-strings. [01:43] isaacs: oh, wait a second. no, my fault. i'm dumb. [01:43] isaacs: derp. [01:44] _ry: if anyone is bored - they could turn this gist into a test/pummel test [01:44] _ry: http://gist.github.com/360681 [01:44] _ry: by calling ab [01:44] _ry: (-c 500) [01:44] _ry: simplify it as much as possible [01:44] _ry: ACTION is going home. Try to take another look at this bugs later on. [01:45] _ry: s/Try/i will try/ [01:45] _ry: longing for the 0.1.33 days when bugs where few [01:46] kriskowal_ has joined the channel [01:46] fictorial: How does this work? http://github.com/creationix/wheat/blob/master/lib/wheat/git.js [01:46] creationix: fictorial, it's just a wrapper around the command-line git command [01:46] creationix: uses git show to treat a git repo as a file system [01:47] fictorial: oh, silly me. here I got lost on some tangent where I thought git.js was being loaded as a module, and that require somehow knew about references or something. nevermind. [01:48] fictorial: actually, I'm confused. wheat.js does require("git") which is the file I linked to. [01:50] creationix: http://github.com/creationix/wheat/blob/master/lib/wheat.js#L24 [01:50] creationix: fictorial ^ [01:51] kriskowal has joined the channel [01:51] fictorial: right... but that just lets you do require("git") instead of require("./wheat/git") [01:51] devinus: is calling my commonjs LRU cache Alzheimer politically incorrect...? [01:51] fictorial: but... the file git.js that's loaded just contains node-git/lib/git.js ... [01:51] fictorial: what am I missing? :) [01:52] creationix: ahh, it's linked to a submodule [01:52] creationix: run the install.sh in the root [01:52] mrjjwright has joined the channel [01:52] davidrussell has joined the channel [01:53] creationix: or git submodule init and git submodule update [01:54] fictorial: ok here's what is happening... [01:54] fictorial: I'm reading this file's contents on github... I just checked this out and realized I'm looking inside a symlink. [01:54] fictorial: geez [01:55] mjr_ has joined the channel [01:55] fictorial: ACTION got too much sun today [01:55] creationix: yep, github shows symlinks funny [01:55] fictorial: that's all a symlink is though - path in a file [01:55] devinus: who is cloudhead [01:56] devinus: he's very prolific [01:56] creationix: Alexis Sellier [01:56] creationix: look on http://wiki.github.com/ry/node/node-users [01:56] creationix: devinus ^ [01:57] devinus: creationix: yeah, i mean here, does he frequent ? [01:58] fictorial: for the curious: http://en.wikipedia.org/wiki/Symbolic_link#Storage_of_symbolic_links :) [01:58] ditesh has joined the channel [01:59] creationix: devinus, I'm afraid I don't know his that well, I see him from time to time [01:59] isaacs: _ry: sent the patch to support catchable process.compile() syntax errors. [01:59] isaacs: _ry: and still retaining valid stacks. [01:59] isaacs: devinus: re LRU cache, yes, I'm pretty sure you're going to hell for that. [02:00] devinus: isaacs: amnesia is already taken :[ [02:00] fictorial: devinus: that's kind of funny [02:00] davidrussell has left the channel [02:00] isaacs: devinus: well, to be effective, you should really have it randomly get upset and shit itself while punching someone. [02:01] isaacs: devinus: i mean, to match the name. [02:01] fictorial: heh [02:02] devinus: isaacs: twitter? [02:02] isaacs: devinus: i'm @izs [02:04] devinus: http://pastie.org/910781 i have no fucking idea how it works but it does [02:06] fictorial: http://pastie.org/pastes/910781/abuse ... too obtuse. [02:09] devinus: fictorial: apparently its the fatest one out there [02:09] devinus: fastest* [02:12] hellp has joined the channel [02:25] fholm_ has joined the channel [02:31] ssteinerX has joined the channel [02:32] steadicat has joined the channel [02:43] gf3: creationix: still around? [02:44] creationix: sure [02:45] gf3: creationix: is this supposed to be `throw` rather than `args =`? [02:45] gf3: http://github.com/creationix/node-git/blob/master/lib/git.js#L79 [02:45] creationix: no, but it is supposed to be an array, my bad [02:46] creationix: sadly you can't throw from async callbacks, it will be uncatchable [02:46] creationix: args = [new Error...] [02:46] gf3: right [02:48] creationix: fixed it [02:49] gf3: nice [02:52] sh1mmer has joined the channel [03:00] amerine has joined the channel [03:09] binary42 has joined the channel [03:13] sh1mmer has joined the channel [03:15] Aria has joined the channel [03:20] softdrink has joined the channel [03:22] andreavonhollen has joined the channel [03:26] gf3: creationix: uh oh, check this out (from the git manpages): [03:26] gf3: "If nothing matches, git show-ref will return an error code of 1, and in the case of verification, it will show an error message." [03:27] creationix: I noticed that [03:27] creationix: you're talking about my git library right? [03:27] gf3: yea [03:27] gf3: Git.getTags [03:27] creationix: yeah, I'm actually thinking that wheat won't use tags after all [03:28] creationix: the getTags function could be fixed easy enough though [03:28] creationix: just return an empty array when the return value is 1 [03:28] gf3: mmm [03:28] gf3: well I suppose it makes sense to return the error, as that's what git does [03:29] creationix: but it's not an error in my case [03:29] creationix: getTags should return an empty array [03:29] gf3: mmm [03:29] gf3: exit code is 256, btw [03:29] creationix: do you need tags for something or are you trying to use wheat [03:30] gf3: I'm just playing around right now, I hope to use Wheat for a couple upcoming sites [03:30] creationix: I'm in the middle of refactoring wheat right now, it will look different in the morning [03:30] gf3: I really like what you've done so far [03:30] creationix: thanks, me too [03:30] gf3: let me know if I can do anything [03:30] creationix: there are parts I haven't figured out yet, but hopefully it becomes clear as I get to them [03:31] creationix: well, once I have the engine done, I'll need some serious updating of all the howtonode articles [03:31] creationix: both in format and content [03:32] creationix: but I won't know what format for sure till I'm done with the engine [03:32] gf3: mmm [03:32] gf3: I was thinking it would be cool to have per-article public resources as well [03:33] creationix: like images and stuff? [03:33] creationix: it has that [03:33] gf3: yea exactly [03:33] gf3: I noticed the snippets dir [03:34] creationix: also it can render dot (graphviz) files on the fly [03:34] creationix: may add other formats if needed [03:34] creationix: I like my diagrams to be text based in the repo, not binary images [03:34] gf3: ok cool, I see how you've done it [03:36] creationix: right now I'm removing all the inline caching [03:36] creationix: it's pointless in development and not fast enough for production [03:37] creationix: I'll instead have a production setting to save all generated pages as static files in a cache directory [03:37] creationix: then the nginx frontend will pull from there if the file exists [03:38] gf3: cool, in that case you can probably wrap up the static assets as an nginx rewrite rule too [03:39] gf3: (also currently looks like you grab the `encoding` based on the mime, but you always send back "binary") [03:40] devinus: it would be cool to have an entire module be a function you could call.......... [03:41] gf3: devinus: var Lol = module.exports = function(){...}; [03:41] creationix: well, nginx can't serve the static files directly, they will be stored in a bare git repo [03:41] creationix: no real files there [03:41] mrjjwright has joined the channel [03:41] creationix: working directories are messy to update remotely [03:42] creationix: devinus: I do it all the time [03:42] andrewhampton has joined the channel [03:43] creationix: my plan is to have my main repo on my server and push to that instead of github [03:43] creationix: it will have a hook to republish to github as a public mirror [03:43] devinus: module is a reserved ? [03:43] gf3: creationix: would it not be easier to do the reverse? [03:44] creationix: no, because github hooks can't push to other repos afaik [03:44] gf3: push to github, have a hook to trigger a server pull [03:44] creationix: there is a http based hook, but that's a pain [03:44] creationix: that's how howtonode works right now [03:44] avidal: not really, if you already have a web server running [03:44] creationix: I don't like it [03:44] avidal: hrm [03:45] creationix: besides, I don't want to be unable to publish articles should github go down again [03:45] creationix: I'm already dependent on my server for hosting the app, who not host my git repo too [03:48] devinus: hai gaiz http://pastie.org/910869 [03:48] devinus: that makes me proud [03:48] devinus: FASTEST natural sort on the web [03:48] devinus: w00t [03:48] fictorial: What are you using it for? [03:49] devinus: gf3: put that in your prototype pipe and smoke it [03:49] fictorial: well, fastest maybe in Javascript :) [03:49] devinus: fictorial: http://github.com/devinus/fotofoo [03:50] gf3: devinus: neato [03:51] fictorial: how are you liking SproutCore? [03:51] devinus: fictorial: BEST SHIT EVER [03:52] fictorial: ok ok :) [03:52] devinus: fictorial: company has reimplemented so much old n crufty apps in it in no time [03:52] fictorial: nice [03:53] fictorial: I just heard about ukijs today - anyone know anything about it? [03:53] fictorial: http://ukijs.org/mail/index.html [03:53] devinus: fictorial: it's cool if you feel like reimplementing the same shit over and over again [03:53] avidal: that looks pretty cool [03:54] gf3: fictorial: it's neat but there's some work to be done [03:54] fictorial: I see [03:54] gf3: fictorial: check this: http://gist.github.com/360609 [03:54] avidal: and that mail app is pretty snappy [03:54] PyroPete1 has joined the channel [03:54] fictorial: oh my [03:54] avidal: haha [03:55] fictorial: why on Earth is it using inline CSS [03:55] fictorial: or is that just the computed stuff? [03:55] avidal: and data uris, heh [03:55] fictorial: ACTION has not done proper webdev in a few years [03:55] avidal: that mail demo is still pretty slick though [03:56] avidal: faster than most other similar apps i've seen [03:56] fictorial: indeed.. I see the data url lol [03:56] avidal: and it's only 35k, hrmm [03:56] gf3: fictorial: two of them :P [03:57] devinus: fictorial: gf3 avidal: data urls are the new hotness [03:57] avidal: they have their place, yeah [03:57] gf3: apparently [03:57] avidal: don't they have a max size also? [03:57] gf3: I'm gonna add them to all my CSS [03:57] fictorial: is that just the computed css though or is actually writing that out for checkboxes? [03:57] devinus: data url > http request [03:57] gf3: devinus: depends [03:57] avidal: i think it's data uri, not url [03:57] avidal: semantics i guess [03:58] devinus: fictorial: computed [03:58] avidal: fictorial: that's actually written out, it's not the browser inlining the styles [03:59] fictorial: avidal: that's what I meant -- ok. [03:59] avidal: go to the ukijs.com website, click Run Code, and then highlight that area and view selection source (or inspect element) [03:59] avidal: you'll see it in there [04:00] gf3: devinus: the shitty thing about data-uris is that they are larger than the actual resources (base64) and they block page loading [04:01] avidal: you sure they block page loading? the only benefit to a data uri in that case would be that it can be stored in your js/css instead of as an image. but if parsing/rendering a data uri blocks, then is it really worth it? [04:01] devinus: gf3: right...but when you're SC or Capp with a shit ton of resources datauris are where its at [04:02] gf3: SC? [04:02] devinus: gf3: sproutcore [04:02] gf3: OIC [04:02] gf3: what about sprites? [04:02] devinus: gf3: no, those are still sprited [04:03] devinus: gf3: maybe not in capp tho, but i know in sc they r [04:03] gf3: mmm [04:03] JimBastard has joined the channel [04:03] devinus: capp is turning everything into a datauri soon so i heard [04:04] devinus: those dudes are nuts [04:04] gf3: heh [04:04] avidal: what's capp? cappuccino? [04:04] gf3: devinus: is your naturalSort somewhere I can watch? [04:05] devinus: gf3: http://github.com/devinus/fotofoo if you can get it running [04:06] devinus: gf3: i tested it against the way apple natsorts and its the same [04:10] steadicat has joined the channel [04:22] jed has joined the channel [04:34] fictorial: I wish there was an editor that only showed you exactly one function at a time like a flash card. The closest thing is folding editors like scite and vim (I'm sure emacs has this). But I don't want to see anything else but what I'm working on... maybe also the functions that are referenced in the function I'm looking at. [04:38] r11t has joined the channel [04:38] gf3: fictorial: in vim you could fold the stuff you don't want to see [04:39] gf3: well I guess you could do that in most editors [04:40] fictorial: right, I just don't want to even see the folds. I suppose I'm looking for an "aspect" editor if you will. [04:41] gf3: I most certainly will not [04:42] fictorial: heh [04:42] fictorial: I mean just show the code relevant to some feature I'm working on - bah, maybe I'm crazy. [04:42] r11t_ has joined the channel [04:47] r11t__ has joined the channel [04:54] steadicat has joined the channel [04:59] JimBastard: yo voodootikigod_ whats up with node party on friday [04:59] JimBastard: of jsconf [05:06] konobi: open hack party i believe [05:11] markwubben has joined the channel [05:31] devinus has joined the channel [05:40] creationix has joined the channel [05:40] creationix: I need help naming a pattern I've discovered [05:40] creationix: it's kinda like a short term cache on async calls [05:41] creationix: basically I have a situation where a function takes a name and a callback, let's assume it's fs.readFile [05:41] creationix: if I call fs.readFile('somefile.txt', callback) and then call it again with the same arguments before the first finishes, I don't want to have two concurrent instances running [05:42] creationix: I want the second to see the first is still waiting on the first to complete the same query [05:42] creationix: when the first finishes, then both call their callbacks with the shared data [05:43] CIA-77: node: 03Ryan Dahl 07master * r323a5e1 10/ doc/api.markdown : Change how events are represented in docs - http://bit.ly/cUd2QL [05:43] CIA-77: node: 03Ryan Dahl 07master * ra5184fe 10/ (doc/api_header.html doc/sh_vim-dark.css): Change api.html style - http://bit.ly/c8fonT [05:46] creationix: I've got this pattern implemented here http://github.com/creationix/wheat/blob/master/lib/wheat.js#L57 [05:48] creationix: I know fs.readFile is a bad example because the OS likely caches the result, but for my gitReadFile and my graphviz renderer it really matters [05:53] _ry: i think stdout should be global [05:53] _ry: objections? [05:54] _ry: stdout.writeln('hello') [05:54] _ry: kind of long still.. [05:54] _ry: stdout.puts('blah') [05:54] _ry: (I don't like seeing sys.puts everywhere) [05:55] Aria: So include it into your namespace. . . [05:55] _ry: creationix: what happens if two people (connected to, say, a tcp server) want to both acess gitReadFile [05:56] creationix: if they request at the same time, the first one will lock the request, the second one will register interest in the first's output and when the first finished, they both get the result [05:56] creationix: only if they had the same arguments [05:57] creationix: the mini cache is keyed by the first argument [05:58] creationix: since child processes are so slow (and use a fd each) I had to do this to handle any kind of concurrency when benchmarking [05:58] creationix: but since it's not a long-term cache, you never get stale data [05:58] creationix: the mini-cache is cleared as soon as it's done [05:59] Aria has joined the channel [06:00] creationix: my full page renders in about 300ms from a cold start, but ab can get 3000+/second with 100 concurrent requests [06:01] creationix: I still plan on using full page caching from nginx for the production site on top of this, but it's a great start [06:07] _ry: did anyone look at my new api.html style? [06:07] _ry: do you hate it? [06:07] creationix: ACTION is looking [06:07] mape: Live? [06:08] _ry: no on the repo [06:08] creationix: _ry, how do I build it [06:08] _ry: (make doc) [06:08] creationix: make docs? [06:08] creationix: ACTION installing ronn... [06:09] _ry: :) [06:09] creationix: dude, that's retro [06:10] creationix: it could use a little more color in the headings so they are easier to scan [06:10] creationix: but it looks nice otherwise [06:10] _ry: it's the default ronn style but with different colors [06:10] creationix: hmm, need overflow-x on the code blocks [06:10] creationix: they sometimes go over the toc [06:11] admc has joined the channel [06:11] _ry: yeah - need to just make the examples fit into 60 columns :) [06:11] creationix: that works too [06:11] creationix: better actually [06:14] creationix: beautiful, up to date docs [06:15] creationix: _ry, question about child processes, is there a need to close the streams after getting the "exit" event from the child? [06:15] creationix: or is the child already dead at that point [06:22] creationix: git show is really slow on linux for some reason http://beta.howtonode.org/ [06:22] creationix: the bg image takes ages to download [06:23] creationix: actually, no, that should be using fs.readFile since it's on a working directory, I don't know why it's so slow then [06:23] mape: When getting Error: EMFILE, Too many open files, anything typical that would cause that? (when using apache bench with a lot of concurrent connections) [06:24] mcarter has joined the channel [06:25] creationix: mape, I get that all the time [06:25] creationix: are you opening several files per request? [06:25] mape: Should be no files, I'm fetching data from mySQL, caching that in an js object and serving that as jsonp [06:26] creationix: probably the mysql driver then [06:26] creationix: did you see my pattern I described above? [06:26] creationix: it solved the too many open files issue when benchmarking [06:27] mape: But shouldn't matter if there are 100 or 1000 connections since I fetch the mySql and cache it in a global object [06:27] mape: So it doesn't fetch for every request [06:27] creationix: something is holding file handles for every request or you wouldn't get that error [06:27] mape: Hmm k [06:27] creationix: I almost always see it when dealing with child processe [06:27] creationix: s [06:28] creationix: also 1000 concurrent connections is real close to too many on it's own [06:29] mape: Yeah, it isn't really an issue just figured I'd as so it isn't something silly I'm doing [06:30] creationix: also, have you seen the explination about running out of high ports for the ab client to use [06:30] mape: Hmm no haven't seen that *googles* [06:32] creationix: http://stackoverflow.com/questions/1216267/ab-program-freezes-after-l [06:33] mape: Great, thanks [06:33] creationix: but I don't think that will trigger the EMFILE error you were seeing [06:33] creationix: it will just cause AB to pause till the ports timeout [06:33] mape: Ah ok [06:34] creationix: and here's the node thread on the same subject http://groups.google.com/group/nodejs/browse_thread/thread/5603d27c95bf3f8d [06:39] jed has joined the channel [06:43] kriskowal_ has joined the channel [06:43] bronson has joined the channel [06:55] creationix: is is possible to make one output stream pump to several input streams? [06:57] creationix: I mean, I just need to implement a custom pump right? [07:02] felixge has joined the channel [07:03] pdelgallego has joined the channel [07:04] kriskowal has joined the channel [07:07] felixge: _ry: new doc style looks nice [07:19] creationix: morning felixge [07:20] felixge: creationix: morning :) [07:20] creationix: good work on docs to you too [07:24] Gruni has joined the channel [07:26] kriskowal: _ry there's a commonjs module "system" that has stdout,stderr,stdin,args,env. it does not define the types of the stdio objects. [07:27] JimBastard: morning felixge [07:27] jed: morning felixge [07:27] felixge: JimBastard: morning. I'm adding filter() over the weekend, promised :) [07:27] JimBastard: huzaah! [07:27] JimBastard: its gonna be close, im gonna try my best to get dirty before jsconf [07:27] felixge: JimBastard: hehe :) [07:28] JimBastard: im one day into a seven day sprint >.< [07:28] felixge: JimBastard: would be nice, but if not blame me [07:28] felixge: :) [07:28] felixge: JimBastard: we're going to launch transloadit at jsconf [07:28] JimBastard: yeah yeah [07:28] felixge: JimBastard: seriously :) [07:28] felixge: JimBastard: already got a pricing page: http://transloadit.com/plans ;) [07:29] jed: felixge: wow, awesome news. [07:29] JimBastard: i went into the github room today and said : "i keep making issues on my github project but no one is fixing them. is github broken?" [07:29] felixge: JimBastard: did they fix it? [07:29] JimBastard: felixge are you familiar with the drop.io api? [07:29] felixge: JimBastard: no [07:30] JimBastard: http://dev.drop.io/ [07:30] JimBastard: not sure how much that applies to what you are doing [07:30] JimBastard: but i think you could make a mashup with a drop.io like service [07:31] JimBastard: maybe not [07:31] JimBastard: still good to look at [07:31] mape: felixge: Any reason they go from most expensive to cheapest? [07:31] mape: Rather then the other way around [07:31] felixge: JimBastard: sure, if we had some time : ). Right now we're focusing exclusively on being an infrastructure service [07:31] JimBastard: of course [07:32] felixge: mape: yeah, that's what 37signals does. I don't like them, but they do A/B Split testing and I don't, so their signup concept wins :) [07:32] mape: Hmm k, I came of thinking the service was expensive since it started at $499, but I guess I'm different then ;) [07:33] felixge: mape: you want to see expensive? [07:33] psynaptic has joined the channel [07:33] felixge: mape: http://simplegeo.com/plans/ [07:33] felixge: :) [07:33] mape: That is just silly [07:33] mape: hehe [07:34] felixge: not sure if it is [07:34] mape: Hmm never seen the reversed order of pricing before [07:34] mape: Well for me it is, I guess large companies have no issues paying for the service [07:34] felixge: mape: a ton of web apps that sell plans do it [07:34] felixge: mape: actually, I think you get a lot with the free plan [07:34] creationix: it's a good idea actually, called the anchor effect [07:34] felixge: once you need more than 1 million api calls / month, you are probably making enough money [07:34] felixge: :) [07:35] mape: Set the bar high and lower it to make the user feel they are getting a good deal? [07:35] creationix: if a person's first impression is the high price, then the cheaper prices seem less in comparison [07:35] mape: There is a good TED talk about that [07:36] felixge: I should make the first plan $1 mio :) [07:36] felixge: the cheapest plan will seem like a steal at $1k / month [07:36] felixge: :D [07:36] mape: hehe [07:36] charlesjolley has joined the channel [07:37] felixge: anyway, pricing is really really hard [07:37] creationix: http://www.mint.com/blog/how-to/price-anchoring/ [07:37] felixge: we're offering various robots (that manipulate files), and each of them theoretically has its own pricing [07:37] felixge: but we decided to just combine them all together for simplicity [07:37] tbassetto has joined the channel [07:39] felixge: anyway, headed out, back online in ~20 minutes [07:39] felixge: thanks for the feedback [07:39] felixge: : ) [07:39] mape: felixge: Only thing [07:40] mape: If the site does video, might want to show some video on the site [07:40] felixge: mape: we just encode the video, but yeah - good idea :) [07:40] creationix: where was that gist for pumping streams? [07:40] mape: Just to verify it "works" [07:40] felixge: mape: there is an "Examples" page [07:40] mape: Even though it is just a static video [07:40] felixge: mape: where you can upload stuff [07:40] felixge: mape: and it's encoded for you right then and there [07:41] mape: felixge: Yeah, I don't have files lying around though that would be the right size/legal though [07:41] mape: And people are lazy [07:41] felixge: heh [07:41] felixge: good point [07:41] felixge: thanks [07:41] felixge: brb [07:41] mape: np :) Service looks great [07:42] javajunky has joined the channel [07:46] botanicus has joined the channel [07:47] psynaptic has left the channel [07:48] JimBastard: dude im lazy as shit [07:49] creationix: dude, it's almost morning there [07:49] JimBastard: lazy initialize and lazy evaluate are awesome [07:49] creationix: :) [07:49] JimBastard: http://github.com/Marak/hook.io/issues [07:49] JimBastard: ive got issues man [07:51] creationix: I'm trying to understand how to use streams in my code instead of callbacks for data flow [07:51] creationix: i've got some nasty latency currently http://beta.howtonode.org/what-is-this [07:52] creationix: especially on the background image [07:52] christkv has joined the channel [07:53] JimBastard: what is serving that content? [07:53] creationix: wheat using "git show" in a subprocess [07:53] JimBastard: o.O [07:54] kjeldahl has joined the channel [07:54] christkv_ has joined the channel [07:54] creationix: well, I need to get some sleep so I can work tomorrow [07:56] micheil: hmm.. it'd be cool if there was something like rvm for node [07:58] charlesjolley has joined the channel [07:58] JimBastard: whats a rvm [08:00] felixge has joined the channel [08:00] felixge has joined the channel [08:01] teemow has joined the channel [08:01] felixge: hey teemow [08:05] micheil: JimBastard: it's a version manager for ruby, allowing multiple versions of ruby to be installed and switched between [08:06] JimBastard: got ya [08:08] teemow: hey felix, good morning :) [08:09] piranha has joined the channel [08:10] felixge: teemow: how long have you guys been using node? :) [08:12] teemow: we first started to build the new adserver with node in november [08:12] teemow: sry daily scrum. i'll be back in a few minutes [08:12] felixge: teemow: k, have fun : ) [08:14] micheil: felixge: who's teemow work for? [08:15] felixge: micheil: adcloud [08:15] felixge: ( adcloud.de ) [08:16] JimBastard: damn who does a daily scrum at 420am lol [08:16] JimBastard: :p [08:16] felixge: JimBastard: germans [08:16] felixge: :) [08:16] JimBastard: zeee germans! [08:17] JimBastard: achtung! [08:17] micheil: felixge: do you know if there's a english version of that site, my german's still quite bad [08:17] JimBastard: Mein Hut, der hat drei Ecken [08:17] ditesh|cassini has joined the channel [08:18] felixge: micheil: not sure, google translate I guess [08:20] micheil: doesn't work due to https [08:24] philippbosch has joined the channel [08:25] teemow: micheil: the application itself is in english/french/german, but the startpage isn't [08:26] micheil: k [08:26] teemow: it's an ad marketplace and adserver. [08:27] micheil: and what, it's using node.js behind it? [08:28] N` has joined the channel [08:28] tisba has joined the channel [08:31] teemow: micheil: our ad tags are javascript hosted on s3. but now the tags get their campaign data and priorities from node via jsonp. [08:31] TomY has joined the channel [08:31] micheil: neat [08:33] teemow: node is autoscaled on ec2. peak is 1200 req/s. [08:33] xla has joined the channel [08:42] derbumi has joined the channel [08:42] teemow: derbumi: hey :) [08:44] derbumi: teemow: hey, good morning! [08:45] charlesjolley has joined the channel [08:46] felixge: teemow: you should be able to server 1200 req/sec from a single node box, no? :) [08:47] teemow: sure. not scaling necessary [08:48] felixge: teemow: well, it depends on what you do : ). The fact that you can auto scale is really neat :) [08:48] felixge: teemow: what node version are you guys on? [08:48] teemow: there are 2 machines. so if one die the autoscaler starts another one and replicates the couchdb data. [08:48] teemow: 0.31 [08:48] felixge: teemow: post-promises :) [08:48] felixge: that's good [08:49] teemow: yeah :) [08:49] felixge: our node app is stuck 0.1.28 for now. Going to replace it with a new version eventually [08:49] felixge: :) [08:51] romainhuet has joined the channel [08:51] jed has joined the channel [08:52] teemow: felixge: we still have some problems with connections between nginx and node. but its less than 0.01 percent. so the priority is not so high. there is much more to do :) [08:53] teemow: we are probably replacing our impression tracker and i think dirty could be very useful to write that data. [08:53] felixge: teemow: : ) [08:54] felixge: If you can chunk the data set into ram-sized partitions, sure [08:55] teemow: ram is not a problem on ec2 ;) [08:56] mikeal has joined the channel [08:56] felixge: teemow: well, make sure to run some tests. I mean V8 is sweet, but no guarantees how it will handle GC with 60+ GB of heap :) [08:56] felixge: from what I've seen I'm hopeful so [08:58] teemow: felixge: ok i think less should be feasible :) [09:00] sveimac has joined the channel [09:02] botanicus has joined the channel [09:02] tbassetto: mmmh, the latest version on the repo could not be built on my mac, is that normal? :) [09:03] felixge: tbassetto: not normal, no [09:04] mape: Doesn't seem to work for me in debian either [09:06] tbassetto: FYI: http://pastebin.com/LKbaFbwT [09:07] mape: tbassetto: Yeah pretty much the same I get [09:08] kjeldahl has joined the channel [09:10] botanicus has joined the channel [09:18] charlesjolley has joined the channel [09:23] felixge: you guys will have to do a make clean [09:23] felixge: and rebuild [09:23] felixge: and run configure again [09:23] felixge: mape / tbassetto [09:23] felixge: looks like you're building against an old v8 build [09:28] jed has joined the channel [09:29] mape: ah k [09:29] mape: yeah seems to fix it, thanks :) [09:30] felixge: mape: V8's API is somewhat stable, so you usually don't notice it, but you guys have been running on old v8 version the entire time :) [09:30] mape: oh noes :S [09:30] felixge: yeah, I'm not sure if the build process could fix that - maybe _ry knows [09:31] felixge: it's confusing :) [09:31] mape: I guess I'll just add make clean to the upgrade script I made so it isn't an issue in the future [09:32] tbassetto: It's still compiling but I think that it resolves my problem indeed ;) [09:32] tbassetto: oh wait [09:32] mape: worked perfect for me [09:32] tbassetto: I'have a new error -_- [09:32] charlesjolley has joined the channel [09:32] felixge: tbassetto: what is it? [09:33] tbassetto: "simply" Could not install the file '/usr/local/include/node/v8.h' [09:33] felixge: tbassetto: sudo make install ? [09:33] felixge: sounds like a permission thingie [09:33] tbassetto: I didn't use sudo because I never had to :/ [09:33] tbassetto: oops [09:34] tbassetto: my mistake, I always had to :) I must eb tired [09:34] fholm has joined the channel [09:34] tk has joined the channel [09:48] mape: When running with --prof where does v8.log go? Doesn't seem to output to the current dir [09:48] charlesjolley has joined the channel [10:00] nsm has joined the channel [10:02] charlesjolley has joined the channel [10:28] jan____ has joined the channel [10:31] jan____ has joined the channel [10:32] jan____ has joined the channel [10:32] jan____ has joined the channel [10:43] fholm_ has joined the channel [10:50] romainhuet has joined the channel [10:50] charlesjolley has joined the channel [11:08] charlesjolley has joined the channel [11:14] sveisvei has joined the channel [11:46] charlesjolley has joined the channel [11:54] siculars has joined the channel [11:55] alex-desktop has joined the channel [11:58] ditesh|cassini has joined the channel [12:03] bratish has joined the channel [12:03] bratish: Hello [12:04] bratish: I need a help regarding ling polling through Node.js [12:05] bratish: I'm trying to set one long polling for 60 secs, but the browser is closing the connection [12:06] bratish: The same setup is working for 30 secs long polling [12:06] bratish: Can anybody suggest how to achieve this? [12:06] bratish: Using JQuery as JS framewoerk [12:06] bratish: **framework [12:07] kriszyp has joined the channel [12:07] rjack1 has joined the channel [12:13] charlesjolley has joined the channel [12:16] andrewhampton has joined the channel [12:21] lifo has joined the channel [12:29] sveisvei has joined the channel [12:43] charlesjolley has joined the channel [12:44] mpoz2 has joined the channel [12:53] felixge has joined the channel [12:56] felixge: I think I found a v8 bug: https://gist.github.com/a92373abdce483850c51 [12:56] felixge: unless this is some very fucked up Ecma BS :( [12:56] felixge: can anybody confirm? [12:57] mape: good old "shouldn't there be a ; after this line?" issue? [12:58] felixge: well, this doesn't happen with 'var' [12:58] felixge: so I think it shouldn't happen with return either [12:58] charlesjolley has joined the channel [12:58] mape: I recall issues like this with people returning objects placed the start { on a new line and I think IE just dropped it [12:59] mape: Nothing to do with V8 but yeah.. [12:59] mape: On a return specificly [12:59] keeto: it's automatic semicolon insertion at work. [13:00] mape: Yeah, felixge works the same here [13:00] sveisvei: Yup, its a javascrtip feature ;-) [13:00] felixge: well, but I think it is wrong [13:00] felixge: to illustrate: [13:00] felixge: https://gist.github.com/a92373abdce483850c51 [13:00] felixge: (this shows how the 'var' statement does not suffer the same issue) [13:01] sveisvei: Everybody agrees, think its part of the bad parts by crockford :P [13:01] CrockBot: Douglas Crockford p3wns Jon Skeet for breakfast yansky [13:01] keeto: felixge: simple, because var; isn't valid. [13:01] sudoer has joined the channel [13:01] felixge: keeto: good point [13:02] felixge: well, this really fucking sucks [13:02] mape: Just alter it? [13:02] keeto: the main rule of automatic semicolon insertion is "try to insert semicolons to make the code valid" [13:02] felixge: I'm finally willing to give in, and go with ryan's comma-first style [13:02] felixge: but this breaks it [13:02] felixge: when applying the rule to function calls [13:02] felixge: and return statements [13:02] felixge: :( [13:02] mape: there is no comma in the return? [13:02] keeto: felixge: what's your editor? [13:03] sveisvei: try return and use "return (/n1/n)" [13:03] mape: Always keep the stuff you are suppose to return on the same line [13:03] felixge: mape: https://gist.github.com/7384a5764d4b99357a71 [13:03] derbumi has joined the channel [13:03] mape: or start at least [13:03] felixge: this is the actual code I'm looking at [13:03] rjack1 has left the channel [13:03] mape: just move the ( [13:03] felixge: keeto: textmate [13:03] sveisvei: yuup, move ( up [13:03] keeto: felixge: install the js-tools bundle. [13:03] keeto: pro-tip: get jslint for your editor. [13:03] felixge: I can move the ( up, but that breaks consistency [13:04] mape: But it doesn't break code ;) [13:04] felixge: I get all OCD about this stuff, it may break me :) [13:04] N`: felixge: those questions are discussed on http://gist.github.com/357981 [13:04] tisba_ has joined the channel [13:05] felixge: N`: looking at itt [13:06] mape: I still can't leave Allman for K&R :/ Guess I should make an effort though [13:06] felixge: N`: I guess the style from line 141 is good enough [13:07] felixge: N`: I guess that is consistent with how 'var' is handled [13:07] felixge: I'm still wondering if I do function calls right so [13:07] felixge: https://gist.github.com/7f5a4cf146ed3d412a8c [13:07] felixge: anybody? [13:08] felixge: (this actually works, so 'return' is still a special case) [13:08] felixge: (because this.mysql.select; could stand on its own) [13:09] mravaux has joined the channel [13:09] mape: felixge: What mysql query builder are you using? [13:10] felixge: mape: you do not want to know :) [13:10] mape: hehe k [13:10] felixge: It's called UglyMySql (build on top of: http://github.com/felixge/node-ugly ) [13:10] N`: felixge: a ; is inserted if the current line could stand on its own, but it also needs that the following lines can be compiled without errors [13:11] charlesjolley has joined the channel [13:11] mape: felixge: Oh that is nasty [13:11] felixge: mape: yeah, but works fantastically well ;) [13:12] mape: Hehe ugly code tends to do that [13:12] felixge: (not always : /) [13:12] felixge: anyway [13:13] felixge: any comments on style for function calls? [13:15] mape: I'm the worst person to answer since I use Allman and aren't clear with the node js standards [13:15] N`: I prefer the opening parenthesis on the same line that the function call [13:15] N`: but your solution seems fine too [13:15] felixge: N`: well, I'm just looking for consistency :) [13:16] sveisvei: felixge: I agree with N` on the "(", I feel it should be on the same line, so I fast identify it as a function [13:16] voodootikigod_: was someone looking fo me [13:16] felixge: sveisvei / N` : what about this: https://gist.github.com/3f3eaa4e455d61876485 ? [13:17] felixge: would you still go comma first with the ( on the same line? [13:17] mape: Just write a node js beautifier and have people use that until they do it right right of the bat? [13:19] davidsklar has joined the channel [13:20] confounds has joined the channel [13:20] jherdman has joined the channel [13:20] N`: felixge: I would naturally write this example as this: https://gist.github.com/ddcdfd70429a624dff8b [13:21] N`: but it's not necessary more readable than your try ;) [13:21] felixge: N`: ouch, I'm trying to not indent that far :) [13:21] felixge: N`: imagine one of the params being another function ^^ [13:22] charlesjolley has joined the channel [13:23] joshbuddy has joined the channel [13:25] felixge: I think I'm going with this: http://gist.github.com/361155 [13:25] felixge: gonna take a little to get used to, but at least it is consistent [13:25] felixge: :) [13:26] mape: hmm, now that is.. different [13:27] ashb: felixge: double comma is valid? [13:28] felixge: ashb: where? [13:28] ashb: L24 [13:28] felixge: ashb: no, typo :) [13:28] ashb: ha! [13:32] binary42 has joined the channel [13:36] charlesjolley has joined the channel [13:38] steadicat has joined the channel [13:44] mjijackson_ has joined the channel [13:45] felixge: ok, finished converting [13:47] davidsklar has joined the channel [13:51] dnolen has joined the channel [13:52] andy_l has joined the channel [13:59] JAAulde has joined the channel [14:01] JAAulde: _ry: ping [14:01] softdrink has joined the channel [14:03] bratish: can anybody suggest what should be the maximum duration of one long polling? is there any specification/rule of thumb? [14:05] N`: bratish: as a rule of thumb, we generally use something like 30 seconds or 1 minute [14:05] mape: as long as possible without it causing an issue.. but yeah what N said [14:05] N`: if you choose a too long duration, you can have problems with firewalls and proxys [14:06] charlesjolley has joined the channel [14:06] bratish: @N`, @mape: i'm trying with 1 min, but getting disconnected by the browser [14:06] mape: Sounds strange.. same with different ones? [14:06] bratish: 30 sec is working fine [14:07] mape: I actually just built a long pull irc proxy thingimado and I am not having those issues [14:07] bratish: but same setup giving problem for 1 min [14:07] bratish: ok [14:07] mape: I'm using JSONP though, shouldn't matter much [14:07] gf3 has joined the channel [14:08] mape: bratish: You said you were using jQuery? [14:08] bratish: yeah @mape [14:08] bratish: I'm using JQUERY [14:08] mape: you haven't set timeout: **** ? [14:08] mape: or a ajaxSetup that sets it? [14:09] andrewhampton_ has joined the channel [14:09] bratish: I am $.getScript() [14:10] bratish: and set the timeout $.ajaxSetup({timeout: 300000}) [14:10] bratish: but it's not working [14:11] N`: and if you try with wget or any other command-line tool, do you get an answer? [14:11] bratish: haven't tried it yet [14:12] bratish: will try [14:12] mape: bratish: em 30000 is half a minute? [14:17] bratish: the timeout should be in milliseconds, right? [14:17] mape: Yes [14:17] mape: and 30000 is 30sec = half a minute [14:17] bratish: yeah [14:17] bratish: one zero extra there, :-( typo [14:18] Yuffster has joined the channel [14:25] felixge: jQuery + JSONP = fail [14:25] felixge: http://code.google.com/p/jquery-jsonp/ = win [14:25] mape: felixge: The jsonp plugin makes it better with timeout and error [14:25] felixge: mape: right :) [14:35] keeto has joined the channel [14:36] charlesjolley has joined the channel [14:37] keeto has joined the channel [14:39] Gruni has joined the channel [14:42] aryounce has joined the channel [14:44] mrjjwright has joined the channel [14:53] tk has joined the channel [14:56] nefD: ahh jsonp [14:56] nefD: i was fully planning on utilizing the hell out of it before i fell in love with nginx [14:56] mape: Kinda wonky when you start doing a lot of them at the same time [14:56] _ry: JAAulde: pong [14:57] JAAulde: _ry how do we get the JSLint on board to begin passing comma first notation? :D :D [14:58] JAAulde: i really like the notation, but I also really like LINTing my code [14:59] nefD: i did have to kind of jerry rig json-ext to spit out jsonp in a format jquery would accept [14:59] nefD: ie: no quotation marks around keys [14:59] _ry: JAAulde: i don't know - hack iy? [14:59] _ry: it [15:00] _ry: I'm not using jslint [15:00] _ry: (probably cause my style doesn't pass it ;)) [15:00] JAAulde: lol [15:00] mape: nefD: The key need "" around it? And jquery need correct json now that they are using native? [15:00] JAAulde: i was hoping for some sort of political pressure [15:00] JAAulde: :P [15:02] nefD: mape: *shrug* using latest JQ, i was unable to reference data.whatever on the return unless the keys had no quotes [15:02] mape: Hmm seems strange, they do use the native json.parse? [15:02] mape: at least when supported [15:02] nefD: I'm actually not entirely sure [15:03] alex-desktop has joined the channel [15:03] brapse has joined the channel [15:03] mape: return window.JSON && window.JSON.parse ?window.JSON.parse( data ) :(new Function("return " + data))(); [15:03] mape: Seems they indeed do, // Try to use the native JSON parser first [15:04] joshholt_ has joined the channel [15:06] nsm has joined the channel [15:08] nefD: huh [15:08] nefD: not sure why it wasn't working then.. might have been PEBKAC :P [15:09] mape: Hehe most likely [15:13] CIA-77: node: 03Herbert Vojcik 07master * r06b9c8b 10/ src/node.js : Fix of normalizing paths of form ./../the/rest - http://bit.ly/aUtueX [15:15] mape: Just "finished" a small project, that fetches an IRC-log from mysql and serves new entires though long pull JSONp [15:16] mape: And seeing how I'm rather new at node.js I would love for someone to take a quick look at the code to point out anything obviously dumb or things that could be improved [15:16] mape: http://mape.me/nodejs-code-review/ [15:16] mape: So if anyone feels like it and has the time it would be very appriciated [15:22] _ry: mape you're creating a whole class for each request [15:22] _ry: instead of an instance [15:22] mape: Ah that is right.. Should just move it outside of the request? [15:22] _ry: you're going to hit the GC more often if you do that [15:23] _ry: yes [15:23] _ry: use constructor params, not a closure [15:25] mape: Like that? [15:25] _ry: for example [15:26] _ry: does node-mysql work well? [15:26] mape: Seems to work fine [15:26] jbrantly has joined the channel [15:27] _ry: good [15:27] mape: But it only hits the db every 500ms and uses the cache object for other, so on -n 1000 -c 100 I get 1797 req/sec [15:28] mape: Only thing with node-mysql is that it uses tcp instead of net for module name [15:28] mape: Still works fine though [15:29] jed_ has joined the channel [15:29] mape: But other then moving it outside the request it is pretty much ok? [15:29] KungFuHamster: I haven't tried using mysql async.. that's gonna be fun to get my head around [15:29] mape: KungFuHamster: not worse then using ajax :) [15:29] mape: Same idea different sources of data [15:30] KungFuHamster: hmm that's a good way to think of it [15:30] _ry: mape: i haven't looked over it very detailedly. nothing super obvious. gtg [15:30] lifo has joined the channel [15:30] mape: just that ajax gets its data from mysql [15:30] mape: _ry: Ok, thanks for taking the time! [15:32] bronson has joined the channel [15:33] ithinkihaveacat has joined the channel [15:34] dnolen has joined the channel [15:34] softdrink: anyone particularly handy with nginx? [15:37] mape: Sorry no, might be good to ask anyway [15:38] javajunky: softdrink: I'm hitting a coupla node processes through it [15:38] softdrink: So I have autoindex on, and I basically want to just pipe any haml file through the haml executable. This is just for local testing. I'm not insane enough to do that live. ;) [15:38] joshholt_ has left the channel [15:38] javajunky: can you use either of the two haml node.js implementations ? [15:39] softdrink: not for this [15:39] javajunky: okey doke [15:44] softdrink: ah well. no biggie. was just for convenience :) [15:46] aho has joined the channel [15:47] binary42 has joined the channel [15:47] binary42 has joined the channel [15:55] fictorial: _ry: re: docs, I'm not loving light gray on dark gray; maybe consider make the bg gray darker for more contrast? [15:55] mravaux_ has joined the channel [15:55] fictorial: also, the TOC on the right throws me off. else, looks great! [15:56] nefD has joined the channel [15:57] fizx has joined the channel [15:57] _ry: fictorial: want to edit? [15:58] _ry: http://tinyclouds.org/node_new_doc/api.html <-- new api style for those who haven't seen looks like this [15:58] fictorial: Sure, what do I need to learn? ronn? Anything style-wise your are trying to achieve in particular? [15:58] fizx has joined the channel [15:59] gf3 has joined the channel [15:59] mape: have you thought about centering it? Feels very un balanced now when the menu is at the right [16:00] mape: Might also be nice to auto hilight the current section viewed in the menu triggered by scrolling [16:01] _ry: fictorial: i think you can just edit the header file and css - 'make doc' builds it [16:03] _ry: looks like it's broken in safari [16:04] _ry: gr. [16:04] nefD: I'd still love to see more links :P for example, to the http request object (among other things).. yeah you can pull up http, and ctrl+f is easy enough, but still.. minor nitpick [16:04] mape: The width? [16:05] mape: max width 89ex ? [16:06] mape: Perhaps that is what Safari doesn't like [16:06] mape: Perhaps use em instead? [16:07] nefD: hard to tell if thats supposed to be em or px :P [16:07] mape: there is an ex [16:07] tk has joined the channel [16:07] mape: Height of the x char pretty much [16:07] nefD: ah [16:07] mape: Not used very often though [16:08] mape: Was wondering if perhaps something like this would be nice to have in the API docs: http://static.jqueryfordesigners.com/demo/fixedfloat.html [16:09] mape: And instead of the form it is the header of the current section you are viewing [16:09] mape: Something to let the user know where in the docs they are [16:09] _ry: mape: the larger problem is when the TOC is too big [16:10] _ry: people have complained the old docs werent working on small screens [16:10] mape: Oh k, well.. So what browsers do you support? [16:10] nefD: i love the color scheme though [16:10] nefD: and the font [16:10] alexanderte has joined the channel [16:11] fictorial: fixed width for everything is a little weird :) [16:11] nefD: although some of the sample code now overlaps the toc [16:11] mape: I personally think the headlines need to stand out more, as well as the code, not it just seems a like a chunk of text [16:11] mape: Upping the line-height to 1.6 would be nice as well [16:11] nefD: Timers -> clearIntervals [16:11] mape: *now [16:11] micheil: _ry: made with ronn? [16:11] alexanderte: what markdown app is used to generate the API docs? [16:12] micheil: definitely could be ronn then. [16:13] micheil: alexanderte: looking at the make file say's it's ronn [16:13] micheil: http://github.com/rtomayko/ronn [16:14] _ry: micheil: yes [16:14] creationix has joined the channel [16:14] micheil: _ry: it's looking good [16:14] alexanderte: micheil, ah, okay. I see. you're already discussing this. excellent timing [16:14] _ry: i like ronn's style a lot but it needs a TOC [16:14] bratish has left the channel [16:14] micheil: heh heh' [16:14] _ry: hence the hack [16:14] mape: When running make doc build where does the output go? [16:14] micheil: you could probably modify the gem to add it [16:15] micheil: rather then cat'ing and sed'ing [16:15] micheil: ./doc/ [16:15] _ry: mape: http://github.com/ry/node/blob/06b9c8bf1f75c20433413a6aececa26326641a3f/Makefile#L46-49 [16:15] mravaux has joined the channel [16:15] nefD: aw man.. node + nginx + too much time = web-nethack [16:15] _ry: nah [16:15] micheil: alexanderte: I wasn't pre-discussing anything, I just saw the link and new it was ronn [16:15] micheil: *knew [16:16] RayMorgan has joined the channel [16:17] alexanderte: I see. I just came here to get some info about the docs. looked like there was some API change from addListener() to callback(), but I'm not sure if it was intended that way [16:17] creationix: hey, what's the best way to make a composite stream? [16:17] bpot has joined the channel [16:17] creationix: what I mean is, I have a function that returns a stream from my git library, but the actual source could either be a subprocess or an fs stream. [16:18] _ry: alexanderte: do you find that unintellegable? it's just notation [16:18] _ry: alexanderte: addListener() is still the API [16:18] alexanderte: _ry, yeah, I assumed that, but I thought it would be more clear if I actually looked at the formatted doc [16:19] micheil: _ry: you could also call it bind() [16:19] micheil: or something. [16:19] _ry: alexanderte: http://tinyclouds.org/node_new_doc/api.html [16:19] creationix: actually, I think I don't need a composite stream for this case, I know at call time if the backend is a fs stream or a git child process stream [16:19] creationix: but there may be cases where I don't know which stream to use till after an async action [16:20] gf3 has joined the channel [16:21] micheil: _ry: why not do the toc through JS? [16:21] alexanderte: _ry, () after callback makes me believe that it's an actual function. might be best to test it on a new user to see if he/her gets confused or not [16:28] _ry: alexanderte: what if i did "function (exception) { ... }" [16:28] _ry: would that make more sense? [16:29] alexanderte: yeah, maybe. people most likely wouldn't mistake it for being an API function [16:30] alexanderte: yup, it makes sense. [16:31] ithinkihaveacat has joined the channel [16:33] brapse has joined the channel [16:37] indiefan has joined the channel [16:41] mjr_ has joined the channel [16:52] Gruni has joined the channel [16:57] mrjjwright: has anybody played around with this tail call optimization lib? It is said to be tested on V8: http://glathoud.easypagez.com/publications/tailopt-js/tailopt-js.xhtml. I sometimes do lots of recursive calls while doing "async for loops" and have blown the stack a few times. Wondered if this might help. [16:58] micheil: _ry: that script you're using on the toc is really nasty. [16:59] mrjjwright: i mean async serial for loop loops, where I need to say insert a row in a db serially after a async callback [17:01] paul___ has joined the channel [17:03] CIA-77: node: 03Tim Caswell 07master * rff56d63 10/ lib/child_process.js : Fix child_process to use end() instead of close() in the stdin stream. - http://bit.ly/bfN53y [17:03] dandean has joined the channel [17:04] _ry: micheil: it's from asciidoc [17:04] micheil: heh, okay, I'm working on a few mods [17:04] mape: What do you think about http://doc.mape.me/ ? [17:05] _ry: wow [17:05] mape: (throw together code) [17:05] mjr_: That's pretty slick. [17:05] mjr_: I prefer the TOC on the left though. [17:05] _ry: yes, i like it [17:05] mape: It doesn't work right now, or is a little off but fixable [17:05] mape: and it expands and whatnot [17:05] _ry: can you give it a max-width? [17:05] _ry: i don't like long lines [17:06] mjr_: also, the whitespace for indenting in the examples is compressed. [17:06] mape: Well, yeah its possible, just have to fiddle with the fixed parent thing [17:06] _ry: but the TOC looks really nice [17:06] mape: mjr_: that is my fault [17:06] mjr_: When I click on a link in the TOC, it goes to that part in the doc, but highlights the next item. [17:07] mape: mjr_: Yeah like I said it is just a POC (piece of crap, as well as proof of concept) [17:07] mape: Rather new to the whole open source contrib thing so figured I'd do something and show rather then spend hours and then get rejected [17:08] micheil: ACTION is trying to figure out a nested toc [17:08] felixge has joined the channel [17:08] felixge has joined the channel [17:08] _ry: mape: i think that's a good idea :) [17:08] _ry: but i like it - please continue [17:08] creationix has joined the channel [17:10] creationix: _ry, I'm trying to make a child_process stdout stream look like a fs.FileReadStream, the docs don't say what events the stdout on child processes emits [17:10] _ry: creationix: hm, true. (it's a readable stream) [17:10] creationix: I assume I'll need to listen for exit in the child_process object itself and forward it as an end event, or is end already fired [17:12] _ry: creationix: you should get an 'end' event on the stdout when the process terminates [17:12] creationix: ok, so it should already look a lot the same then [17:12] creationix: http://gist.github.com/361374 [17:12] creationix: that should be enough then? [17:12] creationix: what about errors though [17:13] creationix: I assume stdout streams don't emit error events for the child process [17:13] _ry: stderr stream? [17:14] creationix: ok, so maybe forward error events from stderr to the stdout stream [17:14] micheil: _ry: with the docs, we should really make use of correct heading levels [17:14] fictorial: Game Center in iPhone OS 4 might put me out of business :( [17:14] micheil: eg, emitter.addListener should be a h3, Events, h2 [17:15] mikeal has joined the channel [17:15] creationix: micheil, I'm not sure ronn supports deep levels of headers [17:15] creationix: _ry, updated the gist http://gist.github.com/361374 [17:16] micheil: ronn doesn't need to in the strictess sense [17:16] _ry: micheil: true [17:17] mape: _ry: http://doc.mape.me/ better? [17:17] micheil: _ry: I've got something of a nested list for the toc working [17:18] creationix: mape, I like how the TOC updates with the scrolling [17:18] _ry: mape: yeah - personally i like the ronn style - maybe not the colors - but i like the fixed width thing [17:18] mape: Yeah hopefully that makes it easier to keep track of where you are [17:18] r11t has joined the channel [17:18] dgathright has joined the channel [17:18] creationix: mape, though it's off a little, If I click on a header, it highlights the one below where I clicked [17:19] mape: creationix: Yeah, it was just a throw together "wha ya think" thing, will fix it [17:19] mape: But if you want to review code please look at http://mape.me/nodejs-code-review/ ;) [17:21] amerine has joined the channel [17:24] mape: Now the "focus" is working on http://doc.mape.me/ [17:25] mape: Should it use the top of the screen or the center of the screen to decide what section you are reading? [17:25] creationix: mape, well, I like it [17:25] mape: :) [17:25] creationix: I think we'll have alternate doc readers in the end to fit everyone's taste [17:26] creationix: the api.markdown format is quite usable [17:26] mape: Just as long as there is a default one that new devs find that is good enough the more the merrier [17:26] creationix: mape, one thing, update window.location.hash when you update the highlight [17:27] creationix: then the url will stay in sync [17:27] mape: True [17:27] creationix: you can even update the window title as well [17:27] mape: aslo true [17:27] mape: *also [17:27] creationix: then it will be just as fancy as my reader, but with a simpler layout [17:27] charlesjolley has joined the channel [17:28] mape: hmm, any way of swapping the hash without moving the page? [17:29] mape: return false doesn't seem to negate it [17:29] creationix: not sure about that one [17:29] avidal: i'm seeing the hash update as i scroll down [17:29] mape: avidal: yeah, but it also moves the scroll? [17:29] nsm has joined the channel [17:29] avidal: not that i notice [17:30] mape: so it snaps now [17:30] mape: What browser? [17:30] avidal: chrome dev [17:30] creationix: works for me in chrome dev too [17:30] mape: Ah yeah, seems to work on Chrome here as well, firefox on the other hand moves to the id [17:30] avidal: but the back button doesn't work [17:30] mravaux has joined the channel [17:30] mape: yeah need to check for hash changes [17:30] avidal: well, it works, it just doesn't go back through the hash [17:32] avidal: maybe a chrome thing then [17:32] avidal: since the engadget galleries do the same thing for me [17:32] avidal: or maybe gizmodo [17:32] avidal: they update the hash and the history, but hitting back doesn't actually scroll back through the hashes [17:32] javajunky has joined the channel [17:33] mape: Guess they just do it for linking purposes, now the title should update [17:33] mape: Duh, updating the wrong part [17:33] mjr_: mape, in case you care, the TOC doesn't seem to move on iPhone/iPad. [17:34] avidal: oh yeah, now it works [17:34] mape: move as in position or in hilighting? [17:34] mjr_: Position, although it is hard to tell if the highlighting is working, because the position is off screen. :) [17:35] avidal: oh wait now it doesn't work! [17:35] avidal: i kind of see what's happening i think [17:35] avidal: when i click back, it goes back then forward immediately [17:35] avidal: due to the scroll position [17:35] alexanderte: mape, I saw your site and that's awsome! combines what I personally like about the current node.js and the work-in-progress one. cool trick with the menu :) [17:35] avidal: where can i see the work in progress one anyway? [17:36] alexanderte: http://tinyclouds.org/node_new_doc/api.html [17:36] mape: Now the title works.. [17:37] avidal: i think the toc should be on the left, at least for the one you linked alexander [17:37] avidal: because code blocks sometimes break the box and end up sitting on top of the toc [17:37] polyrhythmic: that's a lot of fixed-width type [17:38] polyrhythmic: good to see some docs up though! [17:38] mjr_: I can update those examples to be less wide, but with mape's version, they still fit. [17:39] alexanderte: perhaps, I don't know. I think it works well with it on the right site in mape's design. I actually find it less distracting when reading down the page [17:39] mjr_: I'll just throw another +1 out there for TOC on the left. [17:39] polyrhythmic: TOC on the left is what most ppl are used to [17:39] polyrhythmic: also, why not make the main column variable-width? [17:40] creationix: _ry, got it working without too much hackery (luckily git only used stderr for real errors) http://gist.github.com/361374 [17:40] mape: It is, just has max width [17:40] creationix: max-width is good [17:41] mjr_: polyrhythmic: mape's version uses monospaced font for the examples. The version on tinyclouds is monospace for everything. [17:41] mape: Hmm :/ Jquery doesn't like id="i have a space in me" [17:42] avidal: because ids shouldn't have spaces [17:42] polyrhythmic: mape: I don't think spaces are valid in ids [17:42] alexanderte: I think using '-' is fairly common [17:42] mape: polyrhythmic: Yeah, that seems to be what is generated though [17:42] avidal: you should slugify your titles [17:42] mape: Don't want to alter the doc generate more the I have to [17:42] N`: mape: spaces are separators for id/class [17:43] mape: Jup I know [17:43] mape: There we go, now it works [17:44] mape: Rather ugly to fix it with js at page load though [17:45] micheil: mape: I've almost got a really nice menu / toc going [17:45] mravaux has joined the channel [17:46] CIA-77: node: 03Ryan Dahl 07master * rb36f11d 10/ benchmark/http_simple.js : Set old/new from benchmark script args - http://bit.ly/acSu2u [17:46] CIA-77: node: 03Ryan Dahl 07master * r9331218 10/ (lib/net.js src/node_net2.cc): Servers shouldn't die on EMFILE - http://bit.ly/dumJNq [17:46] mape: micheil: Anything public? [17:46] micheil: not yet [17:49] polyrhythmic: fyi, the tinyclouds mockup looks a lot better on FF than it does on Chrome [17:49] polyrhythmic: the max-width is much better in FF [17:50] isaacs has joined the channel [17:50] polyrhythmic: looking forward to what comes out of all this :) good work y'all [17:51] dandean: Is it possible to install to a different directory than the default with `make install` ? [17:51] _ry: dandean: ./configure --prefix=/other/dir [17:51] dandean: _ry: thanks! [17:57] creationix has joined the channel [18:01] kriskowal has joined the channel [18:03] alexiskander has joined the channel [18:07] brapse has joined the channel [18:07] micheil: mape: just uploading. [18:09] creationix: streams are fun http://github.com/creationix/wheat/commit/3a3f51ae0c727983b83b3c7edbeb22b4184d6096 [18:09] creationix: does anyone have a good pump example that uses buffers? [18:09] micheil: http://dl.dropbox.com/u/830871/node-doc/api.html [18:12] bengl has joined the channel [18:13] creationix: micheil, any way to get the subheadings to be links too? [18:13] micheil: yes [18:13] micheil: working on it now [18:13] bpot has joined the channel [18:14] isaacs: _ry: any thoughts on http://github.com/isaacs/node/commit/b9467866b4e8fb0ef3c58e3601c47a9eee4fdd9d ? [18:16] _ry: isaacs: my thought is that v8 should just fix it [18:16] ashb: can you not just throw arbitrary objects in the v8 api? [18:17] _ry: also why not just keep a persistent reference to the original exception? [18:18] isaacs: _ry: because the exception and message objects get their fields changed under the hood [18:18] isaacs: _ry: i tried that [18:18] isaacs: _ry: i think the reason it does this is so that the original TryCatch won't catch the exception again when it's re-thrown [18:19] charlesjolley has joined the channel [18:19] creationix: _ry, when you said that the net2 code was slower under certain cases, was one of those serving large static files? [18:20] micheil: creationix: try that out for size? [18:20] creationix: I'm getting less than 100 req/sec on a 340k jpeg [18:20] micheil: creationix: (reload) [18:20] creationix: micheil: cool [18:20] creationix: I see the subheaders aren't namespaced, I wonder if there are conflicts [18:20] micheil: _ry: never mind the style, but the functionality: http://dl.dropbox.com/u/830871/node-doc/api.html#events-eventemitter [18:21] mape: micheil: Nice, might want to do the entire area clickable though [18:21] micheil: yeah, I'd call that a styling issue [18:21] isaacs: micheil: i like the style [18:21] isaacs: micheil: it uses my default monospace font instead of trying to tell me what code should look like [18:22] micheil: isaacs: it's could no style :P [18:22] _ry: micheil: nice [18:22] _ry: micheil: can you combine that with mape's scroll highlight thing? [18:22] micheil: possibly [18:23] _ry: actually the style isn't bad [18:23] _ry: minimal is good [18:23] mape: micheil: Should be easy enough to just move it http://doc.mape.me/doc.js [18:23] micheil: admittedly I would add an arrow icon [18:24] micheil: mape: well uh.. you see, your code is a lot prettier then mine. [18:24] mape: Only thing added is that the toclevel1 elements get class "active" when well, active [18:24] micheil: http://dl.dropbox.com/u/830871/node-doc/doc.js [18:24] mape: Oh [18:24] micheil: yeah, just adding something similar [18:24] fizx has joined the channel [18:25] _ry: micheil: can you remove the lines in the TOC and have it say, like Node v0.1.90 ? :) [18:25] _ry: or maybe that should be put into the docs somewhere [18:25] mape: Added the logo to the top http://doc.mape.me/ but I guess that is moving in the wrong direction ;) [18:26] jed_ has joined the channel [18:26] mape: off to get something to eat, brb [18:29] fizx has joined the channel [18:29] creationix: I vote for mape's style [18:30] creationix: (I like the bright colors for headings, makes them easy to see) [18:30] creationix: I prefer micheil's layout [18:32] mikeal has joined the channel [18:34] mrjjwright has joined the channel [18:35] felixge: isaacs: trying out multipart-js right now [18:36] micheil: ACTION is trying to remember the stuff to determine a node at x/y coords. [18:36] felixge: isaacs: https://gist.github.com/881549b194a808f7485a [18:37] felixge: isaacs: getting a test fail [18:37] isaacs: felixge: loking into it now [18:39] isaacs: felixge: looks like the writer isn't done yet. [18:39] felixge: ah :( [18:39] felixge: isaacs: who is working on that, you? [18:39] isaacs: mrjjwright is doing the writer. http://twitter.com/mrjjwright/status/11885311582 [18:40] isaacs: felixge: also, please be aware that this is pre-0.0.1, even [18:40] felixge: isaacs: the parser is? [18:41] isaacs: felixge: the parser seems to be working. [18:41] felixge: isaacs: I mostly need the parser [18:41] isaacs: felixge: the parser is 0.0.1. liable to change, but feature-complete. [18:41] felixge: isaacs: but I'm very interested on the writer as well [18:41] felixge: isaacs: oh well, I guess I'll use curl for now [18:41] felixge: I don't need a lot of these integration tests anyway [18:42] sveimac has joined the channel [18:43] mikeal: with my morning coffee i look at my github dashboard to see what is going on [18:44] mikeal: then i go to ry/node, look at the last day of commits, and read all of them to see what code i need to write [18:44] jherdman: suddenly you become distracted by a low, nearly inaudible rumble... [18:44] jherdman: it's a helicopter. they've found you. [18:45] mikeal: i live in Oakland [18:45] mikeal: there is *always* a HellaCoptor out [18:45] jherdman: ... well that just took the piss out of it :) [18:46] mikeal: in oakland it's not a helicopter [18:46] xer0x has joined the channel [18:46] mikeal: it's a hella-copter [18:46] isaacs: lolz hellacopter [18:46] JimBastard has joined the channel [18:47] nsm has joined the channel [18:49] fizx has joined the channel [18:49] admc has joined the channel [18:51] creationix: do fs.WriteFileStreams work yet? [18:51] creationix: I get "TypeError: string is not a function" after writing the first block [18:51] creationix: and a very useless stack trace [18:52] xer0x: o_O dunno creationix, i'm still learning node by following your tutorials.. [18:52] creationix: I'm still learning node so I can write the tutorials [18:55] JimBastard: creationix: you are an animal [18:55] creationix: _ry, I think I found a bug, but I'm not sure what the code is doing [18:55] creationix: http://github.com/ry/node/blob/master/lib/fs.js#L678 [18:55] JimBastard: id need two copies of me to keep up with you [18:55] JimBastard: sober copies [18:56] creationix: :) [18:56] gf3: anyone have a link to that comma-in-front gist? [18:57] creationix: http://ajaxian.com/archives/is-there-something-to-the-crazy-comma-first-style [18:57] micheil: note to self: never use alert() for debugging scroll events. [18:57] micheil: >_> [18:57] deanlandolt: creationix: or, credit where credit is due: http://gist.github.com/357981 :) [18:57] gf3: thanks creationix [18:57] creationix: oh, that's right, they didn't give credit in the article did they [18:58] deanlandolt: nope...very odd of them [18:59] creationix: at least he was able to update the gist with a name [18:59] deanlandolt: heh, yeah [18:59] deanlandolt: uncharacteristic of dalmear though [19:00] JimBastard: deanlandolt: im gonna be emailing you soon methinks, finalizing travel arrangements in the next couple of days [19:00] JimBastard: coming out friday morning [19:00] deanlandolt: JimBastard: cool [19:02] Aduros has joined the channel [19:02] mrjjwright has joined the channel [19:03] deanlandolt: JimBastard: fair warning -- my house is under construction...the "final clean" begins tomorrow...things'll be nice and clean by friday though [19:03] JimBastard: as long as im not in the streets im cool [19:03] JimBastard: and even then im still pretty cool [19:04] deanlandolt: oh i'll have ya covered, that's no problem [19:05] felixge has joined the channel [19:08] JimBastard: does anyone know if you can style the jquery ui slider so that the colors of the slider transport are different on the left and right side of the slider button? [19:09] mape: doubt it [19:09] JimBastard: i think i figured something out [19:09] mape: unless you override the template [19:09] creationix: _ry, nevermind, it's not a bug, for some reason FileWriteStream.write doesn't accept encoding as the second argument, it instead tries to interpret it as a callback. Is that by design? [19:09] JimBastard: i can fake what i need using a range [19:12] mravaux has joined the channel [19:12] _ry: creationix: no - that needs to be fixed [19:13] r11t has joined the channel [19:13] creationix: I'm not familiar with that code, I could prepare a patch, but it would take me a while. [19:14] micheil: what's the formula for finding the closest out of two numbers to a set number? [19:16] _ry: micheil: var closest = Math.abs(a - n) > Math.abs(b - n) ? b : a; [19:16] JimBastard: pwnt [19:17] JimBastard: now write that the fastest C code possible! [19:17] JimBastard: go! [19:17] r11t has joined the channel [19:17] micheil: JimBastard: math's isn't a strong point of mine. [19:18] JimBastard: its cool, im illiterate [19:18] micheil: _ry: hmm.. didn't work quite. [19:19] micheil: _ry: I'm having trouble getting the scroll position to match with the active item [19:19] micheil: although, at the same time, I think that working out the scroll active item is a little of a gimmick. [19:19] micheil: (a kinda resource intensive one at that, for what it is) [19:21] javajunky has joined the channel [19:23] JAAulde has joined the channel [19:26] devinus has joined the channel [19:26] devinus: _ry: what needs doing [19:26] devinus: _ry: i'm in a volunteer mood [19:26] chewbranca_ has joined the channel [19:28] mape: Anyone know of a good irc bot base for node? Looked at node-ircbot-framework but it doesn't seem to wanna play [19:28] chewbranca has joined the channel [19:28] tilgovi has joined the channel [19:30] dnolen has joined the channel [19:30] maushu has joined the channel [19:30] devinus: mape: have you seen Jerk ? [19:30] JimBastard: hey CrockBot [19:30] CrockBot: JavaScript engines check with Crockford first before inserting a semicolon into his code. ara_p [19:30] mape: devinus: Nope? [19:31] JimBastard: im using the node irc stuff [19:31] mape: http://github.com/gf3/Jerk Ah nice :) [19:31] maushu: Yes. [19:31] JimBastard: for crockbot and nodejs_v8 [19:33] sh1mmer has joined the channel [19:35] mape: hmm process.mixin is node native? [19:36] JimBastard: i think it was taken out? [19:37] micheil: hmm.. [19:37] confounds has joined the channel [19:37] mape: Hmm seems to work, doesn't connect though.. *fiddles* [19:37] maushu: Nooooooooooooooo. [19:37] maushu: Go ahead keep stabbing me, you bastards. [19:38] maushu: ACTION misses process.mixin. [19:38] maushu: ;_; [19:38] mape: deprecation warning: process.mixin will be removed from node-core future releases. [19:38] mape: Warning warning! [19:38] micheil: mape: http://github.com/miksago/node/commit/51fa1adbcbfb4b9684ae76677fd66fc674a621fc [19:38] JimBastard: creationix has a library that adds mixin to objects [19:38] JimBastard: proto [19:39] gf3: there are a bunch [19:39] mape: Might want to save a reference to repeating selectors micheil [19:40] brapse has joined the channel [19:40] micheil: mape: considering I haven't worked with jQuery really since 1 year ago.. [19:40] towski has joined the channel [19:40] micheil: rather, for a year [19:41] mravaux has joined the channel [19:41] creationix: how the heck does it take nginx 400ms to reply with a 304? [19:41] mape: Fancy 304? [19:43] KungFuHamster has left the channel [19:48] marcuswestin has joined the channel [19:48] marcuswestin: hi - I'm unfortunately not following the node commit logs but need to use head. Could someone please tell me what I should be using instead of process.stdio.writeError? [19:49] creationix: maybe process.stderr.write [19:49] creationix: or sys.error [19:49] marcuswestin: creationix: thanks - will do [19:51] _ry: micheil: i liked your earlier nav [19:51] micheil: what's changed that you don't like? [19:51] micheil: feel free to pull / edit it. public domain. [19:52] _ry: http://dl.dropbox.com/u/830871/node-doc/api.html#events-eventemitter <-- this is nice [19:53] micheil: so, the latest just adds a bit to animate to anchors, and a little styling [19:53] micheil: that's all. [19:53] micheil: :) [19:53] micheil: anyway, I'm off. it's 6am [19:54] _ry: :) night [19:54] marcuswestin: creationix: require('sys').error it is - thanks [19:54] creationix: :) [19:57] charlesjolley has joined the channel [19:57] mape: Is there any way of loading in external code to run while not restarting the node instance? [20:00] mjr_: do you mean load or re-load? [20:00] mjr_: Because you can load any time you like with require. [20:00] mape: Like if I am developing an irc bot and don't want to leave/join all the time [20:00] mape: and that fetches the latest version of the file? [20:01] _ry: mape: not really [20:01] _ry: unfortunately [20:01] mape: ok [20:01] mjr_: You could get yourself two nodes, one that keeps the connections open, and one where the logic lives. [20:01] mjr_: And then reload the logic one as you like. [20:02] mape: Hmm k [20:02] mape: Another thing, if http.createClient works for localhost (local httpd) but not for external sites, what might be the issue? [20:02] mjr_: dns? [20:03] mape: I mean I can ping the domain/lynx/wget it fromt he shell [20:03] _ry: internal dns ? : [20:04] mjr_: If you bust out tcpdump or whatever, do you see it doing anything? [20:04] mape: Haven't gotten that far.. I'll look into it [20:06] devinus: _ry: what needs working on ? [20:07] _ry: devinus: there are bugs [20:07] mape: Hmm doesn't seem like it is sending anything now.. unless my grep is off [20:07] devinus: _ry: in what ? [20:07] _ry: devinus: net.js [20:07] SupergeekWF has joined the channel [20:07] _ry: devinus: for example http://github.com/ry/node/issues#issue/95 [20:08] _ry: it's not very easy to fix, i think [20:08] _ry: well maybe it's an easy fix [20:08] _ry: it's not so easy to figure out [20:09] mjr_: I have this problem also. [20:11] devinus: i'll look into it [20:22] dandean: In case anybody is stuck on Dreamhost Shared Servers and wants to use Node from there: [20:22] dandean: http://dandean.com/category/code/2010/installing-node-js-on-a-dreamhost-shared-server/ [20:23] deanlandolt: dandean: umm...doesn't DH close long running processes after a few minutes on their shared hosts? [20:23] JAAulde has joined the channel [20:23] JimBastard: dandean: you should put that on howtonode.org [20:23] JimBastard: you know about this? [20:23] dandean: deanlandold: actually, I don't know! I'll take a look [20:23] JimBastard: you can fork the site , create your blog post in markdown, and do a pull request [20:23] dandean: deanlandolt * I mean [20:23] devinus: _ry: can't you just do if (this._writeWatcher) [20:23] deanlandolt: dandean: yeah, they do...been down that road before...but a cool idea none-the-less...at least lets you kick something off to test [20:25] deanlandolt: in case anyone is curious node runs just fine in their vps platform [20:25] mumrah has joined the channel [20:27] mumrah: has there been any discussion of how Node is going to approach IPC [20:27] JimBastard: i think so mumrah [20:27] JimBastard: also, THUNNNNDDEERRRRRR HOOOOOOOOOO [20:27] mjr_: Fighter jets over SF. [20:27] dnolen has joined the channel [20:28] mumrah: JimBastard: yes, hello again [20:28] mumrah: i guess i should rephrase my question - has anyone actually done anything towards IPC? [20:28] andrewhampton_ has joined the channel [20:29] _ry: fighter jets? don't see it [20:30] _ry: mumrah: yes you can do unix sockets now [20:30] mjr_: I think the flyover was for the Giants opening game, or some kind of sports thing. I work 2 blocks from there. [20:30] mumrah: _ry: how about pipes? [20:31] mikeal: mjr_, _ry: you guys ready for some hardcore BBQ tonight :) [20:31] devinus: _ry: i just sent a pull request that solved the problem [20:31] deanlandolt: you guys in SF have all the fun :-/ [20:31] mjr_: mikeal: I'm in. Should I bring anything? [20:31] mikeal: bring whatever you like [20:31] mikeal: or nothing [20:31] mikeal: :) [20:31] avidal: IPC? just setup a web server and speak over that :D [20:31] _ry: mikeal: yeah [20:32] _ry: mikeal: i forgot to rsvp [20:32] mumrah: that'd be RPC [20:32] mikeal: _ry: no problem, most people didn't [20:35] creationix: _ry, what's good nginx module to cache results of a reverse proxy [20:36] JimBastard: does anyone have a link to that article that explains why you should --rebase on git pulls [20:36] mumrah: creationix: doesn't it have built in stuff for that [20:37] mumrah: HTTPProxyModule or something [20:37] creationix: not sure [20:37] _ry: mikeal: i'll be a little late - like at 5 or so [20:37] mikeal: no problem [20:37] mumrah: yea: http://wiki.nginx.org/NginxHttpProxyModule#proxy_cache_path [20:37] _ry: creationix: ncache? [20:37] _ry: i don't know [20:37] creationix: the ncache site seems down [20:37] mumrah: Varnish is designed specifically for that use [20:38] creationix: yeah, gravitar uses varnish [20:40] JimBastard: http://www.gitready.com/advanced/2009/02/11/pull-with-rebase.html [20:40] _ry: devinus: i don't think that's a good fix [20:41] devinus: _ry: i see it used in a few others areas in net [20:42] _ry: devinus: well - i guess what i mean is that i don't understand what's wrong [20:43] devinus: _ry: i think it tries to write before the Stream has been initialized [20:45] _ry: i don't think so - they shouldn't have access to the stream before it's initialized [20:49] devinus: _ry: k, i'll keep digging [20:56] kriskowal_ has joined the channel [20:56] devinus: _ry: why is destroy() being called twice on that test case ? [20:56] devinus: _ry: (for each request) [20:58] _ry: devinus: hmm.. is it? [20:58] mattly has joined the channel [20:59] _ry: it shouldn't be [21:00] devinus: _ry: yep, it is [21:02] sveimac has joined the channel [21:03] devinus: _ry: def being called twice per request, is there a way i can debug it to see what's calling it ? [21:06] devinus: _ry: initStream is called twice, taht's why [21:07] BinaryPie has joined the channel [21:07] BinaryPie has left the channel [21:08] _ry: devinus: :) [21:08] _ry: devinus: keep digging i'm going to look in a sec [21:08] devinus: _ry: during a read it's getting "ECONNRESET, Connection reset by peer" [21:08] BinaryPie has joined the channel [21:09] BinaryPie has left the channel [21:09] BinaryPie has joined the channel [21:09] _ry: is that causing it to die? [21:09] kriskowal has joined the channel [21:09] _ry: well it should cause the connection to die [21:09] _ry: but not the whole thing [21:09] _ry: i think ECONNRESET is normal [21:13] devinus: _ry: on a first request ? [21:14] _ry: i think when you hit reload it kills the connection [21:14] _ry: so when you go to read it gets ECONNRESET [21:15] _ry: but the server should recover gracefully from it [21:15] mikeal: is this the same bug I'm seeing? [21:16] mikeal: http://github.com/ry/node/issues#issue/95 [21:20] mjr_: I just noticed that my issue is similar, but not quite the same as yours. [21:20] mjr_: http://gist.github.com/360754 [21:21] mjr_: Somehow calling close / end emits a flush, which triggers a reconnect, which is mysterious to me. [21:21] devinus: _ry: no, ry that ECONNRESET is on the FIRST load ! :O [21:21] devinus: _ry: the first conn [21:23] chewbranca: can I update a request form's content attribute in some way to set it to the value of an fb:js-string depending on a user selection? [21:23] chewbranca: bah... sorry wrong channel :/ [21:24] chewbranca: great job on node.js btw, very interesting stuff [21:27] avidal: i might make a simple web app to handle file uploads in node pretty soon [21:30] _ry: http://tinyclouds.org/node_new_doc/doc/api.html [21:30] avidal: need the entire box clickable! [21:30] mcarter has joined the channel [21:30] avidal: also the sub-toc under http.Server is busted [21:31] mumrah has left the channel [21:31] avidal: or rather, the first three subanchors are [21:31] mikeal: i like this font, it feels like i'm reading a screenplay :) [21:31] _ry: sigh [21:32] avidal: so why is everyone spending so much time redesigning the docs? :P [21:32] _ry: why did i change the documentation [21:32] mikeal: it's easy on the eyes [21:32] _ry: so painful [21:32] mikeal: and i like the scaled scrolling when you move between id's [21:32] demolithion has joined the channel [21:32] mikeal: anchor links would be nice tho [21:32] _ry: avidal: because we switch from asciidoc to markdown [21:32] xer0x: nice docs _ry! [21:32] avidal: smooth scrolling with easing [21:32] _ry: it's very painful getting this working [21:32] avidal: heh [21:33] avidal: the man that wrote node.js is having simple web js trouble? :P [21:33] mape: hmm http://mape.me/node-docs.png [21:33] avidal: haha [21:34] avidal: i actually have a few ideas about something with that version of the docs [21:34] _ry: mape: *head in hands* [21:34] mape: hehe [21:34] avidal: any instructions on how to clone the docs and generate them? [21:34] mape: Feature, not a bug [21:34] mikeal: stop using chrome :P [21:34] avidal: works in windows chrome [21:34] avidal: but the toc stutters as you scroll [21:34] mape: avidal: http://doc.mape.me/ another "atempt" [21:34] avidal: yeah i saw yours earlier [21:35] avidal: still doesn't backspace properly :( [21:35] _ry: apparently markdown doesn't support more than 3 levels [21:35] mape: mikeal: http://mape.me/node-docs-ff.png [21:35] mjr_: not ronn anyway [21:35] mikeal: you love to break things [21:35] maushu: What madness is that. [21:36] mape: mikeal: That is what I do [21:36] avidal: so do i just clone node, then make docs? [21:36] maushu: mape that left side menu is weird, place it on the left. [21:36] maushu: *right side [21:37] mape: maushu: better? [21:37] mjr_: If mape had his toc on the left and fixed the strict whitespace in the examples, that seems like a pretty good doc site. [21:37] xer0x: I hadn't seen these docs before, they're great. Found one broken link, when I open EventEmitter and click "Event "newListener", function (event, listener) { }" nothing happens.. [21:37] maushu: mape, hmmm, no. [21:38] maushu: I think its all that space on both sides. [21:38] mjr_: I fear we are headed for a multiverse of node doc viewers. [21:39] mjr_: As long as the official source is still api.markdown though, i guess it all works out. [21:39] avidal: i installed ronn from gem, no clue where the fuck it was put though [21:39] mape: There? http://doc.mape.me/ Should be on the left with proper examples [21:40] maushu: mape, now the menu is too damn big, it gets cut off. [21:40] mape: Yeah, seems there are more levels now [21:40] mjr_: man, this is hilarious. [21:40] mape: hehe [21:41] mape: Pick me pick me! [21:41] maushu: mape, it also freaks out when it reaches fs.Stats. [21:42] mjr_: examples look good now though [21:42] mape: yeah it does wonky stuff like that when the names include css selectors [21:42] maushu: I think its the dot. [21:42] mape: Yeah, notation for class [21:42] maushu: Which doesn't make sense since a url fragment should use notations. I think. [21:43] mape: so it is looking for id fs with class stats [21:43] maushu: *shouldn't [21:43] avidal: bah [21:43] avidal: where do i get that new stuff you're working on _ry? [21:43] avidal: the docs that is [21:44] _ry: avidal: hold on a sec [21:44] _ry: i'll upload it [21:45] okito has joined the channel [21:47] mravaux has joined the channel [21:50] KungFuHamster: hmm don't see tcp listed [21:50] avidal: it's net [21:51] KungFuHamster: oh, thanks [21:53] CIA-77: node: 03Micheil Smith 07master * rfd0bebc 10/ (doc/api_header.html doc/doc.js): Mods to the docs - http://bit.ly/aqmpM4 [21:53] CIA-77: node: 03Ryan Dahl 07master * r03ea4b6 10/ (doc/api.markdown doc/api_header.html): Improve(\?) docs - http://bit.ly/aQ3hdB [21:54] avidal: where's that bot come from? [21:54] avidal: also, if i fork node, how do i update my fork from the main repo? pull my clone and then push to my fork? [21:55] avidal: yeah, that's what i did [21:55] KungFuHamster: I'm still using 0.1.32... guess I should update to 33 [21:56] avidal: alright, i'm gonna try to mess with this a bit [21:59] isaacs: i put require.async back in my require refactor. [21:59] isaacs: and it doesn't get confused when you mix sync and async. win. [22:00] admc has joined the channel [22:01] avidal: so the toc is completely built in javascript, right? ronn mostly just handles the 'manpage' ? [22:01] _ry: yes the toc is js [22:02] avidal: thought so [22:03] avidal: so obviously part of the problem is the

that markdown generates, maybe we need

:P [22:03] sveisvei: thats a fugly class :S [22:05] markwubben has joined the channel [22:05] avidal: heh [22:05] avidal: actually, no need to do that [22:05] avidal: you can still style fake elements [22:08] mrjjwright has joined the channel [22:09] mape: Hmm, http://doc.mape.me/ seems the fixed menu doesn't work well when the menu is to long [22:09] mape: unless one would add a scrollbar to the menu but that can't be good [22:10] maushu: This was a triumph. [22:10] _ry: using only 3 level is an exercise in design [22:10] _ry: but makes for better man pages, i think [22:10] avidal: hrm, where is the extra css coming from [22:11] avidal: is it strictly from ronn? [22:12] _ry: header file [22:12] avidal: ah duh [22:14] dandean: deanlandolt: do you remember how long it takes dreamhost to kill long running processes? [22:16] lifo has joined the channel [22:17] ayo has joined the channel [22:26] avidal: hrrrm [22:27] rtomayko has joined the channel [22:30] darkf has joined the channel [22:30] sveisvei: mape, why just not do some clientside js to fix that - i can fix if you need :) [22:31] mape: sveisvei: fix what? [22:32] sveisvei: mape: the menu... but absolute position works fine. [22:32] avidal: i think the .markdown stuff can be a bit cleaner, not sure how exactly [22:32] avidal: orginization wise [22:35] _ry: avidal: probably [22:35] tilgovi has joined the channel [22:35] CIA-77: node: 03Ryan Dahl 07master * ree30267 10/ (Makefile doc/api.markdown doc/api_header.html): More documentation work. Remove long lines - http://bit.ly/bsgFV2 [22:37] KungFuHamster: accordion for the major categories would be nice [22:37] avidal: latest commit jacked the styles on the toc [22:38] avidal: KungFuHamster: yeah, trying to figure out a good way to generate that out of the markdown syntax [22:39] mattly has joined the channel [22:39] avidal: actually wait, no reason why h4 shouldn't work.. [22:46] mape: Does this make sence? http://doc.mape.me/ [22:46] mape: The header info when scrolling [22:46] KungFuHamster: I like that [22:48] KungFuHamster: maybe little << and >> on either side of the header info would be helpful too, for fast navigation back and forth through sections [22:48] mape: hmm yeah I guess [22:49] avidal: oh i see the problem with the h4 [22:49] KungFuHamster: that or the accordion [22:49] avidal: it's not with making the html, but with making the actual man page [22:49] avidal: mape: heh, i was just thinking about that same thing [22:50] halorgium: creationix: any reason for not using an events.EventEmitter in your chat demo? [22:50] mape: think I've seen it in a lot of apple apps lately [22:50] creationix: not that I can remember [22:50] creationix: I generally don't use events if there is a simpler way to implement something [22:51] halorgium: the listeners array seemed to be exactly that [22:51] creationix: perhaps [22:51] _ry: got to release now [22:51] _ry: it's killing me [22:51] avidal: heh [22:52] mape: Oh yeah might as well ask again when there are more people here, when I want to profile my script and runt it with --prof where does the v8 log file go? [22:52] javajunky: yay ;) [22:52] creationix: _ry, go for it, it's not the v0.2.0 release yet [22:52] ayo: mape, .toggler... display:inline-block;width:1em;height:1em;line-height:1;padding:0;text-align:center [22:52] _ry: groan [22:52] ayo: stops em from jumping around [22:53] _ry: what's that saying about releasing? i always take heart in it [22:53] mjr_: _ry: Would you like those examples back in there if I just made them less wide? [22:53] mape: ayo: jump around how? [22:54] creationix: _ry, has anyone encountered those outstanding bugs in a real project or just when benchmarking or stress testing? [22:54] ayo: well, right now you got a width of 3px + however wide that character might be + 3px [22:54] mape: oh [22:54] ayo: mh... font-family:monospace might also do the trick heh [22:55] _ry: mjr_: yeah (although I didnt like that they were all inside the var statement) [22:56] _ry: mjr_: i think people mostly know how setTimeout works too so i'm not really worried [22:56] mjr_: Oh, OK. I can make them match your style. I was doing everything to jslint strict. [22:56] mape: ayo: better? [22:57] ayo: yea [22:57] creationix: we should make ryahlint [22:57] creationix: like jslint, but a different personality [22:57] ayo: but since the rest uses em widths, using it for those togglers as well seems logical [22:57] _ry: creationix: nto sure [22:58] _ry: creationix: i think mikael is hitting it a bug in his app [22:58] creationix: hmm, that's not good [22:58] mape: ayo: Yeah I guess, they were using ex before and messing up safari [22:58] ayo: heh [22:59] creationix: I guess worst case people with problems in the current version don't upgrade till the bug is fixed? [22:59] mape: I don't really get the point of em now that all browsers support zooming but yeah.. [22:59] creationix: then release a small v0.1.91 after the bug is fixed? [23:00] ayo: personally i dislike em widths since i use text-size-only "zoom" [23:00] ayo: i don't want pages to get wider [23:00] ayo: however, in this case everything goes wider... except for those togglers... so there [23:04] drostie has joined the channel [23:04] _ry: mape: can't you hack your current-section-highlighting thing into the docs? :) [23:04] _ry: the docs = repo [23:04] jasonw22_ has joined the channel [23:05] ayo: btw there are also some nice triangle characters you could use instead of +/- [23:05] mape: Hmm not sure I still have them, blanked the file when I though you were going the other layout choice [23:05] ayo: i used em here for example: http://kaioa.com/b/0903/target_faq_demo2.html [23:06] ayo: (uses :target voodoo for expanding the answers btw) [23:06] mape: But I'll try to.. I'll have to learn how to work with git as well, been a long time since I pushed anything [23:07] ayo: (they are inserted via :before/content) [23:07] mjr_: Heading to mikeal's BBQ... [23:09] mape: now? today? [23:09] avidal: going home [23:09] avidal: later [23:09] mape: later [23:10] mape: _ry: so no swap of the entire thing just the hilight current item? [23:10] _ry: mape: actually i think i'm going to release now because i'm running out of time [23:11] mape: hehe ok [23:11] _ry: but i'm interested in cleaning up the docs for next week [23:11] _ry: so if you have any ideas or want to work on it [23:11] mape: Sounds like a date [23:11] mape: (awful joke, sorry) [23:12] mape: I'll be around and poking at them and you can just say what you like/dislike with the layout and whatnot [23:16] aho: background:#111;-moz-bax-shadow:0 -1px 0 0 rgba(255, 255, 255, 0.2), 0 1px 0 0 #000;height:1.1em;line-height:1.1em;padding:0 [23:16] aho: looks cute [23:16] aho: :> [23:16] mape: bax-shadow? [23:16] mape: CSS4? [23:17] aho: box [23:17] mape: on the togglers? [23:17] aho: yes [23:18] mape: not much of a difference on my end when applying those [23:18] aho: http://i.imgur.com/o7Ldo.png [23:19] mape: Yeah fixing what we just talked about might make it have more of an impact.. duh [23:19] mape: Think my head is getting tired [23:20] aho: (this is with font-family:impact,monospace btw) [23:20] mape: win? [23:21] aho: impact works on ubuntu as well [23:21] mumrah_ has joined the channel [23:21] aho: (unless it's that netbook remix thing) ;> [23:22] mumrah_: is there a good templating system for javascript? [23:22] mape: Yeah just wondering why the font looked wonky [23:22] mumrah_: or something node-only [23:22] aho: looks better with font-weight:bold toggled off [23:23] aho: but those buttons do look cute, dont they? ;> [23:23] mape: hehe [23:24] dgathright has joined the channel [23:25] mape: Really should just steal djangos docs, that is a nice piece of doc [23:29] brapse has joined the channel [23:32] tlrobinson_ has joined the channel [23:34] dgathright has joined the channel [23:38] maushu: So say we all. [23:55] binary42 has joined the channel