[00:02] pjb3 has joined the channel [00:05] jashkenas: I feel a bit silly asking this, but where's process.stderr in new versions of Node? [00:05] x_or has joined the channel [00:06] jashkenas: grepping the docs, I don't see it apart from sys.debug ... which prefixes your message with "DEBUG" ... [00:07] jedschmidt has joined the channel [00:09] ryah: god. waf is a nightmare [00:09] bmesh has joined the channel [00:09] jashkenas: no takers? not possible to write to stderr? [00:09] ryah: jashkenas: sys.error() [00:09] jashkenas: thank you. [00:10] ryah: jashkenas: what is the grant you have? [00:10] saikat has joined the channel [00:10] ryah: is it documentcloud that you're working on? [00:10] jashkenas: DocumentCloud? [00:10] jashkenas: Yep. [00:10] ryah: came up at a bbq yesterday [00:11] jashkenas: ah, nice. Wish we could be using Node for it ... but maybe next year. [00:11] mape: jashkenas: add some real time collab and chat and you got a reason? ;) [00:12] saikat has joined the channel [00:14] Validatorian has joined the channel [00:19] Astro has joined the channel [00:23] Astro: hello, MattJ [00:23] Astro: ACTION was just grepping http://nodejs.debuggable.com/ for xmpp ;) [00:27] stepheneb has joined the channel [00:35] cloudhead has joined the channel [00:36] SteveDekorte has joined the channel [00:38] cloudhead: isaacs: any news on the file upload problems with the npm registry? [00:38] softdrink has joined the channel [00:39] paul_irish has joined the channel [00:42] mjr_: ryah: is there a clean way to disable http keepalive in an http server? I used to use closeOnExit, but that went away recently. [00:42] morganallen has joined the channel [00:49] admc has joined the channel [00:50] SamuraiJack has joined the channel [00:50] sudoer has joined the channel [00:51] ryah: mjr_: hm.. [00:52] mjr_: I thought I could do res.shouldKeepAlive = false; but it doesn't seem to work. [00:52] ryan[WIN]: ahhh my node process is getting inundated with traffic [00:53] edspencer has left the channel [00:53] ryah: mjr_: if you just send "Connection": "close" header [00:53] ryah: mjr_: i think that should do it [00:53] mde: ryah: Just a heads-up, looks like uncaughtException broke in 0.1.95 [00:53] mde: http://github.com/ry/node/issues/#issue/163 [00:53] mjr_: ryah: ok, thanks, I'll try that. [00:53] mde: I'm using it in Geddy to hand end-user devs nice formatted HTML error pages. [00:54] mde: So I'm stuck on 0.1.94. [00:54] mjr_: mde: some uncaughtExceptions still work. I just saw one a few seconds ago. [00:54] mde: I copy-pasted the example from the docs. It didn't work. [00:54] mjr_: oh shit, that's bad. [00:54] mde: Yeah, less than ideal. [00:55] ryan[WIN]: copy pasta [00:58] saikat: lnames [00:58] saikat: oops [00:58] mjr_: ryah: yes, setting Connection: close does work, thanks. [01:00] creationix has joined the channel [01:01] sudoer has joined the channel [01:05] mattly has joined the channel [01:11] MattJ: Hey Astro [01:14] derferman has joined the channel [01:15] ajpiano has joined the channel [01:17] _announcer: Twitter: "Things are moving, at # odesk began to appear on Tusky # node.js" [ru]-- Yury Yurevich. http://twitter.com/yurevich/status/15217319925 [01:18] mjr_ has joined the channel [01:21] x_or has joined the channel [01:24] ditesh|cassini has joined the channel [01:25] fictorial: ryah: taking into account that fs.readFile* returns/calls-back-with Buffers, I'm getting some strange behavior with 0.1.97: http://gist.github.com/421574 [01:26] ryah: hmm [01:26] hassox: any node conferences coming up lads? [01:26] hassox: ACTION has to submit my "I wanna go" list to work for some conf action [01:27] fictorial: there was something that caught my eye the other day in the fs implementation about not being able to really set a default encoding since under ended up as utf-8 for readFileSync but I do not think this is related. [01:27] fictorial: in fact, I think you removed that in favor of Buffer for 0.1.97 so nevermind [01:27] fictorial: weird though [01:28] ryah: mmm [01:29] ryah: why is software so hard.. man. [01:29] fictorial: very clever, that. SOFTware is HARD. [01:29] fictorial: :) [01:30] Astro: MattJ: are you mad at me? [01:30] tmpvar has joined the channel [01:30] MattJ: Astro: No [01:30] MattJ: I'm furious [01:30] MattJ: :P [01:31] fictorial: ACTION gets some popcorn for the drama [01:31] MattJ: Astro: Actually I added you to my contact list the other day and forgot to start a conversation :) [01:31] rictic has joined the channel [01:33] derferman has joined the channel [01:33] mjr_: I think software is a magnified version of most things in life. In the idea phase, everything is simple, but when you go to actually implement that idea, strange details and tradeoffs emerge that you never could have foreseen. [01:34] ryah: yes [01:34] ryah: libev+v8 [01:34] mjr_: such a simple idea! [01:35] derferman has joined the channel [01:35] ryah: i told my friend that it would take a year [01:35] ryah: but only because i didn't want him to hink me foolish [01:35] ryah: i actually thought it'd take 2 weeks [01:35] mjr_: And now you know about waf, scons, msys, make, and probably several other systems whose purpose is just to build other software, and you need them all, just to build your simple idea. [01:36] jashkenas: ryah: hah ... well, turned out to be a good idea, and good ideas are worth taking the time. [01:37] ryah: now it's well over a year and the end only grows further away :P [01:37] _announcer: Twitter: "underscore.js templates work nicely for node.js web apps http://bit.ly/9zVFRZ #nodejs #simpleisbetter"-- Rob Righter. http://twitter.com/robrighter/status/15218633070 [01:38] mostlygeek: @fictorial hey is ryah Ryan of node.js? [01:38] mostlygeek: i guess i could of just asked @ryah [01:38] mostlygeek: directly :D [01:39] mjr_: Now THAT is IRC/Twitter integration. [01:39] fictorial: hehe [01:39] mostlygeek: lol [01:39] mjr_: Just manually type your twitter input into your IRC window. [01:39] fictorial: @mostlygeek yes [01:39] mjr_: problem solved [01:39] mostlygeek: i haven't used IRC in like 10 years... [01:39] mostlygeek: ACTION baka [01:40] ryah: strange when people prefix irc usernames with @ [01:40] mostlygeek: i really thought that would pop up a new window [01:40] mjr_: ryah: I spent almost a day trying to work around a problem whose solution is simply: sudo sysctl -w debug.bpf_bufsize=524288 [01:41] mostlygeek: maybe that was in the mirc days [01:41] mjr_: ideas are easy. Execution is hard. [01:41] ryah: agreed [01:41] ryah: what's that saying "real programmers ship" ? [01:41] _announcer: Twitter: "Wow - parsing file uploads at 500 mb/s with node.js http://instapaper.com/zwn3lwdM"-- jeffbeck. http://twitter.com/jeffnbeck/status/15218874084 [01:41] wbruce: any recommendations on good modules to do some code-reading on? Good code style examples, advanced use, etc? [01:41] mjr_: yeah, something like that. Programmers ship products, not write code. [01:42] mjr_: I think that's a jwz quote. [01:42] gwoo: wbruce: check the wiki page [01:43] gwoo: !modules [01:43] mjr_: wbruce: what are you trying to do? [01:43] wbruce: mjr_: Just learn. I have a good amount of js experience -- though a large amount of that is using frameworks [01:43] wbruce: looking for idiomatic examples [01:43] mjr_: Examples of what? [01:44] mjr_: I'm not trying to be difficult, it's just that there are TONS of different things you might want to do with node. [01:44] wbruce: mjr_: complex, non-trivial usage. no particular problem domain. [01:44] gwoo: wbruce: have you seen howtonode.org? [01:44] wbruce: stuff that makes you say "wow, that's good code." [01:44] jashkenas: I'd love to see some recommended reading as well ... JS style is so heterogenous from clique to clique. Any Node libraries that folks really dig the source of? [01:44] jashkenas: wbruce: amen. [01:45] mjr_: yeah, I'd check out the wheat lib from creationix. It is very interesting. [01:45] mjr_: But there are a lot of different styles out there. [01:45] jashkenas: http://github.com/creationix/wheat/blob/master/lib/wheat.js [01:46] inimino: ryah: "real artists ship" [01:46] _announcer: Twitter: "So, what are the cool kids using for user profiles/authentication with Node.js these days?"-- Ryan McGrath. http://twitter.com/ryanmcgrath/status/15219185271 [01:47] inimino: and node is shipping, iteratively :) [01:47] _announcer: Twitter: "Presentation: An introduction to node.js and Riak - myNoSQL http://goo.gl/fb/Fwcye"-- waterye. http://twitter.com/waterye/status/15219227194 [01:47] mostlygeek: Pro Javascript Techniques is pretty good [01:47] mjr_: oh yeah, real ARTISTS. [01:47] mostlygeek: it is a pretty light read [01:48] tmpvar: hey jashkenas [01:48] jashkenas: yo. [01:48] tmpvar: finally making the jump eh? :P [01:48] ryah: i think we should probably solidify js style for node-core [01:48] ryah: this comma-in-front stuff is getting out of hand [01:48] jashkenas: tmpvar: eh? [01:48] tmpvar: you are the documentcloud guy right? [01:49] jashkenas: tmpvar: yep. We met at Marak's house a couple months back... [01:49] wbruce: ryah: yeah, I think that would serve as a good starting foundation for module developers as well [01:49] ryah: i wonder if there is a google js style standard... [01:50] _announcer: Twitter: "http://tinyurl.com/y8bb6sj node.js"-- bunny_car. http://twitter.com/bunny_car/status/15219408610 [01:51] mjr_: ryah: at my company we just declared our style to be whatever jslint says. There are far too many different opinions to make everybody happy, so we just picked something that was super easy to validate. [01:51] ryah: yeah. i don't like jslint though. [01:51] mjr_: Though I'm sure inimino dies a little inside when he hears that. [01:51] jashkenas: mrj_: ++ ... but there are areas where JSLint doesn't enforce style... [01:51] charlesjolley- has joined the channel [01:52] ryah: i mean it doesn't really matter [01:52] jashkenas: references: http://javascript.crockford.com/style1.html ... http://o.dojotoolkit.org/developer/StyleGuide [01:52] ryah: i really don't want 4 space indention though :/ [01:52] mjr_: you can tell jslint to use 2 space [01:52] ryah: ok [01:52] ryah: well maybe that's okay [01:52] mjr_: Or turn on/off different checks per file. [01:52] charlesjolley-_ has joined the channel [01:53] jashkenas: more style guides: http://wiki.sproutcore.com/JavaScript-Style-Guide ... http://javascript.crockford.com/code.html [01:54] mjr_: Then all of your files end up with this kind of thing at the beginning: http://github.com/mranney/node_pcap/blob/master/pcap.js#L1-2 [01:54] SteveDekorte: If you use proper tabs you can leave the spacing up to your editor. [01:54] ryah: bah [01:54] mjr_: oh man, tabs vs. spaces [01:55] ryah: tabs over my dead body [01:55] mjr_: hilarious [01:55] mjr_: tabs in theory should work and make everybody happy [01:55] tmpvar: jashkenas, I was just commenting that it's nice to see you in here ;) [01:55] ryah: but they dont [01:55] SteveDekorte: does v8 offer any access to the JS AST? [01:55] mjr_: But in practice, tabs are always mixed with spaces, resulting in massive indenting breakage. [01:56] ryah: SteveDekorte: not really [01:56] ryah: SteveDekorte: you can precompile a script [01:56] _announcer: Twitter: "Anyone know any classroom training JS (+node preferably)?"-- Tom Meier. http://twitter.com/PommyTom/status/15219788697 [01:56] ryah: in some undefined way [01:56] ryah: but you can't inspect it [01:56] SteveDekorte: mjr_: indents don't break anything unless one doesn't always use {}s - which is bad practice [01:57] mjr_: SteveDekorte: yeah, in theory I agree. But some people indent without using the tab key. [01:57] SteveDekorte: ryah: if there was AST access, one could easily write a code formatter [01:57] mjr_: And some editors auto-indent for you using... some mechanism. [01:57] ryah: ah, no there isn't that sort of introspection [01:58] SteveDekorte: mjr_: and some people indent with the tab key - why the bias for one over the other? [01:58] jashkenas: SteveDekorte: some folks in here have working JS-in-JS parsers I believe ... (inimino) [01:58] ryah: although someone here has a rather good JS parser [01:58] SteveDekorte: for which version of JS? [01:58] ryah: es5 [01:58] SteveDekorte: IIRC, MS doesn't parse the same way [01:59] SteveDekorte: not even sure FireFox parses the same as the others [01:59] SteveDekorte: I learned the hard way to *always* use semicolons to terminate lines [02:00] _announcer: Twitter: "@JimBastard on #nodejs "What do you use for flow control?" "The TAB key""-- Aman Gupta. http://twitter.com/tmm1/status/15220022994 [02:00] jashkenas: SteveDekorte: http://boshi.inimino.org/3box/PanPG/ECMAScript_unified.peg [02:01] jashkenas: produces this, I believe: http://boshi.inimino.org/3box/PanPG/ES5_v5_1.js [02:01] jashkenas: back up to the directory listing for the rest of the goodies. [02:02] inimino: oh, hey [02:02] inimino: yeah [02:03] jashkenas: ryah: it might be worth doing one of these as a share-able plaintext: http://github.com/chneukirchen/styleguide/blob/master/RUBY-STYLE [02:04] inimino: SteveDekorte: actually, V8 had an experimental export to a JSONML (I think) format [02:04] inimino: SteveDekorte: don't know if it's been maintained or not [02:05] chilts: mjr_: what does that "use strict"; do ... is it something for JSLint? [02:05] TheEnd2012 has joined the channel [02:05] inimino: and I do have some code for formatting JavaScript with my parser, but it's not incomplete [02:05] chilts: ACTION guesses it means nothing to the JS Interpreter [02:05] inimino: s/not // [02:05] mde: jashkenas: Like this? http://github.com/mde/geddy/blob/master/docs/js_style_guide.txt :) [02:05] inimino: chilts: no, it's for ES5 interpreters, not for JSLint [02:05] jashkenas: mde: beautiful. [02:05] chilts: oh right [02:05] inimino: chilts: and you shouldn't be using it anywhere near this soon [02:06] chilts: yeah, it does look strange ... was just wondering what it was all about :) [02:06] SteveDekorte: I hate K&R style {}s [02:06] inimino: chilts: it just means you'll gain nothing in the present and then in the future when somebody actually implements strict mode your code will break [02:06] chilts: heh [02:06] SteveDekorte: I suspect any study of user eyem ovements would prove it takes more time to visually process K&R style [02:07] chilts: interesting that if you go to jslint.com and click "The Good Parts", it ticks the 'Require "use strict";' box [02:07] inimino: unfortunate, I would say. [02:07] mjr_: chilts: strict is an es5 thing that isn't fully implemented yet, but that jslint uses. [02:07] chilts: think I'll avoid it for now then [02:07] deanlandolt: mjr_: it isn't implemented /at all/ AFAIK [02:07] inimino: especially since JSLint doesn't check for everything strict mode changes, he shouldn't be encouraging people to use it [02:08] deanlandolt: but chilts no need to avoid it...doesn't change anything, just keeps you from doing things that WILL be deprecated in es-future [02:08] mjr_: Yeah, that's why I like it. [02:08] inimino: deanlandolt: the problem is that once you deploy code using it, you'll have to expect that code to break in the future [02:08] deanlandolt: it does change a few subtleties of the language but nothing you should be relying on [02:08] mjr_: But inimino I see your point that you might roll out code that will break as strict gets implemented. [02:09] inimino: deanlandolt: (unless you have a strict mode interpreter in your head and never make any mistakes) [02:09] deanlandolt: inimino: why's that? if anything i expect that code to be more future-proof [02:09] SteveDekorte: someone should write a JS formatter + commit and pull hooks for git that would always keep the repo in a canonical format while the individual developer could choose the format of their preference [02:09] deanlandolt: inimino: that sounds like a crockfordfact ;) [02:09] SteveDekorte: call it "redshed" [02:09] inimino: deanlandolt: ES5 strict mode only makes things that would work in ES3 not work [02:09] mjr_: But jslint doesn't check for them all then? [02:10] inimino: SteveDekorte: yeah, I've got about 50% of that done, I guess ;) [02:10] deanlandolt: inimino: it does make a few subtle changes to expected behaviors as well [02:10] inimino: mjr_: nope [02:10] inimino: last I knew it was pretty experimental [02:10] deanlandolt: but yes, i see what you mean [02:10] jashkenas: SteveDekorte: and if you're already generating your JS, then there's no worries ;) [02:10] mjr_: Well, that's a bummer. If jslint checked for them all, I think it'd be a lot more reasonable to start using. [02:10] SteveDekorte: inimino: cool :) [02:11] fictorial: oh no, not the tabs conversation. [02:11] fictorial has left the channel [02:11] inimino: mjr_: yeah, I should go through and see how much it checks for and how much can be statically verified at all [02:12] deanlandolt: so the takeaway: use "use strict"; if you're a masochist or a pedant [02:12] deanlandolt: (i'm the latter, but i've yet to dip into peppering my code with use strict) [02:12] mjr_: inimino: While you are at it, you should make a better jslint that you could recommend. [02:12] inimino: the takeaway: "use strict"; later when somebody has a complete implementation and you're testing against it :) [02:12] inimino: mjr_: yeah, I'd really love to do that [02:12] jashkenas: inimino: I don't think you can do the important strict bits statically... [02:13] jashkenas: For example, declaring a variable before use -- you need to know what's in scope at runtime. [02:13] probably_ has joined the channel [02:13] mjr_: Right now I use jslint even though I don't always agree with it, just because it works so well at finding other actual problems. [02:13] jashkenas: delete on configurable:false variables you wouldn't be able to detect... [02:13] Psytherium has joined the channel [02:13] jashkenas: etc. [02:13] mde: mjr_: It's also pretty easy to hack it up to shut up about the stuff you don't care about. [02:14] inimino: jashkenas: yeah, I have a feeling there are things you can't do statically... [02:14] jashkenas: inimino: are you already getting into serious static analysis of JS with your parser project? [02:14] inimino: ...I just don't know how much [02:14] deanlandolt: jashkenas: i don't think use strict; protects you from that case either, does it? that's just an es5ism [02:14] inimino: jashkenas: no, not at all, I've been working on other stuff for the last few weeks, and the first thing I'm going to do is work on speed [02:15] inimino: jashkenas: I want to do some stuff with DFAs inside a packrat parser [02:15] mjr_: I love talking about JS, but my computer day is over. [02:15] chilts: so, does someone have JSLint such that you can go "node jslint.js myfile.js" ... that would be cool :) [02:15] inimino: chilts: search the mailing list, I think someone did just that [02:16] chilts: ah sorry ... haven't checked my mails for a day :) [02:16] chilts: or so [02:16] deanlandolt: i thought that may have been narhwal [02:16] deanlandolt: i remember kriskowal saying something about putting it (and jslint-core) into the tusk catalog [02:16] inimino: chilts: I don't mean recently, it was a while ago... and maybe that was it [02:16] derferman has joined the channel [02:16] jashkenas: chilts: jsl -process myfile.js , no? [02:16] inimino: maybe it was on commonjs :/ [02:17] deanlandolt: yeah, but it should work i node i bet...when isaacs gets back from vacation bug him to get it in npm :) [02:20] xer0x has joined the channel [02:25] tmpvar: fuuu webgl [02:28] chilts: jashkenas: yeah probably ... but just wondering where you got 'jsl' from ... I can't see the download on the site [02:29] omygawshkenas has joined the channel [02:30] probably_: is kiwi the standard package manager for node? [02:31] gwoo: probablyCorey_: npm [02:32] saikat has joined the channel [02:33] probablyCorey_: gwoo: Thanks, I'm having trouble finding out what the latests stuff is and what has been abandoned. [02:33] tmpvar: full on opengl bindings is not going to work :( [02:33] tmpvar: unless I butcher the api [02:34] tmpvar: webgl + freeglut might be a solid way to go. any thoughts? [02:35] gwoo: what would be the drawback of webgl+freeglut? [02:35] tmpvar: its not a full opengl impl :/ [02:35] tmpvar: but I guess some of the functionality is worthless in js-land [02:35] Aria has joined the channel [02:35] tmpvar: hey Aria [02:36] Aria: Heya [02:36] fictorial has joined the channel [02:36] tmpvar: anyhow, my main problem is Number's are not passed by ref, which makes certain calls impossible [02:36] tmpvar: s/Number's/Numbers [02:37] fictorial: tmpvar; no luck yet, eh? Isn't it all by ref? Numbers are just immutable. You need to create a new one but Arguments is immutable too so you cannot swap in a new Object/Number. [02:37] tmpvar: by impossible, I mean.. I'd have to change the api to get them to work (return an object of args that need to be passed by ref, and their new vals) [02:37] tmpvar: fictorial, yeah, thats a big problem [02:38] tmpvar: doctoring the api is most likely worse than going with a webgl impl [02:38] fictorial: IMHO no one is going to burn you for returning values that were normally by-ref in C-based OpenGL. [02:39] fictorial: I mean it's not like people are even typing glGenTextures ... it's gl.glGenTextures correct? [02:40] tmpvar: ok, so the question then is, do I augment everything to return an object? I've found several instances where there are multiple pointer args (opengl calls) [02:40] tmpvar: correct [02:40] fictorial: depends on the case -- my first thought would be to return an array but I'm not sure what's really "best" [02:41] tmpvar: or, is it on a case by case basis? [02:41] tmpvar: got ya [02:41] tmpvar: really dunno haha. [02:41] fictorial: glGenTextures for instance... return array of texture names/ids [02:41] fictorial: seems good [02:41] fictorial: glGetTexImage2D ... return a Buffer perhaps? [02:41] fictorial: seems natural [02:42] tmpvar: heh, am I being lazy? [02:42] fictorial: hardly! [02:42] fictorial: BTW, there was once a Java OGL binding that did gl.genTextures() -- don't do that. People *hated* it. [02:43] tmpvar: I believe in raw access [02:43] tmpvar: I also believe in autogeneration of something this big, haha.. but im just working towards 80% autogenerated, the rest im fine to handcode [02:44] fictorial: speaking of raw access, http://www.azlyrics.com/lyrics/oldirtybastard/shimmyshimmyyaextendedversion.html [02:44] _announcer: Twitter: "The Node.js Besping to me is my ... Mozilla JS engine Give me proud." [ja]-- edvakf. http://twitter.com/edvakf/status/15222713315 [02:45] fictorial: Google Translate? Neat. [02:45] tmpvar: "see my name is the Ol'DB and I'll beat your ass" [02:46] fictorial: someone should make a nosql datastore named "OlDB" [02:48] siculars has joined the channel [02:49] Aria: What's the build system woes, ryah? [02:50] micheil has joined the channel [02:50] ryah: Aria: general insanity [02:50] Aria: Heh. Yeah. [02:50] Aria: Platforms are weird. [02:50] Aria: Only weirder thing is what authors do ;-) [02:50] ryah: platforms suck [02:51] ryah: i wish there was a build system dedicated to solely understanding how to build c [02:51] pquerna: i think thats called ant. [02:51] ryah: that didn't suck [02:52] ryah: ant is not solely dedicated to building c [02:52] Aria: Yeah, that's not autoconf, and doesn't have its own prerequisites. [02:52] pquerna: oh sorry, you said understanding. [02:52] micheil: ryah: got a bit more on that os module workingh [02:52] pquerna: i thought you said mis-understanding. [02:52] micheil: figured out the thing with seeing if it was a uid or a uname that was passed.. [02:52] Aria: I like non-recursive make with autoconf. But it's still a pain [02:52] micheil: just add a "type" value to my struct for eio_custom [02:52] ryah: like: take these group of files make me a dll [02:52] ryah: take these groups of file and make me a program [02:53] Aria: Heh. Automake is damn close to that. [02:53] fictorial: sounds like scons but that's not without its fair share of problems. [02:53] bradleymeck_ has joined the channel [02:53] Aria: I wish someone would write a build tool that uses automake and skips the make and autoconf parts [02:53] ryah: they all suck [02:53] ryah: they suck so bad it is killing me slowly [02:54] Aria: Hehe. [02:54] Aria: Yeah. [02:54] bradleymeck_: mmmm i missed w/e is killing you so it must not exist [02:55] ryah: i refuse to believe it couldn't be better... [02:55] ryah: i wish linus would take up the cause [02:55] bradleymeck_: we talking about build systems then? [02:55] Aria: Yeah, it can. The problem is twofold though: There's huge knowledge in the older systems that's not in the newer, and inertia is huge. [02:55] ryah: yes [02:56] ryah: it's a really hard problem [02:56] Aria: Yeah. [02:56] Aria: I get it from both ends. Developing software, I get the author's side. [02:56] Aria: Helping manage a linux distro, I get to un-do all the cleverness authors do too. [02:57] Aria: "No, really, your software's not the center of the universe. Install in the normal places the normal ways, please." [02:57] morganallen has joined the channel [02:57] Tim_Smart has joined the channel [02:57] Aria: ("Why, yes, .so files really must be mode 755. And owned by root:root. Thanks. And stripped. And debug symbols stored in /usr/src/debug") [02:58] SteveDekorte has joined the channel [02:58] tmpvar: fictorial, i dont want a db that "kicks my ass" [02:58] fictorial: tmpvar: :-) [02:58] Aria: .oO(And those .node files? Those are .so files...) [02:58] fictorial: tmpvar: it's all talk and probably drunk [02:58] ryah: Aria: except on macintosh where they're .dylib files [02:58] Aria: Yep, and windows, DLL. [02:59] tmpvar: windows? ha [02:59] Aria: This, quite frankly, makes me crazy. [02:59] ryah: if we ever get to windows [02:59] tmpvar: ryah, you have any luck on that end? [02:59] ryah: choosing .node was a fairly sane choice imo [02:59] Aria: (It makes packaging node hard -- also, impossible to copy a libdir around, since the platforms collide) [02:59] avidal: i'd be more interested in udp than windows :P [02:59] ryah: tmpvar: no. i tried again [02:59] Aria: Why? It's different than EVERYONE else, ryah. [02:59] fictorial: avidal: yes [02:59] ryah: libev and libeio need help [02:59] Aria: (and worse, three kinds of files with the same suffix) [02:59] ryah: which is very sad [02:59] Aria: Aw. [03:00] tmpvar: ryah, yeah.. atleast we killed off coupling and the others, no offense [03:00] avidal: i was thinking about seeing if i could make a protobuffers node plugin [03:00] avidal: not in pure js [03:00] tmpvar: avidal, I have it building [03:00] avidal: since that exists [03:00] avidal: o [03:00] avidal: udp or protobufs? [03:00] ryah: Aria: but easy to do the resolution when doing require('binding') [03:00] tmpvar: proto [03:01] Aria: It's just as easy otherwise. [03:01] tmpvar: http://github.com/tmpvar/node-protobuf [03:01] avidal: well alright [03:01] tmpvar: it was compiling the last time i checked (on linux) [03:01] Aria: It's arg + ".node" vs arg + suffix [03:01] avidal: i was trying to come up with something that might be useful [03:01] avidal: and you beat me to it [03:01] shajith has joined the channel [03:01] tmpvar: avidal, well, to be honest.. its useless right now [03:01] ryah: Aria: well, actually it would be "lib" + arg + suffix [03:01] tmpvar: same with node-avro, I got them compiling and loading into node and "gave up" [03:02] tmpvar: unlicensed, so feel free to pillage [03:02] ryah: Aria: it certainly could be done - but why? [03:02] micheil: ryah: I'm just trying to figure out how to store the resulting struct [03:02] micheil: as it's a passwd struct [03:02] Aria: Well, not inventing a new paradigim is one. [03:02] Aria: And making libdirs that can be synced between machines is good. [03:02] probably_ has joined the channel [03:02] ryah: Aria: .node files will only be used by node [03:03] _announcer: Twitter: ""Bespin fresh start: SproutCore / Python from jQuery / Node.js to" http://j.mp/d65VWp Bespin, but never used, I guess Mozilla Kore Why?" [ja]-- edvakf. http://twitter.com/edvakf/status/15223785912 [03:03] ryah: i see no need to make them generally accessable [03:03] Aria: Yeah. But .node files only work with node-mac, node-linux, node-linux-64... [03:03] Aria: ... but not all at once. [03:03] ryah: sure [03:03] Aria: I share my home directory among seven platforms. [03:03] ryah: but .so files aren't portable either [03:03] Aria: ~/.node_libraries is a bit painful right now. [03:04] tmpvar: interesting, not sure if that is solvable [03:04] Aria: Right. But ~/.node_libraries/x86_64-linux/foo.so, /i686-linux/foo.so, x86_64-darwin/foo.dylib are ;-) [03:04] ryah: bah [03:04] micheil: ryah: could this be like with some ruby gems, there's that "compiling native extensions" section [03:04] micheil: ? [03:04] Aria: It ain't pretty, but there's been reason for it. [03:05] Aria: (and my distro's build tools automatically notice the .so files and make sure they work right -- down to checking what libraries they reference and taking note.) [03:05] ryah: Aria: in your .zshenv: NODE_PATH=$HOME/.node_libraries/`uname -s` [03:06] ryah: if you want to share your home dir among seven computers, i think you should be expected to solve such problems yourself [03:06] Aria: Yeah, that'd be me working around it. But this is actually the only time I've had to solve it. [03:06] Aria: perl, ruby, python all get it right out of the box. [03:07] Aria: I'm just saying you've invented something new, which I expect to surprising (not in a good way) on every platform. [03:07] ryah: i'd rather put it onto the actual file extension [03:07] Aria: Yeah, that'd work too. [03:08] Aria: (I'd love to see foo-arch-platform.nativeextension) [03:08] tmpvar: alright, im done, peace! [03:08] Aria: Ta, tmpvar [03:08] ryah: i consciously didn't do the whole ruby/python site-lib bullshit tree because i hated it so much while working with those [03:09] micheil: ruby & pythons site-lib stuff is annoying, because you can have multiple of the with symlinks between [03:09] Tim_Smart1 has joined the channel [03:10] Aria: ACTION nods. [03:10] joshbuddy has joined the channel [03:10] ryah: anyway. everything sucks :) [03:10] micheil: ryah: any ideas on how to store the struct passwd that getpwuid() sets as last argument as? [03:11] ryah: micheil: store it in your little args struct [03:11] micheil: yeah, as? [03:11] ryah: copy it over [03:11] micheil: oh. wait. passwd *name; is valid [03:12] ryah: struct passwd * [03:12] ryah: getpwuid(uid_t uid); [03:12] micheil: ACTION failed. [03:12] ryah: struct args { Persistent cb; struct passwd result; uid_t arg; } [03:12] ryah: struct args *args = static_cast(req->data); [03:13] micheil: http://gist.github.com/421870 [03:13] ryah: struct passwd *p = getpwuid(args->arg); [03:13] micheil: is how I'm currently doing it. [03:13] ryah: memcpy(&args->result, p, sizeof(struct passwd)) [03:13] micheil: line 87 was the one I was having trouble with it, but it's good now. [03:13] Tim_Smart has joined the channel [03:14] ryah: don't put a pointer [03:14] ryah: no start in line 87. [03:14] ryah: s/start/star/ [03:14] micheil: k [03:14] ryah: memcpy the result [03:14] ryah: because when it finally comes out of the thread pool, that pointer might not be vaild anymore [03:15] ryah: (i have no idea how getpwuid works, but that's likely the case on at least one platform) [03:15] micheil: k [03:16] micheil: okay, I'll update the gist to reflec.t [03:16] Aria: (Yeah, it's not reentrant, and often uses tls) [03:16] micheil: done. [03:17] micheil: ryah: for line 128, how would be the best way to calculate the addition space required for the uname or uid? [03:17] micheil: (rather then, erm.. the +32) [03:18] micheil: or would memcpy'ing that in be the way to go? [03:20] ryah: :/ [03:21] micheil: reason I ask is because args[0] may be an int or a string [03:21] ryah: i dont think you need that 'type' member [03:22] ryah: um [03:22] micheil: hmm.. it was the easiest way for me to see if it was an int or a string passed in [03:22] ryah: you should do this [03:22] ryah: i'll edit the gist [03:22] micheil: k [03:25] bradleymeck_: bleh, weak handler in v8 is hard to make good [03:26] _announcer: Twitter: "node.js is not working... giving up and going to sleep... :("-- Timothy Kim. http://twitter.com/highwind/status/15225172652 [03:26] ryah: micheil: http://gist.github.com/421874 [03:27] micheil: checking. [03:27] ryah: bradleymeck_: yes - use ObjectWrap [03:27] micheil: ah, so delegate it once inside the if's for the arg[0] [03:28] bradleymeck_: mmm ObjectWrap on a Handle? [03:28] ryah: gtg [03:28] ryah: bradleymeck_: yeah ObjectWrap is part of node [03:28] bradleymeck_: cool, cya ryah [03:29] micheil: bye, and thanks ryah [03:30] micheil: ryah: however: [03:30] micheil: ../src/node_os.cc: In function ‘v8::Handle node::GetUser(const v8::Arguments&)’: [03:30] micheil: ../src/node_os.cc:141: error: base operand of ‘->’ has non-pointer type ‘v8::String::Utf8Value’ [03:30] pquerna: so, has anyone made a.. ctype like hack for v8 yet? [03:30] pquerna: ctypes / ffi [03:31] jedschmidt has joined the channel [03:31] micheil: ryah: got it. pwnam.length() not pwnam->length() [03:32] mostlygeek has joined the channel [03:32] mostlygeek: any recommendations for accessing mongodb? [03:33] micheil: mostlygeek: mongodb-native [03:33] micheil: it's on the modules wiki page [03:33] mostlygeek: micheil: thanks [03:38] Yuffster has joined the channel [03:40] stevendavie has joined the channel [03:42] x_or has joined the channel [03:44] Yuffster_ has joined the channel [03:46] aiskander has joined the channel [03:47] ditesh|cassini has joined the channel [03:49] fizx has joined the channel [03:53] derferman has joined the channel [03:56] aiskander has joined the channel [04:07] Tim_Smart: http://browsershots.org/ constantly reminds me how working for browsers can be agitating [04:19] probably_ has joined the channel [04:26] _announcer: Twitter: "http://tinyurl.com/289awns Understanding node.js » Debuggable Ltd"-- cube_ice. http://twitter.com/cube_ice/status/15228446280 [04:28] _announcer: Twitter: "playing with nodeJS"-- jsilverman. http://twitter.com/jsilverman/status/15228565011 [04:34] liucougar has joined the channel [04:36] fizx has joined the channel [04:37] fizx has joined the channel [04:49] mostlygeek has joined the channel [04:59] bradleymeck_ has joined the channel [05:01] mrchrisadams_ has joined the channel [05:06] jbrantly1 has joined the channel [05:09] bpot has joined the channel [05:10] bpot has joined the channel [05:13] Neil_ has joined the channel [05:16] felixge has joined the channel [05:17] fizx has joined the channel [05:23] _announcer: Twitter: "@cory_foy If jQuery is the bow, node.js is the buttercream frosting."-- Scott Koon. http://twitter.com/lazycoder/status/15231165772 [05:25] mrchrisadams_ has joined the channel [05:28] Tim_Smart has joined the channel [05:29] foobarfighter has joined the channel [05:30] foobarfighter: anybody know of a good command line debugger for node apps? something that interfaces with the v8 debugger protocol [05:33] felixge: foobarfighter: ndb [05:33] halorgium has joined the channel [05:33] felixge: foobarfighter: http://github.com/smtlaissezfaire/ndb [05:33] fictorial: GitHub OAuth2 integrated as a Nozzle demo. I'd love some feedback on this. I'm a little confused about when to "check in" to verify that a previously given access token is still valid. I'm too lazy to read the long spec! Bah. [05:33] fictorial: http://github.com/fictorial/nozzle/blob/master/demo/08-github-oauth2.js [05:33] ryan[WIN]: node http server: Error: EPIPE, Broken pipe [05:33] ryan[WIN]: i must be doing some bad mojo there <3 [05:34] foobarfighter: felixge: thank you [05:34] markwubben has joined the channel [05:35] ryan[WIN]: i'm using an old node though [05:35] felixge: ryan[WIN]: < 0.1.9x ? [05:35] paul_irish has joined the channel [05:35] ryan[WIN]: 0.1.9.2 i think [05:36] ryan[WIN]: 0.1.92 yeah [05:36] ryan[WIN]: however my thing is outputting a LOT of crap to the console [05:36] ryan[WIN]: every second or two [05:36] ryan[WIN]: thousands of lines [05:37] _announcer: Twitter: "I'm playing with #node.js to build a small, but efficient static web server ... And purhaps it could be a post on my blog ?!"-- Vincent RABAH. http://twitter.com/itwars/status/15231753036 [05:37] mrchrisadams_ has joined the channel [05:42] _announcer: Twitter: "http://is.gd/czc6y - Presentation: An introduction to node.js and Riak - особенно доставил слайд за №7 #nosql"-- xt84. http://twitter.com/xt84/status/15231963626 [05:44] vnguyen has joined the channel [05:46] bpot has joined the channel [05:46] _announcer: Twitter: "@jackowayed sorry for the delay, we just finished an OSS port to node.js / coffeescript http://github.com/gerad/lazeroids-node"-- Lazeroids. http://twitter.com/lazeroids/status/15232114794 [05:49] gwoo has joined the channel [05:49] morganallen has joined the channel [05:50] mjr_ has joined the channel [05:52] _announcer: Twitter: "http://lazeroids.com/ is back up, networked, and running on node.js! Pew pew pew!"-- Lazeroids. http://twitter.com/lazeroids/status/15232351705 [05:53] fictorial: cool [05:53] fictorial: code for that: http://github.com/gerad/lazeroids-node [05:53] fictorial: oh that was above, sorry! [05:54] bradleymeck_: mmm cant figure out a way to produce a weak reference w/o wrapping an object... that seems a bit odd, wish i could just have something like var a={data:"bleh"}; WeakRef(a,function(){cleanup();});...delete a; work. [05:56] bradleymeck_: wow, it even spans multiple screens [05:57] fictorial: yeah it's pretty cool - I'm not sure about coffeescript but neat demo [05:59] ryan[WIN]: so [06:00] ryan[WIN]: i'm about to take that lazeroids game down by bombarding it with social networking traffic [06:00] ryan[WIN]: BRB [06:00] bradleymeck_: lol [06:00] mjr_: I wish the keyboard input was more responsive. [06:00] mjr_: Does it lag for anybody else? [06:00] jbrantly has joined the channel [06:00] mape: Nope [06:00] bradleymeck_: it doesnt lag for me, im in chrome. does have one heck of inertia though [06:01] mjr_: Hmm. Transitioning from rotate left to rotate left + thrust doesn't seem to work. [06:01] mjr_: I have to lift up on left, and then then up, or the up never registers. [06:01] xer0x has joined the channel [06:01] mape: guess it is a pita to keep the session of keys pressed not press [06:02] mjr_: Yeah, it's unworkably annoying to play for me. [06:02] mape: ie if you want to be able to hold [06:02] bradleymeck_: well they might not be using a directional bitmask [06:02] ryan[WIN]: i think there are bugs [06:02] ryan[WIN]: it says there's like 3 trillion connected [06:02] mjr_: I love love love the idea thouhg. [06:02] mjr_: That's 3 loves. [06:02] bradleymeck_: ryan i think that is a userid actually [06:03] bradleymeck_: cause i saw a couple connected/disconnected things up there [06:05] ryan[WIN]: o [06:06] bradleymeck_: and yes they arent tracking the keys that stay down, just the last one to be pressed it looks like [06:07] ryan[WIN]: prepare for it to go down [06:07] ryan[WIN]: <3 [06:07] mape: yeah [06:07] ryan[WIN]: AS THEY GET BOMBARDED WITH TRAFFICS [06:07] ryan[WIN]: I'VE INTERWEB 3.0'D THEM [06:07] mape: hackernews? [06:07] ryan[WIN]: nah [06:07] ryan[WIN]: reddit [06:08] bradleymeck_: dont forget W to warp! [06:09] ryan[WIN]: lul [06:09] mape: that makes the game seem buggy [06:09] mostlygeek has joined the channel [06:10] mape: should have somekinda visual que [06:11] ph^ has joined the channel [06:12] bradleymeck_: no, W is not in the help, easter egg [06:13] bradleymeck_: i just wish it had pvp [06:13] ryan[WIN]: lul [06:13] ryan[WIN]: i made an old game that was sorta like pvp asteroids [06:13] ryan[WIN]: it's so old it was made for DOS [06:14] ryan[WIN]: realmode DOS [06:14] ryan[WIN]: 640k was enough. [06:14] bradleymeck_: 640k is a lot of space if you dont have to bundle a runtime [06:14] bradleymeck_: night all! [06:14] mape: nn [06:17] ryan[WIN]: http://www.ryanbroomfield.com/_/rsrc/1258103781427/projects/old-stuff/qbasic/shippy-gold/shipgoldgame.png [06:17] ryan[WIN]: you could shoot the asteroids and the cpu players [06:23] jbrantly has left the channel [06:30] sh1mmer has joined the channel [06:31] alexpercsi has joined the channel [06:33] halorgium has joined the channel [06:35] cedricv has joined the channel [06:36] Nohryb has joined the channel [06:39] enherit has joined the channel [07:07] virtuo has joined the channel [07:19] Nohryb has joined the channel [07:20] hellp has joined the channel [07:25] jedschmidt has joined the channel [07:31] ph^ has joined the channel [07:36] halorgium has joined the channel [07:38] foobarfighter has joined the channel [07:38] rockstar has joined the channel [07:38] phiggins has joined the channel [07:38] tav has joined the channel [07:38] deanlandolt_home has joined the channel [07:38] bjartek has joined the channel [07:38] binspace has joined the channel [07:38] harryv has joined the channel [07:38] dantalizing has joined the channel [07:43] rictic has joined the channel [07:52] jsilver has joined the channel [07:53] rra has joined the channel [07:56] mostlygeek has joined the channel [07:58] botanicus has joined the channel [08:02] jedschmidt has joined the channel [08:05] jedschmidt_ has joined the channel [08:20] TomY has joined the channel [08:21] TomY has joined the channel [08:29] riq has joined the channel [08:36] SubStack: finally wrote about my binary parser for node.js [08:36] SubStack: http://substack.net/posts/cb328d/Binary-Stream-Parsing-in-Node-js [08:37] SubStack: illustrated! [08:39] BBB has joined the channel [08:40] sveilin: ;-) [08:43] SteveDekorte has joined the channel [08:44] rnewson has joined the channel [08:47] pdelgallego has joined the channel [08:49] robinduckett has joined the channel [08:49] robinduckett: yo [08:52] micheil: ryah: if you're about, with something like getpwuid_r, would you interpret the docs to say that errno is a global of sorts? [08:52] tpryme has joined the channel [08:53] mAritz has joined the channel [08:56] hassox has joined the channel [09:03] maushu has joined the channel [09:04] xla has joined the channel [09:09] FoxFurry has joined the channel [09:09] mitkok has joined the channel [09:10] Ned_ has joined the channel [09:10] rnewson has joined the channel [09:10] steadicat has joined the channel [09:19] kodisha has joined the channel [09:23] maushu: http://phonons.wordpress.com/2010/06/01/cells-a-massively-multi-agent-python-programming-game/ [09:23] maushu: ...how about this in node.js? [09:30] virtuo has joined the channel [09:31] halorgium has joined the channel [09:32] ewdafa has joined the channel [09:32] danfo has joined the channel [09:33] mape: SubStack: vnc in the browser through canvas? [09:34] jetienne has joined the channel [09:34] danfo: hi - is this a common error? I get it whenever I use http.createClient - or when I try to install npm. http://gist.github.com/422146 [09:35] danfo: 0.1.97 - Error: ECONNREFUSED, Could not contact DNS servers [09:35] danfo: thanks! [09:38] mikeal has joined the channel [09:40] steadicat has joined the channel [09:41] botanicus has joined the channel [09:42] SubStack: mape: yep! [09:42] SubStack: actually not even canvas [09:42] SubStack: just regular javascript [09:42] SubStack: there's already guacamole, but it's got some java thing on the backend [09:43] SubStack: and socket.io is great for pushing down the latency [09:44] mape: so how to display it? [09:46] SubStack: lots of tricks! [09:46] SubStack: the data: uri for images is pretty great [09:46] SubStack: and another thing we do is stacked alpha transparency [09:49] Tekerson has joined the channel [09:50] _cheerios has joined the channel [09:50] admc has joined the channel [09:51] Ori_P has joined the channel [09:51] wbruce has left the channel [09:58] jetienne: SubStack: what is "stacked alpha transparency" [09:58] jetienne: i know alpha transparency. but what stacked mean here [10:02] SubStack: putting lots of tiles into the same image with alpha in between [10:02] SubStack: and then stacking these groups of tiles over time [10:03] jetienne: ok [10:03] pkrumins: via node-png [10:03] pkrumins: via DynamicPngStack object it provides. [10:04] SubStack: :) [10:04] jetienne: btw feedback about plugins, as nodejs starts to have a lot of plugins, a directory with user feedback would help know which one to use [10:05] pkrumins: there is a dir already of plugins [10:05] pkrumins: http://wiki.github.com/ry/node/modules [10:05] riq has joined the channel [10:06] jetienne: pkrumins: yep this is only a list. as in all projects, people do plugins all the time. it is needed to know the quality of those plugins to know if they are usable in a project [10:06] pkrumins: TIAS! [10:06] jetienne: pkrumins: just explaining my pov here, not complain ing [10:06] hellp has joined the channel [10:06] jetienne: tias=? [10:06] pkrumins: try it an see! [10:07] pkrumins: but you got a point there [10:07] jashkenas has joined the channel [10:08] jetienne: http://www.symfony-project.org/plugins/ <- a good plugin repo in my view. there is userfeeback, news, git/svn info, author email. all that in a common format [10:09] jetienne: symfony one handles the svn/git themselves, which may not be good tho... but beyond that their system is cool [10:09] jashkenas has left the channel [10:11] pkrumins: wow, that is an awesome plugin repo for symfony [10:11] pkrumins: symfony gets some ++'s from me for that [10:12] MattJ has joined the channel [10:13] CIA-77: node: 03Ryan Dahl 07master * r75f0cf4 10/ (Makefile src/node.cc wscript): (log message trimmed) [10:13] CIA-77: node: More dynmaic linking options [10:13] CIA-77: node: This adds the following options to the `configure` program [10:13] CIA-77: node: --shared-v8 Link to a shared V8 DLL instead of static linking [10:13] CIA-77: node: --shared-v8-includes=SHARED_V8_INCLUDES [10:13] CIA-77: node: Directory containing V8 header files [10:13] CIA-77: node: --shared-v8-libpath=SHARED_V8_LIBPATH [10:15] dwww has joined the channel [10:21] JimBastard has joined the channel [10:21] JimBastard: mmmmmm [10:21] ryah: JimBastard: are you awake already? [10:21] ryah: hm, i should really go to sleep. [10:21] JimBastard: i had a rough night [10:21] JimBastard: lol [10:22] JimBastard: cheesesteak and large ice coffee kicked my ass ive been puking all night [10:22] javajunky has joined the channel [10:22] ewdafa: how pleasant [10:22] JimBastard: yeah, water > coffee [10:24] JimBastard: i feel okay now except i burst a bunch of capillaries caus im soo fucking pale aahaha [10:24] felixge has joined the channel [10:24] felixge has joined the channel [10:24] kodisha has joined the channel [10:30] JimBastard: fuck it im up, time to start working [10:30] JimBastard: behaviors library today [10:34] Nohryb has joined the channel [10:37] stagas has joined the channel [10:37] Tim_Smart has joined the channel [10:38] Neil has joined the channel [10:41] Neil_ has joined the channel [10:43] Neil has joined the channel [10:44] jedschmidt has joined the channel [10:52] andrewhampton has joined the channel [10:59] rnewson has joined the channel [10:59] rnewson has joined the channel [11:08] botanicus has joined the channel [11:12] steadicat has joined the channel [11:23] fermion has joined the channel [11:25] maushu: FULL POWER AHEAD! [11:26] Tim_Smart has joined the channel [11:29] stagas: SO is like drugs [11:30] stagas: I need to set hosts 127.0.0.1 stackoverflow.com [11:36] jashkenas has joined the channel [11:39] alex-desktop_ has joined the channel [12:08] saimon: Anyone know by what handle guillermo rauch goes by? [12:09] javajunky: something gauch iirc [12:09] javajunky: sry something like gauch [12:10] saimon: javajunky: thx [12:10] javajunky: hmm perhaps not [12:10] TheEnd2012 has joined the channel [12:10] javajunky: I spoke to him yesterday, isn't memory fun. [12:10] javajunky: works for learnboost I believe. [12:11] saimon: javajunky: :) Are there logs to search? Yes...I want to pick his brain about socketio [12:11] sveimac has joined the channel [12:11] javajunky: yeah debuggable.nodejs.com or something [12:11] javajunky: err perhaps not. [12:11] javajunky: http://nodejs.debuggable.com/ [12:12] saimon: javajunky: yep...I need to accustom myself to looking at irc headers [12:14] kriszyp has joined the channel [12:15] saimon: javajunky: no luck with the logs from yesterday or day before...searching [12:17] javajunky: yeah thats waht I did after suggesting gauch sorry matey, sure I've spoken to him in here, perhaps just on the mailing list [12:17] TheEnd2012 has left the channel [12:21] rauchg has joined the channel [12:23] pdelgallego has joined the channel [12:26] jetienne has joined the channel [12:28] sveimac has joined the channel [12:31] andrewhampton has left the channel [12:32] dkastner has joined the channel [12:32] SubStack: saimon: probably rauchg [12:33] rauchg: salmon [12:33] SubStack: heh [12:33] SubStack: rauchg: I know you! [12:33] rauchg: =] [12:54] jetienne: rauchg: what is a "http socket" ? im reading http://github.com/LearnBoost/Socket.IO. i kknow websocket and normal socket [12:55] rauchg: jetienne: basically socket.io provides an API really similar to websocket, but aside from using websocket, it uses other transports that are available in all browsers [12:55] rauchg: like long polling [12:56] rauchg: the cool thing is that usually the API that corresponds to most long polling implementations either: [12:56] rauchg: - looks like ajax or [12:56] rauchg: - depends on a specific protocol (eg: bayeux implementations) [12:57] rauchg: socket.io implements a *very* thin protocol to make those drastically different transports compatible [12:57] rauchg: (see the Protocol section in http://github.com/LearnBoost/Socket.IO-node) [12:58] jetienne: rauchg: so it is like a wrapper on top of all those various technic ? [12:58] jashkenas has left the channel [12:58] pgriess has joined the channel [12:59] jetienne: ok [12:59] rauchg: yep [13:08] JonGretar has joined the channel [13:09] davidsklar has joined the channel [13:13] sudoer has joined the channel [13:21] alexpercsi has joined the channel [13:27] sh1mmer has joined the channel [13:29] joshr has joined the channel [13:30] ly- has joined the channel [13:31] o_o has joined the channel [13:35] sh1m has joined the channel [13:39] micheil: anyone know much about scopes in C/C++ and if/else statements? [13:39] micheil: I'm getting the error: ../src/node_os.cc:165: error: ‘creq’ was not declared in this scope [13:40] micheil: when struct custom_request *creq is defined in both the if and else clauses just above [13:41] micheil: it builds fine though if the lines that used creq outside of the if/else are placed inside the if/else [13:42] micheil: also works if I declare struct custom_request *creq; outside of the if/else [13:43] blowery: in c++, variables are scoped to their enclosing { } [13:43] blowery: so if(int f = 5} { … } else { … f is not valid here } [13:44] blowery: in strict c, variables have to be declared early and are scoped to the enclosing function, not the enclosing { } [13:44] blowery: but Node is C++, so don't worry about it [13:46] rnewson has joined the channel [13:53] micheil: uh.. okay [13:53] micheil: I was just getting a really odd error with that "fix" [13:54] Psytherium has joined the channel [13:54] micheil: looks like I have to use non-dry code to do this. oh well. [13:55] kodisha has joined the channel [14:01] demolithion has joined the channel [14:01] ceej has joined the channel [14:06] jetienne: micheil: why not declare the var just above the if/else ? [14:06] micheil: jetienne: because it doesn't work. [14:06] micheil: throws a compile time error [14:07] micheil: / build time error [14:08] jetienne: micheil: i bet the error is elsewhere. [14:08] softdrink has joined the channel [14:08] jetienne: if the var is declare before if/else, it will be available inside if/else and after [14:09] micheil: jetienne: uh... we are both talking about C++ right? [14:09] jetienne: micheil: yep and i wrote a code of 350kline of c++ :) [14:09] micheil: jetienne: you can't possibly be sane then. [14:09] micheil: ;P [14:09] jetienne: :) [14:11] rolfb has joined the channel [14:14] gf3 has joined the channel [14:15] micheil: oh, shit, wow. I've got getpwnam working [14:16] micheil: wtf. [14:17] micheil: jetienne: check this out.. https://gist.github.com/3f4c892f2af80251a382 [14:17] micheil: it fails the first time, works every other time though [14:17] blowery: micheil: 350K lines of C++ is just hello world after template expansion :D [14:18] micheil: blowery: you wanna have a look at this code? [14:18] blowery: micheil: sure [14:19] micheil: blowery: it may burn your eyes, I'm a fairly novice C++ coder. http://gist.github.com/422415 [14:19] blowery: my eyes were burned out long ago [14:20] softdrink: ACTION pets good ol' C [14:20] blowery: micheil: what lines are causing you trouble? [14:20] micheil: blowery: none now, it's just that the first time it's run, it throws an ENOENT error [14:20] micheil: then all subsequent calls work [14:21] blowery: where's the ENOENT thrown? [14:21] MattJ has joined the channel [14:21] micheil: see: https://gist.github.com/3f4c892f2af80251a382 [14:22] blowery: ACTION runs away, screaming [14:22] micheil: it doesn't make much sense to me. [14:23] pjb3 has joined the channel [14:24] micheil: I think I've got it. [14:25] micheil: errno is set by libeio [14:26] jetienne: if(creq->type == 0 <- what 0 mean here ? [14:27] jetienne: gist needs to get url per line [14:27] micheil: jetienne: it's just a bool really. [14:28] micheil: type 0 tells me that it was an int passed into it, rather then a string [14:28] micheil: the usage is: os.getUser(string | int, [callback]) [14:28] jetienne: ok [14:28] micheil: so, 1 is for string, 0 is for int [14:29] jetienne: req->errorno = getpwuid_r(creq->uid, &pwd, getbuf, sizeof(getbuf), &pwdp); <- after this, put a log to get cred-uid et req-errno [14:29] micheil: put a log? [14:29] jetienne: static char getbuf[1024]; <- and this is ugl [14:29] jetienne: y [14:30] mattly has joined the channel [14:30] jetienne: micheil: yep log as in printf, i dunno which kind of available in this [14:30] alexpercsi has joined the channel [14:30] micheil: yeah, that could probably use _SC_GETPW_R_SIZE_MAX [14:30] jetienne: micheil: nah the issue is more the static. i got multithread on this, and this crash [14:30] micheil: I don't think printf would do anything, is it's executing in eio's threadstack [14:31] micheil: jetienne: talk to ryah on that one, I flogged it from node_file.cc [14:31] behmann has joined the channel [14:31] jetienne: micheil: most likely, there is a way to log/printf in this. [14:31] micheil: jetienne: I'll try it, but I don't think it'll work [14:32] jetienne: micheil: all this API is from node.js or from v8 ? [14:32] ph^ has joined the channel [14:32] micheil: it's a mixture of V8, node, and libeio [14:34] micheil: jetienne: yup. printf does nothing. [14:35] jetienne: fprintf(stderr, "node-crypto : Hash .digest encoding " [14:35] TheEnd2012 has joined the channel [14:35] micheil: basically every static int EIO_ executes within libeio's threadpool [14:35] jetienne: q. how to log things inside node.js c++ ? [14:36] micheil: right. I get: 0, 2 [14:36] micheil: fprintf(stderr, "%d", creq->errorno); [14:36] micheil: fprintf(stderr, "%d", errno); [14:37] jetienne: so creq->errorno == 0 ? [14:37] jetienne: even the first time ? [14:37] micheil: yes [14:37] micheil: yes [14:37] micheil: it's errno that's doing it [14:37] jetienne: so the boggus error report is after [14:37] micheil: and errrno is setting something else [14:37] jetienne: errno is a ugly kludge [14:37] jetienne: micheil: errno is likely set by fprintf [14:38] jetienne: fprintf(stderr, "%d", errno); <- in this one i mean [14:38] micheil: nawh, that wouldn't be right. [14:38] micheil: because even with no fprintf, errno is still set. [14:39] jetienne: if (req->errorno && req->errorno != 0) { <- in line 100, do fprintf("req->errno %d", req->errno); [14:40] jetienne: before line 100 [14:40] micheil: 2 [14:41] jetienne: asm-generic/errno-base.h:#define ENOENT 2 [14:41] jetienne: ok so lets play the "who is changing reqerrno :) [14:42] micheil: it looks to be eio.cc [14:42] micheil: lines 558: errno = EAGAIN; [14:42] Yuffster has joined the channel [14:42] jetienne: micheil: well EAGAIN is not ENOENT [14:42] micheil: true [14:43] jetienne: and in this context ENOENT seems to make sense, assuming this user id doesnt exist [14:43] micheil: but the uid & username exist [14:43] jetienne: &creq->result <- how large is "result" [14:44] jetienne: or do fprintf(stderr, "%d", creq->errorno); AFTER the memcpy(&creq->result, pwdp, sizeof(struct passwd)) line 131 [14:45] micheil: 5325520 [14:45] jetienne: 5mbyte for "result" [14:45] jetienne: ok ;) [14:45] jetienne: what about the fprintf after memcpy ? [14:45] micheil: wait. [14:45] micheil: yes, 2 [14:45] jetienne: ah :=) [14:46] micheil: I did &creq->errorno [14:46] jetienne: so *before* memcpy creq->errno == 0, and after it is 2 :)à [14:46] jetienne: welcome in the c/c++ world :) [14:46] jetienne: result is a pointer i guess [14:47] micheil: no [14:47] jetienne: micheil: ok result is not a pointer, and result is 5mbyte ? [14:47] micheil: wait. what? [14:47] botanicus has joined the channel [14:47] jetienne: and memcpy is overwriting creq->errno ? [14:47] jetienne: ok i will look on the internet 2sec [14:48] micheil: it's 0 before and after the blocking call [14:48] micheil: I think this is something ryah would have better luck explaining.. [14:49] jetienne: ssize_t result; /* result of syscall, e.g. result = read (... */ [14:49] micheil: because.. uh, I got it to work -- if I ignore req->errorno (not creq->errorno) [14:49] micheil: wrong result object. [14:49] micheil: struct passwd result; [14:49] micheil: line 87 [14:50] jetienne: eio_req volatile *next; /* private ETP */ <- and libio is threaded... so be carefull with static data [14:50] jetienne: micheil: ah yep, mybad [14:51] jetienne: micheil: ok lets focus. *before* memcpy, do a fprintf creq->errorno, and *after* do the same printf [14:51] micheil: they equal the same [14:51] jetienne: micheil: if i understood you the errno is != [14:51] micheil: 0 [14:51] jetienne: ah ok [14:52] micheil: even if I request a uid that doesn't exist, it's 0 [14:52] jetienne: but in AfterGetUser creq->errno is suddently 2 [14:52] jetienne: correct ? [14:52] micheil: no [14:52] micheil: req->errorno [14:53] jetienne: ok sorry i dunno [14:53] jetienne: but i wish i had time to play with nodejs [14:53] jetienne: lunch time [14:53] micheil: k [14:54] micheil: I think it might be because I'm using a thread-safe form of getpwuid [14:55] micheil: getpwuid_r vs getpwuid [14:56] elliotcm has joined the channel [14:56] micheil: ryah: ping [15:02] scoates has joined the channel [15:03] scoates: hello [15:03] Neil_ has joined the channel [15:03] vnguyen has joined the channel [15:03] sh1mmer has joined the channel [15:03] olegp has joined the channel [15:04] scoates: I can't get node (from git) to build (Darwin). http://paste.roguecoders.com/p/ae8dc7ce5f74ffa176f7e42328cf1abc.txt Any ideas? [15:07] temoto has joined the channel [15:08] micheil: scoates: checkin' [15:08] temoto: Hello. I'm trying to run mayflowergmbh jslint, but get this error: http://codepad.org/91uEwt8b [15:08] temoto: the jslint code itself is here http://github.com/mayflowergmbh/node-jslint [15:08] micheil: scoates: can I have a look at what ./configure outputs? [15:09] micheil: scoates: and which version of node is this? [15:09] JimBastard has joined the channel [15:09] scoates: micheil: sure; I'll capture configure [15:09] scoates: and I just cloned ~1h ago [15:09] JimBastard: yo ho ho and a bottle of rum [15:11] jedschmidt has joined the channel [15:12] micheil: temoto: that should work [15:12] micheil: temoto: I'd be more inclined to think that it'd be line 21 that would break [15:13] temoto: micheil, yeah well i did cp -R lib ~ so it exists. [15:13] micheil: temoto: uhh.. I'm not sure there to be honest. [15:13] scoates: sorry; got distracted by a dozen things. Here's my ./configure output: http://paste.roguecoders.com/p/087721e22c4177295dac74deabd88f52.txt [15:14] temoto: micheil, i configured node with --prefix=$HOME, is that important? [15:14] micheil: temoto: I have no idea. [15:14] temoto: micheil, okay, thanks for attention, anyway. [15:14] micheil: temoto: probably best to shoot the author of the lint module a message on github [15:14] temoto: Isn't 'fs' thing built into node? [15:15] micheil: scoates: be with you in a minute, just recompiling one of my c modules [15:15] scoates: sure. thanks. [15:15] micheil: temoto: yes, that's why it "should work" [15:15] bmizerany has joined the channel [15:15] ditesh|cassini has joined the channel [15:15] temoto: micheil, i see, thanks. [15:16] micheil: scoates: hmm.. I'm going to try a fresh checkout (I a few versions behind due to aforementioned module development) [15:17] scoates: ok, thanks. [15:17] micheil: scoates: is this os x 10.6, latest xcode? [15:18] scoates: I installed node from homebrew, so that gave me the support libraries. That worked. Then I wanted to install npm and that required a newer node, so I uninstalled the homebrew version, cloned node, and couldn't build the checkout. [15:18] scoates: micheil: yeah, 10.6 and newest xcode afaik [15:18] scoates: gcc version 4.2.1 (Apple Inc. build 5659) [15:19] micheil: scoates: okay.. well, this is what I get: http://gist.github.com/422499 [15:19] scoates: I actually had something closer to that, first [15:19] scoates: sec [15:19] micheil: make distclean [15:20] scoates: ah.. it's an ansi colours -> pastebin problem, I think. sorry about that. 1 sec. [15:20] robinduckett: someone port node.js to iphone plzkthnxbai [15:20] scoates: http://paste.roguecoders.com/p/e4aea93d3836d14c5c6f57a4537b4e33.txt [15:22] temoto: micheil, i found it. I used stable branch of node and it doesn't have 'fs.js' in lib. master has. [15:22] micheil: man. gotta remember to have someone delete it. [15:23] micheil: robinduckett: have fun. [15:23] temoto: Delete the stable branch? [15:24] riq has joined the channel [15:24] robinduckett: micheil, I tried, but after the third hour trying to compile V8 I gave up [15:24] robinduckett: (I don't have a tool chain and compiling on the iPhone takes forever) [15:24] micheil: temoto: yeah, because it's not really the "stable" branch [15:25] micheil: scoates: hmm.. [15:25] temoto: micheil, oh. Which is, then? [15:25] scoates: hmm.. indeed (-: [15:25] micheil: temoto: a tagged version [15:25] micheil: git checkout v0.1.97 [15:25] temoto: robinduckett, i gave up building V8 on laptop either :) [15:25] micheil: scoates: just compiling, to see if I get any errors [15:26] mertimor has joined the channel [15:26] micheil: temoto: alternatively, you can live on bleeding, which is HEAD [15:26] micheil: / master [15:26] scoates: here's the end of make's fail output: http://paste.roguecoders.com/p/69cc9ab5d2a7dcd49585d0f32c86ec1e.txt [15:27] mertimor has joined the channel [15:27] gwoo: scoates: use homebrew [15:27] sudoer has joined the channel [15:28] micheil: gwoo: not if you want bleeding or the latest release [15:28] mertimor has joined the channel [15:28] gwoo: no? [15:28] micheil: gwoo: homebrew often lages [15:28] micheil: *lags [15:28] scoates: gwoo: I already tried that, but npm's newest version needs a newer node [15:28] gwoo: i have noticed it to be a day behind [15:28] scoates: and there's no npm in homebrew [15:28] gwoo: darn [15:28] micheil: I'm on osx 10.6, and regularly compile from source, no worries [15:28] scoates: or at least in my last clone [15:28] scoates: hmm [15:29] micheil: npm is more or less a module for node. [15:29] micheil: scoates: confirmation it breaks, [15:30] scoates: hurray? (-: [15:30] gwoo: yeah homebrew seems stuck on .93 [15:30] gwoo: i wonder if for the same reason [15:30] micheil: scoates: now I get to try and figure out what broke it. [15:30] scoates: thanks micheil [15:30] temoto: Is there info which version of node requires which version of V8? [15:31] micheil: ugh.. I think this might be what ryah was saying about build systems [15:31] micheil: temoto: not really [15:33] scoates: I just want http://github.com/cloudhead/http-console (-: [15:33] blowery: temoto: node is bundled with v8. whatever you checkout will have the right v8 bundled. [15:34] tjholowaychuk has joined the channel [15:34] blowery: temoto: er, v8 is bundled with node that is :) [15:34] temoto: blowery, well happily enough, it used installed v8 and didn't compile another. [15:35] micheil: scoates: I think the most interesting part is at step 117/134 [15:35] drudge: is the mongoose dev here? [15:35] temoto: (because i didn't have success compiling v8 on x86_64) [15:35] indexzero has joined the channel [15:35] drudge: temoto: SSL issues? [15:35] blowery: yeah v8 doesn't support 64 bit yet AFAIK [15:36] temoto: drudge, i don't recall exactly. Something low level, like wrong define or struct member or something. [15:36] blowery: oh, nevermind http://www.chromium.org/developers/design-documents/64-bit-support [15:37] mitkok has joined the channel [15:37] gwoo: ok i had forgotten to pull the latest [15:37] gwoo: hombrew [15:37] temoto: i have 64-bit version installed from binary ubuntu package and it's fine. Not bleeding edge, of course, but not so old too. [15:37] gwoo: now its installing 1.97 [15:37] micheil: scoates: just going to check something.. [15:38] scoates: ACTION nods [15:38] drudge: i had issues compiling node with ssl on x64 because the static libs were x86 only [15:39] temoto: So, now the problem is that input = fs.readFileSync(filename) doesn't have .replace method. [15:39] micheil: damn.. 5 & 4 am the past few nights is catching up with me [15:39] gwoo: nap time [15:39] micheil: scoates: just checkin a build on v0.1.96 [15:40] tobeytailor has joined the channel [15:40] Ori_P_ has joined the channel [15:40] gwoo: /usr/local/homebrew/Cellar/node/0.1.97: 84 files, 5.5M, built in 3.1 minutes [15:40] scoates: ok. let me know if you'd like me to try anything specific (-: [15:40] tobeytailor has left the channel [15:41] micheil: gwoo: y'know. installing from homebrew & git checkout do virtually the same things? [15:41] gwoo: yeah [15:41] gwoo: you can actually make a recipe [15:41] gwoo: for a git clone [15:41] scoates: yeah.. easily [15:41] gwoo: instead of a release [15:41] micheil: the only difference is where it installs, and where it grabs the source package from [15:41] gwoo: yeah [15:42] micheil: scoates: okay, for now, git checkout v0.1.96 [15:42] gwoo: but it's strange that I got make install errors trying to use the repo, but homebrew worked [15:42] micheil: I know that npm should work on that build [15:42] micheil: gwoo: I think v0.1.97 is broken on os x [15:42] gwoo: probably because homebrew also uses it's own libs for any dependencies? [15:42] micheil: no [15:42] scoates: `make`ing [15:43] micheil: gwoo: node specifically uses it's bundled versions [15:45] gwoo: yeah, weirdn [15:45] temoto has left the channel [15:45] micheil: when 0.1.97 builds, I'll tell you if it's 0.1.97 that's the issue, or if it's HEAD [15:47] micheil: okay.. just got one error on 0.1.97 [15:47] micheil: related to v8 [15:48] scoates: nice.. 0.1.96 built [15:48] scoates: thanks [15:48] whoahbot has joined the channel [15:48] micheil: scoates: yeah, 0.1.96 builds (because that's what I've been developing this module against.) [15:48] scoates: yep, and npm is good [15:49] micheil: i think it's something between 0.1.97 and 0.1.96 that broke [15:49] scoates: http://paste.roguecoders.com/p/70c20d78ae364f56cbb201df655cb239.txt [15:49] micheil: yea. definitely something in 0.1.97 is broken [15:49] scoates: thanks! [15:52] micheil: no worries [15:53] micheil: okay.. finding where node breaks between 0.1.96 and HEAD will be a needle in a haystack to me [15:54] micheil: 282 files changes, v8 upgraded, c-ares, libeio, http_parser, & the makefile were all changed [15:54] gwoo: where is npm installed? [15:55] micheil: uhh.. not sure [15:55] pkrumins: what exactly breas? [15:55] micheil: pkrumins: it just fails to compile on os x 10.6, latest xcode [15:55] pkrumins: roger [15:55] micheil: some warning about unused symbols.. and then yeah [15:56] tmpvar has joined the channel [15:57] indexzero: wattup son [15:57] indexzero: ACTION high fives tmpvar [15:57] micheil: full trace is about this: http://paste.roguecoders.com/p/ae8dc7ce5f74ffa176f7e42328cf1abc.txt [15:57] tmpvar: what up dunny [15:58] tmpvar: hows the ol bastard? [15:58] indexzero: dude, I've never seen someone that sick; it's like he had those worms from Star Trek 2: The Wrath of Khan [15:58] indexzero: seems like he's better this mornin' tho [15:58] tmpvar: haha, thats good [15:59] micheil: night chaps. happy node'ing [16:00] tmpvar: peace [16:00] micheil: def. [16:01] micheil: and fark. it's only wednesday.. still three days till the weekend. :( [16:08] kevwil has joined the channel [16:12] vnguyen has joined the channel [16:13] ryah: did i break the build? [16:13] phiggins: yes [16:13] ryah: meh [16:13] phiggins: just kidding i have no idea [16:13] ryah: oh. heh [16:14] gwoo: ~buildbot [16:14] ryah: http://buildbot.nodejs.org:8010/waterfall [16:14] ryah: appears so [16:15] ryah: alright. rolling back out of those changes. [16:17] CIA-77: node: 03Ryan Dahl 07master * r501136b 10/ (Makefile src/node.cc wscript): [16:17] CIA-77: node: Revert "More dynmaic linking options" [16:17] CIA-77: node: Broke the build. Will fix and reapply soon. [16:17] CIA-77: node: This reverts commit 75f0cf471af3c029290d4bf55c34d1fc470ef600. - http://bit.ly/9mCu6F [16:17] sudoer has joined the channel [16:19] x_or has joined the channel [16:22] o_o: My GET is returning before i have received Data to return - the 'end' is emitted almost immediately - can i introduce an event before 'end' ? [16:23] mjr_: if you don't do response.end(), an http server will wait forever. [16:23] mjr_: you can do all of the writes you like until you do an end. [16:24] o_o: oh [16:24] o_o: thank you. [16:26] o_o: I'm sorry - but that statement isn't true [16:26] o_o: at least the 'end' event is getting emitted [16:26] o_o: even when i don't do response.end() [16:26] o_o: maybe they are seperate? [16:27] o_o: request.addListener('end') [16:27] o_o: ahh i think that must be only for when the request has completed [16:27] bpot has joined the channel [16:28] brainproxy: anyone here using nodejuice? [16:29] BBBB has joined the channel [16:29] stevendavie has joined the channel [16:30] JimBastard_ has joined the channel [16:35] Aikar has joined the channel [16:35] morganallen has joined the channel [16:38] fictorial: anyone see this? I bet it can be built atop the existing Buffer easily: http://people.mozilla.com/~vladimir/jsvec/TypedArray-spec.html [16:39] Aria has joined the channel [16:42] mjr_: o_o: yeah, request will emit an "end" event, and call end() on the response. [16:43] shajith has joined the channel [16:43] rolfb has joined the channel [16:48] qFox has joined the channel [16:48] margle has joined the channel [16:49] margle: I'm trying to use Mustache with node.js -> it tells me the object doesn't have a method called "to_html?" [16:51] Yuffster has joined the channel [17:00] BBBB has joined the channel [17:00] cedricv has joined the channel [17:02] bengl: what's nodeknockout.com? [17:03] ryah: like rails rumble [17:05] drudge: ryah: nice yahoo presentation [17:05] ryah: drudge: thanks [17:05] technoweenie has joined the channel [17:07] o_o: request.end with POST and request.end with GET have different behaviour [17:07] morganallen has joined the channel [17:07] jsilver: what's up nodeites [17:07] margle: trying to figure out mustache... [17:07] margle: and getting it work with node.js [17:08] jsilver: rails hates node because rails is incorrectly designed LOL [17:08] rolfb has joined the channel [17:08] jsilver: margle, mustache is good ++ [17:08] steadicat has joined the channel [17:08] margle: jsilver: it looks really good - when I var m = require('./mustache'); m is undefined. [17:09] margle: jsilver: so I don't have the to_html() method [17:09] jsilver: is mustache for node different than mustache for ruby or is it similar [17:09] brainproxy: margle: did you look at Mu [17:09] brainproxy: that's a mustache adaptation for node.js specifically [17:09] margle: jsilver: seems exactly the same. [17:09] jsilver: ahh okay [17:10] margle: brainproxy: I saw it had template caching; so we'll probably give it a go. Just didn't want to branch too far from the core. [17:10] margle: Thanks guys. Home time. [17:13] ryah: so i'm probably going to start some platform specific source files [17:13] ryah: node_platform_linux.cc node_platform_osx.cc, etc [17:14] mikeal has joined the channel [17:14] ryah: right now the only thing going in there will be the getmem() [17:14] admc has joined the channel [17:15] ryah: but i was talking to creationix - he wants good support for finding out the patht o the executable for the current process [17:15] phiggins: is platform sniffing the same as browser sniffing? [17:15] ryah: which - you kind of figure out with argv[0] and cwd - but it doesn't work in many cases [17:15] ryah: but there are platform specific ways of doing this that don't suck [17:16] ryah: they're just different on each platform [17:16] ryah: i'd also like the ability to know how much CPU the process is using [17:17] tjholowaychuk: we need the apis to daemonize too. I have basically a rackup clone pretty much ready aside from that [17:18] Nohryb has joined the channel [17:20] ryah: tjholowaychuk: yeah [17:20] ryah: process.daemonize() [17:20] tjholowaychuk: :D [17:20] ryah: been thinking about it [17:20] tisba has joined the channel [17:20] tjholowaychuk: most of it is there [17:20] tjholowaychuk: just need to redirect streams to custom log files n whatnot, chroot and setsid i think [17:21] ryah: yeah, it's not hard - just needs to be done [17:23] tjholowaychuk: i can probably get on it in a day or two [17:27] mjr_ has joined the channel [17:28] liucougar has joined the channel [17:29] ryah: tjholowaychuk: i'll do it [17:29] mjr_: ryah: something must be wrong. I came into the office this morning, and I didn't need to recompile node. [17:30] tjholowaychuk: ryah: rad, looking forward to it [17:30] JimBastard has joined the channel [17:30] JimBastard: i think i figured it out all : http://www.imagehut.net/images/f5q23ss09ywzkyyhfo.jpg [17:32] tmpvar: what up JimBastard [17:32] mjr_: There are also platform specific ways to do watchfile that don't suck. [17:32] JimBastard: i dont like ralph [17:32] JimBastard: i dunno who invited him over, but hes not welcome [17:33] JimBastard: sorry for bailing last night man i was hurting [17:35] tmpvar: JimBastard, feeling better? [17:35] charlesjolley- has joined the channel [17:35] JimBastard: aye [17:35] tmpvar: good [17:35] tmpvar: now get back to work [17:35] JimBastard: too much partying and not enough javascript i think [17:36] tmpvar: I believe it [17:37] ryah: i wish we had a windows system enginer who was really excited about node [17:37] mape: what are windows devs excited about? [17:37] phiggins: .net [17:38] mjr_: and threads [17:38] technoweenie: node on .net [17:38] ryah: the problem is that we need a real dev [17:38] mjr_: Windows people love threads. [17:38] ryah: porting node is non-trivial [17:38] ryah: ev_async needs to be rewritten in windows-speak [17:39] mjr_: The thing is, the more platforms you support, the slower any forward progress is. [17:39] ryah: (ev_async = self-pipe trick) [17:39] mjr_: It's already hard enough to support the differences between OSX and Linux. [17:39] blowery: windows folks tend to be pretty excited about non-blocking io [17:40] Aria: Yeah. It's THE way that IO should be done on Windows [17:40] Aria: Plays much nicer with the process model [17:40] JimBastard: i know a really crack .net developer [17:40] JimBastard: who does insurance apps for some big company [17:40] blowery: it was the big push in IIS6 or 7 IIRC [17:40] JimBastard: hes kinda a dick though [17:40] siculars has joined the channel [17:41] phiggins: blowery will port node to win [17:41] phiggins: he just told me [17:41] blowery: did not [17:41] JimBastard: dont feed phiggins [17:41] phiggins: lies. I can show you the backlog [17:41] CIA-77: node: 03Orlando Vazquez 07master * r92da636 10/ (5 files in 4 dirs): [17:41] CIA-77: node: Add a parameter to spawn() that sets the child's stdio file descriptors. [17:41] CIA-77: node: After the child is forked, these file descriptors will get dup2()'d to STDIN, [17:41] CIA-77: node: STDIO, and STDERR. [17:41] CIA-77: node: (API may be changed.) - http://bit.ly/awopLn [17:42] mjr_: ryah: an ugly but effective workaround for the self-pipe thing is to use localhost UDP sockets. [17:43] ryah: i'm sure there's a nice windows way to do it [17:43] mjr_: I'm sure there is too. [17:43] xer0x has joined the channel [17:44] grahamalot has joined the channel [17:44] KungFuHamster has joined the channel [17:46] charlesjolley- has joined the channel [17:47] ryah: mjr_: have you read about the libevent2 stuff? [17:47] mjr_: no, what's that all about? [17:48] ryah: apparently windows has a good "i/o demultiplexer" that isn't select() [17:48] ryah: it's just not compatible with unix notitions of how that works [17:48] Aria: Yeah. [17:49] Aria: And it has async IO primitives in general. [17:49] ryah: select, epoll, and stuff tell you when a fd is readable or writable [17:49] ryah: in windows you write - and it tells you when it's done [17:49] ryah: in a single thread [17:49] mjr_: I think they have some system call where you can efficiently block on a set of both the equivalent of fd's as well as some other win-ipc kind of things. [17:49] Aria: yeah. [17:50] ryah: so while you can model window behavior with unix stuff - (which is what node does, acutally) [17:50] ryah: you can't use windows stuff to make a unix interface [17:50] ryah: so everyone uses this crappy select implementation [17:50] ryah: anyway - libevent2 apparently has a "buffer" concept [17:50] mjr_: select was a great idea before the internet got popular. [17:51] Aria: Hm [17:51] ryah: and so they can implement that with these windows things [17:51] ryah: event buffers, i think it's called [17:51] Aria: Yeah. [17:51] ryah: and you can get high performance i/o on windows [17:52] ryah: on unix you also get high perf - the buffers use epoll or whatever [17:52] mjr_: and still write your code using the libevent style API? [17:52] ryah: yeah [17:52] mjr_: neat [17:52] ryah: http://google-opensource.blogspot.com/2010/01/libevent-20x-like-libevent-14x-only.html [17:53] ryah: libev is great for its minimality, and i think we win a lot by writing our buffer system in JS [17:54] mjr_: we win huge from being able to do buffer-y things in JS. [17:54] ryah: but i would appriciate less than absolute hatred forw windows [17:54] ryah: from the author [17:54] mjr_: For example, see lib/net.js [17:54] mindeavor has joined the channel [17:54] ryah: libevent is very concerned about windows compatibility [17:55] Aria: And then there's posix AIO [17:55] ryah: posix aio. god. [17:55] ryah: the API that isn't [17:55] Aria: Yeah. [17:55] stepheneb has joined the channel [17:55] ryah: libeio is a really good solution [17:56] ryah: but it needs to be supported on windows [17:56] ryah: there is no reason it shouldn't be [17:56] Aria: Yeah... [17:56] ryah: but it's not compiling out of the box [17:56] Aria: I think it's the posix AIO API that GLib emulates. [17:56] mjr_: IMO you should stick to linux/osx until things get a lot more stableand proven. Let other people supply you with patches for solaris/xBSD, and Windows will come along eventually. [17:57] mjr_: Doing a big cross-platform thing exposes way more unexpected tradeoffs. [17:57] ryah: i fear without a windows port to restrain us, we may get too far away [17:57] ryah: e.g. the last commit [17:57] mjr_: And many of those tradeoffs may not even be relevant as the API shifts around. [17:57] ryah: i have no idea if that's at all possible on windows [17:57] mjr_: or as you learn new things and refactor the internals somehow. [17:59] ryah: there really are not so many platform independent run times [17:59] mjr_: Yeah, V8 is certainly an exception. [17:59] ryah: and on windows everything sits on a huge stack of madness [18:00] mindeavor: solution: someone create a linux node js hosting site :O [18:00] ryah: having portable event loop stuff .. it'd be a big win [18:00] mjr_: Windows, like Java, can actually be used to do good things in a fast, non-insane way. [18:00] mjr_: But that way is so different from the Unix way. [18:01] mjr_: If you make node totally dominate in the linux/osx world, some Windows hotshot will come out and help make this happen. [18:01] Aria: Hehe [18:01] Aria: Maybe. [18:01] mjr_: I'm sure they will. [18:01] ryah: i agree the sweet spot for node right now is websockets on linux [18:02] mjr_: Plus, if you put it right there on the website that you'd like a Windows port but that you need some Windows expertise, the right people will emerge. [18:02] mjr_: I'm pretty sure that node has to mature a bit first though. [18:02] ryah: but i think it's just a stones throw away from a lot more [18:02] tilgovi has joined the channel [18:03] mjr_: Focus your energy, young Skywalker. Feel the Force around you. [18:03] sveimac has joined the channel [18:03] ryah: yeah, putting a big advertisement on the website might help [18:04] harryv has left the channel [18:04] ryah: "WANTED: MinGW port" [18:04] ryah: a google summer of code thing would have really helped [18:05] Nohryb has joined the channel [18:06] sanderjd has joined the channel [18:06] TommyM has joined the channel [18:10] ezmobius has joined the channel [18:20] mape: Hmm what did twitter think about when they decided to serve fail whale "Twitter is over capacity" when using their JSON-api.. [18:20] hellp has joined the channel [18:21] blowery: heh [18:21] mape: In html that is [18:21] blowery: is it at least an HTTP 500? [18:22] mape: I assume so, the oath module I use doesn't seem to expose that though [18:23] maushu has joined the channel [18:24] blowery: ah [18:24] blowery: suck [18:28] rnewson has joined the channel [18:28] rnewson has joined the channel [18:29] aconbere has joined the channel [18:30] aconbere: so the other day I ported assert.js to cross-browser js [18:30] aconbere: I'd like to gauge... people's willingness to accept these kinds of patches into node's lib [18:31] aconbere: I think there's a pretty large group of us (possibly growing) that are sharing code between the server and the client [18:31] aconbere: and find that's one of the big wins for Node in particular [18:31] aconbere: but being able to seemlessly switch between these environments requires having libraries that we can reuse [18:32] aconbere: in particular I guess the question is about to what level a perfomance hit is acceptable. :) [18:33] derbumi has joined the channel [18:34] atmos: mape: that's always fun to get [18:35] mde|afk: Yeah, having tests that run both server- and browser-side is really important. [18:35] mde: Sharing code back and forth is a really big nicety, and it will suck not having a common way to run tests. [18:38] javajunky has joined the channel [18:39] mostlygeek has joined the channel [18:46] steadicat has joined the channel [18:48] cloudhead has joined the channel [18:53] technoweenie has joined the channel [18:54] paul_irish_ has joined the channel [18:56] BBBB: getting this error with mongoose: "TypeError: Cannot set property generationTime of undefined which has only a getter" when calling .new({}) [18:56] BBBB: any suggestions? [18:58] javajunky has joined the channel [18:59] rictic has joined the channel [19:00] rolfb: where does npm install to when you do make install from a git clone of the source? [19:00] intacto has joined the channel [19:01] saikat has joined the channel [19:02] rolfb: doesn't seem to become available in my any of my PATHs [19:02] kevwil has joined the channel [19:27] tmpvar has joined the channel [19:29] b_erb has joined the channel [19:32] javajunky has joined the channel [19:35] mjijackson has joined the channel [19:46] inimino has joined the channel [19:47] TobiasFar has joined the channel [19:51] kodisha has joined the channel [19:53] smtlaissezfaire has joined the channel [19:59] BBBB has joined the channel [20:01] morganallen has joined the channel [20:03] sanderjd has left the channel [20:07] bmizerany has joined the channel [20:10] schuyler1d has joined the channel [20:10] stepheneb has joined the channel [20:12] admc has joined the channel [20:13] rictic has joined the channel [20:16] xla has joined the channel [20:20] xla has joined the channel [20:20] technoweenie has joined the channel [20:23] ezmobius has joined the channel [20:24] mattly has joined the channel [20:25] schuyler1d: any geddy folks in the house? It's not clear how I create the schema/db, any pointers? [20:25] stagas has joined the channel [20:27] SteveDekorte has joined the channel [20:28] skampler: ryah: self-pipe trick = fork() and sync read, write files? [20:31] tilgovi: rnewson: so that buffer stuff is blazing fast? [20:32] charlesjolley- has joined the channel [20:35] smtlaissezfaire has joined the channel [20:35] softdrink1 has joined the channel [20:36] kodisha has joined the channel [20:38] rnewson: tilgovi: slicker than dog snot. [20:38] tilgovi: delicious [20:38] rnewson: ... I couldn't vouch for that. [20:39] tilgovi: oh. oh I can. [20:39] rnewson: the real improvement is throttling but buffers avoid the pukiness of gc'ing strings. [20:41] SteveDekorte: anyone here using node on linux willing to help me do a speed test (to compare to OSX)? [20:43] mape: sure [20:44] ryah: skampler: http://cr.yp.to/docs/selfpipe.html [20:44] SteveDekorte: mape: thanks, can you clone this repo and then run the "runtests.sh" script? [20:45] mape: this what? [20:45] SteveDekorte: mape: http://github.com/stevedekorte/vertex.js [20:45] SteveDekorte: mape: and paste the speed test results somewhere? (or email to me at steve@dekorte.com) [20:45] SteveDekorte: you'll need tokyocabinet installed [20:46] kodisha_ has joined the channel [20:46] mape: Error: /home/mape/tmp/vertex.js/lib/Vertex/lib/TokyoCabinet/tokyocabinet.node: invalid ELF header [20:46] mape: ah k [20:47] mape: hmm Build failed: -> task failed (err #1): {task: cxx tokyocabinet.cc -> tokyocabinet_1.o} [20:48] SteveDekorte: mape: is that the build for tokyocabinet or the node.js binding to tokyocabinet? [20:48] mape: node-waf configure build on tokyocabinet [20:49] mape: the node module [20:49] mape: oh you mean I have to get tokyocabinet installed as well? [20:49] SteveDekorte: right [20:51] mape: Hmm sorry don't have the time to get all that working right now, apt-get is failing [20:52] SteveDekorte: mape: np, thanks for trying :) [20:54] ryah: uptime: 10 daysmemory: 4.8mb RSS [20:54] ryah: ^--node chat [20:54] rolfb: where does npm install to when you do make install from a git clone of the source? doesn't seem to go in my PATHs [20:54] ryah: nice little daemon [20:54] ryah: rolfb: ~/.npm? [20:55] ryah: somehow node chat after a while uses very little memory [20:55] ryah: it starts at like 8mb [20:55] ryah: but then works its way down to like 3.9 [20:56] ryah: i dont understand:/ [20:56] kodisha has joined the channel [20:57] airportyh has joined the channel [20:57] mjr_: ryah: my proxy has been up for 17 days and is at 10MB doing roughly 3 req/sec. [20:57] rolfb: ~/.node_libraries in fact [20:57] mjr_: I've never seen it go lower than 10MB for whatever reason. [20:58] rolfb: ryah: but what is considered the binary? [20:58] dphiffer has joined the channel [20:58] rolfb: or executable rather [21:00] ryah: does $LD_LIBRARY_PATH not work on osx? [21:01] rolfb: ryah: it is empty here [21:01] Aria has joined the channel [21:01] davidsklar: ryah: I think you might need to use DYLD_LIBRARY_PATH [21:01] Aria: leo [21:01] aconbere has joined the channel [21:02] ryah: davidsklar: thanks [21:02] davidsklar: i lost an hour or two of my life over that a few weeks ago :) [21:04] admc has joined the channel [21:05] CIA-77: node: 03Ryan Dahl 07master * ref9f404 10/ (Makefile wscript): [21:05] CIA-77: node: Better 'make' output [21:05] CIA-77: node: Removes 'make all-debug' since it is unnecessary now. - http://bit.ly/9QFFa9 [21:10] aho has joined the channel [21:11] fictorial: Anyone using OpenID from Node.js? [21:18] herbySk has joined the channel [21:20] paul_irish has joined the channel [21:20] dks has joined the channel [21:23] mape: hmm tidy html doesnt handle the bing search page.. [21:23] kriszyp has joined the channel [21:23] botanicus has joined the channel [21:27] phiggins has joined the channel [21:29] mattly has joined the channel [21:30] stagas has joined the channel [21:31] admc has joined the channel [21:38] Nohryb_ has joined the channel [21:38] Aria has joined the channel [21:39] mape: Error: Error spawning [21:39] mape: pipe(): Too many open files [21:39] mape: what to do about it? [21:39] mjr_: order more files? [21:40] mape: Aren't they expensive? [21:40] mjr_: yeah, hmm. [21:40] mape: And the shipping is awful [21:40] mjr_: yeah, nm. [21:40] mape: Guess I could give some files away [21:40] mape: You want any? [21:41] mjr_: I wish there was a good way to ask node about all fd's it knows about. [21:41] mjr_: and what they are associated with. [21:41] mjr_: Have you already upped your ulimit on files to a giant number? [21:42] mape: I have never met ulimit so I can't say I have [21:42] johanhil: then that's your problem :) [21:42] johanhil: please tell him i said hi next time you see him [21:42] mape: mape@dunderklumpen:/var/www/epk$ ulimit [21:42] mape: unlimited [21:42] mape: He seems pretty open? [21:42] ashb: man ulimit [21:42] mjr_: ulimit -n [21:42] mjr_: or ulimit -a will list 'em all. [21:43] mape: Ah, yeah that was 1024 [21:43] mjr_: But ulimit -n is what you want. [21:43] johanhil: what a cute hostname btw ;) [21:43] mjr_: 1024 was a reasonable number back when select was a reasonable system call. [21:43] mape: So what can a quadcore 4GB ram with shitty discs handle on ulimit without going bonkers? [21:43] mjr_: all of them [21:43] mape: johanhil: hehe think it will be lost on most people ;) [21:43] mjr_: 64KB [21:44] mape: all?! [21:44] mjr_: er, 64K [21:44] mjr_: hellz yes [21:44] mjr_: with a z [21:44] mape: Thats wonkerz [21:44] mjr_: An exciting thing that may happen is you might run out of memory [21:45] mjr_: or CPU or ephemeral ports or something else you didn't think you could run out of. [21:45] mape: I always do that when I've had a couple of beers anyway [21:45] mape: no biggy [21:46] mape: So I guess that isn't something I can easily swap and alter? [21:46] pgriess: mjr_: lsof will tell you all the open files that a process owns [21:46] mjr_: yeah, you are generally looking at a restart to change the ulimit [21:46] mape: Well that is no fun [21:47] mjr_: pgriess: yeah, that's certainly better than nothing. But I want node to tell me what it thinks so I can check from within my program. [21:47] mjr_: And use that to decide whether I'll accept more incoming work. [21:47] mape: Hmm I guess I should move from curl/tidy to the node http clinet [21:49] Ori_P has joined the channel [21:50] mjr_: On linux just listing /pro/pid/fd is pretty illuminating [21:50] sh1mmer has joined the channel [21:51] pgriess: there is code in lib/net.js to try to recover from EMFILE; we could build an API to expose that as an event to allow throttling of incoming work [21:52] mjr_: pgriess: I want to stop before I totally run out though, because on some incoming connections, I might need to make multiple outgoing connections. [21:53] mjr_: I'm just keeping track of this explicitly right now, but sometimes the number I have doesn't agree with what lsof says. [21:54] sechrist has joined the channel [21:55] pgriess: mjr_ once you receive the emfile signal, you can queue all incoming work until enough resources have freed up [21:56] pgriess: though tracking "enough" is currently manual (sucks) [21:57] airportyh has joined the channel [21:57] mjr_: For sure. I'm not stuck on this right now. The issue is that it's really hard to figure out where the extra fds are hiding. [21:57] mjr_: My count says there should be more than are actually available, and I can't figure out why. [21:57] inimino: another one asking for state machines on the mailing list [21:57] inimino: is this a Ruby thing? [21:58] inimino: the idea that you'd write a library or class to do state machines is kind of foreign to me, I just don't understand it [21:59] mjr_: inimino: I think this issue comes up with people that don't get evented programming. [21:59] mjr_: Like, it just never clicked. [21:59] inimino: hm, maybe [22:00] mjr_: So they try to invent all sorts of other abstractions to move closer to a single execution flow. [22:00] stepheneb has joined the channel [22:01] inimino: I suppose [22:01] steadicat has joined the channel [22:01] technoweenie: thats common for language refugees. you start copying libs in whatever you came from [22:01] technoweenie: faker.pl => faker.rb => faker.js [22:01] henrik_ has joined the channel [22:02] technoweenie: thats why ntest was my first node project [22:02] tjholowaychuk: and thats why i did a restful sinatra thing :D [22:02] inimino: hehe [22:03] technoweenie: and thats why i didnt like said restful sinatra thing :) [22:03] technoweenie: or said test thing [22:03] tjholowaychuk: jspec was my first "major" js lib ever actually [22:03] tjholowaychuk: pretty popular for a first project, although i accidently close-sourced it on github and lost all 900-ish followers hahahah... [22:03] technoweenie: doh [22:04] inimino: ACTION gets back to configuring Exim [22:04] technoweenie: we should probably put a warning on that like the publicize button [22:05] tjholowaychuk: i was just checking out the new admin interface a while back, and honestly never clicked the damn button (obviously did some how) and bam [22:05] tjholowaychuk: all gone [22:05] gwoo: tjholowaychuk: did you see the peecode blog today? [22:05] tjholowaychuk: gwoo: nope howcome? [22:05] gwoo: he was talking about rails 3 and sinatra [22:05] technoweenie: rails routing proposal [22:05] gwoo: yeah [22:05] technoweenie: well nothing concrete was propsed [22:05] gwoo: and i thought some of it could apply to express [22:05] technoweenie: proposed [22:06] gwoo: coupling controller more with rest [22:06] tjholowaychuk: hmm [22:06] tjholowaychuk: im not a big fan of rails [22:06] tjholowaychuk: but might check it out [22:06] technoweenie: probably no point [22:06] CIA-77: node: 03Ryan Dahl 07master * r945141c 10/ test/simple/test-http-head-response-has-no-body.js : Server responses should have a body if HEAD request - http://bit.ly/akjmqj [22:06] technoweenie: i dont want to define my actions with get :member do or some bullshit [22:07] aconbere: hehe [22:07] technoweenie: david has a great rebuttal if you care http://news.ycombinator.com/item?id=1398903 [22:07] aconbere: just stay out of the way of my urls [22:07] ryah: force update. sorry [22:07] CIA-77: node: 03Ryan Dahl 07master * r55a6f01 10/ (2 files in 2 dirs): Server responses should have a body if HEAD request (+599 more commits...) - http://bit.ly/9HeyiG [22:07] mape: but it had nice pictures! [22:07] aconbere: rails makes it so hard to make urls [22:08] tjholowaychuk: rails is just a big ball of cruft IMO [22:08] tjholowaychuk: generators :S mehhh... [22:08] tjholowaychuk: but this is not the place for that conversation lol [22:08] technoweenie: its all about following a convention [22:08] technoweenie: if you have a tiny miniapp with 20 actions, then routing is heavy [22:09] technoweenie: github has like 700 routes [22:09] technoweenie: but hey, thats why there are lots of cool frameworks, anyways [22:09] aconbere: :) [22:09] marktlang has joined the channel [22:10] mape: the goverment should just step in and enforce one framework and get done with it [22:10] technoweenie: node.js would be illegal [22:10] Aria: Do what chris neukirchen did. Write a really good spec people can build on [22:10] technoweenie: unleash the hounds [22:11] mape: Aria: hey, how is the jsdom integration moving? [22:11] Aria: Integrated except for plumbing to innerHTML [22:11] Aria: jsdom is the master branch now. [22:11] Aria: And that plumbing should be easy, I just haven't. [22:11] mape: Oh neat [22:11] Aria: (I've been working on performance, since it turns out that V8 REALLY REALLY sucks at tiny portions of strings. [22:11] derbumi has joined the channel [22:12] Aria: The time to allocate a tiny string is way disproportional. [22:12] mape: perhaps I can move away from using curl piping that into tidy html, hehe [22:12] stagas: ACTION designing db structure in redis is fun [22:12] mrchrisadams_ has joined the channel [22:14] mape: Aria: you should talk to pkrumins and get a small blogpost together that shows how to get a serverside jQuery scraper going. Should be able to generate some traffic/intrest [22:14] Aria: I should! [22:14] Ori_P has joined the channel [22:15] ceej: i like express apart from it doesn't serve static files correctly on heroku, not sure whos fault it is but I know express serves static files just fine on other server [22:16] schuyler1d: express is nice except it polutes the global namespace everywhere [22:16] tjholowaychuk: its the chunked encoding no? [22:16] technoweenie: thats the worst rubyism you could've brought over [22:17] mape: the not working part? [22:17] technoweenie: global namespaces [22:17] tjholowaychuk: its because i started even before commonjs modules were implemented [22:17] technoweenie: ruby doesnt serve static files. let nginx handle that [22:18] tjholowaychuk: just have not had time since there is quite a bit to change in terms of legacy crap [22:18] mape: tjholowaychuk: will the new framework be released now that cre is done with swdc? [22:19] tjholowaychuk: mape: should be right away, the team is just ok-ing things [22:19] tjholowaychuk: im fine with it going open whenever, its not perfect but wont be without community effort anyways [22:19] ceej: it depends how you want to use it but I love express because I've modified it to be layed out just like codeigniter.com which i have to use for work [22:19] technoweenie: it seems odd that heroku wouldnt serve static files on the node.js stack too [22:19] mape: tjholowaychuk: got as nice of a page as express or just github commit going live? [22:19] ceej: technoweenie: check rxvapi.heroku.com [22:20] Aria: I'd love to see Node grow the ability to require things with no shared namespace. [22:20] tjholowaychuk: mape: I have the man page / site generated from markdown [22:20] ceej: look at the style.css file [22:20] ceej: it doesn't load all the way [22:20] mape: tjholowaychuk: kk [22:20] ceej: it's only 2.3 kb [22:20] technoweenie: oh /public in the url is a smell [22:20] technoweenie: go yell at heroku [22:20] technoweenie: start throwing things [22:20] tjholowaychuk: its chunked encodinggggggg [22:20] tjholowaychuk: lol [22:21] ceej: lol, i know i brought it up with the express peeps [22:21] tjholowaychuk: stat`ing on every 404 is smell :p [22:21] ceej: it's the one huge let down [22:21] tjholowaychuk: ceej: i am the express peep :p just have not gotten around to it sorry bud [22:21] ceej: tjholowaychuk: ha I'll set that when I start using it fully [22:22] tjholowaychuk: im not a huge fan of un-matched routes stating to see if the file exists or not, and then serving it, which is why i went with /public/* granted you could change that easily [22:22] ceej: tjholowaychuk: let me know when you do because I want to pound out some apps on it to show my business partner [22:23] technoweenie: ah i thought heroku's nginx setup would do that for you [22:23] ceej: I'll need all it all working to show him my http://codeigniter.com/user_guide/database/active_record.html port too :) [22:23] siculars has joined the channel [22:23] technoweenie: as far as heroku is concerned you could set public cache headers and varnish will do its thing [22:25] ceej: tjholowaychuk: do you have a heroku node.js account ? [22:25] tjholowaychuk: ceej: ya i just have not used it, i think i was the first person (or one of them) with node access on there [22:25] tjholowaychuk: i prefer to just use my servers [22:26] tjholowaychuk: but i might use heroku for my gf's site haha [22:26] ceej: ah k i was going to say I could add you use a collaborator [22:27] ceej: tjholowaychuk: if you need me to test anything just let me know I'm always around [22:27] Ori_P has joined the channel [22:29] tjholowaychuk: ceej: sounds good! all we need to do is get rid of static file streaming since that will be chunked [22:29] tjholowaychuk: plus it seems really slow right now anyway [22:29] ceej: ye it is.... well just let me know :) [22:30] tjholowaychuk: once our new framework is done ill port express to work ontop of it so we can utilize it's static buffer cache [22:31] ceej: tjholowaychuk: is the new framework going to null express? [22:31] tjholowaychuk: ceej: nope, its lower level [22:31] tjholowaychuk: ceej: we are releasing it in a few days (AFAIK) [22:32] SteveDekorte has joined the channel [22:32] SteveDekorte: is anyone working on coroutine support for node.js? [22:32] ceej: ok nice, so express should be all good to go by the weekend (when I'll have time to put up our new company site) [22:34] ceej: tjholowaychuk: do you have a donation page btw? [22:34] kodisha has joined the channel [22:34] tjholowaychuk: ceej: not sure, might be one on the repo using pledgie or whatever it's called [22:34] tjholowaychuk: there is always paypal info@vision-media.ca :) [22:35] mjr_: SteveDekorte: lots of people seem to want coroutines, but they are a philosophically incompatible with node's core. [22:35] aconbere has joined the channel [22:35] ceej: noted that down for tax season :) [22:36] jherdman has joined the channel [22:36] SteveDekorte: mjr_: how so? [22:37] mjr_: SteveDekorte: node is all about a single execution stack. [22:37] mjr_: Of course there's nothing technical prohibiting anybody from implementing them. [22:37] SteveDekorte: mjr_: I thought it was about being a high performance JS server [22:38] SteveDekorte: mjr_: is it more important that it be single stack than it be high performance or easy to program in? [22:38] stepheneb has joined the channel [22:39] mjr_: IMO right now it is more important that it be super high performance and reliable. Then people can build different things on top of it that are easier to program in. [22:39] SteveDekorte: mjr_: right, how are those goals incompatible with coroutines? [22:39] creationix has joined the channel [22:39] derferman has joined the channel [22:40] creationix: I have a question about the node net server [22:40] mjr_: This is really more of a question for ryah, but you can hear him address this issue in his recent Yahoo talk. [22:40] creationix: what's the difference between the stream callback and the "connect" event within in [22:41] SteveDekorte: coroutines would eliminate all this complex callback code [22:41] ryah: creationix: there is only the 'connection' callback [22:41] ryah: s/callback/event/ [22:41] SteveDekorte: and building of complex and unmanagable state machines [22:41] ryah: SteveDekorte: disagree [22:41] creationix: ryah: so the stream function get's called immedietly? [22:41] ryah: SteveDekorte: that's just like, your opinion, man. [22:42] creationix: (I'm looking at the Net.Server example in the API docs) [22:42] mjr_: Man, TBL reference out of nowhere. [22:42] ryah: glad someone got it [22:42] creationix: ACTION doesn't know what TBL is [22:42] ryah: creationix: ? [22:42] skampler: http://i.imgur.com/aVe0q.jpg [22:43] mattly_ has joined the channel [22:43] ryah: creationix: on the docs i only see 'connection' [22:43] WALoeIII has joined the channel [22:43] Aria: http://www.imdb.com/title/tt1400580/ ? [22:43] creationix: ryah: line 2 and 4 http://gist.github.com/423128 [22:43] gf3 has joined the channel [22:43] ryah: oh right [22:43] creationix: I assume you get one stream per connection [22:43] ryah: yeah - that's useless [22:43] ryah: ignore it [22:44] mjr_: createServer sets up a listener for connection, doesn't it? [22:44] mjr_: er, listener for connect. [22:44] ryah: it used to mean something when we had gnutls [22:44] creationix: ryah: but I should wait for the "connect" event till I assume the client is connected then [22:44] creationix: just to be safe? [22:44] ryah: no [22:45] creationix: or just ignore that event alltogether and assume that the callback means there is a connection [22:46] ryah: creationix: http://github.com/ry/node/blob/55a6f0173294b2e89a7f1797704669f8ba0349d8/lib/net.js#L961-970 [22:46] SteveDekorte: I'm guessing the problem is that v8 isn't designed for coros. [22:46] mjr_: SteveDekorte: this coroutine vs single stack debate I think is best had in person over a beer. Node's API is intentionally very low level. [22:46] ryah: SteveDekorte: no, that's not the problem [22:47] creationix: ryah: on, I think I understand, the reason I ask is because I'm about to propose an api for a socket based extension [22:47] ryah: i don't believe coroutines make things easier [22:47] SteveDekorte: mjr_: I don't see how coros are "high level" [22:47] SteveDekorte: ryah: have you used them? [22:47] ryah: i have used them [22:48] ryah: events always drop to the stack before i/o occurs [22:48] SteveDekorte: which language? did you implement a complex communications protocol with them? [22:48] ryah: it's a simple model [22:48] derbumi has joined the channel [22:48] richcollins has joined the channel [22:49] ryah: node used to have coroutines, actually (albiet with a shitty implemntation) [22:50] ryah: coroutines are high-level because they are more than only callbacks [22:50] ryah: and they don't add anything quanitative [22:50] SteveDekorte: ryah: I'm finding doing anything but the simplest of ops very convoluted with the node callback model [22:50] creationix: SteveDekorte: what kind of stuff isn't working? [22:50] SteveDekorte: ryah: code that I could express in a few lines with coroutines results in pages of event based code [22:51] creationix: I wrote a non-trivial app in node, I had to write my own utility library to cope with the callbacks, but it was quite manageable after that [22:51] SteveDekorte: creationix: exactly [22:51] creationix: well, a library is better than coros [22:51] creationix: at least then you control the flow [22:51] SteveDekorte: creationix: you can control the flow either way [22:52] creationix: it's explicit where event boundaries are [22:52] mjr_: Well, node 's API is very low level. That way people can build up different sorts of abstractions however they like. [22:52] ryah: i agree, if you do lots of tasks in serial, callbacks are not so nice to work with [22:52] tjholowaychuk: boomerang +1 [22:52] ryah: mjr_: as long as they remain in one execution stack, yes :) [22:52] SteveDekorte: creationix: it is with coroutines - I'm guessing you're confusing coros with pre-emptive threads [22:52] creationix: well, I'm referring to what node had [22:52] SteveDekorte: creationix: then it doesn't sound like coros [22:53] creationix: basically the event loop works on other stuff while waiting for a "blocking" function to finish [22:53] SteveDekorte: creationix: that's right - as it does now - its' just limited to pushing buffers atm [22:53] mjr_: Who knows what sorts of amazing and horrible layers people will graft onto node's lean, single stack core. As long as the core is fast and solid, who cares? [22:53] airportyh has joined the channel [22:54] SteveDekorte: mjr_: anyone who doesn't want to write pages of code for what should be lines of code cares [22:54] mjr_: I'm trying to agree with you here [22:54] mjr_: Those people should not be writing to node's API. [22:55] ryah: SteveDekorte: think about it - what if we didn't try to abstract away the non-blocking event problem [22:55] ryah: what if we just didn't try to solve that problem [22:55] mjr_: I hope that many different layers, libraries, and frameworks will emerge to make it easier to get work done. [22:55] ryah: the world is filled with programmers who say the same thing you do [22:56] mjr_: SteveDekorte: you should probably write one! [22:56] SteveDekorte: ryah: programmers that even understand coros are very rare indeed [22:56] ryah: and yet the most successful platform of all time, the browser, has an extremely simple single stack model [22:56] SteveDekorte: ryah: most confuse them with pre-emptive threads [22:56] ryah: right and they feel improtant because they know what they are, and so they think they should implement them [22:57] ryah: just because you can doesn't mean you should. [22:57] creationix: SteveDekorte: if node allowed for coros, then every function call you made to an external library could possible be "blocking" and hence state could change between two lines of code just like in a threaded program [22:57] ryah: i don't want to worry about coroutine safety [22:57] ryah: i don't want to worry that any function i call could potentially yield [22:57] ryah: and then allow arbirary events to happen [22:57] ryah: i like the programming model of knowing that nothing will happen until i exit the function [22:58] creationix: right now, you are 100% sure that nothing will run between two lines of code, only at function boundaries can other stuff happen [22:58] ryah: it's faster too [22:58] SteveDekorte: creationix: how could that happen unless the external code callback into the VM? [22:58] ryah: simpler, faster [22:58] ryah: proven, even [22:58] creationix: SteveDekorte: I'm not sure we're talking about the same thing [22:58] SteveDekorte: creationix: do you understand the difference between coros and pre-emptive threads? [22:58] ryah: SteveDekorte: we should definitely drink beers and discuss in length. [22:59] SteveDekorte: ryah: are you in SF? [22:59] ryah: SteveDekorte: i am [22:59] mjr_: me too [22:59] creationix: I would be in the area, but I'm in Sweden this week [22:59] SteveDekorte: ryah: how about Cafe Royale at 8? [23:00] ryah: SteveDekorte: coroutines are the worst of both worlds. not kernel schedulable, still needs locks, still requries expensive context switching. [23:01] ryah: SteveDekorte: sure [23:01] ryan[WIN]: ooo a coding date [23:01] ryah: 800 post st? [23:01] SteveDekorte: ryah: 1) pre-emption (as in kernel threads) is what causes most concurrency problems [23:01] SteveDekorte: ryah: right [23:01] SteveDekorte: ryah: 2) locks on what? where? [23:02] SteveDekorte: ryah: 3) a context switch is just the time to swap registers in user space [23:02] freshtonic has joined the channel [23:02] SteveDekorte: ryah: I'm willing to bet that is less than the overhead of most callbacks [23:03] SteveDekorte: ryah: though in theory, state machines can be more efficient (at the cost of 10x or more code) [23:03] ryah: SteveDekorte: locks on your state - you don't have the atomic variable problems of threads, but your state can still be modified, basically at any function call [23:04] ryah: SteveDekorte: okay - i grant you #3 [23:04] charlesjolley-_ has joined the channel [23:04] ceej: anyone looking for a IT/infrastructure project management position? [23:04] ceej: at stamps.com [23:05] SteveDekorte: ryah: coros are cooperative, so you never have unexpected variable access (at least no more than you do with passing around closures in a single thread) [23:06] steadicat_ has joined the channel [23:06] SteveDekorte: ryah: anyways, we can discuss more at 8 :) [23:07] ryan[WIN]: just make all your code immutable [23:07] ryan[WIN]: problem solved [23:07] towski has joined the channel [23:07] mjr_: I'm going to make myself immutable. [23:07] SteveDekorte: ryah: heh, until you spend all your cycles copying memory :) [23:07] ryan[WIN]: ACTION sets himself to func( mjr_ + modifications) [23:08] ryah: SteveDekorte: ? [23:08] ryan[WIN]: NOW I AM AN IMMUTABLE MUTED YOU [23:09] SteveDekorte: ryah: I have 1GB buffer and modify a byte, now I have two 1GB buffers if the first is immutable... [23:09] ryah: oh other ryan [23:09] SteveDekorte: doh [23:09] ryan[WIN]: yes but now you can get rid of the other :D [23:09] SteveDekorte: ryan[WIN]: not if you have a ref to it [23:09] ryan[WIN]: or if you're smart (like ocaml does) [23:10] ryan[WIN]: you can end up translating it into a modification of a 1GB buffer [23:11] SteveDekorte: ryan[WIN]: I'd like to see a GPU driver written that way [23:11] ryan[WIN]: GPUs already use a ton of hax [23:12] ryan[WIN]: like limiting shader programs to a specific number of cycles [23:12] ryan[WIN]: halting problem? WHO CARES LETS JUST CANCEL COMPUTATION [23:13] creationix: yeah, ocaml rocks [23:13] MattJ: SteveDekorte: Jumped ship to Javascript? ;) [23:14] softdrink has joined the channel [23:14] SteveDekorte: MattJ: I've done a lot of JS in the past - using it now for the vertex.js project [23:14] softdrink: ACTION sets Flash on fire [23:15] micheil: ryah: did you see that stuff on node>0.1.96 not compiling on mac os x 10.6? [23:15] MattJ: SteveDekorte: I'd be interested in the performance vs vertex.lua [23:16] SteveDekorte: MattJ: IIRC, it's about the same [23:17] SteveDekorte: though I wasn't using Lua JIT [23:17] ryan[WIN]: SteveDekorte, i'm making a vm in js :P [23:17] ryan[WIN]: http://www.diod.es/ryanwin/test.html [23:17] MattJ: ryan[WIN]: aren't we all :) [23:17] SteveDekorte: ryan[WIN]: neat - I've been meaning to do a port of Io to JS [23:17] micheil: y'know what would be awesome? some fake fs stuff [23:17] micheil: and fake web [23:18] mjr_: oh oh, and some web frameworks. Is anybody working on those? [23:18] MattJ: ACTION is working on a Lua VM in Javascript [23:18] MattJ: Just because [23:18] micheil: mjr_: there's already some web frameworks: fab, express, something else, node-router [23:18] micheil: mjr_: check the wiki page for modules [23:19] mjr_: sarcasm detector failure [23:19] SteveDekorte: MattJ: neat - JS and Lua are very similar [23:19] Aria has joined the channel [23:19] micheil: mjr_: very. [23:19] ryan[WIN]: lua is like a poor man's js [23:19] MattJ: SteveDekorte: Indeed - one of my first attempts at a bridge was a source-to-source translator, but that's some work for little benefit, and I find this project more interesting at the moment :) [23:19] SteveDekorte: ryan[WIN]: I think you got it backwards :) [23:19] MattJ: ryan[WIN] definitely got it backwards :) [23:20] ryan[WIN]: nay, i don't like lua ;) [23:20] SteveDekorte: The major difference is Lua's metatables (or hooks or whatever they call them now) [23:20] MattJ: But Javascript is probably the second language I'd use if given the choice, it's not bad minus some hairy parts [23:20] pjb3 has joined the channel [23:21] SteveDekorte: MattJ: yup, JS is like a moth-eaten version of Smalltalk with some of the critical dynamic bits removed [23:22] ryan[WIN]: yah but the cool thing about JS is that you can get people from various backgrounds working on the same code [23:22] SteveDekorte: MattJ: but it runs in browsers, and it's dynamic enough for a lot of good stuff, and that's all that matters in the end [23:22] ryan[WIN]: it's not scary to C folks and not scary to a python/lispy type [23:22] mattly has joined the channel [23:22] creationix: and, like it or not, it's the only thing in the browser [23:22] creationix: and browser code is big these days [23:22] SteveDekorte: creationix: except java and flash and silverlight :) [23:23] creationix: none of which run on mobile apple stuff [23:23] creationix: and are all considered bad by a lot of coders [23:23] SteveDekorte: creationix: not saying I like them :) [23:23] creationix: I understand [23:24] creationix: I mean, even the java frameworks don't use java in the browser, they generate js [23:24] mjijackson has joined the channel [23:24] creationix: that's got to say something [23:24] SteveDekorte: creationix: yes, java in the browser was a near complete failure [23:24] SteveDekorte: creationix: hopefully node.js will wipe it from the server side as well :) [23:25] creationix: possibly, I think it will hit ruby first [23:25] creationix: lots of ruby devs like new hot projects [23:25] creationix: and node is certainly that [23:25] creationix: plus is just works so much better at scaling [23:26] creationix: ACTION was one of those add ruby devs [23:26] SubStack: java isn't going anywhere [23:26] SteveDekorte: Ruby is just Rails, make a better Rails for JS and there's no point to Ruby anymore [23:26] SubStack: oh gods, rails [23:26] SubStack: don't duplicate rails [23:26] creationix: I actually didn't ever to rails though [23:26] SubStack: duplicate something like sinatra [23:26] creationix: I used raw rack and sometimes sinatra [23:26] SubStack: (which has already been done) [23:26] SubStack: just develop some nice ORM tools and great documentation [23:27] creationix: SubStack: the only thing wrong with rails was the lack of modularity [23:27] creationix: the full-stack idea is great, it just needs to be more flexible [23:27] micheil: SteveDekorte: I disagree, I use ruby all the time to do stuff; and it's used in places where the rails don't reach [23:27] SubStack: generated code (shudder) [23:27] SteveDekorte: micheil: I mean from the perspective of popularity [23:27] SubStack: modularity is the most important thing that software should be [23:27] SubStack: s/be/have/ [23:28] micheil: SteveDekorte: I don't know about that.. I've been being contracted in to work on ruby gems that don't really have much to do with rails [23:28] micheil: it's like saying that JavaScript is just jQuery [23:28] creationix: I once had a full-time ruby job that had 0% rails, but those aren't the norm [23:28] SteveDekorte: micheil: yes, and did you get those contracts before rails catapulted ruby to the (somewhate) mainstream? [23:29] micheil: I didn't learn ruby before hand [23:29] creationix: mine were much later, one was late last year [23:29] micheil: although, there are projects I know of that were about before that. like the cd ripping tool [23:29] SubStack: ruby is pretty neat, but rails is terrible [23:29] micheil: rails3 is pretty good. [23:29] SteveDekorte: Ruby without Rails would be like Objective-C without OSX/iPhone [23:30] micheil: I wouldn't use anything less then the latest version [23:30] gf3: Who cares? [23:30] micheil: gf3: good point. [23:30] micheil: SteveDekorte: what you're doing can be done with any language [23:30] creationix: well, my point was that the ruby mindshare is the most likely source of new node converts [23:31] creationix: especially since node works so goos along-side rails [23:31] micheil: SteveDekorte: php is nothing with apache, python without django, javascript without web2.0 & jquery, etc. list goes on. [23:31] micheil: creationix: yeah, I agree on that. [23:31] pgriess has left the channel [23:31] kriszyp has joined the channel [23:32] micheil: anyway. I'm off, bye chaps' [23:32] creationix: micheil: bye [23:33] technoweenie: yea, old rails sucks in light of all the great stuff in ruby that came out after it. and then they merged teams w/ the biggest competitor and are finishing a big rewrite. its pretty amazing [23:33] jasonw222 has joined the channel [23:34] technoweenie: but by all means, mock the rubyists ways because they dont know every little bit about javascript [23:34] mitkok has joined the channel [23:34] micheil: technoweenie: you played with rails3 yet? [23:35] technoweenie: yea, huge improvement. [23:35] mde: No shit, Rails was great compared to writing all that stuff yourself. [23:35] micheil: the only thing I'm missing is devise not having mongomapper support any more. [23:35] creationix: technoweenie: who was mocking rails? [23:35] mde: And I'm way more JavaScripty than Rubyish. [23:35] micheil: I actually went js -> ruby [23:36] micheil: using each where appropriate [23:36] mde: Merb was a really nice improvement in a lot of ways. [23:36] technoweenie: creationix: SubStack most recently [23:36] mde: But I'd much prefer to be doing it all in JS. [23:36] technoweenie: theres a lot of ruby hate in here, its amusing [23:36] micheil: technoweenie: true, which isn't good. [23:36] technoweenie: omg state machines, why would you need that? he must be a rubyist [23:36] technoweenie: rubyist => redneck [23:36] micheil: anyway, off. [23:37] jasonw22 has left the channel [23:37] technoweenie: if you're the kind of guy that needs a lib for implementing a state machine, you just might be a rubyist [23:37] creationix: I personally never liked rails because I like flexibility (and never had a chance to play with rails 3), but I respect all the apps that get made thanks to rails [23:37] creationix: in the end, what's software if nobody writes real apps with real value [23:38] mde: creationix: Rails3 is supposed to be taking all the modularity ideas from Merb. [23:38] creationix: that's what node really needs, some real apps [23:38] creationix: mde, I know, it looks quite promising [23:38] mde: It's hard to make pieces play nicely together, but it obviously can be done. [23:38] MattJ: creationix: Up until now they've all been pretend apps? :) [23:38] technoweenie: creationix: agreed: need more real apps on node [23:38] creationix: s/some real apps/some more real apps/ [23:39] creationix: sorry, typo [23:39] MattJ: Heh [23:39] creationix: howtonode is a real app [23:39] creationix: it took me 200+ hours [23:39] creationix: and gets thousands of visotors [23:39] creationix: not a lot, but it's something [23:39] creationix: plurk is a real app [23:39] mde: creationix: You're out of the country right now? [23:39] creationix: seedjs usesnode [23:39] creationix: mde, I'm in sweden [23:39] creationix: but I should call you soemtime [23:39] mde: I keep meaning to call you. :) [23:40] mde: Haha [23:40] sechrist: is there any solution to profile node code? [23:40] mde: I'll take care of getting the TOC and stuff uploaded. But we should talk before any launch meeting. [23:40] mde: Can you ping me when you get back? [23:41] creationix: sure [23:41] mde: Cool, we can get our story straight then. [23:41] creationix: yeah, I sent you my phone # in a direct message [23:42] mde: Yes, I've got it -- just gimme a shout when you get back and we can put our heads together. [23:43] creationix: you can call in the next hour or too, I'm just finishing my slides for tomorrow [23:43] creationix: "too"? I'm so jetlagged [23:43] mde: Heheh [23:45] mde: When do you get back? [23:45] creationix: After txjs on saturday [23:45] creationix: I think Sunday night [23:45] creationix: I will never again sign up for back to back conferences across the world [23:46] mde: No kidding. You and Mikeal are both going to be exhausted. [23:46] creationix: and Tom from yahoo is here [23:46] creationix: he's speaking at txjs too [23:46] mde: Man, I shold have gone to TXJS. :) [23:46] smtlaissezfaire has joined the channel [23:47] scoates has left the channel [23:47] creationix: yeah, txjs will rock if I'm awake to enjoy it [23:47] mde: I could have swung down to visit the family in Houston. [23:47] mde: But just starting this new gig, wasn't really feasible. [23:47] mde: Hopefully next yera. [23:48] mde: How about we talk when you get back? Or we could just do it async-callback style via e-mail. [23:48] mattly has joined the channel [23:49] creationix: yeah, that's probably a good idea, I should sleep at least a couple hours tonight [23:49] sechrist: TXJS? [23:49] sechrist: where is that? [23:49] mde: In Austin. [23:49] creationix: sechrist: http://texasjavascript.com/ [23:49] sechrist: neat [23:49] mjr_: It's the opposite of RXJS. [23:49] sechrist: << houston currently [23:49] mde: Yeah, I really should have gone to that, damn. [23:49] mde: Oh, seriously? [23:50] creationix: oh dang, I'm competing with Peter Higgins [23:50] mde: I was born and raised there. Just moved to SF from there. [23:50] mde: Yikes. [23:51] sechrist: I'm from houston [23:51] sechrist: about to move out to SF [23:51] sechrist: heh [23:52] sechrist: so yeah, profiling node code [23:52] sechrist: is this possible [23:52] mjr_: sechrist: V8 has a profiler that is pretty nice. [23:52] mde: I lived down in Santa Fe since I was a kid, then in Pearland. [23:52] sechrist: like a summary of the most called functions relative to how long they execute [23:52] mde: Small, JavaScripty world. [23:52] sechrist: houston's a large area [23:53] mjr_: sechrist: but getting the reader for the profiler output file took a little bit of fiddling for me. [23:54] sechrist: node --v8-options="--prof" [23:54] sechrist: yeah I don't get that [23:54] mjr_: node --prof --logfile=%t.log ./test.js [23:54] sechrist: oh LOL [23:54] mjr_: not obvious [23:54] mjr_: Needs better documentation [23:55] sechrist: well it's a v8 thing [23:55] sechrist: I didn't know it directly proxied to node's argv [23:55] mjr_: Then you need the tick reader [23:55] sechrist: tick reader eh? [23:55] mjr_: Which needs d8, which I had to fiddle around with to build. [23:55] mjr_: Maybe it'll just work for you. [23:56] mde: sechrist: Yeah, Houston's big, but the number of people working with really new tech is vanishingly small. [23:56] sechrist: they're all in austin [23:56] mde: Which is yet another reason to make a move. [23:56] mde: Exactly, yeah. [23:56] sechrist: << sf baby [23:56] [[zz]] has joined the channel [23:56] mjr_: sechrist: deps/v8/tools/linux-tick-processor [23:58] sechrist: it's trying to build it [23:58] sechrist: and it's failing miserably [23:58] sechrist: i need stubs I gues