[00:00] mcarter has joined the channel [00:01] bolson has joined the channel [00:04] boaz has joined the channel [00:08] bmizeran_ has joined the channel [00:10] fictorial has joined the channel [00:10] creationix has joined the channel [00:11] bmizerany has joined the channel [00:19] robrighter has joined the channel [00:29] bmizerany has joined the channel [00:32] robrighter_ has joined the channel [00:34] robrighter_ has joined the channel [00:35] Nohryb has left the channel [00:41] bmizeran_ has joined the channel [00:47] tmpvar has joined the channel [00:47] tmpvar: yo [00:49] noonat has joined the channel [00:52] dekz has joined the channel [00:55] CIA-75: node: 03Ryan Dahl 07master * r557ba6b 10/ (AUTHORS ChangeLog doc/api_header.html doc/index.html wscript): bump version - http://bit.ly/b7D5Pc [00:58] derbumi has joined the channel [01:02] micheil has joined the channel [01:06] mattly has joined the channel [01:10] tmpvar has joined the channel [01:10] kriskowal: quandry: how does one observe that a file was successfully opened (as with createReadStream) before attempting to write? [01:12] bpot has joined the channel [01:12] kriskowal: it might be good for streams to emit a "begin" event to signal that open was successful [01:16] herbySk: kriskowal: drain would be enough, maybe [01:17] kriskowal: that's guaranteed to be emitted even if open fails? [01:17] kriskowal: ACTION experiments [01:18] fictorial has joined the channel [01:18] herbySk: kriskowal: dunno. But it sounds logical that if open suceeds, it may issue "drain", since, well, the state changed to "the buffer is empty and ready to receive data for write" [01:23] kriskowal: herbySk fwiw, it does not emit drain initially. might be a good idea [01:23] kriskowal: _ry^ [01:24] ditesh|cassini has joined the channel [01:31] dgathright has joined the channel [01:32] nwhite has joined the channel [01:37] Dethe has joined the channel [01:42] Yuffster has joined the channel [01:52] brapse has joined the channel [01:54] cloudhead has joined the channel [01:56] WALoeIII has joined the channel [01:59] plhw_: cloudhead: hey man, im using cradle for my current project for school [01:59] plhw_: big ups, its really cool [02:01] steadicat has joined the channel [02:05] bmizerany has joined the channel [02:07] graemenelson has joined the channel [02:08] cloudhead: plhw_: awesome, let me know if you run into any issues [02:24] mjijackson has joined the channel [02:45] brianmario has joined the channel [02:51] mikeal1 has joined the channel [02:58] tmpvar has joined the channel [03:02] graemenelson has joined the channel [03:09] bjun has joined the channel [03:19] PyroPete1 has joined the channel [03:19] mkitt has joined the channel [03:20] mkitt has left the channel [03:22] dekz has joined the channel [03:24] softdrink has joined the channel [03:25] mkitt has joined the channel [03:30] mkitt has joined the channel [03:30] bpot has joined the channel [03:34] isaacs has joined the channel [03:38] saikat has joined the channel [03:42] dgathright has joined the channel [03:42] Aria has joined the channel [03:49] ditesh|cassini has joined the channel [04:16] mikeal1 has joined the channel [04:50] Dethe has joined the channel [04:52] softdrink has joined the channel [04:53] stepheneb has joined the channel [05:04] mjijackson has joined the channel [05:15] JimBastard has joined the channel [05:15] micheil: _ry: ping. [05:15] JimBastard: yaaaaa heroku node.js account is active :-D [05:15] micheil: neat! [05:15] micheil: tell me how it goes [05:15] JimBastard: i gotta get on the deployement [05:15] JimBastard: im putting together a few sample apps now. im gonna deploy them on to heroku and another deployment platform, see how they behave [05:16] JimBastard: will be a fun weekend fo show [05:16] micheil: also, _ry what's with that, whenever we pm to talk about stuff, it's always on the 30th of the month? [05:19] softdrink has joined the channel [05:23] softdrink1 has joined the channel [05:25] dgathright has joined the channel [05:26] brianmario has joined the channel [05:35] dgathright has joined the channel [05:43] plhw_: cloudhead: yt ? [05:57] _ry: micheil: pong [05:57] micheil: okay i'm working on the tests now [05:57] micheil: I'll also write a patch up afterwards for the empty requestHandler [05:57] _ry: how's it going? [05:58] micheil: because do: http.Server.call(this); throws an error currently [05:58] micheil: Error: addListener only takes instances of Function [05:58] _ry: ah [05:58] _ry: okay [06:02] softdrink has joined the channel [06:05] micheil: which could actually be an issue with the EventsEmitter [06:06] micheil: lib/events.js#54: if('function' !== typeof listener) throw; [06:06] micheil: should really check if a listener is passed. [06:08] _ry: yeah probably [06:08] ryan[WIN]: http://97.103.120.84:8030/pilot.html [06:08] ryan[WIN]: ^^ demo with nodejs and html5 [06:09] piranha has joined the channel [06:11] micheil: ha! cool [06:11] ryan[WIN]: the scoreboard is done via nodejs [06:11] micheil: ACTION remembers that style of game.. I was never very good at it. [06:11] ryan[WIN]: client side does ajaxy crap [06:11] micheil: is that.. uh, running on a windows box or? [06:11] ryan[WIN]: nay linux [06:11] ryan[WIN]: nginx/nodejs combo [06:12] ryan[WIN]: using nginx as an invisible proxy to nodejs so that cross site scripting doesn't get blocked [06:12] micheil: ah, fair enough :) [06:13] micheil: I doubt I'll beat the 517 score. [06:15] micheil: ryan[WIN]: just think, in a little while we could have a multiplayer version of this over websockets ;P [06:15] ryan[WIN]: i'm somewhat working on that [06:15] ryan[WIN]: but for games that don't require low latency [06:15] ryan[WIN]: board games/etc. [06:19] freshtonic: I'm using the http module to create an HTTP server. When an error occurs in my handler, I don't see a stack trace - only a one line error message. How do I setup the server to see traces when something breals [06:19] freshtonic: ? [06:19] ryan[WIN]: so pretty soon you may see a netplay version of SORRY [06:19] ryan[WIN]: in html5/nodejs [06:19] ryan[WIN]: but it will be renamed and some things modified to prevent lawsuits [06:19] ryan[WIN]: lull [06:23] mikeal1 has joined the channel [06:30] noonat has joined the channel [06:35] javajunky has joined the channel [06:51] micheil: _ry / ryan[WIN]: what was the best way to run just a single test? [06:52] ryan[WIN]: dunno you'd have to ask _ry - he is the nodejs man [06:52] ryan[WIN]: i am just some pretender who is also named ryan [06:52] tk: ryan[WIN]: all the versions of that game I've seen never killed play if you touched the border :P that makes it hard as hell [06:53] cloudhead: plhw_: yo [06:53] micheil: that's always confusing. [06:53] sveimac has joined the channel [06:55] qFox has joined the channel [06:56] micheil: damn. test is hanging. [07:00] mape: ryan[WIN]: got the jsonP working? [07:00] ryan[WIN]: mape i ended up using nginx to proxy out [07:01] micheil: hmm.. that's why make might be running slow.. still had indesign open. [07:01] ryan[WIN]: but it seems ok because proxy from nginx is probably about as fast as i'll get [07:01] mape: Hmm k, should just be callbackName+'('+jsonString+')'; [07:01] ryan[WIN]: i got jsonP workig but there's no way to get around the lack of cross site post [07:01] mape: ah true [07:02] ryan[WIN]: since browsers consider host:80 and host:8000 to be cross site [07:02] mape: But then again you have like unlimited posting ability if it is just plain text you are sending [07:02] mape: except for IE that doesn't like data over like 2049bytes or something around there [07:03] ryan[WIN]: yeah [07:03] ryan[WIN]: i got it all working though for my purposes [07:03] ryan[WIN]: apache can eat a bag of dicks imho [07:03] ryan[WIN]: nginx <3 [07:04] micheil: aha! $ python tools/test.py path_relative_to_tests_without_extension --mode=debug [07:07] CodeOffi_ has joined the channel [07:07] TomY has joined the channel [07:09] pdelgallego has joined the channel [07:10] riottaba has joined the channel [07:22] mape: Anyone here got a good grip around express? [07:22] mape: Trying to serve static files from within a sibling folder but it doesn't seem to want to play [07:29] javajunky has joined the channel [07:29] javajunky has joined the channel [07:34] teemow has joined the channel [07:36] pkrumins: upgraded to 0.1.93! [07:36] pkrumins: hope the bug with 'end' is really gone! [07:44] javajunky: ;) [07:50] micheil: _ry: could you have a look at this test I'm working on and suggest any changes? [07:51] N` has joined the channel [08:06] mape: javajunky: Still around? Trying to get express into rendering a haml file but regardless of the path I send it gets ENOENT, No such file or directory [08:09] javajunky: yarp [08:09] javajunky: okey doke [08:09] javajunky: there's a setting that tells the view rendering code what the 'working directory' is [08:09] javajunky: the setting is called 'root' [08:10] javajunky: us if you stick a line like : [08:10] javajunky: set('root', __dirname) [08:10] mape: javajunky: http://gist.github.com/384921 [08:10] javajunky: then express will look for its templates in __dirname/views [08:10] javajunky: ….which I see you're doing [08:10] mape: Hehe, it serves files fine, / and whatnot, but this.render doesn't [08:11] javajunky: hmmm you can simplify that code quite a bit if you wanted to [08:11] mape: How so? :) [08:11] javajunky: the 'static' plugin ships with a default route that will ship anything in the 'public' folder ? [08:11] mape: oh [08:11] mape: Any docs on that? [08:12] javajunky: http://wiki.github.com/visionmedia/express/plugins [08:12] javajunky: search for 'Static' :) [08:13] mape: Ah, not very verbose on that feature [08:14] javajunky: nope, fair comment. but it will remove your bottom 3 routes :) .. [08:14] javajunky: back to /test [08:15] javajunky: this.render('index.html.haml', {hasLayout:false, locals: { user : {id:123, name:'tj'}}}); *should* be working for you [08:15] javajunky: assuming you have a file named index.html.haml (note the order of html & haml in that filename) in a folder called 'views' (by default) [08:16] micheil: gee.. for some of this testing stuff I wish I had a step style thing [08:16] javajunky: (where views is a child of the folder from which you're executing the file tmp.js … (because you're seting the 'root' to be __dirname .. .which is the current working directory) [08:16] mape: javajunky: yeah [08:17] micheil: javajunky: pardon my asking, what's you relation to express? [08:17] mape: javajunky: So I shouldn't have to use set('root') as a prefix? [08:18] javajunky: mape: no, setting that once , means all the view rendering code already knows .. it also already knows about the 'views' [08:19] tbassetto has joined the channel [08:20] mape: ok [08:21] mape: 500 Error: Cannot find module 'html' [08:21] mape: Is that express specific or a general module? [08:21] javajunky: micheil: I'm listed as a contributer on the page, I've done some work on the core, I'm writing the auth framework, but mainly when I came to node it was the most promising looking framework, and I believe that in order to maintain momentum in the community we need some good examples of full on frameworks… … as it happens bomber was my first choice, but there wasn't enough activity for me to bother with, Tj has a *lot* of energy and drive so I'd like to [08:22] javajunky: mape: see my last comment about the filename of your template, it matters :) foo.HTML.HAML not foo.HAML.HTML ….(not in capital letter mind) [08:23] javajunky: micheil: There are now several other options including geddy + fab , but fab just won't appeal to rubyist converts and geddy does look interesting especially with its model support, but for now express does what I need :) [08:24] micheil: okay [08:24] micheil: I'm looking for a possible framework for a project I'm working on, which is why I asked :) [08:25] javajunky: micheil: ah I see :) … well I can recommend express [08:26] mape: javajunky: http://gist.github.com/384921 didn't seem to work at all, http://nodecode.info:9999/ - http://gyazo.com/639d942a9efa65b933f40060dcf2ab2d.png [08:35] javajunky has joined the channel [08:41] javajunky: mape: you up and running yet? [08:41] mape: Nope, still having the issues pasted above ^ [08:41] jansc has joined the channel [08:42] javajunky: I think I may have missed them [08:42] javajunky: (had a meeting) [08:42] mape: No worrys [08:43] javajunky: …um did you want to repaste them ? [08:43] mape: 10:26:06 < mape> javajunky: http://gist.github.com/384921 didn't seem to work at all, http://nodecode.info:9999/ - http://gyazo.com/639d942a9efa65b933f40060dcf2ab2d.png [08:43] xla has joined the channel [08:44] Nohryb has joined the channel [08:46] markwubben has joined the channel [08:47] javajunky: ok lets start with the static plugin [08:48] mape: ok [08:49] javajunky: the default route it configures automagically for you is /public/* .. it will map any url requests to http://host:port/public/* to the path you configured, so in your case anything in the 'static' subfolder from where ou executed your app . [08:49] javajunky: i.e. wil map http://host:port/public/css/foo.css -> ~/mynodeapp/static/css/foo.css [08:49] javajunky: your current index.html refers to http://host:port/css/foo.css [08:50] romainhuet has joined the channel [08:51] mape: Ah nice, that works [08:57] mape: javajunky: And the haml part, any idea why that doesn't go to views? [08:57] mape: or should that be inside static as well? [08:57] Nohryb has joined the channel [08:58] mape: samt att de inte sl�ngt min l�da p� kontoret :S [08:59] xla has joined the channel [09:00] javajunky: mape, let me take a look. [09:06] pkrumins: shouldn't this be true: [1,2,3].some(function (x) { x==1 }); [09:07] saikat has joined the channel [09:07] pkrumins: oh okay, i need to use return there [09:07] mape: return? [09:07] pkrumins: yep. [09:08] pkrumins: was in perl mindset ;) [09:08] hellp has joined the channel [09:08] javajunky: mape: ok, so in your 'views' folder there's a file named 'index.html.haml' ? [09:08] mape: javajunky: yeah [09:08] javajunky: ok that should totally be working. [09:09] javajunky: no wait [09:09] javajunky: stupid me [09:09] javajunky: its a confusing error message (soryr) [09:09] javajunky: its looking for a 'layout' [09:09] javajunky: change the 2nd argument to render to have a 'hasLayout:false' property … [09:09] javajunky: (so it has 2 properties, locals + hasLayout) [09:10] mape: changed [09:10] javajunky: err 'layout' actually not hasLayout [09:10] javajunky: my bad. [09:10] mape: oh [09:10] mape: there we go.. [09:10] javajunky: sry not near anything useful [09:10] javajunky: ace. [09:10] javajunky: now you just need to fix your haml [09:10] javajunky: looks like you're following an old tutorial or somethign :) [09:11] javajunky: take a look at mine ( http://howtonode.org/express-mongodb ) for a set of workable examples [09:11] mape: Yeah, seems to happen a lot these days with node ;) [09:11] javajunky: indeed [09:12] javajunky: that layout error is a PITA I'll look at changing that it confuses everyone (myself included) [09:12] mape: hehe, thanks a lot for the help :) [09:13] mape: btw what would the layout be? [09:15] javajunky: common stuff across all your pages [09:15] mape: ah k [09:15] javajunky: so for example if all your pages are html … csss … scripts… body …. footer [09:15] javajunky: you could put all of that in a single file [09:15] mape: That sounds handy, like base.html that gets extended i django? [09:16] javajunky: (locals are still applied, so the layout can contain 'title' that is set from locals unique to each page. [09:16] javajunky: yeah I guess .. its a pretty standard pattern.. take a look at the express chat examples. [09:21] rolfb has joined the channel [09:31] botanicus has joined the channel [09:35] pedro_ has joined the channel [09:35] awenkhh has joined the channel [09:41] micheil: _ry: assertionErrors could be a little more verbose.. [09:42] botanicus: Guys I'd need to clear DB after tests run. Unfortunately I can't just process.addListener("exit", cleanDb); since when this even run, the even loop is already inactive, so the callbacks defined in this event aren't ever fired. [09:42] botanicus: Any ideas? [09:43] botanicus: I can't simply put it somewhere because it would remove objects from db before the test suite finish [09:44] mape: javajunky: Sorry to bother you again, but in haml, how would one do %img.avatar{src:"{%=image}"} [09:48] javajunky: %img.avatar{ src: image } [09:48] javajunky: I think [09:48] mape: javajunky: The output should be a string '{%=image}' [09:48] mape: Used for javascript templates [09:48] mape: Like %p.text \{%=text\} [09:49] mape: but seems I can't escape it in an attribute [09:55] spoob has joined the channel [09:56] javajunky: sorry mape, I"m not sure I understand what you're trying to do [09:57] javajunky: are you trying to output non-html from the template ? [09:58] javajunky: you may want to look at :plain and :javascript if you're dumping out stuff like that, also != will non escape stuff… I thin. [09:58] mape: hmm k [10:00] yatiohi has joined the channel [10:00] mape: Hmm.. it is throwing errors for indenting an a tag into a h1 [10:01] mape: Thats strange [10:02] javajunky: you can use code evaluation in the templates anywhere really, but I think you're talking about doing stuff thats used for the client [10:02] javajunky: pastebin your haml [10:03] mape: javajunky: http://gist.github.com/385025 [10:04] mape: the span.order-by and span.order throws unexpected indent [10:04] mape: I can't have text and elements? need to wrap the text into something to get the order? [10:05] javajunky: just place 'Modules' / Order by : 'Date added' on the next line at the same level of indentation [10:05] javajunky: I think it is a parsing bug, I've seen it a couple of times. [10:06] javajunky: the header looks little weird too me as well, I think I normally expect to see !!! html or something [10:06] mape: Ah! [10:06] mape: then I get xhtml [10:06] mape: I want html5 [10:06] javajunky: there's a load of options [10:07] mape: oh k [10:07] mape: ah !!! 5 [10:07] javajunky: !!! 5 [10:07] javajunky: indeed. [10:09] trochala has joined the channel [10:13] tbassetto has joined the channel [10:14] derbumi has joined the channel [10:16] SamuraiJack has joined the channel [10:27] javajunky has joined the channel [10:27] javajunky has joined the channel [10:30] awenkhh has joined the channel [10:38] piranha has joined the channel [10:44] maushu has joined the channel [10:54] maushu: Dammit, starting a startup is painful. [10:55] maushu: ...for my wallet. [10:55] maushu: Zing. [10:59] botanicus: maushu: hehe, tell me about it. For me, wallet isn't the problem, the problem is time. [11:01] awenkhh has joined the channel [11:03] derbumi has joined the channel [11:19] maushu: botanicus: time is a problem too! But everyone knows that. [11:25] Nohryb has joined the channel [11:31] Nohryb: . [11:37] mape: pong [11:38] maushu: ping [11:41] javajunky: bing [11:41] mape: juck :( [11:42] Nohryb: plaff [11:45] maushu: thunk [11:45] mape: pow [11:48] N` has joined the channel [11:57] keeto has joined the channel [12:04] jwm has joined the channel [12:04] jwm: what license is node.js? [12:04] jwm: :) [12:06] mape: MIT [12:06] riottaba_ has joined the channel [12:08] jwm: bsdl compat? [12:08] jwm: looks like the bsdl (mit) [12:08] jwm: heh [12:28] MattJ has joined the channel [12:39] herbySk has joined the channel [12:40] N` has joined the channel [12:45] JAAulde has joined the channel [12:45] spoob_ has joined the channel [12:46] awenkhh has joined the channel [12:47] creationix has joined the channel [12:52] ewdafa has joined the channel [12:55] boaz has joined the channel [13:04] pjb3 has joined the channel [13:12] pedro has joined the channel [13:12] sveimac has joined the channel [13:13] jherdman has joined the channel [13:17] jedschmidt has joined the channel [13:17] ncb000gt has joined the channel [13:18] botanicus has joined the channel [13:23] quirkey has joined the channel [13:29] Digem has joined the channel [13:30] davidsklar has joined the channel [13:33] jedschmidt has joined the channel [13:34] Dethe has joined the channel [13:35] keeto has joined the channel [13:38] gf3 has joined the channel [13:39] derbumi_ has joined the channel [13:41] Yuffster has joined the channel [13:42] hassox has joined the channel [13:43] creationix has joined the channel [13:46] quirkey has joined the channel [13:46] seeflanigan has joined the channel [13:50] Digem has joined the channel [13:50] Digem has left the channel [13:54] boaz has joined the channel [13:54] softdrink has joined the channel [13:54] spoob_ has joined the channel [13:55] noonat has joined the channel [13:57] mjijackson has joined the channel [13:59] nefariousD has joined the channel [14:07] robrighter has joined the channel [14:08] ncb000gt has joined the channel [14:10] mkitt has joined the channel [14:11] nefD has joined the channel [14:11] sveimac has joined the channel [14:13] ditesh|cassini has joined the channel [14:13] creationix has joined the channel [14:18] Azeroth_ has joined the channel [14:30] graemenelson has joined the channel [14:34] softdrink has joined the channel [14:45] alex-desktop has joined the channel [14:48] N` has joined the channel [14:49] bolson has joined the channel [14:51] xla has joined the channel [14:53] kriszyp has joined the channel [14:56] hellp has joined the channel [15:06] awenkhh has joined the channel [15:15] JimBastard has joined the channel [15:15] jansc has joined the channel [15:22] JimBastard: looks like the medical board finally had enough with Keeto's actions [15:23] ProfKeeto: JimBastard: that's Professor Keeto to you. [15:23] JimBastard: That's Mr. Bastard to you [15:23] ProfKeeto: switched my MD to a PhD. [15:24] keeto: I'm tired of playing with titles. x) [15:28] ncb000gt: https://twitter.com/emacs/status/13134393723 [15:28] ncb000gt: :) [15:28] creationix: has anyone else played with heroku node yet? [15:28] ncb000gt: http://js-comint-el.sourceforge.net/ [15:29] ncb000gt: that's the link to js-comint [15:29] creationix: inferior? [15:29] quirkey_ has joined the channel [15:30] creationix: node is not inferior, come on emacs ;) [15:30] JimBastard: sup creationix [15:33] ncb000gt: lol [15:33] alexiskander has joined the channel [15:34] JimBastard: sup quirkey [15:34] JimBastard: when we gonna eat some BLTs [15:34] JimBastard: :-D [15:35] creationix: mmm, mutton [15:36] creationix: oh, sorry, you said BLT, not MLT [15:36] JimBastard: mutton isnt so baaaaahhhhad [15:36] rudebwoy has joined the channel [15:37] KungFuHamster_: but it ain't bacon [15:42] mkovacs has joined the channel [15:43] mjijackson has joined the channel [15:44] dgathright has joined the channel [15:47] mjr_ has joined the channel [15:52] Dethe has joined the channel [16:00] botanicus has joined the channel [16:01] charlesjolley has joined the channel [16:04] joshbuddy has joined the channel [16:05] CodeOfficer has joined the channel [16:09] RayMorgan has joined the channel [16:09] herbySk has joined the channel [16:09] creationix: heh, heroku is postgres not mysql, sweet [16:14] creationix: does node have a postgres driver that supports uri's like postgres://username:password@ipaddress/databasename [16:14] creationix: maybe the uri lib in node can break it up? [16:17] dgathright has joined the channel [16:17] nwhite has joined the channel [16:18] mythz has joined the channel [16:18] vhost- has joined the channel [16:22] bweaver has joined the channel [16:24] jedschmidt has joined the channel [16:24] fizx has joined the channel [16:24] quirkey has joined the channel [16:26] JimBastard: how is it whenever im doing real work with a team im always the one being blocked by waiting for other peoples work :-( [16:26] JimBastard: is this normal for JS peoples? like since we have to integrate the front and the back? [16:26] bmizerany has joined the channel [16:28] mjr_: I think it depends on the complexity of the project. [16:28] RayMorgan has joined the channel [16:28] mjr_: And how much you are willing to try to do in JS. [16:29] tk: JimBastard: In my experience... yah :( -- also get blamed for holding up the projects too incidently heh [16:30] kriskowal has joined the channel [16:30] kriskowal has joined the channel [16:30] JimBastard: lol tk , im way too good at covering my ass for that. also i tend to write like 500 lines of jquery in a day [16:31] JimBastard: so its like, ohh hai json fragment, code code code, done [16:32] JimBastard: but yeah the lead js guy is the man in the middle between the front-end and back-end team [16:32] webben: JimBastard: I think the solution there is to agree with the backenders what the API will return and then just mock the responses. [16:33] tk: JimBastard: ohh actual LOC didnt matter in my case :P my last company blamed me for holding up a project when our 8'ish person dev team was working on 3 live projects at a time (all code branches of our project that required full support) instead of the project we were spposed to be on... in terms of project mgmt they were retards [16:33] noonat: webben: yep [16:33] JimBastard: oofa tk [16:34] JimBastard: yeah webben the problem is almost every project im on started as a non-ajax site and we are layering ajax on top [16:34] noonat: haha [16:34] JimBastard: and the data im being sent is non-trivial. doing a mock up isnt really possible [16:34] mkitt has joined the channel [16:34] webben: JimBastard: I think layering ajax on top /should/ ideally be the norm. [16:35] webben: Don't really believe in data so complex that a mock up isn't possible. [16:35] JimBastard: you ever work with smart-meters? :-D [16:35] webben: (If one can't mock the data, then I can't see how one can code against the data.) [16:35] tk: webben: unless you dont intend to support non JS enviroment yah layering is the norm in most cases [16:36] JimBastard: well we are turning our multipage app into a single page app. also making JS a requirement, so NOSCRIPT doesnt matter [16:36] JimBastard: and SEO doesnt matter [16:36] webben: that's not layering ajax on top [16:36] JimBastard: ohh it is [16:36] webben: that's replacing your frontend codebase [16:36] JimBastard: because you cant turn the whole thing into a SPA in one day [16:37] webben: i see [16:38] webben: Still, I think my point about mocking stands. [16:38] softdrink: pfffff testing is for rubes. [16:38] softdrink: ¬¬ [16:44] webben: softdrink: I'm not even talking about testing - though I don't especially agree. [16:44] webben: softdrink: I'm talking (if you read up) about how to unblock yourself when waiting for backend to deliver a working API. [16:45] JimBastard: webben: i dont see how i could do mocks for the data im working with [16:45] softdrink: i was just being facetious :) [16:45] JimBastard: id like to, but unless i start duplicating models on the client i dont see how i'd do it [16:45] charlesjolley has joined the channel [16:45] webben: JimBastard: Then I don't see how you could possibly write code for the data even once you get the API. [16:46] webben: JimBastard: Why would you need to duplicate "models on the client" - why not just work with static lumps of JSON simulating API returns? [16:46] steadicat has joined the channel [16:47] JimBastard: because id have to create those "lumps" by hand? [16:47] webben: of course. [16:47] webben: mocks typically are created by hand [16:47] JimBastard: and i dont exactly have a concept of the schema, or which parts of it im suppose to use [16:48] JimBastard: you are right though, in theory [16:48] webben: JimBastard: /that/ is what you should be agreeing with the backend guys ahead of time. [16:48] JimBastard: yeah, the missing picture here is that i just got brought into a project at the tail end [16:48] JimBastard: so i wasnt around for the beggining [16:49] webben: JimBastard: If they're too wishy-washy to do that, get a spec for what the frontend should do, and just keep your clientside business logic and presentational logic isolated from the code for querying the api and extracting data from the api return. [16:50] webben: And if you can't get a spec for what the frontend should do, then you're no longer being blocked by the backend but by someone else (a designer, product, a customer, idk) [16:50] indiefan has joined the channel [16:50] jwm: are you against testing? [16:50] jwm: hehe [16:50] rudebwoy has joined the channel [16:51] JimBastard: yeah i mean webben thats really generic advice. good advice, just too generic for what im doing [16:51] JimBastard: thanks though [16:52] webben: np [16:57] isaacs has joined the channel [17:01] creationix: man, switching from a nosql system to postgres is painful [17:02] mjr_: unless you want to do ad-hoc reporting. [17:05] creationix: well, I'm cheating and my tables are (name text, data text) where data is JSON [17:06] creationix: but since heroku comes with 5mb of free postgres, and the filesystem is read-only, I need to move my sousaball data into postgres [17:06] JimBastard: lulz [17:06] JimBastard: creationix i mean you could host your DB somewhere else right? [17:06] creationix: of course, but if it's on heroku, then it works with their bundler [17:07] creationix: they gave me the beta account to test their stuff after all [17:07] JimBastard: got ya [17:09] creationix: I think node hosting services will take off [17:09] JimBastard: lol [17:09] JimBastard: me too [17:10] JimBastard: we should build one.....ohh wait :-D [17:10] ryan[WIN]: node is radddd [17:10] JimBastard: im debating releasing my broodmother as open source [17:10] JimBastard: indexzero wouldn't approve [17:10] boaz has joined the channel [17:10] JimBastard: broodmother is a multiapp node hosting platform that supports automagic deployment from github [17:11] JimBastard: spawns "drones" wrapped in "carapaces" [17:11] mjr_: creationix: I've heard a rumor that there will be couchdb support on heroku soon. [17:12] creationix: mjr_: that would be nice [17:15] ceej has joined the channel [17:15] creationix: alright, now that my site is dead, I forgot to update node-postgres to the latest node [17:16] creationix: oh well, sousaball isn't exactly a production app [17:17] JimBastard: yeah i noticed the sousaball demo was down last night actually [17:17] ryan[WIN]: JimBastard, so would scaling in the cloud be like a zerg rush kekekeke [17:17] N` has joined the channel [17:17] mape: heroku =? [17:17] JimBastard: yeah ryan[WIN] [17:17] JimBastard: node rush [17:17] mape: non vps hosting for cheap? [17:17] ryan[WIN]: ^_______________^ LOL GG DOOD [17:18] JimBastard: heroku has been the future for a while, we were planning on competing with them last year, looks like its the same plan this year ^_^ [17:18] JimBastard: i really like the idea of having ruby and node in the same place though, i dont do any ruby dev really though [17:21] ryan[WIN]: who needs ruby when you've got js and v8 [17:25] tk: mape: not so cheap if you start adding features :P [17:25] mape: tk: So.. why not get a vps? [17:26] tk: mape: <-- not a heroku user -- I jus tlooked at the packages last night cause I never heard of heroku till 2 or 3 days ago [17:26] mape: ah k [17:26] mjr_: I must have some kind of demographic mismatch, but I think VPS hosting is super cheap. [17:26] nefD: linode 360 @ 20$/month = the win [17:26] mjr_: It's like, less than the cost of one dinner out, every month, and you get root. [17:26] tk: mjr_: these days it is you can get a 256Mb VPS for $20 from most places these days [17:27] mjr_: I know, so why bother with shared? [17:27] nefD: line 360 = 360mb RAM, 16gb storage, 200gb xfer [17:27] mjr_: Because the shared people remove some sysadmin hassle I guess. [17:27] mjr_: But the cheapness argument I just don't understand. [17:27] nefD: awww but setting up the server is part of the fun! :D [17:29] lifo has joined the channel [17:30] JimBastard has joined the channel [17:30] JimBastard: oops [17:30] tk: nefD: setting up Xen is more fun than setting up servers :P [17:31] tk: ACTION needs to finish setting up his DNS server so he can kill his one VPS thats only being used for the DNS provided by slicehost anymore heh [17:34] bmizerany has joined the channel [17:34] CIA-75: node: 03Ryan Dahl 07master * r3b32302 10/ (doc/api.markdown lib/http.js): http server emits 'clientError' - http://bit.ly/cbVraU [17:34] CIA-75: node: 03Ryan Dahl 07master * r5b2801e 10/ doc/api.markdown : Add http server 'request' event to docs - http://bit.ly/bKZSg0 [17:34] CIA-75: node: 03Ryan Dahl 07master * r285c5ed 10/ doc/api.markdown : Fix some styling in the docs - http://bit.ly/9k4iz7 [17:36] rictic has joined the channel [17:36] JimBastard: hey bmizerany , if you dont mind me asking who has been leading node dev over at heroku? [17:36] isaacs: tk: if you move your domain reg to name.com, they give you dns, too [17:36] isaacs: tk: also, they're cheap [17:37] bmizerany: JimBastard: myself [17:37] JimBastard: awesome [17:37] isaacs: i mean, it's like $8 vs $10, so not a big diff [17:37] isaacs: but still [17:37] bmizerany: JimBastard: why do you ask? [17:37] JimBastard: just curious, ive been working on something very similiar [17:37] KungFuHamster_: anyone care to answer a noob question? using http://github.com/mscdex/node-poormansmysql how do I associate queries with results? embedding a function into the query doesn't work. [17:37] creationix: bmizerany: I'm busily updating my postgres driver to work with latest node and heroku [17:38] dgathright has joined the channel [17:38] bmizerany: creationix: awesome! [17:39] creationix: bmizerany: it implementes the postgres wire protocol in pure js, so it's not as fast as a c extension, but there is no compile step [17:39] creationix: and for people using the blossom db, it's probably plenty fast [17:40] tk: isaacs: hmm i almost want to say thats one of the registrars I had problems with a few years ago... I'll have to see if I can verify what registrar that was but that would definitely be worth switching from godaddy Id say (not to mention GoDaddy really doesnt offer anything I use anyways) [17:40] bmizerany: creationix: did we get you in the first round of beta? [17:40] isaacs: tk: godaddy is for business types who don't know how the web works and don't want to. [17:41] isaacs: tk: not to say that's not a valid use case. but it's probably not your use case, and definitely not mine. [17:41] jwm: 1and1 = awesome [17:41] tk: isaacs: at one time they were a good deal too :P [17:41] jwm: www.1and1.com [17:41] nefD: why are .io domains so expensive? :( [17:41] bmizerany: JimBastard: have you had a chance to play with our node support? [17:41] mjr_: godaddy is apparently also for people who like to look at pictures of Danica Patrick, but otherwise wouldn't have an excuse to. [17:41] jwm: largest provider in the world [17:42] creationix: bmizerany: I'm in it now if that's what you mean [17:42] bmizerany: awesome. yes. [17:42] bmizerany: we had a long list. I can't remember all the names. [17:42] tk: jwm: never been too impressed with their pricing [17:42] jwm: server pricing? [17:43] jwm: they have the best prices on the net [17:43] jwm: been using them fo 10+ years [17:43] jwm: :) [17:43] isaacs: tk: i've been with name.com for a long time now. i've had only good experiences with their support, and only rarely. the UI is a bit painful, but the service works very reliably [17:43] tk: yah server wise -- I stopped doing the $5/motnth stuff :P [17:43] isaacs: jwm: you can get a vps on prgmr for $6/month [17:43] KungFuHamster_: the best domain deals are for the first year only... they gouge you on renewals. I end up transferring mine between registrars when there's a good deal.. then transfer to someone else when there's a new deal elsewhere. [17:44] tk: isaacs: only rarely good experiences? :P j/k [17:44] jwm: domains went up but they use to be the cheapest [17:44] jwm: 5.99 [17:44] isaacs: tk: hehe, i mean, i've only had to contact their support twice, and one of those times, it was actually dreamhost's fuckup [17:44] jwm: I'm talking about full servers [17:44] isaacs: jwm: what's a "full server"? [17:44] isaacs: you mean, not a vm? an actual physical box that is all mine, for $6/month? [17:44] isaacs: if so, i'm SO there. [17:44] tk: jwm: you mean dedicated and or colo? [17:45] KungFuHamster_: haha [17:45] jwm: for 50-70 [17:45] jwm: dedicated [17:45] rnewson has joined the channel [17:45] KungFuHamster_: where? [17:45] jwm: 1nad1 [17:45] isaacs: ah, meh. i don't need dedicated servers. [17:45] jwm: 1and1* [17:45] derbumi has joined the channel [17:45] mjr_: rnewson: _ry fixed your chunking proxy issue [17:45] rnewson: _ry: props on #77 fix. verified with my local stuff. [17:45] jedschmidt: bmizerany: would love to check it out if you have any room in the beta left. [17:45] isaacs: and prgmr will colo your box for super cheap. [17:45] rnewson: mjr_: I came in for that reason, excellent stuff. [17:45] isaacs: $200 up front for hte hardware, and then way less. [17:45] tk: jwm: their cheapest dedicated starts at 99/month [17:46] mjr_: isaacs: I'd like to try prgmr, but they have been full for a while. [17:46] jwm: tk: they run specials all the time [17:46] jwm: cheapest is at $49 [17:46] isaacs: mjr_: yeah, keep trying. they're very responsible with their availability [17:46] bmizerany: jedschmidt: we're bringing in testers in batches. did you send an email to the list? [17:46] tk: isaacs: I like my colo.... :P [17:46] jwm: I rent mine for $59 [17:46] mjr_: rnewson: I'm going to come over to couchdb and bug you about my couchdb-lucene installation issues. [17:46] isaacs: mjr_: that is, they don't oversell [17:46] KungFuHamster_: jwm: I see opterons starting at $99 [17:46] jwm: dual core, raid [17:46] jwm: 3tb bandwith [17:46] rnewson: mjr_: fair's fair. :) [17:46] mattly has joined the channel [17:47] jedschmidt: bmizerany: to nodejs@heroku.com? ayep. guess i'll have to wait? [17:47] bmizerany: jedschmidt: we should have everyone in soon [17:47] tk: isaacs: free - unmetered plugged directly into core router for a local ISP here :P [17:47] bmizerany: jedschmidt: yes. sorry. shouldn't be long. [17:47] isaacs: tk: nice [17:47] mjr_: isaacs: I really enjoy the pgrmr slogan, "We don't assume you are stupid." That sounds like a vendor I'd like to support. [17:47] jedschmidt: bmizerany: cool, very psyched about what you guys are doing. [17:47] bmizerany: jedschmidt: thanks. we are too. I'm excited about node [17:48] tk: isaacs: and I get phys access -- so its a double win :P [17:48] isaacs: tk: physical access is not a feature, in my case. [17:48] isaacs: it's a bug. [17:48] mjr_: I've spent too many years in loud, cold data centers. I'm quite happy to let someone else do that job. [17:49] jwm: 1and1 has the best automated server management imo, you can do anything to the server for free, even serial console [17:49] jwm: but anyway, #node channel :) [17:49] mjr_: Also, changing diapers. I need some sort of virtual private hosted outsourced diaper changing service. [17:49] jwm: I love node [17:49] bmizerany: creationix: what are you doing with flat-files? I may be able to help [17:49] hsuh has joined the channel [17:49] jwm: wonder why mit instead of bsd [17:50] tk: isaacs: heh, I'd rather be able to diagnose and fix a problem myself than rely on someone else :P [17:50] creationix: bmizerany: sousaball currently just saves data into flat json files as the db, but I've been told heroku has a read-only filesystem [17:50] isaacs: tk: sure. in this case, though, teh root cause analysis would likely end up being "well, you let isaac touch it, and he started messing with shit. there's your problem right there..." [17:50] isaacs: tk: it's bad enough i give myself sudo access to my vpses [17:51] tk: isaacs: ahhh -- i've had my share of 'being the bug' but they are learning experiences so I dont complain :P [17:51] jwm: I've got to have my serial console access [17:51] jwm: I love it [17:52] jwm: I can install any OS I want on the server [17:52] ssteinerX has left the channel [17:52] bmizerany: creationix: we do. you can use the /tmp directory, but we don't guarantee those files will follow your dynos around. We suggest using S3/DB's/etc for anything that isn't acceptable as transient. It's how we scale your processes so quickly [17:52] bmizerany: creationix: correction.. ./tmp [17:52] tk: isaacs: worst part was I didnt think it t hrough w hen I setup originally.. and my server was barely touching its resources.... so I had to migrate everything off it, so I could reinstall it using Xen and setup VPS's on it [17:52] creationix: yeah, that's what I figured, hence me updating my postgres driver [17:52] bmizerany: creationix: http://docs.heroku.com/constraints [17:52] bmizerany: heh [17:53] tk: jwm: I Can install any OS I want to... and I dont rely on a slow serial connection :P [17:57] deanlandolt has joined the channel [18:00] tk: isaacs: not finding a link that actually lists what a you get access to with a registration at name.com? dont suppose you know where they might list such things off hand? [18:00] isaacs: hmm... [18:02] isaacs: tk: not sure. i signed up because it was cheap, and someone said that they do dns for you [18:02] isaacs: tk: havent had any reason to complain since [18:03] tk: isaacs: but you use their DNS? that would suffice at least for me to know its actually a feature :P [18:05] tk: oh man my meds are kicking my ass :( hate taking them first thing in the morning [18:07] aho has joined the channel [18:08] brianmario has joined the channel [18:11] auser has joined the channel [18:11] auser: hey [18:11] boaz has joined the channel [18:12] auser: my socket.io-node is failing everytime I start it (from the test/ directory) with a "Error: Must have start <= end," anyone else see this before? [18:15] pkrumins: creationix: what was your project for websockets in nodejs? [18:15] creationix: nothing yet, just the simple chat demo in my websocket library [18:15] creationix: I plan on using it for a game I'm making next month [18:16] pkrumins: i finally got around to websockets for my project [18:16] pkrumins: now branched and implementing those [18:16] auser: hm [18:16] creationix: did you see the socket.io announcement [18:16] saikat has joined the channel [18:16] creationix: it's updated and does everything for you [18:16] pkrumins: hey, tell me a bit more [18:16] pkrumins: i did not see that ann. [18:17] creationix: http://groups.google.com/group/nodejs/browse_thread/thread/a1973a7d47c54389 [18:17] hsuh has joined the channel [18:17] pkrumins: brwahaha! works without patch [18:17] pkrumins: oh man, oh man [18:17] mikeal: felix isn't around :( [18:18] mjijackson has joined the channel [18:20] devinus has joined the channel [18:21] auser: hm, I can't seem to get it to work for me, I have the latest socket.io [18:22] kjeldahl has joined the channel [18:23] creationix: I think fictorial is using my socket library [18:24] lifo has joined the channel [18:29] tlrobinson_ has joined the channel [18:29] isaacs: tk: yeah, i use their dns for everything i do with dns [18:29] enherit has joined the channel [18:29] isaacs: tk: you even get wildcard dns entries, which some hosts stupidly don't allow. [18:30] isaacs: tk: and there's a single-click option to set up google apps. [18:30] tk: isaacs: nice, think ill be xfering as my domains come up [18:31] mikeal: what is felix's email address? [18:33] JimBastard: ohhnozegermans@pleasefinishnodedirty.de? [18:33] JimBastard: i could be wrong though [18:33] tk: heh [18:36] joshbuddy has joined the channel [18:36] auser: hmphf [18:36] towski has joined the channel [18:37] pedro__ has joined the channel [18:38] maushu has joined the channel [18:40] JimBastard: hrmpf [18:40] herbySK_ has joined the channel [18:43] herbySk has joined the channel [18:44] pedro__ has joined the channel [18:46] tilgovi has joined the channel [18:49] _ry: mikeal: grep Felix AUTHORS [18:49] jedschmidt has joined the channel [18:54] javajunky has joined the channel [18:55] bmizerany has joined the channel [18:56] pkrumins: Guille is changing usernames as gloves, Guille, LearnBOost, DevRose or what was it [18:56] pkrumins: s/as/like/ [18:56] pkrumins: but he's cool anyway :) [18:57] tilgovi has joined the channel [18:59] awenkhh has joined the channel [19:00] tk: hmm do any packages in node add rawurlencode? [19:01] JimBastard: dammiut [19:01] charlesjolley has joined the channel [19:01] JimBastard: blake keeps signing on and off [19:01] tk: looks like maybe its just urlencode [19:04] softdrink: Dear Java, I hate you. Sincerely, Me [19:06] isaacs: tk: javascript gives you encodeURIComponent and encodeURI [19:06] isaacs: tk: or old-school escape and unescape [19:06] isaacs: tk: or you can use the require("querystring").escape [19:06] tk: guess i'll dig in and see which is more appropriate [19:06] JimBastard: Dear softdrink - Thank you for your feedback. Please feel free to file all further grievances with the interface application class generator class for feedbackRequestFeedbackforFeedback objects located at our SOAP web service [19:06] tk: thanks isaacs [19:07] softdrink: XD [19:07] auser has left the channel [19:07] tk: hmm looks like its just building a querystring so betting querystring.escape is prolly it [19:07] softdrink: JimBastard: you left off com.java.feedback.interface.forwardFacing... [19:09] JimBastard: FUUUUUUCK [19:09] JimBastard: NOW THE WHOLE INTERNET IS DOWN [19:09] JimBastard: DAMN YOU JAVAS [19:09] mythz has left the channel [19:09] softdrink: tubes are clogged [19:10] JimBastard: i hate java [19:10] tk: anyone who says they dont is lying [19:10] JimBastard: i do like scripting the JVM though [19:10] hsuh: java as a language or java as a platform ? [19:10] JimBastard: well , i LOVED doing coldfusion dev [19:10] JimBastard: thats kinda like java [19:10] softdrink: tk: or it's the only language they know because that's all that was taught in school *shakes head* [19:10] tk: softdrink: doesnt mean they dont hate it (even if they wont outwardly admit it) [19:11] JimBastard: ive literally denied 100s of java developers on first round phone interviews. 15 years of experience and they are morons , sigh [19:11] tk: softdrink: in high school we were taught AppleSoft Basic! (and this was in the late 90's) [19:11] softdrink: preaching to the choir hehe [19:12] JimBastard: we got taught borland turbo c++ 3.0....and this was in 2001....man i loved that teacher [19:12] nefD: hrm.. socket.io demo app fails when I try to run.. error is occuring when it attempts to listen for flash traffic on port 843, with an 'EACCES: Permission Denied' error.. I wonder if my system is disallowing access to that port or something? [19:12] JimBastard: he was like, fuck windows and java [19:12] softdrink: we did good ol qbasic in dos, and then actually had a semester of C in high school :) [19:12] tk: softdrink: qbasic is still newer than Applesoft :P [19:12] softdrink: hehe [19:12] tk: Apple IIe's... [19:13] softdrink: i never did any coding for old apples… i just had my trs-80 pile-o-crap [19:13] tk: an 80? not a tr[a]s[h] 81? [19:14] tk: ACTION had an 81 [19:14] tk: only disk we had for it was the first disk of Zork [19:14] tk: the original [19:15] tk: ahh isaacs encodeURI == win it wont encode the ='s :P so less calls to it [19:16] tk: hmmm nm it will also ignore the = in values [19:18] JimBastard: when i was your age we had to code on an abacus, in the snow, uphill both ways [19:19] kkaefer: is it possible to set propertyIsEnumerable with v8? [19:19] ashb: kkaefer: at the C++ level sure [19:19] kkaefer: I mean in javascript for my own properties [19:20] ashb: does Objecty.defineProperty exist? [19:20] _ry: kkaefer: http://wiki.github.com/ry/node/ecma-5mozilla-features-implemented-in-v8 [19:21] kkaefer: I know that page, but it just mentions enumerable [19:22] kkaefer: but maybe it's possible with defineProperty [19:22] nefD: huh.. can only run the Socket.io demo server as root without it bombing when trying to listen for flash traffic on port 843 [19:22] nefD: thats.. odd [19:23] nefD: hrm.. yep, even when i try to run a simple http server node script and point it at port 843, requires root [19:23] _ry: nefD: generally ports < 1024 are privileged [19:23] _ry: meaning only root can use them [19:24] nefD: ahhh, yeah.. thats right.. [19:24] nefD: thanks for the tip [19:24] nefD: im guessing theres a way to allow unprivileged access to a specific port.. i'll google up on it [19:25] amerine has joined the channel [19:26] kkaefer: yep, defineProperty works [19:28] creationix: http://gist.github.com/385649 Made a buffer_extras lib for handling data in binary protocols using buffers [19:28] creationix: part of updating my postgres module [19:28] devinus: _ry: you know if the v8 guys will ever implement stuff like list comperhensions/iterators/generators/lambdas/etc ? [19:28] ashb: devinus: they might if TC39 can agree on them [19:29] devinus: ashb: ooh, haven't heard of TC39 [19:29] devinus: ashb: is this exactly what it's meant to investigate ? [19:29] ashb: s/investigate/drive [19:30] jan____ has joined the channel [19:31] _ry: devinus: they stick to the spec exactly [19:32] devinus: _ry: do you think TC39 will influence them ? [19:32] ashb: they are on TC39 i think [19:32] _ry: no [19:32] _ry: i think es5 will be it [19:33] _ry: like for the next 2 years [19:33] _ry: (at least) [19:33] devinus: fuck [19:33] ashb: yeah this is why i use spidermonkeuy [19:33] ashb: its fast enough, getting faster and i like teh sugar [19:33] _ry: i like it. minimiality [19:33] sh1mmer has joined the channel [19:33] _ry: minimalism? [19:34] ashb: that one [19:34] ashb: or minimalistic [19:35] _ry: devinus: what doyou mean lambdas? [19:35] _ry: we've got that already [19:35] devinus: _ry: expression closure [19:35] kriszyp_ has joined the channel [19:36] mjr_: You mean function expressions? [19:36] JimBastard: you can do iterators, generators, and lambdas in JS [19:36] JimBastard: with a little bit of elbow grease [19:36] _ry: devinus: i don't know what that means [19:36] devinus: _ry: function(x) x * x [19:36] JimBastard: function(x){ return x * x;} ?? [19:36] _ry: oh [19:37] devinus: _ry: the dumbest of the expensions, the least im worried about [19:37] kkaefer: array comprehensions in spidermonkey are cool too [19:37] javajunky has joined the channel [19:38] devinus: list comprehensions is the coolest [19:38] ashb: [a,b]=[b,a]; [19:38] ashb: WTF [19:38] mjr_: sure enough, MDC calls that "expression closure". I thought there was anothername for those: https://developer.mozilla.org/en/New_in_JavaScript_1.8 [19:38] _ry: i'm not really interested in changing the language [19:38] ashb: er, FTW [19:38] _ry: js is a easier c - that's good enough [19:39] _ry: there's a lot of improvement around the language though [19:39] _ry: like how to do i/o [19:39] JimBastard: devinus: you know of coffeescript? [19:39] _ry: that makes the big difference [19:39] piranha_ has joined the channel [19:39] ashb: _ry: thats indepndant of the language itself to my mind [19:39] _ry: ashb: well, in js - thankfully [19:39] devinus: JimBastard: yes [19:39] _ry: which is the only reason i use js, btw [19:40] _ry: in most languages it's tied together [19:40] _ry: ruby, python, haskell [19:40] _ry: etc [19:40] _ry: (if only that it's distributed with the language - and everyone uses it) [19:40] _ry: even lua... [19:40] ashb: right, time to do some more work on my irc client i think [19:41] _ry: my dream si to do a node in haskell [19:41] ashb: its arguably easier due to no side effects [19:41] _ry: all i/o happens on the event loop [19:42] _ry: event calls themselves are purely functional [19:44] javajunky has joined the channel [19:46] hsuh: why, node.js is too popular ? :) [19:48] devinus: _ry: have you seen the haskell snap framework ? [19:49] robrighter: yea I was going to just say that you need to meet our sysadmin [19:49] robrighter: he does that snap framework [19:50] isaacs: robrighter: shh! if you tell _ry about that, we'll lose him from the javascript world. [19:50] devinus: robrighter: oh really? what's his name ? [19:50] robrighter: james sanders [19:50] devinus: robrighter: oh that's awesome [19:50] devinus: robrighter: all i know is those dudes are bright [19:51] robrighter: isaacs: yea its kinda scary every time I talk to ryan he reminds me of james [19:51] robrighter: but yea smart guy [19:52] elliottcable: _ry: I’d like to pick your brain about something when you have some time. It might take a while, can you /join ##Paws when you have a bit? [19:55] auser has joined the channel [19:57] Azeroth__ has joined the channel [19:57] ncb000gt has left the channel [19:58] tk: if I am trying ot make an HTTPS request using createClient() that requires user@host would I do createClient(443, 'blah.host.com'); and then r = client.request('GET', '/path/to/url', {'host':'user@blah.host.com'}); ? [19:59] voodootikigod has joined the channel [19:59] mjr_: tk: you mean it requires basic auth? [20:00] elliottcable: voodootikigod! [20:00] elliottcable: voodootikigod: it’s been a while, ’sup? [20:00] voodootikigod: yo [20:00] voodootikigod: been busy [20:00] voodootikigod: you? [20:00] isaacs: elliottcable: hey, haven't seen you in a while. [20:00] voodootikigod: hows the 'aska [20:00] tk: mjr_: just requires user@ no password, guess that would fall under basic auth still [20:00] elliottcable: isaacs: I’m ridiculously busy [20:01] elliottcable: isaacs: pretty much every waking moment goes into my language design and interpreters’ implementations [20:01] elliottcable: voodootikigod: ^that^ [20:01] elliottcable: isaacs, voodootikigod, no time for JavaScript right now )-: [20:02] mjr_: elliottcable: what language do you work on? [20:02] isaacs: elliottcable: sorry, no time for paws atm :) [20:02] elliottcable: isaacs: you make me lé sad! [20:02] voodootikigod: i know the feeling [20:03] mjr_: tk: I think you'll have to do basic auth manually. I don't think node has explicit support for basic auth, unless I missed it. [20:03] voodootikigod: tk: what are you trying to do [20:03] voodootikigod: came in halfway [20:03] JimBastard: sup voodootikigod :-D [20:04] voodootikigod: not much [20:04] tk: voodootikigod: bored, so trying to port a PHP api script to node and it uses user@host.com over HTTPS for each of its requests [20:04] voodootikigod: moving [20:04] voodootikigod: you checked out restler? [20:04] voodootikigod: JimBastard: should be back up in nyc for drankin late may [20:04] voodootikigod: you down [20:05] JimBastard: hells yeah. im in [20:05] JimBastard: i got a real job again so i can afford to go out and drink mwahaha [20:05] JimBastard: opensourcesavedmycareer.com [20:06] jan____ has joined the channel [20:07] tlrobinson_ has joined the channel [20:08] tk: voodootikigod: first I heard of it, looks promising :P [20:08] voodootikigod: haha [20:08] voodootikigod: tk: at worst case [20:08] voodootikigod: it works for providing you with bas64 encoding -> basic auth [20:09] tk: voodootikigod: actually I think this is a complete solution (basing on features) [20:09] jan____ has joined the channel [20:09] voodootikigod: ;) [20:09] voodootikigod: i try [20:10] polo has joined the channel [20:11] teemow has joined the channel [20:11] tk: JimBastard: wish I could say the same :P [20:11] tk: (that opensourcesavedmycareer -- I fi nally have a job but not sure I'd call it real at this point :P) [20:12] JimBastard: whats that tk? [20:12] tk: ls [20:12] tk: woops [20:12] JimBastard: ohhh [20:12] JimBastard: yeah man, i got a direct contact about some random project i did last year. [20:12] JimBastard: turned into a decent gig [20:13] tk: I was doing JS work for a company, who had crappy Project mgmt, (I work with the Dojo toolkit) and after I bought a house they fired me out of the blue [20:13] tk: claiming I was holding their pr oject [20:13] tk: after 2 years of 0 reviews or anything [20:14] JimBastard: employers are the worst. all you can hope for is an honest one who doesnt bounce pay checks. i dont believe in job security [20:14] tk: ya [20:14] JimBastard: you should expect to get fired today, right now [20:14] tk: impossible :P [20:14] tk: <-- still unemployed [20:16] tk: but true with the way people are these days [20:16] tk: voodootikigod: is restler written against a slightly older node.js? [20:16] voodootikigod: mostlikely [20:17] tk: ohh i see the version msg in the commit log [20:17] tk: 0.1.3 [20:17] mjijackson has joined the channel [20:17] JimBastard: tk i have a job for you in NYC [20:18] JimBastard: restler is way outdated [20:18] tk: JimBastard: hehe seems so [20:18] JimBastard: http.client should be fine enough [20:18] tk: JimBastard: old job was out of Millerton :P (but worked from home) [20:19] _ry: PST: seriously you're not qualified to worry about multicore parallelism [20:19] _ry: s/PST/PSA/ [20:20] _ry: if you don't know about sendmsg(2) - really - just be quiet [20:20] _ry: man ... [20:21] isaacs: _ry: o_O? [20:21] _ry: (i dislike being flamed) [20:22] _ry: this whole node vs erlang thing... people don't have very intellegent perspectives on it [20:22] isaacs: ah, yeah [20:22] isaacs: it's bringing out some stupid, for sure. [20:22] JimBastard: _ry, not everyone can be as leet as you are. please show mercy to us mere mortals [20:22] elliottcable: lol [20:23] elliottcable: yeah I’m trying to get _ry to explain all this to me in another channel :D [20:23] mape: _ry: Just do an open letter like Steve Jobs ;) [20:23] _ry: i've explained it on the front page of nodejs.org :) [20:23] _ry: But what about multiple-processor concurrency? Threads are necessary to scale programs to multi-core computers. Processes are necessary to scale to multi-core computers, not memory-sharing threads. The fundamentals of scalable systems are fast networking and non-blocking design—the rest is message passing. In future versions, Node will be able to fork new processes (using the Web Workers API ), but this is something that fits well into the current design. [20:23] elliottcable: well, yeah, but that’s only one approach [20:24] _ry: right - that's a different approach to erlang [20:25] _ry: and - right - erlang is a battle tested mature peice of software [20:25] elliottcable: eh, I’m not a fan of erlang [20:25] kriszyp: btw, on the subject of workers, what will the advantage be to workers being in Node's core over a userland implementation like cramforce's? [20:25] _ry: but supposing (and this is a big supposition) that node solidifies over the next 5 years [20:25] _ry: which model will preval? [20:26] elliottcable: I’m not arguing for it vs. Node, I love Node; I was just linking that article, to show you why I had thought you had chosen the single-threaded model due to restrictions, not desire [20:26] _ry: it is not *clear* that erlang's model is better [20:26] _ry: indeed - node kicks the crap out of erlang right now [20:26] elliottcable: eh I dunno about performance [20:26] elliottcable: I only care what’s easier to work witha nd understand [20:26] elliottcable: Node.js is delicious to work in [20:26] elliottcable: imho >,> [20:26] JimBastard: erlang is not too easy to code in [20:26] _ry: right - that is also important [20:26] elliottcable: JimBastard: also, hi :3 [20:26] _ry: i think there is a good case that node programs are simpler [20:27] _ry: for the first 10000 connections - you don't have to care about parallelism [20:27] _ry: that gives you a good head start [20:27] _ry: erlang would be compelling if it were faster [20:28] _ry: the linux scheduler is really really good. the erlang scheduler is probably also good [20:28] _ry: but do you really want one on top of another? [20:28] _ry: it's nice to just sit on epoll and forget about it [20:29] _ry: where erlang kills node - and always will - is error recovery [20:29] elliottcable: robrighter: why? [20:29] elliottcable: _ry: guh ^^ [20:29] _ry: one connection can fail in erlang and the rest of the server will work fine [20:29] elliottcable: stupid tab-completion is biased as hell against punctuation-begun names [20:29] _ry: in node if one connection fails - it brings downt he whole process [20:29] _ry: but mind you - process != server [20:30] _ry: so a server can recover - it'll just fork a new process [20:30] pkrumins: hmm, connection fails and brings down the whole node? [20:30] _ry: but that failed process will take down the 10000 users with it [20:30] _ry: pkrumins: if there is an unhandled exception [20:30] _ry: or - for example - hot reloading of code [20:30] _ry: in erlang this is really nice [20:31] _ry: you can do it one connection at a time [20:31] _ry: because they are all "processes" [20:31] JimBastard: im abusing sys.exec to spawn multiple node instances from within my node app. this is so i can isolate the scripts and if they go down, it doesnt affect everyone else [20:31] _ry: in node you'll have to take down one whole OS process to upgrade it [20:31] pkrumins: is there a way in node to detect when a connection closed due to failure, rather than gracefully? [20:31] _ry: those are the advantages of erlang [20:31] _ry: not parallelism or concurrency [20:31] cloudhead has joined the channel [20:31] _ry: parallelism and concurrency are where node will kick the crap out of erlang [20:31] pkrumins: would just 'end' handler be called in both cases? [20:32] _ry: if only because it has a really nice VM and there is less stuff inbetween [20:32] _ry: it's just epoll [20:32] pkrumins: for fs.stat there is 'err' thing passed to callback, but what about connections? [20:32] cloudhead: so I keep getting asked what's a good framework for node, and I never know what to answer... any opinions? [20:32] _ry: pkrumins: it will emit an 'error' event [20:32] pkrumins: _ry: oh i see, i didn't know this! [20:32] nwhite has joined the channel [20:33] pkrumins: looking it up in documentation. [20:33] JimBastard: cloudhead: framework for what? web apps? express is the most developed [20:33] JimBastard: im working on a webhook framework [20:33] cloudhead: for web apps yea [20:33] cloudhead: express sucks though [20:34] gwoo: cloudhead: why don't you like express? [20:34] tk: hmm process.mixin was removed, but it doesnt says its been replaced by anything? [20:34] _ry: so i wish the people arguing erlang vs node would learn about sendmsg(2) and then talk about how erlang can recover from error in ways that node could only dream of [20:34] JimBastard: fab is pretty promising, but i dont think im smart enough to grok how it works [20:34] JimBastard: tk - use creationix's proto lib [20:34] nefD: hrm. i wonder why i can only get the Socket.IO demo to run when using http://localhost, and not via a remote addy.. any suggestions? [20:34] JimBastard: http://github.com/creationix/proto [20:34] elliottcable: _ry: forgive me for sounding retarded, but how is `sendmsg(2)` related? [20:34] cloudhead: gwoo: cause it's a port of sinatra to a language where the idioms don't work [20:35] creationix: nefD: is it binding to 127.0.0.1 [20:35] elliottcable: _ry: I skimmed the manpage, I don’t get what it has to do with this [20:35] JimBastard: tk - proto will prototype Object to have .mixin [20:35] JimBastard: along with some other stuff [20:35] elliottcable: creationix: also, hi! long time no see. [20:35] creationix: forEach ftw! [20:35] creationix: elliottcable: hey [20:35] elliottcable: creationix: how come yer name is familiar? [20:35] JimBastard: i do love proto [20:35] nefD: creationix: So where would I need to go to modify the binding address? [20:35] tk: JimBastard: great so add another lib to fix an other lib :P [20:36] _ry: elliottcable: you can send fds [20:36] JimBastard: its either that or write your own mixin [20:36] _ry: elliottcable: to other processes [20:36] tk: JimBastard: oh no, just find it odd that something that was removed is fixed by adding a new lib -- makes me wonder why remove it :P [20:36] _ry: e.g. you can load balance a server across many processes - even without doing preforking [20:36] creationix: nefD: no clue on socket.io [20:36] creationix: but look for the .listen call [20:37] nefD: creationix: Gotcha. Thanks for the tip [20:37] JimBastard: hey ry_ i meant to ask you if you see any changes happening to the way the module cache works. i'm kinda abusing it right now for monkey patching (punching) some built in modules (http, net) [20:37] elliottcable: god, I wish I knew what I was doing. [20:38] creationix: elliottcable: :) [20:38] cloudhead: isaacs: what's the status on biggie? [20:38] JimBastard: lol biggie! [20:38] cloudhead: yeh [20:38] cloudhead: I was excited about it [20:38] JimBastard: to my understanding it was never started [20:38] cloudhead: but then nothing happened [20:38] cloudhead: yea [20:38] cloudhead: that's what it looks like [20:38] elliottcable: biggie? [20:38] JimBastard: biggie was my idea :p [20:39] cloudhead: ah, sorry! [20:39] elliottcable: what? [20:39] towski has joined the channel [20:39] JimBastard: its a bit too early for biggie still, the idea for biggie is to use all the best of node modules together [20:39] JimBastard: still not quite there yet [20:39] nefD: creationix: BOOM! That was it. YTMND! [20:39] JimBastard: id be willing to start up biggie again in jan or so [20:40] joshbuddy has joined the channel [20:40] joshbuddy has joined the channel [20:40] elliottcable: I sak again… biggie? [20:40] JimBastard: errr mispell [20:40] JimBastard: hey _ry i meant to ask you if you see any changes happening to the way the module cache works. i'm kinda abusing it right now for monkey patching (punching) some built in modules (http, net) [20:41] teemow has left the channel [20:41] cloudhead: JimBastard: in jan? [20:41] cloudhead: january 2011? [20:41] creationix: what's it with BOOM, first _ry, then nefD [20:41] creationix: :) [20:42] elliottcable: no, first Steve Jobs, then _ry, then nefD [20:42] JimBastard: yeah [20:42] JimBastard: https://wave.google.com/wave/?pli=1#restored:wave:googlewave.com!w%252BayXwiDRMA [20:42] JimBastard: elliottcable: [20:42] JimBastard: if that link works [20:42] gwoo: cloudhead: what about http://github.com/obt/bomberjs [20:42] JimBastard: cloudhead: id be down for starting earlier, but i think its a bit premature to try and build a node.js web application framework [20:42] creationix: how come Buffer.prototype.inspect only works in node-repl [20:42] nefD: I kinda picked up the BOOM thing from my boss [20:42] creationix: it gives me an empty string otherwise [20:42] bmizerany has joined the channel [20:42] elliottcable: Ohhhhh. [20:43] elliottcable: JimBastard: your idea my ass :D [20:43] elliottcable: “Write code once and have it works on the front-end and the backend” [20:43] elliottcable: that’s what I made Paws *for*. [20:43] JimBastard: excuse me? [20:43] elliottcable: for heavens’ sakes I’m writing paired interpreter codebases for the server and client :3 [20:43] JimBastard: im glad you read one bullet line in that document [20:43] elliottcable: I was envisioning this as far back as september [20:43] rudebwoy has joined the channel [20:43] elliottcable: yeah, I’m still reading [20:43] JimBastard: dont be stupid [20:43] JimBastard: that ajax pattern was written up in like 2006 [20:43] elliottcable: lol I’m not saying it’s the *same thing* [20:44] JimBastard: feel free to make comments in the document [20:44] elliottcable: damn dude way to be defensive o_O [20:44] elliottcable: CommonJS support? *stops reading* [20:44] boaz has joined the channel [20:45] JimBastard: yeah that wave is really disorganized [20:45] creationix: so about Buffer.prototype.inspect and node-repl? [20:46] elliottcable: JimBastard: they always are :D [20:46] elliottcable: JimBastard: /join ##Paws, I’ll be right back. You may be relevant. [20:47] nefD: get ready to have your mind BLOWN: http://www.microsoft.com/education/competencies/humor.mspx [20:47] JimBastard: lol I AM ALWAYS RELEVANT [20:47] nefD: layers upon layers of shades of patterns of nuances of lol [20:49] elliottcable: gwoo: lol [20:49] gwoo: :) [20:50] tk: hmm I dont remember having this much problem when I was playing with node+dojo [20:51] tk: copied proto.js to vendors/proto.js in restler and added it as the first require... yet still same error from yaml.js [20:52] JimBastard: dude come on [20:52] JimBastard: tk [20:52] JimBastard: proto extends object [20:53] sveisvei has joined the channel [20:53] JimBastard: it doesnt replace "process.mixin" [20:53] tk: JimBastard: node is rather new to me -- im doing this to get more familair with it, just failing [20:53] JimBastard: sorry fair enough [20:53] JimBastard: i would suggest not using restler [20:53] JimBastard: and using the http.client [20:53] nwhite has joined the channel [20:53] tk: JimBastard: and I've had little sleep + vicodin and other meds :/ [20:54] JimBastard: i went down the exact same path as you [20:54] tk: JimBastard: hmm was playing with http earlier [20:55] tk: the http client stuff is kinda confusing in that it asks for port and host, and then a request requires host again.. but I kept getting only "connection closed" on my attempt at https request [20:57] JimBastard: i havent done https yet, but i remember that was an issue. i think it got resolved [20:58] tav has joined the channel [20:58] tk: looks like worst case I can steal the base64encode + header lines from restler and work it that way maybe :P [21:00] TobiasFar has joined the channel [21:00] hsuh has joined the channel [21:01] auser_ has joined the channel [21:02] bmizerany has joined the channel [21:05] creationix: heh, this whole time I thought buffer inspect was broken, it's just my textmate bundle intrepreting it as html since it starts with < [21:05] hsuh has joined the channel [21:09] hsuh has left the channel [21:09] riottaba has joined the channel [21:10] _ry: elliottcable: http://four.livejournal.com/1058752.html [21:10] elliottcable: _ry: sexy, reading [21:13] tk: JimBastard: looks like that make do it... if only I could get node-repl to require properly from local files -- it seems to not like any attempts so far (or is there a trick with node-repl I'm missing) [21:13] tk: s/make/might [21:14] hsuh has joined the channel [21:14] tk: heh [21:14] tk: trick == spelling the path right [21:15] JimBastard: i dont use the repl [21:15] JimBastard: real men use windows notepad + sftp + the production server [21:15] tk: trying to make sure this works before rewriting 700 locs :P [21:16] tk: real men wouldnt have windows notepad on their system :P [21:17] tk: hmm maybe not gonna be that easy [21:19] hsuh has left the channel [21:19] chakrit has joined the channel [21:21] rnewson has left the channel [21:24] nefD: hrm. It kinda seems like the web socket implementations I've looked at treat the sending of messages/data as a 'send to all connected clients' kind of thing. Is this to say that web sockets are less viable for applications where the vast majority of client/server communication is meant to be to and from an individual client? [21:24] inimino: nefD: not at all [21:25] markwubben has joined the channel [21:25] inimino: nefD: 'send to all' is just a common use-case... especially in demos (chat clients, etc) [21:25] javajunky has joined the channel [21:25] nefD: gotcha. [21:26] aconbere has joined the channel [21:26] riottaba: Hi. I'm writing a client using net.Stream to test my net.Server. The object returned by net.createConnection has 'readable' and 'writable' both set to false. Is this default behaviour and should it be set to true everytime or am i doing something wrong? [21:26] nefD: I guess my only concrete point of reference right now is the Socket.IO implementation, whose only exposed send/broadcast method (that I could find) defaults to sending to all connected clients, and accepts an optional array of clients who are not to receive that data [21:27] aconbere: if I want to create an async function call in node, is my best bet still using setTimeout(..., 0) ? [21:27] aconbere: and if so...what kind of timer resolution is there in Node? [21:27] _ry: riottaba: you have to .connect() to something [21:27] aconbere: <- sad and confused [21:27] _ry: riottaba: .connect(80, 'google.com') [21:28] _ry: aconbere: what do you mean? [21:28] _ry: aconbere: "async" function [21:28] riottaba: _ry: I get stream already opened. I used createConnection(port,host) initially. [21:29] inimino: nefD: I haven't actually looked at socket.io, but if you are dealing with raw web sockets you have to treat each connection individually (it's not like multicast at the network level or anything) so that's maybe just a socket.io design decision (or there's another method) [21:29] _ry: riottaba: oh okay - hm - it should be readable and writable [21:30] nefD: inimino: Actually, I just found what I was looking for.. looks like the client object itself has a send method, I was just looking in the wrong place, I suppose :P [21:30] aconbere: _ry: so... my hacked up understanding of this system is most likely wrong. But let's say I want the reactor to decide when to execute a fucntion, I have a bunch of calls that I want to defer to the reactor. [21:31] aconbere: _ry: say ... much like I can perform async IO, I want to be able to call async javascript funtions. Execute them whenever, and assign a callback when they're done. [21:31] chakrit has joined the channel [21:31] saikat has joined the channel [21:31] _ry: aconbere: what exactly do you want to do? [21:31] _ry: aconbere: because basically everything is non-blocking / async [21:31] _ry: you don't really have a choice [21:33] tk: JimBastard: ahhh found where I was messed up [21:33] tk: JimBastard: example had listener for 'data' wrapped in 'response' listener and I read them as sibblings [21:34] aconbere: _ry: it's more... educational than practical, but let's take for example an async map. Where I might itterate over a very large array, perform a costly operation on each element, and update a global data structure when done (or push the results via an XHR)... [21:34] riottaba: _ry: it isn't for some reason, though setting it explicitly to true works, dont know if that's bad. thanks. [21:35] rudebwoy has joined the channel [21:36] _ry: aconbere: so if you need to do a costly operation (which is very rare, actually) you should probably use multiple processes [21:36] _ry: each process takes requests - computes some result slowly - and then returns it [21:36] _ry: you'd hav a poool of them - calculating primes [21:36] aconbere: _ry: yeah, I figured I could do that with process communication [21:37] aconbere: just curious if there was a facility to access something like a defered in my single process code [21:37] _ry: so start like 10 processes, have them all connect to /tmp/myprogram.sock [21:37] _ry: have the main process serve unix connections from there [21:37] aconbere: ACTION nods [21:37] _ry: no [21:37] _ry: well [21:37] _ry: you can defer it [21:37] _ry: but you can't do it in parallel [21:38] aconbere: right gotcha [21:38] _ry: (at the c layer you can, but not at the js level) [21:38] aconbere: yeah [21:38] _ry: process.nextTick is the normal way [21:38] _ry: so if you need to iterate over a large list and do some calculation for each [21:38] _ry: but not block the whole process [21:38] _ry: you might want to break it up with nextTick [21:38] aconbere: interesting [21:38] aconbere: okay [21:38] _ry: that will give other i/o a chance to run [21:39] aconbere: yeah [21:39] aconbere: I get that [21:39] aconbere: it's a little like a raw defered [21:39] aconbere: you're just pushing bits to execute onto the reactor yourself [21:39] _ry: in general it's hard to decie when to do a calculation synchronously and when to split it up and when you should use worker processes [21:39] _ry: there are trade offs for each [21:39] _ry: *decide [21:40] charlesjolley has joined the channel [21:40] _ry: having a warm cache is very helpful for small calculations [21:40] aconbere: sorry for such a non-practical question, I just got started thinking down the path [21:40] aconbere: and was curious [21:41] _ry: yeah - but the main thing - there is no parallel operations inside one process [21:41] _ry: at least from the js point of view [21:41] _ry: (under the table there is a thread pool) [21:42] _ry: (but all the results get marshalled back into the main thread when complete) [21:42] _ry: so it would be possible, for example, to write a gzip binding which broke the operation up and sent a chunk to a bunch of threads [21:42] _ry: just when it completes- it has to come back to the main thread [21:42] chakrit has joined the channel [21:43] aconbere: hmmm [21:44] aconbere: yeah and with no... simple continuation tools (that I know of) [21:44] aconbere: making a reactor that can switch between operations on it's queue [21:44] aconbere: seems... hard [21:45] _ry: aconbere: check out this http://github.com/creationix/step [21:46] nefD: flow is another good module in that vein: http://github.com/willconant/flow-js [21:46] aconbere: yeah, but so ... let's say we take that idea [21:46] aconbere: and we make a REALLY long chain [21:47] aconbere: and inside chains are other chains [21:47] aconbere: and our only rule is that on each depth within that tree [21:47] aconbere: we can only execute items of the same depth [21:47] aconbere: and we just popped items off [21:47] aconbere: and added them to the next tick [21:48] aconbere: I think we'd be approaching, the kind of behavior I had in mind [21:48] auser has joined the channel [21:48] aconbere: but it would suck to write it [21:48] _ry: each tick you do an item [21:48] _ry: yeah [21:48] _ry: nah, should be okay [21:48] aconbere: hehe [21:48] aconbere: no I mean [21:48] sveimac has joined the channel [21:48] aconbere: to write a program in that syle [21:48] aconbere: :) [21:48] aconbere: it would just be... messy [21:48] aconbere: :) [21:48] _ry: maybe [21:48] aconbere: ACTION nods [21:48] _ry: i think - people worry about parallization too much [21:48] aconbere: haha [21:49] _ry: most programs just shuffle data from one place to another [21:49] aconbere: like i said.... educational... not practical [21:49] _ry: and as long as you're not total shit (*couch rails*) [21:49] _ry: cough [21:49] chakrit: *coughs* [21:49] aconbere: my problem is really parellism in the browser [21:49] aconbere: which ... you know... I'm basically fucked anyway [21:49] _ry: then bandwidth is the bottleneck [21:49] nefD: ..*cough* [21:49] drhodes has left the channel [21:50] javajunky has joined the channel [21:50] aconbere: my problems mostly involve dom manipulation being really expensive [21:50] _ry: in the browser you can't achieve parallel calculations anyway [21:50] aconbere: and not having good ways to tell my browser that I have a list of manipultions that I want intersperesed with real wrok [21:50] aconbere: right [21:51] _ry: you're bound to a single thread [21:51] aconbere: but that's what started me thinking about this [21:51] aconbere: which made me wonder what facilities existed in ndoe [21:51] aconbere: which made me come ask you a bunch of dumb questions ;-) [21:56] _ry: aconbere: not dumb questions - and i love explaining node ;) [21:56] _ry: maybe you should just not do expensive dom manipulations [21:57] aconbere: haha [21:57] chakrit: DOM -> most of the time you can throttle it with setTimeout s not too hard once you learn some patterns [21:57] aconbere: chakrit: we have issues with that because of older browsers timers are too slow [21:58] _ry: ACTION knows nothing about browser programming [21:58] aconbere: I'm working on finding a nice ... middle ground for chunking the operations [21:58] _ry: i guess to do animations you all do setTimeout loops? [21:58] aconbere: _ry: most of the time... when I don't have to deal with crap like the dom.. it's a lot like writing Node code :) [21:58] aconbere: and I enjoy it [21:59] KungFuHamster_: I email it to korea just like the Simpsons guys do [21:59] aconbere: but then you know... every so often something bites yuo in the ass [21:59] chakrit: _ry: That's the only to display "animations"... [22:00] chakrit: afaik .. since you lock the browser if you do anything intensive in one go [22:00] chakrit: *way [22:01] chakrit: not counting CSS animations... that is :) [22:01] inimino: CSS is starting to support animation now :) [22:01] inimino: hehe [22:01] chakrit: haha [22:01] JimBastard: aconbere - not sure what you are talking about, but you should be doing minima work manipulating the dom itself. you should be doing a mvvm type pattern, where you perform manipulations on the data that will generate the dom....then you generate your display (DOM) in one pass [22:03] boaz has joined the channel [22:05] javajunky has joined the channel [22:06] chakrit: aconbere: don't rely on setTimeout timers, just setTimeout(func, 0) and calculate the time diff. from last step as you go [22:09] jwm: how easy is it to embed node? :) [22:11] tobbez has joined the channel [22:12] javajunky has joined the channel [22:13] tobbez: What happened to the multipart module somewhere between version 0.1.33 and 0.1.91? The ChangeLog doesn't mention anything, but it seems to be gone. [22:14] chakrit has joined the channel [22:15] JimBastard: tobbez: multipart got ripped out for being lame and bloat. the old multipart.js is available in the repo, and there are replacements. isaacs has one i think [22:15] JimBastard: so if you really need it right just just pull the old one [22:16] _ry: jwm: i dont have support for that [22:16] _ry: jwm: you can call it as an external process easily [22:16] _ry: that's probably the best way to embed it [22:16] boaz has joined the channel [22:16] tobbez: JimBastard: not quite sure if i *really* need it, is there another way of handling POSTed files? [22:16] _ry: jwm: it really wants the whole process [22:17] JimBastard: i think you need it for that tobbez [22:18] tobbez: Okay, thanks. I'll get the old one then. [22:19] JimBastard: how is it im helping people now and not just yelling and getting banned. fuck irc has changed [22:20] boaz has joined the channel [22:23] bmizerany has joined the channel [22:25] kriszyp: _ry, getting back to the question of workers, what will the advantage be to workers being in Node's core over a user-land implementation like cramforce's? are there things you can do natively that you can't do with building workers on child processes? [22:26] darkf has joined the channel [22:28] hellp has joined the channel [22:29] chakrit: folks, there'll be a local BarCamp here in Bangkok in May [22:29] chakrit: I think I'll be introducing people to node.js ... [22:29] chakrit: any suggestions/slidedecks i can use ? ... :) [22:30] Aria has joined the channel [22:31] dacc has joined the channel [22:32] _ry: kriszyp: there are but i don't probably won't do that [22:32] _ry: kriszyp: all the tools are there to do anything - except fork [22:33] _ry: kriszyp: so method 2 http://four.livejournal.com/1058752.html is what i'd like workers to do [22:34] JimBastard: chakrit: depends who you are trying to cater to. _ry has some good slide decks. i've also seen a good one that talks about ruby + node together [22:34] mcarter has joined the channel [22:36] chakrit: JimBastard: yeah, looking at _ry's now... though I think I'll need some more wow factor to please the crowd [22:36] chakrit: JimBastard: "a good one ruby + node" link? [22:36] JimBastard: no idea sorry [22:36] JimBastard: try googling [22:39] tk: JimBastard: http + POST == PITA :P [22:39] tk: JimBastard: but... /me has it working too now [22:39] devinus has joined the channel [22:39] JimBastard: nice [22:40] tk: just wrote a simple PHP script to dump $_POST and tested various incarnations of a http.client usingi t :P [22:43] kriszyp: thanks for the info _ry [23:08] chakrit has joined the channel [23:11] auser has joined the channel [23:14] chakrit has joined the channel [23:15] robrighter has left the channel [23:16] mikeal: does anyone have node-compress working with buffers? [23:16] mikeal: for decompression [23:19] teemow has joined the channel [23:19] teemow has left the channel [23:20] robrighter_ has joined the channel [23:20] robrighter_ has left the channel [23:29] gf3 has joined the channel [23:34] _ry: i want to do a better compression library [23:34] _ry: mikeal: how big are the chunks you're compressing? [23:35] _ry: we maybe should just compile it into node [23:35] _ry: i mean compression isn't so hard [23:39] devinus has joined the channel [23:39] devinus: creationix: howtonode is down [23:40] devinus: i guess Node.js isn't stable then, huh!?!? [23:40] devinus: [23:42] dekz has joined the channel [23:43] plhw_ has joined the channel [23:44] admc has joined the channel [23:46] maushu has joined the channel [23:53] charlesjolley has joined the channel [23:54] charlesjolley has joined the channel [23:54] mikeal: _ry: or zlib bindings [23:54] mikeal: and it's really small [23:54] mikeal: it fails outright on chunks [23:55] mikeal: if i buffer them it doesn't throw an exception but it returns me an empty string [23:56] tk: and more roadblocks [23:57] tk: xml2json fails to parse some of this xml -- wonder why [23:57] _ry: mikeal: would be really cool to adapt pigz for node [23:57] _ry: use the internal thread pool [23:57] _ry: break the chunks up into 128 byte blocks [23:57] _ry: pigz is MIT [23:58] _ry: eio_custom() can be used to dispatch to the thread pool [23:58] _ry: then you don't even need ot link to libz [23:59] _ry: it should have sync and async modes: deflateSync() and deflate() [23:59] _ry: you'd use the async version for like 1mb files