[00:00] blogometer: Okay. Build from source. Install to /opt. Can't see why not. [00:00] WALoeIII has joined the channel [00:00] mjr_: If I had to go and build something, I'd probably reach for the ruthless efficiency of daemontools. [00:00] mjr_: blogometer: hey, it's your computer, why not? [00:01] blogometer: mjr_: But daemontools is also ruthlessly unconventional. [00:01] blogometer: I don't like all the little files. [00:01] mjr_: yeah, it's really out of place, but I love how Unix it is. [00:01] blogometer: qmail too. Rather have a larger configuration I can read. [00:02] WALoeIII has joined the channel [00:02] mjr_: hang on, someone is about to say that djb is an asshole [00:02] blogometer: A preference of mine. [00:02] mjr_: wait for it... [00:02] atmos: fuck that guy [00:02] mjr_: there it is [00:02] atmos: i actually love his stuff [00:03] atmos: people might gripe about shit like a bunch of little files, or it being unconventional [00:03] atmos: but if you run a ton of crap, his stuff doesn't break down on you [00:03] blogometer: mjr_: Not my computer, but still, no good reason not to build from source. [00:04] mjr_: atmos: I've run machines with daemontools, tinydns, and qmail on them that I haven't touched in years. [00:04] mjr_: Literally years. [00:05] bdha: djbware is good code. [00:05] bdha: qmail is a pain in the ass, though. [00:05] blogometer: mjr_: Wow. [00:06] bdha: dnscache++ tinydns++ [00:06] cloudhead has joined the channel [00:06] blogometer: cloudhead: Thanks for Vows. [00:07] _announcer: Twitter: "Just Hello World'd with Node.js, pretty freaking rad. now to go watch some Futurama." -- Dave Rupert. http://twitter.com/davatron5000/status/21955282199 [00:08] creationix: isaacs: did you see this https://peepcode.com/system/uploads/2010/node-js-commas.png [00:08] creationix: from the new peepcode on node [00:08] twoism has joined the channel [00:09] codetonowhere1 has joined the channel [00:09] siedrix has joined the channel [00:10] _announcer: Twitter: "good post "Node.js and Redis Pub-Sub" http://bit.ly/cC5l6d #nodejs #redis" -- Régis Gaidot. http://twitter.com/rgaidot/status/21955461082 [00:11] _announcer: Twitter: "Is always blown away by the quality of @peepcode's screencasts. The Node one is great so far. #nodejs" -- Cameron Barrie. http://twitter.com/whalec/status/21955518056 [00:11] _announcer: Twitter: "Native Node.JS BSON parser Results http://bit.ly/aAEOPe nodejs # # # mongodb bson" [lv] -- Régis Gaidot. http://twitter.com/rgaidot/status/21955554907 [00:12] junkee[] has joined the channel [00:12] joshbuddy has joined the channel [00:14] MikhX has joined the channel [00:14] blogometer: 2142 lines of Java became 213 lines of Node.js JavaScript. [00:15] WALoeIII has joined the channel [00:15] MikhX has joined the channel [00:16] Blackguard has joined the channel [00:23] _announcer: Twitter: "playing around with node.js" [es] -- Francisco Reyes. http://twitter.com/pacorro2000/status/21956401269 [00:23] _announcer: Twitter: "I have to get http://peepcode.com/products/nodejs-i to apply this fucking amazing demo: http://wg.peepcode.com/" -- Amr Numan Tamimi. http://twitter.com/amrnt/status/21956434810 [00:27] _announcer: Twitter: "@ Atprompt I'm on my definite answer yet, just looking badly, but with Jaxer munbeopman Node.js and JS raneungeot dareundeut except the concept itself completely." [ko] -- 김민태. http://twitter.com/ibare/status/21956661799 [00:28] aheckmann has joined the channel [00:29] _announcer: Twitter: "@ Atprompt second Node.js simply sum up the V8 engine as the rapper's unique solution only if the server is php or asp Jaxer server-side scripting such as HTML generation should I do?" [ko] -- 김민태. http://twitter.com/ibare/status/21956794038 [00:29] _announcer: Twitter: "Modular, full-service web framework for node.js: http://geddyjs.org/ #javascript #webapp" -- Loggly, Inc.. http://twitter.com/loggly/status/21956819576 [00:30] _announcer: Twitter: "@ Atprompt so Node.js WebSocket include a web server or servers to create or make available any such thing, and Jaxer include php or asp would know that the alternative is possible. Born in a completely different concept, and the boys do, la. ^ ^;" [ko] -- 김민태. http://twitter.com/ibare/status/21956865540 [00:30] _announcer: Twitter: "node.js + web sockets = real time analytics http://bit.ly/bWY2iB" -- jalbertbowdenii. http://twitter.com/jalbertbowdenii/status/21956880808 [00:30] ben_alman has joined the channel [00:31] isaacs: creationix: no, but that's FUCKING AWESOME!!! [00:32] creationix: :) [00:32] malkomalko_ has joined the channel [00:32] Tim_Smart: blogometer: What was this for? [00:34] softdrink has joined the channel [00:34] blogometer: Tim_Smart: It is a server of a truck route with stops for a Google Maps visualization of telemetry data. [00:35] mikeal has joined the channel [00:35] Tim_Smart: Right. [00:35] _announcer: Twitter: "@topfunky that's some pretty funky music in the node.js opening!" -- brettgoulder. http://twitter.com/brettgoulder/status/21957217602 [00:35] tekky has joined the channel [00:38] brianleroux has joined the channel [00:42] jesusabdullah: Peepcode looks pretty cool actually [00:43] blogometer: Doesn't make sense? It reads through a table of GPS readings and pulls out a specific truck for a specific day. [00:45] _announcer: Twitter: "Loooking forward to Part II of the NodeJS @peepcode screencast. Looking good so far." -- Cameron Barrie. http://twitter.com/whalec/status/21957937706 [00:46] blogometer: Expect a flood of new developers with a Peepcode screencast lying around. [00:47] jesusabdullah: \o/ [00:49] dannycoates has joined the channel [00:50] _announcer: Twitter: "Talking with staff about AcademiaJava # I / O (non) blocking, and other ephemera node.js # yaw" [pt] -- Rafael Nunes. http://twitter.com/rafanunes/status/21958260926 [00:50] Tim_Smart: Unfortunately I'm a poor developer who can't afford to watch a $9 screencast. [00:52] isaacs: Tim_Smart: i'm a cheap developer who feels there are better things to do with $9 than watch a screencast. [00:52] mjr_: Also, both of you guys already know about node.js [00:52] Tim_Smart: Pizza? [00:54] siedrix has joined the channel [00:55] benburkert has joined the channel [00:57] bradleymeck has joined the channel [00:58] blogometer has left the channel [00:59] Dowzee has joined the channel [01:00] DozyPieman has left the channel [01:00] bradleymeck: can anyone think of a regexp that can only be implemented with use of non-greedy matching (ie. +? *? ??) [01:01] mscdex: is there an easy way to add buffers together? [01:03] _announcer: Twitter: "just let me tell you today, rails rumble + nodejs ... wanted to have participated http://bit.ly/9en4Vp" [pt] -- Caires Vinicius. http://twitter.com/cairesvs/status/21959140471 [01:05] MaSch has joined the channel [01:07] bradleymeck: mscdex, just manually i think [01:07] mscdex: darn [01:07] Dmitry has left the channel [01:07] mscdex: it would be nice to have the + operator [01:07] mscdex: :S [01:07] satori_: it would be nice to have custom operators in js [01:07] mscdex: well, i mean in c++ land [01:08] satori_: figured that :P [01:08] bradleymeck: i dont like operator overloading, heck i barely like proxies [01:08] satori_: I am playing with matrix math in js atm, and it would be really handy [01:09] satori_: the new webgl datatypes are going to really useful for general web scripting too [01:10] satori_: Float32Array... is very much like node buffers, but in the browser [01:10] satori_: and Uint16Array [01:10] satori_: contiguous binary mem. [01:10] Yuffster has joined the channel [01:10] bradleymeck: wish we had copy on write memory slices [01:11] gm__: hm [01:11] gm__: hi [01:11] bradleymeck: yo [01:13] _announcer: Twitter: ""JavaScript framework that enables Sabasaidopuroguramingu by" node.js 0.2.0 "release" http://bit.ly/acUjUb "Aptana Jaxer" Which is a good or?" [ja] -- 清水正行. http://twitter.com/_shimizu/status/21959869988 [01:14] satori_: Actually the new browser array types kick ass over plain arrays.. http://weblog.bocoup.com/javascript-typed-arrays [01:16] satori_: These new array types will have huge implications even for non webgl client apps [01:16] dannycoates: bradleymeck: i like your idea about integrating a test suite with node-inspector [01:17] _announcer: Twitter: "Got the Meet Node.js peepcode, maybe something to watch on the long haul flight" -- Mark Jones. http://twitter.com/cricketgeek/status/21960130691 [01:17] bradleymeck: if i knew a bit more about its codebase i could try to help [01:19] zemanel has joined the channel [01:20] dannycoates: bradleymeck: i think a test panel with cool red/green ui would be a sweet addition, with the option to jump into the debugger automatically [01:22] gwoo has joined the channel [01:22] nerdEd has joined the channel [01:24] bradleymeck: the only problem i see is with async tests, buffering all the incoming events [01:25] bradleymeck: idk how the c++ side deals with that during a break [01:28] brianleroux has joined the channel [01:29] inimino: bradleymeck ⋱ I believe there are no such regexes, but the expansion to a non-non-greedy form can be considerable. [01:29] Tim_Smart: Hmm I think I might use this for Javascript prototypes now... https://gist.github.com/1673126bc8902d4b797a [01:29] Tim_Smart: Its hawt. [01:29] bradleymeck: pfff thats fine [01:30] bradleymeck: why not just use the new operator? [01:30] danielzilla has joined the channel [01:31] ditesh|cassini has joined the channel [01:31] dannycoates: bradleymeck: me neither, but i have noticed that setInterval keeps adding to the event loop even when stopped at a break [01:31] Seivan_ has joined the channel [01:31] Seivan_: throw new Error('addListener only takes instances of Function'); [01:32] Seivan_: Not sure how to debugg that but when trying to run my js I get it. [01:32] Seivan_: request.addListener("end", function() { [01:32] _announcer: Twitter: "Stepping up the job hunting since something I was chasing failed to transpire. #job #ruby #rails #nosql #nodejs" -- James Sadler. http://twitter.com/freshtonic/status/21961267758 [01:32] dannycoates: async can certainly make unit testing more difficult [01:34] Seivan_: Anyone? [01:34] Seivan_: This is the codE; http://gist.github.com/546723 [01:35] mscdex: woot! auto type conversion for node-mysql! [01:35] mscdex: :-D [01:37] richcollins has joined the channel [01:39] pquerna: sh1mmer: pastebin? [01:39] sh1mmer: que? [01:40] pquerna: wrt cloudkick email [01:40] _announcer: Twitter: ""Towards Auto-sharding in Your Node.js App" - A new consistent hashing module for node.js http://bit.ly/cWMTEW http://bit.ly/aKef5v" -- Brian. http://twitter.com/briannoguchi/status/21961808990 [01:40] sh1mmer: oh. Sorry, I just connected the dots [01:40] sh1mmer: :) [01:40] sh1mmer: pquerna: sorry if that tweet came off grumpy [01:41] gerad has joined the channel [01:41] tpryme has joined the channel [01:42] badaxx has joined the channel [01:42] sh1mmer: http://gist.github.com/546736 [01:42] _announcer: Twitter: "@OliverUv Starters, I wasn't comparing Node.js with rails. It's not the same thing. Apples and Gunpowder. Second, I was questioning the.." -- Seivan Heidari. http://twitter.com/Seivanheidari/status/21961985867 [01:43] _announcer: Twitter: "@OliverUv ... the hype regarding Node.js that for instance Eventmachine for Ruby can't do? Some say it's faster for some thigns and slower.." -- Seivan Heidari. http://twitter.com/Seivanheidari/status/21962010998 [01:43] pquerna: sh1mmer: i think i can do dkim for monitor.cloudkick.com relatively easily, some others not as much. [01:43] _announcer: Twitter: "@SeivanheidariThe difference is that node.js was built non-blocking from the ground up. Most ruby libs can't be used with Event Machine" -- Tim Caswell. http://twitter.com/creationix/status/21962068587 [01:43] sh1mmer: pquerna: that's the one that matters most to me [01:44] sh1mmer: pquerna: I can search for other mails, but the monitoring ones I like to see ASAP, obviously :) [01:44] sh1mmer: although tbh, I'm not sure if yahoo.com is a common use case for you guys. I'm sure gmail is much more common [01:45] dannycoates: Seivan_: what happens if you get rid of the request end event? since you are setting a request listener with createServer, request will be 'end'ed already [01:47] sudoer has joined the channel [01:48] BrianTheCoder has joined the channel [01:50] jetienne has joined the channel [01:51] visnup has joined the channel [01:52] _announcer: Twitter: "Cloudkick | blog: Writing Node.js Native Extensions http://tumblr.com/x2sgjz9xo" -- Toby Hede. http://twitter.com/tobyhede/status/21962694585 [01:56] guybrush: what authentication/permission framework do you guys use (if any)? [01:56] eisd has left the channel [01:56] bradleymeck: custom [01:58] bradleymeck: lots use connect/express auth from what i gather though [01:59] _announcer: Twitter: "connect-jsonrpc middleware for # nodejs - http://bit.ly/ctPTmm" [da] -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/21963154399 [01:59] guybrush: yes i am currently playing with connect-auth [01:59] junkee[] has left the channel [01:59] guybrush: and i am trying to wrap it with sort of permission-managment [02:01] bradleymeck: well i know jimbastard had something a while back, roles.js or something [02:01] guybrush: i see [02:01] pgriess has joined the channel [02:03] twoism has joined the channel [02:03] Aria has joined the channel [02:03] Tim_Smart: js> arguments [02:03] gbot2: Tim_Smart: {} [02:04] Tim_Smart: js> arguments.callee.caller.toString() [02:04] gbot2: Tim_Smart: Error: TypeError: arguments.callee.caller has no properties [02:04] bradleymeck: hehe, overwritting arguments [02:04] matt_c has joined the channel [02:05] robotblake has joined the channel [02:06] bradleymeck: js> eval("test=1") [02:06] gbot2: bradleymeck: 1 [02:06] bradleymeck: oooo i have an eval [02:06] Tim_Smart: eval in eval. [02:07] bradleymeck: (function(){return arguments.caller.arguments.caller})() [02:07] bradleymeck: js> (function(){return arguments.caller.arguments.caller})() [02:07] gbot2: bradleymeck: Error: TypeError: arguments.caller has no properties [02:07] bradleymeck: odd [02:07] Tim_Smart: js> Object.getOwnPropertyNames [02:07] gbot2: Tim_Smart: undefined [02:08] Tim_Smart: Pfft. [02:08] dan_manges has joined the channel [02:08] bradleymeck: is he running in node? [02:08] Tim_Smart: js> arguments.callee [02:08] gbot2: Tim_Smart: arguments.callee.caller [02:08] gbot2: Tim_Smart: null [02:08] Tim_Smart: That is the top function. [02:09] bradleymeck: js> (new Error()).stack [02:09] gbot2: bradleymeck: "Error()@:0\n()@/tmp/jsevalbot.js:38\n()@/tmp/jsevalbot.js:38\n@/tmp/jsevalbot.js:10\n" [02:09] bradleymeck: not quite the top, n()? [02:11] _announcer: Twitter: "Sabasaidopuroguramingu enable JavaScript frameworks of "node.js 0.2.0" release - SourceForge.JP Magazine: Open Source http://tumblr.com/x7ngk14i8 full topic" [ja] -- syu. http://twitter.com/syuta/status/21964064303 [02:12] bradleymeck: js> eval("n()") [02:12] gbot2: bradleymeck: Error: ReferenceError: n is not defined [02:12] jakehow has joined the channel [02:14] bradleymeck: js> var keys=[];var global=(function(){return this})();for(var p in global) keys.push(p);keys [02:14] gbot2: bradleymeck: [] [02:15] bradleymeck: no globals, good man [02:15] raymorgan has joined the channel [02:16] Tim_Smart: bradleymeck: Someone put a coffee-script repl in #coffee. I used the arguments object to print out the entire src/node.js [02:16] bradleymeck: lol [02:17] Tim_Smart: A big wall of text in other words. [02:17] bradleymeck: i see how gbot2 can be doing it, but still dont think its running on any current if any impl of node [02:19] bradleymeck: js> eval("String(pp)") [02:19] gbot2: bradleymeck: "function pp(o, depth) {\n return pp_r(o, depth == void 0 ? 8 : depth);\n}" [02:19] bradleymeck: js> eval("String(pp_r)") [02:19] gbot2: bradleymeck: "function pp_r(o, d) {\n var a = [], p;\n if (!d) {\n return \"...\";\n }\n if (o === void 0) {\n return \"undefined\";\n }\n if (o === null) {\n return \"null\";... [02:21] benburkert has joined the channel [02:21] devongovett has joined the channel [02:22] twoism has joined the channel [02:25] mattly has joined the channel [02:27] ironfroggy_ has joined the channel [02:27] _announcer: Twitter: "Node.js Screencast from Peepcode! - http://jms.io/ar5BZ9" -- Justin Shoffstall. http://twitter.com/jmshoffs0812/status/21965247773 [02:28] markwubben has joined the channel [02:28] JimBastard has joined the channel [02:28] JimBastard: mmm back on the mac book [02:28] JimBastard: stupid windows [02:29] _announcer: Twitter: "@lessallan Everyone's doing it. #nodejs" -- Chris Eppstein. http://twitter.com/chriseppstein/status/21965381223 [02:30] bpot has joined the channel [02:30] matt_c: JimBastard: I cringe every time I hear someone use "cygwin". [02:31] _announcer: Twitter: "@ryah +1 /cc @jresig. Actually, both you guys are my JS heroes, looking forward to sharing my nodejs/mongo/jquery project w/ you both" -- Aaron White. http://twitter.com/aaronwhite/status/21965494170 [02:31] bradleymeck: chyjyn? [02:33] mjr_ has joined the channel [02:36] bradleymeck: i lol everytime wine beats windows on a benchmark [02:37] _announcer: Twitter: "@ryah I can, and do : ) the http://thingler.com — node.js, on the other hand.." -- Alexis Sellier. http://twitter.com/cloudhead/status/21965945945 [02:40] jacobolus has joined the channel [02:42] devongovett has left the channel [02:46] mikeal has joined the channel [02:46] softdrink has joined the channel [02:47] _announcer: Twitter: "great ... # PeepCode on node.js now yes." [pt] -- Adriano Almeida. http://twitter.com/adrianoalmeida7/status/21966703271 [02:48] _announcer: Twitter: "Take a look at the NODE js, and also nice:) danielvlopes @ @ @ rafaspinola __leroy only now able to tweet u_u" [pt] -- tOn. http://twitter.com/dev_ton/status/21966790092 [02:49] _announcer: Twitter: "I can't find the node.js screencast on the peepcode website... did anybody get it already?" -- Rodrigo Kochenburger. http://twitter.com/divoxx/status/21966833082 [02:49] raymorgan has joined the channel [02:52] mscdex: SIGWIN [02:54] _announcer: Twitter: "Node.js version of Jake now has async support for tasks: http://github.com/mde/node-jake #nodejs #node.js" -- Matthew Eernisse. http://twitter.com/mde/status/21967253180 [02:55] Seivan_ has left the channel [02:55] matt_c: SIGWINCH! [02:55] mscdex: SIGWENCH? [02:55] mscdex: :-D [02:58] mscdex: aw man, Tom didn't release an ncurses patch this weekend :-( [02:58] mscdex: sad times [02:59] _announcer: Twitter: "@strlen that would definitely improve our synergy for Q4. But it's not going to scale, unless we use node.js" -- Alejandro Crosa. http://twitter.com/alejandrocrosa/status/21967612194 [03:00] mr_danie1 has joined the channel [03:01] _announcer: Twitter: "Downloading @peepcode's Node.js screencast. Been looking forward to a smooth into! http://bit.ly/bW7YXf (Thanks for the heads up @benbinary)" -- Tony Carrera. http://twitter.com/tonycarrera/status/21967815186 [03:04] _announcer: Twitter: "@ryah Need Stream.write() support for partial Buffers; existing API requires use of (slow) Buffer.slice() #nodejs" -- Peter Griess. http://twitter.com/pgriess/status/21968056145 [03:05] meso has joined the channel [03:06] mikeal: that shouldn't be part of Stream.write() [03:06] mikeal: there should be a method that returns you part of an existing buffer [03:06] ironfroggy_ has joined the channel [03:06] mikeal: slice actually creates a new buffer and returns it [03:07] sh1mmer: pquerna: quick question [03:07] sh1mmer: I just wrote a cloud-kick agent plugin [03:07] sh1mmer: I'm getting exit code: 127 output: /usr/bin/env: node: No such file or directory [03:08] sh1mmer: ./checkNode.js works just fine including as root [03:08] aho has joined the channel [03:08] rkieffer has joined the channel [03:08] hassox has joined the channel [03:09] sh1mmer: http://gist.github.com/546847 [03:10] mscdex: hrm, i thought Buffer.slice references the old memory? [03:11] _announcer: Twitter: "@ryah Also FYI node-strtok/msgpack pack perf now on-par with native (unpack still +30%) #nodejs" -- Peter Griess. http://twitter.com/pgriess/status/21968557564 [03:11] statim has joined the channel [03:11] _announcer: Twitter: "@alejandrocrosa We are going to implement OMG CORBA standard for node.js during the next day hackday?" -- Alex Feinberg. http://twitter.com/strlen/status/21968594632 [03:14] pquerna: sh1mmer: is node in the path? [03:15] pquerna: its probally running with a minimal PATH [03:17] sh1mmer: docs said it ran as root [03:17] sh1mmer: node is in root's path [03:17] siculars has joined the channel [03:17] jetienne: sh1mmer: replace node by bash and see what happen [03:19] aurynn: What's the method that does a deep print of an object? [03:19] badaxx has joined the channel [03:19] andrehjr has joined the channel [03:19] jetienne: aurynn: sys.inspect got option about depth [03:21] sh1mmer: aurynn: sys.inspect() [03:21] aurynn: awesome, thank you :) [03:21] danielzilla: ACTION discovers the gold mine that is ``node/src/node.js``. [03:22] sh1mmer: jetienne: bash works [03:22] sh1mmer: but /usr/bin/env node doesn't [03:22] sh1mmer: which is interesting [03:22] jetienne: sh1mmer: it means that node is not on the path [03:22] jetienne: sh1mmer: hardcode the path [03:24] sh1mmer: right [03:24] Validatorian: Aria: Did you get my message on github? [03:24] sh1mmer: makes me wonder why it isn't [03:24] Aria: I did. I'm thinking about it. [03:25] Validatorian: k, thanks [03:28] mikeal has joined the channel [03:29] sh1mmer: pquerna: jetienne: sweet it's running [03:29] sh1mmer: now cloud-kick is monitoring that node is running on my rackspace :) [03:31] aurynn: woo. Prepared queries work. [03:32] _announcer: Twitter: "Just finished a @CloudKick plugin to monitor my Node.js (or any upstart) job on my @Rackspace Cloud Ubuntu boxes." -- Tom. http://twitter.com/sh1mmer/status/21970035410 [03:33] sh1mmer: aurynn: are you contributing to Felix's mySql module? [03:33] aurynn: sh1mmer, no, to creationix's postgres module [03:34] sh1mmer: ah ok [03:34] brianleroux has joined the channel [03:34] justin_ has joined the channel [03:34] danielzilla: aurynn: WHOO! [03:34] danielzilla: ACTION gets out his cheerleading poms. [03:35] aurynn: :) [03:35] statim: if one were to start building a web app using one of the node frameworks today, with plans to have it run in a real production environment and not just be a fun experiment, anyone have a good sense of what framework would be a good mid/long term choice to go with? assuming there is some "sense" out there of which direction things are heading [03:35] pquerna: sh1mmer: think i'll be able to push dkim in a few, just verifying it won't cause all mail to bounce :x [03:35] sh1mmer: heh [03:35] sh1mmer: yeah don't do that [03:35] sh1mmer: :D [03:36] mscdex: danielzilla: nature boy? [03:36] satori_ has joined the channel [03:36] mde: statim: I'm building Geddy, and we are using parts of it for our third-party dev platform at Yammer, but Connect/Express are probably better supported right now. [03:36] mscdex: gedddddddyyyyyy! [03:37] danielzilla: mscdex: Sorry? Not familiar with the reference. [03:37] statim: mde: ah cool you are a yammer guy? [03:37] mde: mscdex: I saw them play live the other week. They were fantastic. :) [03:37] mde: statim: Yes, I'm doing mainly the platform stuff, but some UI work too. [03:37] isaacs: npm has configurable loglevels now. [03:38] isaacs: npm install blerg --loglevel win [03:38] aurynn: ACTION happywoos [03:38] isaacs: (in HEAD, that is) [03:38] aurynn: I am awesome! [03:38] aurynn: It works! [03:38] aurynn: *dance* [03:38] statim: mde: right on… i was with threadbox which was in a sort-of similar space, although probably were never even on your radar [03:39] austinfromboston has joined the channel [03:40] mde: statim: Right, the space is moving very quickly. The main thing we're watching right now is Salesforce, and then there are some smaller ones like SocialCast. [03:40] blogometer has joined the channel [03:40] mscdex: danielzilla: http://www.youtube.com/watch?v=sRDJLqMFXVI [03:41] blogometer: Anyone here contribute to Connect? [03:41] mde: And we're hiring JavaScript guys, like everybody, of course. Growing pretty fast. :) [03:42] micheil: mde: where at? [03:42] mde: Yammer. [03:42] micheil: hmm.. was that the twitter for businesses? [03:42] blogometer: Because if you do, I'd like to add URL rewriting to to ... [03:42] phound: Anyone use Socket.IO and the flashsocket stuff? My node server doesn't seem to want to listen on port 843 but it sounds like Socket.IO is supposed to take care of that automatically... [03:42] blogometer: micheil: Yup. [03:42] blogometer: ... connect, if it is not already there. [03:43] micheil: phound: for ports < 1024 you need to be root to bind to them [03:43] mde: micheil: Right, we started with microblogging, and we're building a larger social-network platform. [03:43] micheil: in otherwords, sudo node app.js [03:43] statim: mde: ya, js is the new ruby haha. at threadbox we were actually using xmpp for the realtime with strophe which was cool, although i want to see what i can do with a pure node.js app instead [03:43] micheil: mde: yeah, I tried to use it at some stage, but realised I didn't really have a use for it. [03:43] mde: statim: Ah, right on. I contributed to Strophe when I was working at Seesmic. [03:44] statim: strophe = badass…. love it [03:44] phound: micheil: ah right, thanks. surprised I didn't see an error anywhere [03:44] jetienne: sh1mmer: nice. what was the issue [03:44] phound: statim: yeah strophe is nice [03:44] mde: We apparently built realtime with XMPP three times, and threw it away three time. [03:44] mattly_ has joined the channel [03:44] mde: micheil: If what you're doing is mostly out in the open, it might not be that useful, right. [03:44] statim: mde: because you werent using most of xmpp, or other reasons? [03:45] micheil: mde: not only that, but I'm a one-man band generally. [03:45] micheil: and I subcontract into other companies [03:45] mde: I wasn't involved, but I think it was clustering and the general fiddliness of it. [03:45] mde: We were using Tigase at Seesmic, and it fell over every week. [03:45] mde: Now we're just doing plain old Comet with Scala/Java. [03:46] micheil: I wish I knew why I keep getting bug reports on node-websocket-server of it not closing sockets.. [03:46] statim: yep… for a large scale (like the real large), there isnt a clear strategy with xmpp [03:46] mde: micheil: Ah, right. It's very much for enabling and flattening communication in an organization. [03:47] statim: ok, so another question… of the package managers, do any seem to have the steam yet, or is it still a tossup? [03:47] mde: statim: Yes, we're really starting to feel the pain of scaling. We just passed a million registered users, and growth is speeding up. [03:47] mde: statim: NPM is it for packaging. [03:47] dgathright has joined the channel [03:48] blogometer: I've now implemented path rewriting for Connect's static provider. If anyone is interested. [03:48] jetienne: mde: ping.fm was able to do xmpp... why seesmic got issue ? because of the user base? [03:48] statim: mde: have you guys considered mongodb vs mysql? thats something im debating as we speak actually. weighing the benefits of trying to scale a mysql db with all sorts of nasty sharding vs just using something equipped [03:49] mde: jetienne: This was like two years ago. It was just the lack of maturity of the servers. No clustering. [03:49] blogometer: statim: I don't know why you'd use a database that can't even do incremental backups. [03:49] mde: statim: We are using Postgres, and it has scaled surprisingly well. But our biggest table now has about 2 billion records in it. [03:49] statim: blogometer: referring to which? [03:49] blogometer: MySQL. [03:49] mde: So I think we're moving to Voldemort. We looked at Cassandra, but it was kind of a basket case. [03:50] blogometer: mde: Why so? [03:50] micheil: mde: what about any of the other dbs, say, big table, etc? [03:50] mde: Apparently there were non-deterministic differences in read and write speeds across different nodes that had identical configurations. [03:51] mde: And from what they are telling me, Facebook isn't really working on it anymore. [03:51] blogometer: mde: Wow. [03:51] mde: Twitter has stopped trying to do anything with it either. [03:51] blogometer: mde: Wow. Wow. [03:52] blogometer: Is that the Apache touch at work? [03:52] mde: micheil: I'm not the realtime and scalability guy, so I don't know all the particulars, but I know they looked at a lot of different stuff. [03:52] micheil: mde: ah, okay [03:52] statim: ive always been a postgres guy myself, but some guys here (myspace) convinced us to go with their mysql setup… apparently they know how to scale it extremely well. they are definitely some smart guys, however in the back of my mind i feel like the app shouldnt have to change to horizontally scale, which throws sharding in the app out IMO [03:52] mde: And eventually came around to Voldemort as the best all-around solution for us. [03:53] aurynn: Mysql is rarely a good choice, imo [03:53] aurynn: :) [03:54] blogometer: I'm finding articles about Cassandra at Twitter from March. [03:54] mde: Postgres does seem to be a saner choice for really big datasets, yes. [03:54] statim: aurynn: i tend to agree, however im in new territory where real scalability problems arent just theoretical now, so i have to yield a bit [03:54] mde: blogometer: http://engineering.twitter.com/2010/07/cassandra-at-twitter-today.html [03:55] aurynn: statim, pl/proxy. :) [03:55] Tim_Smart1 has joined the channel [03:55] blogometer: mde: You said: Twitter has stopped trying to do anything with it either. [03:56] blogometer: That is not what that article says. [03:56] statim: aurynn: that didnt look all too pretty if i recall, could be great though, i dont know [03:56] twoism has joined the channel [03:56] aurynn: statim, Skype uses it to handle transparent DB sharding [03:56] mde: blogometer: Okay, I should have said "doing anything serious." [03:56] pquerna: sh1mmer: well, it should be sending dkim for all the email now, but in my testing its still getting flagged as spam, so i guess i get to email yahoo and pray [03:57] statim: blogometer: ive heard on pretty good authority thats mostly PR spin [03:57] blogometer: Hmm... Sounds like all their new projects are on Cassandra, and someone has halted their attempts to port their MySQL database, which is probably sane. [03:57] blogometer: statim: Okay, that's two people. [03:57] ironfroggy_ has joined the channel [03:57] mde: They're not using it as a store for Tweets. [03:59] dan_manges has left the channel [03:59] dan_manges has joined the channel [04:00] blogometer: I keep boggling at the fact that I'd never be a part of a conversation like this in a Java forum. Then I scream at the wall. Then I remind myself that those days are over. [04:04] danielzilla: Anyone familiar with nStore? I'm toying around and doing ``testdb = nStore.new('data/test.db', run_benchmarks);`` fails, dumping out the source code with it. Error is ``TypeError`` but the directory exists. [04:05] aurynn: Android: Nowhere near as polished as iOS, nor as friendly, but better notifications makes it all worthwhile. [04:06] _announcer: Twitter: "@peepcode has another #awesome product: check out #node.js video" -- Sleeptillseven. http://twitter.com/sleeptillseven/status/21972182164 [04:07] dnm has joined the channel [04:07] dnm has left the channel [04:08] danielzilla: Ha. Solved my problem. I have the stable 0.2.1 of nStore, but the master docs are newer and have a slightly different API. [04:09] deepthawtz has joined the channel [04:10] MikhX has joined the channel [04:10] blogometer: Turns out connect does URL rewriting just fine. It's all a bunch of nested functions. [04:11] blogometer: Does *everything* about Node.js have to be awesome? [04:11] skm has joined the channel [04:12] skm: are there any oracle (or any other db) libraries for node.js? [04:12] cardona507 has joined the channel [04:12] cardona507: w00t [04:13] dnolen has joined the channel [04:13] matt_c: Has anyone spoken to Cassandra using node through anything other than cassanda-node-bridge? http://github.com/cwolves/nodeCassandra looks interesting but I'm not sure if it works or if it's a thought experiment. I should give it a try. [04:14] _announcer: Twitter: "Now is totally non-blocking asynchronous template engine for node.js http://github.com/nunobaba/nun" [de] -- Leandro Silva. http://twitter.com/codezone/status/21972663281 [04:14] _announcer: Twitter: ""Does JavaScript run on the client or on the server?" - an interview question that's a bit too basic. I decided not to mention node.js..." -- Richard Beier. http://twitter.com/rbeier/status/21972667692 [04:14] dnolen has joined the channel [04:15] Yuffster has joined the channel [04:15] jetienne: this npm passwd has to go [04:15] isaacs: jetienne: whuh? [04:16] jetienne: isaacs: man no way i will remember yet another password [04:16] jetienne: there is no need for it [04:16] isaacs: jetienne: um... you don't have to after the first time you pick it [04:16] jetienne: isaacs: ok what is my password ? [04:16] jetienne: see i dont have it :) [04:17] jetienne: isaacs: sorry just frustrated. if i use another email, can i get another account ? [04:17] isaacs: jetienne: i'll delete it and you can create it again. [04:18] isaacs: jetienne: if you have a .npmrc file from *any* computer where you've used npm, just copy it over though, and you won't have to [04:18] isaacs: and keep that file secure. [04:18] blogometer: This does look cool: http://github.com/nunobaba/nun [04:18] jetienne: isaacs: what about a way to reset it ? [04:18] mikeal has joined the channel [04:18] jetienne: isaacs: npm resetpw [04:19] jetienne: isaacs: and you email me a new password [04:19] isaacs: jetienne: what was your username? [04:19] jetienne: isaacs: haha [04:19] jetienne: isaacs: jerome.etienne@gmail.com [04:20] richcollins has joined the channel [04:20] isaacs: jetienne: your username was jerome.etienne [04:20] isaacs: deleted now [04:20] jetienne: npm resetpw youremailgoeshere [04:20] blogometer: isaacs: Can you depoly to npn directly from GitHub? Say from GitHub downloads? [04:20] jetienne: thus no more username/password [04:20] isaacs: jetienne: http://github.com/js-registry/ [04:20] isaacs: jetienne: http://github.com/isaacs/js-registry/ [04:20] isaacs: jetienne: http://github.com/isaacs/npm [04:21] isaacs: jetienne: patches go in there ^ [04:21] jetienne: isaacs: you are no more working on it ? [04:21] danielzilla: skm: There are a couple of postgres drivers, ~3 mysql ones and a bunch of nosql ones. Can't say I've seen an oracle one though. The place to check is http://github.com/ry/node/wiki/modules [04:21] isaacs: blogometer: sure. npm publish http://github.com/user/project/tarball/master [04:21] isaacs: jetienne: i am, but that's a feature. it's not high up on my list, since this doesn't happen much [04:21] blogometer: Okay. Will investigate more later. Thanks. [04:22] isaacs: jetienne: as the user affected, i nominate you to implement it ;P [04:22] isaacs: jetienne: you're hte only one qualified to [04:22] raymorgan has joined the channel [04:22] jetienne: ok so i have to find a way... [04:22] jetienne: oh simple i will put that in a email or in a doc [04:23] cloudhead has joined the channel [04:24] pedrobelo has joined the channel [04:25] skm has joined the channel [04:26] _announcer: Twitter: "Sabasaidopuroguramingu enable JavaScript frameworks of "node.js 0.2.0" release http://goo.gl/GLGA" [ja] -- barlog だいすけ. http://twitter.com/daisuke/status/21973334517 [04:28] ivong has joined the channel [04:29] creationix has joined the channel [04:31] _announcer: Twitter: "nodejs.org / api during sleep paralysis is try Firefox. syntax I'm just abnormal leak." [ja] -- barlog だいすけ. http://twitter.com/daisuke/status/21973628538 [04:31] matt_c: So true. [04:35] _announcer: Twitter: "Sweet Jesus, the node.js screencast by @peepcode is fantastic." -- Stuart Henry. http://twitter.com/quotingstu/status/21973874334 [04:36] jetienne: isaacs: what "directories" means in package.json, it is not in http://github.com/isaacs/npm/blob/master/doc/json.md [04:36] isaacs: oh, yeah, i guess it isn't.. [04:36] isaacs: . [04:36] isaacs: jetienne: well, basically, the "directories.lib" member is linked in as the default set of modules. [04:36] isaacs: jetienne: but that is kind of awful [04:37] isaacs: jetienne: now that there's a workaround though, it's not SO awful, and i'm debating just bringing it back. [04:37] jetienne: ? [04:37] jetienne: isaacs: i dont understand what it is. do i need it ? [04:37] isaacs: jetienne: no [04:37] jetienne: ok [04:37] isaacs: jetienne: you don't need it, and it's ok for it to be there [04:37] isaacs: jetienne: totally up to you :) [04:39] blogometer has left the channel [04:40] jetienne: Auto-linking the 'directories.lib' is deprecated and will be removed. <- what is "auto linking" ? [04:40] isaacs: jetienne: dont' worry about it [04:40] isaacs: jetienne: if you don't know, you don't have to care. [04:41] jetienne: ok removing "directories" remove it [04:41] creationix: isaacs: can an npm module provide 3 top level namespaces? [04:41] creationix: require('foo1') require('foo2') etc.. [04:41] isaacs: creationix: wtf? no [04:41] Tim_Smart has joined the channel [04:41] _announcer: Twitter: "Auto-sharding in Node.JS http://bit.ly/cnVkqW. Excellent article!" -- Guillermo Rauch. http://twitter.com/rauchg/status/21974216080 [04:42] jetienne: isaacs: is there a way to know the files created by npm ? [04:42] isaacs: creationix: you can use the modules hash to do require("foo/bar") require("foo/baz") etc [04:42] isaacs: jetienne: tree $(npm config get root) [04:42] creationix: isaacs: So I should create three tiny packages with their own repo each? [04:42] jetienne: isaacs: ? [04:42] isaacs: creationix: sure. a package could be just one module. in fact, many are. [04:42] jetienne: isaacs: this mean like yes or no ? [04:42] isaacs: jetienne: the files are there in that folder. [04:42] benburkert has joined the channel [04:43] isaacs: jetienne: it depends on what you mean by "know the files created by npm" [04:43] jetienne: isaacs: no way to know by package ? [04:43] creationix: isaacs: what about how mikeal packages his little stuff with subfolders and several package.json files in a single repo [04:43] jetienne: isaacs: like "dpkg -L mypkg" on ubuntu [04:43] isaacs: jetienne: look in that folder. it's pretty simple. [04:43] isaacs: jetienne: npm help folders tells you which folders are used for what stuff. [04:44] isaacs: jetienne: you can post an issue, or send a patch. it's not as old as dpkg. [04:44] mikeal: i do that? [04:44] mikeal: oh, node-utils [04:44] isaacs: creationix: oh, well, yeah, you can put more than one pkg in a git repo [04:44] mikeal: that's because the repo doesn't scope to a single package [04:44] isaacs: creationix: but they're still multipld different packages [04:44] creationix: mikeal: yeah [04:45] creationix: so in npm they are all different top-level packages? [04:45] isaacs: creationix: yeah [04:45] mikeal: eventually you'll be able to install node-utils as well [04:45] mikeal: and it's just an empty package with deps [04:45] mikeal: and all the deps are the node-utils packages [04:45] creationix: looks like just empty now [04:46] _announcer: Twitter: "@jf also, I'm working on a better Twitter client CouchApp with a Node.js async processor. Not on github yet..." -- J Chris Anderson. http://twitter.com/jchris/status/21974449963 [04:47] creationix: I think I'll just make a lot of repos, just because a module is simple doesn't make it less of a module [04:47] creationix: just easier to maintain :) [04:49] Tim_Smart has joined the channel [04:49] jimt has joined the channel [04:49] _announcer: Twitter: "@stilkov node.js has a very robust http client, which is all you need for a certain doc database :)" -- J Chris Anderson. http://twitter.com/jchris/status/21974638239 [04:50] jetienne: npm ! WARNING ! Sending authorization over insecure channel. <- isaacs does this mean you send pw in clear? [04:50] Tim_Smart has joined the channel [04:50] isaacs: jetienne: as long as node's ssl client is broke, yeah [04:51] micheil: hmm.. [04:51] micheil: ssl works now, doesn't it? [04:51] jetienne: npm adduser Remember to clear your shell history! <- couch :) you understand why pw needs to go [04:52] isaacs: oh, wait, it's not needing to clear the shell history any more, since it's added silently [04:52] jetienne: it is needed as it is in the cmdline [04:52] isaacs: jetienne: ISSUEE!!!!!!!!!! [04:52] isaacs: jetienne: post an issue, please. [04:53] jetienne: i think i already did [04:53] isaacs: jetienne: in the comments, make your case, detail how it should work [04:53] jetienne: 2months ago [04:53] isaacs: jetienne: the one you posted was that typing it in the clear is bad. i fixed that. until node has a working ssl client, i'm going to send it base64 encoded through the internet, though. [04:54] isaacs: jetienne: chances are, node's ssl client will work before i get a chance to do any major work on npm adduser, though [04:54] micheil: isaacs: can't you use the ssl components of crypto to encode as an ssl encoded message? [04:54] isaacs: micheil: if you think you can implement ssl in js better than node can in c, go right ahead. [04:55] micheil: isaacs: also, why npm adduser, why not, npm config user? [04:55] jetienne: if github close an issue, i can no more access to it ? [04:55] micheil: isaacs: no, I was meaning using the crypto module to encode the password [04:55] isaacs: micheil: you can also set the "user", "_password" and "email" configs manually, but it has to created on teh server the first time. [04:55] jetienne: npm githubhandle yourhandle [04:55] isaacs: micheil: then how will couchdb veryfy your password? [04:55] isaacs: jetienne: ISSUE!!! [04:55] micheil: isaacs: I'm not sure >_> [04:56] Tim_Smart: RAWR [04:56] dgathright has joined the channel [04:56] isaacs: jetienne: discuss the proposed feature in excruciating detail. get others to rally behind it and post their thoughts and comments. raise a ruckus on the nodejs mailing list. [04:56] jetienne: isaacs: i cant fdind the previous issue i filled [04:56] isaacs: jetienne: this is how things happen in open source! [04:56] micheil: hmm.. just realised that I haven't commited any changes to nws despite making heaps of changes. [04:56] isaacs: jetienne: if it was 2 months ago, it's gone gone gone [04:56] isaacs: jetienne: like the wind [04:56] jetienne: isaacs: arf .- [04:56] micheil: aka, next commit bundles about 50 changes. [04:57] isaacs: micheil: i'm a huge fan of git add -p for that reason [04:57] micheil: git add -p? [04:57] Aria: add patchwise. [04:58] micheil: so what, I can have a heap of changes, and add different sections in different commits? [04:58] isaacs: micheil: YES! [04:58] isaacs: micheil: you can add individual diffs, even editing them as you're adding. [04:58] micheil: neato. [04:58] _announcer: Twitter: "Video: Node.js might be the most exciting single piece of software in the current JavaScript universe http://tumblr.com/xuygkh3wh" -- Dale-Kurt Murray. http://twitter.com/dalekurt/status/21975120192 [05:01] mattly has joined the channel [05:03] jetienne: isaacs: what is the command to undo "npm link ." [05:03] mape: jetienne: npm uninstall whatyoujustlinked [05:04] jetienne: ok [05:05] stepheneb has joined the channel [05:05] mape: If you are running the latest, know isaacs fixed a bug where there were some issues uninstalling linked packages, not sure if that is in the latest npm stable version. [05:06] isaacs: mape: it is [05:06] mape: Great :) [05:08] rubydiamond: http://shipitnode.heroku.com/ [05:09] tjgillies: how do i do this for real? http://gist.github.com/546994 [05:10] amerine has joined the channel [05:10] jetienne: http://nodejs.org/api.html#http-client-184 tjgillies this is an example of http client [05:11] jetienne: mape: isnt it you who have an easy http client ? [05:11] tjgillies: jetienne: im using a different http client [05:11] tjgillies: its more about how to get the vars i want in scope [05:11] mape: jetienne: You mean mikeals "request"? [05:11] tjgillies: i how how to use the lib [05:11] tjgillies: know how* [05:11] jetienne: mape: ah yep, got confused by the starting m [05:12] Aria: What variable's in the wrong scope there, tjgillies? [05:12] tjgillies: Aria: res is undefined after http.perform [05:12] Aria: Well... yeah. If it's asynchronous, it hasn't run the inner line yet. [05:13] Aria: You just made a closure, and returned out of it before the data was there. [05:13] tjgillies: Aria: how do i do it for real? [05:13] Aria: Well, where are you putting the data? [05:13] Aria: If it's asynchronous, you can't return it. [05:13] jetienne: tjgillies: do res and sysinspect in the callback [05:13] Aria: You might return an object that's an EventEmitter, and emit and event when you're done. [05:14] Aria: er.. an event. [05:14] tjgillies: i want to use the function to get data in other functions [05:14] tjgillies: Aria: got a link for an example? [05:14] jetienne: isaacs: suceed! thanks [05:15] Aria: tjgillies: All of node is that example. The node http client emits data events, and an end event. [05:15] Aria: You wouldn't pass around the thing the data event hands you, you'd pass around the EventEmitter itself, the HTTP response. [05:15] Aria: I have no idea how that library works, but your code is assuming synchronous. [05:16] Roelven has joined the channel [05:17] matt_c has joined the channel [05:18] blogometer has joined the channel [05:19] MaSch_ has joined the channel [05:19] blogometer has left the channel [05:19] pdelgallego has joined the channel [05:22] _announcer: Twitter: "Javascript server Node.js moves to 0.2.0 http://ping.fm/gYWAf" -- Francisco Reyes. http://twitter.com/pacorro2000/status/21976335250 [05:22] gorakhargosh has joined the channel [05:25] benburkert has joined the channel [05:27] jimmybaker has joined the channel [05:27] visnup has joined the channel [05:28] _announcer: Twitter: "published npm package for webpeer #nodejs" -- Jerome Etienne. http://twitter.com/jerome_etienne/status/21976639281 [05:28] isaacs: jetienne: thanks! [05:30] _announcer: Twitter: "#nodejs + jake + UglifyJS... Finally, my build stack is all JS." -- brianegan. http://twitter.com/brianegan/status/21976730501 [05:30] pdelgallego_ has joined the channel [05:31] temp01 has joined the channel [05:32] Yuffster has joined the channel [05:32] mjr_ has joined the channel [05:32] ryan[WIN] has joined the channel [05:32] kriszyp has joined the channel [05:32] PyroPeter has joined the channel [05:32] chewbranca has joined the channel [05:32] tuxsbro has joined the channel [05:32] sr has joined the channel [05:32] s0enke has joined the channel [05:32] keeran has joined the channel [05:32] mmso has joined the channel [05:34] danielzilla has joined the channel [05:37] visnup has joined the channel [05:37] richcollins has joined the channel [05:37] Roelven has joined the channel [05:39] isaacs has joined the channel [05:47] twoism has joined the channel [05:48] confoocious has joined the channel [05:49] confoocious has joined the channel [05:49] mattikus has joined the channel [05:53] russell_h: is WritableStream.end supposed to require a callback? [05:53] jsilver has joined the channel [05:54] russell_h: the docs suggest it isn't, but it gets really unhappy if you don't give it one [05:54] bradleymeck: it shouldnt [05:54] russell_h: http://github.com/ry/node/blob/master/lib/fs.js#L922 [05:54] gerad has joined the channel [05:55] bradleymeck: interesting that it doesnt check, but does it blow up? [05:55] russell_h: yup [05:56] bradleymeck: throw in a ticket [05:57] russell_h: k [05:58] Tim_Smart has joined the channel [05:58] russell_h: hmmm actually I may be wrong on that [05:58] russell_h: or rather, I may be doing something wrong on my end [06:00] mikeal has joined the channel [06:03] Throlkim has joined the channel [06:06] russell_h: when a WriteStream emits an error do I need to close the stream myself? [06:09] mikeal: it's probably already closed if you get an error [06:10] russell_h: will it ever get cleaned up if its not? [06:10] mikeal: depends [06:11] mikeal: most likely not [06:11] mikeal: but, almost all errors correspond to a close [06:15] russell_h: mikeal: ok, thanks [06:18] pquerna: ls [06:19] gorakhargosh has joined the channel [06:21] Validatorian: does anyone have an example of using the crypto module to create an md5 hash of a password? [06:21] mu-hannibal has joined the channel [06:22] Validatorian: is crypto.createHmac(algorithm, key) what I'm looking for? [06:22] _announcer: Twitter: "JSSP – JavaScript Server Page engine on top of NodeJS (Alligator) « Simple Notions: http://goo.gl/oHRa cok tatli olmus" -- Omer Kirk. http://twitter.com/omerkirk/status/21979227561 [06:23] Tim_Smart: Validatorian: crypto.createHash('md5').update(password).digest('hex'); [06:23] Tim_Smart: http://nodejs.org/api.html#crypto-createhash-241 [06:23] Validatorian: thank you, Tim_Smart [06:24] Tim_Smart: !api crypto [06:24] Tim_Smart: Hmm bot isn't around anymore. [06:30] micheil: Tim_Smart: that's a grand reminder there. I've gotta really rework the documentation. [06:31] micheil: Validatorian: hash = Crypto.createHash("md5"); hash.update(data); hash.digest("binary"); [06:32] Tim_Smart: micheil: digest('hex') if he want it in text form? [06:32] Validatorian: micheil: is that more efficient than Tim_Smart's suggestion, or ? [06:32] micheil: hmm.. yes [06:32] micheil: I think. [06:32] Tim_Smart: Validatorian: They are no different. [06:32] twoism has joined the channel [06:33] micheil: Validatorian: they do the same thing, just a different digest [06:33] Validatorian: k.. [06:33] micheil: (I didn't actually see tim's response) [06:33] gorakhargosh: source_buffer.copy(target_buffer...) should really be called source_buffer.copyTo(target_buffer...) It's easy to get the call wrong if you haven't read the documentation. [06:34] gorakhargosh: The method name is rather ambiguous. [06:35] Aria: News flash: things are hard to use if you don't know how to use them. [06:35] micheil: gorakhargosh: how is buffer1.copy(buffer2) ambiguous? [06:35] micheil: it's just not verbose [06:35] Aria: Well, it could imply going the other direction [06:36] Aria: But it also doesn't hint that there should be a copyFrom ;-) [06:36] _announcer: Twitter: "It is a bad name Node.js, I thought they graph drawing library." [ja] -- クラフトギア 渡辺俊輔. http://twitter.com/craftgear/status/21979842007 [06:36] gorakhargosh: yeah, it can imply going the other direction [06:36] gorakhargosh: it's like mov from x86 assembly. if you dont know that target comes before source you will mess up. [06:37] gorakhargosh: again that depends on the assembler too =\ [06:39] micheil: that could almost be like saying Object.create(props), should be Object.createFrom(props) [06:39] micheil: :/ [06:39] ph^ has joined the channel [06:39] micheil: gorakhargosh: raise it on the mailing list; it seems fine to me. [06:40] gorakhargosh: alright micheil [06:40] crohr has joined the channel [06:41] Tim_Smart: I'm pretty sure it got bike-shedded to hell and back by the folks at ecma [06:41] Tim_Smart: (Object.create that is) [06:41] micheil: Tim_Smart: :P [06:41] micheil: my point almost exactly [06:42] Tim_Smart: Buffer.prototype.copy is fine in my books. [06:42] populuxe has joined the channel [06:42] sveimac has joined the channel [06:43] gorakhargosh: Except when reading books, people don't read "Buffer prototype copy" they read "buffer1 copy buffer2" [06:43] gorakhargosh: And that is precisely what Buffer.prototype.copy doesn't do. [06:44] Tim_Smart: Hmm it didn't confuse me one bit when I first used it, but that is just me. [06:44] Aria: Yeah, me either. [06:45] Aria: I'd have been really shocked if it went the other way. [06:45] gorakhargosh: yeah [06:45] Aria: I expect the thing I pass to the function to be acted on. [06:45] Aria: And the thing the function belongs to to do the acting. [06:46] Tim_Smart: E.g. file.copy(another_file) makes sense. [06:46] micheil: why is safari using 180% of my cpu... ? [06:46] Tim_Smart: micheil: Ask Steve Jobs. [06:46] Aria: micheil: flash! [06:46] micheil: I bet it's cos I just downloaded firefox. [06:46] gerad has joined the channel [06:49] rauchg_ has joined the channel [06:50] gorakhargosh: I've put it out in the open (ML) hoping a little suggestion to renaming doesn't turn into a flamewar. [06:53] jbr_ has joined the channel [06:56] jbr__ has joined the channel [06:57] Tim_Smart: gorakhargosh: I find it a bit hard to read the other way, as I would expect something like: target_bugger.insert(...) [06:58] jimmybaker has joined the channel [06:58] Tim_Smart: And considering we have just landed 0.2.0, API changes are going to be harder to accept. [06:59] gorakhargosh: Tim_Smart: I'm probably wired differently, but sufficient enough proof for the existence of ambiguity. Also, these are simple things to address at 0.2.0 than they will be at 1.0. [06:59] jbr__: isaacs: you around? i'm getting nginx 502s from npm registry. nothing urgent [06:59] micheil: Tim_Smart: nice typo there, target_bugger [06:59] Tim_Smart: Haha just noticed. [06:59] isaacs: jbr__: just a sec.. [06:59] gorakhargosh: hehe [07:00] isaacs: jbr__: try now [07:00] jbr__: isaacs: all better [07:01] jbr__: thanks [07:02] mikeal has joined the channel [07:04] virtuo has joined the channel [07:05] _announcer: Twitter: "Downloading the "Meet Node.js" screencast by the always excellent @topfunky : http://cl.ly/26Sp" -- Thomas Balthazar. http://twitter.com/tbalthazar/status/21981102378 [07:09] omarkj has joined the channel [07:10] jbr__: what should I expect node -v to output for 0.2.0? [07:10] Aria: v0.2.0 [07:10] omarkj: Morning. [07:11] Aria: might need to make clean and make again to get it to build that right. Also make sure git pulled the tags [07:12] jbr__: Aria: thanks. I'm definitely on v0.2.0 in git, so maybe it's a matter of make clean [07:12] _announcer: Twitter: "It seems, node.js - interesting thing. Now we will study it ..." [ru] -- Georgy Kovalenko. http://twitter.com/BATCOH/status/21981414892 [07:13] sh1m has joined the channel [07:13] _announcer: Twitter: "@tbalthazar I've been playing with node.js a few days ago and it's really cool. I want to learn JavaScript now." -- Steven Vandeweghe. http://twitter.com/bluecrowbar/status/21981457744 [07:15] jbr__: Aria: that seems to have done it. thanks again [07:15] Aria: Sure thing. [07:16] russell_h: can mmap cause a process to block on memory access if the address you're reading from has been paged out? [07:16] _announcer: Twitter: "@tbalthazar Makes me want a credit card now! Wish I had one. =\ "Meet Node.js" screencast by @topfunky http://cl.ly/26Sp" -- Gora Khargosh. http://twitter.com/GoraKhargosh/status/21981586215 [07:17] jetienne: russell_h: yes [07:17] russell_h: http://github.com/bnoordhuis/node-mmap <-- that seems like it has the potential to cause node to block in the main process [07:17] _announcer: Twitter: "#sequelize wil now report errors when syncing and dropping tables #nodejs #orm" -- Sascha Depold. http://twitter.com/sdepold/status/21981652194 [07:18] Aria: Wow, yeah it does. [07:18] jetienne: russell_h: this is not really node related tho. this is how any processes are handled by the kernel [07:19] russell_h: well yeah, but the reason I would want to use map is to cache a ton of stuff [07:19] russell_h: the implications of trying to store more stuff than you have memory are pretty obvious [07:20] russell_h: honestly I'm not sure what I'm trying to say :) [07:20] russell_h: it just seems bad [07:20] jetienne: russell_h: why not use existing solutions ? memcached or other [07:21] russell_h: thats probably what I'll end up doing, I was just looking to see if theres an easy way to do it myself [07:22] russell_h: I haven't even figured out exactly what I'm trying to do yet, I'm mostly just messing around so... [07:22] jetienne: russell_h: try reddis, it seems to be hot [07:22] Aria has left the channel [07:23] russell_h: yeah, thats first on my list beyond do-it-myself [07:25] hellp has joined the channel [07:26] robotblake has joined the channel [07:33] _announcer: Twitter: "WTF?! Node.js disappeared from my computer! Fixed blew it when he was giving me rails3 pot" [es] -- Luis Felipe Borjas. http://twitter.com/lfborjas/status/21982310642 [07:34] rnewson has joined the channel [07:35] _announcer: Twitter: "I think that node.js is the future of web development, and I'm glad that @peepcode just released a screencast on it!" -- Oscar Del Ben. http://twitter.com/oscardelben/status/21982431889 [07:38] jbr__: isaacs: yet another npm question: what do I do about an "Error: missing_stub"? [07:43] _announcer: Twitter: "Ugh.. callback oriented programming (node.js) #javascript @rakesh314 this is what I don't like." -- Chaitanya Gupta. http://twitter.com/chaitanya_gupta/status/21982779096 [07:44] rnewson has joined the channel [07:45] johndahlstrom has joined the channel [07:48] micheil: has anyone managed to get an upgrade event when using a httpServer with setSecure? [07:49] SamuraiJack has joined the channel [07:50] tobiassjosten has joined the channel [07:50] russell_h: micheil: I think that's known to be broken, but I could be wrong [07:50] micheil: hmm.. [07:51] micheil: it shouldn't be [07:52] russell_h: I just know there are some bugs with SSL, I'm not sure exactly what [07:52] fjakobs has joined the channel [07:52] russell_h: it works for me on a straight net stream though [07:53] micheil: well, doing http requests with setSecure on the httpServer works [07:53] micheil: as soon as I fire a upgrade request, I don't get the event [07:54] fjakobs: Is "uncaughtException" supposed to catch ALL uncaught exceptions? [07:54] fjakobs: doesn't work here :( [07:56] _announcer: Twitter: "@oscardelben the rise of node.js is interesting. Erlang is 'better' in many ways, but getting traction has been difficult." -- David N. Welton. http://twitter.com/davidnwelton/status/21983299435 [07:58] fjakobs: process.on('uncaughtException', function() { [07:58] fjakobs: console.log("JAY") [07:58] fjakobs: }) [07:58] fjakobs: throw new Error("JUHU") [07:59] fjakobs: will print a stack trace and not "jay" [08:00] tpryme has joined the channel [08:01] isaacs: jbr__: you around? [08:01] jbr__: isaacs: yeah [08:01] isaacs: jbr__: http://gist.github.com/547144 [08:01] isaacs: can you try that again? [08:01] rnewson has joined the channel [08:02] olegp has joined the channel [08:02] saikat has joined the channel [08:03] jbr__: isaacs: it's getting further this time, but seems to have hung after "npm bytes 3042306" [08:03] teemow has joined the channel [08:03] aubergine_ has joined the channel [08:04] jbr__: isaacs: and now I get a document update conflict when I retry [08:04] russell_h: fjakobs: I'm not sure that 'uncaughtException' can catch exceptions from before the event loop starts [08:04] isaacs: jbr__: yeah, i'm messign with it, just a sec. [08:04] isaacs: jbr__: k, try again [08:04] jbr__: isaacs: success! thanks [08:04] gorakhargosh: /quit [08:04] gorakhargosh: err [08:05] isaacs: jbr__: now if i could just figure out why that broke that.. [08:05] gorakhargosh has joined the channel [08:06] jbr__: isaacs: was it something odd about the tar or the package or is that unclear? [08:06] isaacs: jbr__: i made a change to the couchapp, and it caused this [08:06] isaacs: jbr__: not sure what the issue is [08:06] russell_h: fjakobs: http://gist.github.com/547166 [08:06] russell_h: that works [08:06] markwubben has joined the channel [08:07] fjakobs: oh, thank you [08:07] jbr__: isaacs: gotcha. so this was related to the proxy_pass thing earlier? [08:07] fjakobs: but isn't that a bug? [08:07] isaacs: jbr__: oh, no, not at all [08:07] isaacs: g'nite, nodejs. [08:08] russell_h: fjakobs: I don't think so, otherwise things like broken requires would be caught by that as well [08:08] russell_h: fjakobs: 'uncaughtException' happens is "Emitted when an exception bubbles all the way back to the event loop." [08:09] _announcer: Twitter: "Towards Auto-sharding in Your Node.js App - http://ngchi.wordpress.com/2010/08/23/towards-auto-sharding-in-your-node-js-app/" -- Abrdev Blog. http://twitter.com/abrdev/status/21983851725 [08:10] russell_h: fjakobs: but when you put a 'throw new Error()' directly in the file that happens before the event loop starts [08:10] russell_h: maybe [08:10] jetienne has joined the channel [08:10] russell_h: I could very well be wrong :) [08:12] _announcer: Twitter: "I read about Rack, trying to understand what guided developers Connect: http://bit.ly/b4AuOw # nodejs # ruby" [ru] -- Serge Shirokov. http://twitter.com/kurokikaze/status/21983990229 [08:16] FransWillem has joined the channel [08:20] fjakobs: thanks for the info [08:20] fjakobs: I think I can work around this limitation [08:20] codetonowhere has joined the channel [08:21] aubergine has joined the channel [08:25] keeto has joined the channel [08:26] _announcer: Twitter: "Output Node.js v0.2.0 http://bit.ly/axxgcE" [fr] -- akhenakh. http://twitter.com/akhenakh/status/21984568331 [08:27] micheil: ryah: that maxConnection's stuff is kinda borked, I've got a server with -1 connections O.o [08:28] dgathright has joined the channel [08:40] ryah: micheil: oh crap [08:40] ryah: that's not good :) [08:40] micheil: ryah: also. I hate ssl. [08:40] ryah: yep [08:40] ryah: aware of the ssl problem [08:41] micheil: trying to get setSecure to work under node-websocket-server [08:41] micheil: I've got a test that "passes" [08:41] micheil: but I can't get chrome to connect when I run the server with ssl [08:42] ryah: hm [08:42] micheil: I've just sent an email off to someone working with websockets under eventmachine, to see if they know about browser support for wss:// [08:43] jetienne_ has joined the channel [08:46] dgathright has joined the channel [08:46] robotblake has joined the channel [08:47] caolanm has joined the channel [08:52] micheil: also. Firefox is sometimes really annoying. [08:55] FransWillem has joined the channel [08:57] robotblake has joined the channel [08:58] MattJ has joined the channel [09:03] robotblake has joined the channel [09:05] _announcer: Twitter: "@tbalthazar Just got it too! Thanks for the recommendation. Node.js is exciting." -- milestinsley. http://twitter.com/milestinsley/status/21986253781 [09:07] mikedeboer has joined the channel [09:08] mAritz has joined the channel [09:09] mikedeboer: hi all! I'm wondering how to get the free disk space for a path in nodejs (filesystem) [09:11] jetienne_: mikedeboer: statfs is the way to get the info. not sure it is available in node [09:12] robotblake has joined the channel [09:12] jetienne_: mikedeboer: from my reading of the doc, it is not yet possible [09:13] mikedeboer: I was reading it the same way as you then :) [09:13] mikedeboer: so I guess I should do it with a shell exec call then... [09:14] jetienne_: yep [09:14] mikedeboer: ok, thanks, that was all sir! ;) [09:17] _announcer: Twitter: "@rakesh314 Other language examples on this page are much easier to read/understand than the node.js one." -- Chaitanya Gupta. http://twitter.com/chaitanya_gupta/status/21986766704 [09:22] _announcer: Twitter: "Meet Node.js Part I http://bit.ly/cQGSCv #peepcode #paid #nodejs" -- Learnivore.com. http://twitter.com/learnivore/status/21987017955 [09:27] javajunky has joined the channel [09:31] uzum4ki has joined the channel [09:33] aubergine has joined the channel [09:36] joshhunt_ has joined the channel [09:40] sideshowcoder has joined the channel [09:40] mr_danie1 has joined the channel [09:40] icozzo has joined the channel [09:40] sonnym has joined the channel [09:40] aurynn has joined the channel [09:40] Tekerson has joined the channel [09:40] mde has joined the channel [09:40] skampler has joined the channel [09:40] CIA-77 has joined the channel [09:40] SubStack has joined the channel [09:40] Validatorian has joined the channel [09:41] saikat has joined the channel [09:46] SamuraiJack_ has joined the channel [09:47] robotblake has joined the channel [09:49] hellp has joined the channel [09:53] robotblake has joined the channel [09:55] rnewson has joined the channel [09:58] Validatorian has joined the channel [09:59] proppy has joined the channel [10:00] Egbert9e9 has joined the channel [10:00] badaxx has joined the channel [10:02] rsms has joined the channel [10:05] Deputaats: How to use basse64 decoding with node? [10:06] breccan has joined the channel [10:07] robotblake has joined the channel [10:12] uzum4ki has joined the channel [10:15] _alex has joined the channel [10:18] _announcer: Twitter: "Fresh off the press! http://bit.ly/9kTsmD #mongodb + #nodejs + #rest =Rest-mongo come and get some in-broswer mongo love!" -- af83inc. http://twitter.com/af83inc/status/21989537578 [10:21] Gruni has joined the channel [10:21] badaxx_ has joined the channel [10:22] mape: Deputaats: you can do something like new Buffer('test').toString('base64') [10:23] mape: Oh decoding.. [10:23] mape: nm [10:23] fbstj has joined the channel [10:24] robotblake has joined the channel [10:27] hassox has joined the channel [10:27] Tim_Smart: new Buffer(data, 'base64').toString() [10:27] Tim_Smart: new Buffer(data, 'base64').toString('utf8') [10:27] Tim_Smart: etc [10:28] Tim_Smart: Deputaats: ^ [10:28] _announcer: Twitter: "failed to sleep last night... but 4 blog post + a #nodejs package + some bug fixes... productive but tired now... time to crash ?" -- Jerome Etienne. http://twitter.com/jerome_etienne/status/21990026656 [10:28] mikedeboer: you can always do it in JS: [10:29] mikedeboer: (I created this gist) http://gist.github.com/547332 [10:29] Tim_Smart: mikedeboer: base64 in C++ is much faster. [10:29] d0k has joined the channel [10:30] mikedeboer: of course. [10:30] Tim_Smart: Buffer creation is pretty expensive though. [10:30] Tim_Smart: ryah: Sleeping yet? [10:31] Tim_Smart: Well not that expensive, but it can be a little off-putting. [10:32] mikedeboer: I'd use the Buffer, because it's just 1 LOC - it will probably be faster than the pure JS solution anyway [10:35] _announcer: Twitter: "Cloud hosting for Node.js http://icio.us/mc4tjq" -- Pepijn de Vos. http://twitter.com/pepijndevos/status/21990377626 [10:40] fjakobs has joined the channel [10:42] d0k has joined the channel [10:43] _announcer: Twitter: "Fresh off the press! http://bit.ly/9kTsmD #mongodb + #nodejs + #rest =Rest-mongo come and get some in-broswer mongo… http://goo.gl/fb/EBjUU" -- Sabrina. http://twitter.com/ClassTravel/status/21990761759 [10:45] Validatorian has joined the channel [10:49] crohr has joined the channel [10:53] uzum4ki has joined the channel [10:54] Deputaats: I'm reading data from Redis and need it to become normal utf8 again. [10:54] Deputaats: ne Buffer() is not helping because data I receive already is in buffer. [10:54] Deputaats: But myData.toString('utf8') etc does not help; [10:57] Validatorian has joined the channel [10:59] Deputaats: [10:59] Deputaats: How to decode this? [11:00] mape: well what does it print if you do toString() ? [11:00] Tim_Smart: Deputaats: What redis library are you using? [11:01] Deputaats: this http://github.com/fictorial/redis-node-client [11:05] Tim_Smart: mape: node> new Buffer([0x54, 0x6f, 0x6d, 0x73, 0x7e, 0x2d, 0x21, 0x42, 0x30, 0x40, 0x4b, 0x39]).toString() [11:05] Tim_Smart: 'Toms~-!B0@K9' [11:06] mape: Tim_Smart: Talking to Deputaats [11:06] mape: oh nm [11:06] mape: Looks like a password [11:06] Tim_Smart: Deputaats: Were you expecting 'Toms~-!B0@K9'? [11:07] Validatorian has joined the channel [11:07] Deputaats: no, "Toms�-??????" [11:08] Deputaats: ok, cyrillic [11:09] _announcer: Twitter: "@gerhardlazu http://github.com/botanicus/minitest.js for async server-side JS (node.js). Nothing for client-side so far." -- botanicus. http://twitter.com/botanicus/status/21992067092 [11:10] Deputaats: But I'm saving normal russian text.. output is this.. garbled thing. [11:10] Deputaats: hm [11:12] _announcer: Twitter: "I should convert all my projects to #nodejs and host them on my toaster oven's circuit bot. No downtime unless I toast something." -- Felix Geisendörfer. http://twitter.com/felixge/status/21992201725 [11:12] Deputaats: ACTION slaps _announcer around a bit with a large trout [11:13] fjakobs has joined the channel [11:13] mAritz: Deputaats: don't slap him, he's masochistic and will think we like him! [11:14] mAritz: Deputaats: have you checked whether redis saves cyrillic chars correctly? tried retrieving the value in redis-cli? [11:15] Deputaats: redis-cli returns somthing like that: \xe2 [11:15] Deputaats: that's one character "�" [11:17] donnex has joined the channel [11:18] Validatorian has joined the channel [11:18] mAritz: thats a utf8 char [11:18] Deputaats: but how to convert it to readable format? [11:22] FransWillem: What's the way to open a file descriptor as read-only for stat? e.g. fs.fstatSync(fs.openSync(filename,whatShouldBeHere)) [11:23] bvleur has joined the channel [11:23] mape: Is there something like normal russian text? [11:26] Deputaats: Yes. I'm saving letter "�" and it becomes "\xe2". [11:27] _announcer: Twitter: "played with Node.js, Express.js and websockets for some cool prototype work... Great work, guys!!! Pleasure to use this stuff... :-)" -- Martin Lippert. http://twitter.com/martinlippert/status/21993008964 [11:27] derencius has joined the channel [11:29] Egbert9e9 has joined the channel [11:31] mAritz: wow, this utf8 problem seems weird. [11:36] mAritz: i think this is above my head. i hate encodings :D [11:39] Deputaats: ok, then I'll need to deo encoding/decoding in base64 befroe saving/retrievineg. [11:39] Deputaats: grr [11:39] dilvie has joined the channel [11:39] dilvie: hi [11:39] dilvie: 5am coding rocks. [11:40] fbstj: aye to that [11:41] mAritz: 13pm coding sucks... just after lunch and i'm ready to take a nap :( [11:44] nerdEd has joined the channel [11:45] overra has joined the channel [11:45] _announcer: Twitter: "Please do nodejs screencast tutorial :-) @tbalthazar" -- Dhi Aurrahman. http://twitter.com/diorahman/status/21993989417 [11:45] freeall has joined the channel [11:46] freeall: Hey. I'm having a problem with io in node. [11:46] freeall: Whenever I am receiving a file node uses around 7% cpu [11:46] freeall: Compared to a java program that uses around 0-1% cpu [11:46] CrabDude has joined the channel [11:47] freeall: We're using 0.2.0 [11:47] christophsturm has joined the channel [11:47] freeall: Is there any known issues with IO or anything I should be aware of? [11:48] freeall: The very simple server we've created is this: http://pastebin.com/dg9Q84hA [11:49] freeall: We're running Ubuntu 9.04 [11:49] Lerchmo has joined the channel [11:50] CrabDude: howdy howdy, is anyone able to recommend any of the mysql modules over the other (experience?)? node-mysql-native appears to be fastest ATM? Am implementing in a production API =) [11:51] mape: CrabDude: take a look at felixges mysql module [11:51] mape: http://groups.google.com/group/nodejs/browse_thread/thread/729d5ba0cad69ba4 [11:52] mape: http://github.com/felixge/node-mysql [11:52] freeall: Is there a standard buffer size that node uses when handling io? [11:52] mAritz: freeall: there's transload.it that is pretty much centered around uploads and uses node.js. since it's from felixge who's one of the node.js contribute i'd guess that there is no general problem with receiving files. [11:54] CrabDude: mape excellent, thx didn't see that cuz it wan't on the modules list, same as http://github.com/masuidrive/node-mysql from the modules list? [11:55] CrabDude: list updated =) [11:55] freeall: mAritz, thanks. It does sound like there should be no problem. We aren't sure if we had the problem earlier (our server has changed a lot). But now it uses so much cpu. 7% for a single file upload seems too much. [11:55] freeall: mAritz, and we thought that maybe some buffer is too small and needs to be written too often [11:55] freeall: (also, we're not running it locally, so we aren't getting file uploads with more than 10mbit) [11:56] Lerchmo: while your guys are talking about file upload, I am using connect-form, and when I upload the file, it goes into the tmp directory... but the req.form.complete function never is called [11:56] Lerchmo: So the page just hangs... if I print anything before the complete function, it kills the upload [11:56] Tim_Smart: freeall: Considering your gist isn't doing anything with the data, it should use hardly any CPU at all. What is the memory usage looking like? [11:56] mAritz: Lerchmo: that sounds very module specific. open an issue maybe? :) [11:57] Lerchmo: I suppose I can do that... is there another module that handles file uploads well? [11:58] Tim_Smart: Lerchmo: node-formidable? [11:58] Lerchmo: connect-form uses node-formidable, ill have to checkout the formidable api [11:59] freeall: Tim_Smart, first off our server have 512mb ram and is running on a 2.83ghz. Node uses 21mb memory and 7%cpu when uploading the file. [11:59] freeall: Tim_Smart, and no, in this test we're not doing anything with it [11:59] freeall: Tim_Smart, and transferring around 10mbit [11:59] Tim_Smart: freeall: 21mb is quite a bit. [11:59] Tim_Smart: Well, for one file anyway. [12:00] Tim_Smart: How big is the file? [12:00] Tim_Smart: I might do a little test. [12:00] freeall: Tim_Smart, the file is 700mb. We're trying now to have 3 transfers at the same time and see how it scales. [12:02] Validatorian has joined the channel [12:03] freeall: We now have a different test. Uploading three (700mb) files at the same time. Then saving it to the harddrive. It takes 25% cpu and 26mb memory [12:04] freeall: We tried to profile the code and it showed that libc used 52% of the cpu time [12:04] stepheneb has joined the channel [12:05] robotblake has joined the channel [12:08] Tim_Smart: Hmm right. [12:08] Tim_Smart: I'm about to try a V8 profile on a ISO upload. [12:09] freeall: Nice. Let me know what that tells you. [12:12] Tim_Smart: freeall: Output https://gist.github.com/f401221675f11adae2b4 [12:14] uzum4ki has joined the channel [12:15] freeall: Tim_Smart, hmm, your libc doesn't use anything at all. Did you use the code example we created? [12:15] Tim_Smart: Yeah. [12:15] Tim_Smart: There is one obvious function doing a bit of damange in JS land by the looks of it. [12:15] freeall: Tim_Smart, and node 0.2.0 [12:15] Tim_Smart: damage. [12:15] Tim_Smart: Yes. [12:17] Tim_Smart: Hmm, all the data is going through the http parser... [12:17] freeall: Tim_Smart, this is our output, http://kkloud.com/prof/prof.log [12:18] Tim_Smart: I wonder if that affects anything... [12:18] robotblake has joined the channel [12:18] freeall: Tim_Smart, how can you see that? [12:18] Tim_Smart: I'm look through node's source code. [12:18] Tim_Smart: *looking [12:19] Tim_Smart: I might see if using http://github.com/felixge/node-formidable makes a difference. [12:20] freeall: Tim_Smart, all I notice is that we have libc-2.9.so and you have libc-2.11.1.so [12:21] freeall: Tim_Smart, do you know if node-formidable uses any native c? Something that works around some "slowness" in the node source? [12:21] Tim_Smart: The http parser is implemented in C. [12:22] Tim_Smart: Let me dig through formidable and get the gist of what it does, [12:22] freeall: Cool, thanks [12:23] victorstan has joined the channel [12:25] therealkerni has joined the channel [12:28] badaxx_ has left the channel [12:29] Egbert9e9 has joined the channel [12:29] bmavity has joined the channel [12:30] freeall: Tim_Smart, tried to install formidable and use that. Didn't seem to change anything. [12:30] bdha has joined the channel [12:31] inimino has joined the channel [12:31] zz_foca has joined the channel [12:32] Sembiance: morning everyone :) [12:32] robinduckett: afternoon [12:33] freeall: midday [12:34] fbstj: evening [12:34] Tim_Smart: freeall: Well, the best person to chuck your question to is felixge. [12:35] freeformz has joined the channel [12:35] freeall: Tim_Smart, I guess we'll try him then. Thanks! [12:35] keeran has joined the channel [12:35] freeall: Tim_Smart, and sorry, apparently we didn't try node-formidable before :) Just tried to avoid the http server. That didn't change anything. [12:36] Tim_Smart: freeall: Just to give you an idea, your first paste used about 15% CPU on my old macbook pro, with around 25mb ram. [12:37] freeall: Tim_Smart, was that running locally? Difference is the speed that the upload gets. [12:37] _announcer: Twitter: "Writing server-side #Javascript could become very addictive. #NodeJS" -- James Coleman. http://twitter.com/jt_coleman/status/21997148776 [12:37] Tim_Smart: freeall: Locally, file coming over USB [12:37] freeall: With our test we did it on our server, so we could get a speed of 10mbit. And still used 7% [12:38] freeall: Tim_Smart, then I guess 15% is ok. [12:38] dnolen has joined the channel [12:38] freeall: It's just that we have a java application doing more than just receiving the file, and it uses 0-1% cpu. [12:38] uzum4ki has joined the channel [12:40] _announcer: Twitter: "Meet Node.js. http://peepcode.com/products/nodejs-i Can't find a reason not to buy." -- Takaaki Kato. http://twitter.com/takaakikato/status/21997319905 [12:40] Tim_Smart: freeall: Yeah, something seems a little off. [12:41] freeall: it could be that libc changes something. But we'll try to contact felixge [12:42] Tim_Smart: freeall: Felix ( felixge ) or Ryan ( ryah ) [12:42] Tim_Smart: Considering it is in ryah's best interest to make node fast. [12:42] nerdEd has joined the channel [12:43] Tim_Smart: and performant [12:43] freeall: seems it's in his interest, yeah :) We'll get him later. Need to go to a meeting now. [12:43] freeall: But thanks so much for your help! [12:45] Gruni has joined the channel [12:46] _announcer: Twitter: "Oh wow!! JSSP - JavaScript Server Page engine on top of NodeJS (Alligator): http://t.co/ZDyyqRt" -- Reuben Peter-Paul. http://twitter.com/reubenPeterPaul/status/21997699909 [12:47] c4milo has joined the channel [12:48] eazyigz has joined the channel [12:49] robotblake has joined the channel [12:49] eazyigz: I understand to to get values out of a request querystring one can use url.parseLrequestt.url, true); [12:49] eazyigz: but how can I get post data? [12:52] crohr_ has joined the channel [12:52] jashkenas has joined the channel [12:54] bradleymeck has joined the channel [12:54] Tim_Smart: eazyigz: Post data is passed to the HTTP body, so you listen for the 'data' event on the request object. [12:54] jherdman has joined the channel [12:54] trotter has joined the channel [12:55] Tim_Smart: When 'end' is fired, you know all the post data has been sent by the client. [12:56] crohr has joined the channel [12:57] eazyigz: thanks, I will experiment [12:58] fbstj: is there any obvious way to serve static files AND dynamic requests at the same time? [12:59] Tim_Smart: fbstj: Two two different clients? [12:59] Tim_Smart: s/Two/To/ [13:01] Validatorian has joined the channel [13:01] fbstj: well yeah I guess [13:01] bradleymeck: a router, route *.dynamicfiletype, everything else static? [13:02] Tim_Smart: There are a few libraries to help you out. [13:02] _announcer: Twitter: "Callback Oriented Programming node.js or code is called Poi w http://bit.ly/cVqe7D" [ja] -- koichik. http://twitter.com/koichik/status/21998802506 [13:03] wattz: Good morning [13:04] fbstj: I've tried paperboy, node-static, and a few others. ahh well [13:05] virtuo has joined the channel [13:05] fbstj: and a couple of the listed proxies [13:06] bradleymeck: generally i avoid mixing dynamic and static files and place them each in their own directory as seen by http [13:07] Validatorian has joined the channel [13:07] matt_c has joined the channel [13:08] [[zz]] has joined the channel [13:12] ben_alman has joined the channel [13:12] Ori_P has joined the channel [13:13] Tim_Smart: fbstj: I would recommend Connect, or even http://github.com/Tim-Smart/biggie-router if you trust me ;) [13:13] wattz: fbstj: i slapped together an insanely simple node server for static files i use for developing [13:13] eazyigz has joined the channel [13:13] wattz: Tim_Smart: biggie is pretty clean man, cu-toes. [13:14] nerdEd has joined the channel [13:14] Tim_Smart: wattz: Have you looked at it before? [13:14] wattz: yeah [13:14] wattz: after i wrote mine [13:14] wattz: lol [13:14] wattz: i have my own little personal node framework [13:15] wattz: which is cbecoming a monster lol [13:15] _announcer: Twitter: "#reddit Code Reads: StringScanner, a CommonJS module for tokenizing strings (CoffeeScript / Node.js).: submi... http://bit.ly/cwM8XU #rulez" -- REDDITSPAMMOR. http://twitter.com/REDDITSPAMMOR/status/21999675273 [13:15] Tim_Smart: Ah right. My main concern was performance and interoperability with connect middleware. [13:15] aliem has joined the channel [13:15] wattz: yeah, im not a huge fan of connect [13:15] wattz: think node does well enough for itself [13:16] wattz: if i can just get the last couple of peices to my framework built, i want to release it [13:16] fbstj: yeah I installed connect first, but it didnt work even straight after the 'init' method XD [13:16] Tim_Smart: fbstj: Do you have npm installed? [13:16] wattz: although i will have to tweek it a bit to work with node, but then i can use all i built for my personal projects which use node [13:16] fbstj: node is frikin awesome! and yeah twas where I got connect, and all the other things I've got installed XD [13:17] wattz: fbstj: it's fun [13:17] wattz: which also reminds me, need to drop in threading to force my mysql driver to be non-block in a hacktastic way [13:17] Tim_Smart: fbstj: `npm install biggie-router` [13:18] Tim_Smart: And I'll show you quickly how to serve static files. [13:18] fbstj: thanks [13:18] wink_: anyone wanna lend me a hand for a little bit? :> http://groups.google.com/group/nodejs/browse_thread/thread/b7786db1070ea9a3 [13:18] wattz: sup wink_ [13:19] wink_: morning :> [13:19] Sembiance: fbstj: node is even better with 'step' http://github.com/creationix/step [13:19] wink_: yeah step is pretty strong stuff [13:19] Tim_Smart: Sembiance: Step isn't the only one :) [13:19] Sembiance: Tim_Smart: what are some others that you are fond of? [13:21] wink_: wattz: did you get bob working yet? :p [13:21] Tim_Smart: http://github.com/kriszyp/node-promise and http://github.com/Tim-Smart/node-parallel are useful. (The last one was a self plug) [13:21] wattz: wink_: aya [13:21] wattz: aye [13:21] wattz: i use bob to build bob now [13:21] wattz: just a few more kinks to workout and a good commit and we should be solid [13:21] wink_: nice [13:22] Tim_Smart: Sembiance: I do a lot of dynamic task generation, so I use node-parallel quite a bit. [13:22] pgriess has joined the channel [13:23] Sembiance: Tim_Smart: awesome, I will look into both fo those [13:24] _announcer: Twitter: "Code Reads: StringScanner, a CommonJS module for tokenizing strings (CoffeeScript / Node.js). http://bit.ly/bkZuvs" -- Chirag Chamoli. http://twitter.com/chiragchamoli/status/22000112337 [13:27] [[zz]] has joined the channel [13:28] fbstj: hmmm biggie looks pretty sweet [13:29] matt_c has joined the channel [13:31] badaxx has joined the channel [13:32] eazyigz has joined the channel [13:36] Tim_Smart: fbstj: https://gist.github.com/79a44fd74e3f18e7fe7a [13:36] davidsklar has joined the channel [13:36] Tim_Smart: That might help some. [13:36] bradleymeck: anyone here about joyent hosting for ko? [13:36] fbstj: thankyou :) [13:37] Tim_Smart: fbstj: Made a change, router.static should be router.module [13:37] paul__ has joined the channel [13:38] wattz: fbstj: this is why node is awesome: [13:38] wattz: http://gist.github.com/547567 [13:38] wattz: 10mins and a cute little static server [13:38] bradleymeck: haha :) [13:38] Tim_Smart: With a library, even shorter :p [13:38] badaxx: wattz: agree! [13:39] _announcer: Twitter: "Brilliant presentation of node.js http://www.youtube.com/watch?v=F6k8lTrAE2g Node.js: JavaScript on the Server" -- Igor Minyaylo. http://twitter.com/iminyaylo/status/22001091569 [13:39] wattz: Tim_Smart: Imma "Reinvent wheel" guy [13:39] wattz: lol [13:39] badaxx: wattz: node-router <3 [13:39] wattz: badaxx: birdhouse router :D [13:40] paul___ has joined the channel [13:40] badaxx: is node-router performing well? [13:40] wattz: never used node-router [13:40] badaxx: im using it right now but i didnt do benchmark stuff yet [13:40] Tim_Smart: wattz: https://gist.github.com/312e2aef900346462081 [13:40] Tim_Smart: bam [13:41] wattz: birdhouse is my little private framework, and it doesn't follow all the nodie standards [13:41] wattz: Tim_Smart: i like biggie man, and i know you can do it with a lib [13:41] geeks_bot has joined the channel [13:41] wattz: i was just showing the nice-i-teeeee of node [13:42] wattz: Tim_Smart: and the real question is.... will it blend? [13:42] gf3 has joined the channel [13:42] Tim_Smart: wattz: Yup. [13:42] fbstj: hehe [13:43] wattz: ok, have to finish bob, Ink, and Birdhouse server and then build some webservices [13:43] wattz: busy day [13:44] wattz: once i finish bob, im going to try to use node as my first configure and build app [13:45] fbstj: thanks Tim_Smart :) awesome [13:46] wattz: fbstj: might i recommend trying to write some stuff in straight node/js before diving to deep into libraries just so you can get a great understanding of how it all flows? [13:46] jashkenas has left the channel [13:47] Tim_Smart: Yeah, definitely get familiar with the http and fs library first. [13:47] jetienne_: q. [13:48] fbstj: yah I tried, hehe, just thoguht others's code would be better than mine :D [13:49] wattz: take another stab, and we can help you out if you have questions [13:49] eazyigz has joined the channel [13:49] wattz: getting it down now, and you will take us for the suggestion later [13:49] softdrink has joined the channel [13:50] wattz: don't be a "rails" developer (developers who use rails but can't actually program in ruby) [13:50] fbstj: lol [13:50] wattz: ** This is not an all inclusive statement, there are plenty of great ruby devs out there who know rails [13:51] Validatorian has joined the channel [13:52] fbstj: sure, I'll go back to basics, just wanted to start quite high-level so I could see stuff happening, heh [13:53] wattz: i know a few languages.... some where a pain to learn. [13:53] wattz: but i have to say, lex/yacc is just awkward. [13:53] caolanm: wattz: *were [13:53] caolanm: still mastering english ;) [13:54] wattz: yeah.... im 1/87th Italian [13:54] wattz: english is NOT my first language ;D [13:54] fbstj: lol [13:54] caolanm: hehe [13:54] wattz: caolanm: i push out normal speaking/writing english for programming languages [13:54] mscdex: wattz your first language? BASIC? [13:54] wattz: mscdex: C :D [13:54] fbstj: classy [13:54] caolanm: wattz: me too, and english is the only spoken language I have! [13:55] wattz: Started messing with C in 89 :D [13:55] davidwalsh has joined the channel [13:55] wattz: then ASM (So i could write killer games on my TI-85) [13:55] wink_: wattz, put your c skills to use and help me find this bug: [13:55] caolanm: I was thinking about this, and I'm pretty sure the first language I learnt was javascript [13:55] wink_: http://groups.google.com/group/nodejs/browse_thread/thread/b7786db1070ea9a3 [13:55] wink_: <3 [13:55] wattz: now i have no idea how to program in ASM anymore [13:56] caolanm: and now I've gone full circle, via C, C++, Python... [13:56] jetienne_: wattz: i did 5y of 68k on atari+amiga :) [13:56] _announcer: Twitter: "Latest Adobe News - pulling query string in node.js http://www.shinstudio.com/blog/programming/pulling-query-string-in-node-js/" -- tony murphy. http://twitter.com/spoton468/status/22002302622 [13:56] caolanm: (and a dabble with erlang) [13:56] wattz: jetienne_: <3 [13:56] wattz: wink_: im poking around in it [13:56] wink_: i would love you till the end of days if you can find it [13:56] wattz: objective-c and js are my 2 fav languages [13:56] wattz: py is a close 3rd [13:56] wattz: i use php for toilet paper [13:57] _announcer: Twitter: "Just built a little app to sync your browsing between devices (à la Chrome-to-phone) as an experiment in Node.js and Redis. Buggy, untested," -- Tom Usher. http://twitter.com/tom_usher/status/22002386183 [13:57] wattz: wink_: is var compiledWrapper being declared in a loop? [13:57] wink_: nah, compiledWrapper is some node/v8 internals [13:57] wink_: not my js :p [13:57] wattz: sounds like an ugly memory leak [13:58] wink_: thats what i keep thinking, but i just cant find it [13:58] wink_: i think im being garbage collected [13:58] wattz: forced* [13:58] wink_: but i lack the ability to find it [13:59] wattz: perhaps your object is ill formatted? [13:59] wattz: sending v8 and/or node into a tail spin [13:59] stagas has joined the channel [14:00] wink_: well at the point the crash is occurring the single field it has decoded is right and proper [14:00] wink_: and when i shrink the data set slightly it parses it just fine :< [14:00] wattz: here is my thought on this [14:00] wattz: i don't have time to crawl their code [14:00] Aikar: :D [14:00] wattz: but [14:00] wattz: i can tell you this [14:00] Aikar: working on my manager to let me start rewrite to node [14:00] Aikar: i think im getting to him! [14:01] wattz: if you have 80 results fine [14:01] wattz: at 81/82 it's blank [14:01] wattz: and over crashes [14:01] wattz: you are running out of allocated memory. [14:01] wink_: it definitely reeks of a memory problem, whats weird is at the crash threshhold, its not getting to the end of the parsing and crashing on the 83rd record [14:02] wattz: 81 and 82 are blank because they won't fit everything. The results are to long for the allocation [14:02] Sembiance: Aikar: hehehe, you shoudl write a blog post after your conversion about lessons learned or something :) [14:02] wink_: its crashing immediately on the first [14:02] stagas: anybody up for a realtime backgammon http://backgammon.stagas.com :) needs chrome or ff 4 [14:02] Aikar: Sembiance: heh, im coming from PHP, so im sure everyone knows the pitfalls of PHP :P [14:02] wattz: php's worse enemy is php. [14:02] _announcer: Twitter: "Reading 'Playing with Node.js, Tornado and Thin' at AkitaOnRails @ ~ http://liten.be//SZbed" [pt] -- Rafael Uchoa. http://twitter.com/uchoaaa/status/22002786698 [14:03] wattz: wink_: let me get through my tasks/meetings of the day, and remind me. I will take a look at their source see if i notice anything [14:03] wink_: will do :D [14:03] wattz: if they are declaring a char buffer of like [100] instead of something like [len(resultsblahblah) + 1] [14:03] wattz: you would easily run out of space [14:03] wink_: its definitely not that simple of an overrun [14:04] wink_: valgrind would've caught that one [14:04] wattz: yeah [14:04] wattz: oh i wasn't saying it's that simple [14:04] wink_: and the actual buffer allocation is pretty straightforward [14:04] wattz: more of a wish [14:04] wattz: lol [14:04] wink_: haha yeah [14:04] nerdEd has joined the channel [14:04] wattz: just have to finish bob's build routine [14:04] wattz: and the make/configure/waf piece is pretty much complete [14:04] wattz: then [14:05] dnolen has joined the channel [14:05] wattz: wink_: i was thinking of adding a little webservice in it for reporting people who build with it, and what they build [14:05] wattz: anonymous stats [14:06] wattz: if the dev set's the flag [14:08] dnolen has left the channel [14:10] maushu has joined the channel [14:10] crohr has joined the channel [14:10] maushu: Happy birthday to me! [14:10] wattz: awww [14:10] Astro: to me not [14:10] wattz: HAPPY BDAY! [14:11] Aikar: you are windows 95?! lol [14:11] wattz: maushu: how old? [14:11] maushu: 24 [14:11] maushu: One more step to six-palms under the earth. [14:11] Sembiance: wow. I remember when I was 24... like 7 years ago rofl. [14:11] wattz: youngin [14:11] wattz: heh [14:11] wattz: 6 years and 3 kids ago for me [14:11] wattz: :P [14:12] sonnym has joined the channel [14:12] maushu: Well, I prefer be younger. More time for me, yay! [14:12] fbstj: lol [14:12] fbstj: ACTION younger [14:12] maushu: Curses! [14:13] Aikar: heh 25 is coming up for me in few months :3 [14:13] _announcer: Twitter: "Just watched the new Peepcode node.js screencast. Fascinating stuff, can't wait for part 2! @topfunky top drawer as always." -- Ian Alexander Wood. http://twitter.com/i0n/status/22003579167 [14:14] matt_c: Get off meh lawn! [14:14] fbstj: :D [14:14] wattz: ._. [14:14] wattz: when i grow up.... [14:15] fbstj: there was no internet :p [14:15] wattz: dude, i use to write MUDs for a BBS. [14:15] wattz: -_- [14:15] stepheneb has joined the channel [14:16] matt_c: ACTION misses life at 1200BPS. [14:16] wattz: such a simple type, eh matt_c? [14:16] wattz: s/type/time [14:16] gerad has joined the channel [14:16] matt_c: wattz: back when you could read menus as they were downloaded :) [14:17] wattz: matt_c: the 'race to the bottom' [14:18] wattz: when the best ISP to get to IRC was NETCOM. [14:18] Aikar: lol [14:18] matt_c: **** The SysOp is [IN] **** [14:18] Aikar: my boss was kinda amazed when he found out IRC is still big [14:18] wattz: And you got kicked off Prodigy because they frown on you download user info from their database that didn't have a password. [14:18] _announcer: Twitter: "Check out http://bit.ly/cV8Wz1 Testing out my realtime backgammon you see the cursors and checkers moving! #WebSockets #nodejs #node.js" -- George Stagas. http://twitter.com/stagas/status/22003968694 [14:19] wattz: Or kicked of AOL 2.5 because your name was on an awesome mass mailer that everyone used to max your mail box to 440 files of delicious. [14:19] wattz: >_> [14:19] _announcer: Twitter: "Trying to implement #nodejs #node-mysql, @felixge what am I missing?? client.query cb refuses to fire... http://pastebin.com/4iEWqreN" -- Adam Crabtree. http://twitter.com/CrabDude/status/22004023536 [14:19] zemanel has joined the channel [14:19] bradleymeck has joined the channel [14:24] jelveh has joined the channel [14:26] marek_z has joined the channel [14:26] Lerchmo has joined the channel [14:27] aho has joined the channel [14:28] danielzilla has joined the channel [14:28] marshall_law has joined the channel [14:28] johndahlstrom has joined the channel [14:30] aheckmann has joined the channel [14:34] dan_manges has joined the channel [14:34] stepheneb has joined the channel [14:35] Validatorian has joined the channel [14:36] JimBastard has joined the channel [14:36] JimBastard: everybody stop! [14:36] JimBastard: javascript time! [14:36] bradleymeck: jim did you enter js1k or am i delusional [14:36] JimBastard: return 'win'; [14:37] JimBastard: done [14:37] JimBastard: goto: coffee and bagel [14:38] femtoo has joined the channel [14:38] gf3: NO U [14:38] gf3: Chocolate milk + BLT [14:38] JimBastard: setTimeout(function(){ return 'food';}, 60000); [14:39] deltasquare4 has joined the channel [14:40] steadicat has joined the channel [14:40] JimBastard: this.search('my pants'); [14:41] bradleymeck: what is this? [14:41] gf3: JimBastard: this.search( this.clothing.pants ).for( "change" ).and( buyFood.bind(this) ) [14:42] bradleymeck: mmm why dont we have a mud yet [14:42] aurynn: muds are a pain to write? :) [14:44] ajpiano has joined the channel [14:46] tableton has joined the channel [14:47] bradleymeck: pfff [14:47] fbstj has left the channel [14:47] wink_: http://groups.google.com/group/nodejs/browse_thread/thread/b7786db1070ea9a3 -- anyone? :D [14:48] c4milo has left the channel [14:48] bradleymeck: wink_ at this point id argue moving onto mongodb-native [14:48] wink_: lol, i cant bring myself to do that :p [14:48] wink_: at this point i have to beat this bastard bug [14:49] wink_: even if i end up rewriting the binding in the process [14:49] JimBastard has joined the channel [14:49] JimBastard: pants and bagel achieved [14:50] wink_: i dont think this bug is fundamental, im just not able to spot it [14:50] wink_: and im patient, i'll wait until one of you gurus gets tired of me begging ;) [14:50] streampunk has joined the channel [14:51] JimBastard: if a bug exists in the software and is not reproducible, did it ever exist? [14:51] nefD: hm. i wonder if it would be possible to interact with apc's cache from within node [14:51] JimBastard: morning streampunk [14:51] streampunk: JimBastard: Then it's just vaporware. i.e. unreleased features. [14:52] bradleymeck has joined the channel [14:52] streampunk: non deterministic bugs are a specialty of mine. [14:53] wink_: bradley, wanna be a hero and help me find this thing? :) [14:53] pgriess has joined the channel [14:53] JimBastard: non-determinism is a specialty of mine [14:54] JimBastard: im completely out of order [14:54] streampunk: JimBastard: So you're a bug. NICE! [14:54] wink_: well let me enlist you 2 [14:54] wink_: :D [14:55] JimBastard: pebcak [14:55] streampunk: JimBastard: Can I reproduce you? [14:55] streampunk: Object.create(irc.personas.JimBastard) [14:56] JimBastard: streampunk: if that is a proposition, im listening. [14:56] mscdex: kebcac [14:56] streampunk: Seems to be blocking. [14:56] mscdex: keyboard exists between chair and computer [14:56] mscdex: :-D [14:56] bradleymeck: so no word on deploying to joyent still for KO? [14:56] JimBastard: bradleymeck: they are just vps right? [14:57] mscdex: Joyent is busy generating double rainbows, give them a break [14:57] JimBastard: ill host any team who wants to get disqualifed [14:57] bradleymeck: sweet! [14:57] bradleymeck: more competition for me [14:57] mscdex: maushu.com/happybirthday.html [14:58] sudoer has joined the channel [14:59] bradleymeck: can anyone make this statement shorter? l+=x=l&64?-x:x; ... [14:59] JimBastard: streampunk: what you getting into this week? feel like coming to jail [14:59] _announcer: Twitter: "Downloading @peepcode's Node.js screencast." -- Cyril Bioley. http://twitter.com/cbioley/status/22007003454 [14:59] streampunk: JimBastard: I've been writing a node app that does realtime instrumentation of a clients web app. [15:00] streampunk: JimBastard: Once that's done I'm working on a couchapp for a couple days... which I could easily do with jail time. [15:00] badaxx: mscdex: are you informed about the current status of the issues? [15:01] maushu: mscdex: If I had access to my webserver from here I would do that. [15:01] JimBastard: i got kicked out of band class for playing with my instrument [15:01] mscdex: badaxx: you mean with breakfast not being made? [15:01] maushu: JimBastard: You perv. [15:01] t3h_awesome has joined the channel [15:02] badaxx: mscdex: felixge is from germany, its 5 pm here ;) [15:02] maushu: wattz: MUDs? [15:02] JimBastard: maushu: did you hear? nodejitsu got some funding [15:02] mscdex: badaxx: i'm from the U.S., it's 11:03am here :-) [15:02] justinlilly has joined the channel [15:02] badaxx: mscdex: I know :P but felixge is the maintainer, right? [15:02] maushu: JimBastard: Nope, how much did you give away? [15:02] JimBastard: 0 [15:03] mscdex: badaxx: yes, what issues are you talking about? [15:03] maushu: ... [15:03] JimBastard: got 10k [15:03] wattz: maushu: -_- [15:03] JimBastard: cash [15:03] JimBastard: ACTION is the fund raiser [15:03] maushu: What kind of funding is that. [15:03] JimBastard: the, give me the money im jimbastard kind? [15:03] maushu: You sold your soul, didn't you? [15:03] badaxx: mscdex: text columns with > 250 chars break the query [15:03] wattz: JimBastard: for which project? [15:03] JimBastard: i sold my soul in 6th grade to nick spano [15:03] maushu: Oh wait, didn't have one. [15:03] JimBastard: then again, multiple times [15:03] bradleymeck: once you start hosting ppl you can even get more money [15:04] JimBastard: aye [15:04] maushu: wattz: Wut. [15:04] JimBastard: build the brand, leverage the team synergy [15:04] JimBastard: go go team tiger matrix [15:04] maushu: BULLSH- [15:04] mscdex: badaxx: oh yeah i saw that, he thinks it's related to another issue. i haven't even tried looking at it yet, i got a lot of paid work to do today :-\ [15:04] JimBastard: maushu: check out or dev team, http://github.com/nodejitsu [15:04] wattz: maushu: MUD is MultiUser dungeon [15:04] JimBastard: wattz: ^^ [15:04] wattz: text based MMO [15:05] maushu: wattz: Seriously? Thats silly. [15:05] bradleymeck: f it imma go make a game statistics module for rpgs [15:05] maushu: Who wants to read stuff? [15:05] streampunk: MU's in general are a great idea. I'd gladly abandon #node.js if there was a node mu. [15:05] badaxx: mscdex: hrmpf :( have to recode my socketserver with node and mysql :( cant keep on developing without fixing that bug [15:05] wattz: "that's so 90s" [15:05] maushu: Thats so 80s. [15:05] bradleymeck: irc is basically a mud lol [15:05] wattz: JimBastard: no shit man [15:05] wattz: congrats [15:05] maushu: ACTION levels up. [15:05] JimBastard: http://github.com/marak/zztmmo [15:06] mscdex: badaxx: fwiw, i've got auto casting on my fork though :-p [15:06] mscdex: badaxx: i'm working with felix to get it pulled in [15:06] streampunk: 90's are coming back you know. I think node created a loop in the time continuum. [15:06] maushu: JimBastard: Wait, I have you show you my pre-launch landing page? [15:06] figital has joined the channel [15:06] JimBastard: maushu: i know and see all [15:06] maushu: *Have I [15:06] badaxx: mscdex: okay, thx man [15:06] maushu: Holy crap, that went wrong. [15:07] bradleymeck: you got my hopes up, and dashed them aside after that dialog [15:07] JimBastard: streampunk: there is a tear in the event loop time continuum [15:07] JimBastard: flux_capicator.cc [15:07] streampunk: JimBastard: Someone put the 90's in the nextTick! [15:07] JimBastard: ryah said it was coming [15:07] maushu: wattz: Just kidding, I know what a MUD is. [15:08] maushu: I did play in MUDs, I prefer building based ones though. [15:08] JimBastard: speaking of mmo games and bringing back the 90s, http://project1999.org/ [15:08] JimBastard: ACTION conversations merged.  [15:08] tobiassjosten has joined the channel [15:09] wattz: maushu: lol, thanks for making me feel really old [15:09] maushu: No prob, gramps. [15:09] wattz: ._. [15:09] stepheneb_ has joined the channel [15:10] JimBastard: hey wattz , do you have filtered internet at lulz.com [15:10] wattz: not really [15:10] wattz: somethings yeah [15:10] wattz: if there is "Dong" in the title or something [15:10] JimBastard: lulz [15:11] maushu: wattz: I wanted to create a mud based on a concept I had. Basically it would mean increase the detail of world with buckloads of entities [15:12] geeks_bot has joined the channel [15:12] wattz: maushu: i built a SNES zelda style MMO for the iphone :D [15:12] kriszyp_ has joined the channel [15:12] wattz: one day... i will find an artist to replace the ripped off sprites so i can release it >_> [15:12] maushu: Hmmm. [15:13] maushu: Do you want to pay? [15:13] wattz: of course not [15:13] wattz: :D [15:13] maushu: It's pretty easy if you have got the money. [15:13] maushu: Basically impossible if you don't. :p [15:13] wink_: bradleymeck: i've wrangled it to produce a slightly different crash, im wondering if that could be useful in determining the cause. http://pastebin.com/MmWPJqwf any thoughts as to what would cause Emit to break? [15:14] maushu: wattz: My idea is that the user instead of being a user entity, it would be a group of (group of, etc) entities. [15:14] wattz: ahhhh [15:14] maushu: tl;dr: You can rip your heart off if you want. [15:14] creationix has joined the channel [15:14] bradleymeck: ACTION goes to look [15:15] maushu: wattz: The reason for such madness would be the possibility of having a truly dynamic magic system. [15:15] maushu: You could create/program a spell to rip the heart off your enemies. Fun for the whole family. [15:16] mAritz: ACTION casts "corpse explosion" on self. [15:16] maushu: mAritz: Yup, totally possible. [15:16] wink_: bradleymeck: basically instead of instantiating an object for the oid type, i just hardcoded it to a string value since that was where it was crashing before, now i've moved the crash and hopefully can glean something useful from it [15:16] eazyigz: is it possible to get the html source of the webpage that sent a request? [15:16] Validatorian has joined the channel [15:17] Lerchmo: Tim_Smart hey, formidable worked like a charm, thanks for the tip! [15:17] bradleymeck: wink_ i still think its something with how he is freeing the cursors [15:17] maushu: eazyigz: Huh, webpages don't send requests. [15:17] mAritz: that would be hilarious. play for a few hours with a group, come up to some really awesome monster and then just suicidekill the entire party [15:17] bradleymeck: call of cthulu style [15:17] eazyigz: the request that originated from a webpage [15:18] maushu: mAritz: Then the awesome monster eats the bodies. [15:18] eazyigz: I know in javascript you can get innerhtml of the body [15:18] bradleymeck: eazyigz, what are you trying to do, what is requesting what from the webpage [15:18] mAritz: eazyigz: check the referrer, request the url, parse the response [15:18] eazyigz: but I am using node.js with GET, so I cannot pass such a large value in my request [15:18] eazyigz: and not xmlhttp [15:18] _announcer: Twitter: "@deisinger actually just wrote a blog post about it. http://intridea.com/2010/8/24/using-npm-with-heroku-node-js" -- Michael Bleigh. http://twitter.com/mbleigh/status/22008506823 [15:19] maushu: Ok, I'm officially confused with eazyigz problem. [15:19] eazyigz: I am using jsonp with script tag injection [15:19] mAritz: eazyigz: are you talking about an external page that links to your node app? [15:19] Deputaats: Anyone using Socket.IO here? [15:19] eazyigz: I want to pass the html source along with my request to node.js [15:20] eazyigz: but, again, I am not using POST, I am using GET, so it becomes problematic [15:20] daleharvey has joined the channel [15:21] bradleymeck: do you HAVE to use get? [15:22] aubergine_ has joined the channel [15:22] bradleymeck: if so, an ugly hack is to use setRequestHeader(...) to deliver the payload [15:23] bradleymeck: but i would recommend you use an appropriate verb to delivering data [15:23] eazyigz: with JSONP one can only use get [15:24] benburkert has joined the channel [15:24] bradleymeck: eazyigz, not really [15:24] eazyigz: on a cross-domain request? [15:24] maushu: JimBastard: How are you going to handle npm and addons in general with nodejistu? Free for all deathmatch? [15:25] JimBastard: maushu: huh? [15:25] JimBastard: everyone gets their own cloud [15:25] JimBastard: to do whatever they want with [15:25] bradleymeck: eazyigz, now thats more interesting [15:25] maushu: Instance, you mean. [15:25] JimBastard: no [15:25] JimBastard: cloud [15:26] maushu: Cloud means multiple instances, unless you are going to charge like more than 50 per user... [15:26] badaxx_ has joined the channel [15:26] JimBastard: everyone gets N instances based on usage [15:26] maushu: Hmm. [15:27] JimBastard: its transparent though [15:27] JimBastard: everyone gets their own ip too [15:27] maushu: I had a similar idea with multiple processes in multiple instances, but in your case I can't see how are you going to control abuse. [15:27] bradleymeck: eazyigz, id recommend using a proxy then cause xdomain requests are sketchy support wise. COR is helping but it is barely supported [15:27] JimBastard: maushu: thats why i get paid the big dollars :-) [15:28] maushu: Funding is not getting paid. [15:28] wink_: bradleymeck: i would've thought valgrind would've caught a broken free though, it should also be noted that freecursor isn't being called before the crash :< [15:28] maushu: :p [15:28] _announcer: Twitter: "Using Heroku for the @node_knockout? Here's how to use NPM to vendor libraries: http://intridea.com/2010/8/24/using-npm-with-heroku-node-js" -- Michael Bleigh. http://twitter.com/mbleigh/status/22009187369 [15:28] JimBastard: i still get paid the bigger dollars [15:28] bradleymeck: wink_ never? [15:28] JimBastard: like 3 foot by 4 foot [15:28] JimBastard: double sided [15:28] JimBastard: novelty checks too [15:28] marek_z has joined the channel [15:28] JimBastard: you name it [15:28] JimBastard: :p [15:28] wink_: not in that run, it does get called when it works but the crash is happening before the free [15:29] wink_: its crashing in ParseReply, the memory freeing doesnt occur until later [15:29] eazyigz: bradleymeck: you mean send my requests to a proxy? My requests are coming from a javascript plugin, and it could be from anywhere [15:29] CrabDude: anyone ever recieved "bad handshake" error using felixge's node-mysql? [15:29] wink_: oh wait [15:29] wink_: sorry im lying to you, it is being free'd before emitresults [15:29] JimBastard: maushu: i dont really care about abuse, people are paying for utility [15:29] wink_: let me swap that around [15:29] Lerchmo has joined the channel [15:29] JimBastard: if they abuse it, they pay [15:29] JimBastard: everyone is jailed [15:29] ehaas has joined the channel [15:30] eazyigz: bradleymeck: and I'm not sure what a proxy will buy me [15:30] wink_: no dice [15:30] JimBastard: eazyigz: you can proxy the requests server-side and bypass the same-origin policy [15:30] JimBastard: ? [15:30] bradleymeck: eazyigz, can you throw all of that into the url. [15:30] zemanel has joined the channel [15:30] wink_: something is definitely getting yanked out from under though either through gc or something else [15:31] _announcer: Twitter: "Trending Topics in the command line, I released version 0.1 http://github.com/fczuardi/ttc please test and criticize. # Nodejs" [pt] -- Fabricio Zuardi. http://twitter.com/fczuardi/status/22009434211 [15:31] eazyigz: JimBastard: interesting idea [15:31] wink_: if you wouldnt mind, i can set up a mongo db that will reproduce the error and provide a script for it if you want to actually give it a run [15:32] zomgbie has joined the channel [15:32] JimBastard: eazyigz: its pretty standard [15:32] eazyigz: JimBastard: then I won't need jsonp. But I will have to construct an html form in my javascipt instead (on the client side) [15:32] _announcer: Twitter: "need more cross platform js templating engines. @thetalecrafter's stencil is the only one i know of atm for node / browser interop." -- rektide de la fey. http://twitter.com/rektide/status/22009536740 [15:32] JimBastard: eazyigz: aye [15:32] eazyigz: jsonp just seemed more elegant and less coding [15:32] JimBastard: there are like 3 scenarios off the top of my head [15:33] JimBastard: 1. you control both domains, 2. you control the first domain, not the second, 3. you control neither domain [15:33] JimBastard: or i guess, 4. you dont control the first, but the second [15:33] JimBastard: you seem to be #2? [15:34] eazyigz: I control only where my node.js server is running [15:34] dnolen has joined the channel [15:34] eazyigz: I provide the js plugin to my clients, and they embed it into their webpages [15:34] JimBastard: ahhh [15:35] JimBastard: yeah, so jsonp is good there if its only get [15:35] eazyigz: so with my plugin, I am doing jsonp, but I could try the form post with proxy approach [15:35] eazyigz: again, I think its more coding [15:35] JimBastard: eazyigz: then they will have to submit the page [15:35] JimBastard: and do a plain ole form post [15:35] steadicat has joined the channel [15:35] JimBastard: you cant get around same-origin, no matter how hard you try [15:35] JimBastard: and ive tried [15:36] JimBastard: i beg anyone to prove me wrong [15:36] eazyigz: JimBastard: someone mentioned that I can get referrer from request, send a new request from node to the client and then parse the response [15:36] eazyigz: that way I can get the html source of the client [15:37] JimBastard: uhhhh [15:37] JimBastard: huh? [15:37] JimBastard: how do you send a request from node to the client [15:37] JimBastard: the internet dont work like that [15:37] Sembiance: wow. YouTube was only launched 5 years ago [15:38] dnolen has left the channel [15:38] JimBastard: the ups man scared me real bad this morning. i was having a dream i was robbing a bank and he knocked on the door really loud waking me up [15:38] eazyigz: well, since node is server side, then one can get remote webpahes [15:38] eazyigz: webpages [15:39] JimBastard: you gotta use proper terminology or i cant really help you, gets too confusing [15:39] JimBastard: "client" is like the web browser connecting to your server [15:39] eazyigz: sorry [15:40] eazyigz: something akin to urllib in python [15:40] JimBastard: what you are trying to say (i think) is setting up a proxy [15:40] blogometer has joined the channel [15:40] JimBastard: browser hits your server with a jsonp get [15:40] eazyigz: not sure what the equivalent to urllib for node is... [15:40] JimBastard: inside that request you have some data [15:40] _announcer: Twitter: "An oldie but a goodie on Node.js and MongoDB: http://bit.ly/93HIYF Great way to get started and evaluate the combination." -- Mitch Pirtle. http://twitter.com/mitchitized/status/22010132648 [15:40] JimBastard: your node server reads that data and performs a client.http request somewhere [15:40] JimBastard: the response to the node request gets returned as the data to the original jsonp request [15:40] JimBastard: proxy time [15:41] eazyigz: JimBastard: and what I need from that data is the client's html source [15:41] JimBastard: why? [15:41] JimBastard: the whole document? [15:41] JimBastard: the body? [15:41] JimBastard: with javascript rendering? [15:41] dmcquay has joined the channel [15:41] eazyigz: whole doc [15:41] tj has joined the channel [15:41] JimBastard: okay, so its the exact same process i just told you [15:43] FransWillem: Hmmm [15:43] brianleroux has joined the channel [15:43] eazyigz: great, if I can only see some example code of node performing requests... [15:44] FransWillem: pretty happy about my new async compositional library :) [15:44] JimBastard: eazyigz: the nodejs docs [15:44] JimBastard: i have a better idea [15:44] JimBastard: eazyigz: use this http://github.com/mikeal/node-utils/tree/master/request/ [15:45] creationix: Anybody know why Object.create(Prototype) is so much slower than new Constructor()? [15:45] JimBastard: there you go [15:45] bradleymeck: http://nodejs.org/api.html#http-client-184 [15:45] JimBastard: now be off, and go write codes [15:45] JimBastard: dont listen to bradleymeck hes a noob [15:45] bradleymeck: request is easier [15:45] JimBastard: :-) [15:45] bradleymeck: pfff, ill nub you [15:45] JimBastard: ACTION got nubbed out [15:45] bradleymeck: creationix, its actually a js side wrapper to an api [15:45] JimBastard: but yeah, they are the same thing, but the request module is easier to use [15:46] JimBastard: request module is built on top of the core node http-client [15:46] creationix: bradleymeck: in V8? [15:46] _announcer: Twitter: "PeepCode Node.js Screencast is now a single 70 minute screencast! Only $9 https://peepcode.com/products/nodejs-i" -- PeepCode. http://twitter.com/peepcode/status/22010552609 [15:46] devinus: off topic client side question: how the fuck do i create a new Docuemnt context? [15:46] JimBastard: devinus: clientside or serverside? [15:46] bradleymeck: yes [15:46] devinus: clientside [15:46] devinus: well both [15:46] JimBastard: nope [15:46] devinus: either in jsdom or the browser [15:46] JimBastard: im about 90% sure you cant in the browser [15:46] creationix: bradleymeck: think we could convince the v8 guys to optimize that a bit [15:46] JimBastard: unless you iframe [15:46] mscdex: only $9! but wait! there's more! [15:46] bradleymeck: nope [15:46] creationix: Object.create should be doing less than new under the hood, not more [15:46] tjholowaychuk: creationix: http://gist.github.com/547771 [15:47] JimBastard: devinus: in jsdom, you can just create new windows though [15:47] bradleymeck: Object.create is pretty brutal to try to optimize compiler side [15:47] mscdex: tj to the rescue! [15:47] _announcer: Twitter: "Using NPM with Heroku Node.js - Intridea Blog http://t.co/5ZPMHbG" -- Intridea, Inc.. http://twitter.com/intridea/status/22010664034 [15:48] creationix: tjholowaychuk: what's that from? [15:48] tjholowaychuk: creationix: v8 [15:48] tjholowaychuk: grep ObjectCreate [15:48] creationix: tjholowaychuk: wow, that explains the slowness [15:48] eazyigz: JimBastard: thanks for that tip, I will look into that project [15:48] tjholowaychuk: yup lol [15:49] creationix: well, so much for my Pattern experiment [15:49] creationix: I was about to release it too [15:49] creationix: but is it's 100 times slower that's not going to fly [15:49] FransWillem: Hmmm [15:50] JimBastard: creationix: port it to rails and it will still be a 10x improvement [15:50] FransWillem: Anyone wanna summarize what was just concluded on Object.create ? [15:50] creationix: FransWillem: it's slow [15:50] creationix: compared to plain constructors [15:50] Yuffster has joined the channel [15:50] tjholowaychuk: like bradleymeck said, its just a wrapper really [15:50] bradleymeck: new can be detected compile time :/ Object.create cant [15:50] creationix: I was about to release this http://github.com/creationix/pattern [15:50] creationix: I even wrote up a nice long readme [15:51] tjholowaychuk: ive only ever really used Object.create() for arbitrary prototype support [15:51] tjholowaychuk: with some dynamic stuff [15:51] creationix: benchmarks http://gist.github.com/547752 [15:51] tjholowaychuk: super shitty benchmarks but still gives a good idea at least [15:52] tjholowaychuk: mind you for 500k its not a huge deal [15:52] tjholowaychuk: w/ create, but Pattern ya [15:52] tjholowaychuk: 4 seconds vs 23 ms lol [15:52] bradleymeck: creationix, if you want you could make the Pattern stuff compile down w/ Function [15:53] _announcer: Twitter: "Node inspector — Web Inspector based node.js debugger. http://github.com/dannycoates/node-inspector http://twitpic.com/2hs926" -- Nikita Vasilyev. http://twitter.com/ELV1S/status/22011055336 [15:53] _announcer: Twitter: "How do @CouchDB users think about implementing a view server on node.js ?" -- Yohei Sasaki. http://twitter.com/yssk22/status/22011056268 [15:53] creationix: bradleymeck: what do you mean? [15:53] _announcer: Twitter: "d/l updated node.js @peepcode ..." -- grantmichaels. http://twitter.com/grantmichaels/status/22011116361 [15:54] JimBastard: i think i pissed off teechnoweenie too much, he seems to not be autojoined in here anymore [15:54] bradleymeck: X.new() could really be a wrapper to a hidden function. just calls return new hiddenX; the hiddenX can be generated w/ Function off your extends data [15:54] JimBastard: i guess nodeChan is too much for him [15:54] tjholowaychuk: creationix: sucks though I do like that pattern, just ironic i guess that it uses new under the hood lol [15:55] creationix: bradleymeck: that's a good idea [15:55] tjholowaychuk: still wouldnt use it since its not built in v8 [15:55] tjholowaychuk: but potentially [15:55] creationix: I think it's the __proto__ part in Object.create's implementation that's killing it [15:55] twoism has joined the channel [15:55] creationix: and using "new" internally would bypass that [15:55] sh1mmer has joined the channel [15:57] dilvie: where did that Object.create implementation come from? [15:57] tjholowaychuk: dilvie: v8 [15:57] aurynn: creationix, I got prepares working! [15:57] tjholowaychuk: all their stuff is named ObjectMethodName etc so you can just grep for ObjectCreate [15:58] creationix: aurynn: awesome [15:58] sonny has joined the channel [15:58] EyePulp has joined the channel [15:58] aurynn: creationix, I'll clean up the code a bit tonight and push [15:58] creationix: aurynn: thanks [15:58] aurynn: It's not very *good* [15:58] dilvie: I have a feeling that performance will improve, eventually as use becomes more widespread. Object.create is still a pretty new spec. [15:58] creationix: maybe we'll get this ready in time for node-knockout after all [15:58] aurynn: But, it works :) [15:59] creationix: aurynn: did you implement connection pooling yet? [15:59] aurynn: creationix, not yet, no [16:00] gerad: creatinix: I have no idea what you're talking about, but if you want to do a blog post on it for knockout so people know how to use it.. let me know [16:00] gerad: :-) [16:00] nerdEd has joined the channel [16:00] aurynn: I was focussing on getting this much working [16:00] gerad: creationix: um, not "creatinix" sorry! [16:00] bmavity has joined the channel [16:00] creationix: gerad: sure will, that's the planm [16:00] Validatorian has joined the channel [16:00] bradleymeck: the problem w/ the Object.x stuff is you cant optimize at compile time [16:01] creationix: bradleymeck: why not, it's even simpler than constructors with prototypes [16:01] tjholowaychuk: its just a fn call [16:01] bradleymeck: x could be overriden and it needs to be checked [16:01] _announcer: Twitter: "Note: JavaScript framework that enables Sabasaidopuroguramingu by "node.js 0.2.0" release - SourceForge.JP Magazine: Open Source http://bit.ly/9X52i3 full topic" [ja] -- sos_9. http://twitter.com/sos_9/status/22011672404 [16:01] creationix: bradleymeck: sure, you change the jit code when it's changed [16:01] creationix: you don't have to check on every call [16:02] bradleymeck: you do [16:02] bradleymeck: js> var Object=2;return Object [16:03] bradleymeck: not wise, but possible [16:03] aurynn: I would suspect the environment is smart enough to cache .x references, so it can quickly tell if you've overridden. [16:03] aurynn: given that's what I would do [16:03] nerdEd_ has joined the channel [16:03] confoocious has joined the channel [16:03] creationix: I know v8 already does fast lookups for properties if you don't change them at runtime [16:03] overra has joined the channel [16:03] dilvie: bradley: I'm a bit of a n00b. I don't understand how that differentiates Object from Function? [16:04] creationix: it could do the same for Object.create [16:04] bradleymeck: it does [16:04] EyePulp: hola [16:04] bradleymeck: all objects are treated the same for lookups [16:04] creationix: well, I'm starting to see that speeding up Object.create to favor prototypal style is a major refactor of much of v8 [16:06] tjholowaychuk: mmm infinite loopss [16:06] dilvie: Where can I see a benchmark comparing Object.create and new? [16:06] EyePulp: it's crossed my mind recently that since I've got both server-side and client-side js that my project is looking a bit confusing file-name-wise. everything's .js I was thinking about starting to name my node-code with .ssjs, or separating by js & ssjs folders in the project... Am I being silly to worry about this? [16:07] tjholowaychuk: i was going to use node-bench but its broken again :( [16:07] c4milo has joined the channel [16:07] dilvie: I expect Object.create would be slower with that implementation, as it just wraps new in another function call... [16:07] Validatorian has joined the channel [16:07] tjholowaychuk: it is [16:07] creationix: dilvie: http://gist.github.com/547752 [16:08] creationix: though "slow" is relative [16:08] tjholowaychuk: totally [16:08] creationix: 145ms for 50000 iterations isn't that bad [16:08] tjholowaychuk: but I think when it is a very very integral thing there is little point to waste performance there [16:08] mikeal has joined the channel [16:08] creationix: yep [16:09] creationix: A single http response could create hundreds of objects [16:09] creationix: or thousands [16:09] sudoer has joined the channel [16:09] tjholowaychuk: but nope that is not a huge hit, I guess adding the init call in there is extra [16:09] _announcer: Twitter: "Just released http://github.com/mape/node-notifo allows you to send push notifications to your iPhone for free using #nodejs and notifo.com" -- Mathias Pettersson. http://twitter.com/mape/status/22012261947 [16:10] _announcer: Twitter: "Really wishing that php had a native REPL construct like NodeJS" -- Joseph Moniz. http://twitter.com/josephmoniz/status/22012331506 [16:10] creationix: heh, php does, but don't tell 'em [16:10] aurynn: repl is soooo useful. [16:10] aurynn: I keep python shells open everywhere. [16:10] Viriix: creationix, that was me [16:11] Viriix: :) [16:11] bradleymeck: if only nested repls were nicer [16:11] Viriix: i'm not talking about CLI php [16:11] creationix: Viriix: oh, for running apps [16:11] creationix: yeah, none of that [16:11] Viriix: jep [16:11] creationix: and the cli one doesn't have readline compiled in on most distros and so it sucks [16:12] bradleymeck: creationix im wondering why you say Object.create favors prototypal style over new [16:12] maushu: Man, I hate rackspace. [16:12] dan_manges has joined the channel [16:12] creationix: bradleymeck: because with Object.create there is no difference between an "instance" and a "subclass" [16:13] creationix: it's all prototypes [16:13] creationix: with "new" and constructors, it's a fairly clean cut distinction [16:14] bradleymeck: i still see a clear distinction between instance and subclasses [16:14] creationix: bradleymeck: with my Pattern lib there is somewhat of a distinction, but with pure Object.create there isn't [16:15] bradleymeck: could you point out how they are the same to me, i still see distinct objects for both rather than a swappable one [16:16] batasrki has joined the channel [16:16] _announcer: Twitter: "love and/or want to work with #symfony2 #doctrine2 #mongodb #nodejs #phpunit? come work for #opensky http://j.mp/cE3ddp" -- Bulat Shakirzyanov. http://twitter.com/avalanche123/status/22012770920 [16:17] creationix: bradleymeck: to create a "subclass" of the Rectangle prototype you do Object.create(Rectangle) [16:17] dilvie: mm.. I don't really see the point of an "init" type method when you're using Object.create. [16:17] dilvie: your source object *IS* the init. [16:17] creationix: to create an "instance" or the Rectangle prototype you do Object.create(Rectangle) [16:17] creationix: it's the same thing [16:18] creationix: dilvie: well, sometimes you need to set up state, but yeah, under a lot of cases you don't need it [16:18] FransWillem: creationix: What made you switch from Do to Step, was it just the old syntax (e.r. errback,callback), or something else too ? [16:18] c4milo: maushu: why do you hate rackspace ? [16:19] dilvie: creationix: you set up state by declaring an object literal to use as your prototype. No need for an explicit init() method call. [16:19] creationix: FransWillem: yeah, pretty much, I wanted to be close to native node style [16:19] creationix: dilvie: yeah, you're right [16:19] maushu: c4milo: I don't know. It makes me twitch. [16:20] FransWillem: creationix: What do you think of http://pastebin.com/bNYjPUAt ? basically instead of like Step where you're immediatly executing them, with this lib you'd make new async functions by combining existing [16:20] voxpelli-laptop has joined the channel [16:20] creationix: FransWillem: that works where there is a clear path for the arguments to flow [16:20] creationix: often you need something more flexible though [16:21] maushu: c4milo: Specially the whole "fanatical" stuff, website waaay too web 2.0 and the need to call before activate account. [16:21] zomgbie has joined the channel [16:21] c4milo: maushu: what service of them are you using ? [16:22] badaxx has joined the channel [16:22] dilvie: that benchmark doesn't really consider the advantage of prototypal inheritance: There is never a need to initialize state when you use prototypal inheritance. You don't need to do a call to a constructor function. [16:22] JimBastard: i <3 rackspace [16:22] FransWillem: creationix: Hmmm, yeah, agreed, but in that case it's equally easy to put function(){} instead of a predefined async function :/ [16:22] JimBastard: maushu: are you ESL ? [16:22] maushu: JimBastard: ESL? [16:22] dilvie: so it's not really an apple / apples comparison. [16:22] JimBastard: english as a second language [16:22] maushu: Yup. [16:23] JimBastard: yeah, those guys love talking on the phone [16:23] tjholowaychuk: dilvie: even just Object.create() alone is slower, disregarding the init fn call [16:23] JimBastard: i call up rackspace whenever im lonely [16:23] maushu: JimBastard: Makes me wonder why! [16:23] tjholowaychuk: mind you not by tons [16:24] maushu: I mean, seriously. Can't they use the money they waste on all this talking for other useful things? [16:24] creationix: dilvie: yeah, you can't do apple to apple comparisons, proper prototypal style can't be done in classical [16:24] JimBastard: i dunno, ive been dealing on and off which rackspace since 2002 or so. they are kinda expensive, but they get the job done [16:24] dilvie: tjholowaychuck: 1) I sincerely believe that it will eventually get optimized by the JS engines eventually (client and server side) 2) It's not a heavy hit unless you're creating hundreds of thousands of objects. [16:24] creationix: tjholowaychuk: now that I know how Object.create works internally, I can make something a little faster by just using __proto__ [16:25] JimBastard: and the support is pretty good [16:25] tjholowaychuk: creationix: for sure [16:25] creationix: I was using Object.create to avoid __proto__ since I know that's a little slow [16:25] tjholowaychuk: dilvie: ya im not saying it wont get more attention, just saying right now lots of us are creating hundreds of thousands [16:25] creationix: but if it's going to use it internally anyway... [16:26] dgathright has joined the channel [16:26] creationix: tjholowaychuk: hundreds of thousands of objects from prototypes? [16:26] creationix: I use plain objects and arrays in my hot loops [16:26] creationix: I usually have less than 100 custom objects in a program [16:27] dilvie: tjholow: Yeah, if you are benchmarking and you find it's a bottleneck, certainly keep the extra overhead in mind. But I'd say this is an instance where compliance to the standards and coding in a js-native style trumps the minor performance gains you can get by avoiding Object.create [16:28] dilvie: If I had some code where I was fetching a million objects from a repo, I'd consider NOT using Object.create to instantiate them. =) [16:28] dilvie: Otherwise, it's not gonna kill you. =) [16:28] creationix: dilvie: I'll try to talk to Crockford at the meetup Friday [16:28] creationix: he was the one that got me started on the prototypal path [16:29] creationix: and I believe he's the creator of Object.create in the spec [16:29] dispalt: jb55: hey any plans to support secured p2p network? [16:29] behmann has joined the channel [16:29] dilvie: yeah, his writings influenced my style, as well. [16:29] dilvie: I use his old object.create (that doesn't take params) when Object.create() is not supplied by the host. [16:30] twoism has joined the channel [16:30] creationix: dilvie: :) [16:30] creationix: well, I need to head to work [16:30] JimBastard: does anyone have any leet bash profiles for mac os x? [16:30] JimBastard: i got a clean box here, and im a nub [16:31] _announcer: Twitter: "OMG!!! nodejs.org/ is the awesomest bit of code I've seen in a long time. It's like js on meth. DAMN!!!!" -- Josh Robinson. http://twitter.com/josher565/status/22013869106 [16:37] _announcer: Twitter: "Bought! http://peepcode.com/products/nodejs-i First screencast @ PeepCode I buy." [pt] -- Felipe O. Carvalho. http://twitter.com/_Felipe/status/22014299476 [16:39] bpot has joined the channel [16:40] _announcer: Twitter: "@jkalucki Do you know Node.js?" -- Daniel Shaw. http://twitter.com/dshaw/status/22014499137 [16:41] Pilate has joined the channel [16:41] _announcer: Twitter: "@plukevdh node.js looks pretty neat. nice slides." -- Mordecai. http://twitter.com/MordecaiV/status/22014592341 [16:43] ehaas has joined the channel [16:45] ehaas_ has joined the channel [16:45] visnup has joined the channel [16:48] Ori_P has joined the channel [16:48] bradleymeck: new Object.create, hehehehe [16:48] creationix has joined the channel [16:49] rixius has joined the channel [16:49] tjholowaychuk: haha [16:51] tjholowaychuk: wtf [16:51] tjholowaychuk: w/ screenr do you HAVE to publish to twitter or something [16:51] tjholowaychuk: oh wtf nvm [16:55] Validatorian has joined the channel [16:55] bcg has joined the channel [16:57] keeto has joined the channel [16:58] nsm has joined the channel [16:58] figital has joined the channel [16:59] _announcer: Twitter: "nDistro for nodejs http://screenr.com/sV0" [lv] -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/22015799626 [16:59] gerad has joined the channel [16:59] benburkert has joined the channel [16:59] tjholowaychuk: fuckers [17:00] tjholowaychuk: stupid screenr [17:01] Throlkim has joined the channel [17:01] _announcer: Twitter: "@jkalucki So far all the Node.js user stream hacks have been Basic Auth. :( I'll jump back on the OAuth library impl after @node_knockout." -- Daniel Shaw. http://twitter.com/dshaw/status/22015985912 [17:02] guybrush: tjholowaychuk: lol is that a bird in the back? [17:02] tjholowaychuk: guybrush: haha ya shes so annoying [17:02] blogometer has joined the channel [17:02] _announcer: Twitter: "So much to read at #nodejs - news feed summary at http://www.startupweekly.com/hashtag/show/nodejs.html" -- Startup Weekly. http://twitter.com/startupweeklies/status/22016043919 [17:02] tjholowaychuk: screenr is lame i didnt want it to do that [17:04] _announcer: Twitter: "nDistro screencast - NodeJS deployments in seconds http://bit.ly/a6q9nF" -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/22016188652 [17:04] tjholowaychuk: there we go [17:04] tjholowaychuk: fuck [17:04] tjholowaychuk: stupid thing [17:06] V1_ has joined the channel [17:06] V1_: Does anyone know how to remove your package from npm? [17:07] steadicat has joined the channel [17:08] blogometer: Issues at GitHub preclude the pasting of code, other useful bits. [17:09] admc has joined the channel [17:09] richcollins has joined the channel [17:10] keeto has joined the channel [17:10] V1: nvm npm unpublish name@version.number.here works [17:12] creationix has joined the channel [17:14] phazm has joined the channel [17:14] _announcer: Twitter: "@lazycoder which bundle you interested in? Node.js?" -- Elijah Manor. http://twitter.com/elijahmanor/status/22016859755 [17:14] daleharvey has joined the channel [17:15] cloudhead has joined the channel [17:16] matt_c: blogometer: the common practice is to paste code in to a gist and reference that in the issue. [17:16] sh1mmer has joined the channel [17:17] sveimac has joined the channel [17:17] blogometer: matt_c: That occurred to me shortly after my belly-aching. [17:17] matt_c: Are issues plain text and not markdown? [17:17] _announcer: Twitter: "NodeJS from PeepCode -> https: / / peepcode.com / products / nodejs s" [lv] -- Alexandre Oliveira. http://twitter.com/kurko/status/22017052074 [17:18] matt_c: yeah, looks like you could use a markdown code block too [17:19] figital has joined the channel [17:22] cnu: stream.on('data', function(buffer) {} ); <- is the buffer "mine" now, or will it be overwritten with new data next time it can read something? [17:22] creationix: bradleymeck, tjholowaychuk, I can confirm using new internally in Pattern makes it a LOT faster than when using object.create [17:22] tjholowaychuk: creationix: haha nice, doesnt that defeat the purpose though? [17:22] pgriess has joined the channel [17:22] creationix: not really [17:22] creationix: it's the API to new I hate [17:22] tjholowaychuk: righy [17:22] tjholowaychuk: right* [17:22] jakehow has joined the channel [17:23] creationix: who cares how my thing works internally as long as it works [17:23] creationix: I just need to make sure it doesn't break any of my semantics [17:23] tjholowaychuk: haha ya Object.create() uses it anyways so no big deal [17:24] Egbert9e9 has joined the channel [17:24] deepthawtz has joined the channel [17:25] AAA_awright: Does fs.watchFile use inotify, or is there some way to use inotify? [17:27] russell_h: AAA_awright: I don't think so, I'm pretty sure it polls [17:27] AAA_awright: The doc says The default is {persistent: true, interval: 0}. [17:27] AAA_awright: it polls on an infinite loop...? [17:28] russell_h: yeah I'm not sure what that means [17:28] russell_h: http://github.com/c4milo/node-inotify/ [17:28] _announcer: Twitter: "Jade Screencast - Template Engine For NodeJS - This screencast covers an introduction to the Jade Template... http://tumblr.com/xscglwof6" -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/22017750432 [17:28] badaxx_ has joined the channel [17:30] amerine has joined the channel [17:30] _announcer: Twitter: "Searching for a good beginners tutorial for Node.js + MongoDB. Any suggestions?" -- Joshua Kinberg. http://twitter.com/joshua/status/22017879011 [17:33] robotarm_ has joined the channel [17:34] paul__ has joined the channel [17:34] brianmario has joined the channel [17:35] russell_h: AAA_awright: it looks like it uses libev [17:35] joemccann has joined the channel [17:35] russell_h: which supports inotify if you compile it right [17:35] joemccann: oi! [17:36] joemccann: checked node-form (a la formidable) and ran the example in the express repo but can't find the dir the files are being uploaded to [17:36] joemccann: checked /tmp but not there [17:36] joemccann: any ideas? [17:36] tjholowaychuk: joemccann: they are not saved [17:36] tjholowaychuk: i dont think [17:36] tjholowaychuk: cant remember the example one sec [17:36] joemccann: tjholowaychuk: well that would explain it! [17:36] joemccann: ;) [17:36] tjholowaychuk: I should probably note that hey haha [17:37] tjholowaychuk: right, my bad. I should not output "uploaded" when I dont save it anywhere [17:37] tjholowaychuk: was just for illustration [17:38] joemccann: tjholowaychuk: no worries...i guess i'll go check connect-form for an example [17:38] tjholowaychuk: connect-form doesnt have oen [17:38] tjholowaychuk: one [17:38] tjholowaychuk: ill change that express one [17:38] tjholowaychuk: to actually save [17:38] tjholowaychuk: instead of just parse [17:38] joemccann: ok cool [17:41] aubergine has joined the channel [17:41] Tobsn has joined the channel [17:41] confoocious has joined the channel [17:42] Gruni has joined the channel [17:42] programble has joined the channel [17:44] _announcer: Twitter: "I'm liking TJ Holowaychuk's http://jade-lang.com/ ... Getting more and more difficult to avoid node.js" -- Andy Sherwood. http://twitter.com/xinmyname/status/22018760266 [17:44] dgathright has joined the channel [17:45] dylang has joined the channel [17:46] tjholowaychuk: joemccann: shit ok, im totally wrong, formidable:http://gist.github.com/547960 [17:46] tjholowaychuk: if you console.log(files) [17:47] tjholowaychuk: so you can go ahead and fs.createReadStream that path [17:47] tjholowaychuk: or whatever [17:47] joemccann: right, so it doesn't retain the extension by default [17:47] joemccann: i noticed some weird shit in my tmp dir, but not the names of the files i uploaded [17:48] tjholowaychuk: guess not, BUT you can pass aribtrary options to connect-form, so whatever formidable acccepts [17:48] tjholowaychuk: i think you can retain them [17:48] _announcer: Twitter: "I wish http://blog.urbanairship.com/blog/2010/08/24/c500k-in-action-at-urban-airship/ could have been about node.js. Maybe with v0.4..." -- Ryan Dahl. http://twitter.com/ryah/status/22019021798 [17:48] tjholowaychuk: its a great library [17:48] tjholowaychuk: incomingForm.keepExtensions = false [17:48] tjholowaychuk: yup [17:49] joemccann: right ok cool [17:50] tjholowaychuk: added that to the example and fixed the stdout msg a bit [17:50] joemccann: n1 thx [17:53] FransWillem has joined the channel [17:54] _announcer: Twitter: "A solution with bleeding edge web technologies based on node.js & MongoDB http://wp.me/pWrLn-1LPd @nodejs @mongodb @dojo #nodejs #mongodb" -- newsicare. http://twitter.com/newsicare/status/22019429182 [17:55] joemccann: tjholowaychuk: so where in that example can we modify the connect-form properites such that incomingForm.keepExtenstions = true works [17:55] joemccann: err [17:56] dilvie: I'm looking at writing an ajax RESTful service using MongoDB for storage. Is there a good boilerplate app or tutorial I can use as a starting point? [17:56] joemccann: not keep extensions, but capture the filename [17:56] tjholowaychuk: joemccann: just updated ./examples/multipart, just pass to form({ keepExtensions: true }) [17:56] tjholowaychuk: it tells you the original filename as well [17:56] tjholowaychuk: but just check out the formidable docs [17:56] dilvie: Should I use connect / express, or can I do this easily with geddy? [17:56] wattz: geddy! [17:56] tjholowaychuk: express! [17:56] tjholowaychuk: lol [17:56] joemccann: express! [17:57] dilvie: urm. [17:57] aubergine has joined the channel [17:58] dilvie: it's not helpful just to shout your favorite framework. =) I need to know if a Geddy app can easily do what I want, and will I have to build a lot more code that might come for free in express? [17:58] dilvie: Geddy looks pretty good, for example, but will I have trouble using MongoDB? [17:58] JimBastard: lol support emails [17:59] creationix: ryah: that Java NIO stuff is amazing, think we can compete with node + V8? [17:59] zemanel has joined the channel [17:59] creationix: many people prefer JS over Java [17:59] tjholowaychuk: dilvie: mainly just depends on what "style" you prefer really, check out some of the express examples and go from there [17:59] JimBastard: dilvie: http.createServer is pretty good framework imo [17:59] tjholowaychuk: geddy may be overkill for some, express to light-weight for some [17:59] dilvie: <-- prefers JS over Java by a landslide. [17:59] cloudhead: dilvie: what kind of service? [18:00] JimBastard: it has a nice api for starting up web servers [18:00] matt_c: dilvie A lot of it comes down to "it's just javascript. it's just node." I think things like express are just there to make your life easier. Geddy might be a little more opinionated and going outside the box might be a little more costly. [18:00] tjholowaychuk: express is hardly opinionated at all [18:00] creationix: heck, I often find express too high level for my taste [18:00] JimBastard: depends on your exact needs [18:00] JimBastard: lots a ways to go, variety is good [18:00] creationix: (but I'm the guy who writes ruby apps using raw rack) [18:00] tjholowaychuk: ya exactly [18:00] tjholowaychuk: totally depends on the need [18:01] matt_c: ACTION finds rolling your own URL routing a pretty simple case statement for simple apps. [18:01] paul__ has joined the channel [18:01] dgathright has joined the channel [18:01] creationix: the hard stuff in node that's boring to reinvent are the things connect tries to do for you [18:02] creationix: and package as modular and reusable as possible [18:02] _announcer: Twitter: "@dshaw I don't know node.js, but I don't want to build a server-side Websockets implementation in Hosebird either. Tough choices ahead." -- John Kalucki. http://twitter.com/jkalucki/status/22019894970 [18:02] tjholowaychuk: its probably boring to reinvent anything though realistically [18:02] tjholowaychuk: its just because most of us like that lol [18:02] _announcer: Twitter: "Thought it was my node.js had cooled to, or simply because consciousness is no longer in my standards. node.js is a can not live without, or" [ja] -- こば@変態生徒会長. http://twitter.com/KOBA789/status/22019914947 [18:02] V1: Is there an easy way to get all "mapped" urls from express? each app.get("/this/url/path/please" ) so i can generate a auto generate a sitemap out of it? [18:03] joemccann: tjholowaychuk: so the upload script will actually rename it to some arbitrary filename as opposed to naming the uploaded file to the *actual* filename [18:04] jetienne_: http://www.w3.org/TR/FileAPI/ this landed in chrome. is that possible to make a common layer with nodejs ? [18:04] dilvie: cloudhead: My app has users, and saves a bit of data about the user for use in future sessions. Essentially I'm just building a getUser / putUser JSON API [18:04] maushu has joined the channel [18:05] eazyigz: is there an extension for node like Rhino or env.js? I would like to run javascript code in an html page without launching a browser [18:06] _announcer: Twitter: "@paulca pure JS apps are interesting too (node ftw). Looked at padrino because we could keep most of our code." -- Patrick Huesler. http://twitter.com/phuesler/status/22020139080 [18:06] cloudhead: dilvie: if all you need is a json api, you should try journey, if you need cookies and that sort of stuff, then possibly express [18:06] grahamalot has joined the channel [18:06] dilvie: I need session support. [18:06] WALoeIII has joined the channel [18:06] JimBastard: dilvie: connect is prob a good base for you [18:06] cloudhead: yea +1 [18:06] stepheneb has joined the channel [18:07] tjholowaychuk: joemccann: does whatever formidable does, might be an option to retain it, but I dont see much of a point to be honest [18:07] _announcer: Twitter: ""Node.js Welcome to yield'll want!" To sleep crying. Good night" [ja] -- こば@変態生徒会長. http://twitter.com/KOBA789/status/22020200840 [18:07] cloudhead: geddy is not for web services [18:07] _announcer: Twitter: "List of Node.js modules http://bit.ly/bFg18c . This list grows up at warp speed. Trying the couchdb module." -- Alain Lavoie. http://twitter.com/alainlavoie/status/22020204698 [18:07] JimBastard: cloudhead in the house. javascript party [18:07] cloudhead: hehe [18:07] tjholowaychuk: dilvie: connect or express then id say [18:07] JimBastard: hows resourcer looking? did indexzero do good things? [18:07] cloudhead: yea [18:07] cloudhead: it's going to be fine [18:07] JimBastard: niiiiice [18:07] dilvie: What's an ideal use case for Geddy? [18:07] aubergine_ has joined the channel [18:07] joemccann: tjholowaychuk: yeah viewing the formidable source now and not seeing the option. however, why would you not want to retain the original filename? [18:08] cloudhead: dilvie: full web app [18:08] JimBastard: i think tmpvar is gonna help get the nodejitsu stack into an easy installer so we can setup dev envs really easily [18:08] tjholowaychuk: dilvie: express is definitely geared more towards apps n such but it provides very little overhead ontop of connect so its not a big deal if you do want those features [18:08] cloudhead: JimBastard: nice [18:08] dilvie: This channel is a goldmine. You guys rock. [18:08] _announcer: Twitter: "i'm starting to be annoyed by node.js buzz. please just show something really new done with node ..." -- benoît chesneau. http://twitter.com/benoitc/status/22020317056 [18:09] JimBastard: anytime dilvie ! [18:09] JimBastard: welcome to node [18:09] matt_c: group hug! [18:10] wattz: ACTION rushes in [18:10] dilvie: I actually like the application scaffolding you get with Geddy. Is there a lib of boilerplate apps or scafolding tools for express? [18:11] olegp has joined the channel [18:11] tjholowaychuk: dilvie: express(1) is bundled with [18:11] tjholowaychuk: express [18:11] tjholowaychuk: ./bin/express [18:11] wattz: YACC IS MY BITCH. [18:11] wattz: sorry for the outburst. [18:12] matt_c: dilvie: I haven't used Geddy but have found a certain amount of loss of productivity once you leave the reservation (going beyond scaffolding in Rails or generic views in Django). You end up better when you're done powering through it but it's not the kind of productivity curve people expect sometimes. [18:12] dilvie: oops [18:13] dilvie: I just ran the express command in my node directory [18:13] dilvie: did I break node? [18:13] tjholowaychuk: haha [18:13] tjholowaychuk: just git clean -fd [18:13] wattz: it don't mean a thing if you don't got that swing.. [18:13] tjholowaychuk: ACTION needs confirmation w/ express(1) [18:13] dilvie: thanks tj! [18:14] tjholowaychuk: np [18:14] dilvie: lol [18:14] tjholowaychuk: sorry about that lol [18:14] tjholowaychuk: been meaning to add that [18:14] programble_ has joined the channel [18:14] paul__ has joined the channel [18:14] pgriess has joined the channel [18:14] dilvie: In the future I'll remember to create my project dir and cd to it before I run express on the command line. [18:14] tjholowaychuk: you can just do $ express myApp [18:15] tjholowaychuk: defaults to cwd [18:15] _announcer: Twitter: "@jkalucki Well, I'd love to build that for you/with you. <bats eyelashes coyley> Node.js would be a wonderful fit IMHO." -- Daniel Shaw. http://twitter.com/dshaw/status/22020703382 [18:15] tjholowaychuk: i just need a confirmation to readdir and make sure it's empty [18:15] dilvie: tj: Are you the express author? [18:15] programble has joined the channel [18:17] JimBastard: lol yes he is dilvie [18:17] _announcer: Twitter: "Confused why everyone is so interested in node.js wrt @cscotta's recent post. Do they not know of the zillions of other evented frameworks?" -- Michael Schurter. http://twitter.com/schmichael/status/22020825924 [18:17] tobiassjosten has joined the channel [18:17] nerdEd has joined the channel [18:17] dilvie: very col. [18:17] dilvie: cool. [18:17] bradleymeck: i miss my !tweet... [18:17] dilvie: =) [18:17] bradleymeck: but i am le lazy [18:17] raymorgan has joined the channel [18:18] bradleymeck: need a host that i can deploy to easily [18:19] bcg has joined the channel [18:19] _announcer: Twitter: "The staff @ devinsampa released the video of my talk about # nodejs. Here http://bit.ly/bEXXIz # devinsampa" [pt] -- Emerson Macedo. http://twitter.com/emerleite/status/22020951829 [18:22] _announcer: Twitter: "Happy with my initial node.js slides for #geekcampsg next weekend, packed as a couchapp. http://northpole.sg/4a #couchdb i <3 you." -- Kenny Shen. http://twitter.com/kenny_shen/status/22021111450 [18:23] _announcer: Twitter: "Coworkers convinced me of node.js's big win over other event based frameworks: V8 is fast compared to other dynamic language interpreters." -- Michael Schurter. http://twitter.com/schmichael/status/22021194055 [18:26] e^ipi: erm, what am i doing wrong here; i've got a function/object client, contains 'this.conn = null;', later in a method ( Client.prototype.connect ) i create a connection with net.createConnection, point this.conn at it ( this.conn = net.createConnection) , add a data listener, and when it fires it thinks this.conn is still null ( ie, this.conn.write bails with 'Cannot call method 'write' of undefined' ) [18:27] _announcer: Twitter: "@jkalucki Then you should grab @miksago too, before @senchainc does. He's the Node.js Web Sockets master." -- Daniel Shaw. http://twitter.com/dshaw/status/22021440330 [18:27] bradleymeck: e^ipi gist? [18:28] e^ipi: i thought that was the gist of it [18:28] bradleymeck: paste == gist in here [18:29] e^ipi: http://pastebin.ca/1924449 [18:29] femtoo has joined the channel [18:30] creationix: tjholowaychuk: how do I grab the format using connect.router? [18:30] creationix: /foo:format /foo:.format [18:30] _announcer: Twitter: "I didn't like Node.js seems it would look prettier in Ruby (){}){}„()()" -- Seivan Heidari. http://twitter.com/Seivanheidari/status/22021636871 [18:30] zemanel has joined the channel [18:31] mjr_ has joined the channel [18:31] tjholowaychuk: creationix: /user/:id.:format? for example [18:31] _announcer: Twitter: "The Node.js video from @peepcode is really great. I recommend it. http://peepcode.com/products/nodejs-i" -- John Wulff. http://twitter.com/jwulff/status/22021657832 [18:31] _announcer: Twitter: "Hey, #npm authors. Put descriptions and repository info in your package.json. #nodejs" -- Ⓘⓢⓐⓐⓒ. http://twitter.com/izs/status/22021660864 [18:31] tjholowaychuk: when optional [18:31] creationix: tjholowaychuk: hmm, not working for some reason [18:31] tilgovi has joined the channel [18:31] ryah: i promise we're going to own java nio/ jetty [18:31] tjholowaychuk: creationix: there is a bug or two in there, but now i remember :D [18:32] e^ipi: bradleymeck: i think it's pretty clear i don't know js, so it's almost certainly a problem with that [18:32] creationix: ryah: awesome [18:32] rektide: twitter temptation rising [18:32] ryah: just need the BW [18:32] creationix: tjholowaychuk: I'm back to writing a real app on connect, and I was using the format middleware [18:32] _announcer: Twitter: "@Seivanheidari that's why you write node.js with coffeescript :)" -- Brian Hogan. http://twitter.com/bphogan/status/22021761259 [18:33] _announcer: Twitter: "@jkalucki @bcherry mentioned a while back that there was some internal testing of Node.js. You might check with him that's coming." -- Daniel Shaw. http://twitter.com/dshaw/status/22021765565 [18:33] creationix: ryah: I know how you feel [18:33] bradleymeck: e^ipi it seems fine on glance, id look into where you are calling write [18:33] cferris has joined the channel [18:33] richcollins has joined the channel [18:34] bradleymeck: the fact the error says undefined means you arent calling it on a client [18:34] tjholowaychuk: creationix: gotcha, you might need to patch router a bit, i know there is an issue with disambiguation between regular placeholders and format placeholders,since foo.bar could be [18:34] tjholowaychuk: a valid path segment [18:34] tjholowaychuk: but also a :format" [18:34] tjholowaychuk: "format" [18:34] e^ipi: bradleymeck: in what sense? [18:34] bradleymeck: it would say null since you set conn to null [18:34] creationix: tjholowaychuk: should I just use regular expressions directly? [18:34] visnup has joined the channel [18:34] cferris: anyone having luck with npm through a proxy? [18:35] cferris: i've set the config but still no luck [18:35] bradleymeck: everything gets burned into RegExp eventually anywho [18:35] tmpvar has joined the channel [18:35] tmpvar: yo [18:35] cferris: this is running node 0.2 and npm on git master head [18:35] tjholowaychuk: creationix: misewell if its not working great [18:35] e^ipi: bradleymeck: yeah, it's set to null, but 'connect' is called first, which sets it to not null [18:36] e^ipi: or so one would assume [18:36] creationix: tjholowaychuk: I just need to get this app working, it's good to use libraries every once in a while [18:36] sveimac has joined the channel [18:36] bpot has joined the channel [18:37] benburke_ has joined the channel [18:38] bradleymeck: when you call .write it should say null or something instead of undefined, unless net.createConnection is returning undefined (which means a lot of bad juju) [18:40] e^ipi: *shrug* well that's what it's doing [18:40] maritz has joined the channel [18:40] tjholowaychuk: creationix: if i remember ill try and patch that today [18:40] bradleymeck: copy and paste of your code lets me use .conn after the connect event [18:40] e^ipi: TypeError: Cannot call method 'write' of undefined [18:41] _announcer: Twitter: "Node.js' comma syntax style is blowing my mind http://pastie.org/1112985" -- John Wulff. http://twitter.com/jwulff/status/22022253326 [18:41] bradleymeck: which is why i think you arent grabbing a clilent when you are grabbing .conn [18:41] bradleymeck: isaacs js-registry is the npm backend? [18:41] e^ipi: bradleymeck: so... why's it not working here? [18:42] bradleymeck: whatever you are grabbing .conn off of is most likely not an Irc [18:42] e^ipi: i'm grabbing it off of 'this' [18:42] programble has left the channel [18:43] ehaas_ has left the channel [18:43] e^ipi: in 'parseLine' it's using 'this.conn.write' and that's the line node is complaining about [18:43] JimBastard has joined the channel [18:44] jetienne_: npm ! ERROR ! Error: forbidden user: Jerome Etienne not authorized to modify webpeer: webpeer/0.7.1beta4 <- isaac i got this and i did a adduser with the proper password [18:45] MikhX has joined the channel [18:45] bradleymeck: e^ipi, setting this.parseLine = parseLine inside that constructor seems to work fine from the paste, idk what to say [18:45] mjr_: jetienne_: I was getting that yesterday as well [18:45] jbr_ has joined the channel [18:45] jetienne_: mjr_: how did you fix it ? [18:45] programble has joined the channel [18:46] mjr_: I tried to publish from my other computer and it worked. [18:46] jetienne_: ok i zill try [18:46] gwoo has joined the channel [18:47] deepthawtz has joined the channel [18:48] _announcer: Twitter: "Man I really need to try Node.js. When you think of it Javascript is so much nicer that other languages." -- Peter Farsinsen. http://twitter.com/peterfarsinsen/status/22022685763 [18:48] jetienne_: mjr_: it did the job. clearly a bug there [18:48] e^ipi: bradleymeck: i get this: http://pastebin.ca/1924463 [18:48] hij1nx has joined the channel [18:48] mjr_: so it worked on another machine? [18:49] hij1nx: JimBastard: bitch [18:49] JimBastard: sup hij1nx [18:49] jetienne_: mjr_: currently a user is linked to a computer and isaacs needs manual intervention to get it on another commputer [18:49] JimBastard: javascript party [18:49] hij1nx: hehe [18:49] jetienne_: mjr_: yep [18:49] hij1nx: in the hizaus [18:49] maritz: has someone got any idea why DJs is failing so bad with recent node versions? [18:49] jetienne_: +1 for npm without specific auth [18:49] JimBastard: im in jail all afternoon doing nodejitsu if you want to hang [18:49] JimBastard: could use some design help on blog / splash [18:50] hij1nx: JimBastard: be there about 4:30 or 5 [18:50] JimBastard: holler [18:50] JimBastard: tmpvar is coming around 7 to get his dev env setup too, if you can stick around [18:50] JimBastard: ACTION has to go print some NDAs up [18:50] deepthawtz has joined the channel [18:50] wink_: bradleymeck: are you around? a quick question :) [18:50] _announcer: Twitter: "@ Peterfarsinsen Jepsen - you have to ret ... http://nodejs.dk/" [sv] -- hvem mig?. http://twitter.com/iskedk/status/22022814364 [18:50] maritz: i've got it to a point where it at least reloads if i change app.js but any dependencies of app.js are just ignored [18:51] Pilate has joined the channel [18:51] bradleymeck: oh, i see whats going on e^ipi event listener redirects where 'this' is during a raw event callback like that [18:51] bradleymeck: wink_? [18:51] wink_: so i've narrowed the problem down a little more, and its a node/v8 question i have one sec let me get a link for you [18:51] e^ipi: bradleymeck: ahh... that's kindof silly but whatever; how do people deal with it? [18:51] deadlyicon has joined the channel [18:52] hij1nx_ has joined the channel [18:52] bradleymeck: save a reference to 'this' in a closure, or use the fact that the eventemitter will point this to itself during a callback [18:53] e^ipi: examples? (again, i don't know javascript in any real sense) [18:53] jetienne_: mjr_: beside ~/.npmrc do you know of other config files ? [18:53] mjr_: jetienne_: I don't. npm is like a twirling laser show, and I'm like a little kitten. [18:54] _announcer: Twitter: "@peterfarsinsen Agree! I've had a tab with www.nodejs.org open for weeks! Just need an excuse and the time :-)" -- Jens Søgaard. http://twitter.com/jenssoegaard/status/22023020068 [18:54] mjr_: I look curiously into the maze of symlinks and tilt my head sideways a bit. [18:54] _announcer: Twitter: "20:52:47 < crankharder> wtf is node.js and why should i care?" -- Seivan Heidari. http://twitter.com/Seivanheidari/status/22023030553 [18:54] bradleymeck: function Irc() {var $this = this; ... setNick = function(){$this.conn.blah}} or setNick = function(){this.write(blah)};this.setNick = function() {setNick.apply(this.conn,arguments)} [18:54] wink_: bradleymeck: http://pastebin.com/EKhNVYKS so if you follow the github link, you'll see the function that generates an objectid for a field of type oid. in the cases where the binding doesnt crash obj looks sane (the 2nd gdb paste), in the cases where it crashes it looks like the first gdb paste [18:55] jetienne_: mjr_: hmm ok... just moving ~/.npmrc from one box to another doesnt do the job [18:55] mjr_: I'm pretty sure that I have published from multiple computers in the past. [18:55] voxpelli has joined the channel [18:55] wink_: bradleymeck: any idea what could cause obj to end up 0x0? [18:56] bradleymeck: looking gotta pull up the src of those files [18:56] wink_: rgr [18:56] wink_: i put the link in the pastebin [18:57] huyhong has joined the channel [18:57] jetienne_: mjr_: wow and it doesnt like me copying this file [18:58] jetienne_: npm before first PUT { name: 'axm\ufffd\u0018G\ufffd\ufffd\ufffd\u001b\ufffd\ufffdhW\ufffd\ubfc7\ufffd\ufffd\ufffd\ufffd' [18:58] c4milo has joined the channel [18:58] programble has joined the channel [18:59] jetienne_: this is like a mad pointer on the ram [18:59] e^ipi: bradleymeck: cool, thanks [18:59] e^ipi: seems to be working [18:59] wink_: bradleymeck: i should also note that in both cases, the char * with the oid value in it is correct and null terminated in both cases [19:00] huyhong has left the channel [19:00] _announcer: Twitter: "@ Emerleite Congratulations, Emerson! + I'll study on the subject. # Nodejs" [pt] -- Renan Oliveira. http://twitter.com/renan_oliveira/status/22023394552 [19:01] _announcer: Twitter: "@peepcode The node.js screencast is awesome. Thanks for combining them into one. Great Job, can't wait to see what you'll do next" -- Mark Cotton. http://twitter.com/mcotton/status/22023429668 [19:01] daleharvey has joined the channel [19:02] mikeal has joined the channel [19:02] _announcer: Twitter: "hey @lifo for what it's worth. I like #cramp more then fugly Node.js :)" -- Seivan Heidari. http://twitter.com/Seivanheidari/status/22023513750 [19:04] bradleymeck: wink_ no idea on a glance [19:04] daleharvey has joined the channel [19:04] _announcer: Twitter: "I've just forked and extended this vt100 module for #nodejs: http://github.com/pfleidi/colored.js" -- pfleidi. http://twitter.com/pfleidi/status/22023641943 [19:04] wink_: bradleymeck: k, i dont understand the v8 guts well enough to know that that line of code is really doing, time to dig deeper i suppose [19:06] sh1mmer has joined the channel [19:06] creationix: how do I clone a function in js [19:07] creationix: without resorting to .toString + eval [19:07] bradleymeck: clone how [19:07] bradleymeck: you cant really clone off the closure [19:07] creationix: I want a new function with the same arguments and contents as the original [19:07] creationix: but be a new function [19:07] creationix: I don't care about closure [19:07] wattz: anyone in here have any experience with flex/bison? [19:07] bradleymeck: you dont [19:08] creationix: hmm, actually I would like the closure cloned too, but I'm pretty sure that's impossible [19:08] mde: creationix: You can do new Function(srcString) but that's basically eval. [19:08] creationix: mde: well, that doesn't even preserve the arguments right? [19:09] _announcer: Twitter: "@ Peterfarsinsen thanks - are hideously backward in time ... create a bookmark now and then .. entire domain running on nodejs .." [da] -- hvem mig?. http://twitter.com/iskedk/status/22023914637 [19:09] creationix: and I need to filter out the function () { } stuff [19:09] creationix: oh why does V8 insist on dealing with constructor functions! [19:09] _announcer: Twitter: "testing ndistro #nodejs #deployment" -- Sascha Depold. http://twitter.com/sdepold/status/22023971351 [19:10] cardona507 has joined the channel [19:10] FransWillem: creationix: What are you trying to do? [19:10] creationix: I'm trying to make my Pattern library faster by using new internally [19:10] isaacs has joined the channel [19:10] creationix: since V8 insist on using new anyway [19:10] creationix: but in order for that to work I need a new constructor for each object that points to the object via the special .prototype property [19:11] isaacs: i <3 having a package registry. whenever i want to know which features people are using, it's just a grep command. [19:11] creationix: I don't want to force my users to override the initialize every time [19:11] ben_alman has joined the channel [19:11] FransWillem: creationix: function copy(f) { var ret=function() { return f.apply(this,arguments); }; ret.prototype=f.prototype; ret.length=f.length; return ret; } [19:12] creationix: FransWillem: hmm, wrapping might be a good solution [19:12] bradleymeck: the constructor paradigm is easily tested for by parsers. packs initialization and defaults together (dont get me started on obj-c 1). clearly separates out prototype chains. [19:12] _announcer: Twitter: "Pretty impressive demo/mashup from Superfeed using PubSubHubbub, Node.JS and WebSockets http://julien51.github.com/socket-sub/maps" -- Zach Copley. http://twitter.com/zcopley/status/22024136751 [19:13] FransWillem: creationix: Why do you insist on using a different approach than the new Constructor() approach, though ? [19:13] creationix: FransWillem: because I want to :P [19:13] bradleymeck: reminds me of my interface github failure [19:13] bradleymeck: though that was doing odd stuff [19:14] wink_: is there a way to completely disable garbage collection? :) [19:15] wink_: in v8 i mean, i'd like to make sure thats not what is clobbering me [19:16] bradleymeck: you can hook up functions to run pre-post gc but dont think you can full on stop it [19:17] wink_: hooking the pre gc would be useful [19:17] maritz: so, i compiled node with ssl support now. sadly my openssl only has sha1/rmd160/md5. i don't want to use any of these. how can i get sha512 or maybe even sth like whirlpool in node? i guess i have to change my openssl somehow?! [19:17] wink_: it'd at least give me a signal it was running [19:18] bradleymeck: v8:: AddGCPrologueCallback [19:18] bradleymeck: dont allocate anything in v8 during that callback [19:18] _announcer: Twitter: "not sure how useful this is but techurbation nonetheless ;) uses PubSubHubbub, Node.JS and WebSockets (view in chrome) http://bit.ly/9BJ8KM" -- Brian Mavity. http://twitter.com/bmavity/status/22024495510 [19:18] wink_: just a printf ;) [19:20] _announcer: Twitter: "Will probably not make it to @node_knockout at @co_up this weekend. At least there's the new Node.js PeepCode ;-) http://bit.ly/c5DdFs" -- Martin Rehfeld. http://twitter.com/klickmich/status/22024583151 [19:21] mape: isaacs: Did you remove the github info from the npm repo json? [19:21] isaacs: mape: huh? [19:22] mape: isaacs: it doesn't send the github repos anymore from what I can see [19:22] mape: Now it does, but didn't earlier [19:22] isaacs: mape: oh, yeah,i'd introduced a bug and had to roll back to figure it out. [19:23] isaacs: i tried to be lazy. that's what you get. [19:23] isaacs: :) [19:23] mape: hehe [19:23] c4milo: how can i do mkdir -p with nodejs ? [19:25] wink_: bradleymeck: cant blame the gc , doesnt seem like its running :( [19:25] B1scuitsLap has joined the channel [19:26] bradleymeck: only thing that could force it to return undefined is that throw, but it doesnt throw... [19:26] bradleymeck: O_O [19:26] bradleymeck: wrap those returns in scope.Close [19:27] wink_: which returns [19:27] bradleymeck: all that have a handlescope above them... (a lot) [19:27] wink_: so any function that has a scope, scope.Close around the return value? [19:28] Frans-Willem: wink_: Yes [19:29] wink_: kk [19:29] Frans-Willem: wink_: When a handle-scope is cleaned up (e.g. when a function returns), all handles allocated in it will be deallocated. If you want some to survive (e.g. to return them to an earlier handle-scope), you wrap them in .Close [19:29] bradleymeck: cant believe i didnt see that earlier [19:30] stepheneb_ has joined the channel [19:30] javajunky has joined the channel [19:31] twoism has joined the channel [19:32] wink_: well they're all wrapped now [19:32] wink_: didnt seem to matter unfortunately :p [19:32] Frans-Willem: wink_: Is your full code online somewhere ? and what exactly are you doing ? [19:33] wink_: Frans-Willem: it is! im trying to fix a bug in orlandov's mongo binding, one sec and i'll gather everything that i have [19:33] teemow has joined the channel [19:33] wink_: Frans-Willem: http://groups.google.com/group/nodejs/browse_thread/thread/b7786db1070ea9a3 that is a general description of the problem [19:34] wattz: omg. [19:34] wink_: i've narrowed some of it down, i still dont know the root cause but i've found something that may point to the cause [19:34] creationix: hmm, seems that new Function(...) Doesn't capture local closure scope [19:34] wink_: if you check this pastebin: http://pastebin.com/EKhNVYKS [19:34] Frans-Willem: creationix: ofcourse not :/ [19:34] ehaas has joined the channel [19:34] wink_: the first gdb paste is a crash scenario described in the groups post, the 2nd is when it succeeds [19:34] creationix: well, it should capture the scope of when it's called if it's an eval [19:34] _announcer: Twitter: "Checking out what all the fuss is about by watching @Peepcode's Node.js screencast." -- Ross Timson. http://twitter.com/rosstimson/status/22025458639 [19:35] Frans-Willem: creationix: No, Function is different from eval, eval captures scope, Function explicitly doesn't [19:35] tpryme has joined the channel [19:35] _announcer: Twitter: "Stille Post veeery nice. HTML5 websockets + + # node.js http://twitpic.com/2htwm5 gtugna" [nl] -- m.kupriyanov. http://twitter.com/russenreaktor/status/22025482864 [19:35] creationix: nice, so I need eval, :( [19:35] creationix: this is not a good rabiit hole [19:35] Frans-Willem: wink_: Full code ? [19:35] wink_: http://github.com/w1nk/node-mongodb [19:36] wink_: if you need any help reproducing it, i can get a mongo server set up and a script that should cause it [19:36] bradleymeck: creationix, correct [19:36] wink_: but basically any mongo query that returns a large amount of data causes it [19:36] creationix: bradleymeck: correct to eval, or the rabbit hole? [19:36] sudoer has joined the channel [19:36] creationix: or both ;) [19:36] bradleymeck: both? [19:37] Frans-Willem: wink_: Is this thing linked to some kind of mongodb library? or is it just an implementation of the protocol for Node.js ? [19:37] bradleymeck: eval > Function > function > while(1) switch(state) {} [19:37] wink_: Frans-Willem: its linked to their c library, one sec [19:38] wink_: Frans-Willem: http://github.com/orlandov/mongo-c-driver [19:38] Frans-Willem: tbh, I think it'd be easier to just re-implement in native JS than fix this crap [19:39] wink_: there is a native js implementation, its far too slow at the moment [19:39] Frans-Willem: wink_: So fix it? [19:39] wink_: thats what im trying to do ;) [19:39] Frans-Willem: wink_: Fix the native JS one, I meant :p [19:40] Frans-Willem: wink_: Hunting down GC problems is difficult enough on your own code, let alone someone elses code [19:40] creationix: Frans-Willem, bradleymeck: Ok, "new" powered pattern.js http://gist.github.com/548169 [19:40] creationix: what a hack! [19:40] creationix: but it's faster [19:40] wink_: Frans-Willem: i dunno for sure its a gc problem, im flailing at this point [19:40] wink_: Frans-Willem: the binding works great until a certain threshhold and then it blows up [19:41] wink_: but even running it through valgrind, i dont see any corruption or anything of the like [19:41] Aria has joined the channel [19:41] Frans-Willem: did you try explicitly running the gc between every step ? [19:42] Frans-Willem: wink_: Not quite sure how to do that in node, but with normal v8, you can enable an extension that will export a gc() function to the global object that you can call to trigger the gc [19:42] wink_: i added a gc prologue hook and the gc isnt even getting called during my execution cycle [19:42] wink_: start -> crash [19:43] wink_: everything is kosher up until: http://github.com/w1nk/node-mongodb/blob/master/src/mongo.cc#L247 [19:43] Frans-Willem: wink_: Did you try explicitly getting it to do gc? like allocate a shitload of circularly linked objects and throwing away the reference ? just to see if your gc hook is even functional ? [19:43] wink_: Frans-Willem: i didn't but i gladly will :) [19:43] wink_: http://github.com/w1nk/node-mongodb/blob/master/src/bson.cc#L234 <- thats the actual failure [19:44] wink_: for some reason in one instance that line returns a valid obj, and another it fails [19:44] wink_: yet the string conversion is proper and successful in both cases [19:45] Frans-Willem: So exactly which one fails? is constructor_template empty? does GetFunction() fail? does NewInstance fail? [19:45] javajunky has left the channel [19:45] wink_: Frans-Willem: i've not stepped through it, one sec and i'll answer that for you though [19:46] felixge has joined the channel [19:46] Frans-Willem: wink_: Also, does it ever reach ObjectID::New? (e.g. set a logging breakpoint there, and see if it even reaches that part when failing) [19:46] pengwynn has joined the channel [19:46] wink_: Frans-Willem: it doesnt [19:46] dylang: has anybody seen or created a module for outputing RSS, Atom, or sitemap xml? I know this isn't difficult, but would rather just use a library than hardcode an array->feed. [19:46] Frans-Willem: It doesn't reach ObjectID::New ? [19:46] wink_: nope [19:47] wink_: one sec, i'll show you [19:47] Frans-Willem: wink_: Memory usage? could it be V8 is out of memory somehow ? [19:48] wink_: Frans-Willem: i sure hope not, the data set is only 500k :p [19:48] wink_: or rather the buffer being parsed is only 500k [19:48] Frans-Willem: Still, did you check the memory usage? [19:48] wink_: whats a good way to check it before my seg fault? :P [19:49] Frans-Willem: I have no idea :/ [19:49] Frans-Willem: I'm used to debugging on Windows [19:49] tmpvar: gdb [19:49] tmpvar: or ndb [19:50] wink_: Frans-Willem: ok one sec and i'll answer your questions :) [19:50] _announcer: Twitter: "Checkout @kenny_shen's Node.js slides served as a CouchApp from @cloudant: http://northpole.sg/4a" -- CouchDB. http://twitter.com/CouchDB/status/22026372668 [19:50] eisd has joined the channel [19:50] v8bot has joined the channel [19:50] wink_: actually wait, i know its not a memory thing, valgrind reported the usage stats [19:50] eisd: v8: var d = +new Date; for (var i=0,x;i<99999;i++) x = Math.random(); +new Date - d [19:50] v8bot: eisd: 10 [19:51] wink_: Frans-Willem: at the crash: [19:51] wink_: ==29815== HEAP SUMMARY: [19:51] wink_: ==29815== in use at exit: 890,802 bytes in 121 blocks [19:51] wink_: ==29815== total heap usage: 729 allocs, 608 frees, 40,227,032 bytes allocated [19:51] eisd: v8bot parses js and is written in node.js :) [19:52] Frans-Willem: wink_: Wouldn't know then, sorry :/ [19:52] maushu: Anyone parsing html? [19:53] bradleymeck: i do using htmlparser [19:53] javajunky has joined the channel [19:54] eisd: maushu: for v8bot? [19:55] wink_: Frans-Willem: it's the NewInstance that is failing [19:55] maushu: htmlparser loads the whole html first... streaming would be best for me, me thinks [19:56] wink_: Frans-Willem: http://pastebin.com/FbE0CfYF [19:56] bradleymeck: all the sax based ones ive used are either abusively strict or seem unstable [19:57] jbrantly1 has left the channel [19:58] Frans-Willem: wink_: Try wrapping the NewInstance in a trycatch block, see if that triggers anything [19:59] Frans-Willem: wink_: http://code.google.com/apis/v8/embed.html#exceptions [20:00] eazyigz: I am wondering what the speed performance difference is between node.js plugins/libraries and calling .exec() to execute unix commands [20:00] eazyigz: for instance, I was toying with a node addon that sends http requests [20:00] wink_: Frans-Willem: k, also FWIW, when the parsing succeeds, New does get called, as part of newinstance i would assume [20:01] eazyigz: now, I tried using .exec(curl....) and .exec(wget......), and it seemed like a much better idea! [20:01] Frans-Willem: eazyigz: Why does it seem like a much better idea? [20:01] femtooo has joined the channel [20:01] eazyigz: Frans-Willem: it is so much easier to implement [20:02] wink_: Frans-Willem: null exception :( [20:02] eazyigz: it does not require downloading anything from github [20:02] wink_: or rather it printed null [20:02] eazyigz: and it is probably faster: think about it - raw unix commands that are closer to the metal than javascript [20:02] Frans-Willem: eazyigz: Yes, and on top of that, it's *really* insecure, memory hungry, and slow, seeing as it has to load up a new process for each request. [20:03] eazyigz: you are saying that .exec is slow? [20:03] bradleymeck: yes [20:03] Frans-Willem: eazyigz: For something this trivial, yes, likely, seeing as the executable has to be loaded in memory before it can do anything, and the result will have to be written to disk before you can do anything with it. [20:04] eazyigz: well, at least it is trivial to implement [20:04] eazyigz: some of these node addons on github have unintuitive api's [20:05] eazyigz: unix commands are so easy [20:05] bradleymeck: i completely disagree with that statement [20:05] eazyigz: which one [20:05] sh1mmer has joined the channel [20:06] bradleymeck: unix commands are so easy [20:06] huyhong has joined the channel [20:06] eazyigz: calling something like curl or wget is a no-brainer compared to figuring out someone else's poor api design [20:06] bradleymeck: i dig through man pages soo much to figure out random switches [20:06] huyhong has left the channel [20:06] _announcer: Twitter: "I'm doing some node.js ..... check me out... l33t!" -- Matt Fitchett. http://twitter.com/MattFitchett/status/22027344586 [20:06] wink_: Frans-Willem: the newinstance call doesnt appear to be throwing an exception, but it is failing [20:07] heycarsten has joined the channel [20:08] bradleymeck: also, Request is still an amazingly simple api [20:09] wink_: yeah request is nice [20:09] eazyigz: bradleymeck: I could not figure out how to get html source from a client webpage [20:09] eazyigz: you have an easy api call for that? [20:10] eazyigz: mind you: this was from a cross-domain jsonp GET request [20:10] chewbranca has joined the channel [20:10] eazyigz: so forget POST data... [20:11] bradleymeck: you are trying to do this from a browser? [20:11] eazyigz: curl is ridiculously easy for this task... [20:11] bradleymeck: ... im soo confused as to what you are doing [20:11] tjholowaychuk: ryah: guillermo mentioned you wanted $ node --prod ? I want to utilize NODE_ENV instead of doing this CONNECT_ENV / EXPRESS_ENV crap currently [20:11] tjholowaychuk: ryah: is that what you were going for? [20:11] eazyigz: no, I needed node to get the html source from the client that sent the request [20:12] jelveh has joined the channel [20:12] eazyigz: bradleymeck: am I being a little clearer? [20:13] bradleymeck: http://github.com/mikeal/node-utils/tree/master/request/ , example at the bottom [20:13] ph^ has joined the channel [20:14] eazyigz: bradleymeck: yes! that's the one I could not get working. Let's start with I couldn't install it... [20:14] eazyigz: they use npm [20:14] bradleymeck: you dont have to use npm [20:14] eazyigz: and on my machine npm was throwing an exception [20:14] mikeal: it's only one file now [20:14] mikeal: so you can just graph main.js and stick it somewhere [20:14] dmcquay has joined the channel [20:14] eazyigz: the owner of npm github repo told me that its my version of node [20:15] eazyigz: so now we are into versioning problems... [20:15] bradleymeck: how old is your node? [20:15] eazyigz: reminds me of maven for java [20:15] johndahlstrom has joined the channel [20:15] ryah: tjholowaychuk: lets dicuss on mailing list [20:15] eazyigz: only a week old [20:15] drudge: eazyigz: node is changing extremely fast [20:15] tjholowaychuk: ryah: sure [20:15] ryah: tjholowaychuk: pretty busy atm [20:15] bradleymeck: also node wasnt considered at all stable til couple days ago [20:15] bradleymeck: api wise* [20:15] MikhX has joined the channel [20:16] eazyigz: bradleymeck: I understand. But that's why I decided to use native unix commands. [20:16] eazyigz: even though some folks consider that slow [20:16] pzich has joined the channel [20:16] mikeal: npm should be fine with node from 2 weeks ago [20:16] bradleymeck: then im not sure your other arguments hold up, but that is a fine one [20:16] mikeal: and node today [20:16] mikeal: are you building from git? [20:16] mikeal: or did you install a release? [20:17] aubergine has joined the channel [20:17] JimBastard: node today, gone tomorrow [20:17] eazyigz: I did git clone [20:17] mikeal: if you don't pull the tags [20:17] mikeal: your node version report will be way off [20:17] _announcer: Twitter: "node.js - this is very interesting:)" [ru] -- holyslon. http://twitter.com/holyslon/status/22027986363 [20:17] eazyigz: when I do git clone I assume I am getting the latest stable version [20:17] eazyigz: why would it be otherwise? [20:18] bradleymeck: you are getting master [20:18] bradleymeck: not stable [20:18] dandean has joined the channel [20:18] aurynn: you're getting the latest commit to master, which may or may not be stable. [20:18] aurynn: or even compile [20:18] mikeal: it should always compile [20:18] mikeal: and the tests should pass [20:19] eazyigz: damn me, its confusing to be a noob at github [20:19] eazyigz: can't rely on robustness of versions [20:19] mikeal: are you on mac? [20:19] mikeal: just $ brew install node [20:19] eazyigz: linux [20:19] aurynn: mikeal, I have often committed partial versions to make sure they're not only on my PC. [20:20] mikeal: not to ry/node/tree/master tho :) [20:20] aurynn: hehe [20:20] aurynn: no [20:20] faure has joined the channel [20:20] bradleymeck: eazyigz, if you ever come up with better apis and can argue for them, feel free to post them somewhere [20:20] dandean: Is there a way to print a Node package's "description" and "url" fields via npm? [20:21] dandean: or any other of the fields, for that matter. [20:21] faure: anyone know of a good tutorial to make a blog using node.js ? [20:21] mikeal: i hope there is a way to dump the package.json [20:21] bradleymeck: i know ls2 branch has a ton of stuff [20:21] eazyigz: so what's the best way to get the latest and most stable version of node? [20:21] therealkerni has joined the channel [20:22] dandean: eazyigz: brew install node [20:22] mikeal: he's on linux [20:22] eazyigz: linux? [20:22] dandean: ahh, sorry [20:22] mikeal: http://nodejs.org/#download [20:22] mikeal: tar -zxf [20:23] mikeal: ./configure && make && make install [20:23] wattz: fuck yacc. i can do all this shit in pure lex [20:23] wattz: *flex [20:23] c4milo: sudo apt-get install build-essentials [20:23] dandean: mikeal, so, off hand there's nothing like `npm info request` [20:23] mikeal: i have no idea [20:23] dandean: hmm, ok. [20:23] mikeal: npm help is utterly useless [20:24] dandean: yup [20:24] mikeal: i'm complained, isaacs will improve it eventually [20:24] mikeal: er i've [20:24] wattz: ok opinion time.. [20:24] wattz: for templating... what do you like better [20:24] wattz: {{var}} {% for(....) %} [20:24] mikeal: mustache [20:24] wattz: or [20:24] wattz: <%= <% [20:24] tjholowaychuk: both are kinda annoying to type [20:25] wattz: what about [20:25] mikeal: <% is my least favorite syntax [20:25] bradleymeck: mustache over <% [20:25] dandean: mikeal: I'll add a feature request on github, if somebody else hasn't already done that. later. [20:25] wattz: ok, forget mustache.. [20:25] wattz: it's awesome, i get it [20:25] wattz: if you could choose any open and closing tabs [20:25] wattz: short hand for simple var print [20:25] mikeal: npm help should not dump me in to a man page [20:25] wattz: and normal for methods [20:25] mikeal: i fuckin hate that [20:25] wattz: what would you like? [20:26] wattz: {{ {% [20:26] wattz: is what im leaning towards [20:26] JimBastard: all my templates are self-aware [20:26] mikeal: i think a better question is, why are you building yet another template language :) [20:26] wattz: mikeal: this is for a system language for work [20:26] mikeal: i see [20:26] JimBastard: they fill in with the correct content and language based on solar flares [20:26] wattz: just asking the opinions of people i think are good minded devs [20:26] mikeal: make sure you also write your own test framework :P [20:27] wattz: .. [20:27] wattz: brb [20:27] mikeal: just a joke [20:27] mikeal: but i really do hate <%, so the previous syntax would be preferred [20:28] felixge: JimBastard: that's not self-aware. Your templates are just not neutrino-proof ;) [20:28] c4milo: mikeal: <% bring memories of jsp :S [20:29] JimBastard: quantum mechanics is my logic gate [20:30] bradleymeck: i propose a new more language agnostic syntax using unicode chess icons [20:31] _announcer: Twitter: "serving static files with #nodejs in a respectable 30 lines of code. Now if only someone would do hosting for this." -- Asim. http://twitter.com/chuhnk/status/22028861542 [20:32] bradleymeck: oi, is there something in ecma5 with a real object dictionary instead of using toString? [20:32] raymorgan has joined the channel [20:32] bradleymeck: ACTION appears to be using his weakmaps too much for that kinda thing [20:32] jetienne_: mrdoob is _why ? just wondering [20:32] jetienne_: seems close in my mine [20:32] jetienne_: mind [20:34] creationix: bradleymeck: you want objects as keys? [20:34] bradleymeck: i use them as keys [20:35] markwubben has joined the channel [20:35] bradleymeck: i would like to have them as keys natively though, yes [20:36] raymorgan has joined the channel [20:36] creationix: that could be neat [20:36] creationix: but somewhere under the hood it would need to serialize the objects right? [20:37] creationix: maybe using their memory offset or some other unique id [20:37] creationix: (not serialize, but hash) [20:37] tjholowaychuk: thats all ruby does [20:37] tjholowaychuk: AFAIK [20:37] stepheneb has joined the channel [20:37] tjholowaychuk: since it has the hash method [20:37] creationix: I think so [20:38] tjholowaychuk: but i dont miss most that magic [20:39] bradleymeck: creationix thats what my weakmaps do [20:39] tjholowaychuk: like === w/ case [20:39] creationix: bradleymeck: what are you using to hash the objects? [20:39] creationix: is it something we can do in user space? [20:39] bradleymeck: i could make a non-weakmap i guess.. and no its c++ land [20:40] creationix: seems a user-space hash thing for all objects would be handy [20:40] creationix: (and by user-space I mean js-space) [20:40] rauchg_ has joined the channel [20:40] bradleymeck: there was one on mailing list i thought [20:41] bradleymeck: hashing is brutally costly though for most cases [20:41] bradleymeck: from jsland [20:41] creationix: bradleymeck: can it even be done in js [20:41] bradleymeck: yes [20:41] creationix: I mean, how to you tell the difference between {} and {} [20:42] bradleymeck: array indices [20:43] bradleymeck: (c=[]).push(a={},b={});c.indexOf(a);c.indexOf(b) [20:43] blogometer has joined the channel [20:43] bradleymeck: fastest way it can be done :/ [20:44] daleharvey has joined the channel [20:44] bradleymeck: but you can do some inferences to hash better if you spend time on it [20:44] bradleymeck: so ghettohash, search the bucket [20:44] creationix: I see, yeah that works [20:44] creationix: for small sets [20:45] creationix: I wonder how fast indexOf is [20:45] creationix: probably a linear search [20:45] bradleymeck: yup [20:46] bradleymeck: if its frozen/sealed you can do some JSON.stringify stuff to get it a lot faster at cost of memory [20:47] TobiasFar has joined the channel [20:48] creationix: but then you still need to store the actual objects in an array somewhere, just a smaller array [20:48] bradleymeck: yup [20:48] creationix: and who actually freezes or seals their objects [20:48] creationix: I found that to be quite slow [20:48] siculars has joined the channel [20:48] bradleymeck: yup, hence my absolute abuse of weakmaps lately [20:48] blogometer: felixge: node-mysql is hanging up on MySQL 5.0. [20:49] blogometer: But, works on 5.1 [20:49] blogometer: . [20:49] blogometer: Right at connect. [20:49] bradleymeck: known issue [20:49] blogometer: Have you seen this? [20:49] bradleymeck: yes, was a post on it [20:49] blogometer: bradleymeck: node-mysql? [20:49] bradleymeck: basically the handshake changed [20:49] bradleymeck: yes [20:50] blogometer: Changed? 5.0 preceeds 5.1? It changed from 5.0 to 5.1? [20:50] bradleymeck: apparently [20:50] blogometer: And felixge developed against 5.1? [20:50] bradleymeck: idk [20:50] felixge: blogometer: There shouldn't be any changes in the protocol. But Mysql doesn't exactly have a changelog for the protocol either [20:50] felixge: I develop against 5.1.46 right now [20:50] blogometer: felixge: Shouldn't, no. But are there? [20:50] felixge: blogometer: "hanging up" is not a good bug report :) [20:51] blogometer: Dude. Don't be that way. [20:51] felixge: blogometer: I'm still working on support for "old" passwords, those can be found on mysql installs regardless of version [20:51] blogometer: I'm just trying to determine if this is a known issue or my own error. [20:51] eazyigz: what's the best way for me to model a javascript function being executed in a browser [20:52] felixge: blogometer: most likely a known issue [20:52] felixge: blogometer: http://github.com/felixge/node-mysql/issues#issue/2 [20:52] eazyigz: I have looked at env.js and jsdom, but can't decide [20:52] blogometer: I submitted a patch for an error I found and you were complaining about the lack of tests, so if collaborating with you is just going to subject me to passive aggressive emoticons, I'm going to find another solution. [20:53] blogometer: That says < 4.1. The difference in versions here is 5.0 and 5.1. [20:53] rauchg_: blogometer: a patch without tests is a 50% patch [20:54] felixge: blogometer: mysql 4.1 introduced a new password hashing algorithm. But it did not automatically upgrade old passwords [20:54] blogometer: And it doesn't hang up. It returns a field header. [20:54] bradleymeck: env.js is a bit more mature, but for anything simple jsdom works [20:54] felixge: blogometer: So any db can potentially still use the old algorithm, regardless of mysql version [20:54] bradleymeck: and env.js doesnt support node to my knowledge [20:54] felixge: blogometer: yes, it asks node-mysql to use the old hashing algorithm [20:55] felixge: blogometer: the package is properly parsed in the oldpw branch, but there is still lots of work to do [20:55] matt_c: I think a patch without tests is better than no patch at all. [20:55] breccan has joined the channel [20:55] v8bot has joined the channel [20:55] eazyigz: bradleymeck: I am actually looking to use env.js type functionality within node. Are you saying it wouldn't work? [20:55] bradleymeck: it would [20:55] blogometer: rauchg_: If someone wants to ask me for a test like a grown up, then I liable to go and do the work, but getting a bunch of push back, I'm just going to look for a nicer disposition. [20:56] bradleymeck: just saying, jsdom doesnt have all that env.js does [20:56] blogometer: felixge: Okay. You're saying something like: 5.0. does a lot more handshaking that 5.1. [20:56] blogometer: Right? [20:56] felixge: blogometer: no, I'm saying this is not related to your database, but your data [20:56] felixge: blogometer: more specifically the user accounts [20:57] rauchg_: blogometer: probably a language difference [20:57] nerdEd has joined the channel [20:57] blogometer: felixge: Okay. So, if I fix my accounts in 5.0 it will work with 5.0. [20:57] blogometer: It is a MySQL configuration issue. [20:58] blogometer: Let me read through some stuff. I'll be back. [20:58] sveisvei has joined the channel [20:58] felixge: blogometer: btw. I did not try to piss you off. I'm putting a ton of work into this library, I just want it to turn out very solid. This means I'll be a little picky with commits and focus on bug reports that are detailed. I'm a nice person otherwise :) [20:59] felixge: blogometer: I have a link for you [20:59] felixge: blogometer: http://dev.mysql.com/doc/refman/5.1/en/password-hashing.html [20:59] blogometer: felixge: I put forward what I find for guidance. If you tell me I'm on the right track and *ask* me for more work, I'll do more work. [21:00] felixge: blogometer: sounds good :) [21:00] _announcer: Twitter: "Node.js: Server Javascript in Version 0.2.0 - http://sitemeu.net/No1ni8/" [pt] -- Aureliano Martins. http://twitter.com/aurelianolinux/status/22030636775 [21:01] felixge: blogometer: anyway, if you got a minute maybe we could figure out how to "upgrade" your account to use the new password mechanism [21:01] felixge: blogometer: I suggested this to another user who had trouble: SET PASSWORD FOR 'your_user'@'your_host' = PASSWORD('your_password'); [21:01] blogometer: felixge: That is *very* kind of you. [21:02] felixge: blogometer: but he reported it to not work [21:02] blogometer: I'm going to read through this page and try to see if it makes sense. [21:02] felixge: blogometer: now I don't know if he had the host setting right [21:03] blogometer: You mean the --old-passwords switch. [21:03] blogometer: I'm on CentOS which is always fond of the past. I'm going to look at the configuration on the server. [21:03] blogometer: I'll be back. [21:03] TooTallNate has joined the channel [21:04] felixge: blogometer: alright, let me know! [21:05] hassox has joined the channel [21:07] stepheneb has joined the channel [21:08] gorakhargosh has joined the channel [21:09] MizardX has joined the channel [21:09] _announcer: Twitter: "@pmjordan you should be able to do it with #nodejs in a few lines of code." -- Felix Geisendörfer. http://twitter.com/felixge/status/22031193363 [21:09] robotblake has joined the channel [21:10] Yuffster has joined the channel [21:11] blogometer: Oooffffff. [21:11] blogometer: I hate CentOS. [21:11] eazyigz: can I load modules? something like: load('env.rhino.js'); [21:12] blogometer: felixge: Yes. Old passwords are enabled for CentOS> [21:12] blogometer: . [21:12] blogometer: Because people who do not maintain there systems should be rewarded. [21:12] ay: felixge: Did apricot work out nicely for you? [21:12] felixge: blogometer: well, I guess it was an issue for a while when all client drivers didn't support the new mechanism yet : /. Not it's an issue for new drivers ... [21:12] eazyigz: blogometer: I stay away from centos until I need to deploy something in production [21:12] felixge: * Now [21:13] blogometer: eazyigz: Does that mean you don't like to use Ubuntu in production? [21:13] felixge: ay: some initial tests looked promising, but then I hit this: http://github.com/silentrob/Apricot/issues#issue/1/comment/367190 [21:13] felixge: ay: haven't played with it again [21:13] eazyigz: blogometer: we use centos on aws in production, and its good for that. But I do not use centos for development on my machine [21:14] felixge: Ubuntu server edition works great for us [21:14] felixge: Not sure why I would ever want to touch cent again [21:14] eazyigz: centos is stable, but gets in your way when you are developing cool stuff [21:15] felixge: eazyigz: ubuntu lucid is stable too, at least we had no issues with it so far [21:15] felixge: and it has long term support [21:15] ay: ubuntu server might be good now. But I got burnt badly from it a few years back. [21:16] ay: Last LTS. [21:16] felixge: what happened? [21:16] ay: After last LTS (not the current) Dell released a revisoned raid-controller for their server. [21:17] ay: RHEL backports all new drivers to their old releases. [21:17] matt_c: sizzle has always been "fast enough" for me. [21:17] ay: ubuntu did not do that. The answer i got was "use the current version instead, that supports it" [21:17] matt_c: I haven't done anything that would add up though [21:17] felixge: ay: ah right. Well we don't deal with hardware, we run on ec2 :) [21:18] _announcer: Twitter: "the node.js knockout boxing gloves prize from thoughtbot http://tweetphoto.com/41153708" -- node knockout. http://twitter.com/node_knockout/status/22031768804 [21:18] felixge: ay: (which can be a problem in itself, but it's good for what we need) [21:18] bsstoner has joined the channel [21:18] samsonjs has joined the channel [21:18] ay: So the last LTS was uninstallable on newer hardware that when it was released. [21:18] nerdEd has joined the channel [21:18] daleharvey has joined the channel [21:18] matt_c: We've got a bunch of white-box hardware running Ubuntu. We've had a version problem or two like that but we get what we pay for. [21:18] sh1mmer has joined the channel [21:19] ay: But the main problem was that they did not even unserstood the problem. [21:19] ay: "Why can't you just install the never non-LTS version?" [21:19] ay: :-) [21:19] felixge: My main reason for using ubuntu is that it has been my best experience with setting stuff up so far. Be it installing packages, or compiling from source [21:19] satori_ has joined the channel [21:19] ay: (I do use ubuntu on my desktop and my home servers thought) [21:20] felixge: I hate spending a day of my time trying to compile something only to find out the author doesn't support my OS :) [21:20] felixge: most people seem to test ubuntu these days [21:20] felixge: so there is that [21:20] dilvie: hi [21:20] gwoo: hi felixge :P [21:21] matt_c: Yeah I've been really happy with Ubuntu in production. Everybody has bad experiences with everything eventually. [21:21] felixge: gwoo: hi [21:21] daleharvey: ACTION loves ubuntu [21:21] gwoo: ACTION does ubuntu [21:21] ay: felixge: I posted two issues on the apricot github-page as well. [21:21] gwoo: felixge: are you gonna knockout some node? [21:22] felixge: gwoo: probably :) [21:22] gerad: wooo! :-) [21:22] gwoo: i wanna watch from some stadium seating [21:23] gwoo: i havent had much time to code lately [21:23] dilvie: ay: I hate it when my hardware drivers stop working. ); [21:24] dilvie: ay: I once spent quite a bit of money on a hardware audio mixing and effects card. Interface: Awesome. Sound quality: Stupendous. Support? After 3 years it was no longer supported by current operating systems. [21:24] dilvie: ay: And the manufacturer had moved on to new products and stopped worrying about driver compatibility. [21:25] creationix: wohoo, nStore is faster now [21:25] bradleymeck: :D [21:25] figital has joined the channel [21:25] creationix: 112,790 inserts/second and 663,750 updates/second [21:25] bradleymeck: going to try to compete w/ the native stuff soon? [21:25] dilvie: Lesson: Don't depend on fancy, proprietary computer hardware. [21:25] _figital has joined the channel [21:25] dilvie: what is nStore? [21:25] creationix: queries are still slow, but I can implement indexes on top of the key/value core [21:25] ay: ACTION still have Debian Sarge boxes in production. [21:25] creationix: dilvie: my home-grown database [21:25] creationix: pure node [21:26] felixge: creationix: that seems a little slow : ). I had dirty up to ~1 million writes / sec at some point :) [21:26] dilvie: ay: sarge was rock solid for me - and dependency resolution was 100x more stable than what I'm getting now with Ubuntu. [21:26] creationix: felixge: nStore writes everything to disk [21:26] felixge: creationix: so does dirty :) [21:26] dilvie: I find it's much too easy to totally hose my system with apt-get upgrade. [21:26] dilvie: ouch. [21:26] mattly has joined the channel [21:26] creationix: felixge: :) [21:27] dilvie: creationix: SQL? NoSQL? [21:27] creationix: dilvie: no, not any sql in site [21:27] creationix: it's pure key/value at the moment [21:27] ay: Is anyone here running node.js in a large production enviroment? [21:27] creationix: dilvie: I have a query interface, but it's pretty slow for large datasets [21:27] creationix: since there are no indexes [21:28] bradleymeck: ay github i know has it for some transfer stuff [21:28] dilvie: ^^ I want to hear answers to ay's question. [21:28] bradleymeck: yahoo has a bit of it in mail, forget what exactly [21:28] creationix: felixge: what were you doing to get that fast? [21:28] ay: One of my developers want to rewrite a soccer-live-service in node.js. It's reciving about 18k hits/sec today.. [21:28] ay: :-D [21:28] dilvie: I know that some big companies are working on Node (Yahoo, notably) - but what's actually running right now that uses node? [21:28] felixge: creationix: but I haven't benchmarked in forever. Well, this was peak-speed. Things would sync to disc eventually, but there was a queue [21:29] felixge: creationix: one thing was to "batch" writes if there were too many at the same time [21:29] bradleymeck: yahoo mail has some streaming, githubs downloading interface uses it [21:29] felixge: creationix: if I get more than 1000 writes / sec, it makes no sense to call fs.write() 1000x times [21:29] creationix: yeah, I just re-implemented write-batching [21:30] felixge: creationix: another thing was the data structure. I really optimized that for speed at some point, but I still had some consistency bugs - so there is no saying my concept wasn't flawed [21:30] Frans-Willem: creationix: Do you happen to know if Postgres supports some kind of update or insert operation? [21:30] bradleymeck: transloadit also [21:30] felixge: creationix: anyway, you'll be at jsconf, right? [21:30] creationix: felixge: yep [21:30] creationix: Frans-Willem: if it does, it's via the sql [21:30] creationix: I don't know one [21:30] felixge: creationix: I have to complete a new version of dirty for my talk, so I'll have good numbers by then [21:30] christophsturm has joined the channel [21:31] creationix: that will be nice [21:31] felixge: creationix: but really, we're both in the same environment and neither of us is stupid. It would always be trading something off for something else to go faster ;) [21:31] felixge: i.e. I might get faster writes at the cost of more expensive deletes [21:32] creationix: felixge: I'm providing a callback for every save call [21:32] mscdex: node.js rules! [21:32] creationix: felixge: are you doing that? [21:32] felixge: creationix: yes [21:32] felixge: creationix: that was actually hard to optimize with the batching [21:32] creationix: I'm trying to implement MVCC, but it's hard [21:32] creationix: http://en.wikipedia.org/wiki/Multiversion_concurrency_control [21:33] tekky has joined the channel [21:33] chipnt has joined the channel [21:33] felixge: creationix: well, I was not aiming for keeping old versions around [21:33] c4milo has joined the channel [21:33] felixge: creationix: I mean they may exist somewhere, but I hadn't planned on exposing them [21:34] felixge: creationix: like couchdb [21:34] creationix: I'm not either, it's tricky [21:34] jelveh has joined the channel [21:34] creationix: felixge: can someone query a node-dirty database for a value RIGHT after inserting it, or do they need to wait for the callback? [21:35] felixge: creationix: right afterwards [21:35] creationix: hmm, maybe mvcc doesn't make sense if I don't have transactions [21:35] felixge: creationix: but again, consistency is hard. The write could fail, there could be a delete in between the write and the callback ... [21:35] creationix: I just don't want values changing mid query [21:36] StevenSoroka has joined the channel [21:37] creationix: felixge: are you keeping ALL the data in ram and just using the disk as backup (ala redis) ? [21:37] felixge: creationix: yeah [21:37] creationix: that simplifies things [21:37] felixge: creationix: disk as backup [21:38] creationix: the disk is my primary data source [21:38] creationix: I have short-lived ram caches [21:38] felixge: creationix: I was thinking about implementing virtual memory like redis, but it's too slow in JS [21:38] benburkert has joined the channel [21:38] felixge: creationix: I mean you just end up with too much object creation [21:38] felixge: creationix: that's even more consistency issues :) [21:38] creationix: the JSON.stringify and JSON.parse is very expensive trust me [21:38] felixge: creationix: yeah, I didn't want to go there [21:38] creationix: that's basically what nStore does [21:38] creationix: that explains the difference [21:39] benburkert has joined the channel [21:39] felixge: creationix: Well, I didn't JSON.stringify() anything until I had to write it to disk [21:39] felixge: creationix: so the benchmarks I did didn't actually write anything to disk [21:39] felixge: creationix: they did so eventually [21:39] matt_c has joined the channel [21:39] creationix: did you actually have a million JSON.stringifies per second [21:40] creationix: or just a million inserts in to the write queue [21:40] felixge: creationix: no, that's what I'm saying [21:40] felixge: creationix: basically the later [21:40] felixge: creationix: I was mostly interested in handling "peak load" [21:40] creationix: I see [21:40] felixge: creationix: because everything else is basically limited to the speed of your disk, so who cares [21:40] creationix: well, my bottleneck isn't the disk at all, but the cpu [21:41] creationix: the JSON stuff and messing with huge queues/objects [21:41] felixge: creationix: what kind of disk do you have? [21:41] creationix: Apple SSD [21:41] creationix: I've seen it peak at 300mb/s [21:41] mscdex: felixge: i've pushed a change to make autoCast default to true again [21:41] creationix: (though the kernel was probably lying) [21:41] felixge: creationix: oh, I was testing on a traditional disk :) [21:42] creationix: felixge: doubt it matters, even traditional disks can write sequential data pretty fast [21:42] creationix: often faster than SSD [21:42] felixge: mscdex: cool. Thank you so much for the help : ) [21:42] felixge: mscdex: will have a look now [21:42] _announcer: Twitter: "Cappuccino, Node.JS, Sencha/Ext - Javascript is where it's at. All very cool technologies." -- Craig A Rodway. http://twitter.com/webman_/status/22033378095 [21:42] creationix: :) I got 2 out of three [21:44] ehaas has left the channel [21:44] felixge: creationix: anyway, nStore already makes different trade-offs than dirty. Doesn't matter much to compare it performance wise [21:45] jimt has joined the channel [21:45] creationix: no, I'm just looking for ideas [21:45] felixge: creationix: I got my ideas from benchmarking v8 [21:45] _announcer: Twitter: "Was NodeJS torment to death. . ." [zh-CN] -- Aveline Lan. http://twitter.com/LonelySwan/status/22033609396 [21:46] felixge: creationix: For example object creation is slow (compared to other operations). Avoid creating objects like hell wherever possible :) [21:46] creationix: yeah, I try that [21:46] JimRoepcke has joined the channel [21:47] felixge: (btw. for everybody else listening: don't listen, this is not advice for applications - only libraries that try to impress in silly benchmarks : ) [21:47] wink_: OH GOD I HEAR OBJECT CREATION IS SLOW, HOW CAN I AVOID IT [21:48] felixge: wink_: start thinking about everything in terms of numbers [21:48] felixge: wink_: properties should be flags [21:49] blogometer: wink_: Don't crate any objects. [21:49] felixge: wink_: use arrays if you exceed JS number precision and you need more properties [21:49] felixge: ;) [21:49] wink_: lol [21:49] blogometer: ACTION Smacks hands together as if knocking off dust. [21:49] blogometer: Problem solved. [21:49] creationix: alright, I'm 54.3% in v8::internal::Heap::CollectGarbage [21:49] creationix: yay for gc [21:49] codetonowhere has joined the channel [21:50] blogometer: felixge: Thank you for the diagnosis. I *might* write up my experience and if I do, would that belong on the node-mysql wiki? [21:50] admc has joined the channel [21:50] eazyigz has joined the channel [21:51] creationix: ok, I can confirm creating 10,000,000 queue items with several objects each is a very bad idea [21:51] creationix: FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory [21:51] blogometer: creationix: Before the FUD quotient gets too high, I thought V8 had a generational garbage collect and did pretty well with many small objects. [21:51] creationix: yes, but I'm keeping a reference to all these small objects in a few very large objects [21:52] creationix: it's the large ones that can't be collected [21:52] felixge: blogometer: were you able to fix it? [21:52] blogometer: Okay, good. [21:53] blogometer: Yes. The old password switch was set on the MySQL servers. Other team members are deploying a newer version of MySQL today anyway, so we'll move forward with that switch off. [21:53] raymorgan has joined the channel [21:54] felixge: blogometer: Yeah, if you could write a quick tutorial on how you fixed your install that would help a lot of people [21:54] wink_: felixge: did you ever get that old hashing algo implemented? [21:54] blogometer: felixge: For the Wiki? [21:54] felixge: blogometer: I'll still work on supporting the old passwords, but it's hard [21:54] felixge: blogometer: yeah, wiki would work great [21:55] felixge: wink_: not yet, it turns out I had to port a little bit more code than I first thought [21:55] blogometer: felixge: Please don't use my experience to inform your decision. [21:55] wink_: oh no, what else did you have to implement? [21:55] blogometer: I was happy to tell the rest of the team that they need to upgrade. [21:56] _announcer: Twitter: "Friday is @node_knockout eve ... when all sorts of NodeJS projects suddenly get open sourced. ;)" -- xnoɹǝʃ uɐıɹq. http://twitter.com/brianleroux/status/22034299899 [21:56] blogometer: I won't ever encounter this problem again, I don't imagine. It would probably not be the best investment of your precious time to support people on 3.1. [21:56] Deputaats: What you would suggest to get websockets working on browsers that does not support it natively? [21:56] felixge: wink_: http://github.com/felixge/node-mysql/blob/0cb56d994641bad3426fd5cfc7e452f7903bc059/test/fixture/libmysql_password.c#L34-72 [21:56] felixge: need to go, gf [21:56] felixge: gn8 [21:56] creationix: 'night [21:56] rauchg_: Deputaats: socket.io [21:56] blogometer: And if they must support old clients, they can be particular about it using the OLD_PASSWORD function, so there is really no need to support that old protocol. [21:56] wink_: felix: dohhhh [21:57] Deputaats: socket.io is only one? [21:57] rauchg_: http://github.com/learnboost/socket.io and http://github.com/learnboost/socket.io-node for the server [21:57] mscdex: or grappler or maybe node-websocket-server [21:57] mscdex: :S [21:57] mscdex: don't know of any other websocket modules [21:58] Aria: Darn you, ryah. Now I have Lily Allen songs stuck in my head. [21:58] Aria: Of course, this is displacing Thomas Dolby, so hey. [21:59] ryah: :) [21:59] ryah: lily allen, who i've just discovered, seems to be the most awesome musician ever [21:59] visnup has joined the channel [21:59] _announcer: Twitter: "Maybe i should give this one a try Meet Node.js #peepcode http://bit.ly/d9Ikfl" -- Felix. http://twitter.com/byteforscher/status/22034533126 [21:59] bradleymeck: deputaats, its not the only one, but it has the most support for fallbacks [22:00] Deputaats: rauchg_: I was trying socket.io but seems that it does not call disconnected even for every connected user. [22:00] Deputaats: *event [22:00] rauchg_: Deputaats: it should, what socket.io version / node version are you using ? [22:01] rauchg_: on the client side, disconnect support is not 100% complete [22:01] rauchg_: but the more important use case is the server disconnect support, which is rock solid [22:01] Deputaats: latest versions on both. [22:01] Deputaats: Hmm, maybe something is wrong with my code then. [22:02] sonnym has joined the channel [22:02] rauchg_: make sure not to use master, but the latest tag (http://github.com/learnboost/socket.io/tree/0.5.3 and http://github.com/learnboost/socket.io-node/tree/0.5.3) [22:02] TooTallNate has joined the channel [22:07] bradleymeck: ugg i hate the factory pattern but i might have to use it [22:08] jacobolus has joined the channel [22:08] dylang: creationix: when my template throws an error (like a typo in my ejs), i always get a "stream is not writable" error stemming from gzip-proc line 51. i'm catching the error and throwing content in the response but doesn't seem to matter. any ideas? [22:09] javajunky has joined the channel [22:09] creationix: dylang: sorry, no clue [22:09] creationix: I'm thinking the gzip middleware was a bad idea [22:09] wattz: ACTION punches flex in the face [22:10] wattz: hey creationix how's it going? [22:10] dylang: creationix: sometimes just typing my issues into irc helps me self-solve them. [22:10] daleharvey: dylang: are you trying to catch from outside an async block? [22:10] Frans-Willem: Oooh, ryah's online [22:10] _announcer: Twitter: "@janl ECMAScript in the role of SSJS? Yeah. I'm fascinated by the potential of NodeJS/CouchDB and the like, with Sencha/Cappuccino frontend." -- Craig A Rodway. http://twitter.com/webman_/status/22035271350 [22:10] dylang: creationix: it seems that the error is automatically dumped to the stream - so my attempt to put up a nice error screen is what's causing the issue. [22:11] creationix: dylang: maybe it's part of the ejs module? [22:11] dylang: daleharvey: i'm catching the error with server.error (via express) [22:11] creationix: wattz: wrestling nStore [22:11] wattz: ahh [22:11] dylang: creationix: or Connect.errorHandler? [22:11] wattz: punch it in the face [22:11] wattz: pretend it's a puppy [22:11] wattz: makes me feel better :D [22:12] creationix: dylang: the only global error handler is node's [22:12] tjholowaychuk: express.Server#error() is just a regular Connect error handler FWIW [22:12] creationix: but all exceptions really need to be caught [22:12] creationix: uncaught exceptions are bad in node [22:12] tjholowaychuk: ya if you dont catch some, you are kinda fucked [22:12] tjholowaychuk: get connect-timeout in there [22:12] tjholowaychuk: lol [22:13] dylang: tjholowaychuk: cool good to know. [22:13] tjholowaychuk: AFAIK every level that can be caught in connect/express is, but people still need to do that constantly [22:13] tjholowaychuk: PITA [22:13] tjholowaychuk: but meh [22:14] _announcer: Twitter: "@webman_ Yeah, that’s the whole picture. The bits that CouchDB standalone can’t fill (by design) node.js just fills out perfectly :)" -- Jan Lehnardt. http://twitter.com/janl/status/22035536751 [22:15] hassox has joined the channel [22:16] jlilly has joined the channel [22:18] rwaldron has joined the channel [22:18] badaxx has joined the channel [22:18] chipnt has left the channel [22:20] _announcer: Twitter: "The #nodejs Daily is out - read this Twitter newspaper on http://paper.li/tag/nodejs (18 contributions today)" -- Christos Stathis. http://twitter.com/chstath/status/22035906694 [22:20] dylang: creationix: ah now i see - connect's errorHandler is what's sending data to and closing the response stream. [22:20] creationix: cool [22:21] tjholowaychuk: dylang: only if another error handler has not already responded [22:21] tjholowaychuk: aka app.error() etc [22:21] dylang: tjholowaychuk: well that's what i thought i was providing. [22:22] dylang: tjholowaychuk: i have my own handler via app.error but it seems to be using both. [22:22] tjholowaychuk: :S [22:22] tjholowaychuk: thats not good [22:22] tjholowaychuk: um [22:22] tjholowaychuk: can i see a gist? [22:22] dylang: and i'm seeing the stack dump four times [22:22] tjholowaychuk: if you dont next() then it should let you respond there [22:22] dylang: yeah [22:22] tjholowaychuk: yikes [22:22] tjholowaychuk: wtf [22:22] tjholowaychuk: mounted apps? [22:23] tjholowaychuk: its hard to say without seeing code [22:23] tjholowaychuk: but sounds really odd [22:23] creationix: wow, js really hates super large objects [22:23] dylang: no mounted, creating gist now [22:23] tjholowaychuk: dylang: thanks man [22:23] creationix: about 13,000,000 keys it takes 2 seconds to insert a single property [22:23] Frans-Willem: LOL! [22:23] Frans-Willem: I crashed postgresql with my usenet indexer :p [22:23] JimBastard: lulz [22:23] creationix: http://gist.github.com/548444 [22:24] creationix: Frans-Willem: now we're talking [22:24] Frans-Willem: creationix: Was getting 170 articles/second indexed :) [22:24] Frans-Willem: And then postgres just bailed out telling me it couldn't write to the log file anymore :p [22:25] Gruni has joined the channel [22:25] dylang: tjholowaychuk: thanks for looking at this. http://gist.github.com/548449 - it's powering the still very under construction http://www.opowerjobs.com [22:25] Deputaats: socket.io "Data incorrectly framed by UA. Dropping connection". When does this happen? On connection start? What happend to user in this situation? [22:26] ehaas has joined the channel [22:26] tjholowaychuk: dylang: np one sec [22:26] _announcer: Twitter: "Node.js ko win today because a colleague was talking and laughing in fact taken from the nose of Evangelion Asuka when you join a team name & github heroku only do receive an offer from" [ja] -- atsuya. http://twitter.com/atsuya/status/22036355148 [22:28] _announcer: Twitter: "Building Node.JS is making my netbook run full steam. Hope it's worth it." -- Shrutarshi Basu. http://twitter.com/basus/status/22036446791 [22:28] Deputaats: I have this simple code for socket.io http://pastebin.com/MWBD3PY2 [22:29] Deputaats: And I can see that in Redis session id's are building up. [22:29] bradleymeck: creationix, yea, the v8 engine's hash has around 1:50,000 collision rate [22:29] Deputaats: Yes, using 5.3.0 versions. [22:29] bradleymeck: so that many, bad news bears [22:30] tjholowaychuk: dylang: still taking a look, maybe you have a cyclic error [22:30] tjholowaychuk: dylang: maybe the exception, then trying to render a template or something, leading to another exception [22:30] tjholowaychuk: could do it [22:30] bradleymeck: js> 13000000/50000 [22:30] tjholowaychuk: possibly [22:31] tjholowaychuk: dylang: nothing really jumps out at me, touch without reproducing it [22:31] eisd: v8: 13000000/50000 //bradleymeck [22:31] v8bot: eisd: 260 [22:32] creationix: bradleymeck: 50,000 ? [22:32] bradleymeck: yes [22:32] dylang: tjholowaychuk: okay thanks. i'm glad you didn't find a dozen obvious errors or that i'm using express and connect completely incorrectly. [22:32] bradleymeck: not sure what kinda hash map style they are using but the identity hash has around 1:50000 [22:32] creationix: I hadn't considered the hash collisions, but that would explain it some [22:32] creationix: bradleymeck: you saw my gist right? [22:32] tjholowaychuk: dylang: on a small note you can use express.errorHandler() etc now over connect.errorHandler(), its the same thing [22:33] tjholowaychuk: dylang: but prevents the extra require [22:33] tjholowaychuk: good suggestion from tim [22:33] dylang: tjholowaychuk: i hope to put this entire project on github before node knockout so anybody else building a large complex site can have a living example. [22:33] creationix: dylang: good idea [22:33] tjholowaychuk: dylang: I have quite a few examples now but let me know if there was something you were having an issue with [22:33] tjholowaychuk: could do with some more examples [22:34] pgriess has joined the channel [22:34] bradleymeck: probably a double square, which would mean anything past 2 collisions would be a bucket + space expansion [22:34] Frans-Willem: Heh, found the postgres error, Ubuntu put the DB file in /var/lib, while only having a 256mb disk for /var/lib/ [22:34] bradleymeck: just read your gist, kinda fits but thats a bit better perf than a double hash [22:35] creationix: bradleymeck: though my graph doesn't have much data at the low end [22:35] figital has joined the channel [22:35] creationix: it's for 283,357 after the first 100ms [22:35] creationix: *got [22:36] dylang: tjholowaychuk: as far as examples go i was mainly learning from the source and unit tests, but i had no idea if i was laying out code in a way that anybody else would find readable besides me. maybe a best practices example with things like how to best use mounted and subapps and more examples with connect would be helpful? [22:36] creationix: bradleymeck: so I see a hard line about 13,000,000 where it just falls apart [22:36] tjholowaychuk: dylang: could do. as far as style goes I can only suggest how my examples are set up [22:36] tjholowaychuk: but that is all personal really [22:37] tjholowaychuk: dylang: http://gist.github.com/548481 [22:37] tjholowaychuk: works fine, so its not some weird cyclic thing that I thought it might have been [22:37] tjholowaychuk: hm [22:37] tjholowaychuk: dunno man :s [22:37] bradleymeck: creationix, they might be setting a max bucket amount for their hash? [22:37] creationix: I wish I could see this on a real graph [22:37] tjholowaychuk: dylang: maybe try disabling gzip and some other non-essentialls to try and narrow it down or step through with ndb [22:37] creationix: what's a good graph tool for osx? [22:38] tjholowaychuk: creationix: gnuplot! [22:38] creationix: ok, brew install gnuplot, done [22:38] creationix: now what [22:38] hammerdr has joined the channel [22:38] bradleymeck: v8: 8*13000000 / Math.pow(2,20) [22:38] v8bot: bradleymeck: 99.18212890625 [22:38] jelveh has joined the channel [22:38] bradleymeck: 99 megs~? [22:38] creationix: bradleymeck: that makes sense [22:39] tjholowaychuk: creationix: check out the connect example for reference http://gist.github.com/548485 [22:39] Frans-Willem: creationix: node doing ~30% of CPU, postgres ~35%, 191 articles indexed per second, with about 4 queries per article indexed :) [22:39] tjholowaychuk: creationix: little tough to do dynamic shit w/ bash but could do a little py or ruby script depending on what you need [22:39] Frans-Willem: creationix: Pretty impressive, isn't it ? [22:39] creationix: Frans-Willem: nice, with my postgres driver? [22:39] bradleymeck: on a single machine, oh yea [22:40] Frans-Willem: creationix: Your postgres driver, my buffer lib :) [22:40] creationix: nice [22:40] Frans-Willem: down to 182 articles/second now :( [22:40] Frans-Willem: 0.15% of the newsgroup indexed :D *yay* [22:40] dylang: tjholowaychuk: figured out the repeating. the error was in a partial and it was repeating the error once per time it happened [22:41] creationix: Frans-Willem: that's a lot of data [22:41] mattikus has joined the channel [22:41] dylang: tjholowaychuk: and since disabling gzip didn't help - my theory is that because many errors were happening - the first one wrote to the response stream, closed it, and then the other errors tried to do the same thing. [22:42] Frans-Willem: creationix: 16127548 articles to go :) [22:42] tjholowaychuk: dylang: shit, yeah templates w/ errors do a next(err). so on the response side its fine? you just get lots of stderr action? [22:42] Frans-Willem: Hmmm, fuck, it errored again :@ [22:42] creationix: Frans-Willem: disable your postgres indexes till after the data is loaded [22:43] dylang: tjholowaychuk: response side not fine because error #2...#N also try to write to the stream, which error #1 already closed. [22:43] nerdEd has joined the channel [22:43] creationix: Frans-Willem: or have the node script generate postgres archive file [22:43] creationix: and then load it [22:43] tjholowaychuk: dylang: right. hmm I will create an issue and see if I can come up with a resolution for this [22:43] Frans-Willem: Nah, this is good enough, it's probably my connection limiting it now :p [22:44] tjholowaychuk: dylang: no way to prevent that sort of behaviour though really unfortunately. but that was your template in the error handler correct? [22:44] Frans-Willem: Also, there's other things more pressing, e.g. it errors out randomly, sometimes on continuing an earlier batch (primary key constraints, need to find out what it's indexing duplicate), and there seems to be an error in the string escaping routines :) [22:45] _announcer: Twitter: "Fun ! I'll try it :) Send push notifications to your iPhone using #node.js and notifo.com http://bit.ly/afh8We" -- Armel FAUVEAU. http://twitter.com/fauveauarmel/status/22037597831 [22:45] tjholowaychuk: dylang: if you want / have time a small example to reproduce would be wickeddd or added to ./test/* [22:46] isaacs has joined the channel [22:46] sudoer has joined the channel [22:46] mjr_ has joined the channel [22:46] dylang: tjholowaychuk: so do i need to keep track that an error already wrote to the stream and not push more errors there? maybe node has a response.closed boolean? [22:47] blogometer has joined the channel [22:48] tjholowaychuk: dylang: I think there are some private flags, dont worry about the solution but having a reproduction would be wicked [22:49] dylang: tjholowaychuk: cool, happy to help. i haven't yet commited anything to github yet so this will be a fun first. i have to head home now so i'll try to get to this late tonight or tomorrow. thanks again for all the help. [22:50] tjholowaychuk: dylang: not a problem, thanks man. just take a look at the other tests and see if you can whip something up that fails [22:50] _announcer: Twitter: "Learning about YETI from @reid, awesome CLI javascript unit test runner... Written on NodeJS for bonus awesome. http://github.com/yui/yeti" -- HB Stone. http://twitter.com/hbstone/status/22037906984 [22:50] badaxx: mscdex: anything new about the 250 char bug? i really need a fix [22:51] daleharvey has joined the channel [22:51] stepheneb has joined the channel [22:53] _announcer: Twitter: "rage against the machine, cold beer, and node.js" -- Jason McLeod. http://twitter.com/jasonmcleod/status/22038159363 [22:54] bradleymeck: i wish we had a heavy metal song "rage against the node" [22:54] tg: hehe ;] [22:54] mscdex: badaxx: haven't had any time [22:55] SubStack: rage against the finite state machine [22:55] satori_: hehe [22:55] satori_: RATM only know one song, or least they all sound the same to me. [22:55] mscdex: psh [22:55] bradleymeck has left the channel [22:56] tjholowaychuk: hahah [22:56] tjholowaychuk: rage against the fsm, thats awesome [22:56] tjholowaychuk: anyone use ragel anymore? [22:57] mscdex: ragel = ruby + bagel [22:57] badaxx_ has joined the channel [22:58] creationix: ok, with ryan_gahl's suggestion I'm getting about 65,636,000 properties before node crashes with an out of memory error [22:58] creationix: property inserts stay insanely fast the entire time [22:58] creationix: around 85,851,485/second [22:58] mscdex: i like how ragel compiles into code that uses gotos [22:58] mscdex: huhu [22:59] tjholowaychuk: ragel produces some pretty slick code [22:59] tjholowaychuk: well for some languages [22:59] tjholowaychuk: lol [22:59] mscdex: goto hell; [22:59] mscdex: :p [22:59] creationix: mscdex: hey man, it's all got to translate to machine code eventually [22:59] mscdex: gosub go! [23:00] mscdex: why can't it generate code that uses a state variable and a loop? [23:01] tjholowaychuk: i think you can [23:01] tjholowaychuk: it can produce all kinds of things [23:01] tjholowaychuk: just use the switches [23:01] tjholowaychuk: or have it output some insanely slow ruby lol [23:01] mscdex: seems like that'd be a better example to show on the front page of their website [23:02] mscdex: instead of a bunch of gotos [23:02] blogometer has joined the channel [23:02] blogometer has left the channel [23:02] tjholowaychuk: -T0 is the table driven one [23:02] Frans-Willem: ffs [23:02] tjholowaychuk: and the default [23:02] tjholowaychuk: --G2 is apparently the fastest and uses goto [23:03] tjholowaychuk: i think [23:03] Frans-Willem: creationix: Horrible error in sql merge function: if one of the to-be-merged bits contains a ?, it is also replaced [23:03] tjholowaychuk: havent used it in like a year [23:03] creationix: Frans-Willem: yikes [23:03] creationix: Frans-Willem: I heard that's aurynn's branch has working prepare statements now [23:03] creationix: those should be safe [23:04] tmpvar has joined the channel [23:04] Frans-Willem: creationix: Also, sql_escape only escaped one ' character, because it was using str.replace [23:04] creationix: hah, that's pretty bad [23:04] aurynn: It will once I commit [23:04] tsyd has joined the channel [23:04] aurynn: and sql_escape is a terrible idea. [23:04] creationix: like I said, I wrote postgres-js a LONG time ago [23:04] rwaldron has joined the channel [23:05] aurynn: Nothing wrong with that :) [23:05] aurynn: It's why it's OSS: So the rest of us can help [23:05] mscdex: a long time ago in node time is not that long lol [23:06] maushu: dinossaur age [23:06] creationix: mscdex: it was about a year ago [23:06] mscdex: maushu.com/birthday_lolcat.jpg [23:06] creationix: which is ages in node time [23:06] maushu: ... [23:06] mscdex: :-D [23:07] creationix: and that was like 5 jobs ago for me ;) [23:07] Frans-Willem: aurynn: How is sql_escape a terrible idea ? [23:07] mscdex: i miss the original pizza compiler [23:07] aurynn: Frans-Willem, it's an injection attack waiting to happen [23:07] lachlanhardy has joined the channel [23:07] mscdex: it had such neat terminology for everything [23:07] Frans-Willem: aurynn: It's only used in the merge function of the sql lib, not even exported. [23:08] mscdex: like 'toppings' for classes/modules [23:08] aurynn: Frans-Willem, and it was used for any query that took parameters. [23:08] tjholowaychuk: ACTION wants lolcode impl for node [23:08] aurynn: lolnode [23:08] maushu: mscdex, http://maushu.com/birthday_lolcat.jpg [23:09] mscdex: ! [23:09] creationix: mikeal: is the couch version in ubuntu 10.04 safe [23:09] Frans-Willem: aurynn: That's the point right, escape strings before putting them into a query? sql_escape is fine, as long as you don't expect the user to manually use it, because in that case they'll forget and you get attack vectors :) [23:09] creationix: mikeal: or should I use the one from couch.io/get ? [23:09] aurynn: Frans-Willem, As you demonstrated, it only caught one ' [23:09] _announcer: Twitter: "@jamesgolick oh yah, no traceback scales like a node.js traceback!" -- Ted Nyman. http://twitter.com/tnm8/status/22039243511 [23:09] aurynn: It's an injection attack waiting to happen. [23:09] _announcer: Twitter: "@ @ Cramforce janl LNCE - Linux Node.js CouchDB ECMAScript ... pronounced "Lance"?" [vi] -- Daniel Shaw. http://twitter.com/dshaw/status/22039249834 [23:10] aurynn: Frans-Willem, the correct method is to use postgres' native BIND message, and let it handle correct escaping [23:10] Frans-Willem: Aaaah, ok [23:10] mscdex: huhu @ http://github.com/karthick18/inception [23:10] Frans-Willem: I wasn't aware that Postgres had something like that, figured if you couldn't use sql_escape, what *should* you be using :p [23:11] aurynn: It does, but it's an implementation detail in the driver. I made postgres.js speak it.. badly :) [23:11] Frans-Willem: I wonder where my current bottleneck is, would it be my network connection, node, or postgres ? [23:11] Frans-Willem: aurynn: Did you also change the parsing bit in postgres-js? e.g. take out those horrible Buffer.prototype.toReader and Buffer.prototype.toWriter things ? [23:11] aurynn: No [23:11] Frans-Willem: aurynn: We should work on merging our forks some time, mine mainly takes care of that [23:11] aurynn: I mostly left that part alone [23:12] tg has joined the channel [23:15] Alex-SF has joined the channel [23:15] d0k has joined the channel [23:15] tpryme has joined the channel [23:18] JimRoepcke has joined the channel [23:18] visnup has joined the channel [23:18] junkee[] has joined the channel [23:18] brianleroux has joined the channel [23:18] junkee[]: hi guys [23:18] _announcer: Twitter: "Rest-mongo... #MongoDB mapping tool for node.js http://j.mp/cqsQG6 Even if Node.js is cool, do we really need more mapping tools?" -- Alex Popescu. http://twitter.com/al3xandru/status/22039891090 [23:20] jelveh has joined the channel [23:20] AAA_awright has joined the channel [23:21] paul__ has joined the channel [23:22] fod has joined the channel [23:23] Blackguard has joined the channel [23:29] Dmitry1 has joined the channel [23:30] lachlanhardy has joined the channel [23:32] Lerchmo has joined the channel [23:32] _announcer: Twitter: "@luckythetourist I must confess to being madly in love w/ Node.js and Joose http://joose.it/ ; latter works on both sides of an app, try it!" -- Michael Bradley. http://twitter.com/michaelsbradley/status/22040851679 [23:33] zemanel has joined the channel [23:34] tmpvar has joined the channel [23:35] malkomalko has joined the channel [23:39] bmavity has joined the channel [23:42] sh1mmer: I have node running as an upstart job [23:42] sh1mmer: and it seems to be crashing semi-frequently [23:42] sh1mmer: but /var/log/node.log only have stdout stuff [23:43] admc has joined the channel [23:43] sh1mmer: any ideas? [23:44] TooTallNate: 2>&1 [23:46] TangoIII has joined the channel [23:47] _announcer: Twitter: "@basus If you're not into Java, Node (http://nodejs.org) is a good alternative (it's based on V8 and written in C++)." -- Kit Goncharov. http://twitter.com/kitgoncharov/status/22041851771 [23:47] _announcer: Twitter: "Interesting Javascript chat client http://ajaxim.com/ #nodejs #javascript #im Havent tried it yet though." -- Ola. http://twitter.com/olind/status/22041873030 [23:48] _announcer: Twitter: "I should have put node.js before cold beer." -- Jason McLeod. http://twitter.com/jasonmcleod/status/22041922539 [23:48] JimBastard has joined the channel [23:48] JimBastard: i think tmpvar is killing my macbook [23:49] JimBastard: :-( [23:49] _announcer: Twitter: "Time to watch: # # PeepCode node.js" [pt] -- Alberto Leal. http://twitter.com/albertoleal/status/22042013583 [23:52] ben_alman has joined the channel [23:54] tjholowaychuk: whats up with this new(Foobar)('baz') crap [23:54] tjholowaychuk: why put parens around the constructor [23:55] _announcer: Twitter: "@kitgoncharov No problem. Thanks a lot. I'm just playing with some ideas so I'll go with Node for now. Want to get used to JS." -- Shrutarshi Basu. http://twitter.com/basus/status/22042421952 [23:56] malkomalko: heh [23:56] malkomalko: jade question tjholowaychuk [23:57] tjholowaychuk: malkomalko: whats up [23:57] malkomalko: is it possible to have your tags (attributes='values') on multi lines? [23:57] tjholowaychuk: nope not currently [23:57] malkomalko: some times if I have some logic in there to display some ids or something it becomes quite large [23:58] malkomalko: and I hate going over 80 chars [23:58] malkomalko: :) [23:58] tjholowaychuk: dealing with undefineds is a bit annoying right now [23:58] malkomalko: yup [23:58] tjholowaychuk: if you are doing the whole typeof foo === 'undefined' type of deal [23:58] tjholowaychuk: for now you can also do - var fooExists = typeof foo !== 'undefined' [23:58] malkomalko: yah sometimes I do that [23:58] tjholowaychuk: but that really sucks [23:58] tjholowaychuk: dont have a good answer for you right now unfortunately [23:59] malkomalko: some variation, it blows [23:59] malkomalko: no problem [23:59] malkomalko: I'll put on my thinking hat and see what I can come up with [23:59] tjholowaychuk: i could probably hack something together but it would be a very big hack lol [23:59] tjholowaychuk: ideally something like (foo: bar || 'baz') [23:59] tjholowaychuk: without this undefined crap