[00:05] JimBastard: hey spot__ [00:05] Blackguard has joined the channel [00:05] JimBastard: that should be on github! [00:06] kodisha has left the channel [00:06] spot__: JimBastard: I agree [00:06] kodisha has joined the channel [00:06] JimBastard: ill leave him a comment on his blog [00:07] DarthShrine has joined the channel [00:07] mtodd has joined the channel [00:08] admc_ has joined the channel [00:08] admc has joined the channel [00:10] mscdex: ryah: my mistake, it seems the ReleaseStore exists for freebsd in v8, but not openbsd for some reason. i had to apply your patch from a month ago or so to get it to compile [00:12] texodus has joined the channel [00:13] itodd has joined the channel [00:13] shimondoodkin: maybe somebody knows how to catch circular references? [00:14] _announcer: Twitter: "playing w/ "Multiuser Sketchpad" http://bit.ly/dsMwjy #websocket #nodejs #harmony" -- Régis Gaidot. http://twitter.com/rgaidot/status/17992367662 [00:14] paul__ has joined the channel [00:16] aubergine has joined the channel [00:17] JimBastard: shimondoodkin: are you trying to sys.puts ? [00:17] JimBastard: you gotta inspect [00:17] confoocious has joined the channel [00:17] confoocious has joined the channel [00:17] shimondoodkin: i am getting:RangeError: Maximum call stack size exceeded [00:17] JimBastard: unless i misunderstand [00:17] maushu: shimondoodkin, try to JSON.stringify it if it throws a error then there is a circular reference. [00:18] confoocious has joined the channel [00:18] maushu: :3 [00:18] confoocious has joined the channel [00:18] shimondoodkin: ido clone object with recursion [00:18] confoocious has joined the channel [00:20] shimondoodkin: http://gist.github.com/467478 [00:21] shimondoodkin: ive got an idea like marking object ive already walked thru and then unmarking them, but this isnt neat [00:22] stagas has joined the channel [00:22] mitkok has joined the channel [00:24] shimondoodkin: is in array matches references? [00:26] shimondoodkin: s/ in array/indexOf/ [00:27] aheckmann has joined the channel [00:29] shimondoodkin: yes it is, tested [00:30] rictic has joined the channel [00:34] davidwalsh has joined the channel [00:35] hpoydar has joined the channel [00:35] hpoydar has joined the channel [00:40] _announcer: Twitter: "next on the todo list is convert all php code to server-side javascript using node.js, next the episode listings, then client-side rewrite" -- Luís Nabais. http://twitter.com/d3x7r0/status/17993975140 [00:42] JimBastard: !tweet @d3x7r0 WIN! [00:43] streblo_ has joined the channel [00:43] Validatorian has joined the channel [00:44] benalman has joined the channel [00:45] athenot has joined the channel [00:48] malkomalko has joined the channel [00:52] tav has joined the channel [00:55] matt_c has joined the channel [00:59] mklappstuhl has joined the channel [01:00] qbit_: sweet [01:01] qbit_: thanks :) [01:06] SubStack: wow, somebody added a package.json to my module! [01:06] SubStack: was meaning to get around to doing that [01:06] polotek: SubStack: now you should register it with npm [01:08] Tim_Smart has joined the channel [01:10] JimBastard: aye [01:11] SubStack: ACTION updates node first [01:12] _announcer: Twitter: "cloudkick The cast was made a github account repository. I look like a monitoring agent, node.js worrisome is written in. http://bit.ly/akqN6L" [ja] -- junya ogura. http://twitter.com/junya/status/17995847880 [01:12] tmpvar has joined the channel [01:15] JimBastard: AHAHAHA [01:16] JimBastard: Twitter: "cloudkick The cast was made a github account repository. I look like a monitoring agent, node.js worrisome is written in. http://bit.ly/akqN6L" [ja] -- junya ogura. http://twitter.com/junya/status/17995847880 [01:16] _announcer: Twitter: "Hmm, Node.JS islooking awesome. Perhaps a good candidate for a future droply port?" -- Matthew Seeley. http://twitter.com/maxsilver/status/17996133420 [01:17] JimBastard: !tweet @maxsilver do it! [01:20] JimBastard: http://github.com/cloudkick/cast ? [01:20] JimBastard: might look awesome? [01:20] maushu has joined the channel [01:20] malkomalko: wtf is it [01:20] shimondoodkin: somebody today looked for a command line spinner ,here is one http://github.com/cloudkick/cast/tree/master/lib/util/ just found [01:21] _announcer: Twitter: "@miksago Not yet. It's a mash up of github #nodejs code, your #websocket code & a tiny bit of @rem twitterlib & my own stuff in browser" -- hartley. http://twitter.com/hartley/status/17996408935 [01:22] grantmichaels has joined the channel [01:22] JimBastard: malkomalko: i think it monitors multiple http servers [01:22] JimBastard: gets info about them [01:22] JimBastard: see what services are up? [01:22] JimBastard: maybe [01:23] technoweenie: isnt that what cloudkick does? [01:23] technoweenie: they open sourced their core service? [01:23] JimBastard: technoweenie: to my understanding their core service is UI >.< [01:23] shimondoodkin: this used to duplicate servers on the flay [01:23] malkomalko: ooo of course [01:23] technoweenie: true [01:23] shimondoodkin: s/flay/fly/ [01:23] JimBastard: this is a good day for nodejitsu [01:24] JimBastard: :-) [01:24] indexzero has joined the channel [01:24] sveimac has joined the channel [01:24] JimBastard: sup indexzero [01:24] indexzero: Try the javascript party at your house I hear it's great [01:24] JimBastard: :-( [01:25] indexzero: where the cloudkick dudes at? [01:25] indexzero: cast looks cool [01:25] JimBastard: pquerna [01:25] indexzero: ACTION wants capistrano and monit in javascript [01:25] JimBastard: i think [01:25] JimBastard: npm will do cap soon [01:25] indexzero: w000 [01:25] JimBastard: we are on it! [01:25] satori has joined the channel [01:27] saikat` has joined the channel [01:31] technoweenie: i cant imagine an async cap would be fun to write scripts for [01:32] DozyPieman has joined the channel [01:32] pquerna: indexzero: hi [01:33] JimBastard: hey pquerna [01:33] mtodd has joined the channel [01:33] _announcer: Twitter: "every time i log my IRC client in, the only activity is in #node.js .. it's *WHEN I'M ABLE TO BE ON IRC* dependent, I realize, but still .." -- grantmichaels. http://twitter.com/grantmichaels/status/17997175284 [01:33] JimBastard: indexzero is here [01:33] saikat_ has joined the channel [01:33] pquerna: indexzero: yes, cast is something btween capistrano, monit and something more like puppet or chef. [01:33] indexzero: pquerna: yeah? interesting [01:34] indexzero: have you talked to isaacs about npm? [01:34] pquerna: indexzero: it doesn't do much yet, so don't want to set false expectations, but heopfully will have some demo-able stuff soon. [01:34] pquerna: in reference to this project, no. [01:34] indexzero: he's been talking about doing some cap like stuff with npm [01:34] JimBastard: it might make sense to have that be a separate system and have npm call an API method [01:35] indexzero: yeah, it would be really nice to have some kind of open standard for deploying node apps [01:35] JimBastard: we are working on doing deploys straight from the node package manager [01:35] indexzero: kind of how the package.json; although that's a looser standard [01:36] pquerna: indexzero: we aren't actually focused on node apps, we want ti to work for a much wider range, though node apps should work in the system :) [01:36] steadicat has joined the channel [01:37] mklappstuhl has joined the channel [01:37] stepheneb has joined the channel [01:38] pquerna: will see where it goes, still.. young :) [01:39] bmizerany has joined the channel [01:39] TommyM has joined the channel [01:40] SubStack: gah recompiling node lost my readline settings [01:40] SubStack: with rlwrap [01:43] mikeal has joined the channel [01:44] SubStack: found it, NODE_NO_READLINE [01:46] pquerna: indexzero: are you from around the bay area? [01:47] indexzero: pquerna: nah, NYC born and bred [01:47] indexzero: got some friends out there [01:47] indexzero: grinding it out for the NYC startup scene right now [01:48] shimondoodkin: i have modgodb error, i dont know what to do yet: throw new Error('removeListener only takes instances of Function'); [01:52] JimBastard: pquerna: indexzero is my partner in crime for http://nodejitsu.com [01:52] Aria has joined the channel [01:53] indexzero: yeah yeah, NYC Nodejitsu Ninja ftw node knockout 2010 [01:53] JimBastard: ahahahah like what [01:53] pquerna: yes, i am excited for node knockout. [01:53] pquerna: i need to assemble a team. [01:54] malkomalko: NYC! [01:54] JimBastard: its like SF but actually not at all [01:54] texodus has joined the channel [01:54] malkomalko: I can't tell [01:54] JimBastard: sup texodus [01:54] malkomalko: does NYC suck at tech? [01:54] shimondoodkin: dos anyone is responsible for knockout is here? [01:55] JimBastard: malkomalko: we rock at tech, just in a much higher concentration [01:55] JimBastard: with way less people :-( [01:55] malkomalko: :/ [01:55] JimBastard: lol yeah, so we kinda lose [01:55] JimBastard: but we are from NY so we don't ever admit that [01:55] JimBastard: ooops [01:56] texodus: sup bastard [01:56] technoweenie: hey JimBastard can we use nodejitsu for the knockout [01:56] JimBastard: texodus you should bless us with some high tech shit, you are smart like that [01:56] JimBastard: technoweenie: i dont think so....? [01:56] pquerna: neither heroku or joyent would let you make custom c++ .node extension for nodeknockout would they? [01:56] technoweenie: oh joyent or heroku. damn. does joyent let you do web sockets [01:57] JimBastard: i dont think heroku would be happy with that [01:57] isaacs has joined the channel [01:57] texodus: sorry, missed the context [01:57] mau2 has joined the channel [01:57] JimBastard: texodus: no context lol [01:58] technoweenie: oh joyent's a vps basically. so yea node w/ web sockets shoudl be no problem [01:58] bpot has joined the channel [01:59] pquerna: so you could compile your own node? [02:00] malkomalko: hmm.. I kind've like riak [02:01] technoweenie: i havent used joyent, but i'm assuming they give you console access? [02:01] technoweenie: well i've used joyent years ago, but not their smart platform cra [02:01] technoweenie: p [02:01] jbr has joined the channel [02:01] meso_ has joined the channel [02:04] pquerna: i guess the obvious answer is to get an audio mixing module and ogg vorbis encoder into the default extensions then [02:05] technoweenie: thats the secret, write your app months prior and extract everything as 'modules' [02:05] mtodd has joined the channel [02:05] technoweenie: or launch a service that does any hard work and write your contest app as an api consumer [02:05] pquerna: lol [02:05] pquerna: well, i need to write an mixer for a different special project. [02:06] pquerna: :) [02:06] JimBastard: pquerna: did you say audio? [02:06] pquerna: yes [02:06] JimBastard: im working on a JSON based sequencer right now [02:06] JimBastard: we do a bit of multimedia stuff around here for fun, indexzero is at the media lab at columbia too [02:07] JimBastard: http://github.com/marak/JSONloops [02:07] JimBastard: ive been trying to get an audio pipe out of node for a while :-( [02:07] wilmoore has joined the channel [02:07] indexzero: Yeah, I wrote this sequencing programming language in ANTLR a couple of months ago [02:07] JimBastard: http://github.com/Marak/JSONloops/blob/master/loops/nyc.json [02:08] indexzero: http://github.com/indexzero/celluloid [02:08] pquerna: yeah, i was looking at SDL mixer and binding it into node [02:08] JimBastard: aye ^^ [02:08] pquerna: it can get you a raw output, then you'dl have to to re-encode the stream in vorbis or something [02:08] indexzero: I'd love to see a celluloid target in javascript [02:08] JimBastard: i really need the ability to play 24bit wavs [02:08] indexzero: if you guys can get the sound output it'll be cake [02:08] indexzero: then I just need video rendering >.< [02:09] satori: ffmepg? [02:09] pquerna: well, html5 doesn't include streaming video [02:09] pquerna: its all progressive :( [02:09] pquerna: you might be able to fake the apple method, of 10 second chunks [02:10] satori: ahh [02:10] pquerna: but meh [02:10] JimBastard: ? [02:10] indexzero: satori: not 'rendering' more like live mixing [02:10] SubStack: gah the npm docs do not have a very good entry point [02:10] JimBastard: ahh i see [02:10] indexzero: celluloid was a language I wrote to turn programming into a performance art [02:10] pquerna: on the iphone, the supported streaming method is to make your h264 stream into 10 second chunks [02:10] JimBastard: SubStack: agreed [02:10] pquerna: and a new url for each 10 second chunk [02:10] SubStack: "see man npm" -_- [02:10] _announcer: Twitter: "someone is already having good result with aleph (#clojure+netty). beating node.js in hello world is no small feat. http://bit.ly/ck0O9B" -- Mac. http://twitter.com/wmacgyver/status/17999567754 [02:10] pquerna: and the client side knits them together [02:10] JimBastard: SubStack: we could use help if you want [02:10] satori: thats a hack [02:10] Yuffster has joined the channel [02:10] pquerna: unfortunately, nothing for that in chrome/webkit/ff yet [02:11] pquerna: well, it works quite well, ecause it lets you switch bit-rates by just switching urls [02:11] SubStack: JimBastard: the problem is that I'm trying to figure out how it works, so I can't help with that just yet [02:11] JimBastard: :-) [02:11] JimBastard: i feel you [02:11] satori: does html5 video start playing while downloading? [02:11] _announcer: Twitter: "UDT support for node.js: http://github.com/satori99/node-udt" -- Yunhong Gu. http://twitter.com/uggnohnuy/status/17999645322 [02:12] satori: hey thats my pet project [02:12] Aria: Yeah, it does, satori. Or can. [02:12] SubStack: JimBastard: it seems to suffer from the problem of too much documentation [02:12] JimBastard: SubStack: start a cheat sheet up? [02:13] JimBastard: we are working on the copy for the website as well as the repo view that mape is doing [02:13] satori: Can't one do psuedo streaming by limiting the rate, and using http range requests? Can you get at hint track data in html5 vid? [02:13] JimBastard: http://npm.mape.me/new.html [02:13] SubStack: JimBastard: how does npm manage the NODE_PATH stuff? [02:13] Aria: The question is how to stitch it together seamlessly. [02:13] _announcer: Twitter: "Multiuser Sketchpad: Rod Begbie : Multiuser Sketchpad - Canvas+Websockets+node.js == tens of people drawing on th... http://bit.ly/995thw" -- Paolo Patronimic. http://twitter.com/salve/status/17999771920 [02:14] pquerna: satori: you mgiht be able to 'fake' it kinda, but the javascript apis into the video tag have very little insight into the buffering situation [02:14] JimBastard: SubStack: magic? [02:14] SubStack: -_- [02:14] SubStack: I hate magic. [02:14] JimBastard: i dont know too mucha bout the internals yet, i havent dived too far in [02:14] pquerna: so it would be very hard to have a flash equiv user experience [02:14] tav_ has joined the channel [02:15] satori: You need to be able to read hint track data to make http range requests to the right part of the file. If html5 cant do that then falsh is superior [02:15] SubStack: JimBastard: I mean more specifically, when I npm link, how can I make require() actually find what I just linked in? [02:16] JimBastard: SubStack: it should just be the name you gave it? [02:16] pquerna: satori: flash in this case is superior, there is rummor some proposals will come up sooner or later for proper live streaming in html5 world, but I'm mostly detached from the video streaming life now :) [02:16] SubStack: JimBastard: so does npm hack up my install of node to make it look in the right place or do I need to set some environment variable or setting? [02:17] Aria: I don't think HTML5 specifies streaming, but I think it works just fine. I'd have to test, but it would make sense. [02:17] JimBastard: SubStack: it uses a shim i think...it should be good to go... [02:17] satori: pquerna: yeah, I haven't played with it myself. Just looked at others cool demos sofar [02:17] JimBastard: i wish i could help you better, im only using the basics right now to manage my projects [02:17] JimBastard: im planning on diving more into it this month [02:20] technoweenie: whoa, _announcer translates shit? [02:20] SubStack: ah, finally got it to work [02:20] SubStack: had to read through npm-json to see what was wrong [02:21] JimBastard: technoweenie: have you not seen the awesome translate plugin? the _utility bot can also translate back out [02:21] JimBastard: !translate hello [02:21] _utility: hello [02:21] JimBastard: hrmmm [02:21] JimBastard: !translate English:Spanish hello bitches [02:21] _utility: hola perras [02:22] JimBastard: :-) [02:22] sh1mmer has joined the channel [02:22] JimBastard: http://github.com/marak/translate.js [02:24] _announcer: Twitter: "New blog post: Parsing CSV Files With NodeJS http://blog.james-carr.org/2010/07/07/parsing-csv-files-with-nodejs/" -- jamescarr. http://twitter.com/jamescarr/status/18000469908 [02:25] mscdex: !translate Spanish:English quiero tu madre [02:25] _utility: I wish your mother [02:25] mscdex: uh what? LOL [02:25] mscdex: fail translation [02:26] JimBastard: mscdex: let me try that on my version [02:26] JimBastard: I wish your mother [02:26] JimBastard: yep [02:26] mscdex: !translate Spanish:English yo quiero tu madre [02:26] _utility: I want your mother [02:27] mjijackson has joined the channel [02:27] mscdex: huhu thar [02:27] JimBastard: quiero a tu madre [02:27] JimBastard: yeah, babelfish is awesome [02:28] shimondoodkin: !translate Spanish:English Bastardo [02:28] _utility: Bastard [02:28] shimondoodkin: !translate Spanish:English Aprende a conducir aweonao!! [02:28] _utility: Aweonao learn to drive! [02:29] mscdex: :S [02:29] JimBastard: lol [02:29] shimondoodkin: nice it works... [02:29] JimBastard: !translate Spanish:English Yo soy Senior Bastardo. Yo tengo muy dinero. Yo soy rico y suave. [02:29] _utility: I am Senior Bastard. I have very money. I am rich and smooth. [02:30] JimBastard: !translate Spanish:English Yo soy senior Bastardo. Yo tengo muy dinero. Yo soy rico y suave. [02:30] _utility: I am senior Bastard. I have very money. I am rich and smooth. [02:30] JimBastard: dammit [02:30] JimBastard: i need a fancy letter [02:30] _announcer: Twitter: "@danielgm node.js, from the "Making Of" link. I should sit down with it soon, see what kind of needs it fills. Lots of buzz." -- inaequitas. http://twitter.com/inaequitas/status/18000897963 [02:31] satori: i dunno. Senior Bastard has a nice ring to it. [02:31] JimBastard: I use to be a JB [02:32] camilo has joined the channel [02:33] dnyy: win9 [02:34] EyePulp has joined the channel [02:35] mscdex: i think he meant mucho instead of muy [02:35] mscdex: heh [02:37] derferman has joined the channel [02:37] bmizeran_ has joined the channel [02:39] blowery: ACTION yawns [02:40] blowery: so on http://wargamez.mape.me/ how do i launch the nukes? [02:40] dmcquay has joined the channel [02:41] mscdex: blowery: like this [02:41] blowery: mscdex: attack! [02:41] shimondoodkin: blowery: and like this [02:41] mscdex: blowery: pew pew pew! [02:42] blowery: shimondoodkin: you too! [02:42] shimondoodkin: blowery: pew pew [02:42] blowery: shimondoodkin: mscdex: PEW [02:42] SubStack: bufferlist now on npm \o/ [02:42] shimondoodkin: pew me again [02:42] blowery: satori: pew pew! [02:42] mscdex: bufferlist the javascript string slayer [02:43] blowery: no one ever thinks to attack australia [02:43] blowery: SubStack: you should totally call it Buffy [02:43] mscdex: that's because australia has silly interweb censors that filter out pew pew pews [02:43] shimondoodkin: blowery: pew [02:43] shimondoodkin: yey it worked [02:44] rtl has joined the channel [02:45] mscdex: lesson of the day: don't tar 23gb of binary data and expect it to be done in any reasonable amount of time [02:45] SubStack: blowery: if only I hadn't npm published already! [02:45] mscdex: you can't change the name once it's published? [02:46] SubStack: not sure [02:48] n3xg3n has joined the channel [02:49] dmcquay: maybe we should make it so! [02:49] mscdex: yes we should! where's Mr. Sulu? [02:49] benburkert has joined the channel [02:50] _announcer: Twitter: "Sweet, in less than five minutes got my Express app to talk with my @couchio data store. Game over, kids. Too ez with #nodejs" -- Joe McCann. http://twitter.com/joemccann/status/18002192068 [02:55] SamuraiJack has joined the channel [03:03] mvid has joined the channel [03:03] mvid: ls [03:03] mscdex: dir [03:03] mvid: reflex [03:03] mscdex: :-D [03:03] _announcer: Twitter: "Good node.js meetup with @ncb000gt and @thegreatape. Think we got our idea for @node_knockout" -- Marco Rogers. http://twitter.com/polotek/status/18003091097 [03:04] mvid: i don't want to spam the channel, can anyone help me with setting up a wargames instance? [03:04] mscdex: mape: ping [03:04] mvid: whoa whoa, i dont want to bother mape [03:04] mvid: that guy is a superstar [03:04] mscdex: heh [03:05] mvid: wargames is trending on github [03:05] mscdex: well he knows more about it than anyone else [03:05] mvid: kind of crazy [03:05] mvid: *internet famous* [03:07] jbr: does anyone here have experience w/ jefe? [03:07] polotek has left the channel [03:12] bmizerany has joined the channel [03:13] bpot has joined the channel [03:14] streblo has joined the channel [03:15] texodus has joined the channel [03:16] hammerdr has joined the channel [03:16] streblo_ has joined the channel [03:18] confoocious has joined the channel [03:18] confoocious has joined the channel [03:19] hammerdr: I just migrated to a new MPB and i think it copied over node and npm.. which would be awesome if they happened to work :) They don't. How would I uninstall node manually? [03:19] SubStack: rm $(which node) ? [03:19] bmizeran_ has joined the channel [03:20] siculars has joined the channel [03:20] hammerdr: that's just the binary.. [03:21] hammerdr: are there things installed in, say, /Applications ? [03:22] Aria: No [03:22] Aria: It's almost all statically linked as the node binary [03:23] mjr_ has joined the channel [03:23] mscdex: hammerdr: make uninstall ? [03:23] evilhackerdude_ has joined the channel [03:25] mikeal has joined the channel [03:26] mvid: if i installed websocket-server from npm, why would i be getting this error: http://pastebin.com/rgYMPfmm [03:27] mscdex: someone had that same error earlier i think... [03:27] mvid: ah [03:27] mvid: ill check logs [03:27] mvid: do you know when? [03:27] hammerdr: mscdex: removing the binary and reinstalling with brew worked [03:30] mscdex: mvid: depends on your location, but it starts at line 2582 @ http://nodejs.debuggable.com/2010-07-07.txt [03:32] confoocious has joined the channel [03:36] syaramak has joined the channel [03:41] jakehow has joined the channel [03:44] markwubben has joined the channel [03:46] _announcer: Twitter: "lisp for nodeJS http://github.com/jbr/sibilant" -- jamescarr. http://twitter.com/jamescarr/status/18005958613 [03:47] davidwalsh has joined the channel [03:47] liucougar has joined the channel [03:52] mvid: does anyone know how to set a port in a node-irc client? [03:53] mvid: mape? [03:58] TommyM has joined the channel [03:59] _announcer: Twitter: "feels like every other #nodejs library I try out either uses kiwi or npm. Wonder which will come out as the next gem?" -- jamescarr. http://twitter.com/jamescarr/status/18006782903 [03:59] kriszyp has joined the channel [04:01] sudoer has joined the channel [04:02] Aaaarg has joined the channel [04:02] benburkert has joined the channel [04:03] mscdex: mvid: http://github.com/martynsmith/node-irc/blob/master/API.md [04:03] mvid: thanks [04:04] mikeal has joined the channel [04:04] mjijackson has joined the channel [04:06] softdrink has joined the channel [04:06] benburkert has joined the channel [04:14] jedschmidt has joined the channel [04:18] mostlygeek has joined the channel [04:28] _announcer: Twitter: "Got my sample node.js app up and running on Heroku; now to do something interesting..." -- Jason J. Gullickson. http://twitter.com/jasongullickson/status/18008626416 [04:31] wilmoore has joined the channel [04:34] SamuraiJack has joined the channel [04:35] steadicat has joined the channel [04:42] pquerna: http://github.com/skid/strobe-templates [04:42] pquerna: discodancer? on irc? [04:43] royi has joined the channel [04:55] teemow has joined the channel [05:01] satori: Has anyone tried building binary addons for windows yet? [05:02] fictorial has joined the channel [05:12] jbr has joined the channel [05:13] saikat has joined the channel [05:19] khug has joined the channel [05:23] cataska has joined the channel [05:24] dnolen has joined the channel [05:24] dnolen has left the channel [05:26] christkv has joined the channel [05:28] royi has joined the channel [05:33] jedschmidt has joined the channel [05:34] _announcer: Twitter: "Nice intro to the interesting parts of node.js by @devongovett - http://bit.ly/dmMg9u" -- Jason J. Gullickson. http://twitter.com/jasongullickson/status/18012472963 [05:39] TS_ has joined the channel [05:44] Yuffster has joined the channel [05:49] _announcer: Twitter: "Availability can see node.js, should be very good" [zh-CN] -- bentz lv. http://twitter.com/bentzlv/status/18013222299 [05:55] jedschmidt: is "get" a reserved word in javascript? [05:55] Dmitry1: jedschmidt: no [05:55] jedschmidt: textwrangler insists on highlighting it, but it's not on this list: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Reserved_Words [05:55] mostlygeek has joined the channel [05:55] mjr_: I don't think so, but it is sort of magical with the new getter syntax. [05:56] jedschmidt: mjr_: ah, that's probably it. [05:56] pquerna: sorry, i didn't realize that email was that long. [05:57] jedschmidt: thanks, Dmitry1 and mjr_. [05:59] Dmitry1: It is not more reserved as “value” for example [06:01] jedschmidt: right, i'd imagine textwrangler is just being lazy in highlighting it. [06:01] mjr_: pquerna: that's OK. It is so technical that nobody is going to read it anyway. [06:02] sixbit has joined the channel [06:07] ryah: wow http://github.com/graydon/rust/ [06:09] pquerna: mjr_: and email with embeded C a day keeps the ruby programers at bay? [06:10] mjr_: Yeah, when in doubt, add C preprocessor macros until nobody can understand it anymore. [06:10] mjr_: job security [06:10] riottaba has joined the channel [06:11] satori: lol. is that the reason? [06:11] Aria: Huh. Interesting language. [06:11] callen: do you still need to use providers for mongodb in the current version of express? [06:12] ryah: yes [06:12] ryah: very intersting [06:13] callen: noted, thank you. [06:13] mertimor has joined the channel [06:13] ryah: graydon has been working on this for a while, i think [06:13] mertimor has joined the channel [06:13] ryah: and his projects are not to be taken lightly [06:15] mertimor has joined the channel [06:15] callen: ryah: llvm based backend. wow. [06:15] callen: ryah: is there any documentation explaining what it is and what it's for? I'm not finding much beyond code samples. [06:16] callen: ryah: for that matter, what do you know? [06:16] mertimor has joined the channel [06:16] callen: so far, looks like js syntactically. [06:16] ryah: graydon, for those who don't know, is basically the inventor of distributed source control [06:17] ryah: and a main developer of spidermonkey/jaegermonkey/etc [06:17] tilgovi has joined the channel [06:17] mertimor has joined the channel [06:18] mertimor has joined the channel [06:19] mertimor has joined the channel [06:19] callen: ryah: what do you know about rust specifically? [06:20] ryah: nothing- i just saw it on my github feed :) [06:20] ryah: i knew graydon was working on a language, i guess this is it [06:20] mertimor has joined the channel [06:21] inimino: hm [06:22] pquerna: it looks small. clean. [06:22] mertimor has joined the channel [06:22] jakehow has joined the channel [06:23] mertimor has joined the channel [06:24] pquerna: kinda like Go with less.. googlness. [06:24] mertimor has joined the channel [06:27] ivan has joined the channel [06:29] ryah: written in ocaml and c++ [06:29] ryah: sounds painful [06:29] ollie has joined the channel [06:32] pquerna: yes, but it at least didn't abandon C-linkage [06:33] ryah: rust looks erlang-y [06:33] ryah: modulo awful syntax [06:35] Aria: Heh, yeah, C linkage is win there. [06:35] Aria: ocaml's also not too bad to deal with, actually. [06:37] topfunky has joined the channel [06:38] SubStack: been meaning to learn ocaml [06:38] SubStack: probably erlang first though [06:39] Clooth has joined the channel [06:43] jetienne has joined the channel [06:44] ryah: http://s3.amazonaws.com/four.livejournal/20100708/rust.pdf [06:44] ryah: ^-- incase you don't want to build it yourself [06:46] jetienne: ryah: would it be possible to compile a nodejs apps in a single exe ? thus runnable without installing node before [06:47] callen: somewhere in-between adding a haml, sass templates, and a couple urls, express just went from 2.5k reqs/s down to 541 reqs/s [06:47] ryah: jetienne: i think there are some ways of achieving that [06:47] SubStack: jetienne: but node doesn't even work in windows yet I thought [06:48] SubStack: without cygwin anyhow [06:48] jetienne: ryah: ok [06:48] jetienne: SubStack: what is the license of cygwin ? do they force gpl ? [06:49] nofxx1 has joined the channel [06:50] technoweenie: i'd actually like to be able to compile node code so we can distribute it with the github firewall installs [06:50] technoweenie: i could just run a js minimizer over it, ha. or coffeescript => obfuscated js [06:51] aliem has joined the channel [06:53] huyhong has left the channel [06:53] SubStack: jetienne: looks like cygwin is gpl with some clause for relicensing with osi-compliant licenses [06:54] SubStack: jetienne: then some licensing fee for proprietary software [06:56] jetienne: SubStack: honnestly im a bit afraid that nodejs will go to something like that... extjs people are used to this... even did it twice recently [06:57] nofxx has joined the channel [06:57] pquerna: jetienne: compiling all js and modules into a single executable is on my short-list of projects. [06:58] topfunky: would make deployment super easy [06:58] jetienne: pquerna: ++ [06:58] SubStack: I imagine it would, even if it was just a packer and not a true compiler [06:59] oberhamsi has joined the channel [07:00] SubStack: microsoft could just build a posix compatability layer themselves [07:00] Sou|cutter has joined the channel [07:01] SubStack: then windows wouldn't be such a second-class citizen with new experimental projects like node [07:01] Aria: They did once. [07:01] Aria: Thing is, Windows IO is actually better than POSIX as far as node is concerned. [07:02] Aria: It's natively async [07:02] Aria: NT Completion Ports ~= event notices [07:03] topfunky: throw out your macbooks! [07:04] Aria: I'll give up my macbook when you pry it from my hands with a cold, hard, well built notebook without rough corners and a power supply I can't break by kicking the cord. [07:04] mjr_: It is hard to pry with those. [07:04] pquerna: you mean the never-merged syslets in linux aren't good enough for async-izing posixy apis :D ? [07:04] Aria: You might be surprised at how easily my fingers are pried with such a mythical object. [07:04] Aria: Yeah, I mean that, pquerna! [07:05] Aria: We'll have POSIX AIO before then ;-) [07:05] Aria: (which exists as an API, but nobody implements, and certainly not well) [07:06] pquerna: actually, I got into a thread on that earlier this spring [07:06] SubStack: macbooks don't even have clit mice [07:06] pquerna: apparently oracle actually uses the AIO calls on linux [07:06] Aria: I'm glad of that. Those set off my tendonitis terribly badly. [07:06] pquerna: so its apparently 'good' [07:06] pquerna: like, it doens't kernel panic anymore [07:06] Aria: Huh, interesting. I wonder which linuxes they use it on. [07:06] pquerna: and supposidly is reasonable fast [07:06] Aria: It's relatively recent. [07:06] mjr_: Doesn't squid also use AIO? [07:06] pquerna: by recent you mean 8 years i guess :) ? [07:07] pquerna: nm, i guess it was only 2005 [07:07] pquerna: when it made it to linux. [07:08] pquerna: actually, I wonder if you could make a portable AIO-lib that sat on top of nt events and full aio in *nix. [07:09] pquerna: i don't know enough buout the event completion stuff to know if thats really feasible to abstract in the same direction [07:09] Aria: Heh, or on top of libeio if needed [07:09] jetienne: and put that in libeio ? [07:09] Aria: I bet so. [07:10] pquerna: if only everyone had kqueue. [07:10] jetienne: i think node speed is good for now. in my opinion, the work is more needed in the library/api/doc. even if it is less fun [07:11] pquerna: well, sure, because at the core there isn't 'much' [07:11] pquerna: i'd be more happy with multi-page docs than writing an aio library :D [07:11] Aria: Hehe. [07:12] mjr_: If the API didn't change so often, it'd seem like a better use of time to invest in improving the docs. [07:12] mjr_: So pquerna I sent a thing to the list about dgram and socket options. [07:13] mjr_: Lots of wacky stuff with nextTick in there that I haven't fully sorted out. [07:17] felixge has joined the channel [07:18] MattJ has joined the channel [07:18] oberhamsi has joined the channel [07:19] _announcer: Twitter: "Node.JS become more famous for who I am" [ja] -- KOBA789. http://twitter.com/koba789/status/18017426899 [07:20] jetienne_ has joined the channel [07:23] callen: bloody 'ell. [07:28] _announcer: Twitter: "Playing around with node.js and mongoDB tonight. I've been out of server side stuff for a year or two, time to get back in." -- Angelo DiNardi. http://twitter.com/adinardi/status/18017796272 [07:30] topfunky: c [07:34] dahankzter has joined the channel [07:35] mikeal has joined the channel [07:40] virtuo has joined the channel [07:41] zum has joined the channel [07:48] dispalt has joined the channel [07:56] nofxx1 has joined the channel [07:56] jetienne_: poll: suppose you got callbacks reporting either data or error. you do 2 callbacks succeed_cb(data), failure_cb(error).... or a single callback completed_cb(error, data) ? [07:56] jetienne_: ACTION is trying to learn the js way [07:58] mitkok has joined the channel [07:59] SubStack: jetienne_: you could also use event emitters [07:59] SubStack: just use whichever is most aesthetically pleasing [08:00] jetienne_: SubStack: and which one is more pleasing according to you ? [08:00] mscdex: i actually like the single callback method [08:00] SubStack: depends on the specifics of the code, how the interface should act, what the implementation details are [08:01] mscdex: but that's just my preference [08:01] jetienne_: SubStack: not commiting much :) [08:01] jetienne_: mscdex: ok [08:02] nofxx has joined the channel [08:02] SubStack: and I don't like mixing data and errors up into a single callback [08:03] mpoz2 has joined the channel [08:07] femto has joined the channel [08:07] pquerna: http://gcc.gnu.org/wiki/Visibility [08:09] jetienne_: pquerna: this horrible stuff is actually gaining memory and speedup loading. but i prefere static linking if possible [08:09] pquerna: yes, just hadn't seen all this visibility stuff before. wish i had it 10 years ago. [08:10] pquerna: mostly because boost.python [08:10] pquerna: well, lets just say, i had a boost.python so, and it was like 600 megs [08:11] jetienne_: :) 600megs was a lot 10y ago [08:20] cloudhead has joined the channel [08:23] Tim_Smart has joined the channel [08:24] uen has joined the channel [08:24] _announcer: Twitter: "Multi user Sketchpad: http://mrdoob.com/projects/multiuserpad/ using Node.js and Canvas" -- Christian Heilmann. http://twitter.com/codepo8/status/18020063586 [08:25] sechrist has joined the channel [08:25] mape: mscdex: ? [08:26] mape: mvid: ? [08:26] sveimac has joined the channel [08:31] felixge has joined the channel [08:31] felixge has joined the channel [08:34] ollie has joined the channel [08:40] LionMadeOfLions has joined the channel [08:45] hansek has joined the channel [08:48] jbr has joined the channel [08:49] ph^ has joined the channel [08:56] aubergine_ has joined the channel [08:56] xla has joined the channel [08:58] viktors has joined the channel [09:03] viktors has joined the channel [09:03] aubergine has joined the channel [09:05] viktors has joined the channel [09:06] jedschmidt has joined the channel [09:07] cloudhead has joined the channel [09:11] sechrist has joined the channel [09:12] maritz has joined the channel [09:13] romainhuet has joined the channel [09:15] caolanm has joined the channel [09:17] maushu has joined the channel [09:18] zomgbie has joined the channel [09:22] pufuwozu has joined the channel [09:23] ollie has joined the channel [09:30] blorean has joined the channel [09:33] sveisvei has joined the channel [09:33] TomY has joined the channel [09:34] kodisha has joined the channel [09:34] MrTopf has joined the channel [09:36] pufuwozu has joined the channel [09:37] mitkok has joined the channel [09:38] sveimac has joined the channel [09:39] _announcer: Twitter: "watching a good video on NodeJS http://yhoo.it/9afEll" -- David Feinberg. http://twitter.com/rawberg/status/18023004194 [09:40] stagas has joined the channel [09:44] pufuwozu has joined the channel [09:46] aubergine has joined the channel [09:51] cloudhead has joined the channel [09:52] mostlygeek has joined the channel [09:54] pufuwozu has joined the channel [09:56] teemow has joined the channel [10:02] lifo has joined the channel [10:02] lifo has left the channel [10:03] keeto has joined the channel [10:06] tmedema has joined the channel [10:08] jetienne has joined the channel [10:10] hassox has joined the channel [10:10] malkomalko has joined the channel [10:13] _announcer: Twitter: "#HackingParty tonight's subject : #NodeJS + WebSocket! Yeah baby!" -- bobylito. http://twitter.com/bobylito/status/18024384739 [10:13] aubergine has joined the channel [10:25] ollie has joined the channel [10:33] everton has joined the channel [10:43] _announcer: Twitter: "I'm crazy playing Node JS..." -- Tan Shiaw Uen. http://twitter.com/shiawuen/status/18025630777 [10:46] _announcer: Twitter: "I should find time to write a blog post about the #node.js meeting in Cologne on tuesday." -- Christian Scholz. http://twitter.com/mrtopf/status/18025759863 [10:55] pufuwozu has joined the channel [10:57] _announcer: Twitter: "@mrdoob's Multiuser Sketchpad, a HTML5 / Node.js drawing playground brings back memories of 9y old http://vectorama.org http://bit.ly/cKeH5u" -- Jürg Lehni. http://twitter.com/juerglehni/status/18026215888 [11:00] WarBot has joined the channel [11:00] hojberg has joined the channel [11:00] WarBot has joined the channel [11:01] WarBot has joined the channel [11:03] zapnap has joined the channel [11:08] fdmanana has joined the channel [11:09] hojberg has joined the channel [11:10] hellp has joined the channel [11:13] _announcer: Twitter: "@greg_a take a look at node.js" -- Shealan Forshaw. http://twitter.com/Shealan/status/18026927196 [11:21] _announcer: Twitter: "@ Xzwiex propose to teach node.js. After a year or two will be valuable. Suddenly a MMORPG will need to do, who knows." [ru] -- ramainen. http://twitter.com/ramainen/status/18027262100 [11:21] rsterner has joined the channel [11:24] Lazesharp has joined the channel [11:26] _announcer: Twitter: "http://bit.ly/b9zOMg amf.js - A Pure JavaScript AMF Implementation fyi # nodejs" [sv] -- nathan. http://twitter.com/webr3/status/18027471409 [11:28] hpoydar has joined the channel [11:31] royi has left the channel [11:44] jedschmidt has joined the channel [11:47] camilo has joined the channel [11:50] pufuwozu has joined the channel [11:59] pufuwozu has joined the channel [12:00] phiggins has joined the channel [12:01] Aaaarg has joined the channel [12:02] stepheneb has joined the channel [12:03] cloudhead has joined the channel [12:09] tmedema_ has joined the channel [12:10] stagas: wow a million cursors in http://mrdoob.com/projects/multiuserpad/ [12:10] cloudhead has joined the channel [12:10] freshtonic has joined the channel [12:10] mape: hehe still [12:11] aubergine has joined the channel [12:12] viktors has joined the channel [12:15] cloudhead has joined the channel [12:15] micheil: just realised something that could be awesome: use websockets + IP addresses to be able to communicate from one client to another client in your network. [12:15] micheil: (without knowing IP addreses) [12:17] mape: micheil: the id a user gets on connect, that is unique right? (websocket server) [12:17] mtodd has joined the channel [12:17] micheil: mape: yes [12:17] mape: but ids will be reused? [12:17] micheil: mape: unless you can have a computer's network card connect multiple users on the same sending port [12:18] micheil: it's just the remotePort of the connection [12:18] micheil: nothing fancy [12:18] mape: hmm k so not really an issue [12:18] micheil: have a look at this though.. http://www.youtube.com/watch?v=cA5hqhDwZzk [12:19] micheil: it'd be really cool, if you could share state across different network devices in your house over something like raw tcp sockets or websockets [12:19] satori: I am working on a way to have a node app oversee node<->node connections that will work thru NAt and firewalls with UDT [12:19] micheil: UDT? [12:19] satori: udt.sourceforge.net [12:20] mape: micheil: which part of the video? [12:20] micheil: just watch it [12:20] micheil: starts at about 25seconds [12:20] mape: remoting using the iPhone? [12:20] micheil: yeah [12:20] micheil: they're supposedly doing it via websockets [12:21] mape: Hmm said how they got it working? [12:21] micheil: but if you could just visit a website, which would show up over clients connected with the same IP address as you [12:21] satori: Even while I work on the bindings I am thinking of all sorts of apps that will be possible. having node on windows makes for some interesting client app possibilies. [12:22] micheil: I dunno, I'm against windows until they support posix. [12:22] micheil: or allow you to work with your filesystem (ntfs) in a posix compliant way [12:22] satori: I like the idea of using node on windows for clients. not for servers so much [12:22] micheil: anyway, I'm off to make some scones. bbl. [12:22] micheil: satori: I think there's a different need there. [12:23] satori: enjoy ur scones [12:23] micheil: satori: for example, you would want to remove some of the server specific parts, and add in some GUI sort of things [12:23] micheil: bbl. [12:24] Rwalsh has joined the channel [12:26] hpoydar has joined the channel [12:27] Rwalsh: Hi guys [12:28] Rwalsh: Has anybody used vows here? [12:28] satori: hi. never heard of vows [12:29] Rwalsh: its a testing framework for node [12:29] satori: k. [12:29] borior has joined the channel [12:30] borior: hi all. I know this is a little OT, but I was wondering if anyone has any experience with dbslayer locking up on Mac OS X? [12:30] Rwalsh: I'm trying to test an object which contains a setInverval which calls a passed callback with each 'interval' [12:32] javajunky has joined the channel [12:32] jherdman has joined the channel [12:33] mw____ has joined the channel [12:39] _announcer: Twitter: "Must see for anyone who missed it: Multi user Sketchpad: http://mrdoob.com/projects/multiuserpad/ using Node.js and Canvas by @mrdoob" -- Alexis Deveria. http://twitter.com/Fyrd/status/18031246867 [12:40] javajunky: I don't get why everyone's going mad for this, I wrote doodlewith.me …. *ages* ago ;) [12:46] jstewart1 has joined the channel [12:47] blowery: javajunky: everything old is new again [12:48] stagas: it crashed [12:49] javajunky: nahh it auto-cleaned, every 5 minutes or something ..I wrote the code a couple of months ago, my memory is hazey [12:50] stagas: not yours, mrdoobs [12:50] javajunky: blowery: that would be true, if it wasn't the same tech stack ;) .. don't get me wrong I like the mrdoob demo, I just don't get why its *so* exciting, there's at least 2 others (and google's!) that do it [12:52] _announcer: Twitter: "@ryah thanks for the #nodejs interview for @dailyjs" -- Oleg Podsechin. http://twitter.com/olegpodsechin/status/18032006484 [12:53] stagas: it's new, it's realtime and you can see the cursors moving so you feel you're in a room with people instantly and you get in the action instantly [12:53] markwubben has joined the channel [12:53] kevm_ has joined the channel [12:53] blowery: needs more instantly [12:53] stagas: yes instantly [12:53] stagas: :P [12:55] javajunky: stagas: ah you can see other people's cursors, yeah that is nice, I was going to do that (actually not the cursors, but what was being drawn, transparently) .. but then google released theirs (much better) collab drawing tool, so I sacked it off ;) [12:55] stagas: some times more features = less fun [12:56] stagas: kiss [12:56] pufuwozu has joined the channel [12:58] javajunky: sometimes, but fun doesn't last, features required to make it useful in this case (imho) [13:00] mies has joined the channel [13:00] rwalsh has joined the channel [13:01] aubergine has joined the channel [13:02] stagas: it's supposed to be a sketch toy, not a picture drawing app [13:02] stagas: colors would be nice but not things like rectangles and circles [13:03] javajunky: ;) rectangles and circles was merely to demonstrate it was passing vector information about not pixel data :) but s'cool that other people are doing these things :) [13:03] pufuwozu has joined the channel [13:05] stagas: still it was really fast which excites me about my upcoming websocket project :P (which I'll never finish) [13:08] pufuwozu has joined the channel [13:09] mtodd has joined the channel [13:11] javajunky: yeah websockets are pretty fast :) [13:11] rtl has joined the channel [13:12] jherdman: quick question... i was reading some sample code for Fab. i noticed usage of the with() statement in these samples. is with() considered okay on the server side? i thought that was an "evil part"? [13:13] phiggins: with is just as "bad" either place. [13:14] javajunky: its used by quite a few of the frameworks I think, but yes, something to be nervous about [13:14] satori: with *can* be dangerous and is rarely useful so its best avoided [13:15] ben_alman has joined the channel [13:16] jherdman: i figured as much. i'm still polishing my JS skills, so i was starting to wonder if something changed in the community [13:16] jherdman: actually... speaking of JS skills... i've read "The Good Parts" and the Definitive Guide. any other recommendations? [13:16] javajunky: tj's ebook isn't bad. [13:17] javajunky: (it does talk about with .. and is infected with the 'lack of semi-colon' meme ) [13:17] javajunky: but still worth a pop [13:17] jherdman: hehe yhea. i own it, but haven't read it yet. [13:17] jherdman: how about "Object Oriented JavaScript"? is it encumbered with classical OOP mentality, or does it embrace prototyping? [13:18] pufuwozu has joined the channel [13:22] blackdog_ has joined the channel [13:25] maritz has joined the channel [13:30] davidsklar has joined the channel [13:30] Gruni has joined the channel [13:33] andykent has joined the channel [13:34] andykent: Hi guys, I have a quick question about process.nextTick() if anyone has a second? [13:34] andykent: I'm just wondering if I recursively call into process.nextTick() if that has the potential to blow the stack. Here is an example of what I mean... http://gist.github.com/468000 [13:34] Aikar has joined the channel [13:34] mape: andykent: Bigger chance of an answer if you just ask :) [13:35] andykent has joined the channel [13:35] satori: I don't think you can blow the stack with process.nextTick().... it just adds events to the eventloop [13:35] andykent: sorry, got DC'd can you repeat [13:38] pufuwozu has joined the channel [13:38] _announcer: Twitter: "# Clojure's # aleph also interesting in that framework I node.js Chick" [ja] -- Toshihiro Shimizu. http://twitter.com/meso/status/18034831145 [13:40] andykent: but every tick creates a new function closure which I'm guessing isn't the smartest idea? [13:43] tzmartin has joined the channel [13:43] creationix has joined the channel [13:44] TrisMcC has joined the channel [13:44] quirkey has joined the channel [13:45] andykent: maybe this is more suitable? http://gist.github.com/468000 [13:46] kriszyp has joined the channel [13:46] pufuwozu has joined the channel [13:46] gf3 has joined the channel [13:51] _announcer: Twitter: "Inspired by rochester.js last night to finally install node. Sweetness!!!" -- Mike Alsup. http://twitter.com/malsup/status/18035647660 [13:52] hpoydar has joined the channel [14:02] aubergine_ has joined the channel [14:05] _announcer: Twitter: "Clojure's edge on Node.js http://ff.im/npfX3" -- antest. http://twitter.com/antest/status/18036574529 [14:07] pufuwozu has joined the channel [14:09] wao: _announcer: ing je lamer [14:12] pufuwozu has joined the channel [14:14] sveisvei has joined the channel [14:16] bradleymeck_ has joined the channel [14:17] khug has joined the channel [14:17] brandon_beacher has joined the channel [14:17] mitkok has joined the channel [14:18] kodisha has joined the channel [14:21] olegp has joined the channel [14:22] matt_c has joined the channel [14:24] pufuwozu has joined the channel [14:30] sechrist has joined the channel [14:30] rictic has joined the channel [14:33] _announcer: Twitter: "I'm just assuming I'm doing something wrong, because I had to tweak the code sample at http://bit.ly/bTM3Mx to get it working. #nodejs" -- Scott Parker. http://twitter.com/citizenparker/status/18038516006 [14:34] Yuffster has joined the channel [14:35] _announcer: Twitter: "Clojure's Edge on Node.JS http://dosync.posterous.com/22397098" -- Tunde Ashafa. http://twitter.com/ashafa/status/18038625691 [14:35] nrstott has joined the channel [14:35] nrstott has joined the channel [14:36] listentorick has joined the channel [14:38] listentorick: Can anybody recommend a good aync testing framework for node? I've already played with vows [14:44] caolanm: listentorick: I use nodeunit http://github.com/caolan/nodeunit [14:45] dahankzter has left the channel [14:46] caolanm: listentorick: but do you mean 'runs tests asynchronously' or 'tests asynchronous code well' ? [14:46] caolanm: I kind of assumed the latter there [14:46] ajpiano has joined the channel [14:48] _announcer: Twitter: "Bookmarked: Multiuser Sketchpad (node.js + web sockets) http://bit.ly/aKM873" -- Henry Poydar. http://twitter.com/hpoydar/status/18039486707 [14:49] softdrink has joined the channel [14:49] listentorick: I need to test async code [14:50] bradleymeck_: have you seen vows? [14:50] bradleymeck_: oh you have [14:50] javajunky: bradleymeck: yeah the issue he has with vows is in testing code that uses setInterval .. how to meaningfully say 'this method should be called x times' .. and when to say 'stop the timer' [14:50] zaach has joined the channel [14:51] listentorick: exactly [14:51] listentorick: essentially I have a processor which processes data [14:51] _announcer: Twitter: "Thought: if someone wanted to do *some* server JS but couldn't use popular solutions like Node or Narwhal, what then?" -- Kyle Simpson. http://twitter.com/getify/status/18039731044 [14:51] listentorick: it calls a callback when there is some data available [14:52] khug has joined the channel [14:52] bradleymeck_: http://github.com/tobiassvn/node-stories is something else, seems a bit odd to me though [14:52] listentorick: this happens as part of a heartbeat (setInterval) [14:52] listentorick: the problem is I cant test how many times the callback [14:53] bradleymeck_: you are probably just going to have to wrap the setInterval function w/ a counter function [14:53] listentorick: equally I need seome c'cleanup' code after all the test have run so that I can stop the processor [14:53] listentorick: yeah [14:53] listentorick: I may just test the internal process function and avoid the heartbeat [14:54] _announcer: Twitter: "@getify theoretically, you could install but not run them as a server and have python/php/ruby say shell_exec('node file.js');" -- Greg Ferrell. http://twitter.com/gregferrell/status/18039929266 [14:55] bradleymeck_: !tweet @getify look into Rhino and RingoJS, or even make a lil v8 startup script? [14:56] listentorick: @bradleymeck - cheers for you suggestions [14:57] listentorick has left the channel [14:57] sudoer has joined the channel [14:59] bradleymeck_: he left...well i was thinking more setInterval(func,..) would become var i=0,count=10,timer=setInterval(function(){if(i'; [18:27] tjholowaychuk: }, [18:27] tjholowaychuk: just do jade.filters.foo = ... [18:27] creationix: tjholowaychuk: right, but I'm wondering if it can be compiled in to a standalone js file [18:27] creationix: without embedding the markdown compiler in the generated jade code [18:27] tjholowaychuk: I was going to add arg support to filters but meh, that is getting programming language-ish [18:28] _announcer: Twitter: "@wmacgyver pls backup claims of Clojure beating node.js performance? That would amaze me to no end" -- Stefan Tilkov. http://twitter.com/stilkov/status/18054191266 [18:28] creationix: or do you pre-compile the markdown too and just embed the resulting js [18:28] tjholowaychuk: yup its just embedding the result [18:28] tjholowaychuk: the filters are run at compile time [18:28] micheil: JimBastard: I'm busy working, like I said [18:29] tjholowaychuk: creationix: https://gist.github.com/96c15443a5751236e328 [18:29] JimBastard: micheil: okay, i just was pinging you [18:29] JimBastard: i dont know what you said [18:29] tjholowaychuk: is the output from Parser#parse() [18:30] _0x44 has joined the channel [18:30] tjholowaychuk: later wrapped in Function('locals, attrs, escape, _', 'with (locals) {' + js + '}'); [18:30] creationix: is it slow with all those "push" and "call" calls? [18:30] creationix: though that's probably the only sane way to generate the js [18:30] tjholowaychuk: not really no, I had string buffering but it is barely a noticeable change [18:30] creationix: ohh, I see, you put _.lineno in there [18:31] tjholowaychuk: but yeah the func calls are necessary [18:31] tjholowaychuk: haha ya, the error handling is a big hack [18:31] creationix: yes, that's a good idea [18:31] tjholowaychuk: but it works [18:31] micheil: mcai8sh4: I would be first guessing that your node is compiled without ssl, so, please do check that: ./configure check if openssl: yes [18:31] creationix: well, building an array is faster that string concats in most js engines anyway [18:31] creationix: not sure about node, I haven't tested in a while [18:32] _0x44 has left the channel [18:32] tjholowaychuk: I benchmarked both, in this case it was tinnnny win for string concat (as far as i remember) [18:32] stepheneb has joined the channel [18:32] pufuwozu has joined the channel [18:33] _announcer: Twitter: "Multiuser Sketchpad, using Node.js and Canvas http://bit.ly/cPOj6e" -- Law. http://twitter.com/ubuntera/status/18054507409 [18:33] creationix: well, language compilers should be able to run in the browser too, it's really handy for things like #sammy.js [18:33] tjholowaychuk: meh [18:34] tjholowaychuk: not something I personally want / would use but others are obviously welcome to tackle that [18:34] creationix: meh? [18:34] creationix: I'm just saying that if you go through the trouble to write a good compiler, you might as well make it available to more people [18:34] creationix: don't rely on the dom or the node apis [18:35] _announcer: Twitter: "Clojure's edge on Node.js - dosync http://bit.ly/alPmY4 aleph around netty performance" -- Javier Neira. http://twitter.com/jneira/status/18054606215 [18:35] creationix: tjholowaychuk: anyway, just my ideas and opinions, you're free to do whatever you want with express [18:36] mikeal: mjr_: do you have stuff for a podcast? [18:36] mjr_: mikeal: I have various Macs. [18:36] mjr_: What else do you need? [18:36] mikeal: mics? [18:36] mjr_: I have a couple of Blue Snowflake mics. [18:36] mikeal: xlr handler [18:37] mcai8sh4: micheil: openssl :not found [18:37] mikeal: can yo do two snowflakes on one machine? [18:37] mjr_: Which are USB microphones, supposedly for "podcasting". [18:37] phiggins has joined the channel [18:37] mikeal: because the xlr-usb converters i have can't do more than one on a machine and i think it's similar with other usb mics [18:37] jbr has joined the channel [18:38] mjr_: mikeal: I've never tried, but I will. What software do you use to record, garageband? [18:38] mape: no you can have multiple usb-mics [18:38] mape: they role their own interface [18:39] mjr_: I figured the OS could handle as many USB mics as you like, as long as the recording software knows to open them all at the same time. [18:39] mape: I have a Samson G-track mic and that works fine with my other usb mic [18:39] mikeal: yeah, i use garageband, just have to turn off anything that likes to write to disc (like time machine) during usage or else it'll stop recording and bitch [18:39] mikeal: yeah, it's definitely a driver issue [18:39] mikeal: the xlr-usb driver for the shure converters can't do more than on per machine [18:39] mikeal: SUPER annoying [18:40] mjr_: that is LAME [18:40] mape: Doing a node podcast? Or for meetings? [18:40] mjr_: I guess they figure if you are serious, you'll buy a multi-channel converter. [18:40] mikeal: i wish someone made something like this that sucked less http://www.amazon.com/Belkin-GoStudio-Recorder-iPod-Green/dp/B001B4GG02/ref=sr_1_1?ie=UTF8&s=electronics&qid=1278614299&sr=8-1 [18:40] mjr_: mape: mikeal wants to make a node podcast [18:41] mape: round table or multiple ones skyping in? [18:41] micheil: mcai8sh4: okay, in which case: apt-get install openssl openssl-dev [18:41] micheil: iirc. [18:41] mikeal: in the office we have an 8 track usb2 alesis mixer with condernser mics hooked up to it [18:41] mjr_: that's pretty nice. [18:42] mape: usb mics are cheap enough nowadays to make it worth [18:42] mikeal: and then my computer and jchris' have mics with a usb converter for doing internet podcasts with people using skype as a monitor [18:42] mape: heard the latest blue one was really good but the earlier not so much [18:42] mikeal: i've only heard positive things about the blue mics [18:42] mikeal: i'm sure hardcore audio geeks consider them sub-par [18:42] mikeal: but they seem to do well at their intended use case [18:42] micheil: please: someone write a patch for node that provides evented C bindings to md5, sha1 and other hashing algorithms, but don't use openssl [18:43] mape: think they really don't like the snowball though, the yeti was better [18:43] mikeal: if you can use more than one per machine that's really awesome [18:43] mcai8sh4: micheil: got open ssl, there isn't an openssl-dev [18:43] cloudhead has joined the channel [18:43] mape: Sure you can find lots of positiv stuff about them on youtube though [18:43] micheil: mcai8sh4: okay, reconfigure, see if it has openssl now [18:44] mcai8sh4: still not found [18:44] micheil: hmm.. [18:44] mape: only thing with the yeti is that it looks like shite [18:45] mjr_: Oh man, homebrew installs couchdb with tracemonkey without me having to understand anything. [18:45] mjr_: Awesome. [18:45] mjr_: And it has up to date node and npm packages. [18:45] donspaulding has joined the channel [18:45] mjr_: homebrew is winning. [18:45] micheil: mcai8sh4: let me ssh into ziggy (my server) [18:45] mklappstuhl has joined the channel [18:47] JimBastard: mikeal: why do you guys have a condenser mic? [18:47] micheil: mcai8sh4: libssl-dev? [18:47] mape: JimBastard: why not? [18:47] jxson has joined the channel [18:47] JimBastard: mape they are expensive and require phantom power lol [18:47] ben_alman has joined the channel [18:47] mjr_: Many good things in life are expensive and require phantom power. [18:47] mape: JimBastard: I have a http://convergenciadigital.com/eshop/images/samson_g_track_usb_mic.jpg [18:48] mape: Which is a condenser [18:48] JimBastard: thats USB lol? [18:48] mape: Yeah [18:48] JimBastard: i havent seen USB based condensers [18:48] mape: Don't care enough to have a mixer [18:48] huyhong has joined the channel [18:48] JimBastard: i havent bought an expensive mic in a while though [18:48] JimBastard: i usually rock SM-58's [18:49] MrNibbles: as we are on the topic of music gents, i made this over the weekend if anyone fancies a listen :) [18:49] MrNibbles: http://www.webnibbles.co.uk/dropbox/Var3%20-%20blitter.mp3 [18:49] JimBastard: they are great for live shows [18:49] mape: They should kill people who do fucking unboxings/reviews of microphones on youtube and never play back the sound from the mic [18:49] JimBastard: listening [18:49] mcai8sh4: micheil: in configure openssl : yes! [18:49] micheil: mcai8sh4: woot! [18:49] jxson has joined the channel [18:50] JimBastard: MrNibbles: fail [18:50] pufuwozu has joined the channel [18:50] MrNibbles: :P [18:50] mcai8sh4: micheil: should I make; make install again then? [18:50] JimBastard: you can do better then ambient techno [18:50] JimBastard: elevator techno [18:50] micheil: mcai8sh4: yup. [18:51] ezmobius has joined the channel [18:51] mcai8sh4: micheil: done [18:52] mcai8sh4: (btw, yuor time is really appreciated here. [18:52] micheil: okay, now you shouldn't have any worries [18:52] mape: JimBastard: yeah seems like the goto stuff, that and a pair of akg headphones [18:52] mcai8sh4: I'll have a go :) [18:53] MrNibbles: JimBastard: how about this one then :D http://www.webnibbles.co.uk/dropbox/MrNibbles%20-%20Labyrinth%201.mp3 [18:54] MrNibbles: it should probably come with some sort of health warning [18:54] mcai8sh4: micheil: IT WORKS!!! Thankyou - sorry to have been a pain [18:54] mcai8sh4: now for play time :) [18:54] micheil: mcai8sh4: not at all [18:55] mape: MrNibbles: That... Seems like something I want if I were to go to the woods and get drugged out [18:55] mape: With a camera over my shoulder running through the darkness [18:55] JimBastard: listening MrNibbles [18:56] JimBastard: MrNibbles: lol [18:56] mape: MrNibbles: ever heard tree wave? [18:56] mjr_: I can't get those mp3s to download. [18:56] JimBastard: MrNibbles: what software you using? [18:56] MrNibbles: mape: cant say i have [18:56] mcai8sh4: mape: thanks for your help also. It's rare to find such a pleasant channel these days [18:56] MrNibbles: JimBastard: Ableton live, make a lot of my own plugins [18:56] JimBastard: got ya [18:56] JimBastard: never question mr nibbles [18:56] mape: mcai8sh4: least I can do :) [18:56] JimBastard: my bad [18:56] mape: MrNibbles: http://www.qotile.net/audio/may_banners_by_tree_wave.mp3 [18:57] MrNibbles: JimBastard: haha [18:57] MrNibbles: mape: thanks, checking it out [18:57] JimBastard: im just not a fan of this genre at all [18:57] JimBastard: im very over digital techno music [18:57] mape: uses dot matrix printers and whatnot [18:57] JimBastard: ive released a couple of instrumental albums and rap albums [18:57] JimBastard: we are doing an EP this month i think, going with a lot of found sounds and a theremin i just got [18:57] JimBastard: :-) [18:58] MrNibbles: sounds cool [18:58] JimBastard: no moar digital patches though [18:58] JimBastard: im craving analog [18:58] MrNibbles: good thing to crave [18:58] JimBastard: the composition on your tracks isnt bad at all though [18:58] JimBastard: and im a hater when it comes to production work [18:59] aaron_: anyone know what I'd get "Could not install the file '/usr/local/include/node/eio.h'" when trying to make install node 0.1.1 on OS X? [18:59] mscdex: http://www.youtube.com/watch?v=Ht96HJ01SE4 [18:59] JimBastard: aaron_: did you sudo? [18:59] mscdex: ^ awsum [18:59] MrNibbles: mape: pretty interesting stuff [18:59] aaron_: prolly not ;-) [18:59] aaron_: derr [18:59] MrNibbles: JimBastard: cheers matey [18:59] mape: Yeah I like it [18:59] aaron_: gah [18:59] mape: http://organismen.blogspot.com/2010/04/du-ar-knark-remix.html [18:59] aaron_: thanks [18:59] mape: !translate Du �r knark remix [18:59] _utility: r dope remix [19:00] kriszyp has joined the channel [19:00] mape: hah, worst translation ever, that still makes sence [19:00] JimBastard: hey MrNibbles here is a music video i made earlier this year......http://www.youtube.com/watch?v=IrkDqh9ZVog [19:00] JimBastard: its pretty bad IMO [19:00] JimBastard: i didnt do the production work on it, just the rapping and acting and beat [19:00] JimBastard: the audio mixing is not good, i didnt do it [19:00] JimBastard: the video guy did, which was a mistake [19:00] JimBastard: the video is kinda epic though [19:01] MrNibbles: ah he redeemed himself then :P [19:01] JimBastard: mostly me dancing on the street is a white fur coat [19:01] MrNibbles: checking it out [19:01] pufuwozu has joined the channel [19:02] MrNibbles: thats one hell of a coat [19:02] mjr_: JimBastard: the video part of that rap video is great, but the rapping part is pretty awkward. [19:02] JimBastard: thanks, i try to keep it real [19:02] JimBastard: mjr_: the song isnt great [19:02] JimBastard: mjr_: there are much better ones [19:02] MrNibbles: funny stuff though [19:02] JimBastard: i consider the track a flop for sure [19:03] JimBastard: the video is just kinda epic [19:03] JimBastard: i did make the beat too [19:03] JimBastard: the beat is kinda okay [19:03] eric__ has joined the channel [19:03] aaron_ has left the channel [19:03] MrNibbles: its pretty minimal [19:04] JimBastard: if you ever played this game League of Legends i have a much funnier track, but if you never played the game its pointless [19:04] MrNibbles: ah sadly not [19:04] JimBastard: ohh hey our myspacefacepage is still up [19:04] JimBastard: http://www.myspace.com/yeoldewreckingshoppe [19:04] JimBastard: lol [19:04] JimBastard: there are a few tracks on there too [19:05] mape: http://mashable.com/2010/07/08/iads-revenue/ should get that into node, get people RICH [19:05] eric__: Hey all, in node.js is there a way to call a function given its name without using eval? Like window["foo"]() in traditional javascript [19:06] JimBastard: eric__: whats the functions scope? [19:06] MrNibbles: mape: thanks for that, work colleagues will want to see that! [19:06] mscdex: http://www.youtube.com/watch?v=X4SCSGRVAQE [19:06] JimBastard: why not just go foo() ? [19:06] mape: MrNibbles: hehe, doing iPhone development? [19:06] MrNibbles: iAds :) [19:06] MrNibbles: just started part of a team to work on them [19:07] eric__: JimBastard: I would if I knew the function name at compile time, but it's dynamically determined [19:07] MrNibbles: iAd js is actually pretty awesome [19:07] MrNibbles: if not terribly documented [19:07] eric__: JimBastard: but that is in effect what I am trying to do [19:07] JimBastard: eric__: create a context and put it in there [19:07] JimBastard: eric__: like var myCon = {}; myCon['asdmyCon['asd']() [19:07] bradleymeck_: if its in the global scope do you mean eric? [19:07] JimBastard: 'errr [19:07] JimBastard: fail [19:07] aglemann has joined the channel [19:07] JimBastard: sorry [19:07] aglemann has left the channel [19:08] eric__: bradleymeck_: yes [19:08] JimBastard: eric__: like var myCon = {}; myCon['asd'] = function(){}; myCon['asd']() [19:08] JimBastard: there is a global in node [19:08] JimBastard: you shouldnt use it :-( [19:08] bradleymeck_: bad juju from global [19:08] mjr_: eric__: do you have small bit of code you could gist that explains this scenario? [19:08] JimBastard: mjr_: i think he just wants a global context? [19:08] JimBastard: either that or just a simple object [19:08] eric__: well, my functions don't even show up in the global so I couldn't do it anyway [19:08] TommyM has joined the channel [19:09] JimBastard: eric__: i think what you want to do is very easy [19:09] JimBastard: unless i misunderstand [19:09] eric__: JimBastard: yes, that's correct. your suggestion of putting it in its own context would of course work [19:09] JimBastard: so why can you not do that? [19:10] tmpvar has joined the channel [19:10] eric__: JimBastard: well ... i could, i just wanted to know if there some way to programatically refer to a function in the global context [19:10] aubergine has joined the channel [19:10] sveimac has joined the channel [19:11] bradleymeck_: (function(){return this})()[name] <- the ugly, Function(name+'()') <- the worse (but from your scope) [19:11] JimBastard: bradleymeck_: lol :-) [19:12] JimBastard: eric__: a function isnt going into the "global" scope unless you set it on globals [19:12] JimBastard: http://nodejs.org/api.html#global-objects-43 [19:12] mikeal: JimBastard: not all condenser mics require phantom power [19:12] mikeal: i have one expensive one and two cheap ones [19:13] mikeal: and the audio is basically not recognizably different [19:13] bradleymeck_: mmm w/ mustache.js what if i want to check if something exists but that thing could be an enumerable [19:13] mape: mikeal: perhaps you need pure carbon fibre cables to hear the difference [19:13] eric__: JimBastard: so what is the scope of top level variables/functions? [19:13] mikeal: mjr_: which version of spidermonkey does it install? [19:13] JimBastard: mikeal: i assumed to be a condenser mic you needed additional electricity outside of what carries on an XLR [19:13] mikeal: i'm pretty sure I need 1000 dollar gold monster cables to notice the diference :) [19:13] JimBastard: but i really dont know that much about that, and it has been a while [19:13] JimBastard: LOL [19:14] mjr_: mikeal: 1.9.2 [19:14] JimBastard: monster cables [19:14] JimBastard: eric__: top level to what? [19:14] mikeal: mjard: that's awesome, i still wish it was 1.9.3 tho :) [19:14] JimBastard: eric__: every module gets it own scope [19:14] mikeal: dammit [19:14] mikeal: mjr_: ^^ [19:14] mjr_: mikeal: so, so, so much faster than whatever version comes with couchdbx. [19:15] mikeal: 1.7 [19:15] JimBastard: eric__: do you have a paste of your issue? [19:15] mikeal: mjr_: the biggest difference is native JSON [19:15] mikeal: that's like 30x for large documents [19:15] eric__: JimBastard: if I just run "node server.js", how do I refer to the scope of variables in server.js? [19:15] JimBastard: from where? [19:15] JimBastard: from inside that server.js script? [19:16] mikeal: i wonder how good the tracer is in 1.9.2 tho, i remember all the stuff that landed in 1.9.3 but not 1.9.1 and 1.9.2 [19:16] eric__: JimBastard: yes [19:16] JimBastard: ohh eric__ i think i see what you want [19:16] JimBastard: eric__: so i THINK you have to establish a context at the top of the file [19:16] mjr_: mikeal: yeah, I'll bet that native JSON makes my log server application go way faster. [19:16] JimBastard: there is "exports" [19:16] bradleymeck_: havent seen any recent benchmarks on v8 vs spidermonkey [19:16] JimBastard: but that will export out [19:16] mikeal: most definitely [19:17] mikeal: bradleymeck: at this point it's kinda predictable [19:17] JimBastard: eric__: i dont think commonjs modules have a scope name you can refer to, ohh wait maybe "this" [19:17] JimBastard: ? [19:17] mjr_: mikeal: will you guys ship 1.0 with a tracemonkey then? [19:17] mikeal: functions that get re-run a lot of times are faster in SM, using a lot of throw away functions are much faster in v8 [19:17] JimBastard: this might do it [19:17] eric__: JimBastard: no, this just refers to global [19:17] mikeal: that's actually not up to us [19:17] mikeal: it's just a dep [19:17] JimBastard: eric__: are you sure about that? [19:17] malkomalko has joined the channel [19:17] mikeal: so the package mangers need to update to a new version [19:18] JimBastard: this doesnt just refer to global [19:18] mikeal: and we need to make sure CouchDBX and any new "full builds" community people or couchio product use a newer version [19:18] JimBastard: its the current context ? [19:18] eric__: JimBastard: well that's the conclusion I came to based on 2 seconds of experimtation, I may have been wrong. let me check again [19:18] mikeal: our hosting platform builds with the Firefox 3.7 tag [19:18] mjard: >< [19:18] mikeal: which is 1.9.3 [19:18] JimBastard: eric__: if you only have one file.....then yeah...this is gonna be global [19:18] JimBastard: to that one file [19:18] JimBastard: unless you drill into a closure [19:18] franksalim has joined the channel [19:18] mjr_: mikeal: now that homebrew is more up to date, all I'm really missing is an ubuntu package. [19:19] mikeal: so, their SM version is locked up with their xulrunner platform version [19:19] mikeal: because they do other stuff with it [19:20] ollie has joined the channel [19:21] mjr_: mikeal: it looks like ubuntu 10.04 gets you xulrunner 1.9.2 these days. [19:21] mikeal: homebrew is awesome, i'm stoked they use a newer version [19:21] pufuwozu has joined the channel [19:21] mikeal: is xulrunner 1.9.2 sm 1.9.2? [19:21] mjr_: I dunno, how do I tell? [19:21] mikeal: don't assume these version conventions actually match [19:21] mikeal: they mostly don't [19:23] mikeal: i think you need to install it and then check the js --version [19:25] tjholowaychuk has joined the channel [19:25] mitkok has joined the channel [19:26] pgriess has joined the channel [19:27] bmizerany has joined the channel [19:28] andykent has joined the channel [19:29] b_erb has joined the channel [19:30] micheil: oh? xulrunner, what's this? [19:30] micheil: ACTION used to work with xulrunner [19:31] pufuwozu has joined the channel [19:31] gf3: jherdman: pfffft I have been doing that for years! Prototypical inheritance FTW [19:31] micheil: I actually built a chat client in it, which was kinda fun, and ended up with me getting into protocol hacking. [19:32] jherdman: i'm still catching up in some ways gf3 :) [19:32] gf3: jherdman: shit gets even sexier once you start binding and methodizing functions to objects [19:33] jherdman: do you have some examples handy that i can study? [19:33] gf3: and Function#bind is in ECMA262-5 so it should be in V8 soon [19:34] gf3: jherdman: I make heavy use of bind and so forth in my IRC lib [19:34] gf3: jherdman: http://github.com/gf3/IRC-js/blob/master/lib/irc.js [19:35] everton has joined the channel [19:35] jherdman: i'll definitely give that a look over tonight [19:36] hellosir has joined the channel [19:37] hellosir: hey guys [19:37] hellosir: anyone use json.parse on server-side? [19:37] nrstott: yes [19:37] mjr_: I use it several times per second. [19:37] micheil: anyone know about PUT requests over XHR? [19:38] micheil: like, if there's a browser that doesn't support them? [19:38] mape: I just guess IE [19:38] hellosir: json.parse seems to break for me - exits without error message. any ideas? [19:38] gf3: micheil: emulate the method via param [19:38] nrstott: IE6 supports PUT over AcitveX object [19:38] mape: Nothing to back it up but would supprise me if something worked [19:38] gf3: micheil: e.g. _method: 'PUT' [19:38] nrstott: not realy 'xhr' [19:38] gf3: micheil: a la rails [19:39] micheil: gf3: it doesn't do that though [19:39] mjr_: hellosir: try wrapping it in a try/catch. Node sometimes has problems with exceptions not bubbling up. [19:39] nrstott: i think youd have to find an old old browser for it not to be able to support PUT requests via async [19:39] kriszyp: that is the xhr of ie6, so all xhr impls do support PUT [19:39] hellosir: mjr_: thanks, ill give it a try [19:39] micheil: http://github.com/rails/jquery-ujs/blob/master/src/rails.js#L26 [19:39] kriszyp: every xhr impl out there supports PUT [19:39] mjr_: hellosir: so like, try { obj = JSON.parse(str); } catch (err) { console.log("Oh no: " + err.stack); } [19:39] nrstott: kriszyp, the jQuery docs do claim that some do not... [19:39] nrstott: they do not specify which though [19:39] micheil: kriszyp: how about DELETE? [19:39] nrstott: IIRC [19:39] kriszyp: if you go back to older browsers they just don't support xhr :P [19:39] kriszyp: yes, DELETE is equally well supported [19:40] bradleymeck_: hellosir, most likely you are using a singlequote somewhere for strings or have dangling commas [19:40] micheil: so, all the core HTTP methods? [19:40] kriszyp: yes [19:40] micheil: cool. [19:41] mjr_: I hope we can fix this silent exception swallowing thing soon. [19:41] gf3: kriszyp: neato [19:41] gf3: micheil: http://msdn.microsoft.com/en-us/library/ms536648(VS.85).aspx [19:41] mjr_: I haven't figured out the pattern behind it, and it makes for some tricky debugging. [19:42] pufuwozu has joined the channel [19:42] kriszyp: now cross-origin XHR is a little different story though [19:42] micheil: kriszyp: I'm proxying anyway [19:43] hellosir: bradleymeck_: im stringifying it, so if theres an problem, it's not anything on my side [19:43] hellosir: bradeleymeck_: well, im also pulling it from redis, so that might be an issue [19:46] ph^_ has joined the channel [19:49] TkTech has joined the channel [19:50] micheil: oh man.. it's almost 6am again.. [19:50] TkTech: Heyo - does node.js have method for working with fixed-width types? [19:50] mape: micheil: You should stop with the strange timezones and just align with GMT [19:50] pquerna: 'fixed width types'? [19:50] pquerna: TkTech: do you mean, something like jspack? [19:50] TkTech: 16bit (short), 32bit (int), blah [19:51] TkTech: I need to put a short into a buffer for sending over the network [19:51] pquerna: TkTech: http://github.com/pgriess/node-jspack [19:51] pquerna: yes, use node-jspack and Buffers [19:51] keeto has joined the channel [19:51] TkTech: Perfect! Thank you [19:56] hsoj_ has left the channel [19:56] mcai8sh4: mape: why do some people not have coodinates? [19:56] mape: mcai8sh4: Because they can't be geopiped [19:57] keeto has joined the channel [19:59] pufuwozu has joined the channel [20:00] paulwe has joined the channel [20:01] ducki2p has joined the channel [20:02] ducki2p: zum: hi [20:04] femtoo has joined the channel [20:05] grahamalot has joined the channel [20:10] admc_ has joined the channel [20:10] admc has joined the channel [20:11] joshbuddy has joined the channel [20:12] borior has left the channel [20:15] hellosir: I'm getting an "illegal access" error on JSON.parse - any ideas? [20:16] kriszyp: are you giving it a buffer? [20:16] mcai8sh4: micheil: I'm just setting up on another server (running xubuntu) I have openssl installed and libssl-dev but no joy. can you think of any othes I may be needing? [20:16] kriszyp: let me restate that. You are giving it a buffer :) [20:17] HerrTopf has joined the channel [20:17] kriszyp: JSON.parse(buffer) will throw that error [20:17] kriszyp: you need to toString the buffer, hellosir [20:17] mcai8sh4: (running hardy I think) [20:17] hellosir: kriszyp: thanks [20:20] pufuwozu has joined the channel [20:22] softdrink has joined the channel [20:23] pquerna: hmm. is anyone doing streaming PUTs [20:27] mcai8sh4: might have it [20:28] HerrTopf: I tested a streaming PUT to a file as my first node.js experiment. [20:29] pquerna: repeated write() calls i guess? [20:30] HerrTopf: yeah, fs.write on data events from the request [20:30] mjr_: pquerna: what problem are you having? [20:31] HerrTopf: I had the problem if API docs not matching the implementation ;-) [20:31] HerrTopf: if=of [20:31] mape: that will mess up stuff [20:31] HerrTopf: esp. for the write() call which resulted in not calling the callback [20:31] mape: if is used a lot [20:32] HerrTopf: mape: what do you mean? fs.write() on request data events? Why? [20:32] mape: HerrTopf: nah if = of [20:32] mape: Bad joke, nm [20:32] HerrTopf: ok, ic :) [20:32] HerrTopf: in fact it messes up without req.pause() and req.resume() ;) [20:35] pquerna: mjr_: mostly trying to figure out the behavoirs of when I put a 500mb file in a write() call [20:35] pquerna: i think i'm seeing what I need to do [20:35] pquerna: listen for drain events [20:35] pquerna: and only write more on those [20:36] bradleymeck_: ACTION summons isaacs [20:36] maushu has joined the channel [20:37] mjr_: pquerna: yeah, this is what sys.pump is for. [20:37] mjr_: Which is why everybody is so interested in getting it sorted out. [20:38] pquerna: is there an example of using it with http? :) [20:38] mjr_: I think mikeal has some somewhere. [20:38] sixtus42 has joined the channel [20:38] mikeal: what do i have? [20:38] mjr_: just a lot of whiskey. [20:38] pquerna: sys.pump example for http client [20:39] pquerna: shit too serious. [20:39] phiggins has joined the channel [20:40] HerrTopf: so apparently fs.write() does not seem to have a drain event [20:41] HerrTopf: pquerna: what are you streaming where? [20:41] pufuwozu has joined the channel [20:41] mikeal: you want to pump to the client response or from somewhere else or you want to pump the request to somewhere else [20:41] mikeal: ? [20:42] creationix has joined the channel [20:42] vesech has joined the channel [20:42] mikeal: what exactly do you want to pump where? [20:43] pquerna: request [20:43] pquerna: client request body [20:43] pquerna: pump up to server [20:43] mikeal: to server? [20:43] mikeal: to like a file? [20:43] mklappstuhl has joined the channel [20:44] pquerna: yes [20:44] mjr_: so an http proxy [20:44] devinus has joined the channel [20:44] cloudhead has joined the channel [20:45] skampler: is pump bidirectional? [20:45] rauchg_ has joined the channel [20:45] mikeal: http.createServer(function (request, response) { pump(request, new fs.WriteStream('filename')); …… [20:45] devinus: creationix: i think the middleware filenames in connect should be consistent and use conditional_get.js instead of conditionalGet.js imho [20:45] mostlygeek has joined the channel [20:45] mikeal: skampler: that's hard to answer [20:45] HerrTopf: so writeStream instead of write to be able to use pump() I assume? [20:45] devinus: creationix: but really liking the direction Connect is taking :D [20:45] mikeal: messages in the pump are birectional [20:45] bradleymeck_: underscore syntax isnt really too common in js [20:45] mjr_: pump is like a unix pipeline. [20:46] mikeal: but the interntion is to pump from a readable stream to a writeable stream [20:46] HerrTopf: as I used fs.write() and did the copying manually by listening to data events [20:46] HerrTopf: pump apparently is simpler [20:46] mikeal: pump does that for you [20:46] HerrTopf: but I didn't see WriteStream ;-) [20:46] mikeal: also, if the disc is too slow, it'll pause the client stream until it's ready again [20:46] HerrTopf: otherwise I learned more from using write() ;) [20:46] creationix: devinus: I like them to match the way it's used, but it doesn't really matter since you never require the built-in middlewares directly [20:46] mikeal: so you don't buffer everything in to memory [20:46] sechrist: grr [20:46] sechrist: "incorrect signature" [20:47] sechrist: << hates oauth [20:47] mikeal: HerrTopf: there is more going on that just the data events [20:47] HerrTopf: well, oauth2.0 will fix that :) [20:47] tjholowaychuk: devinus: -1 for underscored names [20:47] mikeal: you can check out the implementation [20:47] tjholowaychuk: always feel dirty when i require('child_process') [20:47] mikeal: s/that/than [20:47] sechrist: does twitter do oauth2? [20:47] mikeal: tjholowaychuk: agreed [20:47] HerrTopf: sechrist: well, inofficially I think it's used by twitter.anywhere [20:47] creationix: mikeal: just got out of a long meeting about how to integrate couch as a message bus new node apps using existing RDMS systems [20:47] sechrist: eh cra [20:47] mikeal: interesting [20:48] mikeal: if you need me to come down for one of those just ping me [20:48] ph^ has joined the channel [20:48] HerrTopf: sechrist: but 2.0 is unfortunately not yet finished (draft 9) and I assume they will wait until it is before they deploy it officially [20:48] HerrTopf: not as brave as facebook apparently ;-) [20:48] sechrist: I got my request token, redirect, come back with oauth_token and oauth_verify from GET params, use that to get an access token, and twitter is "Incorrect signature"ing requests with the token/key provided from the getAccessToken [20:49] sechrist: I don't get it [20:49] HerrTopf: sechrist: myspace at least had some online form for testing your signature, that was helpful [20:49] creationix: mikeal: how well does couch perform as just a message queue. I was thinking it's a good way to sync state between several node processes [20:49] sechrist: HerrTopf: I'd love to see that for twitter [20:49] HerrTopf: it showed me where I did things wrong then doing my oauth implementation [20:49] mikeal: creationix: it works great as long as you don't update a document faster than the round trip time to the clients [20:49] HerrTopf: sechrist: well, you might test it with myspace and it might tell you where you did the computation wrong [20:50] sechrist: oh I don't think it's the computation [20:50] mikeal: if you do then you'll have revision conflicts in MVCC [20:50] sechrist: i'm using a node lib [20:50] sechrist: that i've used for other implementations [20:50] sechrist: but I'm not sure what's up in this case [20:50] HerrTopf: ic, that's strange then [20:50] creationix: mikeal: hmm, we won't be storing much data in couch, just the session for the users, and a stream of named events [20:50] HerrTopf: as I assume that oauth is working with twitter (well, just authorized something, so it is) [20:51] sechrist: it's giving me an access token~! [20:51] sechrist: so wtf [20:51] HerrTopf: mikeal: and thanks, will check the implementation out [20:51] creationix: mikeal: and long-term durability doesn't matter, maybe redis would be better? [20:52] mikeal: creationix: new docs or updating docs? [20:52] mikeal: Redis actually has long term durability it's just that what is *current* will always need to fit in memory [20:52] mikeal: for some of these "shared state" use cases Redis is better [20:52] creationix: no docs at all in couch, just session data (which I guess are docs) and a hostory of recent events [20:53] mikeal: how many writes per second do you think you'll have [20:53] creationix: mikeal: no clue, possibly a lot [20:54] tjholowaychuk: creationix: writing a new sess store for connect? [20:54] creationix: tjholowaychuk: maybe for connect [20:54] sechrist: a lot to mikeal is in teh thousands/s [20:54] sechrist: >.> [20:55] creationix: yes, thousands is a lot to me too [20:55] pufuwozu has joined the channel [20:55] pquerna: mikeal: http://github.com/cloudkick/cast/blob/master/lib/util/http.js#L29 [20:56] pquerna: mikeal: the weird thing, maybe a bug in the http parser [20:56] pquerna: *http client [20:56] pquerna: it ends with 3 zero length chunks [20:56] pquerna: instead of 1 [20:56] rauchg_ has joined the channel [20:59] JimBastard has joined the channel [21:02] pquerna: ah [21:02] pquerna: it calls end() itself inside pump [21:03] mjr_: pquerna: yeah, oddly calling end multiple times doesn't do what you might think it would. [21:03] mjr_: Unless you think it would do that. [21:04] pquerna: sending multi zero length chunks is a pretty unexpected behavoir :( [21:06] liucougar has joined the channel [21:06] pquerna: it would be nice if pump was an emitter [21:06] pquerna: and it emitted something to give you visibility [21:06] pquerna: like 80kb pumped so far [21:07] pquerna: so, on a 650mb file, the sys.pump works correctly [21:07] pquerna: but on a <4kb file, it still has a double zero length chunk [21:08] mjr_: I'd also like to have more control over the buffering with a high/low water callback. [21:08] JimBastard: github is fucking up [21:10] cloudhead: creationix: how's nstore going? [21:10] c4milo: JimBastard: the same here [21:11] cloudhead: oi JimBastard [21:11] creationix: cloudhead: It's fairly stable now as an initial alpha version, I've rested from it for a little while to work on some other stuff [21:11] cloudhead: cool [21:11] JimBastard: hey cloudhead [21:11] creationix: cloudhead: I may change the api as I get more real-world use out of it, I've only used it for one app so far [21:11] JimBastard: we are doing a lightning talk tonight about Vows and Resourcer at nyc.js [21:12] JimBastard: well charlie is, im doing some translate.js bullshit [21:12] creationix: cloudhead: do you have any questions about nStore, I'd love some feedback [21:12] cloudhead: having a couchdb-like db which doesn't require the whole otp stack would be really useful [21:12] tjholowaychuk: ditto that [21:12] creationix: it doesn't have btrees or query indexes like couch, and doesn't run over the network either [21:13] cloudhead: creationix: are you planning on implementing the btree? [21:13] cloudhead: or is it a different storage engine [21:13] creationix: I don't need a btree yet, I probably will if I include couch style views [21:13] creationix: cloudhead: the storage engine is 100% JSON in a file, with a small in-memory index of the file offsets of each key's data [21:14] creationix: so the index itself is just a plain js object [21:15] tyfighter has joined the channel [21:15] cloudhead: creationix: ok, you doing the append-only thing? [21:16] benbinary has joined the channel [21:16] cloudhead: I guess that can be pretty fast too [21:16] creationix: yes, append only with online compaction [21:17] JimBastard: so pretty much node-dirty but working? [21:17] creationix: sortof [21:17] creationix: right now, the api is get-by-key, get-stream, or get-all [21:17] creationix: and the stream and all both take an optional filter function [21:18] cloudhead: cool [21:18] creationix: oh, and "save(key, doc)" to update/insert a doc [21:18] creationix: it will generate a uuid if key is null [21:18] creationix: and remove(key) to delete a doc [21:19] creationix: tjholowaychuk: I would love to make a nStore based session for Connect [21:19] pquerna: mikeal: i also don't seem to ever get the sys.pump callback on large files [21:19] tjholowaychuk: creationix: ya man, that would be great for little apps [21:19] creationix: the in-memory one is annoying when developing an app because all sessions die every time you reboot the server [21:19] tjholowaychuk: hehe yea :D [21:19] creationix: and with node you restart the server often [21:20] tjholowaychuk: its mostly there for an example more than anything [21:20] creationix: tjholowaychuk: the current session middleware seems overly complicated to me [21:20] pquerna: i think it needs to handle a chunk of zero length == end [21:20] tjholowaychuk: creationix: howcome [21:20] tilgovi has joined the channel [21:21] creationix: tjholowaychuk: I think it should just assume cookie with session id, and the store should only respond to get and set of keys [21:21] creationix: anything more advanced like a pure-cookie session can be implemented by itself [21:22] rauchg_: is nStore distributed ? [21:22] creationix: rauchg_: nope, it's in-process [21:22] tjholowaychuk: well you need more than that, destroying of sessions, counting of "active" sessions etc [21:22] creationix: tjholowaychuk: yes, but that's internal to the session store [21:22] creationix: the interface should be as minimal as possible [21:22] rauchg_: tjholowaychuk: this.session is soon gonna be this.session.get(, fn) ? [21:23] tjholowaychuk: rauchg_: nope [21:23] creationix: rauchg_: I guess async sessions would be useful [21:23] rauchg_: what if i want my sessions in redis [21:23] creationix: otherwise you can't use nStore either [21:23] bradleymeck_: creationix node-cookiejar provides that to connect so if you only use simple id sessions would prolly be fine [21:23] tjholowaychuk: its a possibility for sure, but at least personally I would rather work with the session and have it commit at the end [21:24] aurynn: Has someone written an auth framework for jsgi yet? [21:24] creationix: aurynn: probably a few, not sure if they work in node though [21:24] nrstott: aurynn, i have a JSGI 0.2 basic one... should be ported to JSGI 0.3 [21:24] creationix: connect has a couple already [21:24] nrstott: http://github.com/nrstott/vault [21:25] tjholowaychuk: basically right now its just: sess fetched / created -> "touched" -> committed [21:25] tjholowaychuk: the rest is just candy [21:25] art0rz has joined the channel [21:25] tjholowaychuk: for finding active users, clearing the session store, regenerating sessions etc [21:25] nrstott: aurynn: http://github.com/nrstott/vault [21:26] creationix: tjholowaychuk: I see, I'll come up with a more concrete suggestion later [21:26] aurynn: Thanks :) [21:26] nrstott: aurynn, as I said its JSGI 0.2, needs to be ported to 0.3 :) [21:26] nrstott: port to 0.3 pull-request welcomed ^^ [21:26] aurynn: :) [21:26] tjholowaychuk: creationix: it needs work no doubt about that. since I removed the cookie store we could abstract most of MemoryStore's constructor crap [21:26] tjholowaychuk: dealing with the cookie [21:27] creationix: tjholowaychuk: I think I'll just make one from scratch and then we can merge them. how's that sound? [21:27] mikecampo has joined the channel [21:27] tjholowaychuk: but other than that the api is just #destroy(), #regenerate() <-- inherited, #fetch(), #commit(), #clear(), #length() [21:27] nrstott: aurynn, are you using kris zyps JSGI for node library? [21:28] tjholowaychuk: nothing complicated at all [21:28] tjholowaychuk: creationix: yeah sure [21:28] aurynn: nrstott, yes, I'm looking at using that [21:28] aurynn: node-jsgi [21:28] nrstott: arynn, awesome... i need to get up to speed with that. Ive been using JSGI with narwhal/jack [21:29] art0rz: hm. was gonna ask something about node.js and CGI, but it seems i've fixed it now :) [21:29] art0rz: something with filetoo short, but when i changed the extension to .s it works [21:29] art0rz: i had it on .node [21:29] art0rz: odd bug? [21:29] mikecampo: can anyone tell me if I can add a local module to require.paths just once and then be able to use it in all of my files? I don't want to unshift the require path in each file. [21:30] mcai8sh4 has left the channel [21:32] art0rz: also, this beats spidermonkey (mozilla) and PHP hands down [21:32] art0rz: i am amazed [21:33] mjr_: Hey look, iOS4 has native JSON. Welcome to 2 years ago, Mobile Safari. [21:33] art0rz: using this benchmark http://dan.corlan.net/bench.html [21:33] creationix: mikecampo: there is the NODE_PATH environment variable [21:33] art0rz: PHP did it in 19 secs, node.js (or v8 i suppose) does it in 2k ms [21:34] bradleymeck_: mmm is Array.sort not a stable sort? [21:35] mikecampo: creationix: thanks, I'll look it up [21:36] creationix: mikecampo: "require.paths can be modified at runtime by simply unshifting new paths onto it, or at startup with the NODE_PATH environmental variable (which should be a list of paths, colon separated)." [21:36] creationix: nodejs.org/api.html [21:38] visnup has joined the channel [21:39] huyhong1 has joined the channel [21:40] mikeal: haha [21:41] mikeal: mjr_: is the js interpreter on mobile safari different than desktop? [21:41] pzich: somewhat [21:41] pzich: not syntactically though [21:41] pgriess: anyone else having issues recompiling addons for v0.1.100? looks like something related to NODE_SET_METHOD is busted [21:41] mikeal: i'm just wondering when Safari Desktop got native JSON [21:41] mikecampo: creationix: I did the unshift in my entry script, but my other files don't see the change in require.paths. Just wanted to save some typing since each file requires the same support code [21:42] mjr_: mikeal: yes, the mobile one usually lags way behind the desktop [21:42] creationix: mikecampo: unshifting in the entry script should do it [21:42] pzich: mikeal: I'm not sure, I think you can safely assume "a while ago" [21:42] mjr_: Safari 5 has WebSocket support, for example, but MobileSafari still doesn't. [21:42] pzich: XHR is newer than JSON at any rate [21:42] mjr_: MobileSafari just got native JSON in iOS 4.0, as far as I can tell. [21:42] mjr_: I think the iPad may have native JSON also. [21:42] huyhong has joined the channel [21:43] mjr_: I think Safari 4 cam with native JSON. [21:44] huyhong2 has joined the channel [21:44] mikecampo: creationix: my bad, I didn't put it before importing the modules :P. Thanks! [21:45] huyhong3 has joined the channel [21:46] huyhong1 has joined the channel [21:47] maushu has joined the channel [21:51] hdon has joined the channel [21:52] admc__ has joined the channel [21:53] Dmitry1 has joined the channel [21:59] sechrist: hmm actually it seems to be the lib [21:59] sechrist: express-auth's methods no longer seem to work [22:00] jashkenas has joined the channel [22:00] sechrist: but the oauth lib itself [22:01] sechrist: has to be right :\ [22:01] jashkenas: 'afternoon #Node.js -- I've got a performance question. I'm running a really simple little server that renders a tracking pixel... I have CloudKick configured to ping the pixel and make sure Node is still running. Here's a graph of the response times, in milliseconds: [22:01] jashkenas: http://cl.ly/5827ef436a5c6818314a [22:02] jashkenas: As you can see, occasionally it looks like it spikes to over 25 seconds before responding. [22:02] jbr has joined the channel [22:03] jashkenas: This is embarrassing, because I also have CloudKick pinging the homepage, which is a dynamic render from a Rails app, and that never went over 500 milliseconds during the same time period. [22:03] huyhong has joined the channel [22:04] jashkenas: Have y'all noticed anything similar in your Node servers? Any way to mitigate this? [22:04] huyhong1 has joined the channel [22:04] mape: does the load spike? [22:04] bradleymeck_: i doubt it spikes that much mape [22:05] jashkenas: mape: nope. load is near zero. [22:05] mjr_: jashkenas: I don't suppose you are able to reliably reproduce the badness? [22:05] bradleymeck_: how are you rendering the pixel, just proxying ? [22:05] jashkenas: here's a graph comparing the two: http://cl.ly/c776d2971b0cea3e0b02 [22:05] jashkenas: The node app actually delivers the pixel, which is kept in a buffer in memory ... it's not reading from disk. [22:05] mape: jashkenas: btw have you cached the image as a buffer? [22:06] mape: hehe nm [22:06] jashkenas: I'll gist what the Node server is up to. One sec. [22:06] mvid has left the channel [22:06] mape: jashkenas: so if you do for example apache bench on it, does it have issues working through those requests? [22:06] jashkenas: http://gist.github.com/468726 [22:07] jashkenas: mape: I've tried that locally, but not against production. I'll give it a shot. [22:07] jashkenas: recommended concurrency? [22:07] mape: like 50? [22:08] mape: think that was around the sweet spot when I tried multicore [22:08] mape: 200 for 4 cores [22:08] jashkenas: that's a lot (compared to real-world) but ok. [22:08] mostlygeek has joined the channel [22:08] mjr_: jashkenas: if it were me, I'd just leave http_trace going for a while info a log file, then correlate spikes in the graph with timestamps in the log. [22:10] jashkenas: github seems to be acting a lil funky, but here's the ab: https://gist.github.com/20cb58c0d39104757601 [22:10] jashkenas: (from this laptop) [22:10] huyhong has joined the channel [22:10] mape: Hmm that seems slow, is it a slow connection? [22:10] jashkenas: nah, it's pretty fast. but it's behind some firewall muck (NYTimes bldg) [22:11] jashkenas: this is reverse-proxied through nginx, btw. [22:11] mape: hmm k [22:11] jashkenas: but y'all haven't noticed this behavior in your apps? [22:11] mape: nope [22:11] jashkenas: I was thinking crazy gc pauses or something. [22:11] DarthShrine has joined the channel [22:11] mape: have you tried pinging something else in nginx to see if it isn't nginx acting up? [22:12] jashkenas: the rails app is reverse-proxied through the same nginx instance, and lives on the same box. [22:12] isaacs has joined the channel [22:12] jashkenas: the homepage scores should reflect that. [22:12] mape: crazy gc, but he isn't getting a lot of traffic on it? [22:12] mape: And there isn't much to clean up? 25sec sounds like a lot [22:12] mjr_: If you aren't doing any work, then you shouldn't get any big GC activity. [22:12] bradleymeck_: oi isaacs i got a present, but you are going to need to help me w/ a couple issues [22:13] jashkenas: yeah, the requests do nothing. I increment an integer in a hash, and serve the pixel. [22:13] jashkenas: nothing fancy. [22:13] mjr_: I have a proxy server doing 1 - 2 req/sec, and almost all requests take about 1 sec to complete. [22:14] jashkenas: In terms of traffic to the pixel, it's been about 25,000 requests over the past week .... not too heavy. [22:14] malkomalko has joined the channel [22:15] mjr_: jashkenas: is this running on a VPS? [22:15] creationix: jashkenas: that's very strange, I've never seen that [22:15] jashkenas: mape: just remembered. as an explanation for the slowness, it's an EC2 small we're talking about here, so there's no CPU. [22:16] jashkenas: mjr_: ec2 small. [22:16] mjr_: oh yes [22:16] mscdex: node.js rules! [22:16] mjr_: I have indeed seen that. [22:16] isaacs: bradleymeck: I <3 PRESENTS [22:16] jashkenas: mjr_: but wouldn't it affect the homepage requests, on the same box, at the same time? [22:16] mscdex: node-releated presents? [22:16] mjr_: If you don't keep your instance at least somewhat busy, you might get swapped out. [22:16] mjr_: Is node doing anything else during that time? [22:17] jashkenas: Once an hour it makes an internal API call, but the chances of that happening at the same time are minimal, and there's little node processing at that time. [22:17] mjr_: I've indeed seen some EC2 instances get really, really slow sometimes, especially ones that aren't doing much work. The busy ones seem to be fine. [22:18] jashkenas: A single JSON.serialize call on a small object. [22:18] jashkenas: ok. I'll blame it in EC2. thanks guys. [22:19] tmedema has joined the channel [22:19] creationix: has anyone used media temple for node sites yet? [22:19] maushu: jashkenas, use linode. [22:19] creationix: I'm working on moving howtonode.org there, but it seems a lot slower than linode for me [22:19] maushu: Or rackspace. [22:20] maushu: creationix, heard bad things about shared, not vps though. [22:20] jashkenas: maushu: we thought about it, but we do a ton of transfer to and from s3... [22:20] creationix: maushu: yeah, I'm no their new VE thing, it's a lot like linode or slicehost [22:20] creationix: using parallels [22:20] tmedema: is orlandov here? : ) [22:21] maushu: creationix, hmmm. [22:21] sechrist: okay so you're supposed to get access tokens with the original token and key you get, then you start using the new ones right after? [22:21] maushu: jashkenas, cheapers ec2 <-> s3, right? [22:21] sechrist: or do you use a combination [22:21] sechrist: this is retarded [22:22] jashkenas: maushu: transfers between ec2 and s3 are free. [22:22] maushu: Ah, makes sense. [22:22] creationix: jashkenas: documentcloud looks nice btw [22:23] jashkenas: creationix: thanks. the workspace has really come a long ways since you last saw it. [22:29] micheil: so, who wanted me? [22:32] jakehow has joined the channel [22:33] qbit_ has left the channel [22:33] wao has joined the channel [22:38] tmedema has joined the channel [22:39] tmedema: Hey, what's the easiest way to run a child node process with a given .js file? [22:40] stagas has joined the channel [22:41] hassox has joined the channel [22:41] pquerna: tmedema: http://github.com/pgriess/node-webworker [22:41] tmedema: I saw that pquerna, they use child_process.spawn("node", "someFile.js"), seems quite dodgy though.. eg. one can rename node to something else [22:42] tmedema: or one can have node not installed [22:42] tmedema: but run the binary [22:42] pquerna: you would rather it forked() and then did magic? [22:42] tmedema: what do you mean? [22:42] pquerna: that does have an advantage of COW stuff [22:42] pquerna: fork();.. in child, reset node process state, run script [22:43] pquerna: rather than spawning via execv [22:43] tmedema: hmm but you first have to spawn the child? [22:45] pgriess: tmedma: node-webworker will, by default, spawn the same executable as is currently running the process that calls new Webworker() [22:45] pgriess: tmedema: so, yeah, if someone renames that underneath you you get unexpected behavior [22:45] tmpvar has joined the channel [22:46] tmedema: oh, I was looking in the node-worker class pgriess [22:46] tmedema: let me check node-webworker [22:46] pgriess: tmedma: oh, heh [22:46] pgriess: tmedema: http://github.com/pgriess/node-webworker/blob/master/lib/webworker.js#L122 [22:47] tmedema: thanks pgriess [22:47] jxson has joined the channel [22:48] pgriess: tmedema: if you don't want any webworker nice-ness (message passing, etc). you can use a similar child process strategy directly. the important bit is to use process.execPath [22:48] sechrist: oh fuck my life [22:48] sechrist: auth_access_token instead of oauth_access_token [22:48] sechrist: fuck that font [22:48] tmedema: alright thanks again [22:49] sechrist: pgriess: what is actually passing the messages between the processes, IPC? [22:50] sechrist: well err that was stupid [22:50] sechrist: that's a name for different methods [22:50] pgriess: sechrist: a unix socket is established between the two and a websockets connection established. the websockets infrastructure is used for framing, but the paylaod can be anything [22:50] pgriess: i use json [22:51] sechrist: ah okay [22:51] pgriess: sechrist: http://blog.std.in/2010/07/08/nodejs-webworker-design/ [22:51] sechrist: 07/08 [22:51] pgriess: check out "Inter-Worker communication" [22:51] sechrist: good timing [22:51] pgriess: probably more details than you want [22:51] sechrist: I was just curious if it bound tcp ports or what [22:51] tmedema: that link is dead for me pgriess [22:51] sechrist: glad it doesn't [22:52] pgriess: tmedema: oh? strange [22:52] sechrist: I have enough issues with fd buffers filling up [22:52] pgriess: tmedema: can you get to http://blog.std.in ? [22:52] sechrist: with 15k connections to a longpoller [22:52] tmedema: no pgriess [22:52] satori has joined the channel [22:52] ajpiano has joined the channel [22:52] mikeal has joined the channel [22:53] pgriess: sechrist: well the master still uses a unix socket per worker (which consumes an fd) [22:53] sechrist: yeah of course [22:53] tmedema: strange pgriess , I can go there in firefox -- not in chrome [22:53] pgriess: tmedema: hm. maybe dns problems? can you try this: dig blog.std.in [22:53] sechrist: I mean it doesn't unnecessarily use up like 4 [22:53] tmedema: it works now pgriess [22:53] tmedema: looks like some temp problem [22:53] pgriess: sechrist: yeah, one per worker. if a process has 10 child workers, it will use 10 fds [22:54] pgriess: sechrist: actually it will use 20 (i'm not closing the listening socket after getting a connection). i'll fix that [22:54] pgriess: sechrist: so, 2 per child [22:55] sechrist: hm [22:56] mklappstuhl has joined the channel [22:57] pufuwozu has joined the channel [23:01] JimBastard has joined the channel [23:01] JimBastard: reporting in from nyc.js [23:02] c4milo has joined the channel [23:03] satori: How much black magic is involved in stuffing js libs inside binaryaddons? [23:03] satori: Like what node does with it's standard lib? [23:03] pgriess: satori: node stufs the contents of the .js files into char[ ] arrays and compiles them into the binary [23:04] satori: complicated to do? [23:04] pgriess: satori: probably not, though i haven't looked further into it [23:04] satori: I have an addon that needs a js lib with it to work. I'd like to make it one file [23:04] satori: I have more src code rading to do it would seem [23:05] satori: reading [23:05] pgriess: satori: i believe js2c is what does it [23:06] satori: pgriess: thx [23:06] pgriess: satori: after looking a bit, i want to revise my "probably not" qualifier to "probably" ;) [23:06] satori: heh [23:07] satori: waf is also a bit of a mystery to me. So much to learn. [23:08] pgriess: satori: yeah, my comfort level w/ waf is close to 0. give me gmake or give me death. [23:09] satori: With the proj I'm working on i just copy pasta'd other ppls wscript and editied and refactored till I got it working then left it alone :P [23:09] pufuwozu has joined the channel [23:10] tmedema: thats my standard way of operating [23:10] tmedema: :p [23:10] tmedema: well.. it's not.. but it sounded funny.. I think [23:10] mjr_: satori: you can also use npm to just figure out the multiple files for you. [23:10] satori: lol [23:11] satori: mjr_: I will be looking closely at npm when I get my proj to version 1. [23:11] tyfighter has joined the channel [23:12] satori: Atm I my proj is a js module that requires a custom binary addmon. The addon is only used directly by the js module. I figured it would be cleaner to have it all in the binary [23:12] mjr_: yeah, I'm sure it is. [23:13] mjr_: I have an addon like that too, and it just seemed easier to use npm to keep both of those files in the require path. [23:13] isaacs: satori: npm is designed to be used as a development tool primarily [23:14] isaacs: satori: you can do "npm link" in your project dir to put it into the require path as a symlink [23:15] satori: I will have to check it out more closely today then. [23:15] rolfb has joined the channel [23:15] satori: I get a bit overwhelmed by the sheer amount of new node stuff turning up. It's hard to know what 'best practices' are going to turn out to be,. [23:17] micheil: Oh man, I really want to implement FUSE bindings in node.js now. [23:17] JimBastard: im gonna be giving a live demo on the _utility bot i hope it doesnt go down [23:17] micheil: after reading http://blog.ksplice.com/2010/07/building-filesystems-the-way-you-build-web-apps/ and all.. [23:17] JimBastard: the room will be on projector so feel free to spam cocks [23:18] mape: http://blog.mozilla.com/dherman/2010/07/08/javascript-needs-modules/ [23:19] SubStack: micheil: the perl bindings for fuse are a good place to start [23:19] SubStack: so easy to make a filesystem [23:20] micheil: SubStack... they.. are.. perl... *shudder* [23:20] micheil: :P [23:20] [[zz]] has joined the channel [23:20] micheil: SubStack: I'd have to learn perl then :P (I currently know the python syntax) [23:21] SubStack: perl has so many interesting experiments [23:22] mape: and so much regexp [23:22] mjr_: I still write perl on the command line. Variable interpolation is a win. [23:23] pufuwozu has joined the channel [23:25] SubStack: I like mixing up idioms from lots of languages together [23:25] pquerna: uploading a 25mb file. 4kb buffer, 1.283 seconds, 64kb buffer 89ms [23:26] pquerna: ACTION slaps default buffers with a wet trout [23:26] mjr_: pquerna: why so slow with 4KB? [23:26] SubStack: pquerna: which os? [23:27] pquerna: osx [23:27] mscdex: network kitteh is in ur buffers slowin ur transfers down [23:27] SubStack: probably node is optimized for linux and fbsd [23:27] pquerna: just tweaking createReadStream bufferSize [23:27] benburke_ has joined the channel [23:27] pquerna: well, its going to be slower on linux too [23:28] pquerna: lemme go find colms thing :) [23:29] micheil: gee.. _announcer's quiet today. [23:30] hassox: lads quick q [23:30] hassox: what's the favourite haml implementation? [23:30] hassox: http://github.com/creationix/haml-js [23:30] hassox: http://github.com/visionmedia/haml.js [23:30] hassox: or another [23:30] pquerna: http://www.stdlib.net/~colmmacc/Apachecon-EU2005/scaling-apache-handout.pdf <- page 10 [23:30] tjholowaychuk: http://jade-lang.com [23:31] tjholowaychuk: is very similar [23:31] pandark_: sed :P [23:31] tjholowaychuk: but implemented much better than both [23:31] creationix: hassox: those two about about the same, but jade is better if you like the new syntax [23:31] hassox: ohhh [23:31] creationix: btw tjholowaychuk == visionmedia [23:31] hassox: ah gotcha [23:31] hassox: so does jade to async functions in it? [23:31] tjholowaychuk: to async functions in it? what do you mean [23:32] ryah: hi [23:32] creationix: ryah: hello [23:32] hassox: can you use async functions inside a template? i.e. rendering partials [23:32] hassox: hey ryah [23:33] mape: still keeping germany unsafe? [23:33] tjholowaychuk: hassox: none of them provide partials out of the box [23:33] tjholowaychuk: AFAIK [23:33] ryah: im holding down the state [23:33] tjholowaychuk: hassox: express HEAD / connect (branch) show how to do this though [23:33] creationix: tjholowaychuk: hmm, async helpers would be a good think to support in all template compilers [23:33] mjr_: pquerna: it's interesting that this paper doesn't seem to mention the effects of TCP Segmentation Offload, which surely is coming into play here. [23:33] mape: hehe [23:33] pufuwozu has joined the channel [23:33] hassox: kk [23:34] tjholowaychuk: creationix: the filters should not be much of a problem, you take the hit once but that is it [23:34] hassox: emjay used to support async partials and such, but it's written for a very old node and doesn't work anymore [23:34] tjholowaychuk: my partial support is cheating I guess haha but meh. would be nice to have built-in support for async placeholders [23:34] creationix: well, I'm not worried about performance, just the fact that it's an async function [23:34] creationix: yeah, placeholders need to be built in [23:34] tjholowaychuk: yeah exactly, same here. performance-wise you would never want to load the same file contents twice anyways [23:35] hassox: right but if it's a partial the first access could be a cache and the others could just immediately call [23:35] pquerna: mjr_: true, though thats more important if you are DMAing/sendfile'ing data, most things in node have to do with how efficient is a read() call, and with our context switch overhead, I suspect a quite large default buffers will prove to be big improvements [23:35] creationix: I would like the filters in jade/haml to just be syntax sugar to call helper functions [23:35] creationix: so that they aren't part of the compiler at all [23:35] pquerna: though SSDs mess many of these assumptions up :) [23:36] pquerna: but thats for someone else to fix :D [23:36] creationix: then things like partial and filters are all passed in as just helper functions [23:36] tjholowaychuk: I have that as an issue i think [23:36] tjholowaychuk: i know what your thinking [23:37] tjholowaychuk: its essentially no different besides the naming i suppose. jade.filters could be jade.helpers or whatever, but conceptually [23:37] tjholowaychuk: you could have compile / runtime "helpers" [23:37] creationix: tjholowaychuk: I'm just trying to factor as much out of the actual compiler as possible, but I don't think async support is something that can be done externally [23:37] mjr_: pquerna: I think TSO wins pretty big any time you have more data ready to send than the network card can accept. It saves the kernel multiple round trips into the nic, and also the effort of computing the headers for all of those packets. [23:37] siculars has joined the channel [23:37] hassox: tjholowaychuk: creationix where's the best place for me to get familiar? just the readme or is there somewhere else atm [23:38] creationix: tjholowaychuk: I'll make a super simple ejs style compiler with the features I want [23:38] tjholowaychuk: hassox: for jade? http://github.com/visionmedia/jade [23:38] mjr_: So if you have 64KB in memory, somehow, doing one big write should be less CPU than doing several smaller writes. Presumably less CPU will go "faster". [23:38] creationix: hassox: or http://jade-lang.com/ [23:38] rauchg_: or lang-jade.com [23:38] rauchg_: [23:38] creationix: :) [23:38] mape: node knockout is slowely filling up [23:38] hassox: creationix: is ther any more than the two boxes on jade-lang.com? [23:38] tjholowaychuk: nope [23:38] tjholowaychuk: lol [23:38] tjholowaychuk: check the readme [23:38] micheil: we need more. [23:38] visnup: mape: it's creeping along [23:39] hassox: thanx fellas [23:39] mape: visnup: so what about the ideas page? :D [23:39] visnup: mape: :) been in DC for vacation; just got back yesterday [23:39] mape: ah k [23:40] visnup: mape: and instead of working on the airplane, I just watched a lot of netflix [23:40] visnup: :( [23:40] micheil: oh noes! github's down for me :( [23:41] tmpvar has joined the channel [23:41] tjholowaychuk: creationix: refactored the sessions a bit, still needs some work but the internals for writing a Store are easier now https://gist.github.com/3d0e40018de23018cbd1 [23:42] mape: tjholowaychuk: so jade with routes on connect, easy enough? [23:42] tjholowaychuk: mape: if your using jade stand-alone id suggest jade.renderFile() [23:43] hassox: tjholowaychuk: what's the go for sessions atm? [23:43] hassox: ACTION has been out of it a bit [23:43] tjholowaychuk: hassox: for the Connect middleware [23:43] tjholowaychuk: the session stuff was just a quick hack I got in, so refactoring it a bit [23:44] tjholowaychuk: would be nice if our stores had #all() or #filter() too [23:44] tjholowaychuk: if you want to display active users or something [23:45] tjholowaychuk: creationix: what are your thoughts on that? [23:45] mape: would be nice to get nStore in such a state that it could be used for semi persistant stuff like sessions without having dependencies like couch/mongo [23:45] tjholowaychuk: #each() #all() #filter() etc [23:45] tjholowaychuk: mape: for sure I agree, I think tim is working on that [23:45] creationix: tjholowaychuk: looking... [23:45] steadicat has joined the channel [23:46] tjholowaychuk: creationix: currently our api does not really allow for iterating active sessions [23:46] creationix: tjholowaychuk: I'm still trying to understand the boundaries between the parts [23:46] tjholowaychuk: I guess if you had users in a db you could check their sid and iterate that way [23:47] tjholowaychuk: thats probably the best way to leave the api dumb [23:47] creationix: tjholowaychuk: I guess, I think iterating over sessions is good [23:47] tjholowaychuk: creationix: we can #fetch() though, so you could cooperate with a user db and iterate that way [23:47] tjholowaychuk: for key/val stores that dont support enumeration etc [23:48] hassox: tjholowaychuk: sorry to keep bugging you [23:48] hassox: where can I find info on connect? [23:48] tjholowaychuk: hassox: np [23:48] tjholowaychuk: hassox: http://extjs.github.com/Connect [23:48] hassox: http://github.com/extjs/Connect doesn't have much [23:48] hassox: beutiful thanx [23:48] creationix: hassox: also the examples in the code help [23:49] creationix: tjholowaychuk: what key/value stores don't support enumeration? [23:49] tjholowaychuk: hassox: and man pages :D man connect, man connect-session etc [23:49] hassox: kk [23:49] tjholowaychuk: creationix: I just dont think our session api should end up being an ORM haha [23:49] stepheneb has joined the channel [23:49] tjholowaychuk: thats my concern with that [23:49] mape: tjholowaychuk: one complaint on the docs, they are kinda confusing, never quite got the navigation and thought I was still on the same page when i clicked a middleware [23:50] tjholowaychuk: mape: ah :) yeah I see what you mean [23:50] creationix: tjholowaychuk: our graphics team at Sencha said they can help me make a nice site for connect sometime next week [23:50] tjholowaychuk: wahoo [23:50] tjholowaychuk: I still think we should generate shit from md though [23:51] mde: mape: Fit of inspiration, this seems to work everywhere: http://gist.github.com/467367 [23:51] tjholowaychuk: but they can fuck with the css / head.html / foot.html easily enough [23:52] mape: mde: so no table hacks for you? :D [23:53] creationix: tjholowaychuk: how about split the session code into two halves. One will handle req, cookies, and all the http related stuff, the other half will be a dumb store that knows nothing about http [23:53] creationix: then we could drop in generic stores like nStore [23:53] tjholowaychuk: thats pretty much how it is now [23:53] creationix: yeah, mostly, but your store is messing with req currently [23:53] mde: mape: I have be laboriously specifiying pixel-widths. :) [23:54] mde: I want to stab myself. [23:54] mde: With a pixel. [23:54] tjholowaychuk: yeah, otherwise in your app you will have to do stuff like req.sessionStore.destroy(req.session.id, ...) [23:54] creationix: tjholowaychuk: get(key, callback), save(key, data, callback) [23:54] hassox: tjholowaychuk: creationix dudes can I ask you guys a couple of q's about connect? [23:54] tjholowaychuk: it would just make things a bit uglier [23:54] creationix: hassox: sure [23:54] hassox: so [23:54] hassox: the lint module checks that either the request is responded to or that next is called [23:54] hassox: what about when implementing a router/>? [23:55] hassox: that would make lint respond that it's not awesome correct? [23:55] tjholowaychuk: creationix: on the Store developers end it would be nice to change the api, but from the app developer it would be an annoyance IMO to constantly pass the sid etc [23:56] tjholowaychuk: hassox: lint is kinda dumb, it just has "suggestions", nothing concrete at all [23:56] hassox: kk [23:56] tjholowaychuk: more of a proof of concept [23:56] creationix: tjholowaychuk: no, the session middleware would handle all that ugly for the user [23:56] mape: mde: so the one I pasted didn't fit your need? [23:56] hassox: so the method override... does that look for the method in the _method param? [23:56] hassox: sorry there it is [23:56] coolston_bro has joined the channel [23:57] hassox: will it look in the get params or will it try and look in the post params as well? [23:57] tjholowaychuk: creationix: maybe draft up a gist of what you would see for the developer end of the api [23:57] mde: mape: It was the IE shrink-to-fit problem. It was expanding to fit, adding 10px on the right. [23:57] creationix: hassox: yes, the post params [23:57] hassox: hrm [23:57] creationix: so it requires the body decoder [23:57] hassox: so you have to buffer a potential file upload to see where it should be routed [23:57] creationix: currently supports json or x-www-form-encoded [23:58] tjholowaychuk: urlencoded [23:58] tjholowaychuk: i want to add connect-form support in there or hack something up for that [23:59] hassox: creationix: tjholowaychuk also, is there a way to build a stack independently, and then pass it about as an 'app'