[00:00] Tobsn: http://www.google.com/recaptcha/api/image?c=03AHJ_VutR1KTRtQHaHoUadnbFJe5YE1JFwUFDKABf1LF_oP81inzE-QTeue3MQ45g5tB58jtGSTokVSrm2Um4Z-wu6cMXgwx5WlofnFzMRgpQMEZDTtlOZU7qgbZfcCrs_68TOqI7PxfnNJ9-lzgLIvKWFHArJuEyXA [00:00] mjr__: kschzt: I guess I mean something different: how do you find out about these various twitter events? [00:00] Tobsn: besides that the captcha word is completely fucked up... look where recaptcha is now hosted [00:00] kschzt: mjr by using Akka :) [00:00] kschzt: mjr, http://akkasource.org/ in combo with Node, amazing [00:01] WALoeIII has joined the channel [00:02] kschzt: you really should go see jboner talk if you are in SF [00:02] kschzt: trying to find the time. [00:02] mjr__: I'm in SF, but busy tomorrow night. [00:02] creationix: what's a fast way to sum in js [00:02] derencius has joined the channel [00:02] creationix: fold or something? [00:02] creationix: or just loop and increment [00:03] Tobsn: an array or various string names? [00:03] mjr__: Oh man, somebody else is competing for mjr with just one underscore. [00:03] kschzt: welp, @jboner will have the time I guess :) I would say absolutely unmissable. [00:04] creationix: badaxx_: http://refactormycode.com/codes/1420-node-js-calculating-total-filesize-of-3-files [00:04] creationix: you can do it without step too, but in most projects you'd already step for more complicated things [00:04] rpmcb has joined the channel [00:05] creationix: badaxx_: and my version doesn't let errors slip [00:06] creationix: badaxx_: also your version does the 6 checks in serial, my version does three parallel stat calls. will be much faster [00:06] badaxx_: creationix: awesome, thanks :) [00:07] creationix: badaxx_: no problem [00:07] creationix: badaxx_: btw, that refactormycode site it cool [00:07] creationix: mind if I tweet this page? [00:07] badaxx_: creationix: sure, feel free [00:08] _announcer: Twitter: "yeti for nodejs looks a lot like the old ruby runner I had for JSpec, except YUI Test is insanely verbose" -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/22131564052 [00:09] _announcer: Twitter: "Someone asked for #nodejs help using a cool site that makes refactoring code fun. http://bit.ly/cxMjfa (refactormycode.com)" -- Tim Caswell. http://twitter.com/creationix/status/22131620738 [00:10] tekky has joined the channel [00:15] _announcer: Twitter: "Got my node.js knockout shirt in the mail today. And yes, my wife was jealous." -- darrencrawford. http://twitter.com/darrencrawford/status/22132086033 [00:17] tsyd: where can I get node.js shirts? [00:17] badaxx_: creationix: where does "process.ENOENT" come from? [00:17] creationix: badaxx_: it's a node internal thing [00:17] creationix: basically node exceptions that are caused by a file being missing have a errno of process.ENOENT [00:18] creationix: that way you can respond with a size of 0 for missing files, but not hide true errors [00:18] badaxx_: okay cool thanks [00:18] creationix: ENOENT means Error No Entity [00:18] creationix: or something like that [00:21] chrischris has joined the channel [00:24] aheckmann has joined the channel [00:24] mostlygeek_ has joined the channel [00:25] cardona507 has joined the channel [00:25] badaxx_: creationix: works fine, thanks alot [00:25] creationix: badaxx_: awesome [00:25] creationix: I hadn't tested the code, so I was worried there was a typo [00:26] badaxx_: or wait... [00:26] jashkenas has joined the channel [00:26] badaxx_: the combine function has to be called combine right? or can it also be an anonymous function? [00:29] badaxx_: creationix: ping [00:29] bpot has joined the channel [00:33] creationix: badaxx_: the names of the steps can be whatever you want [00:33] creationix: or you can leave them unnamed [00:33] EyePulp has joined the channel [00:33] creationix: they are local either way [00:33] creationix: I just name them to document my code and improve stack traces [00:34] creationix: Step.fn does some magic on top of plain Step [00:35] creationix: it injects the parameters to the first step and callback IS the last step [00:35] stepheneb has joined the channel [00:37] badaxx_: okay but the callback is not called somehow [00:37] ako has joined the channel [00:38] amerine has joined the channel [00:39] creationix: badaxx_: really? [00:39] badaxx_: creationix: yep... [00:41] creationix: badaxx_: ahh, I had an error in my code [00:41] badaxx_: creationix: it's not even calling the first step [00:41] creationix: line 23, "this" should be "group()" [00:41] chrischris has joined the channel [00:42] sechrist: is there a drizzle driver for node yet? [00:42] creationix: badaxx_: I posted my working, tested code [00:42] creationix: but it's moredated [00:43] creationix: *moderated [00:43] kschzt: well @jboner is @twitter tomorrow, unmissable if you are in SF. [00:45] _announcer: Twitter: "@davidwalshblog Maybe we'll see some Node.js tutorials!" -- Willson. http://twitter.com/modfox/status/22134118161 [00:47] badaxx_: creationix: ok seems to be a bug in the coffeescript parser [00:47] mscdex: ACTION shakes a fist at coffeescript [00:47] rauchg_: ACTION shakes a fist at async ssl [00:48] jashkenas: ACTION shakes a fist at mscdex [00:48] jashkenas: badaxx_: what's the problem? [00:48] JimBastard has joined the channel [00:49] evilhackerdude: ACTION shakes a fist at the guy who invented shaking fists [00:49] badaxx_: jashkenas: http://pastie.org/1116756 [00:50] SubStack: ACTION invents a way to shake fists asynchronously [00:50] badaxx_: why does it push the result of the function into an array? [00:50] badaxx_: ah [00:50] creationix: badaxx_: remember to change "this" for "group()" [00:50] jashkenas: badaxx_: because you're "using" the return value ... it's the last thing that happens in the function. Return the value you'd prefer to get instead ... "true" or "null", as appropriate. [00:51] evilhackerdude: or "laser" [00:51] badaxx_: jashkenas: ah I see [00:51] creationix: don't return from step functions [00:51] benburkert has joined the channel [00:51] creationix: it's bad [00:51] evilhackerdude: i bought a purple laser unicorn tshirt for my jsconf.eu talk [00:51] creationix: well, don't return values [00:51] creationix: return; or return undefined; [00:52] evilhackerdude: jashkenas: are you going to be there? [00:52] jashkenas: creationix: what happens if you return "null"? [00:52] creationix: if you return it's treated as the callback's value [00:52] jashkenas: evilhackerdude: be where? [00:52] creationix: I think null is considered a value [00:52] mattly has joined the channel [00:52] jashkenas: oh, sorry, jsconf.eu, nope. [00:52] badaxx_: yea I'm returning indefined right no [00:52] badaxx_: *undefined [00:53] jashkenas: badaxx_: want to gist your entire bit of code? [00:53] badaxx_: jashkenas: give me a second [00:55] JimBastard: hey whats up jashkenas [00:55] jashkenas: yo. [00:55] JimBastard: you gonna come around for node knockout this weekend? [00:55] JimBastard: we got space over at tipping point all weekend [00:56] jashkenas: oh, right, you're hosting. I kinda hafta move this weekend .... but what are the hours going to be? [00:56] JimBastard: few teams coming [00:56] jashkenas: Just Fri night through Sunday? [00:56] JimBastard: ill post again on the list, but sat morning sunday night [00:58] dnolen has joined the channel [00:59] overra has joined the channel [01:00] _announcer: Twitter: "Riding a very hot caltrain to SF for the @SFWebPerf meetup - featuring @sh1mmer on Node.js and DNS stuff." -- Buddy Brewer. http://twitter.com/bbrewer/status/22135180706 [01:00] lachlanhardy has joined the channel [01:03] _announcer: Twitter: "honing my rusty node.js skills before @node_knockout this weekend!" -- Bobby Potter. http://twitter.com/bpot/status/22135363112 [01:05] mscdex: we have asynchronous fist shaking technology. WE CAN REBUILD HIM [01:05] samsonjs has joined the channel [01:05] JimRoepcke_ has joined the channel [01:05] jakehow has joined the channel [01:06] _announcer: Twitter: "Yahoos yeti js testing suite runs using node.js that's awesome!" -- Benjamin Sternthal. http://twitter.com/bensternthal/status/22135572587 [01:08] sh1mmer has joined the channel [01:08] _announcer: Twitter: "Last day on Mallorca: Sitting on the patio with @sippndipp and @rattazong, coding JavaScript only (iOS web apps and node.js streaming stuff)" -- Stephan Seidt. http://twitter.com/evilhackerdude/status/22135734475 [01:08] badaxx_: creationix: got it running now, but the callback only gets an array with one filesize [01:09] badaxx_: *the combine function, not the callback [01:09] stagas_ has joined the channel [01:10] creationix: works for me, what's your code look like? [01:10] badaxx_: creationix: is coffeescript code okay for you or do you need the compiled code? [01:10] creationix: I know coffeescript [01:10] creationix: I wrote the first coffee in coffee compiler [01:11] creationix: but not the current one [01:11] ironfroggy_ has joined the channel [01:11] jashkenas: badaxx_: we're still using Tim's little Jison DSL in the current grammar. [01:11] badaxx_: creationix: https://gist.github.com/3816e89367edb10c3fc9 [01:11] creationix: jashkenas: yay, my code lives on! [01:12] creationix: just wondering, but is it possible to inline the functions in the Step.fn call? [01:12] badaxx_: sure, I named them for a cleaner code [01:12] creationix: badaxx_: and you still have an error, line 4 needs "group()" not "this" [01:13] badaxx_: creationix: I had an error when I removed the this. [01:13] creationix: trust me, "this" is wrong [01:13] ironfroggy_: anyone using Mustache.js (and is there a better channel for those questions?) I have a Higher Order Section where the callback context is, for some reason, a Date object instead of my view. [01:13] badaxx_: creationix: https://gist.github.com/d9fc365f9b4ed18d8d07 [01:14] creationix: are you calling group() or just passing in group? [01:14] creationix: you need to call group() it generates the callback [01:15] badaxx_: well the line is group = group(), as you pasted [01:15] creationix: badaxx_: no that's something else [01:15] creationix: this.group() generates a group [01:15] creationix: this.group()() generates a callback [01:16] badaxx_: ah but you wrote group()? [01:16] creationix: I meant to, but my initial version has "this" [01:16] badaxx_: so its group = group()()? [01:16] creationix: no [01:16] creationix: you need a callback for each iteration of the loop [01:16] badaxx_: okay now I'm confused.. [01:16] visnup: teams and repos created at github: https://github.com/organizations/nko [01:16] creationix: outside the loop you need to reserve a slot in the next step and make a group [01:16] creationix: var group = this.group(); [01:17] visnup: (of course, don't push anything) [01:17] creationix: then inside the loop for each callback you use group() which generates the callback [01:17] jashkenas: badaxx_: out of curiousity, what are you trying to accomplish in the first place with this? [01:17] badaxx_: jashkenas: I'm doing partial downloads (3 files) and I want to get the current total filesize of those three files [01:17] creationix: jashkenas: I should make a version of step that plays nicer with coffee syntax [01:18] creationix: jashkenas: I don't like it that people have to put undefined at the end of each step [01:19] jashkenas: creationix: when do you want to return a value? [01:19] creationix: badaxx_: though on the combine step, you want to return total [01:19] jashkenas: And if you do, where does it go? [01:19] creationix: if you return it gets passed to the callback as the second arg [01:19] creationix: and if there is an exception, it's caught and passed to the first arg [01:20] jashkenas: ah. [01:20] badaxx_: creationix: so... in the startChecks function I do group = group() and in the for loop I call the created group via group() [01:20] badaxx_: ? [01:20] creationix: badaxx_: correct, change "this" for "group()" on line 4 [01:20] creationix: "this" with "group()" rather [01:20] TooTallNate has joined the channel [01:23] badaxx_: so group = this.group()....for....group() [01:24] jashkenas: badaxx_: isn't this a good bit simpler? http://gist.github.com/550613 [01:25] Ysinopsis has joined the channel [01:25] jashkenas: sorry, updated the gist. [01:26] dannycoates has joined the channel [01:27] badaxx_: jashkenas: and is has to be #{filename} instead of filename [01:27] jashkenas: naturally. updated. [01:28] creationix: jashkenas: yep, Step is overkill for this single operation [01:28] sechrist: require() isn't hitting it [01:28] creationix: but it's super handy in a large project [01:28] sechrist: err I meant to say this first: /usr/local/lib/node/.npm/ is that normal for npm to install into on a mac? O.o [01:29] badaxx_: jashkenas: http://gist.github.com/550617 [01:29] isaacs: sechrist: yes, npm creates a ".npm" folder in the root which is where it keeps its goodies [01:29] badaxx_: that's doing it. awesome man, thanks [01:29] jashkenas: creationix: got any projects of your that demonstrate using it in that fashion? [01:29] creationix: jashkenas: since you're all in a closure, there isn't even a need for the sizes array [01:29] jashkenas: (on github)? [01:29] jashkenas: badaxx_: glad to hear it. [01:29] sechrist: isaacs: I'm supposed to be able to npm install then require it as is right? without any symlinks? [01:29] sechrist: seems like I could before [01:30] creationix: jashkenas: http://github.com/creationix/wheat/blob/master/lib/wheat/data.js#L188-211 [01:30] isaacs: sechrist: what is it you're trying to do? [01:30] creationix: yeah, I use it all over [01:30] sechrist: use a module installed by npm [01:30] jashkenas: creationix: thanks. [01:30] badaxx_: jashkenas: as creationix, it also works without the array. updated the gist [01:30] isaacs: sechrist: which module? [01:30] sechrist: mysql [01:30] creationix: badaxx_: make sure to not ignore the err parameter [01:31] creationix: if (err) return callback(err) [01:31] sechrist: I'm not sure any work, this is the first i've tried to install on my mac [01:31] mjr_ has joined the channel [01:31] creationix: or if (err) throw err [01:31] sechrist: it's a path problem i'm sure [01:31] isaacs: sechrist: works for me? npm install mysql node> require("mysql") (bunch of stuff) [01:31] isaacs: sechrist: what's npm config ls show you? [01:31] sechrist: yeah require('mysql') fails for me [01:32] creationix: jashkenas: what does ^size mean? [01:32] sechrist: isaacs: http://pastie.org/1116838 [01:32] _announcer: Twitter: "How PHP node.js full or in Japan to spread. That is the question" [ja] -- こば@精神の安定が迷子. http://twitter.com/KOBA789/status/22137439055 [01:32] isaacs: sechrist: your version of npm is very far out of date. you should update it. [01:32] jashkenas: creationix: dunno ... ask badaxx_ ... [01:32] sechrist: oh hmm [01:33] steadicat has joined the channel [01:33] isaacs: sechrist: "npm install npm" might work, but you can also download the code and do "make" [01:33] Lerchmo has joined the channel [01:33] sechrist: npm install npm did nothing [01:33] badaxx_: jashkenas: creationix: typo [01:33] sechrist: k will do [01:33] creationix: badaxx_: also your callback in getTotal should reserve the first slot in the callback for errors [01:33] creationix: it's a very good pattern to get into [01:33] creationix: makes all sorts of code work together [01:33] _announcer: Twitter: "I @ KOBA789 node.js runtime environment?" [ja] -- _X_y_z_/X(エクス). http://twitter.com/x_h_/status/22137510345 [01:33] creationix: and manually passing errors is the only way to propigate errors in async node [01:34] sechrist: ah there. I guess I should take notice of npm's version from time to time [01:35] creationix: woot, my couch driver can do 15,000 inserts/second (write combining and connection pooling) [01:35] badaxx_: okay, cool :) thanks creationix and jashkenas [01:35] _announcer: Twitter: "I think I'm gonna write a node.js app to monitor my node.js server. Don't really like monit's web interface." -- Chris Jaure. http://twitter.com/chrisjaure/status/22137624296 [01:35] SubStack: is there a builtin way to loop over the buffered contents of a file? [01:35] _announcer: Twitter: "@ X_h_ I need. So now, node.js thinking dedicated hosting" [ja] -- こば@精神の安定が迷子. http://twitter.com/KOBA789/status/22137639999 [01:35] SubStack: before I write this with fs.open and fs.read [01:35] ryah: you dawg, i heard you like node [01:35] ryah: s/u// [01:35] creationix: SubStack: fs.createReadStream [01:35] kodisha has joined the channel [01:36] SubStack: aha! [01:36] cardona507 has joined the channel [01:36] _announcer: Twitter: "In Jail in FreeBSD or secure it in partnership node.js run if you ask? How would it be. Well, that not only try" [ja] -- こば@精神の安定が迷子. http://twitter.com/KOBA789/status/22137705249 [01:36] SubStack: hiding below fs.Stats on the api page [01:37] creationix: yeah, the api page needs some serious help for finding stuff [01:37] creationix: the headers blend in too well [01:37] creationix: and not everything is in the index on the left [01:39] samsonjs has joined the channel [01:41] jashkenas: creationix: what's the advantage? http://gist.github.com/550618 [01:41] jashkenas: (just curious ... not trying to be combative.) [01:42] creationix: jashkenas: a few things [01:42] creationix: it wraps each step in a try..catch for you [01:42] creationix: it accepts return values or you can call the callback [01:42] creationix: and the utility counters like this.parallel() and this.group() are handy [01:42] creationix: you don't have to make your own counters [01:42] matt_c has joined the channel [01:42] tango3 has joined the channel [01:42] jashkenas: gotcha. [01:43] TooTallNate: I should probably be using Step in parts of nTunes [01:43] creationix: but for simple things, especially if you don't care about exceptions, it's often overkill [01:43] jashkenas: creationix: do you think it needs to be built-in to Node? [01:43] creationix: no [01:44] creationix: I like node having just callbacks [01:44] creationix: do you think node should bundle something like Step? [01:44] jashkenas: no ... but I wouldn't want to be wrapping every function in a try/catch, so I'm not the target audience. [01:47] creationix: jashkenas: you trust yourself to not throw exceptions? [01:47] jashkenas: ha. no. But I don't trust myself to catch exceptions that I don't know I'm going to throw. [01:47] jashkenas: And I don't want to hide them. [01:48] creationix: I see [01:48] creationix: just make sure to never ignore the err parameter and you'll be safe [01:49] jashkenas: ryah: did anything ever come of your plans to have ignored "err" callback exceptions throw out the top level? [01:50] creationix: jashkenas: I don't think it's possible for callbacks, but we did do it for event emitters [01:51] jashkenas: ah, then perhaps the remaining "err" callbacks should be updated to become .on('error') event emitters... [01:51] creationix: had node gone the route of function (a, b)(callback, errback), then maybe [01:51] creationix: event emitters are too heavy weight for simple callbacks [01:52] creationix: though I thought continuables were a good compromise [01:52] JimRoepcke has joined the channel [01:52] JimBastard: <3 event emitters [01:53] JimBastard: i tend to make everything a namespaced event, scales fairly well for somewhat complex event chains [01:54] creationix: yeah, events are pretty handy when done right [01:54] jashkenas: creationix: one would think that some sort of "lazy" event emitter wouldn't be too expensive for error callbacks... only create the object if a handler is attached. [01:54] creationix: but do you really want a namespaced event for opening a file [01:54] creationix: jashkenas: well, the event emitter itself is an object [01:54] jashkenas: creationix: no, but 90% of the time you don't want to handle the exception, you want the program to error out. [01:55] jashkenas: or at least it uncaughtException. [01:55] jashkenas: *hit [01:55] creationix: right, node went the route of minimal, but less features [01:56] creationix: though in a server 99% of the time you want to handle the error and not error out [01:56] creationix: an uncaught exception will bring down the whole server with it's 100k connections [01:56] jashkenas: yes, but often still at the top level. servers always have uncaughtException handled. [01:57] creationix: even with the uncaughtException event you're still screwed [01:57] jashkenas: log, finish the request with a 500, for everything you're not expecting. [01:57] creationix: you can't close the connection or render a 500 page [01:57] benburkert has joined the channel [01:57] creationix: how would you know what requests to 500 for? [01:58] jashkenas: you have to pass it along with the exception, or stash it somewhere accessible. [01:59] creationix: that only works if you generate the exception [01:59] creationix: that's often not the case [01:59] creationix: and the connections are concurrent [01:59] creationix: so you can't just put them in some global place [01:59] creationix: I would LOVE a solution to this problem [01:59] creationix: if you know any secrets, please share [02:00] aurynn: I thought there was a way to catch all exceptions before they propagated out? [02:00] creationix: aurynn: you can keep an exception from crashing the process, but that's about it [02:00] creationix: once you've caught it, you've lost all it's scope and closure [02:00] aurynn: ah, hm [02:00] jashkenas: creationix: no secrets, just mulling over how I'd like it to work ... we've definitely discussed this topic many times before here. [02:01] aurynn: I was reading a neat article today that if you throw a function, you keep its scope [02:01] aurynn: (in node) [02:01] aurynn: They used it to implement continuations [02:02] creationix: yep [02:02] creationix: if you can always throw the exception you're in control [02:02] creationix: it's when other libraries or js itself throws the exception that it's tricky [02:03] creationix: aurynn: that is a neat article though. I was amazed how fast it actually was. [02:03] aurynn: yeah, it's a really neat idea [02:03] aurynn: I was really stunned that you could pass a function to .replace() [02:03] creationix: functions are the key to understanding JS [02:03] creationix: the language revolves around them [02:04] aurynn: it was, really? [02:04] satori_: function calls are very cheap in js compared to say python [02:04] creationix: yeah, but try..throw..catch for casual control flow was a bit faster than I had expected [02:04] creationix: usually languages don't optimize that much because it's the "Exceptional" case [02:04] admc_ has joined the channel [02:04] _announcer: Twitter: "Liking the http://vowsjs.org/ framework for testing node.js code." -- Brian. http://twitter.com/briannoguchi/status/22140380835 [02:04] _announcer: Twitter: "On the way in preparation for PeepCode RubyKaigi Node.js of Screencast is excited to buy. http://bit.ly/d2T3Jb" [ja] -- Junya Ogura. http://twitter.com/junya/status/22140387125 [02:05] jashkenas: creationix: btw ... do you have an in-browser version of haml-js? [02:05] creationix: jashkenas: it runs in-browser [02:05] creationix: you just need to patch Object.keys and Array.prototype.forEach and friends [02:05] jashkenas: oh? so no single script? [02:05] creationix: or run in newer browsers [02:05] jashkenas: I guess that'll do. [02:05] creationix: I have a version running in sammy.js [02:05] creationix: as a plugin [02:06] _announcer: Twitter: "Are there any node.js guys in Nashville? A @node_knockout here would be cool." -- darrencrawford. http://twitter.com/darrencrawford/status/22140503555 [02:07] eisd has joined the channel [02:07] danielzilla has joined the channel [02:07] creationix: jashkenas: http://github.com/quirkey/sammy/blob/master/lib/plugins/sammy.haml.js [02:08] creationix: hmm, seems to depend on JSON [02:11] meso has joined the channel [02:11] mattikus has joined the channel [02:11] _announcer: Twitter: "http://egoing.net/1481 trend, gonggamdoeneungeul. Depending on tide Jose kkothinge node.js, kids all over the world neolryeotitda funny." [ko] -- Soonyong Lee. http://twitter.com/mineout/status/22140858542 [02:14] _announcer: Twitter: "Struggling with a bug in Node.js/V8. Process randomly enters a state where JSON.stringify output is always corrupted. Very hard to isolate." -- Jim Roepcke. http://twitter.com/JimRoepcke/status/22141042807 [02:19] jashkenas: creationix: what's wrong with this snippet of HAML-js? http://gist.github.com/550672 [02:19] jashkenas: I get a syntaxerror. [02:20] tpryme has joined the channel [02:20] creationix: jashkenas: not sure [02:20] jashkenas: ah, nevermind. I gotta make the newlines explicit in the JS, can't backslash-escape them. silly me. [02:20] creationix: that will do it [02:26] jashkenas: fyi, added it to the template test: http://jsperf.com/dom-vs-innerhtml-based-templating/3 [02:32] _announcer: Twitter: "What are the recent popular image of the system resources ○ pie, but it is good I do, until the end of another summer 週間無Ijan, I also have to matter, I am in the spread of node.js is the most important" [ja] -- こば@精神の安定が迷子. http://twitter.com/KOBA789/status/22142310898 [02:32] Dmitry has joined the channel [02:38] meso has joined the channel [02:45] badaxx_: now I installed node + coffeescript on my server and put the modules to /root/.node_libraries but node can't find them? [02:49] jashkenas has joined the channel [02:51] jimmybaker has joined the channel [02:52] badaxx_: whatever - fixed it. [02:52] rpmcb_ has joined the channel [02:52] shimondoodkin has joined the channel [02:53] rpmcb__ has joined the channel [02:54] DoNaLd` has joined the channel [02:54] rpmcb___ has joined the channel [02:55] shimondoodkin: what makes ruby or dejango a quick way to develop application? [02:55] rpmcb_ has joined the channel [02:59] keeto has joined the channel [03:00] grahamalot has joined the channel [03:00] mr_danie1 has joined the channel [03:01] _announcer: Twitter: "watching the peepcode (peepcast?) for node.js" -- Christopher Lee. http://twitter.com/christopherslee/status/22144373204 [03:02] lachlanhardy has joined the channel [03:04] _announcer: Twitter: "User groups began Node.js Japan - about his sensitivity http://htn.to/sPcgW7" [ja] -- ゆろよろ(オザキ トモヒト). http://twitter.com/yuroyoro/status/22144545630 [03:04] bradleymeck has joined the channel [03:04] creationix: jashkenas: yay, mine is the second fastest! [03:05] sh1mmer has joined the channel [03:05] creationix: I think tj's haml.js is faster than mine by a lot [03:05] jashkenas: and fastest in safari ... presumably because of the difference between array join and string concat... [03:05] creationix: true [03:05] jashkenas: creationix: I'll add it. [03:05] jashkenas: Hopefully safari's perf profile will start looking more like V8's. [03:06] creationix: you've seen Jade right [03:06] creationix: tj's latest one [03:06] jashkenas: yep. [03:06] jashkenas: does it work in the browser? [03:06] bradleymeck: mmm mmm compilation at runtime good [03:06] creationix: I'm pretty sure jade works in the browser [03:06] bradleymeck: it should [03:07] jashkenas: mm nope. the very first line is exports.version = '0.3.0'; [03:07] jashkenas: and then it goes on to require 'sys' and 'fs'. [03:08] bradleymeck: we can strip those out and patch it up [03:08] _announcer: Twitter: "# Asl v0.1.27 released. log levels, Solaris support, multiple-module-shims, man page installs, oh my! # Nodejs" [pl] -- Ⓘⓢⓐⓐⓒ. http://twitter.com/izs/status/22144802117 [03:08] bradleymeck: ACTION goes off to do just that [03:08] jashkenas: bradleymeck: let me know when you do. [03:08] isaacs: asl? [03:08] isaacs: it thinks i'm polish? [03:08] isaacs: wut? [03:08] isaacs: _announcer: you got some splainin to do! [03:09] isaacs: (that's about npm v0.1.27, not asl ^) [03:09] jashkenas: npm is a polish word? [03:09] isaacs: jashkenas: not sure, maybe? [03:09] jashkenas: bizarre: http://translate.google.com/#auto|en|npm [03:09] jashkenas: like asl means anything... [03:10] isaacs: jashkenas: asl is http://en.wikipedia.org/wiki/Asl [03:10] bradleymeck: wow, thats an easy fix... [03:10] shimondoodkin: anyboday has expirience developing apps quickly? maybe with rubi on rails or dejango ... ? [03:11] shimondoodkin: does.. [03:11] jashkenas: isaacs: you're a defender of human rights over there... http://www.brpo.gov.pl/index.php?md=7747&s=3 [03:12] isaacs: what's "npm" in poland, then? [03:12] jashkenas: National Preventive Mechanism? [03:12] jashkenas: http://www.antifolterstelle.de/uploads/media/EuropeanNPMProject.pdf [03:12] jashkenas: the more you know. [03:13] isaacs: well, human rights are nice and all, but who will protect them from dependency hell? [03:14] badaxx_: Ok, modules work now. [03:14] badaxx_: Now I have a problem with node-router or node in general. I'm letting the server listen to port 10002 on 127.0.0.1 inside a vserver [03:15] badaxx_: the vserver has the ip 10.0.0.1. when I'm on the server I can telnet to 127.0.0.1:10002 but when I'm outside the vserver I ca't telnet 10.0.0.1:10002 [03:16] bradleymeck: jashkenas, some simple testing. adding "var exports = exports || window.jade = {};var require = require || function(){}" to the top of jade seems fine to me. all the sys/require is for boostrapping and debug [03:16] satori_: does your vserver have a sw firewall? [03:17] jashkenas: bradleymeck: can you push it, and send me the link? [03:17] isaacs: oh, also in this version, bundling and rebuilding [03:18] jashkenas: isaacs: bundling? a-la bundler? [03:18] isaacs: jashkenas: vaguely inspired by it, yeah [03:18] isaacs: jashkenas: npm help bundle [03:18] jashkenas: isaacs: what's the use case, if you already do correct dependency resolution? [03:18] bradleymeck: i dont wanna fork it just for that... just going to throw up a ticket and the patch to tj [03:18] isaacs: jashkenas: it's experimental, so if it doesn't behave the way you want it to, then lmk. [03:19] isaacs: jashkenas: well, there are times when you still want to put everything into a single contained folder. [03:19] jashkenas: bradleymeck: ah, alright ... I just wanted to use it in this: http://jsperf.com/dom-vs-innerhtml-based-templating/3 [03:19] isaacs: jashkenas: so you can, say, compile the whole shebang into a single binary, or make it part of a mac .app file or something [03:19] jashkenas: isaacs: gotcha. nice work. [03:19] bradleymeck: i can throw jade.js into a gist? [03:19] isaacs: jashkenas: npm bundle will install your deps into that folder, and set it up so you can do require(/dep) [03:20] jashkenas: bradleymeck: that'll work. [03:20] badaxx_: satori_: just iptables but they seem to be ok [03:20] isaacs: jashkenas: and any dependencies of the dependencies (etc) will be resolved properly [03:20] badaxx_: satori_: my old socketserver was running on the same port and I was able to access it [03:20] isaacs: jashkenas: it's basically npm install, but in a target folder. [03:20] jashkenas: isaacs: neat. you should get the heroku guys to use that for their Node deploys... [03:20] isaacs: also, loglevels! omg the logs are so much more gorgeous now! [03:21] isaacs: you can actually do "--loglevel silent" to make it shut the hell up [03:21] isaacs: or --loglevel silly to show a SILLY amount of stuff [03:24] siculars has joined the channel [03:25] russell_h: http://gist.github.com/550726 <-- is there something wrong with that code? [03:26] russell_h: because if I hit it with multiple http requests, each one blocks until the prior one has been responded to [03:27] creationix has joined the channel [03:27] bradleymeck: jashkenas http://gist.github.com/550723 [03:27] jashkenas: thanks much. [03:27] _announcer: Twitter: "One day, node.js will be known as the framework for both js AND c++ developers" -- Paul Nakata. http://twitter.com/icey/status/22146133727 [03:27] creationix: isaacs: ok, how do I get this npm no solaris? [03:28] isaacs: creationix: configs!! [03:28] isaacs: creationix: you need to tell it where a gnu-compatible "tar" is [03:28] isaacs: that's the big thing [03:28] creationix: I see [03:28] isaacs: you can set the "TAR" env, or set npm's "tar" config to /usr/gnu/bin/tar or gtar [03:28] bradleymeck: russel_h that seems fine [03:29] isaacs: TAR=gtar node cli.js config set tar gtar [03:29] isaacs: creationix: ^ and then do make [03:29] bradleymeck: did the joyent info get posted? [03:29] isaacs: creationix: *also* - you should set the binroot, root, and manroot paths to something in your $HOME if you don't want it to be in /usr [03:29] isaacs: (or relative to node's exec. you know how that works, you helped come up with it) [03:29] russell_h: bradleymeck: yeah, the thing is it definitely can only handle one request at a time [03:30] russell_h: unless there's something wrong with node on my computer.. [03:30] bradleymeck: nope, how are you sending the requests? [03:31] cloudhead has joined the channel [03:31] russell_h: bradleymeck: http://gist.github.com/550726 [03:31] russell_h: added the client code [03:32] creationix: russell_h: I noticed that the other day [03:32] creationix: and started pooling server objects to get around it [03:32] bradleymeck: mmmm [03:32] bradleymeck: did something change? [03:32] creationix: is a single server object supposed to be able to have concurrent http requests? [03:32] creationix: I thought I used to [03:32] russell_h: ACTION too [03:33] bradleymeck: it did take a tong of requests on my machine, otherwise my ws would be toasted [03:33] russell_h: I'm going to send this to the mailing list [03:34] bradleymeck: im getting nervous w/ lack of joyent info for knockout [03:34] isaacs_mobile has joined the channel [03:36] jashkenas: creationix: bradleymeck: Even with Jade's caching turned on, it's still quite slow (second to Pure JS), and with caching off, it's the slowest... http://cl.ly/83d89d8efba92323e30d [03:36] creationix: good to know [03:36] creationix: must be the extensive error reporting [03:36] jashkenas: well, after the template compiles successfully once, you shouldn't need to error report, right? [03:37] creationix: jashkenas: so was haml.js faster than haml-js? [03:37] bradleymeck: jashkenas, the initial emplate spawn is enormous for jade [03:37] jashkenas: creationix: didn't try it because it wasn't browser compatible. [03:37] creationix: jashkenas: so is the one in the test haml-js or haml.js [03:37] creationix: it says haml.js [03:37] jashkenas: bradleymeck: is there a way to force that to pre-compile? you can look at the source of the test here: http://jsperf.com/dom-vs-innerhtml-based-templating/3 [03:38] _announcer: Twitter: "LakTEK – Real-time Collaborative Editing with Web Sockets, Node.js & Redis http://goo.gl/fb/RiZw5 #toread" -- Delicious Over 50. http://twitter.com/readelicious/status/22146802394 [03:38] jashkenas: creationix: it's yours. [03:38] jashkenas: is that the wrong name? [03:38] creationix: ok, mine is haml-js [03:39] jashkenas: fixed. [03:41] jashkenas: anyone else in here using a client-side templating library apart from Mustache, PureJS, Haml-JS, Jade, or Underscore(Resig micro) ? [03:41] bradleymeck: JUP here [03:42] jashkenas: bradleymeck: link? [03:42] Tim_Smart: jashkenas: Does EJS have a client version? [03:43] bradleymeck: jashkenas, looking at the jade code, running it with cache once should leave it compiled for fast reuse, so compile once then twice ? [03:43] jashkenas: bradleymeck: roger. will do. [03:44] bradleymeck: http://github.com/hij1nx/JUP [03:46] dgathright has joined the channel [03:46] bradleymeck: still slow, heh interesting [03:46] jashkenas: bradleymeck: sorry, the precompile step doesn't help at all: http://cl.ly/77d47bf91336a7298433 [03:46] Aria has joined the channel [03:48] benburkert has joined the channel [03:48] bradleymeck: yea, interesting [03:48] Aredridel has joined the channel [03:48] gerad: bradleymeck: it's coming, its coming! [03:48] mjr_ has joined the channel [03:49] gerad: :-) [03:49] bradleymeck: lol [03:50] bradleymeck: im just pressed for time in knockout for all the things i need to rip together [03:50] bradleymeck: ACTION goes to look at jade's internals more [03:51] jashkenas: bradleymeck: with JUP, you have to build the template every time, right? You can't interpolate a value into a given position in a template? [03:51] jashkenas: say I have ten nested divs, and I want to set the content of the innermost one, and render that as HTML with JUP. [03:51] gerad: bradleymeck: hahaha... deploy isn't going to be one of the things you'll need to worry about.:-) Ryan's working on the blog post now, it will be ready to go before the night is done! :-) [03:52] jashkenas: bradleymeck: nevermind. I didn't read enough of the readme. [03:52] bradleymeck: oh yea, we can optimize the crap out of jade [03:52] bradleymeck: ACTION hugs gerad and gives head scratch [03:52] overra has joined the channel [03:54] bradleymeck: i believe after a compile a good string based templating engine should take little more than string concat worth of time [03:54] dilvie has joined the channel [03:54] _announcer: Twitter: "Epic fail. Can't get #NodeJS and #Mongo to work together. Killing me." -- davidwalshblog. http://twitter.com/davidwalshblog/status/22147892800 [03:55] bradleymeck: noooooooooo dwalsh! [03:55] dilvie: what / where is node knockout? [03:56] visnup: dilvie: nodeknockout.com [03:56] bradleymeck: it is the essence of wetness it is the flower in the seed, it is... http://nodeknockout.com/ [03:56] gerad: dilvie: http://nodeknockout.com [03:56] gerad: dilvie: what bradleymeck said [03:57] jsilver has joined the channel [03:58] dilvie: I was under the impression that there were some Joyent peeps in Utah. I got excited for a sec. [03:59] dilvie: I just need to move. =) [03:59] dilvie: I miss all the cool parties. [04:00] MikhX_ has joined the channel [04:01] bradleymeck: mmmm, jade is doing a massive amount of pushes to an array, could compile those down to be a hard coded array [04:01] dilvie: I wish node.js had jsLint built into it. [04:01] bradleymeck: we have a CLI jslint [04:02] jashkenas: bradleymeck: I added JUP Templates to the bakeoff: http://cl.ly/5f5aab98359d18162f80 [04:02] bradleymeck: jslint doesnt like to be extended :/ [04:02] dilvie: bradley: I don't like the CLI output as much as the hosted version. The errors are more clear. [04:02] jashkenas: dilvie: have you tried the CLI JavaScriptLint? [04:02] bradleymeck: ^_~ even our cli version (not that rhino junk) [04:04] bradleymeck: f it jashkenas, you make me wanna rewrite things i dont have time for [04:05] jashkenas: bradleymeck: sorry, brother. just tryin' to keep it real. [04:05] bradleymeck: i know, i just crave speed, and lots of my crap is having to end up using Function if its a 1 time compile [04:07] badaxx has joined the channel [04:07] deepthawtz has joined the channel [04:07] joshbuddy has joined the channel [04:09] creationix: bradleymeck: Function is required for any template compiler that generates html [04:10] bradleymeck: yea, but i use it for other crud right now [04:11] bradleymeck: i have a rewrite of connect's router using it, combining some connect stuff etc [04:12] creationix: jashkenas: I wonder how jquery-haml + jsdom performs [04:12] creationix: probably not that good [04:13] jashkenas: if it's dom manipulations at the core of it, then yeah, I don't think you have to guess. [04:13] jashkenas: would that be benchable in the browser? [04:15] SubStack: is it possible to .apply with new? [04:15] jashkenas: SubStack: only if you fake the constructor function. [04:16] jashkenas: SubStack: the only reason I know anything about that is because I had to implement it for CoffeeScript ... for calling a constructor with a splat. [04:16] jashkenas: new Thing(args...) [04:17] bradleymeck: SubStack, yes but its slow [04:17] bradleymeck: and hacky [04:17] jashkenas: You create an empty constructor function, have it inherit the prototype from the real constructor, and then call: [04:17] badaxx: jashkenas: the filesize thing you gave me a few hours ago [04:17] SubStack: this only gets called at initialization [04:17] badaxx: jashkenas: its just giving me the filesize of one file times 3 [04:17] jashkenas: RealConstructor.apply(new fakeConstructor, args); [04:17] SubStack: aha, nifty [04:18] badaxx: https://gist.github.com/b31a15d85eed9524cf63 < output of the stat in getSize [04:18] jashkenas: SubStack: paste this "new Thing(args...)" into the "Try CoffeeScript" box on CoffeeScript.org if you'd like to see what we compile to. [04:18] mape: visnup: The tweet regarding you adding github repos, that means I should have a private repo now right? [04:19] visnup: yeah [04:19] jashkenas: badaxx: sounds like a shared variable. [04:19] jashkenas: badaxx: gist your current code? [04:19] visnup: mape: github.com/nko/rallarpojken [04:19] jashkenas: badaxx: and what's your coffeescript version, btw? [04:20] badaxx: jashkenas: the latest, 0.9.1 i guess [04:20] mape: visnup: That just redirects to my dashboard [04:20] creationix: SubStack: actually in node you can do better [04:20] visnup: mape: hm, let me double check the users on it [04:20] badaxx: jashkenas: https://gist.github.com/1bd92fd221927d997037 [04:21] creationix: new Foo(a,b) is like Foo.call(Object.create(Foo.prototype, {constructor: {value: Foo}}), a, b) [04:21] pfffffffft has joined the channel [04:21] visnup: mape: egh, empty. seems like the import had some bugs. did you provide us a github userid earlier? [04:21] SubStack: nice [04:21] davidwalsh: With regard to MongoDB and Node, I keep getting the following error: TypeError: Cannot call method 'find' of null [04:21] davidwalsh: My DB *appears* to be db.dw [04:21] davidwalsh: But may also be test.db.dw [04:22] pfffffffft has left the channel [04:22] davidwalsh: mongo.Db('dw',...) is the initial declaration [04:22] davidwalsh: with db.collection('db',......) as the rest [04:22] jashkenas: badaxx: and filename.0, filename.1, filename.2 are the correct files? [04:23] SubStack: creationix++ jashkena++ got a working version [04:23] davidwalsh: does that look like the correct code structure? [04:23] badaxx: jashkenas: jep, if I log the filename variable in getSIze I also get the right filenames [04:24] jashkenas: badaxx: try logging "size" in getSize as well. [04:24] badaxx: jashkenas: already tried that, it's 3 times the same size [04:24] davidwalsh: no matter what combination of db and collection, I'm continuously getting the collection.find is null issue [04:25] creationix: SubStack: for new? [04:25] badaxx: jashkenas: output: https://gist.github.com/d59eeb4c539d944558d7 [04:25] SubStack: creationix: yep with that example you pasted [04:25] creationix: SubStack: sure, you want apply or call? [04:25] _announcer: Twitter: ""Only the php, then the node.js" is the new "only the work, then the fun"" [de] -- yetzt. http://twitter.com/yetzt/status/22149786955 [04:25] jashkenas: badaxx: you got stat.size as well? that's pretty confusing... [04:26] SubStack: using apply so I can patch in some implicit parameters [04:27] badaxx: jashkenas: yeah [04:28] badaxx: jashkenas: the output I sent you is like console.log filename before fs.stat and console.log stat.size in the callback [04:28] bradleymeck: david are you opening the connection on a different event from when you are using .find? [04:29] creationix: SubStack: http://gist.github.com/550804 [04:29] creationix: something like that [04:29] davidwalsh: bradleymeck: no, same block [04:30] _announcer: Twitter: "I'm learning about node.js. I'm a smitten kitten." -- Leon Gersing. http://twitter.com/rubybuddha/status/22150035024 [04:30] _announcer: Twitter: "Sabasaidopuroguramingu enable JavaScript frameworks of "node.js 0.2.0" release http://bit.ly/9xmTqN [sourceforge.jp]" [ja] -- Takashi Akaki. http://twitter.com/akakit/status/22150039725 [04:30] bradleymeck: davidwalsh which mongodb driver you using? [04:30] davidwalsh: node-mongodb-native [04:30] jashkenas: badaxx: if stat.size is identical for different filenames... I really don't know what to say. [04:31] bradleymeck: i remember i had this problem, /me tries to dig up a diff [04:31] badaxx: jashkenas: lol, me either [04:31] jashkenas: I gotta crash, but I'll test it here on my files right quick. [04:31] badaxx: jashkenas: maybe I should try my first attempt? like a big tree with 3 callbacks? [04:31] davidwalsh: I'm also using a "custom" folder for housing the db; not just the /data/db [04:31] davidwalsh: mainly to keep track of where stuff is [04:31] mscdex: node.js rules! [04:32] bpot has joined the channel [04:32] dilvie: mscdex: I agree. [04:32] creationix: SubStack: updated with an example to make sure it works http://gist.github.com/550804 [04:32] bradleymeck: davidwalsh does the example code run? [04:33] jashkenas: badaxx: this reports three different file sizes for me: https://gist.github.com/c69e29059ccda85c34f9 [04:33] jashkenas: Does it do the same for you, if you replace my file array with three files of your own? [04:33] davidwalsh: bradleymeck: Which example code? Link? I couldn't find the tweet's reference code [04:33] badaxx: jashkenas: one second, ill tr [04:33] badaxx: y [04:34] bradleymeck: http://github.com/christkv/node-mongodb-native , simple example [04:34] bradleymeck: can change.find to have {a:2} and will have a perfect test case for your problem [04:35] bradleymeck: anywho i gtg to bed, stupid work... [04:35] dilvie: look, we're famous - http://wargamez.mape.me/ [04:35] bradleymeck: *bombs dilvie* [04:36] davidwalsh: thanks bradleymeck ! [04:36] dilvie: hehe [04:36] dilvie: who wrote that? [04:36] bradleymeck: mape [04:36] bradleymeck has left the channel [04:36] mape: ACTION points to the domain [04:36] dilvie: ACTION bombs mscdex [04:37] dilvie: *bombs mscdex* [04:37] benburkert has joined the channel [04:37] badaxx: jashkenas: that's giving me 3 sizes that are _nearly_ the same, but not the same [04:38] huyhong has joined the channel [04:42] dilvie: *bombs mape* [04:42] samsonjs has joined the channel [04:43] dilvie: That's too much fun. back to coding. [04:43] _announcer: Twitter: "Going to bed defeated. #NodeJS and #MongoDB are connecting, but I can't grab a collection. Hard to visualize all this." -- davidwalshblog. http://twitter.com/davidwalshblog/status/22150781321 [04:43] dilvie: Is it too early to vote for a winner? [04:43] dilvie: lol [04:43] deadlyicon has joined the channel [04:44] tango3 has joined the channel [04:44] dilvie: davidwalsh: d'oh. I'm going to be trying to use MongoDB with Node soon. I hope you make a detailed report of what went wrong for you. [04:44] _announcer: Twitter: "For anyone interested, Node.js runs great on P3 ;)" -- Ryan McBride. http://twitter.com/rpmcb/status/22150856136 [04:44] dilvie: What's P3? [04:45] satori_: ps3? [04:45] dilvie: *bombs satori_* [04:46] dilvie: ok. I'll stop now. [04:46] dilvie: I just thought it was time somebody nuked Australia. [04:46] dilvie: If only because I'm jealous of the beaches. =) [04:46] Tim_Smart: Bombs dilvie over the ditch. [04:47] mscdex: :S [04:47] Tim_Smart: Oh, thought you were in Aussie. [04:47] paulwe has joined the channel [04:47] dilvie: haha [04:47] dilvie: no [04:48] dilvie: I'd hop on a plane to Melbourne right now if money was no object. =) [04:48] jetienne has joined the channel [04:50] Tim_Smart: Apparently I live in Wellington, according to the map. [04:50] mscdex: var money = {}; [04:50] Tim_Smart: var money = false; [04:50] Tim_Smart: money is no longer an object. [04:50] dilvie: oh boy. [04:51] dilvie: JavaScript humor. [04:51] dilvie: money = 3 > 2 > 1; [04:52] Tim_Smart: Coffeescript sounds better: if your_switch is on then dance() [04:52] dilvie: I haven't tried coffeescript yet. [04:53] mscdex: what happened to the money? [04:53] dilvie: It looks almost poetic. [04:53] mscdex: ACTION dumpster dives in the garbage collector [04:53] mape: Damit, I think I'm getting sick, just in time for the knockout :( [04:53] gerad: mape: zinc [04:54] mape: Does that help with vomiting? :P [04:54] _announcer: Twitter: "Yeti looks nice http://is.gd/eE67v cmd line JavaScript test runner (in Node.js). Compare to JSTestDriver http://bit.ly/K6j56 ~@club_is_open" -- Kumar McMillan. http://twitter.com/kumar303/status/22151390031 [04:54] dilvie: mscdex: I went to the Midwinter Housing conference in Park City last year. It was basically a group of real estate tycoons asking that very same question. [04:55] mscdex: they were javascript developers too? [04:55] dilvie: haha, no. [04:55] _announcer: Twitter: "and I'm spiking something for the client now using node.js. They are going to love how fast this is." -- Leon Gersing. http://twitter.com/rubybuddha/status/22151437985 [04:56] _announcer: Twitter: "@rsaccon at this point mobl doesn't have a server-component. For this particular app I used node.js, because of its socket.io library." -- Zef Hemel. http://twitter.com/zef/status/22151477356 [04:56] satori_: dilvie: Melbourne? really [04:58] dilvie: Satori_: I have friends near Melbourne. I've never visited anywhere in Australia, so that's the only reason for the preference. [04:59] dilvie: Well - except that Perth seems a bit far away from everything else. [05:01] dilvie: JavaScript is quirky. [05:01] ajpiano has joined the channel [05:02] dilvie: Today I did something like this: [05:03] satori_: dilvie: Perth is just about the most isolated western city on earth. [05:03] satori_: They are different there :P [05:03] tahu has joined the channel [05:04] dilvie: var test = { someProp : "value", someotherProp : (function () { /* do something with test.someProp */ })()}; [05:05] satori_: does that work? [05:05] dilvie: It didn't work until I moved someotherProp outside the initial object literal declaration. [05:05] satori_: yeah. test doesn't exist until the whole line is executed [05:06] _announcer: Twitter: "really interested in @davidwalshblog #NodeJS and #MongoDB idea ,, hmm m" -- phatograph. http://twitter.com/phatograph/status/22152024093 [05:06] eisd has left the channel [05:06] dilvie: var test = { someProp : "value" }; test.someotherProp = (function () { /* do something with test.someProp */ })()}; works fine. Assuming I didn't just make a typo. =) [05:07] dilvie: I noticed. =) [05:08] dilvie: and of course it works fine to create self-referencing methods within object literals, as long as you don't try to execute them before the object literal is fully defined. =) [05:08] _announcer: Twitter: "I love it when "I've tried everything.. this can't be right but let's see" turns out to be the solution. Loving node.js!" -- Jason McLeod. http://twitter.com/jasonmcleod/status/22152150872 [05:10] ezmobius has joined the channel [05:13] isaacs has joined the channel [05:25] tango3 has joined the channel [05:27] SamuraiJack has joined the channel [05:27] siculars has joined the channel [05:27] ezmobius has joined the channel [05:27] jakem has joined the channel [05:27] jakem: anyone awake [05:28] satori_: uhuh. it's only 3:30pm :P [05:28] huyhong has left the channel [05:28] jakem: oh man i thought everyone was on EST [05:28] Yuffster has joined the channel [05:28] satori_: heh. im in Australia [05:29] jakem: how is it there? [05:29] satori_: pretty dran windy today. [05:29] satori_: darn [05:29] dilvie: I'm awake. [05:30] jakem: im new here and I don't want to upset anything, should I lurk for a while before asking stupid newbie questions? [05:30] mjr_: jakem: http://github.com/ry/node/wiki/Node-Users [05:30] satori_: Nah, ask away [05:30] satori_: no dumb question [05:30] dilvie: Nah. [05:30] satori_: are possible really [05:30] dilvie: I'm a stupid n00b. Everybody seems friendly. [05:31] jakem: for my first node app i wanted to make a shared to-do list [05:31] jakem: just something that i thought would be useful for my office [05:31] jakem: im wondering if there are tutorials on basic communication [05:31] dilvie: jakem: You stole my idea! [05:31] jakem: haha [05:31] satori_: You mean with web sockets? or normal http [05:32] dilvie: jakem: I'll finish mine first. =) [05:32] jakem: im sure you will :) [05:32] jakem: well websockets would be 'cool' [05:32] dilvie: <- first mover advantage. [05:32] jakem: but i also want to have an understanding of traditional HTTP [05:32] satori_: node almost insists that you understand HTTP fairly well. [05:32] jakem: this is my first foray into any sort of serverside programming. I've looked into ruby/rails a bit but node makes so much sense [05:33] dilvie: I love node so far. [05:33] jakem: yeah? [05:33] satori_: javascript is an extremely elegant language when you remove all the browser annoyances, [05:33] jakem: i agree [05:33] dilvie: JavaScript on the server is brilliant - and Node does the best job of it by a mile. [05:34] mjr_: jakem: I think the best way to get an understanding of HTTP is to try and use it for something. [05:35] mjr_: You can also poke at it with protocol analyzers like wireshark. [05:35] satori_: Yeah, jump in the deep end and start writing code. [05:35] mjr_: I also wrote an HTTP protocol decoder called http_trace. [05:35] satori_: FF/with firebug helps alot too. [05:35] mjr_: But seriously, just start making node do stuff [05:36] mjr_: Hit it with a browser, hit it with curl, see what happens. [05:36] satori_: ^ do that. When you get stuck ask a specific question and you will get an accurate answer here really quickly. [05:37] jakem: awesome [05:37] jacquesc has joined the channel [05:37] jacquesc has left the channel [05:37] dilvie: silly question - is it less important to worry about globals on the server side than it is on the browser side? I've seen a lot of node code that clutters the global scope. Are they just newbies, or do they know something I don't know? [05:37] satori_: It's a good idea to keep the Global NS clean. Especially from module code [05:38] mjr_: It's pretty much frowned upon to pollute the global space. [05:38] dilvie: satori_: does that happen automagically when you develop CommonJS modules, or should I still be wrapping all my code in my own tidy namespace? [05:38] isaacs: dilvie: 1) it's MORE important on the server, 2) are you sure? note that "var" at the top level of a module *doesn't* create a global. [05:38] dilvie: I've been keeping to my client-side namespace habits. [05:38] satori_: Just don't create globals [05:38] dilvie: ah, see.. [05:38] satori_: in modules [05:39] dilvie: isaacs answered my question. [05:39] dilvie: var at the top level ISN'T global in CommonJS modules. [05:39] dilvie: I was confused about that. [05:39] satori_: yeah, me too at first. [05:40] dilvie: I was like, WTF, did everybody throw best practices out the window? [05:40] isaacs: dilvie: it's more important, though, because your global namespace persists across the entire life of your server. [05:40] dilvie: That makes a lot more sense. [05:40] isaacs: dilvie: so the opportunity for collisions, even between different HTTP reqs, is very very great. [05:41] isaacs: whereas, on the browser, it's a one-shot program, most of the time. collisions are rare, and every req is a new program. [05:41] dilvie: So how do you expose something to the global namespace? [05:41] isaacs: dilvie: "var foo=1" <-- no global [05:41] isaacs: dilvie: "foo=1" <-- global [05:41] mattikus has joined the channel [05:41] isaacs: dilvie: or global.foo=1 [05:41] jakem: and is that global across all requests? [05:41] isaacs: yes [05:41] isaacs: unless you set the env var NODE_MODULE_CONTEXTS=1 [05:42] dilvie: cool. [05:42] dilvie: what does NODE_MODULE_CONTEXTS = 1 do, exactly? [05:42] isaacs: to expose something as the "public" piece of your module, use exports.foo=1 [05:42] dgathright has joined the channel [05:42] dilvie: isaacs: yeah, I know about the exports conventions. [05:42] isaacs: dilvie: it creates a new global context for each module, which inherits from its parent. [05:43] badaxx has joined the channel [05:43] isaacs: dilvie: so, rather than using a closure, it's an *actual* separate context. no arguments.callee.caller nonsense [05:43] mjr_: The separate context thing seems cool. [05:43] mjr_: Why don't we use it? [05:43] _announcer: Twitter: "Express - node web framework - High performance, high class web development framework using Node JS. http://tumblr.com/xccgr1k4c" -- Thinkrooms . http://twitter.com/thinkrooms/status/22153928129 [05:43] jakem: does it increase ram usage? [05:43] isaacs: mjr_: it's a bitch for some things [05:43] isaacs: mjr_: instanceof, mostly [05:44] isaacs: mjr_: you usually want "Error" to be the same object everywhere. [05:44] isaacs: etc [05:44] dilvie: jakem: there are some times where totally separate puts you in a jail. [05:44] isaacs: jakem: i am not aware of the memory/cpu/etc tradeoffs between using closures vs contexts [05:44] mjr_: Yeah, I guess that can be awkward. It seems like it'd be worth it t solve this though. [05:45] dilvie: in fact, I sometimes get miffed when somebody has used the module pattern in the browser and I want to patch their buggy code. [05:45] isaacs: mjr_: we explored it a while back. [05:45] mjr_: But all of the current node core modules work with that on, right? [05:46] isaacs: mjr_: yes [05:46] isaacs: best way to find out would be for a bunch of us to just set that env, and then kind of keep playing with node, and see what breaks. [05:46] isaacs: in terms of other non-core modules [05:47] _announcer: Twitter: "Node.js Knockout looks like fun. Who's game? http://bit.ly/cAWkKJ" -- Eric Hamilton. http://twitter.com/dilvie/status/22154093631 [05:47] zomgbie has joined the channel [05:47] mjr_: Yeah, I think I'll start doing that. [05:48] mjr_: ryah suggested that we need to make running with NODE_MODULE_CONTEXT be a cool thing [05:48] mjr_: or it was never going anywhere. [05:48] mjr_: That is, it'll never be the default. [05:48] dilvie: Hmm... [05:48] isaacs: i'm pretty ambivalent abou tit [05:48] satori_: What advantages does it entail? [05:48] isaacs: i mean, yeah, it's more secure obviously [05:49] isaacs: and more "correct" [05:49] jimt_ has joined the channel [05:49] mjr_: I think as we start to build larger and more complicated node apps that this will serve us well. [05:49] isaacs: and does lead you to better practices where perhaps different modules are on different servers or something, so you can't assume anything about anything. [05:49] dilvie: I'm not sure. [05:49] mjr_: But it's just a hunch. [05:50] dilvie: I'm only running one app per server... so I already have a bit of isolation, right? [05:50] mjr_: It also seems like it could be the right solution for browser security. [05:50] isaacs: i had this vision yesterday about implementing erlang in node, but in javascript instead of in erlang. [05:50] dilvie: I'm not sharing the server-side with scripts I don't know about like you often do on the client-side. [05:51] isaacs: dilvie: i tried to never ever do that on the client side [05:51] isaacs: dilvie: i failed, though, and ended up working for YAP and messing around with caja and whatnot. [05:51] satori_: I'd like to see Panda3d done with node/javascript [05:52] jakem: have a good day/evening! - im out [05:52] dilvie: on the client side, we have no control of what scripts are going to run along side our own. [05:52] satori_: ciao [05:52] JimRoepcke has joined the channel [05:53] isaacs: dilvie: oh, sure [05:53] isaacs: dilvie: but the sandbox is pretty good [05:53] isaacs: dilvie: it's not hard to keep external js from being in your page [05:53] isaacs: dilvie: on the client, the "program" isn't just a js file, it's a js file + document [05:54] dilvie: yeah. [05:54] mscdex: v8bot! [05:55] mscdex: ugh, i've had enough with massive unorganized php projects to last me a lifetime [05:55] dilvie: Example - I developed a bunch of websites using WordPress as a CMS. Inevitably, my clients would start to install every plugin known to man. 20+ sometimes. [05:55] dilvie: and of course, some of them would use a copy of prototype from 2003 and totally clobber a bunch of global objects... [05:56] dilvie: ugh. [05:56] _announcer: Twitter: "@picplz great app http://picplz.com, kinda think they build on node.js" -- ebot tabi. http://twitter.com/ebottabi/status/22154519142 [05:56] mscdex: 99 cent plugins at the plugin app store! [05:56] mscdex: :-D [05:57] dilvie: my rule about screwing with global objects: unless your mod is written into the standard and you check before you clobber, DON'T. [05:57] dilvie: sadly, some devs don't play by my rule. =) [05:58] creationix: dilvie: you can check it modules change builtins [05:59] creationix: Object.freeze(Object.prototype)... [06:00] ben_alman has joined the channel [06:00] dilvie: creationix: that's a nice idea, but it only works with the latest generation of browsers, and it would break a bunch of potentially useful client-side libs. [06:00] mscdex: the governator as mr. freeze [06:00] mscdex: ahhhhnold [06:01] creationix: dilvie: yeah, just a way to check stuff [06:01] creationix: I wouldn't do it in normal operation [06:01] dilvie: =) [06:01] creationix: freeze and seal are fairly slow [06:01] mjr_: mscdex: get to the choppa! [06:01] dilvie: creationix: look what you started. [06:02] mscdex: :-D [06:02] creationix: Hasta a vista (or was it win 7?) [06:02] icozzo has joined the channel [06:02] creationix: s/a/la/ [06:02] mjr_: ACTION rimshots [06:02] creationix: too bad I always ruin it with a typo [06:03] admc has joined the channel [06:04] mscdex: it's the end of times! nike is patenting marty mcfly's shoes! [06:04] dilvie: win 7 is the first OS microsoft has ever written that didn't suck. [06:04] mscdex: "power laces! alright!" [06:04] dilvie: it only took them 30 years to get it right... [06:04] benburkert has joined the channel [06:05] alecmuffett1 has joined the channel [06:06] AAA_awright: dilvie: Huh? [06:06] mscdex: dilvie: what about windows 1.01? [06:06] mscdex: don't forget about reversi! [06:07] dgathright has joined the channel [06:07] mjr_: oh man, I DID forget. [06:07] mscdex: unless you're in nebraska, then you're screwed [06:10] dilvie: Did you know you can use JavaScript in PowerShell? [06:10] satori_: I did not know that [06:10] mscdex: i did not know that [06:11] dilvie: PowerShell ABC's - J is for JavaScript http://bit.ly/9AmFRO [06:11] a_meteorite: o hai AAA_awright [06:11] StevenSoroka has joined the channel [06:12] mscdex: dun dun dunnn [06:12] mjr_: I'm going to go ahead and figure out what powershell is a minute. [06:12] MikhX has joined the channel [06:13] mscdex: who needs powershell when you have a node repl? [06:13] mscdex: :-D [06:14] dilvie: mscdex: PowerShell has a bit more access to the inner workings of windows. If you need to communicate with a Windows OS, use PowerShell - for everything else, node is better. [06:15] satori_: I find myself using node to do system stuff because I dont know bash very well. [06:15] satori_: ACTION is a linux n00b. [06:15] dilvie: satori_: node is more fun than bash scripts anyway. [06:16] satori_: bash just looks crazy to me. [06:16] dilvie: Seriously. esac? fi? [06:16] dilvie: bash IS crazy. [06:16] dilvie: bash is literally a joke. [06:16] satori_: #! node ftw. [06:17] cardona507: join viim [06:17] ryah: hi [06:17] mjr_: ryah: don't you have node hosting to make work and write about? [06:17] mjr_: what are you doing screwing around on IRC? [06:17] ryah: it's done [06:17] mjr_: oh nice [06:17] mjr_: me, I'm learning about powershell. [06:18] dilvie: node hosting where? [06:18] cardona507: hello [06:18] satori_: heya [06:18] ryah: if you're registered for nodeko you'll get an email in the next hour about it [06:18] dilvie: mjr_: you probably don't need powershell unless your a windows server admin. [06:18] StevenSoroka: :) [06:18] cardona507: ryah: nodeko? [06:19] mjr_: I haven't touched a windows machine, other than for helping my parents, in what, 4 years? [06:19] cardona507: ACTION checking mailing list [06:19] mjr_: I'm really out of touch. [06:19] dilvie: how do I register for nodeko? [06:19] cardona507: mjr_: out of touch in a good way [06:20] mjr_: dilvie: you are a bit late to the nodeko party. [06:20] dilvie: mjr_: Windows is much better than it was 4 years ago. I still prefer OS X, though. [06:20] satori_: Latest windows remote dll loading vuln is a doozy. [06:20] cardona507: windoze sux [06:20] dilvie: I'm on a windows box right now, running linux in a VM for node development and IRC. [06:21] mjr_: Windows seems fine, but everybody I know that works on Windows seems thoroughly non-excited about it. [06:22] mjr_: Whereas linux/mac people seem pretty fired up about their platform. [06:22] satori_: I still use w7 on my laptop. for games mostly [06:22] cardona507: i work on a mac 90% of the time but still need to be on a windoze machine to test my code in IE [06:22] mjr_: ryah is not fired up about OSX as a computing platform. [06:22] _announcer: Twitter: "http://bit.ly/cog9Rc server side #JavaScript tutorial on #osx with http://bit.ly/bmo0EO (node.js)" -- GlenC. http://twitter.com/auxend/status/22155794962 [06:22] cardona507: and there is no question which is a better experience [06:22] gerad has joined the channel [06:23] ph^ has joined the channel [06:23] satori_: Until I know more about *nix.... getting stuff done is quicker on windows for me. I don't have to search for things, or look up tutorials, etc. I guess that will change with exp. [06:24] dilvie: satori_ Yeah, it will. *nix is actually pretty cool once you get to know it. [06:24] dilvie: I still really like it. [06:24] ryah: :) [06:25] dilvie: I find I spend a *lot* more time in the CLI on *nix boxes than I do on windows - mostly because the CLI doesn't totally suck. [06:26] dilvie: windows has NEVER had a good CLI. PowerShell is the first foray into OS scripting that doesn't totally suck. [06:26] ryah: cardona507: registration is already closed [06:26] ryah: but i got some extras to hand out later :) [06:26] dilvie: but I have to say - PowerShell is a hell of a lot better than Bash for scripting if you like dealing with objects instead of streams of text. [06:28] dilvie: you don't have to pipe everything through grep and sed and awk to get something usable in PowerShell. Of course, you don't have to do any of that with Node, either. =) [06:28] mjr_ has joined the channel [06:28] cardona507: ryah: cool - keep me in mind if when the extras get handed out :) [06:28] cardona507: *if/when [06:29] dilvie: ryah: wtf is nodeko? [06:30] mjr_: http://knockout.no.de/ [06:30] _announcer: Twitter: "For a cat WebSocket, what server do you recommend? NodeJS am not satisfied enough after two days of testing ..." [fr] -- Joe. http://twitter.com/likejj/status/22156141058 [06:31] cardona507: ohhhh - I soo want to be at nodeko - how the hell did I miss this registration :/ [06:32] cardona507: i am gonna be at yahoo! on thur for the crockford talk [06:32] cardona507: that should be cool [06:32] dilvie: h. [06:32] dilvie: that should be very cool. [06:32] dilvie: I'm jealous. [06:32] overra: i've never met another javascript programmer irl :( [06:32] cardona507: it was cool seeing him there at the last meetup at sencha a couple of weeks ago [06:33] cardona507: overra: heh [06:33] cardona507: :) [06:33] dilvie: where is here? [06:33] overra: longview, tx [06:33] visnup has joined the channel [06:33] overra: 75k pop city in east texas [06:35] creationix: I grew up in Texarkana :) [06:35] overra: the highest in web development tech they have around here are companies who make templates for joomla and call themselves web developers [06:35] creationix: overra: yep [06:36] overra: you're in austin now, correct? [06:36] creationix: nope, Palo Alto, California [06:36] dilvie: Are there any good profiling tools for Node apps? [06:36] overra: oh, must have been thinking of someone else [06:37] dilvie: JavaScript Function Call Profiling http://bit.ly/bTzoho <-- like that? [06:38] Throlkim has joined the channel [06:39] creationix: dilvie: V8 has a profiler [06:39] creationix: and if you're on osx, it has some tools that help [06:39] creationix: dilvie: http://code.google.com/p/v8/wiki/V8Profiler [06:41] _TS has joined the channel [06:42] dilvie: That's very handy. [06:44] dilvie: does node expose the profiler to the js environment? [06:45] ivong has joined the channel [06:45] danielzilla: dilvie: http://github.com/dannycoates/node-inspector might be helpful. [06:45] _announcer: Twitter: "@likejj What node.js WebSocket server's have you tried? I write node-websocket-server." -- Micheil Smith. http://twitter.com/miksago/status/22156829120 [06:48] micheil: overra: there probably isn't another programmer within really 150km's of me. [06:49] overra: micheil: :( [06:51] tahu has joined the channel [06:51] badaxx has joined the channel [06:52] _announcer: Twitter: "minimal web socket library for nodejs :: http://github.com/ncr/node.ws.js" -- Gareth Stokes. http://twitter.com/GarryDanger/status/22157102287 [06:53] nsm has joined the channel [06:54] crohr has joined the channel [06:59] javajunky has joined the channel [07:00] johndahlstrom has joined the channel [07:01] _announcer: Twitter: "Willing to learn Dojo, NodeJS and MongoDB. I think they can be very useful in some projects... I'll add them to my knowledges wish list." -- José Manuel Pérez. http://twitter.com/jmperezperez/status/22157526206 [07:17] _announcer: Twitter: "Amazing debugging output in #NodeJS" -- Jaime Bueza. http://twitter.com/jbueza/status/22158242103 [07:26] jimt has joined the channel [07:27] shachaf has joined the channel [07:27] aubergine has joined the channel [07:28] _announcer: Twitter: "node.dbslayer.js found. http://bit.ly/dwB3Hr Then I can build something with node.js times;)" [de] -- Oliver Andrich. http://twitter.com/oliverandrich/status/22158690907 [07:28] badaxx has joined the channel [07:31] tobiassjosten has joined the channel [07:36] Dmitry has joined the channel [07:38] v8bot has joined the channel [07:38] ryah: ACTION is getting behind on patches [07:38] eisd has joined the channel [07:38] ker2x has joined the channel [07:44] eisd has left the channel [07:49] mAritz has joined the channel [07:51] gormer has joined the channel [07:51] _announcer: Twitter: "Thinking about porting over Blast Mojo (#BlastMojo) to NodeJS (#NodeJS). Does the JS universe need another MVC framework? YES plez ^_^" -- Jaime Bueza. http://twitter.com/jbueza/status/22159710092 [07:52] virtuo has joined the channel [07:54] dilvie: m [07:54] _announcer: Twitter: "Interesting #async i/o #frameworks comparison, http://oddments.org/?p=494 #twisted #node-js #eventlet" -- Muharem Hrnjadovic. http://twitter.com/al_maisan/status/22159818089 [07:55] freeall has joined the channel [07:56] aliem has joined the channel [07:56] peol has joined the channel [07:58] teemow has joined the channel [08:00] badaxx has joined the channel [08:04] BryanWB has joined the channel [08:04] javajunky has joined the channel [08:05] mape: ryah: According to the knockout rules, is it ok to install npm and whatnot beforehand to the Joyent instance? And is it ok to test it out before the knockout? [08:05] ryah: mape: yeah [08:06] gerad: mape: yeah, go for it [08:06] mape: k, great [08:06] gerad: mape: we'll ask people to reset their repositories [08:06] gerad: to the git repository [08:06] mape: Ah k [08:06] gerad: for the knockout [08:06] gerad: git push -f [08:06] gerad: to the github knockout repository [08:07] javajunky: mape: I got a question about npm.mape.me [08:07] mape: javajunky: Go [08:07] _announcer: Twitter: "enjoying the funny and interesting the #nodejs non-blocking i/o programming experience." -- Rosario Arun. http://twitter.com/rosarioarun/status/22160389396 [08:08] robinduckett has joined the channel [08:08] javajunky: I was reconfiguring a apckage.json on one of my projects last night and noticed the repositories part was pointing at the wrong place, so I was fixing it. .. to do that I had to ask isaacs what the hell url I should use, he told me I need to point it directly to the .git file ….. but when I do this 'git' doesn't show up on my package on npm.mape.me …. I notice that those packages that git does show up on are pointing to the github web-pa [08:08] robinduckett: Morning [08:09] mape: javajunky: it currently strips .git [08:09] mape: which then should make it a link to the github page [08:09] javajunky: hmmm [08:10] mape: Which seems to work for all projects on the repo at the moment [08:10] javajunky: mape: yeah you're completely right, must've been tired, just looked at it again and can see the url is clearly wrong *sigh* [08:11] EyePulp has joined the channel [08:12] visnup: need to sleep [08:13] ctp has joined the channel [08:13] mape: Take a power nap [08:13] javajunky: mape: meh, it still hates me [08:13] ctp has joined the channel [08:14] mape: javajunky: repositories !== repository [08:14] mape: and don't need the [] [08:15] javajunky: hmm, let me guess the format has changed at some point [08:15] mape: just do 'repository': {'type': 'git', 'url': *****} [08:15] mape: I had it wrong at first my self [08:15] mape: Then I just checked other package.json that worked and changed [08:20] gerad: mape: just wanted to do a sanity check [08:20] gerad: mape: did you get the email that just went out? [08:20] gerad: mape: did it have a coupon code? [08:21] jelveh has joined the channel [08:22] mape: Jup [08:22] mape: The joyent beta for SmartMachines, with a coupon code that seems random [08:23] hellp has joined the channel [08:23] gerad: mape: hot, never feel entirely sure with those email blasts that merge in custom data in every message [08:24] mape: Hehe [08:25] aubergine has joined the channel [08:26] konobi: mape: how so? [08:26] mape: konobi: What? [08:26] badaxx has joined the channel [08:28] MikhX has joined the channel [08:30] konobi: mape: the coupon code [08:30] mape: konobi: Yeah? [08:31] konobi: what's random about it? [08:31] konobi: ah... nm... misread [08:31] mape: konobi: Well it isn't "enterRandomCuponCodeHereOnPublishing" [08:34] aubergine_ has joined the channel [08:36] _announcer: Twitter: "Joyent's no.de service (node.js hosting) will be awesome http://nodeknockout.posterous.com/countdown-to-knockout-post-11-deploying-to-jo" -- Antti Holvikari. http://twitter.com/antti/status/22161595676 [08:37] _announcer: Twitter: "@reid Sure, I get that it's pluggable, I use QUnit w jsTestDriver, conf not too hard & surely Yeti will get CI (Node.js variant) support?" -- andybeeching. http://twitter.com/andybeeching/status/22161640694 [08:39] dilvie: I've decided not to worry about Object.create() vs new performance: http://gist.github.com/551072 [08:39] Frans-Willem has joined the channel [08:39] javajunky: mape: cheers, working now :) [08:39] mape: Great [08:40] Frans-Willem: Hey, anyone find out what that postgres-module-discussion yesterday evening ended? left my laptop on to read it today, but apparently windows figured I'd want updates :@ [08:40] jimt_ has joined the channel [08:41] _TS: Does node knockout allow late enrollment? [08:41] _TS: hah [08:41] gerad: sorry [08:41] gerad: we don't [08:41] robinduckett: _TS: you can take my spot if you like, I'll be in amsterdam during :( [08:41] gerad: lots of parts in motion now [08:41] robinduckett: found out today i'll be travelling for 9 hours [08:41] robinduckett: x2 [08:42] _TS: completely understandable [08:42] _TS: thanks anyway r [08:42] robinduckett: well if anyone does want my spot let me know in a pm i'll be gone from tomorrow morning [08:42] gerad: robinduckett: not quite that easy, there's setup involved, you may be able to add people in manually... but it means manually adding people to the github repository and joyent / heroku (and to the team) [08:42] _TS: gerad maybe the next one ;) [08:43] gerad: _TS: for sure! [08:43] robinduckett: gerad: ah okay [08:43] gerad: and there's always plenty of need for judges next week! [08:43] robinduckett: gerad: how can I cancel my entry? [08:43] gerad: robinduckett: just delete your team http://nodeknockout.com/team [08:43] visnup: gerad: I took that button off, remember? [08:44] gerad: visnup: oh crud, I've just confused a lot of people [08:44] gerad: visnup: we've finally come to the point where admin only features start biting us :-P [08:44] gerad: robinduckett: what's your team name, I can delete it [08:45] robinduckett: node butterfly or something :D [08:45] pdelgallego has joined the channel [08:45] visnup: I would say, to not compete, just don't compete. leave your team up and don't submit anything. [08:45] gerad: robinduckett: http://nodeknockout.com/teams/butterflynode [08:46] visnup: that was the reason to take that button off in the first place [08:46] gerad: visnup: really loving the not yet deployed box [08:46] gerad: visnup: you made the site wider too! [08:46] visnup: gerad: I didn't [08:46] _TS: wow so many teams [08:46] proppy has joined the channel [08:47] proppy: I was wondering if there was any slot left for node.ko ? [08:47] gerad: _TS: you should see the judges and the prizes [08:47] gerad: proppy: it's too late unfortunately, registration closed 8/15 - we had to set things in motion [08:47] _TS: okay i should have quit my job [08:47] _TS: a month ago [08:47] proppy: gerad: ok [08:47] proppy: gerad: I thought we were still allowed to join existing team, but seems I was mistaken [08:48] gerad: visnup: wonder what's causing it to be wide http://nodeknockout.com/teams/butterflynode [08:48] gerad: proppy: oh, you can do that... but you'll need to rely on your teammates to jump through a few (fairly minor) hoops to get you onboarded [08:48] gerad: proppy: basically, manually adding you to some git repositories, adding your email to the team list [08:49] proppy: gerad: oh ok [08:49] proppy: gerad: thanks for these information [08:49] gerad: proppy: also, email all@nodeknockout.com (if you haven't already), if it looks like we'll be able to manually provision people on Friday (doubtful, but possible), we'll drop you a line [08:49] gerad: _TS: same goes for you [08:50] proppy: gerad: I still don't know if I will be avaible the whole week end, but I will mail all@nodeko.com in case I am [08:50] proppy: gerad: I also have to found out if the Paris accomodation is full or not [08:51] gerad: proppy: sounds good [08:51] _TS: thanks gerad! [08:52] Frans-Willem: ...? [08:52] Frans-Willem: Paris? [08:52] Frans-Willem: Is there anything node.js-y going on in Paris ? [08:53] robinduckett: I will be in Amsterdam so I will be getting stoned instead of working :P [08:53] ryah: Frans-Willem: talk to OriP [08:53] _announcer: Twitter: "In case you were wondering, here's the full #mobl and #nodejs sourcecode of mobldraw: http://bit.ly/b5Hnux (mobldraw: http://bit.ly/c181Ds)" -- Zef Hemel. http://twitter.com/zef/status/22162319763 [08:54] gerad: Frans-Willem: http://nodeknockout.com/locations#af83 [08:54] proppy: Frans-Willem: yes, in af83 IIRC [08:54] ryah: af83, yes [08:55] Frans-Willem: Pfff, I figured it'd be all in Amuricah :p [08:55] BryanWB has joined the channel [08:55] _announcer: Twitter: "@zambiorix After having seen node.js in action, I'd say JavaScript." -- Steven Vandeweghe. http://twitter.com/bluecrowbar/status/22162388423 [08:55] gerad: node.js is an international sensation! :-) [08:55] konobi: Canada too! [08:55] xla has joined the channel [08:55] proppy: congratulations for the no.de domain [08:56] proppy: its neat :) [08:56] konobi: ^_^ [08:56] konobi: was a good find, indeed [08:57] ___daniel has joined the channel [08:58] ryah: also represents joyent's anti-german stance. [08:58] ryah: so, double win. [08:58] proppy: ahah, ryah I don't realized that [08:58] _announcer: Twitter: "Watched half of the @peepcode Node.js screencast on the train. Very good so far. Chuckled at installation on Windows being totally ignored." -- Tom Mortimer-Jones. http://twitter.com/morty_uk/status/22162538424 [08:59] tableton has joined the channel [08:59] Frans-Willem: ryah: I remembered you talked earlier about overhauling all the buffer stuff, what exactly are your plans for that now? [08:59] freeall: Hi. I think we found a race condition if you do a fs.createWriteStream before a fs.createReadStream [08:59] freeall: Source is here, http://pastebin.com/tyQ9qFa3 [09:00] ryah: Frans-Willem: to overhaul them [09:00] freeall: If we run it (linux and mac os x) it fails sometimes [09:00] freeall: node 0.2.0 [09:00] ryah: freeall: okay [09:01] ryah: freeall: can you open an issue for me? [09:01] ryah: im probably not going to be able to look at it until next week [09:01] freeall: ryah, I can try. (also my friend thinks he found the error in node's source code) [09:01] Frans-Willem: ryah: If you nee [09:01] ryah: freeall: http://github.com/ry/node/issues [09:01] konobi: freeall: patches welcome [09:01] ryah: freeall: not unlikely [09:02] Frans-Willem: ryah: If you need any ideas for the Buffer object, look at the DataBloc object of the Plus! scripting API, http://www.msgpluslive.nl/scripts/view/13-Official-Scripting-Documentation/, it's got a halfway decent implementation, without the [] accessor. [09:02] ___daniel has joined the channel [09:02] jimt has joined the channel [09:02] caolanm has joined the channel [09:02] ryah: Frans-Willem: i think the fix is clear [09:02] ryah: there is not api changes [09:03] Frans-Willem: Ah, ok, I thought you wanted to drop the [] accessor :/ [09:03] MikhX has joined the channel [09:03] Frans-Willem: Btw, on a related note, seeing as apparently calling into C++ code is slow, wouldn't it be nice to have a buffer.write method that would take an offset and an array, to speed up consecutive writes ? [09:07] Ori_P has joined the channel [09:07] DoNaLd`: ryah: i think, that bug 20. "Build failure on OS X 10.6" can be resolved with upgrade version MacOSX 10.6.2 to newest 10.6.4 .. [09:07] jimt_ has joined the channel [09:07] SteveDekorte has joined the channel [09:07] ryah: DoNaLd`: hm [09:07] ryah: DoNaLd`: can you put that on the issue ? [09:08] ryah: otherwise im going to forget :) [09:08] DoNaLd`: ryah: ok [09:08] ryah: but thanks [09:08] DoNaLd`: np [09:08] paulwe_ has joined the channel [09:09] SamuraiJack has joined the channel [09:09] rnewson has joined the channel [09:12] tableton has left the channel [09:12] proppy: ryah: did you see my meta-d patch ? [09:13] _announcer: Twitter: "desperate to hack on node.js with redis. this big ol' pile of menial client work is somewhat of a blocker though." -- George Ornbo. http://twitter.com/shapeshed/status/22163211355 [09:13] markwubben has joined the channel [09:13] ryah: proppy: i haven't had a chance yet [09:14] freeall: ryah, posted it here, http://github.com/ry/node/issues/issue/248 - not really a patch, but just an explanation of what (probably) goes wrong. [09:14] jelveh has joined the channel [09:14] ryah: im backed up a bit on the mailing list [09:14] ryah: freeall: thanks [09:14] proppy: ryah: ok, I guess you're busy with nko :) [09:14] freeall: ryah, oh, and thanks to you (and the community) for node. Much, much, much appreciated! [09:14] proppy: ryah: congrats for shell access to no.de that's neat [09:14] ___daniel has left the channel [09:15] jimt has joined the channel [09:16] proppy: will no.de be open to non-ko user, after ko is done ? [09:16] _announcer: Twitter: "@ryah @ciaran_j @tjholowaychuk any known issues with requireing files inside the lib folder on ubuntu? #nodejs" -- Sascha Depold. http://twitter.com/sdepold/status/22163342841 [09:17] _announcer: Twitter: "I'm becoming more and more excited about Node.JS; really need to start playing with this puppy soon." -- Ivo Teel. http://twitter.com/CaliMonk/status/22163377961 [09:18] _announcer: Twitter: "this looks interesting - testing client-side javascript using jasmine and node.js - http://bit.ly/aZvlfy" -- James Mead. http://twitter.com/floehopper/status/22163413967 [09:19] ryah: proppy: in a month or so [09:19] ryah: proppy: we have some stuff to fix up first [09:20] proppy: it would be nice to be able to fork node smartmachine, like you do on github [09:20] ryah: hopefully we'll learn a bit from this KO experience [09:20] proppy: (but on the virtual machine/container level) [09:21] _announcer: Twitter: "the Django of node.js? http://expressjs.com" -- Anentropic. http://twitter.com/anentropic/status/22163545313 [09:24] Frans-Willem: Hmm, will there be any speed difference between arr.push(x) and arr[arr.length]=x; ? [09:24] proppy: Frans-Willem: you should submit a test case to http://jsperf.com/ :) [09:24] proppy: there is already one http://jsperf.com/push-vs-length [09:24] proppy: ahah [09:25] proppy: Frans-Willem: one chromium-daily .push si 1% slower [09:26] Frans-Willem: wtf :S [09:27] ntelford has joined the channel [09:27] aubergine has joined the channel [09:27] Frans-Willem: wasn't expecting that [09:27] Tim_Smart has joined the channel [09:27] shimondoodkin: what makes ruby or dejango other frameworks a quick way to develop an application? why the framework is good (makes a quick development)? [09:30] tableton has joined the channel [09:30] SvenDowideit_ has joined the channel [09:31] mscdex has joined the channel [09:31] MrTopf has joined the channel [09:31] shimondoodkin: i have a framework for node, and i want it to be fast to develop apps [09:32] jsilver has joined the channel [09:38] badaxx_ has joined the channel [09:38] _announcer: Twitter: "Joyent's servers for node.js KO, WebSockets Why can not restrict the use of such? I hope that you are here than Heroku." [ja] -- Toshihiro Shimizu. http://twitter.com/meso/status/22164319314 [09:40] delapouite has joined the channel [09:41] _announcer: Twitter: "@sameersundresh Oh, I see what you're saying. That agrees with the trend, lately. (Node.js, boost::asio, etc.)" -- Andres Jaan Tack. http://twitter.com/ajtack/status/22164442554 [09:43] sechrist: why are macs such a clusterfuck of memory inefficient programs [09:43] sechrist: http://imgur.com/y1MAi.png [09:43] sechrist: ignore node in that (i have no idea what the leak is yet) but damn [09:44] micheil: sechrist: you've got problems if launchd is taking that much ram [09:44] sechrist: that's mysql I think [09:45] sechrist: and I don't know why mysql would be using that much ram [09:45] micheil: because it stores stuff in memory? [09:45] sechrist: uh why the fuck [09:45] micheil: like all your indexes and stuff [09:45] micheil: to make querying fast [09:45] sechrist: hmm [09:45] micheil: as does any database [09:46] sechrist: I only have one db [09:46] sechrist: with a table with like 1k rows [09:46] shimondoodkin: mysql takes ram on each connection , like 5mb/connection [09:47] shimondoodkin: maybeyou dont close connections [09:47] sechrist: I think all of my applications are inflated in the memory department [09:47] sechrist: fuck this [09:49] sechrist: istatmenus is retarded [09:49] maushu has joined the channel [09:49] sechrist: mysqld is using like 80mB [09:49] micheil: sechrist: no [09:49] micheil: istatmenus should be working fine [09:49] maushu: I wonder how useful a sql server binding would be. [09:49] micheil: sechrist: look at what launchd is using [09:49] sechrist: kernel_task is 350mB [09:49] sechrist: this is absurd [09:50] sechrist: activity monitor doesn't show a launchd using more than 1mB [09:50] aubergine has joined the channel [09:50] sechrist: istat bug [09:50] Frans-Willem: sechrist: How did the Postgres thing turn out ? [09:51] sechrist: using mysql [09:51] Frans-Willem: Shame :p [09:51] Frans-Willem: What's the mysql one got that node-PostgresClient doesn't ) [09:51] Frans-Willem: ;)? [09:51] sechrist: I already know MySQL and it was easy to use [09:52] sechrist: I wanted to adventure into Postgres for this project as the relational DB [09:52] _announcer: Twitter: "@bluecrowbar will look into node.js too" -- Gerd Van Zegbroeck. http://twitter.com/zambiorix/status/22164920763 [09:52] hellp has joined the channel [09:52] aubergine has joined the channel [09:53] jblanche has joined the channel [09:55] sechrist: Good thing is I can always switch later [09:56] Frans-Willem: Ah, shame [09:57] Frans-Willem: Hmmm, why does JSLint think it's a good idea to disallow ++ and -- in code ? [09:57] sechrist: I might end up going couchdb for this. I'm versed in couch but I'm going do weird queries I don't know how to solve in couch [10:00] _announcer: Twitter: "@zambiorix In the long run, I want to replace my current Apache + CGI setup with nginx + node.js. Way less memory, much higher speed." -- Steven Vandeweghe. http://twitter.com/bluecrowbar/status/22165292238 [10:00] elliottkember has joined the channel [10:00] elliottkember: hey everyone [10:01] Frans-Willem: Hmmm, that's funny [10:01] Frans-Willem: x = x << 8; is actually slower than x = x * 0x100; :/ [10:03] sechrist: how much slower? [10:03] Frans-Willem: 1% or so [10:03] Frans-Willem: but still [10:03] Frans-Willem: wasn't expecting that [10:03] Frans-Willem: http://jsperf.com/bitwise-vs-multiplications [10:04] Frans-Willem: >>> is still tons faster than Math.floor(x/y), though :p [10:04] robinduckett: lol [10:05] plaes has joined the channel [10:05] Frans-Willem: Hmm [10:05] Frans-Willem: wasn't expecting this one either: [10:05] Frans-Willem: http://jsperf.com/floor-vs-bitwise [10:05] Frans-Willem: Especially seeing as crockford explicitly tells people not to use bitwise in JS [10:06] _announcer: Twitter: "Pywebsocket now to try a bit of a standalone is the most convenient, apache's mod-pywebsocket than it seems to be stable up to the jetty who knew. But I personally look forward to an event that merits node.js. Enjoy." [ja] -- Jxck. http://twitter.com/Jxck_/status/22165570188 [10:06] Tim_Smart has joined the channel [10:07] proppy: Frans-Willem: yes, I guess it has to do with implementation of Number [10:07] proppy: IIRC there is no 'int' [10:09] ctp has joined the channel [10:10] micheil: oh, morning elliottkember [10:11] micheil: elliottkember: happy birthday. (iirc) [10:11] grahamalot has joined the channel [10:12] dipser has joined the channel [10:14] d0k has joined the channel [10:15] _announcer: Twitter: "Deliver real-time information to your users using node.js http://icio.us/c3mrh4" -- Mauro De Giorgi. http://twitter.com/mdgArt/status/22165995855 [10:15] Frans-Willem: proppy: Actually, I was expecting Math.floor to be faster, seeing as JS has no int and as such no native bitwise ops, but >>0 is still faster than Math.floor :/ [10:15] proppy: oh ok, sorry for the miss understanding [10:17] dilvie: I never understood why crockford doesn't like bitwise. [10:17] elliottkember: micheil: Thanks mate :) [10:18] sechrist: man I'm so used to memory tight apps [10:18] sechrist: I literally need to upgrade to 8GB in my mac [10:18] sechrist: that's so sad [10:19] Frans-Willem: dilvie: Probably because they're often mis-used as "speed gains", while in reality, in JS, they often won't gain you any speed at all. [10:21] _announcer: Twitter: "Introducing Yeti: The YUI Easy Testing Interface (made by Yahoo! & powered by Node.JS) http://digs.by/ciKioT #js #test #nodejs #yui" -- Marco Del Tongo. http://twitter.com/logicoder/status/22166296613 [10:23] Frans-Willem: Hmmm, does Node.js even support "use strict" ? [10:23] mscdex: The Crockford Files! http://i27.tinypic.com/2yzn2u8.jpg [10:23] mscdex: Frans-Willem: nope, V8 does not support that yet [10:24] Frans-Willem: Ah, ok, so no use putting that in [10:24] mscdex: correct [10:26] dilvie: "use strict"; is codefied in the standard, so it's probably safe to assume that it will support it, eventually. [10:26] Frans-Willem: dilvie: If I can't test if it'll still work, I'd rather not [10:26] Frans-Willem: Hmm [10:26] dilvie: Frans-Willem: very good point. [10:26] Frans-Willem: why does jslint disallow me to use functions before they're defined ? [10:26] badaxx has joined the channel [10:26] Frans-Willem: b(); function b() { /*do something */}; is valid JS, isn't it ? [10:27] sonny has joined the channel [10:27] mscdex: yep [10:27] mscdex: ACTION shakes a fist at jslint [10:27] Frans-Willem: Then why does JSLint throw "b used before it is defined" [10:32] beynon has joined the channel [10:32] breccan has joined the channel [10:32] Egbert9e9 has joined the channel [10:33] zemanel has joined the channel [10:34] _announcer: Twitter: "# HackingParty in Paris tonight! # # http://tinyurl.com/29pb9yd nodeJs xmppJs # twitter" [fr] -- Hacking Party. http://twitter.com/hackingparty/status/22166969214 [10:35] siculars has joined the channel [10:37] Frans-Willem: Hmmm [10:37] Frans-Willem: contemplating if I should go there [10:37] Frans-Willem: Not sure if they'll speak english :p [10:41] d0k has joined the channel [10:41] EyePulp: so is express the same as connect's router middleware? [10:41] EyePulp: or does express build off of connect? [10:42] larsvegas has joined the channel [10:42] gorakhargosh has joined the channel [10:44] dilvie: Has anybody written a jsLint Considered Harmful blog post, yet? [10:45] mscdex: the jslint roller is full [10:46] mscdex: :-D [10:46] Frans-Willem: Hmmm [10:47] Frans-Willem: Is there any sane alternative for [10:47] Frans-Willem: Math.floor(x) != x (e.g. x != numeric) [10:47] Frans-Willem: (or rather, x is not an integer) [10:51] micheil: uhhh [10:52] micheil: Frans-Willem: you mean x may be a string, "124" and you want that as a number? ParseInt or ParseFloat [10:53] dilvie: hm. [10:54] overra: is_int = function(x){ return ((Math.floor(x)!=x)?false:true); } -- if (is_int(x)) { ... } [10:56] dilvie: I'm confused. It must be past my bedtime. [10:56] overra: i might be too [10:57] dilvie: How are those different than: !isNaN(x) [10:57] micheil: what do you actually want? [10:57] maushu: So, I've heard some people are having problems with apricot. [10:58] micheil: if you want to find out if x is a number, then just a method like dilvie suggests is what you want [11:01] _announcer: Twitter: "I can't get no satisfaction. But you can get #nodejs data at http://www.startupweekly.com/hashtag/show/nodejs.html" -- Startup Weekly. http://twitter.com/startupweeklies/status/22168317176 [11:02] _announcer: Twitter: "@problogdesign yup! Free is great. Using it right now to play with node.js" -- Gustavo Tandeciarz. http://twitter.com/dcinzona/status/22168352867 [11:02] _announcer: Twitter: "Joyent's Heroko-like hosting for node.js apps - http://su.pr/2KjAYS" -- eBot. http://twitter.com/kicauan/status/22168365064 [11:02] dilvie: sorry.. Math.floor(x) != x looks like isNaN(x) to me. [11:03] dilvie: I am sleepy. =) [11:04] mscdex: !tweet [11:04] mscdex: :S [11:05] badaxx has joined the channel [11:09] dilvie: I want to play with joyent node SmartMachines. [11:10] voxpelli has joined the channel [11:10] crohr has joined the channel [11:13] pquerna has joined the channel [11:14] mape: dilvie: Are you in the kockout? [11:15] ryan[WIN] has joined the channel [11:15] swaj has joined the channel [11:15] jetienne has joined the channel [11:16] dilvie: mape: sadly, no. [11:16] MattJ has joined the channel [11:16] mape: Ah k :/ [11:17] ph^ has joined the channel [11:18] dilvie: is mongoose usable? [11:18] jimt has joined the channel [11:20] maushu: dilvie: Yup. [11:24] jacquesc has joined the channel [11:27] mAritz: nohm is usable as well... if you know how to use it xD [11:29] maushu: mAritz: Go to the corner. [11:29] mAritz: border-radius: 5px; [11:29] mAritz: sorry, there are none [11:29] mAritz: ACTION dodges maushus attack [11:30] maushu: ACTION fires all weapons. [11:31] robinduckett: -moz-border-radius: 5px; [11:31] sonny has left the channel [11:31] robinduckett: -webkit-border-radius: 5px; [11:32] robinduckett: -o-border-radius: 5px; [11:32] robinduckett: (for completeness) [11:32] mAritz: NO! DOWN WITH VENDOR BS! [11:32] dilvie: mAritz: usable to me means that it has enough documentation that I don't have to refer to the source code to figure out basic use... [11:32] mAritz: :P [11:32] mAritz: you only have to refer to the tests [11:34] mAritz: (i know, i know... but as long as there's no obvious interest in nohm, i'll just use it for myself and neglect docs. [11:37] dilvie: why should I chose it instead of MongoDB? [11:38] dilvie: (this is your chance to get somebody besides you using it...) [11:39] badaxx has joined the channel [11:42] robinduckett: use [11:42] robinduckett: couchdb [11:42] robinduckett: if you're trying to choose between something and mongo [11:42] robinduckett: ignore both and use couch [11:42] mAritz: dilvie: you should only use nohm if you really want to use redis as your database. [11:42] robinduckett: like all the coolfags [11:44] c4milo has joined the channel [11:48] _announcer: Twitter: "Expected: After the festival node.js Twitter clone" [ja] -- こば@精神の安定が迷子. http://twitter.com/KOBA789/status/22170738416 [11:50] badaxx has joined the channel [11:50] mape: ryah: in the npm tutorial you use vim, but that isn't installed by default, just a small thing [11:51] tav has joined the channel [11:53] maushu: Ok, I'm onto something on this debugging business. [11:55] maushu: Anyone has any idea what this Tool header is for, though? [11:55] maushu: http://code.google.com/p/chromedevtools/wiki/ChromeDevToolsProtocol [11:55] maushu: Tool (required) - a string specifying the Tool that will handle the message. [11:56] Ori_P_ has joined the channel [11:58] webr3: re: is_int = function(x){ return ((Math.floor(x)!=x)?false:true); } <-- yoda code | simpler --> is_int = function(x){ return Math.floor(x)==x; } [12:00] maushu: You know you are doing something wrong when you use boolean values as responses. [12:01] maushu: Besides, you could do parseInt(x)==x; [12:06] _announcer: Twitter: "Application hosting Node.js! http://nodeknockout.posterous.com/countdown-to-knockout-post-11-deploying-to-jo" [pt] -- Nerdson. http://twitter.com/nerdson/status/22171862838 [12:15] jelveh has joined the channel [12:18] Frans-Willem: Ok [12:18] Frans-Willem: so on the is_int part [12:18] Frans-Willem: I want to know if a string [12:18] Frans-Willem: like "124", is numeric & integer [12:18] Frans-Willem: > /^[0-9]+$/ [12:18] Frans-Willem: js> "test" [12:18] gbot2: Frans-Willem: "test" [12:18] micheil: webr3: far simpler is function is_int = function( return !isNaN(x); } [12:18] Frans-Willem: js> isNaN("test") [12:18] gbot2: Frans-Willem: true [12:18] Frans-Willem: js> isNaN("124") [12:18] gbot2: Frans-Willem: false [12:18] Frans-Willem: js> isNaN("124.3") [12:18] gbot2: Frans-Willem: false [12:19] Frans-Willem: That's where it fails [12:19] micheil: hmm.. [12:19] micheil: js> 5.prototype [12:19] gbot2: micheil: Error: SyntaxError: missing ; before statement: 5.prototype ..^ [12:20] Frans-Willem: js> /^[0-9]+$/.test("124.3") [12:20] gbot2: Frans-Willem: false [12:20] Frans-Willem: js> /^[0-9]+$/.test("124") [12:20] gbot2: Frans-Willem: true [12:20] micheil: regex isn't the right way for this [12:20] Frans-Willem: http://jsperf.com/check-integer [12:21] Frans-Willem: regexp outperforms Math.floor [12:23] Frans-Willem: http://jsperf.com/check-integer [12:23] Frans-Willem: try now [12:23] Frans-Willem: all methods I could think of [12:23] Frans-Willem: regexp outperforms all :/ [12:23] larsvegas has joined the channel [12:23] micheil: http://jsperf.com/check-integer/2 [12:23] micheil: I can go faster. [12:23] loincloth has joined the channel [12:24] Frans-Willem: micheil: Still, on chrome here, the regexp outperforms both parseInt and Math.floor [12:24] micheil: hmm.. [12:25] virtuo has joined the channel [12:26] micheil: I can't see why regex should be so far. [12:26] micheil: *fast [12:26] micheil: unless it's caching [12:26] Frans-Willem: Probably because V8 compiles it into machine code? [12:27] tableton: function is_int(x) {return !!(+x && (+x == x >> 0)); } [12:28] Frans-Willem: pfff, wow [12:29] Frans-Willem: tableton: Regret to admint that regexp is *still* faster [12:29] matt_c has joined the channel [12:29] Frans-Willem: http://jsperf.com/check-integer/3 [12:30] tableton: agree [12:32] Frans-Willem: Guess RegExp is the way to go, then [12:32] Frans-Willem: tbh, don't really see why that's considered ugly [12:34] loinclot_ has joined the channel [12:35] dilvie: Frans: have you tried +num === num [12:36] dilvie: ? [12:36] Sembiance: morning everyone :) [12:36] Frans-Willem: js> var num="123.4"; (+num === num); [12:36] gbot2: Frans-Willem: false [12:36] Frans-Willem: js> var num="123"; (+num === num); [12:36] gbot2: Frans-Willem: false [12:36] Frans-Willem: js> var num="text"; (+num === num); [12:36] gbot2: Frans-Willem: false [12:36] Frans-Willem: Doesn't work :/ [12:37] dipser: because num is a string ^^ [12:37] dilvie: js> var num = 123.4; (+num === num); [12:37] gbot2: dilvie: true [12:37] Frans-Willem: Well, yes, but that was the whole point :p [12:37] Frans-Willem: I wanted to see if a string was an integer [12:37] dilvie: oh [12:37] dipser: +num isnt a string so you cant compare with === [12:38] dilvie: js> var num = "123.4"; (+num == num); [12:38] gbot2: dilvie: true [12:38] dilvie: js> var num = "blah"; (+num == num); [12:38] gbot2: dilvie: false [12:39] Frans-Willem: dilvie: 123.4 is not an int, should return false : [12:39] Frans-Willem: :p [12:39] dilvie has joined the channel [12:39] dilvie: sorry. [12:39] dilvie: missed that list bit. [12:39] dilvie: What? [12:40] Frans-Willem: dilvie: 123.4 is not an int, should return false : [12:42] tableton: Frans: try to do without is_int call, but evaluating at once > x2 = (+x1 == x1 >> 0); [12:43] _announcer: Twitter: "So do not see ... http://nodejs.org you have ever been in a PARRÚS xD" [gl] -- bugyou. http://twitter.com/bugyou/status/22174200898 [12:44] dilvie: oops. =) [12:45] Frans-Willem: tableton: RegExp still outperforms :/ [12:45] Frans-Willem: I think in that was, x1 is converted to a number *twice* [12:45] Frans-Willem: whereas the regexp doesn't convert it at all [12:47] dilvie: Frans: can you be sure that you're always going to get the value from a string? [12:47] tableton: yeap. funny, in firefox 3.6.8 (linux) "wihout call" performs 42% faster than when calling function [12:48] Frans-Willem: dilvie: Actually, no, I don't actually ever convert it to a number [12:48] Frans-Willem: basically, it's for getting data from a DB [12:48] Frans-Willem: e.g. [12:48] Frans-Willem: SELECT 1 as first, 2 as second, 3 as third; [12:48] Frans-Willem: should get you [12:48] Frans-Willem: {first: 1, second: 2, third: 3} [12:48] Frans-Willem: but [12:48] Frans-Willem: SELECT 1 as "0", 2 as "1", 3 as "2"; [12:48] Frans-Willem: should get you [12:48] Frans-Willem: [1,2,3] [12:48] Frans-Willem: So I want to quickly check if all column names are numeric/unknown [12:49] Frans-Willem: then either create an object or an array [12:49] Frans-Willem: and then use the [] operator (which when given a numeric argument will convert to string anyway) to set it [12:50] dilvie: the lesson here: regex is fast. [12:52] Frans-Willem: definitely in V8 [12:52] Ysinopsis has joined the channel [12:52] jamescarr_ has joined the channel [12:53] ajpiano has joined the channel [12:54] _announcer: Twitter: "node.js sounds interesting ~" [ja] -- ojimac. http://twitter.com/ojimac/status/22174930314 [12:56] Blink7_ has joined the channel [12:56] micheil: hmm.. someone should write a node powered bittorrent client/server [12:57] trotter has joined the channel [12:57] robinduckett: ahem [12:57] robinduckett: I already am [12:57] robinduckett: FOR MY ABSOLUTELY LEGAL TORRENT SITE [12:58] Sembiance: heh [12:58] Sembiance: robinduckett: legal.torrents.no.really.legal.seriously.dude.all.legal.torrents.ok.whatever.believe.me.or.dont.com [12:59] mAritz: Frans-Willem: is regex still faster for greater numbers? the math methods shouldn't need longer for longer strings but the regex definitely will. (even thought 40% faster is quite a bit. might be enough to stay ahead) [12:59] robinduckett: legal-linux-release-torrents-only.com [12:59] robinduckett: legal-open-source-binary-torrents.com [12:59] robinduckett: etc [12:59] mAritz: Sembiance: good luck getting a subdomain on dont.com :D [13:00] robinduckett: probably easier than getting a subby off not.com [13:00] robinduckett: apparently you can get ".co" TLD now [13:00] robinduckett: brb going to register facebook.co to mine passwords [13:01] mAritz: haha :D [13:02] Burgestrand has joined the channel [13:02] virtuo has joined the channel [13:02] robinduckett: all i'd need to do to not get sued is have a picture of a face in a book and be like "whut, there's a website called facebook.com? lordeh, bet it's got all kinds of pictures of books with faces in them" [13:02] blaines has joined the channel [13:02] mAritz: Frans-Willem: wow, in fact: the longer the number the slower are the non-regex versions while the regex stays the same. what's going on here? (i'm on opera) [13:03] mAritz: robinduckett: and then sell it by barking at the judges. [13:03] robinduckett: rofl [13:03] wattz: good morning [13:03] robinduckett: straws in my nose, underpants on my head [13:03] robinduckett: "bloop" [13:04] mAritz: ACTION declares robinduckett as absolutely innocent on all counts. [13:04] robinduckett: woo hooo! i mean, "bloop". [13:04] wattz: i wish work would up grade my mac to snow leopard already.. [13:05] maushu: ...break doesn't work. [13:05] maushu: Oh god! The script doesn't break! We are all going to die! [13:05] wattz: heh [13:06] wattz: how's it going maushu [13:06] dnolen has joined the channel [13:07] maushu: Oh wait, the command is suspend. [13:07] maushu: All is well. [13:07] maushu: wattz: Poking around the debugger protocol. [13:07] wattz: ahh [13:07] wattz: im on day 6 of flex/bison [13:07] wattz: but it's starting to make sense now [13:07] wattz: weird stuff [13:09] maushu: Oh, natural language parser? [13:09] maushu: I remember poking around that years ago. [13:09] wattz: im building a template engine [13:09] wattz: for an application server [13:10] maushu: Sounds serious. [13:10] wattz: eh [13:10] wattz: it wasn't going to be [13:10] wattz: but i don't handle challenges well :P [13:11] wattz: and when i did a tutorial and saw all these people complaining about yacc/lex [13:11] _announcer: Twitter: "#node.js is actually quite nice :) I like it :) #programming #javascript" -- Krzysztof Wilczynski. http://twitter.com/kwilczynski/status/22176122338 [13:11] wattz: i took it as a challenge to develop something nice for it [13:11] wattz: i could actually just get away with lex just to grab and convert template code to js [13:11] wattz: like all the resig based template engines out there [13:12] robinduckett: I want to get a smarty/dwoo alike template engine for node. [13:12] wattz: but it's slowly turning into it's own embedded langauge [13:12] wattz: lol [13:12] matt_c: ACTION yawns and stretches. [13:12] wattz: robinduckett: that's what this is, just in C++ [13:12] maushu: ryah: I have two questions, does the code in an addon need to be non-blocking/async and what is difference between running a script in debug mode performance-wise? [13:12] wattz: js is my actual 'template language' [13:12] maushu: wattz: You're doing it wrong. [13:13] wattz: ._o [13:13] wattz: maushu: im making server-side js embeddable in html.. (per "their" request) [13:13] maushu: JS is the alpha and the omega. You can't use it as a simple 'template language'. [13:13] maushu: wattz: Thats all? node-template [13:14] wattz: maushu: i dream of using node for this [13:14] wattz: work related [13:14] wattz: all my personal stuff is being switched to node [13:16] wattz: maushu: by complete accident, im creating a programming language [13:17] maushu: You accidentally a programming language? [13:17] wattz: creating [13:17] dilvie: I'm kinda partial to ejs [13:17] Ysinopsis: the whole thing? [13:18] wattz: dilvie: me too [13:18] wattz: Ysinopsis: all the basics are there [13:18] wattz: lol [13:18] maushu: *sigh* Useless. [13:18] _announcer: Twitter: "Want to help test one of Joyent's new Node.js SmartMachines? Ask your favourite Joyent employee for a code! http://no.de/" -- Jim Pick. http://twitter.com/jimpick/status/22176645401 [13:18] wattz: maushu: hey, they are paying me to do this, and it's fun [13:18] maushu: wattz: http://knowyourmeme.com/memes/i-accidentally [13:19] badaxx has joined the channel [13:19] wattz: hahah [13:19] badaxx: I get the error "Too many files open" when I try to spawn a python script. How can I fix that? :/ [13:20] matt_c: Does anyone have extra no.de coupon codes kicking around? I'd love to play with it. [13:20] micheil: hmm.. wouldn't be bad to test node-websocket-server on it [13:21] maushu: matt_c: Ask your favourite Joyent employee. [13:22] robinduckett: i'm about to post one [13:22] robinduckett: first come [13:22] matt_c: maushu: I have to pick a favorite? [13:22] robinduckett: first serve [13:22] robinduckett: 5 [13:22] robinduckett: 4 [13:22] robinduckett: 3 [13:22] robinduckett: 2 [13:22] robinduckett: 1 [13:22] robinduckett: limufrigo [13:23] _announcer: Twitter: "How come I didn't know about node.js? Javascript is practically my favorite programming language!" -- Jason Gill. http://twitter.com/iota/status/22176988223 [13:23] maushu: matt_c: Yes. [13:23] confoocious has joined the channel [13:23] robinduckett: I literally just posted a coupon code just then if anyone wanted to use it [13:23] matt_c: robinduckett: Ha, thanks. You're my favorite Joyent employee :) [13:23] drudge: is http://conceited.net loading for everyone? [13:23] robinduckett: I'm not a joyent employee but :D [13:23] robinduckett: aye [13:25] maushu: Yup. [13:25] drudge: thanks guys [13:26] maushu: Funny. Two seconds looking at the page and I *knew* it was a macos software shop. [13:26] _announcer: Twitter: "Put nodejs, npm as to enter into .... Au au." [ja] -- 奥村 隆一. http://twitter.com/okuryu/status/22177254779 [13:26] drudge: maushu: hows that? :) [13:27] maushu: The style. Do these guys use the same designer or something? [13:27] wattz: what's no.de ko? [13:27] drudge: maushu: no, we used some kid actually :P [13:27] maushu: The same kid everyone uses? It's the only way. [13:28] maushu: wattz: http://nodeknockout.com/ [13:28] drudge: we are actually looking for a designer now for a redesign, can't find anyone with availability [13:29] wattz: oh [13:29] dnolen has joined the channel [13:30] Frans-Willem: Meh [13:30] Frans-Willem: How come all Node.js demos are offline atm :/ [13:30] Frans-Willem: Boss was showing interest in Node.js [13:31] Frans-Willem: but couldn't really show him anything [13:31] Frans-Willem: not even the cursors one [13:31] davidsklar has joined the channel [13:31] Frans-Willem: everything was down :@ [13:31] mape: Frans-Willem: http://wargamez.mape.me/ [13:31] Frans-Willem: So ehm [13:31] Sembiance: holy shit. as of today, the single ad on my website generates more revenue than my day job. geez, maybe it's time to quit [13:31] Frans-Willem: what do I do there :p? [13:32] mape: Frans-Willem: well it shows this room [13:32] Frans-Willem: mape: pew pew pew! [13:32] mape: Frans-Willem: geolocates people who talk here [13:32] caolanm: Sembiance: nice :) ...what's the website? [13:32] maushu: Why the heck everyone "pew pew"s everytime they see that. [13:32] Frans-Willem: robinduckett: *shoots your way* [13:32] mape: maushu: becuase that is how it sounds [13:32] Frans-Willem: maushu: KABLAM! You're dead [13:33] Sembiance: caolanm: http://worldofsolitaire.com [13:33] maushu: No, I have shields. [13:33] Frans-Willem: dilvie: I shot you all the way on that other continent! [13:33] Frans-Willem: Sembiance: got you! [13:33] Sembiance: caolanm: doesn't use node.js though, I'm using node.js for future projects :) [13:33] Sembiance: Frans-Willem: huh? :) [13:33] Frans-Willem: nvm :p [13:33] Frans-Willem: just being silly [13:33] Sembiance: hehe [13:34] caolanm: Sembiance: cool :) [13:34] Sembiance: it's crazy though. I never even wanted to put one up there, my wife finally talked me into it. we were just hopinh it would cover server costs [13:35] maushu: Someone was swimming to the east of Australia one of these days. [13:35] Frans-Willem: Sembiance: Which site ? [13:35] ben_alman has joined the channel [13:35] maushu: Now that, is a cool guy. IRCing while swimming in the middle of nowhere. [13:35] Sembiance: Frans-Willem: http://worldofsolitaire.com [13:35] Frans-Willem: oh wait [13:35] Frans-Willem: your solitaire one [13:35] Sembiance: yah [13:35] Frans-Willem: Heh, doesn't surprise me [13:35] Sembiance: I guess people like their solitaire ;) [13:35] maushu: Sembiance: You just upload a drug into the intertubes. Congratulations. [13:36] Sembiance: maushu: heh [13:36] Sembiance: it makes me feel so 'lazy' for not actually finishing any of my other projects [13:36] Frans-Willem: Sembiance: If you want, you could give up your dayjob, focus more on making those kind of things [13:36] Sembiance: I have a hard time keeping motivated, keeping excited [13:36] jetienne: You will need a coupon code to get your node smarmachine. <- http://no.de need a coupon... how can i get onoe ? [13:36] Sembiance: Frans-Willem: if I was single, I would have quit my day job by now, so I could code whatever I wanted to. But I'm married so I have other things to consider :) [13:36] jherdman has joined the channel [13:36] micheil: jetienne: no idea [13:37] Frans-Willem: Sembiance: if it's covering your day-job income, why not ? [13:37] micheil: btw, mape, is wargamez on websockets? [13:37] mape: jup [13:37] micheil: nice [13:37] micheil: mape: my server or, sockets.io, or other? [13:38] mape: yours, never got socket.io working properly [13:38] ashb: randomly hit this when looking for something else [13:38] ashb: http://howtonode.org/deploying-node-upstart-monit [13:38] maushu: Real men do it RAW. [13:38] ashb: uostart will monitor the jobs for you - whats the point of monit? [13:38] micheil: maushu: good luck with that :P [13:38] ashb: *p [13:39] Sembiance: Frans-Willem: it's certainly tempting [13:39] _announcer: Twitter: "Of all the NodeJS frameworks http://j.mp/de4Zq1 Which one is the most active and popular? Currently leaning on Simon's djangode" -- Peter Bengtsson. http://twitter.com/peterbe/status/22178180032 [13:39] micheil: ashb: I believe monit will do memory watching and stuff [13:39] maushu: micheil: I will build everything from the ground up. [13:39] micheil: ashb: where as upstart is just: is process X running [13:39] ashb: micheil: it may well do, but all its being used for is that something is listening on the port [13:39] Frans-Willem: Sembiance: Maybe you could work one day less at your day-job, and invest that into developing other things like worldofsolitaire ? [13:39] maushu: Now excuse me while I start a big bang. [13:39] micheil: ashb: well, I guess it is just an example [13:41] micheil: mape: what was that control panel thing you were working on? [13:41] mape: micheil: idea is when node gets dtrace you use that control panel to oversee and profile your app [13:41] micheil: nice, what was the url? :P [13:42] mape: get real time cpu/mem usage, as well as "click to profile" to see what functions you need to optimize [13:42] zapnap has joined the channel [13:42] Sembiance: Frans-Willem: hrm, had not thought about that... [13:42] mape: micheil: http://node-monitoring.mape.me/ [13:42] mape: micheil: http://node-monitoring.mape.me/simple/ for less fuzz [13:43] gf3 has joined the channel [13:43] joshbuddy has joined the channel [13:43] mape: it is still a little wonky but performance is good enough to run more or less smooth on an iPad [13:44] davidwalsh has joined the channel [13:44] badaxx: ryah: any suggestions why I get "pipe(): too many open files" in my socketserver when executing a python script via spawn? [13:45] _announcer: Twitter: "Still node.js fucking thing. "" [ru] -- Dmitriy Nyu. http://twitter.com/dmitriy_nyu/status/22178664521 [13:45] Egbert9e9 has joined the channel [13:46] mape: hmm [13:46] proppy: mape: is it your entry for node-ko ? [13:46] mape: proppy: which? [13:46] proppy: the monitoring thing [13:46] drudge: that's pretty awesome mape [13:47] mape: Oh no, that would be cheating [13:47] proppy: :) [13:47] proppy: are you alone if your group ? [13:47] mape: alone [13:48] aheckmann has joined the channel [13:48] proppy: can't want to see your entry [13:49] icozzo: woot, the number of first-time filers for unemployment insurance fell more than expected last week [13:49] icozzo: recession is over guys! [13:49] maushu: It's starting again. [13:49] micheil: icozzo: there was no recession [13:49] proppy: are you using raphale for drawing things ? [13:49] _announcer: Twitter: "Nodejs latest build yourself, and drinking Rerelease Meke Meke. In 行Keta." [ja] -- 奥村 隆一. http://twitter.com/okuryu/status/22178975397 [13:49] mape: proppy: Oh you'll want to see my entry! [13:49] mape: hehe, yeah raphael for the SVG stuff [13:49] drudge: twss [13:50] voxpelli has joined the channel [13:50] icozzo: does the twitter bot announce every single node.js related tweet? or just some? [13:50] proppy: is the node-monitoring thing monitoring itself ? [13:50] mape: no just dummy [13:50] icozzo: there seems to be a disproportionate amount of japanese and portugese posts on the topic [13:51] icozzo: s/portugese/portuguese [13:51] proppy: mape: do you plan to push it on github ? [13:52] micheil: I love the fact that "push it" can be slang for drug dealing [13:52] drudge: node is a drug? :) [13:52] micheil: icozzo: most [13:52] proppy: drudge: kinda [13:52] beynon: do people use node for non web apps? like just as a regular programming env? [13:52] mape: proppy: well it is just the frontend, easy enough to copy paste, don't wanna push it to github since it is so sloppy/doesn't really do something [13:52] _announcer: Twitter: "Heroku-like thing for node.js http://bit.ly/bE6Brt" -- Ryan Mark. http://twitter.com/ryanmark/status/22179225790 [13:53] proppy: mape: oh ok, it is based on http://github.com/mape/node-profile ? [13:53] mape: no, just frontend and dummy data [13:54] voxpelli has joined the channel [13:54] SamuraiJack_ has joined the channel [13:55] proppy: mape: it is still a very nice demo ! [13:55] mape: :) [13:55] drudge: http://floodlite.tumblr.com/post/1011047822/apples-attention-to-detail [13:56] pgriess has joined the channel [13:56] badaxx_ has joined the channel [13:57] dnolen has joined the channel [13:57] hpoydar has joined the channel [13:57] _announcer: Twitter: "Our new node.js Smart Machines: http://no.de/" -- David Young. http://twitter.com/davidpaulyoung/status/22179589294 [13:58] _announcer: Twitter: "I've been writing a model framework that can run on V8 javascript. Could be good for using with node.js http://gist.github.com/551423" -- Dave Hall. http://twitter.com/etianen/status/22179623708 [13:58] javajunky: looks lot like mongoose that model framework [13:59] javajunky: well, I suppose they all look alike really :) [14:00] _announcer: Twitter: "How to use the Joyent node.js service: http://nodeknockout.posterous.com/countdown-to-knockout-post-11-deploying-to-jo" -- David Young. http://twitter.com/davidpaulyoung/status/22179821669 [14:00] drudge: http://i.imgur.com/1gF1j.jpg [14:09] Ori_P has joined the channel [14:13] _announcer: Twitter: "Im working on a new node.js example to monitor web connections in realtime without ssh, only http... Stay connect to http://www.it-wars.com" -- Vincent RABAH. http://twitter.com/itwars/status/22180827978 [14:14] jashkenas_ has joined the channel [14:14] micheil: morning jashkenas_ [14:14] jashkenas_: 'morning, micheil. [14:14] micheil: sup? [14:14] kennon has joined the channel [14:15] badaxx_: do I have to close files in the callback with fs.close or fs.close(fd)? [14:15] micheil: generally. [14:15] micheil: I think [14:15] micheil: ACTION generally uses streams, so doesn't know for sure [14:15] confoocious has joined the channel [14:17] dilvie: got curious. [14:18] dilvie: Wanted to profile test for any number. [14:18] nerdEd has joined the channel [14:18] dilvie: http://jsperf.com/test-for-num [14:18] _announcer: Twitter: "http://bit.ly/al1yyB node.js KO aka Rails rumble for node.js" -- victorcoder. http://twitter.com/victorcoder/status/22181171743 [14:19] dilvie: the winner keeps changing. [14:20] dilvie: my regex must suck. [14:20] dilvie: regex won the test for int earlier. [14:21] dilvie: This is a silly test. =) isNaN works fine. [14:22] janne has joined the channel [14:23] dylang has joined the channel [14:24] _announcer: Twitter: "Tried to put Cygwin node.js. Installation was surprisingly smoothly. If I incidentally Hello world. It was also smoothly. Take a little time, how many try." [ja] -- komiya.atsushi. http://twitter.com/komiya_atsushi/status/22181645678 [14:25] SamuraiJack__ has joined the channel [14:25] _announcer: Twitter: "Dang neat, Joyent node support: http://nodeknockout.posterous.com/countdown-to-knockout-post-11-deploying-to-jo #nodeknockout #nodejs #node" -- fansipans. http://twitter.com/fansipans/status/22181722097 [14:25] maushu: God, I hate my job. [14:25] dilvie: maushu: why? [14:25] maushu: Multiple reasons. [14:26] ceej has joined the channel [14:26] jetienne: maushu: tell us, i fell you want to talk :) [14:26] jetienne: or i want to talk... more likely [14:26] maushu: First, it's my desktop. Jesus Christ this is a slow computer. As, it takes 5 seconds to open the context menu on the project window of visual studio. [14:27] javajunky: thats just visual studio, so painful [14:27] caolanm: maushu: just remember this channel is logged ;) [14:27] jetienne: yep slow computer to dev is ridiculously cheap [14:27] javajunky: can you use sharpdevelop ? [14:27] caolanm: but pls continue your rant [14:27] jetienne: maushu: he is right btw. i was kidding [14:27] wink_: caolanm: way to ruin it :< [14:28] maushu: Anyways, honesty to clients? Here? Yeah, right. [14:28] maushu: From their perspective the clients are bags of money. Thats all. [14:28] caolanm: wink_: heh, sorry! [14:29] maushu: It makes me twitch how dishonest some people are. [14:29] maushu: They crawl and drag around all possibilities to get the more money will doing the less as possible. It's disgusting. [14:29] dipser has joined the channel [14:29] dilvie: maushu: there's nothing I dislike more than working for a dishonest employer. [14:30] maushu: Yup. [14:30] jetienne: maushu: you seems frutrated [14:30] robinduckett: see [14:30] maushu: Whats next... oh yeah. [14:30] robinduckett: my problem is this [14:30] ruf has joined the channel [14:30] robinduckett: I work for a very honest employer. [14:30] robinduckett: Who honestly can't afford to pay me any more [14:30] sonnym has joined the channel [14:30] robinduckett: :( [14:30] aurynn: I have a great job. [14:31] maushu: I like programming in a quiet enviroment. Here? I don't even have a cubicle. I can basically hear every unrelated programming conversation around. [14:31] jetienne: i have no job, hire me :) [14:31] aurynn: maushu, headphones? [14:31] dilvie: me too! [14:31] dilvie: will crank out js for food [14:31] maushu: Temporary solution. There are so many musics I can hear before going crazy. [14:31] maushu: Besides, I like *silence*. [14:32] aurynn: Noise cancelling ? [14:33] maushu: aurynn: Tried it. Unless I got some for construction... [14:33] aurynn: :( [14:33] caolanm: silence is pretty difficult to achieve in an office [14:33] caolanm: can you work from home? [14:33] maushu: Anyways, vacation... I so wanted two weeks of vacation now. I would go with the family and maybe have my birthday at my grandparents old house. [14:34] maushu: Vacation denied. Currently in a critical phase to this project. [14:34] maushu: Hint: The project is always in the critical phase. [14:34] aurynn: As someone who works from home, I advise not working from home. [14:34] Frans-Willem: Hmmm [14:34] caolanm: aurynn: I'm not a fan either [14:34] Frans-Willem: what's a proper name for a callback that signals the end of something [14:34] maushu: caolanm: Denied. [14:34] maushu: Frans-Willem: 'end'. [14:34] aurynn: Frans-Willem, end [14:35] aurynn: youDone [14:35] Frans-Willem: Hmm [14:35] Frans-Willem: But it's also the error callback :/ [14:35] Frans-Willem: I'd originally wanted to go with final [14:35] Frans-Willem: but that's a reserved word [14:35] aurynn: That's not an end callback, that's an error callback [14:35] virtuo has joined the channel [14:35] maushu: My colleague and the guy that is right above me went on vacation. [14:35] maushu: Twice. [14:36] Frans-Willem: aurynn: I want to be able to give either one callback that signals everything, or a set of callbacks for some sub-parts, with one final callback being the end-all callback that either gets success or error [14:36] caolanm: maushu: escape! start a tunnel under your desk [14:36] gwoo has joined the channel [14:37] Deputaats_ has joined the channel [14:37] maushu: caolanm: I would just end on the floor below. It's a law firm. From the frying pan to the fire? [14:37] femtoo has joined the channel [14:38] maushu: Other thing, they have a in-house CMS. It was so bad that it wasn't funny. [14:38] aurynn: You're not trying to make partner; they'd treat you like a humanoid [14:38] dylang has joined the channel [14:38] maushu: I had to basically rewrite the whole CMS. [14:38] maushu: Did I get a congratulations or pat in the back? Nope. [14:39] _announcer: Twitter: "Install and run NodeJS from windows: http://boxysystems.com/?p=203" -- Christopher Pitt. http://twitter.com/verylastminute/status/22182822156 [14:39] evanpro has joined the channel [14:39] maushu: Forget about raises. I don't think I will ever get a raise. [14:39] maushu: The second I can get out of here... well, they will only see dust. [14:40] pquerna: man. solaris. [14:40] javajunky: The grass is not always greener. If you're unhappy then talk with your manager(s), if they can't help you, then leave. [14:40] maushu: javajunky: There is no grass around here! [14:41] maushu: Oh man, and the clients... the clients... [14:42] maushu: It's like, bad companies attract bad clients like flies. [14:42] maushu: Well, they probably go look for said clients because of the money or something. [14:42] drostie has joined the channel [14:43] ajpiano has joined the channel [14:43] loincloth has joined the channel [14:43] maushu: I just hope that in a couple of months I can look back and laugh. ._. [14:43] jashkenas_: maushu: where's "here"? [14:44] maushu: jashkenas_: Are you crazy? They probably have a internet proxy looking for keywords. [14:44] maushu: No way I'm saying the company's name. [14:44] javajunky: probably no point since your originating ip probably gives it away ? [14:45] maushu: Yeah, but I don't think they check every log. Just those that get triggered. [14:45] jashkenas_: maushu: I meant what city, but that's probably just as risky. [14:45] wink_: then say it in parts [14:45] dylang: mape: i'm getting a js error when npm update'ing connect-assetmanager-handlers [14:45] wink_: mi [14:45] wink_: cro [14:45] wink_: so [14:45] wink_: ft [14:45] wink_: see? :> [14:45] maushu: OH SHI- THEY ARE COMING! [14:45] micheil: maushu: netcabo.pt [14:45] micheil: ? [14:46] maushu: What? No. [14:46] maushu: Thats just their internet connection. [14:46] micheil: k [14:46] maushu: The company is not famous or anything, so it doesn't matter. [14:46] micheil: it's still interesting [14:46] micheil: (aka, now you've opened a can of worms) [14:46] wink_: lol dont do it [14:46] maushu: I feel better after all that. [14:47] caolanm: ACTION thinks we should stop playing the get maushu fired game [14:47] aurynn: irc-over-ssl [14:47] maushu: Actually. I want to get fired. [14:47] javajunky: save's him the problem of quitting though ? [14:47] m-m has joined the channel [14:47] maushu: ^ [14:47] javajunky: maushu: always quit rather than get fired, its easier for the next one, and you never know when you might need another one. [14:48] Ysinopsis: 10 proxies [14:48] _announcer: Twitter: "@mattpodwysocki yeah I'm waiting for native node.js as well - isn't this something that Microsoft can help with?" -- Demis Bellot. http://twitter.com/demisbellot/status/22183561543 [14:48] caolanm: maushu: if it really sucks get out of there, money's no fun if you're unhappy [14:48] softdrink has joined the channel [14:48] _announcer: Twitter: "is loving express.js and node... and now heroku." -- BenJam. http://twitter.com/BenJam/status/22183588969 [14:48] maushu: Yeah, I will get out of here soon enough. [14:48] mape: dylang: Spamming someone with 40 lines of text isn't a good idea [14:49] softdrink: mornin' fellow geeks. [14:49] maushu: Maybe focus on my ideas. I don't think I will ever feel like working for a company ever again. [14:49] micheil: softdrink: geeks? where? [14:49] dylang: mape: hah yeah, it's been over a decade since i used irc, i'm used to tools like campfire that let you paste code [14:49] softdrink: not here, certainly ¬¬ [14:50] aurynn: Dear websites: ads that cover up the content are not cool, especially because I've already zoomed in on my ipad and can't figure out why it just got all dark. [14:50] mw__ has joined the channel [14:50] micheil: dylang: create a gist.github.com of it. [14:50] softdrink: and they wonder why we use adblock. [14:50] kriszyp has joined the channel [14:50] Yuffster has joined the channel [14:50] caolanm: anyone here using couchapps? I'm interesting in finding some slick examples... [14:51] dylang: micheil: i know, finger memory is hard to fight. i need a macro that creates one automatically from this client (Linkinus). [14:51] softdrink: aurynn: if Atomic browser works on ipad, check it out. it has adblock. [14:52] softdrink: ooh, it does! http://atomicwebbrowser.com/ [14:52] bradleymeck has joined the channel [14:52] gerad has joined the channel [14:53] softdrink: There's a lite version for free, but i don't know what its limitations are [14:53] _announcer: Twitter: "Joyent just launched a Heroku/GAE-like platform for Node.js apps: http://no.de/" -- Richard Henry. http://twitter.com/richardhenry/status/22184017900 [14:54] softdrink: damn that's a nice domain name. [14:56] _announcer: Twitter: "I *must* begin to learn more server-side javascript and Node.js is particular. Here is a great article about it: http://bit.ly/78NNFh" -- Francesco Benetti. http://twitter.com/fbnt/status/22184202229 [14:57] bradleymeck: ACTION goes to check login details [14:58] marshall_law has joined the channel [14:59] kassandry has joined the channel [15:00] _announcer: Twitter: "Joyent grabbed a pretty slick domain name for their #nodejs servers: http://no.de/" -- Bill Casarin. http://twitter.com/jb55/status/22184566629 [15:01] _announcer: Twitter: "KO Node.js from Joyent: http://bit.ly/bE6Brt webapp # # # javascript cloud" [fil] -- Loggly, Inc.. http://twitter.com/loggly/status/22184620481 [15:01] [[zz]] has joined the channel [15:02] deadlyicon has joined the channel [15:02] _announcer: Twitter: "@peterbe no one popular one - sorta like php world in that way. I'm enjoying nodejs for jquery as template language in a python project." -- Rene Dudfield. http://twitter.com/renedudfield/status/22184718366 [15:02] maushu: http://jsperf.com/is-positive-integer [15:02] maushu: It seems that by sacrificing 5% tops in performance you get a more solid port verifier. [15:03] kodisha has joined the channel [15:03] zomgbie has joined the channel [15:03] [[zz]] has joined the channel [15:03] Frans-Willem: maushu: http://jsperf.com/is-positive-integer/2 [15:04] maushu: Frans-Willem: Thanks! [15:04] maushu: And holy crap, thats way faster. :D [15:04] Frans-Willem: Had a really cool discussion earlier about finding out how to test quickest [15:04] Frans-Willem: Although this one *will* reject '01' [15:04] maushu: Hmm. [15:04] Frans-Willem: You might want to do [15:05] Frans-Willem: /^[0-9]+$/.test(x) && x>0 instead [15:05] Alex-SF has joined the channel [15:05] wink_: holy hell, firefox blows at the regex benchmark [15:05] Frans-Willem: ? [15:05] Frans-Willem: in V8 it's a lot faster [15:05] wink_: yeah, firefox eats it though :P [15:06] Frans-Willem: http://jsperf.com/is-positive-integer/2 [15:06] maushu: http://jsperf.com/is-positive-integer/3 [15:06] maushu: With the new regex. [15:06] wink_: wow, v8 is much faster [15:06] Frans-Willem: maushu: That one won't check for >0 though [15:06] Egbert9e9 has joined the channel [15:06] dilvie: frans: did you see my test for num prof? [15:07] Frans-Willem: No? [15:07] jakehow has joined the channel [15:07] maushu: Frans-Willem: A negative number needs to have - before the number, correct? [15:07] benburkert has joined the channel [15:07] maushu: Well, there is the zero. Dammit. [15:07] Frans-Willem: maushu: Yes [15:07] matt_c: ACTION thinks checking for "doesn't start with -" would be much faster than the && check. [15:07] dilvie: http://jsperf.com/test-for-num [15:07] matt_c: Oh, right. [15:08] Frans-Willem: wtf [15:09] dilvie: there's an OR in my regex [15:09] Frans-Willem: I'd hoped that storing the value of parseInt would make the test faster [15:09] Frans-Willem: e.g. [15:09] Frans-Willem: (y=parseInt(x)) == x && y>0 [15:09] Frans-Willem: but that's only slowing it down [15:09] softdrink: http://jsperf.com/is-positive-integer/4 <—double bitwise not [15:10] paul__ has joined the channel [15:10] Frans-Willem: dilvie: what's /^[0-9]+|\.+$/ supposed to match? that will match both "012suckit" and "suckit..." :/ [15:11] maushu: I made that test for this: http://github.com/ry/node/blob/master/lib/net.js#L858 [15:11] dilvie: Frans: I haven't had any sleep. =) [15:12] evanpro: wow [15:12] evanpro: no.de is a h4wt domain name [15:13] Frans-Willem: I wish you could use jsperf with different inputs [15:13] Frans-Willem: e.g. have that numeric test [15:13] Frans-Willem: and have all of them run on "123", "abc", 123, -123, ad 1.23 or something :/ [15:13] Frans-Willem: Because now we're only really testing the speed on either hits, or misses, not both [15:14] softdrink: note: the double not won't work reliably for '0', because ~~'zomgwtf' == 0 [15:15] jacobolus has joined the channel [15:15] dilvie: hmm [15:15] dilvie: that gives me an interesting idea. [15:17] softdrink: methinks firefox's coercion is slow [15:18] softdrink: fastest on my firefox is the original at about 6.6M, and in chrome the double not is fastest at about 18.9M [15:19] paul__ has joined the channel [15:22] streampunk has joined the channel [15:24] _announcer: Twitter: "node.js read the article. It's called a reduced one language may not memorize well. But I'll be all that JS interpreter? Java and. NET slower than I think you? Ali though light system would end up writing a batch at night to feel Why not just JS. I wonder if my misunderstanding?" [ja] -- foldrr. http://twitter.com/foldrr/status/22186451026 [15:24] deadlyicon has joined the channel [15:24] softdrink: ouch. that grammar broke my brainmeats. [15:26] maushu: http://jsperf.com/number-generators [15:26] maushu: Man, I'm having fun with jsperf. [15:26] wink_: softdrink: me too, although if you look at the tweet what we saw was a horribly translated version :p [15:26] danielzilla has joined the channel [15:27] softdrink: it's fun. i wish i had something i could run locally though [15:27] softdrink: yeah machine translation is pretty hit and miss. mostly miss. [15:27] maushu: Are you saying bad things about announcer? [15:27] matt_c: brainmeat is officially the word of the day now though. [15:28] softdrink: mashu: http://www.rgba.org/articles/sfrand/sfrand.htm [15:28] softdrink: doubt it'll be js friendly, but it's an interesting read [15:30] softdrink: i'm not even sure where i got 'brainmeats' from. it may have been invader zim, but i can't recall what episode or the context [15:30] maushu: softdrink: Porting code... [15:30] Egbert9e9 has joined the channel [15:30] softdrink: might get lucky mashu, js numbers are 32 bit floats anyway, right? [15:32] maushu: No idea how to do this part: *((float*)&a) [15:32] _announcer: Twitter: "I'd like to play around with node.js. Anyone recommend any good tutorials?" -- Yan Sarazin. http://twitter.com/StatikPulse/status/22187088710 [15:33] inimino: 64 bits [15:33] softdrink: mashu: that basically tells the compiler "hey, that int is really a float. trust me." [15:33] maushu: I will use the original. [15:33] softdrink: inimino: they're doubles? [15:33] wink_: yeah its just a fancy cast int -> float [15:33] softdrink: then yeah this code won't work hehe [15:33] inimino: maushu ⋱ If 'a' is an int, there's no efficient way. [15:33] samsonjs has joined the channel [15:33] maushu: Number(a) ? [15:33] inimino: no, that'll give you a number that has the same value [15:34] softdrink: that code is pretty c-specific [15:34] inimino: *((float*)&a) is actually not changing the representation, but interpreting it as a float, which is a trick. [15:34] maushu: Yeah. [15:35] softdrink: "The address of a is really a pointer to a float. Give me that value." [15:35] softdrink: or something like that [15:36] wink_: yes [15:36] confoocious has joined the channel [15:36] softdrink: my C is rusty :( [15:36] inimino: ... which gives you a different value if a had been constructed as an int. [15:36] softdrink: sidenote: this is a good read http://sweatte.wordpress.com/syntax/javascript-idioms-and-gotchas/ [15:37] streampunk has joined the channel [15:38] evanpro: Wow, I had no idea about this Node Knockout program [15:38] steadicat has joined the channel [15:38] gerad: evanpro: hahaha, we haven't exactly been keeping it a secret! [15:38] maushu: softdrink: My C is not rusty. It's dead, decaying and shambling around as a zombie eating brains. [15:38] maushu: *brainmeat [15:38] wink_: mmm braaaainnnsssss [15:38] bradleymeck: it is the essence of wetness, the flower in the seed, it is... http://nodeknockout.com/ [15:38] evanpro: I'd love to kick this project http://github.com/benjaminws/stomp-js into a usable STOMP server [15:38] softdrink: (if you're into opengl/dx, check out "Elevated" by rgba… the group that the random number article is from. video: http://www.youtube.com/watch?v=_YWMGuh15nE&hd=1) [15:38] evanpro: bradleymeck, +1 [15:39] softdrink: (four. kilobytes. of. awesome.) [15:39] evanpro: gerad, I've been wanting to check out node.js for a while [15:39] evanpro: And checked it out and built it this morning [15:39] evanpro: Joined this channel [15:39] evanpro: and saw the no.de announcement [15:40] evanpro: Kind of a big weekend to check things out! [15:40] softdrink: i miss programming in c. [15:40] jimmybaker has joined the channel [15:40] mikeal has joined the channel [15:41] softdrink: let's see if that demo runs in vmware fusion :D [15:41] softdrink: *boots vm* [15:42] gerad: hahaha [15:42] gerad: tell me about it! [15:42] gerad: evanpro: nice timing [15:42] evanpro: bizarre timing [15:42] maushu: So, any chrome version that already comes with webgl turned on by default? [15:43] softdrink: awww… it just crashes in vmware :( [15:43] wink_: mape's wargamez thing is pretty neat [15:43] bradleymeck: maushu, dont think so, can check chromium? [15:44] maushu: softdrink: What were you hoping for? Angels, light from above and hymn? [15:44] maushu: bradleymeck: Not even 7? ;_; [15:44] softdrink: nah [15:44] mikeal1 has joined the channel [15:45] softdrink: you can pass a command line flag to enable it in the dev channel [15:46] c4milo has left the channel [15:47] joshbuddy has joined the channel [15:47] softdrink: well, kkreiger almost ran. [15:47] benburkert has joined the channel [15:47] softdrink: --enable-webgl [15:47] wink_: Frans-Willem: test [15:48] Frans-Willem: wink_: Test right back at you [15:48] wink_: lol sorry, wanted to see mape's thing draw a big arc [15:48] wink_: and you are farthest away from me ;> [15:48] Frans-Willem: Heh :p [15:48] softdrink: bbiaf. [15:48] thejefflarson has joined the channel [15:50] _announcer: Twitter: "Node.js Knockout - A competition to build a website on the node stack in 48hrs: http://nodeknockout.com/ @node_knockout /cc @zef" -- Florian Bahr. http://twitter.com/fbahr/status/22188487188 [15:50] bradleymeck: node is a stack now? [15:51] amerine has joined the channel [15:51] maushu: bradleymeck: Node can be whatever you want. [15:52] bradleymeck: but doesnt stack imply needing more than just node? [15:54] _announcer: Twitter: "Node.JS - Basics of Asynchronous Programming, Part 1 # stickr http://stickr.com/rmaksim/sticker/4310607" [ru] -- Razumenko Maksim. http://twitter.com/rmaksim/status/22188799094 [15:55] _announcer: Twitter: "shit's bout ready to get medieval up in here http://no.de/signup -- #heroku for #node.js" -- ian eyberg. http://twitter.com/feydr/status/22188929366 [15:57] wink_: mape is a damn machine.. [15:58] maushu: wink_: Terminator? [15:58] confoocious has joined the channel [15:58] maushu: mape: Thought of using chronolapse for the knockout? [15:58] wink_: probably... [15:58] wink_: i'd want to be on his team for the knockout :P [15:59] mape: maushu: Don't use windows [15:59] maushu: Oh yeah, I noticed that seconds ago. [15:59] maushu: I thought there was a linux version. [15:59] mattc has joined the channel [16:00] [[zz]] has joined the channel [16:02] wink_: mape: whats the link to your monitoring thingy [16:02] wink_: it had the load average graphs and stuff [16:02] dmcquay has joined the channel [16:03] mape: http://node-monitoring.mape.me/ - http://node-monitoring.mape.me/simple/ [16:03] benburkert has joined the channel [16:03] nerdEd has joined the channel [16:03] EyePulp has joined the channel [16:03] matclayton has joined the channel [16:04] sh1mmer has joined the channel [16:04] dipser: how do i send and receaive httponly cookies with node? [16:05] wink_: mape: are you going to finish it once dtrace support makes it in? [16:05] Frans-Willem: Hmmm, fuck [16:05] mape: wink_: Most likely I team up with someone, or someone else does it before I'm finished [16:05] bradleymeck: dipser, set the cookie headers like normal [16:05] Frans-Willem: adding COPY support to PostgresClient won't work with pipelining :@ [16:06] robotarmy has joined the channel [16:06] creationix has joined the channel [16:06] aliem has joined the channel [16:06] Frans-Willem: creationix: Maybe you were right not to pipeline, I just found out that it's either pipelining, or COPY support, not both :p [16:07] creationix: Frans-Willem: hmm [16:07] micheil: pgriess: you have a really nice code style, just sayin' [16:07] c4milo has joined the channel [16:07] aurynn: Copy shouldn't be hard, it's COPY; a bunch of rows; COPY DONE [16:07] micheil: (I'm looking at the msgpack exmaple on strtok [16:07] _announcer: Twitter: "後で: "Blog rolling with mongoDB, express and Node.js - How To Node" - http://j.mp/cNQ1BK" -- Masatomo Nakano. http://twitter.com/masatomon/status/22189886793 [16:08] dipser: bradleymeck: ok that i will find out, what i have to set on .writeHead(), but where can i get the info? is it in response? [16:08] aurynn: Rather, that won't be overly hard for my implementation, since I'm grabbing the connection for the duration and not batching.. [16:08] deadlyicon has joined the channel [16:08] aurynn: Anyway, work time. [16:09] Frans-Willem: aurynn: That's what I mean, I'm batching/pipelining queries, which will complicate COPY ... FROM STDIN [16:09] bradleymeck: dipser clients send it in requests, servers send it in responses [16:09] dipser: ok thx [16:10] aho has joined the channel [16:12] _announcer: Twitter: "The #Node.js Knockout looks fun http://nodeknockout.com/ And http://no.de/ is the best domain hack I've seen in a while." -- Evan Prodromou. http://twitter.com/evanpro/status/22190247890 [16:12] EyePulp: is express the same as connect's router middleware? Or how do they relate? [16:13] mostlygeek has joined the channel [16:14] cloudhead has joined the channel [16:14] pdelgallego has joined the channel [16:18] pgriess: micheil: heh, ears burning [16:18] micheil: hmm? [16:18] micheil: why so? [16:18] pyronicide has joined the channel [16:18] bmavity has joined the channel [16:18] pgriess: micheil: just an expression. thanks for the compliment [16:19] thejefflarson_ has joined the channel [16:19] micheil: oh, I thought it meant a bit more then just thanks, more so tending on embarassment. [16:19] phoenix24 has joined the channel [16:19] micheil: (must be the language divide?) [16:20] andrehjr has joined the channel [16:21] cardona507 has joined the channel [16:21] _announcer: Twitter: "Love @joyent's new nodejs service. ssh access, git deploy, ip address and a bad ass domain http://no.de" -- xnoɹǝʃ uɐıɹq. http://twitter.com/brianleroux/status/22190972675 [16:22] visnup has joined the channel [16:22] bradleymeck: ACTION hugs visnup [16:22] visnup: ACTION feels the love [16:22] pdelgallego has joined the channel [16:22] visnup: the awkward love [16:22] visnup: bradleymeck: what's up? [16:23] bradleymeck: joyent is [16:23] visnup: ah, that's all ryah and the joyent team [16:23] visnup: we were just pressuring them ;) [16:23] micheil: hey visnup [16:23] pyronicide: ACTION wishes he had a coupon code to give the joyent awsomeness a try =/ [16:23] voodootikigod has joined the channel [16:23] visnup: micheil: yo [16:24] bronson has joined the channel [16:24] micheil: visnup: btw, any coupon's around for joyent's cloud? [16:24] micheil: just wanting' to be able to test out node-websocket-server on it pre knockout [16:25] visnup: micheil: you should have one on your team page: http://nodeknockout.com/team [16:25] micheil: visnup: that was something I did not know about [16:25] micheil: visnup: connect error [16:25] _announcer: Twitter: "Introducing Yeti: The YUI Easy Testing Interface http://bit.ly/cKmnVB - YUI testing for JS and node.js" -- Scott Koon. http://twitter.com/lazycoder/status/22191261063 [16:25] bradleymeck: im scared of deploying anything since the knockout could disqualify me~ [16:25] _announcer: Twitter: "Here's a @Joyent I'd like to smoke, node.js gets a "heroku-like" deployment stack http://bit.ly/asXQ83" -- Mark Essel. http://twitter.com/VictusFate/status/22191287239 [16:26] eazyigz has joined the channel [16:26] eazyigz: what is the main difference between node.js and jaxer? [16:26] bradleymeck: lol vent server for knockout [16:26] _announcer: Twitter: "Just released node-http-digest v0.1.0, an easy way to add HTTP Digest authentication to Node.js HTTP servers. http://bit.ly/cc9KYK" -- Emil Loer. http://twitter.com/thedjinn/status/22191333070 [16:26] gerad has joined the channel [16:26] visnup: bradleymeck: heh, feel free to deploy. the final git deploy sunday will tell us if it was early or not [16:26] visnup: micheil: you got an error? [16:27] micheil: yeah [16:27] eazyigz: I know that with jaxer you can load a dom and execute javascript inside of it. Is that currently possible with node? [16:28] bradleymeck: mainly just that jaxer isnt focused on async/non-blocking [16:28] mape: bradleymeck: ventrilo? [16:28] bradleymeck: yes mape [16:28] mape: bradleymeck: why not use mumble? [16:28] bradleymeck: i have a vent server already [16:28] mape: k [16:29] bradleymeck: eazyigz you cant execute inside of a dom, you can execute on a dom [16:29] bradleymeck: plus mumble is a pain last time i tried to set up [16:29] vnguyen has joined the channel [16:29] eazyigz: bradleymeck: is it possible with node? [16:29] dilvie: lol [16:29] bradleymeck: jsdom, witch for example is a full browser emulation (with what it does support) [16:29] dilvie: I am so crap at regex. [16:29] mape: bradleymeck: far better cross OS support and I haven't had any issues with it [16:30] eazyigz: I have only seen jsdom take a crack at it, but I don't see a way to use jsdom to execute existing js on an existing dom [16:30] gwoo has joined the channel [16:30] dgathright has joined the channel [16:30] bradleymeck: im not sure i understand eazyigz [16:30] dilvie: I want a tool that can take a bunch of regex test inputs (positive and negative) and generate an efficient regex for me. =) [16:30] eazyigz: at least the documentation for jsdom does not illustrate it... [16:30] bradleymeck: dilvie, explain [16:31] jacobolus has joined the channel [16:31] eazyigz: bradleymack: my nod.js server is retrieving an html document. I wish to inject javascript into that document and see the execution [16:31] eazyigz: is it possible with jsdom? [16:31] bradleymeck: eazyigz , you get a windowaugmentation then just with(window){eval(x)} usually [16:32] creationix has joined the channel [16:32] bradleymeck: if you dont trust the script use script.runInNewContext [16:32] _announcer: Twitter: "I'm no JavaScript expert, but have to love the domain name that @joyent picked up for their node.js Knockout: http://no.de" -- John B. Roberts. http://twitter.com/pencoyd/status/22191834135 [16:33] dilvie: positiveMatches [ 10.1, 10, 9999, -66, -66.6789, 1] negativeMatches['...hi', '1.hi', 'hi.1', '-hi'] output: /^([+-]?(((\d+(\.)?)|(\d*\.\d+))([eE][+-]?\d+)?))$/ [16:33] confoocious has joined the channel [16:33] dilvie: I guess that wouldn't be much easier. [16:34] tahu has joined the channel [16:34] dilvie: you still have to imagine weird test cases either way. [16:34] mape: dilvie: just brute force :P [16:34] eazyigz: bradleymack: I see jsdom has an example: window = jsdom.jsdom().createWindow() [16:34] bradleymeck: yup, plus how would it tell hi was \D and not just 'hi' [16:34] eazyigz: how do I specify to load my html doc in that window? [16:35] bradleymeck: you build it from ground up [16:35] bradleymeck: use a parser, thought tmpvar had an example [16:35] eazyigz: bradleymeck: I have an existing html doc. How do I build it from ground up? It is already built [16:36] bradleymeck: it is a string [16:36] dilvie: eazyigz: It needs to be loaded and parsed. [16:36] eazyigz: dilvie: that's what I'm having difficulty with. I don't see the jsdom syntax to do that [16:37] dilvie: Anyway, I think the desire to manipulate a dom on the client side is a little suspect. Sounds like you might really want a template engine. "view" in mvc. [16:37] dilvie: ur /client/server/ [16:37] Burgestrand has left the channel [16:37] bradleymeck: eazyigz jsdom does not include a parser, parsing is out of DOM's scope [16:37] dilvie: I guess I can undersatnd it for form validation so you don't duplicate code. [16:37] eazyigz: on the client side? who said that? [16:37] eazyigz: node.js is serverside technology [16:38] dilvie: eazyigz: that was a slip. I meant server. [16:38] _announcer: Twitter: "Read now: http://bit.ly/bE6Brt #joyent #nodejs" -- Chris Williams. http://twitter.com/voodootikigod/status/22192252492 [16:38] ryah: here's some no.de coupon codes: leroprobo, hafrijyle, dystolybru, gapregrubri [16:38] Frans-Willem: Yay, node-PostgresClient COPY table TO STDOUT; is working :) [16:39] ryah: first come first serve [16:39] dilvie: eazyigz: If your aim is to use the same form validation code on the client and the server, you're on the right track. html parser + jsdom + (insert your favorite dom abstraction lib here) [16:39] pyronicide: thanks ryah [16:39] Frans-Willem: ffs [16:39] Frans-Willem: I need to generate an ssh key [16:39] dilvie: yah: how do I use this? [16:39] eazyigz: dilvie: sorry for being so thick. I know that env.js has been integrated with rhino to do exactly what I need. Problem is it is slow. So I thought jsdom is faster, but it sounds like I cannot load an existing dom... [16:39] wink_: already used 'em all, sorry [16:39] samsonjs has joined the channel [16:39] Frans-Willem: ... [16:39] ryah: dilvie: no.de - register - enter coupon code [16:39] Frans-Willem: seriously ? [16:40] wink_: lol no [16:40] wink_: :> [16:40] eazyigz: dilvie: I don't have forms [16:40] eazyigz: I am running readability.js on an html document [16:40] eazyigz: and I want to do that on the server [16:40] eazyigz: simple as that [16:41] bradleymeck: eazyigz without some scaffolding and choosing a parser to generate the tags you want, no [16:41] bradleymeck: just remember a string has to be parsed into elements [16:41] bradleymeck: DOM doesnt have to match html, just does often [16:41] Frans-Willem: Used the dysto... key, sorry guys [16:41] eazyigz: what if I have a dom with javascript in it [16:41] eazyigz: and I want to replicate onload event [16:42] eazyigz: how is it possible with jsdom? [16:42] bradleymeck: you still need to have the elements first, and jsdom doesnt have events [16:42] eazyigz: ah... [16:42] eazyigz: that's where the real problem lies [16:43] maushu: ryah: Isn't that only for knockout participants? [16:43] eazyigz: so it is not possible to see javascript execution with jsdom [16:43] eazyigz: am I right? [16:43] bradleymeck: you can [16:43] bradleymeck: just not using DOM events [16:43] jacobolus has joined the channel [16:43] bradleymeck: the dom is part of your node program, not separate with jsdom [16:43] ryah: maushu: mostly - but we'll be opening it up publicly in a few weeks [16:43] ryah: we can testers [16:43] eazyigz: damn, I really wish jsdom had better examples for noobs to follow [16:44] dilvie: eazyigz: just fire an EventEmitter when your document finishes parsing. [16:44] eazyigz: all I see is how to build a document from the ground up [16:44] bradleymeck: thats all it provides? [16:44] eazyigz: is EventEmitter a jsdom thing or node.js thing? [16:44] bradleymeck: anywho, grab an html parser, node thing [16:44] dilvie: node.js thing. [16:45] dilvie: you can use it to trigger your own onLoad event. [16:46] dilvie: or just call your onload function with the document parser callback. [16:46] eazyigz: would it be emitter:on? [16:47] dnolen has joined the channel [16:47] dilvie: check out http://github.com/tautologistics/node-htmlparser [16:48] _announcer: Twitter: "time for my occasional plea to @heroku: please enable node.js support on my account!" -- Brian Mavity. http://twitter.com/bmavity/status/22193005524 [16:49] eazyigz: dilvie: I understand I can use node-htmlparser to get a string representaion of my document [16:50] eazyigz: then what do I do? do I still need jsdom? [16:50] bradleymeck: if you want the DOM yes [16:50] maushu: ryah: Do you know how slow is node when debugging? [16:50] bradleymeck: if you want just element info, no [16:51] eazyigz: so how would I use node's emitter on a string representation of my document? [16:51] maushu: I will try some benchmarks. [16:51] eazyigz: i'd need jsdom for that, no? [16:52] Frans-Willem: Wtf [16:52] Frans-Willem: how come i++ is slower than i+=1 ?! [16:52] Frans-Willem: http://jsperf.com/ii/2 [16:52] maushu: Frans-Willem: faster to me. [16:52] dilvie: that html parser will give you access to the objects, but it won't give you a DOM API. [16:52] ryah: maushu: what do you mean? [16:52] Frans-Willem: maushu: browser ? [16:53] maushu: ryah: Let's say that I run a script with node --debug, how much is the peformance hit? [16:54] maushu: Compared to run node without the debug flag. [16:54] maushu: Frans-Willem: Chrome 5.0 [16:54] V1 has joined the channel [16:54] Frans-Willem: oddd, my chrome 7 tells me i=i+1 is the fastest [16:55] V1: For node knockout do we need to install our own data storages? Or are data storage options provided? I couldn't find any info about this, so i just wonder :) [16:55] maushu: Frans-Willem: They seem to have done some performance changes, that might have affected unary operations. [16:55] visnup: V1: yes [16:55] V1: visnup: Thanks :p [16:55] gerad: V1: mongohq and redistogo are providing hosting as a service [16:55] MikhX_ has joined the channel [16:56] visnup: V1: redistogo has provided a free option, mongohq is a good option, haven't looked into mysql or other sql dbs though [16:56] jbrantly has joined the channel [16:56] maushu: V1: Use this a guide: http://howfuckedismydatabase.com/ [16:56] V1: I'll rather just install it on the provided hostings [16:56] gerad: V1: you should have received redistogo information in an earlier email [16:56] gerad: V1: mongohq information should be coming out today (there's also a nice free option) [16:57] V1: Really? Haven't seen anything yet :p [16:58] V1: That must have slipped in to my spam box than, as I can't see any references in the e-mails it got [16:58] dilvie: so yeah. [16:58] dilvie: YUI 3 works with Node.JS [16:58] dilvie: http://www.yuiblog.com/blog/2010/04/09/node-js-yui-3-dom-manipulation-oh-my/ [16:58] eazyigz: how do I get the output of an .exec() command if I want to use unix's curl? [16:59] V1: Ooh, nvm i see it in the early august update email [17:00] maushu: eazyigz: http://nodejs.org/api.html#child_process-exec-96 [17:00] maushu: stdout will have the result of curl. [17:01] dilvie: eazyigz: I don't know if or how well jQuery works, but YUI is ready to do your DOM lifting for you on Node.js right now. [17:01] maushu: Time to go home. *sigh* [17:01] bradleymeck: you know what we could do to speed up some stuff, have an optimizer that rips unneeded nested functions out to global scope [17:02] bradleymeck: but that would be work... [17:02] maushu: bradleymeck: Even better, don't place nested functions on the global scope. [17:02] bradleymeck: pfff [17:02] noahcampbell has joined the channel [17:02] bradleymeck: 'module scope' w/e [17:03] joshbuddy has joined the channel [17:03] eazyigz: dilvie: I looked at that article... but didn't understand how to execute javascript on node context. I figure I will use node-htmlparser to get a string representation of my document, then use jsdom to create a new window, and leverage node.js eventemitter to capture the javascript execution in the document [17:03] maushu: (function() { < code here > ))(); [17:03] eazyigz: does that soun d right? [17:03] JimRoepcke has joined the channel [17:03] micheil: feel's good to be pushing in the morning [17:04] bpot has joined the channel [17:05] icozzo has joined the channel [17:05] bradleymeck: maushu, why not leave it in module scope? [17:05] bradleymeck: pff he left, and i cant read [17:06] dilvie: eazyigz: you'll have to do a lot of heavy lifting if you do it that way. You're probably better off using YUI 3. [17:07] dilvie: if you have to get it running RIGHT NOW -- OR, try to recreate the browser object for use in jQuery (don't know how hard that would be, yet). [17:07] jacobolus has joined the channel [17:07] dilvie: eazyigz: This is all assuming that you are indeed trying to re-use the same code on the server AND the client. [17:07] eazyigz: dilvie: I'm trying to understand- where node's eventemitter fits in the picture? At what point in my program? [17:08] eazyigz: dilvie: I am using exec() to call unix curl command, and that's how I am getting my html document [17:09] dilvie: eazyigz: I was just suggesting that you could emit an event when your document is loaded and parsed to fire your onLoad / document.ready function. A callback is probably easier, anyway. [17:10] dilvie: eazyigz: On the server side, there are a couple different ways to handle flow - you can use callbacks that fire when some operation has finished, or you can emit events when the operation has finished. [17:10] dilvie: node makes heavy use of both. [17:10] eazyigz: dilvie: so assuming I can use jsdom in unison with node-htmlparser to load my document in a window, can I get the output of that javascript execution? [17:10] pyronicide: ryah: is there someone i can chat with about the joyent node.js boxes not working? [17:11] _announcer: Twitter: "Joyent rolls out beta of Node SmartMachines for node.js: http://no.de/. Looks similar to Heroku (which also supports node.js)." -- Jeff Devine. http://twitter.com/jeff_devine/status/22194692926 [17:11] pyronicide: ryah: more specifically, for some reason my ssh keys aren't working [17:11] nerdEd has joined the channel [17:11] dilvie: eazyigz: Is there a good reason you want to manipulate the DOM directly, rather than use YUI 3 or jQuery? [17:11] dilvie: YUI 3 has already pieced together node-httmlparser (with some modifications) and jsdom. [17:12] dilvie: It's done all the heavy lifting for you. [17:12] dilvie: jQuery similarly abstracts away and simplifies DOM manipulation. [17:12] eazyigz: dilvie: I need the javascript to run on the dom because that javascript will echo the resulting transformed dom [17:12] eazyigz: jquery and yui don't play a role here. It is raw javascript [17:13] eazyigz: again - it is readability.js [17:13] eazyigz: if you are familiar with how it works [17:13] ryah: pyronicide: yeah, pm me [17:14] eazyigz: and all I need is to get the output that that javascript echoes to me [17:14] eazyigz: that's why I'm stuck on the most straightforward way to accomplish this [17:14] dilvie: I'm not familiar with readability.js. Do you have a link? [17:14] drudge: ryah: is there no way to remove keys? [17:15] ryah: drudge: there's not a web ui for it yet [17:15] ryah: you can edit .ssh/authorized_keys [17:15] eazyigz: dilvie: http://lab.arc90.com/experiments/readability [17:15] drudge: alright, cool [17:16] eazyigz: dilvie: they provide a bookmarklet that executes in the browser. And I want to use their javascript to execute that on the server [17:16] gwoo has joined the channel [17:16] benburkert has joined the channel [17:17] sh1mmer has joined the channel [17:17] eazyigz: and looking for the most straightforward way to do it in node.js [17:19] dilvie: eazyigs: k... just looked and the readability source. [17:20] visnup has joined the channel [17:20] deepthawtz has joined the channel [17:20] dilvie: eazyigz: I still think YUI might be a good bet for you. Like I said before - they have already done the heavy lifting for you as it relates to giving you jsDOM + html parser + random fixes. [17:21] dilvie: Essentially, you use their hacks to give yourself a browser-like environment for your script to run in. [17:21] dilvie: readability.js might just work out of the box if you load YUI 3 first. [17:21] _announcer: Twitter: "hmm.. I wonder if there's an api for @google's new realtime search, could be interesting to implement it in node.js" -- Micheil Smith. http://twitter.com/miksago/status/22195445460 [17:21] dilvie: or, at least, with very minor changes. [17:22] V1: Websockets are crossdomain right? [17:22] eazyigz: dilvie: I am looking at davglass github repo for this. I hope I can figure it out [17:22] micheil: V1: correct [17:23] _announcer: Twitter: "@ddollar How's the Heroku Node.js beta going? You guys keeping lots of processes up for long periods of time, or what? ::want::" -- lorennorman. http://twitter.com/lorennorman/status/22195528258 [17:23] V1: pfew, than my idea will work for node knockout, i couldn't find any info about it ;9. And as socket.io also supports it through XHR, i was like oh, fuck don't tell me its true :$ [17:24] mape: ryah: Btw all ports are open on the smart machines? [17:25] stepheneb has joined the channel [17:25] visnup: wow, the joyent blog post has gotten 5000 views [17:26] micheil: nice [17:26] micheil: mape: try it. [17:26] ehaas has joined the channel [17:26] programble has joined the channel [17:27] mape: Would prefer not to push anything to it before the knockout, don't want to spend time on getting it clean again. [17:27] wattz: I have to say that node rocks for webservices [17:27] micheil: k [17:27] dilvie: wattz: yeah. [17:27] visnup: mape: hehe [17:27] micheil: hmm.. [17:27] wattz: ACTION steps down from the soapbox [17:27] micheil: does the knockout start saturday or sunday (my time) [17:28] micheil: so, +10hrs [17:28] mape: visnup: I'm starting to get really sick, so any effort wasted feels like time wasted on the knockout :P [17:28] gerad: micheil: starts at Saturday midnight GMT [17:28] visnup: micheil: aug 28 0:00 gmt [17:28] jetienne has joined the channel [17:28] visnup: micheil: 1 day 6 hours from now [17:28] visnup: mape: that really sucks... [17:28] visnup: mape: you should sleep for the entire next day [17:28] ryah: mape: yes [17:28] mape: Yeah the timing is terrific [17:28] gerad: mape: maybe posts questions in comments on the original blog post [17:29] mape: ryah: Great [17:29] matclayton has left the channel [17:29] micheil: visnup: k [17:29] gerad: mape: lots of joyent people are watching that, and that way the answers will be seen by everybody [17:29] gerad: micheil: is that Saturday or Sunday your time? [17:29] micheil: gerad: i think sunday. [17:29] micheil: one sec/ [17:29] micheil: ACTION permatimes [17:29] mape: gerad: Perhaps a quick count down could be handy? [17:29] dilvie: eazyigz: Install YUI for node. Require readability.js. Load a document. See what happens. =) [17:30] ehaas has left the channel [17:30] gerad: micheil: you don't know what day it is 1 day and 6 hours from now? [17:30] mape: Like in the left side of the header [17:30] micheil: gerad: not exactly [17:30] _announcer: Twitter: "@jimpick I have only done about 10 lines of node.js code in my life... a code for no.de would be nice, maybe I can double my code output." -- Michael. http://twitter.com/eddanger/status/22196030522 [17:30] gerad: mape: there's a big count down in the middle of the page! [17:30] micheil: gerad: still saturday, 9am [17:30] mape: .. I need sleep :/ [17:31] mape: gerad: Yeah sorry about that [17:31] eazyigz: dilvie: I installed yui for node. After I require readability.js I am not sure how to load the document [17:31] gerad: mape: we should probably invert the sizes [17:31] gerad: mape: now that it's getting closer [17:31] mape: Yeah, might be a good idea. [17:31] micheil: gerad: I'm looking forward to doing that ep. though [17:32] mape: Btw is it a good idea to push often to the repo? Or ok if I dev locally and only push late in the game? [17:32] dilvie: eazyigz: that depends - are you loading from disk or href? [17:32] gerad: mape: your call, you need to push to deploy, and I recommend deploying early and often [17:32] eazyigz: dilvie: disk [17:32] gerad: mape: that way you can intimidate other contestants with your awesomeness [17:33] mape: gerad: hehe k [17:34] pyronicide: ryah: this joyent stuff is *awsome*, thanks =) [17:35] mape: gerad: Btw does the ****.no.de address have to be the same as my team name? [17:36] _announcer: Twitter: "node-strtok: http://bit.ly/c0BTPz, a streaming tokenizer for parsing binary streams in #nodejs; includes pure JS streaming #msgpack parser" -- Peter Griess. http://twitter.com/pgriess/status/22196438025 [17:37] gerad: mape: sorry, yeah, that's set for now... you'll also get a .nodeknockout.com subdomain, which is your application name, which is changeable), finally if you redirect to your own domain, then we'll follow that redirect (as part of our audits) and show it to people on your team page: http://nodeknockout.com/team [17:37] creationix has joined the channel [17:38] mape: ah k [17:38] visnup: mape: shorter answer, no. but, we're working on it. [17:38] micheil: almost ready for another node-websocket-server release [17:39] mape: visnup: So I should signup with username === my team name? [17:39] _announcer: Twitter: "Okay, the @joyent #nodejs stuff is *awsome*. Not only do I get #heroku push/deploy, but I get a shell too!" -- Thomas. http://twitter.com/pyronicide/status/22196614486 [17:39] ryah: pgriess: wow, nice stats on strtok [17:39] ryah: json [17:39] ryah: pack: 14674 ms (100% of json) [17:39] ryah: unpack: 50479 ms (100% of json) [17:39] ryah: native [17:39] ryah: pack: 15334 ms (104% of json) [17:39] ryah: unpack: 32835 ms (65% of json) [17:39] ryah: strtok [17:39] ryah: pack: 15861 ms (108% of json) [17:39] pgriess: ryah: yeah, thx [17:39] ryah: unpack: 46650 ms (92% of json) [17:39] pgriess: ryah: they'd look more impressive, but v8 JSON object perf has doubled since i released node-msgpack [17:40] tuxsbro has joined the channel [17:40] jelveh has joined the channel [17:40] pdelgallego: gerad, during the node knockout the teams should commit their code to public repository ? [17:40] pgriess: ryah: still, for formats that don't have deep v8 integration this should be good [17:40] _TS has joined the channel [17:41] rauchg_ has joined the channel [17:41] visnup: pdelgallego: teams should push to their private git repository [17:41] gerad: pdelgallego: private github repositories have been created under the nko github organization for teams http://github.com/nko [17:41] ryah: strtok is really nice [17:41] ryah: as soon as i have a minute im going to rewrite node-amqp with it [17:42] pgriess: awesome [17:42] pgriess: it'd be nice to have a proof point outside of my own brain [17:42] visnup: mape: sign up? [17:42] pdelgallego: visnup, gerad , ohh I was looking forward to read some code. [17:42] creationix: pgriess: so I could use this to re-write something like postgres-js [17:42] pgriess: ryah: there is a serialization api as well, which you should look at [17:42] mape: visnup: yeah for no.de [17:42] pgriess: ryah: it internally buffers data in memory before flushing to a stream [17:42] pgriess: ryah: writing direct to a stream has like a 4x perf hit [17:42] pgriess: ryah: but the api itself is a streaming-based api [17:42] gerad: pdelgallego: lots of code to read on our blog http://nodeknockout.com/blog - some teams will likely opensource their stuff post competition [17:43] pgriess: ryah: see msgpack.packStream [17:43] pgriess: creationix: yeah, exactly [17:43] dilvie has joined the channel [17:43] rsms has joined the channel [17:43] _TS: where to find strtok? [17:43] creationix: super cool [17:43] visnup: mape: oh, use whatever login you want to use. the domain name used for *.no.de will become your team name based on your coupon code. [17:43] pgriess: _TS: http://github.com/pgriess/node-strtok [17:43] ryah: pgriess: where? [17:43] gerad: pdelgallego: umm... http://nodeknockout.posterous.com for the blog - oops [17:43] softdrink: so on that positive integer test on jsperf earlier, what *exactly* were we checking for? [17:43] ryah: oh msgpack [17:43] _TS: thanks pgriess [17:43] ryah: nm [17:43] mape: visnup: Ah k, then I'll make a new one [17:43] visnup: mape: further, it's joyent-specific. you'll have a changeable one set on the website later that will be *.nodeknockout.com [17:44] MikeSmith has joined the channel [17:44] _TS: using refactored buftok ;) [17:44] pdelgallego: gerad, thx for the link. I didn't know about the blog. [17:44] icy: "var strotk = require('strtok'); [17:44] icy: in the readme, little typo [17:44] _announcer: Twitter: "I think Twitter and MongoDB node.js in or create clones?" [ja] -- こば@精神安定済. http://twitter.com/KOBA789/status/22196979805 [17:44] visnup: mape: further further, if you want to register a name that's something totally different, you can, and setup redirects to it and we'll figure that out too. [17:45] pgriess: _TS: what's buftok? [17:45] mape: k I'll just use the team name [17:45] micheil: I should really head to bed.. considering I've got an exam at 9am.. [17:46] visnup: mape: whatever you use to sign up for the joyent stuff, the *.no.de name will be your team name (based on coupon code). [17:46] tuxsbro_ has joined the channel [17:47] visnup: mape: and ryah/joyent has plans for post-knockout being able to get whatever else you want at *.no.de I believe [17:47] V1: visnup: are we allowed to "pre-install" packages and databases etc? eg expresso, connect, mongodb etc [17:48] micheil: tell you what though, some domain's that no.de gives are kinda amusing. [17:48] visnup: V1: no. but if you're unsure if something compiles yet, I would say go ahead and investigate. [17:48] _TS: http://github.com/halorgium/node_proxy/blob/master/buftok.js [17:48] _TS: have a better version on a gist somewhere [17:48] _TS: polotek wrote one too pgriess [17:49] _TS: im using to parse twitter stream api [17:49] pgriess: _TS: cool. checking it out. [17:49] micheil: visnup: I should really do a quick writeup after I've released the next version of node-websocket-server as to how to use it. [17:49] _TS: that one dies every once in a while [17:49] _TS: i have made a few mods [17:49] _TS: gonna put a node project on github soon [17:49] dilvie: d'oh [17:49] _TS: too much "real' work [17:49] _TS: ;) [17:50] pgriess: _TS: :) [17:50] stepheneb has joined the channel [17:50] pgriess: _TS: looks useful, but i think it's going after a bit of a different case than i am. it seems to be only intersted in splitting data at a delimiter [17:50] micheil: pgriess: do you think strtok would be suited to a websocket parser? [17:50] pgriess: micheil: no [17:51] _TS: yeah i only need it for one purpose [17:51] micheil: didn't think so. [17:51] pgriess: micheil: for the simplistic type of framing that ws needs, its overkill [17:51] pgriess: micheil: you'd need to scan every byte yourself anyway. waste of time to use strtok for that [17:51] _TS: you too just explained myself! [17:51] micheil: true [17:51] _TS: hah [17:51] _announcer: Twitter: "@ Codexmas http://nodejs.org:) EASY ~ 40k RPS" [ms] -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/22197419716 [17:51] micheil: _TS: ? [17:51] _TS: talking about why im using buftok [17:51] micheil: what? for websockets? [17:52] jbenesch has joined the channel [17:52] _TS: yeah im using for wsockets and twit stream [17:52] micheil: _TS: hmm... well, if you're interested, I am working on a streaming websocket parser [17:52] micheil: so you can sys.pump() a websocket [17:52] dilvie: How is the browser support for websockets? [17:53] micheil: (a websocket's data) [17:53] micheil: http://github.com/miksago/node-websocket-server/wiki/browser-support [17:53] _TS: nice im sort of doing that but now with sys.pump [17:53] creationix: dilvie: with flash fallback, most desktop browsers have it [17:53] _TS: id love to change that [17:53] visnup: quick messaging question: is it clear that teams should be using github for the main repo and that pushing to joyent is only for deploys? (do we need to make it more clear on the website?) [17:53] _TS: without [17:53] _TS: sys.pump [17:53] _TS: sorry [17:53] micheil: _TS: then again, I'm an author of a websocket server, so, yeah. [17:54] micheil: visnup: probably need to make it more clear [17:54] _TS: micheil [17:54] _TS: much thanks! [17:54] visnup: micheil: cool. [17:54] _TS: i use all the time [17:54] creationix: visnup: I'll bet it's not that clear, people are used to just one remote [17:55] Egbert9e9 has joined the channel [17:55] dilvie: weird [17:55] visnup: creationix: didn't think it'd be a problem until both deploy solutions decided to use git too. [17:55] _announcer: Twitter: "@thoughtbot great to hear you guys got inspired by my Node.js experiment. Is there any video of the lightning talks? :)" -- Jeff Kreeftmeijer. http://twitter.com/jkreeftmeijer/status/22197680931 [17:55] dilvie: Looking at http://www.websockets.org/about.html [17:55] dilvie: says chrome doesn't support websockets. [17:56] micheil: dilvie: my stuff's more up-to-date [17:56] creationix: visnup: I can't compete since I'm a judge, but I had fun with my beta no.de account http://creationix.no.de/ [17:56] micheil: ACTION uses chrome/chromium to test node-websocket-server [17:56] benburkert has joined the channel [17:57] visnup: creationix: micheil wanted one of those too :) [17:57] dilvie: micheil: well, the weird thing is - this version of Chrome DOES support websockets. [17:57] dilvie: so urm... is websockets.org borked? [17:57] micheil: visnup: got one. http://unsaving-daiva.no.de/ [17:57] micheil: dilvie: just old. [17:57] nex3 has left the channel [17:57] micheil: and borked. [17:57] visnup: creationix: whoaa cuteness [17:58] creationix: visnup: I really should writeup how to use it some time [17:58] micheil: creationix: as visnup says, only, what does it do? [17:58] creationix: it's a endless world [17:58] mikeal has joined the channel [17:58] creationix: http://creationix.no.de/#8/12 [17:58] creationix: and the url remembers your position [17:59] ryanfitz has joined the channel [17:59] mw__ has joined the channel [17:59] creationix: micheil: alt and shift control the Z-height of the block you place [17:59] dilvie: I'm running the latest and greatest chrome update [17:59] dgathright has joined the channel [18:00] _announcer: Twitter: "JavaScript / Node.JS - Fundamentals asynchronous programming ... http://bit.ly/bLG5v8" [ru] -- Виталий Кулёв. http://twitter.com/frumatic_ru/status/22197959089 [18:00] micheil: dilvie: yeah, it's buggered. [18:01] dilvie: lol [18:01] gwoo has joined the channel [18:01] dilvie: web sockets will bring you unicorns and sparkles! [18:01] ryanfitz: if I wanted to have a config file which would just contain a json object for config data is the best way of loading that up just with file read? [18:01] dilvie: "ooooh! gimmie unicorns!" [18:01] dilvie: "omg noooooooo unicorns for meeee!" [18:02] creationix: dilvie: long poll is almost as good as websockets [18:02] creationix: and it works on apple mobile [18:02] creationix: it's just not quite as fast [18:02] jdub: ryanfitz: fs.readFileSync [18:02] hober: I can't seem to get DOM attributes added with setAttribute to work in tmpvar's jsdom. Any idea what I'm doing wrong here? http://gist.github.com/551578> [18:02] hober: s/>// [18:02] jdub: ryanfitz: if you're comfy with a simple sync api (during startup for instance) [18:03] mape: gerad: visnup So it is ok to setup stuff beforehand like npm, installing modules and whatnot? Just as long as the actual project doesn't start? [18:03] visnup: ryah: congrats on all of the coverage joyent's no.de is getting btw [18:03] stepheneb__ has joined the channel [18:03] EyePulp: what's the inherent benefit of using socket.io vs rolling my own long polling/jsonp based methods? Better degredation and use of different techs as needed? [18:04] mape: Btw the no.de registration doesn't seem to work, I'm stuck at "PROVISIONING" trying to validate the coupon code [18:04] micheil: creationix: I've really gotta talk to rauchg_ about long-pollong & websockets :D [18:04] ryanfitz: right on startup sync is fine [18:04] ryah: visnup: :) [18:04] jdub: EyePulp: i'm using socket.io for a project atm... primary benefit is "it just works" across various devices [18:04] saikat_ has joined the channel [18:04] mape: Nm worked after a refresh [18:04] jdub: and browsers [18:04] dilvie: mape: worked for me. [18:04] rauchg_: hi micheil [18:04] micheil: jdub: until you want ssl :P [18:04] EyePulp: jdub: that's certainly attractive [18:04] jdub: micheil: at which point you fix the (minor) bug [18:04] micheil: lol [18:05] EyePulp: what's the SSL limitation? [18:05] micheil: actually, just landed full SSL support for node-websocket-server in the development branch [18:05] ryah: i'd just like to note: [18:05] jdub: EyePulp: see issue 40 on github for socket.io-node [18:05] ryah: [root@mape ~]# plimit `pgrep node` [18:05] ryah: 15776: /usr/nodejs/v0.2.0/bin/node /home/node/node-service/releases/201008261 [18:05] ryah: resource current maximum [18:05] ryah: time(seconds) unlimited unlimited [18:05] ryah: file(blocks) unlimited unlimited [18:05] ryah: data(kbytes) unlimited unlimited [18:05] ryah: stack(kbytes) 10240 unlimited [18:05] ryah: coredump(blocks) unlimited unlimited [18:05] ryah: nofiles(descriptors) 65536 unlimited [18:05] ryanfitz: when calling readFile the file path is that relative to the file or relative to the current working directory? [18:05] ryah: vmemory(kbytes) unlimited unlimited [18:05] jdub: EyePulp: there was just a tiny protocol hardcoding problem [18:05] EyePulp: ah [18:05] jdub: ryanfitz: pwd [18:05] mape: ryah: ? :) [18:05] micheil: ryah: ? [18:05] mape: Rooting my box? :P [18:06] creationix: ryah: and no reversy proxy in sight right? [18:06] creationix: other than the low level zones stuff [18:06] ryah: creationix: no - it's on the internet [18:06] creationix: yeah, that's cook [18:06] creationix: *cool [18:06] rauchg_: jdub: flawless victory [18:06] EyePulp: jdub: I'm pretty new to node, so I'm just now getting a sense of socket.io vs DIY [18:07] _announcer: Twitter: "@ Eromirou've to add node.js and conquers the world" [es] -- Nubis. http://twitter.com/nubis_bruno/status/22198414825 [18:07] ryah: it should be *fast* [18:07] rauchg_: EyePulp: why would you DIY ? [18:07] creationix: now if only socket.io was reliable on my iPad ;) [18:07] _announcer: Twitter: "@jimpick are there more codes to be given out? I can haz Node.js SmartMachine?" -- Sean Porter. http://twitter.com/portertech/status/22198442942 [18:07] rauchg_: creationix: nothing is reliable on the ipad [18:07] jdub: EyePulp: surely the advantage to using good code instead of NIH is a principle independent of node? :-) [18:07] rauchg_: specially web fonts :P [18:07] EyePulp: rauchg_: because I don't know any better - or didn't... as mentioned, still learning - and there's a lot of stuff out there to learn about node [18:07] rauchg_: i know a dozen ways to crash the browser now [18:07] rauchg_: EyePulp: gotcha [18:08] rauchg_: agreed, it's the fastest growing project since mayhem project [18:08] dilvie: is there a handy tutorial on how to use the no.de knockout smartmachine? [18:08] visnup: mape: you can make sure things install and run, but no configuring nor code that interfaces with it. and if you need to make tweaks to get things to install, make the instructions public and let all@nodeknockout.com know. [18:08] creationix: rauchg_: I probably won't use socket.io for ipad only apps. hand coded long poll seems more reliable [18:08] creationix: but websockets are great for desktop [18:08] jdub: EyePulp: yes, a young and highly caffeinated development culture is hard work to keep track of, but wonderful to behold :-) [18:08] rauchg_: creationix: hwo so ? [18:08] gerad: mape: that's our new policy [18:08] gerad: does it make sense? [18:08] _announcer: Twitter: "You'll want a dedicated language or asynchronous processing. I say thank you and please yield node.js to implement" [ja] -- こば@精神安定済. http://twitter.com/KOBA789/status/22198519385 [18:08] rauchg_: all we do is initialize a XMLHttpRequest [18:08] mape: gerad: visnup: So ok to install npm and modules I know I'll use? [18:09] visnup: mape: yes [18:09] EyePulp: maybe someone can explain to me the relationship between connect and express, or the connect.router vs express? [18:09] ryah: mape: yes [18:09] mape: Great [18:09] rauchg_: but i'm gonna do more research [18:09] rauchg_: i just need an ipad [18:09] creationix: rauchg_: something in the code is loosing the connection and never reconnecting, and it's all too complicated for a device that will only do long-poll [18:09] jdub: creationix: of course, you could just tell ipad clients to prefer the long polling transport with socket.io [18:09] visnup: mape: thanks for asking [18:09] mape: Thanks for answering! :P [18:09] rauchg_: creationix: most long polling implementations unfortunately don't buffer data between disconnections server side [18:09] creationix: rauchg_: I think you just need to beef up your long-poll code to handle network errors better in the client [18:09] rauchg_: and don't have a session protocol [18:10] gerad: mape: yeah, but you can't do anything other than npm install them and if they need anything more than a vanilla install, then you need to publish the fix and let us know [18:10] rwaldron has joined the channel [18:10] rauchg_: and don't have proper disconnection detection [18:10] rauchg_: it's really easy to roll your own naive long poll implementation, i agree with that [18:10] mape: Yeah, for sure, play and simple npm install **** **** *** [18:10] claudiu__ has joined the channel [18:10] rauchg_: creationix: yeah, bullet-proof error handling in the client [18:10] rauchg_: is what i'm working on for 0.6 [18:10] creationix: rauchg_: that will help [18:11] creationix: as it stands now, I can't say my game supports mobile because after about 10 seconds it "disconnects" and never reconnects [18:11] creationix: I never could track down the error [18:11] joshbuddy has joined the channel [18:11] joshbuddy has joined the channel [18:12] Frans-Willem has joined the channel [18:13] tobiassjosten has joined the channel [18:13] jdub: creationix: i read that you're looking to replace node-routerr [18:13] visnup: ACTION proudly made that policy into 140 characters for twitter [18:14] jdub: creationix: in the mean time, it is still a delightfully simple piece of kit [18:14] visnup: "for joyent, you can make sure things install, but no configuring nor code. if you make tweaks/fixes, make them public and let us know." [18:14] creationix: jdub: yeah, I moved development to Connect [18:14] jdub: creationix: so thank you -> here's a few changes i've made and integrated from across github: http://github.com/jdub/node-router [18:14] pgriess has joined the channel [18:14] Tobsn has joined the channel [18:14] creationix: jdub: I do miss the simplicity of node-router [18:14] gwoo has joined the channel [18:15] creationix: jdub: wow, you've been busy [18:15] mostlygeek has joined the channel [18:15] olauzon has joined the channel [18:17] creationix: jdub: ok, merged in, check to make sure it all works, there were some small conflicts with whitespace [18:18] jdub: creationix: hah! [18:18] jdub: i just added upstream and pulled... "huh? i missed something?" [18:18] jdub: it was your merge ;) [18:18] jdub: thanks [18:18] javajunky has joined the channel [18:19] maushu has joined the channel [18:19] bradleymeck: EyePulp connect is the stuff express is now built on [18:19] _announcer: Twitter: "OMG #nodejs knockout - me ready - http://tahu.no.de/ - SmartMachines are smart; Heroku is nice too :)" -- Vytautas Jakutis. http://twitter.com/tahu/status/22199202264 [18:20] EyePulp: bradleymeck: how does connect.router relate to express? or does it? i.e. would I use one vs the other, or both, or are they not related at all? [18:21] javajunky: is it possible to (easily) search the debuggable logs? [18:21] micheil: javajunky: no [18:21] Frans-Willem: javajunky : Use google with site:... ? [18:21] micheil: javajunky: write a node.js app for it. [18:21] javajunky: hmm, should remember to write something ;) [18:21] javajunky: indeed [18:21] ph^ has joined the channel [18:21] bradleymeck: they are different, no real reason to use one over the other in my book. but if you are using express already, use express's router [18:21] micheil: :P [18:21] jacobolus has joined the channel [18:22] bradleymeck: wget the dir and ravage it using grep? [18:22] Frans-Willem: Hmm [18:22] Frans-Willem: well this is surprising: [18:22] javajunky: ;) yes cheers I can think of a few ways how I could do it, just wondering it it had already been done [18:22] Frans-Willem: http://jsperf.com/function-or-object [18:22] Frans-Willem: Apparently x=(function(){}); x.test="boo"; is faster than x={}; x.test="boo"; ?! [18:23] _announcer: Twitter: "Achievement unlocked! First pull request accepted on #GitHub. Did a bit of fixing and gardening on node-router: http://is.gd/eFiFK #nodejs" -- Jeff Waugh. http://twitter.com/jdub/status/22199403914 [18:23] mape: Someone should do a project for the knockout using pcap and the audiotag, play music based on the traffic going on. jungle/waterfall sounds when low traffic and war sounds when it is getting hammered. [18:23] jdub: creepy. [18:23] Frans-Willem: mape: That would be awesome :p [18:23] EyePulp: bradleymeck: I sort of follow - what if I'm using neither at the moment, but I'd like to standardize on a router technology? I hear express mentioned a lot, and connect in general mentioned a lot, but not much about connect's router implementation. [18:23] mikeal: do file read streams currently have a setting for the chunk size or is it stricktly static? [18:23] visnup: mape: I saw someone talking about breaking out their dusty audio engineering skills on twitter [18:23] _announcer: Twitter: "To install emacs on your @node_knockout joyent smart machine, "pkgin install emacs-nox11-23.2" #nodejs" -- Jacob Rothstein. http://twitter.com/jacobrothstein/status/22199446719 [18:23] danielzilla: mape: Dammit. I was going to do a non-KO thing like that. [18:23] jacobolus has joined the channel [18:24] bradleymeck: eyepulp, /shurg connects will be a little lighter weight, thats about it [18:25] mape: danielzilla: Well let me know if you do it :) Would be a neat thing to have in the office, when you get war sounds the traffic is crazy and or the load is to high ;) [18:25] EyePulp: bradleymeck: that's fair. [18:25] mape: Easier to keep track of audio then a screen with stats [18:25] TangoIII has joined the channel [18:25] sveimac has joined the channel [18:25] _TS: ugh wish node knockout was two weeks away =) [18:26] micheil: I need to do some changelog blog posts... [18:26] gerad: Explicit rules about Joyent Smart Machine setup http://nodeknockout.posterous.com/joyent-smart-machine-setup-rules [18:26] visnup: _TS: same. then again, I want to get this over now. :) [18:26] mape: gerad: Great [18:26] gerad: _TS: me too! [18:26] _TS: haha i can imagine you have a lot of work gerad [18:26] micheil: visnup: if it was two weeks away, it'd be a pre-knockout show :O [18:27] _TS: Gerad do you need any help? I'd like to contribute somehow... [18:27] _TS: visnup good luck =) [18:27] _announcer: Twitter: "Very useful #nodejs newspaper - http://bit.ly/90qit2" -- Emerson Macedo. http://twitter.com/emerleite/status/22199682484 [18:27] gerad: _TS: whatcha good at? [18:28] gerad: we wanted to do a voting widget [18:28] _TS: learning and adapting haha [18:28] bradleymeck: wish i had a graphics person XD [18:28] gerad: could also use help with a blog post [18:28] gerad: simple stuff, but time is short [18:28] gerad: email gerad@nodeknockout.com [18:29] _announcer: Twitter: "Interested in Node.js? Checkout http://peepcode.com/products/nodejs-i" -- Matthias Luebken. http://twitter.com/luebken/status/22199781358 [18:29] bradleymeck: a voting widget you say? [18:29] mape: gerad: Perhaps just do something like the "fork me" badge? [18:29] _announcer: Twitter: "It's a shame @joynet's #nodejs hosting at http://no.de is only for knockout stuff just now :( Awesome domain name" -- Tane Piper. http://twitter.com/tanepiper/status/22199816028 [18:30] gerad: mape: we're running short on time for even that [18:30] bradleymeck: ACTION runs off to whip up widgetness [18:30] mape: gerad: I'd be able to throw something together if I got the text to be added :P [18:31] gwoo has joined the channel [18:31] _announcer: Twitter: "We decided to work around the Node.js/V8 JSON.stringify bug by using a pure JS alternative. Thanks to V8's JIT, performance is acceptable." -- Jim Roepcke. http://twitter.com/JimRoepcke/status/22199901588 [18:31] _announcer: Twitter: "If you, friend webdev, would rather see a lecture on q? 1 - jQuery node.js + or 2 - Indexing and searching in texts (with Solr)?" [pt] -- Acácio Santos. http://twitter.com/acacioas/status/22199913209 [18:31] micheil: Just a heads up folks, there'll be a Changelog Podcast episode being recorded with Visnup and Gerad after the actual Knockout Event [18:31] ashleydev: who works at joyent? no.de signup is broke cause it doesn't allow a '+' in email addresses which does not follow spec [18:31] bradleymeck: hehe [18:32] javajunky: cramforce or novemberborn in here? [18:32] javajunky: or polotek ? [18:32] bradleymeck: but how will you tell who is voting... i guess if there was a logged in thing [18:32] micheil: that said, if there's a live venue that I could call up on the day of the knockout to get a recording of "We're at Node Knockout, and you're listening to The Changelog", let me know. [18:33] icozzo has joined the channel [18:33] _announcer: Twitter: "#nosql #rails #nodejs #clojure #haskell #mongodb #haml #sass #cloud #agile #rest" -- Tiago Pacman. http://twitter.com/pac_man/status/22200028990 [18:33] bradleymeck: ah, tagspam [18:34] JimRoepcke: everybody reply to that status with #spam #spam #spam #bacon #eggs #spam :) [18:34] gerad: mape: "Vote for me in Node KO" ? Links to teams/teams-slug - repo is at github.com/nko/teams [18:34] wink_: JimRoepcke: you get anywhere with the json bug? [18:35] JimRoepcke: wink_: no, we spent all day trying to isolate it, no luck. for now we've worked around it by using an alternative pure-JS stringify function [18:35] jacobolus has joined the channel [18:35] wink_: awww :< [18:35] JimRoepcke: wink_: http://twitter.com/mraleph/status/22180748689 [18:36] voxpelli has joined the channel [18:36] JimRoepcke: wink_: we'll probably try that suggestion, but I don't think it's going to help [18:36] JimRoepcke: looking at V8's json.js, it uses a string literal for null, it's not like they use String(null) [18:36] JimRoepcke: so I don't see how the GC would come into play [18:37] wink_: yeah, i doubt v8 is losing track of what the value for null should be [18:37] gerad: mape: that might be too long... will see if I can come up with something shorter [18:38] beynon has joined the channel [18:38] mape: gerad: Just "Vote for me on Node Knockout" ? [18:38] JimRoepcke: that bug was a showstopper for us to start our private beta so we had to go for the work around for the short term. [18:38] gerad: mape: too long? [18:38] mape: Yeah might be, I'll poke at it [18:38] gerad: mape: but if you can fit it tastefully, go for it [18:40] wink_: JimRoepcke: yeah i hear ya, that bug just sounds scarrrryyyyy :p [18:40] wink_: one of those things i'd be quite interested in knowing where it came from [18:41] mscdex: #spam #eggs #sausage #spam [18:41] JimRoepcke: wink_: agreed, we briefly considered replacing the bad bytes with "null" but our feeling was "if that's broken, what else is broken?" and didn't want to go there [18:41] mscdex: has not got much spam in it [18:42] eazyigz: has anybody been able to use node-yui to execute javascript on a DOM? [18:42] wink_: JimRoepcke: well, i'd love to help you hunt it :>, did you ever get gdb hooked up? [18:42] JimRoepcke: no that was likely our next step, spent a lot of time on the isolation effort and then had to move forward. [18:43] SamuraiJack has joined the channel [18:43] jherdman has joined the channel [18:43] JimRoepcke: wink_: i'd not be surprised if the bug didn't occur in node_g though :) [18:43] wink_: yeah, that'd be pretty heartbreaking :p [18:43] _announcer: Twitter: "@theryanburke NodeKnockout.com is a 48-hour coding competition to make something interesting in NodeJS. Starts tomorrow at midnight." -- lorennorman. http://twitter.com/lorennorman/status/22200677725 [18:44] SamuraiJack: when npm unpack the distribution and there is a `Build.PL` file, does npm run it? [18:44] SamuraiJack: seems it does.. [18:45] wink_: JimRoepcke: you could likely instrument the crap out of json.js to try and isolate the corruption as well [18:49] tobiassjosten has joined the channel [18:49] rnewson has joined the channel [18:49] rnewson has joined the channel [18:49] mscdex: why does it say this on the nodeko website: "node.js isn�t just another MVC web framework." [18:50] mscdex: the "just" part makes it sound like it is one [18:50] rwaldron has joined the channel [18:50] mscdex: it's not [18:50] mscdex: :S [18:51] JimRoepcke: wink_: what profiler do you use with node? i started researching that last night but i was pretty tired so didn't get far. [18:51] wink_: JimRoepcke: i havent yet, but i'd imagine i'd just use the builtin v8 profiler [18:51] wink_: does it suck? [18:51] JimRoepcke: i have no idea :) [18:52] JimRoepcke: google found this: http://github.com/bnoordhuis/node-profiler [18:52] JimRoepcke: node --prof foo.js [18:52] JimRoepcke: uses V8's profiler [18:52] Tobsn: does someone know if i can have a active repo within a repo? (git) [18:52] wink_: damnit, he took the easy way out [18:53] wink_: i still want a heap inspector :p [18:53] JimRoepcke: and this looks cool: http://github.com/dannycoates/node-inspector [18:53] mape: gerad: Something like http://mape.me/knockout-badge.png ? Or is it to large [18:53] femtoo has joined the channel [18:53] JimRoepcke: it appears V8's profiler does heap snapshots [18:54] wink_: it does, but once you get the snapshot, i cant find how to walk it properly [18:54] JimRoepcke: ah [18:54] wink_: i tried digging through chromium to check out how the dev tools do it [18:54] wink_: but i gave up after about 20 minutes of searching for the code [18:55] JimRoepcke: just some light reading :) [18:55] tobiassjosten: Tobsn: You'll want a submodule. [18:55] wink_: if i could even find the damn thing! :p [18:56] gerad: mape: it looks really nice, but I think it's probably too big! what do you think? would you use it on your entry? [18:56] mape: Depends if I had a design that would allow it [18:56] mape: But yeah, probly to big *fiddles more* [18:56] cardona507 has joined the channel [18:58] JimBastard has joined the channel [18:58] JimBastard: http://www.youtube.com/watch?v=__Co6GAaXFw&has_verified=1 [18:58] JimBastard: ahahahahaha [18:58] maushu: The debugger protocol is not fully documented. [18:59] Tobsn: tobiassjosten, yeah just found that out :) [19:00] maushu: JimBastard, that can't be real, the compression is too high. [19:00] mape: gerad: http://mape.me/knockout-badge-v2.png smaller but might still be to big [19:00] xer0xM: haahha jimbastard that's awesome [19:00] Tobsn: anyone here knows ruby and needs a new job? ;) [19:00] JimBastard: maushu: im thinking it could be fake. he could have turned down the setting all the way, you'll notice the bale is falling apart the whole time [19:00] _announcer: Twitter: "@pgriess Id Yahoo already using node.js in production?" -- Andreas Kalsch. http://twitter.com/kalsch/status/22201681552 [19:00] Tobsn: mape, the "node.js KO" looks pretty much copy&pasted into that ;) [19:00] bradleymeck: i need a new job but dont know ruby? [19:00] Tobsn: bradleymeck, what do you know? [19:00] gerad: mape: what about just vote! [19:00] mscdex: maushu.com! [19:00] gerad: and the node.js KO [19:01] maushu: JimBastard, that thing has settings? [19:01] bradleymeck: js, python, c, css, java, rarely use much else [19:01] mape: Tobsn: well, join the party and make one :D [19:01] mape: gerad: "Vote here!" ? [19:01] Tobsn: hehe [19:01] gerad: mape: brilliant! [19:01] javajunky: there you go maushu a greener-grass op for you [19:01] Tobsn: i would [19:01] Tobsn: if i had time [19:01] bradleymeck: marquee = win lol [19:02] gerad: mape: will send a vector graphic in a second for ya [19:02] maushu: javajunky, wat. [19:02] mape: gerad: so vote here with logo? [19:02] javajunky: Tobsn sounds like he's hiring ;) [19:02] Tobsn: someone i know is hiring [19:02] Tobsn: its a successful startup and they're expanding [19:02] JimBastard: ruby is lame [19:02] Tobsn: (the real successful, not the "we saying we're" successful) [19:02] JimBastard: def [19:02] Tobsn: i know [19:03] JimBastard: def noScope [19:03] gerad: mape: might work [19:03] gerad: http://github.com/nko/website/raw/master/designs/nko.eps [19:03] gerad: http://github.com/nko/website/raw/master/designs/nko.pdf [19:03] Tobsn: well hes searching a CTO, i rejected the position cause i am already one [19:03] Tobsn: :P [19:03] _announcer: Twitter: "Can anyone tell me why and how to use NodeJS (in a shared hosting environment)? /cc @ginader" -- Eric Eggert. http://twitter.com/yatil/status/22201844432 [19:03] gerad: for the vector versions [19:03] derferman has joined the channel [19:03] JimBastard: def whyareallmyvariablesbeingstomped [19:03] mscdex: JimBastard: because the language needs more cowbell [19:03] JimBastard: ruby has import export right? ohh nm [19:04] JimBastard: that was the sound of me trying to figure out why my global variables are being overwritten by some random file i didnt know existed [19:04] tilgovi has joined the channel [19:04] mscdex: !! [19:05] Tobsn: well i just dont like the whole ruby thing... they basically have only one framework and you have to write code that looks like youre talking to a 3 year old [19:05] mape: gerad: btw know the font the logo is using? [19:05] Tobsn: impact? [19:05] Tobsn: :P [19:05] JimBastard: but DHH man [19:05] JimBastard: D H FUCKING H [19:05] Tobsn: DHH? [19:05] JimBastard: he invented the internet [19:05] javajunky: Tobsn: srly ? [19:06] Tobsn: srsly what? [19:06] SubStack: there's more to ruby than rails [19:06] javajunky: Were you saying you didn't know who DHH was ? [19:06] icozzo has joined the channel [19:06] Tobsn: SubStack, problem is nobody cares about the other part [19:06] Tobsn: :P [19:06] SubStack: Tobsn: yeah it's sad [19:06] Tobsn: its a person? [19:06] JimBastard: SubStack: yeah, and rails gives it a bad name [19:06] JimBastard: ruby the language looks pretty [19:06] Tobsn: oooh rails [19:06] Tobsn: hahha [19:06] Tobsn: hanson? [19:06] _announcer: Twitter: "Configuring apache and node.js to live in harmony on my server, fortunately it has 2 IP addresses." -- Tim Hastings. http://twitter.com/timhastings/status/22202073746 [19:06] javajunky: yeah [19:07] JimBastard: i dont do production ruby so who cares [19:07] Tobsn: does he has a middle name? [19:07] JimBastard: H [19:07] Tobsn: idk such stuff... i never payed any interested to ruby [19:07] gerad: http://github.com/nko/website/raw/master/designs/nko.key [19:07] Tobsn: not a bit [19:07] derferman has joined the channel [19:07] gerad: mape: for the keynote http://github.com/nko/website/blob/master/designs/nko.key [19:07] Tobsn: i just know it exists, i know how it looks like, i know how to start it up and i know that i’ll never use it [19:07] javajunky: 'Heinemeier' I think [19:07] Tobsn: if i ever learn another script language its something more useful like python or perl [19:07] Tobsn: or erlang [19:07] Tobsn: or brainfuck [19:08] Tobsn: or tcl [19:08] matt_c has joined the channel [19:08] JimBastard: Tobsn: Disregard open-source, learn .net [19:08] gerad: mape: cracked regular 270pt [19:08] JimBastard: once node.net is finished no one will use this v8 bullshit [19:08] Tobsn: or cocoa, quakeC, lisp, applescript, flash... [19:08] Tobsn: maybe even lua [19:09] Tobsn: or visual basic [19:09] Tobsn: or C# [19:09] robotarmy: tobsn : i'v learned python, ruby , perl , php, and ruby is what i do professionally [19:09] bradleymeck: lua, the casual programmers game language [19:09] Tobsn: but i'll never look into ruby. :P [19:09] wink_: i dunno about that one bradley, lua is used in some pretty serious games [19:09] Tobsn: robotarmy, need a new job? [19:09] JimBastard: WOW IS SERIOUS [19:09] wink_: and the work mike pall does with luajit is pretty badass [19:10] robotarmy: Tobsn : lol - no thanks [19:10] Tobsn: wow is dead serious [19:10] robotarmy: mine is fun [19:10] Tobsn: k [19:10] Tobsn: :) [19:10] robotarmy: :D [19:10] JimBastard: fuck i gotta launch this blog before tommorow [19:10] JimBastard: so much prep work for knockout [19:10] JimBastard: shiiiiit [19:11] bradleymeck: lol WoW [19:11] _TS: OAUTH [19:11] wink_: not just wow although their implementation is probably the most prolific [19:11] javajunky: _TS ? [19:11] dannycoates has joined the channel [19:11] Tobsn: dont they have only 5 coders working on it or something like that [19:12] wink_: no clue.. [19:13] _TS: javajunky wrong window sorry trying to decide where to save my tokens [19:13] javajunky: ah [19:13] _TS: and how [19:13] _TS: oauth is strange [19:14] mscdex: oh, auth. [19:15] _TS: yeah man [19:15] mape: gerad: http://mape.me/knockout-badge-v4.png [19:15] javajunky: which oauth lib you using, mine ? [19:16] dilvie: lol @ 3..toString(); [19:16] bradleymeck: http://jsfiddle.net/LjUGU/, cause marquees rule, lol [19:17] bradleymeck: but if there could be a ticker for all the knockout activity, that would be killer [19:17] javajunky: _TS: if you are using mine, there's some reasonable examples of using it here http://github.com/ciaranj/connect-auth/tree/master/lib/auth.strategies/ [19:18] eazyigz: join #javascript [19:18] _TS: javajunky using http://github.com/unscene/node-oauth/tree/master/lib/ [19:18] gerad: mape: looking good! [19:18] _TS: ive used yours as well [19:18] _announcer: Twitter: "Excited for Node.js Knockout, the Ponies for Orphan team still has no idea what we are making, but it'll be awesome :D" -- Paul Querna. http://twitter.com/pquerna/status/22202764269 [19:18] gerad: mape: two other refinements to try [19:18] _TS: i mean it is yours [19:18] gerad: mape: if you don't mind [19:18] _TS: really [19:18] mape: gerad: Not at all [19:18] gerad: mape: Vote here! KO [19:18] javajunky: g2g [19:18] gerad: mape: vote KO [19:19] gerad: mape: along those lines [19:19] mjr_ has joined the channel [19:19] gerad: mape: the nice thing about you using the logo, is that you don't need as much branding [19:20] _TS: javajunky: im not using connect so my process is a little different but your link is great thanks [19:20] gerad: mape: and maybe the latest version with just one space between the two words? (I assume you looked at this and didn't like it?) [19:20] ehaas has joined the channel [19:22] cloudhead has joined the channel [19:22] bradleymeck: wish i could make it to a hq, anyone here going to be streaming from hq for ko? [19:22] micheil: gerad: or just +1 UP | KO [19:23] micheil: bradleymeck: it could be broadcasted via justintv. [19:23] micheil: if someone sets it up. [19:23] gerad: micheil: i like it, but the general public probably wouldn't get it :-( [19:23] micheil: t'aww.. [19:23] micheil: super mario bothers ftw. [19:23] mape: gerad: http://mape.me/knockout-badge-smaller.png http://mape.me/knockout-badge-smallest.png [19:23] visnup has joined the channel [19:23] bradleymeck: im going to be broadcasting prolly, going to be odd though in my small apt [19:24] beynon has joined the channel [19:24] mape: Kinda like the smallest one [19:24] micheil: mape: make the smallest a little bigger and it'd look awesome [19:24] micheil: +1 em [19:24] gerad: mape: I like 'em, what do you think? [19:24] gerad: mape: visnu likes 'em too [19:24] drudge: i like the smaller one as well [19:25] mape: Yeah think the smallest one but a little bigger like micheil said [19:25] _announcer: Twitter: "I seriously do not get all the node.js love. I cannot be excited about javascript as a server development tool. Ever." -- Don Whiteside. http://twitter.com/phearlez/status/22203149136 [19:25] bmavity: so sad for you, donny [19:25] micheil: night chaps' [19:25] _announcer: Twitter: "Seriously, JAVASCRIPT. Have none of you node.js enthusiasts ever heard of Perl? WTF." -- Don Whiteside. http://twitter.com/phearlez/status/22203193187 [19:25] drudge: wow [19:26] wink_: lol, surely hes trolling [19:26] drudge: perl, really... [19:26] bmavity: lmao [19:26] V1: I'm actually in the phase where we are replacing perl with node :$ [19:26] drudge: V1: that's good, just not the other way around :P [19:26] V1: :p [19:26] wink_: !tweet @phearlez nice trolling! [19:27] _announcer: Twitter: "node.js on peepcode, a new station on my js journey?" -- fifigyuri. http://twitter.com/fifigyuri/status/22203273864 [19:27] wink_: is that bot even here [19:27] overra has joined the channel [19:28] ehaas has left the channel [19:28] bradleymeck: nope [19:28] bradleymeck: hes waiting on a host [19:28] wink_: aw, damn [19:28] huyhong has joined the channel [19:29] bradleymeck: if i can keep my joyent after knockout ill put him up there [19:29] bradleymeck: hes been overhauled, needs a fresh field to run in [19:29] wink_: it's cool with me if you keep it ;> [19:30] bradleymeck: lol [19:30] _announcer: Twitter: "Waiting for node.js to compile..." -- Tim Hastings. http://twitter.com/timhastings/status/22203500651 [19:31] huyhong has left the channel [19:31] mape: gerad: http://mape.me/knockout-badge-smallest-v2.png [19:31] JimBastard: bradleymeck: i think i can deploy right now [19:31] JimBastard: let me see what i can do [19:32] bradleymeck: did you get the change i sent you a while back that should let you auto login? [19:32] JimBastard: is http://github.com/bmeck/_utility up to date? [19:32] gerad: mape: looks awesome to me! [19:32] bradleymeck: jimbastard, as up to date as its going to be [19:32] JimBastard: bradleymeck: i might have lost it, i lost my old laptop [19:32] bradleymeck: oh *digs* [19:32] mape: gerad: http://mape.me/knockout-vote.png [19:33] rnewson has joined the channel [19:33] gerad: mape: awesome [19:34] gerad: now, to figure out how to tell people about it... :-) [19:34] zomgbie has joined the channel [19:34] mape: Hehe, let me know if there is anything else I can help with [19:34] bradleymeck: interfaces/twitter.js lines 28 and 29 replace those closures with the last request token info [19:34] JimBastard: checking now... [19:35] Tobsn: who linked the sponsor link to an email? [19:35] Tobsn: mailto [19:35] Tobsn: HA? [19:36] johndahlstrom has joined the channel [19:36] gerad: mape: sure thing! thanks so much! [19:36] _announcer: Twitter: "And yes folks, we *will* be opening our http://no.de beta up soon, stay tuned. #joyent #nodejs" -- Mark Mayo. http://twitter.com/mmayo/status/22203862321 [19:37] mape: np, thanks for the knockout :) [19:37] JimBastard: bradleymeck: so essentially take out the stdin stuff and assign closures['OAuth.access_token']=oauth_access_token; closures['OAuth.access_token_secret']=oauth_access_token_secret; directly? [19:37] bradleymeck: yea [19:37] Tobsn: mape! build in a contact form ;) [19:37] bradleymeck: you can ignore the stdin part entirely, wont break it [19:38] JimBastard: bradleymeck: i think im gonna need password again, didnt make it in the backup [19:38] voxpelli has joined the channel [19:38] JimBastard: i can just log into twitter and generate new tokens right? [19:38] Tobsn: i think [19:38] bradleymeck: yes [19:38] bradleymeck: you can login as it is now and it will spew out the data you need [19:41] _TS has joined the channel [19:41] bradleymeck: wish we had a x.=y that would say x=x.y(), probably too much an edge case, but i return values for like everything [19:44] _announcer: Twitter: "Git deployment for our node.js product evolved from our earlier JS PaaS work, not Heroku. http://bit.ly/deyEli #nodejs #joyent" -- Mark Mayo. http://twitter.com/mmayo/status/22204289272 [19:44] satori_ has joined the channel [19:46] beynon has joined the channel [19:46] evanpro has joined the channel [19:47] _announcer: Twitter: "A nod to the fine folks at Heroku as we used server.js this time for http://no.de. So folks can trivially deploy to either. #nodejs" -- Mark Mayo. http://twitter.com/mmayo/status/22204482991 [19:52] _announcer: Twitter: "now i`m trying to create asynch <require> for nodejs of binary and js modules. I think synch commonjs contrary asynch nature of #nodejs" -- Alexander. http://twitter.com/bga_/status/22204801489 [19:53] bradleymeck: but we have that :O [19:53] eazyigz: I am trying to use jsdom and his jQuerify api. I want to call jquery's getScript() function. Is it possible? [19:54] _announcer: Twitter: "Wow! Node.js is cool and I love it! #nodejs" -- Gustaf Lindqvist. http://twitter.com/GLindqvist/status/22204894135 [19:55] dilvie: eazyigz: I guess you figured out how to open files? =) [19:57] eazyigz: dilvie: yeah :) [19:58] eazyigz: I am trying to leverage jsdom to inject html into a body, and then call jquery's getscript to process it [19:58] eazyigz: but its not working [19:59] mattikus has joined the channel [20:00] rnewson has joined the channel [20:01] dilvie: eazyigz: jQuery.getScript() is really just an ajax json-p loader, isn't it? [20:01] mscdex: i believe so [20:01] eazyigz: don't know if its jsonp [20:02] eazyigz: jquery specs don't mention it [20:02] mscdex: !summon JohnResig [20:02] eazyigz: but according to jquery, the script should be executed in the global context [20:03] V1: Is it possible that socket.io doesn't work on local host? In my logs I do see "Initializing client with transport "websocket"" but when I use the .send() method nothing happens [20:03] eazyigz: so, why can't I make it happen with jsdom... [20:03] danielzilla: V1: It works with localhost. I did some development with it locally two weekends ago. [20:03] jdub: V1: works ok on localhost here [20:04] _announcer: Twitter: "http://bit.ly/d9uIgI is up and Running ... check it out =) # I sequelize # # # MySQL nodejs" [ga] -- Sascha Depold. http://twitter.com/sdepold/status/22205496744 [20:04] V1: hmz, weird :p *diggs deeper* [20:04] _announcer: Twitter: "@yatil why use node.js? Because it's full of win. How to install on a shared hosting? If you have ssh access see: http://bit.ly/dnEpr9" -- Dirk Ginader. http://twitter.com/ginader/status/22205514759 [20:06] dannycoates has joined the channel [20:07] isaacs has joined the channel [20:08] samsonjs has joined the channel [20:08] mikeal: hey [20:09] mikeal: who has public examples of node/couchdb code ? [20:09] JimBastard: mikeal: i do [20:09] JimBastard: well, framework code [20:09] _announcer: Twitter: "who has some good and public examples of node.js & CouchDB code?" -- Mikeal. http://twitter.com/mikeal/status/22205797188 [20:09] isaacs: mikeal: what do you mean exactly? [20:09] mikeal: is it easily understandable [20:09] mikeal: ? [20:09] isaacs: mikeal: node code that accesses couchdb? [20:09] mikeal: yes [20:09] mikeal: simple stuff [20:09] JimBastard: mikeal: one sec, http://github.com/cloudhead/cradle [20:09] mikeal: it's for the end of the blog entry [20:10] dilvie: doesn't couchdb just use a standard RESTful API? [20:10] JimBastard: thats pretty simple, uses starwars jokes i think [20:10] isaacs: mikeal: there's this: http://github.com/isaacs/npm/tree/master/lib/utils/registry/ [20:10] dilvie: I just set up mongodb here. [20:10] mikeal: dilvie: yes [20:10] dilvie: Loving it, so far. [20:10] mde: mikeal: Here's what Geddy uses: http://github.com/mde/geddy/blob/master/geddy-core/lib/clients/couchdb.js Pretty basic client. [20:10] v8bot has joined the channel [20:11] dilvie: Although, some of the default query syntax strikes me as odd. [20:11] gsmcwhirter has joined the channel [20:11] isaacs: dilvie: mongo is web scale [20:11] isaacs: (or so i hear) [20:11] dilvie: mongo is rock and roll. [20:11] mikeal: hahah [20:12] _announcer: Twitter: "@JimRoepcke ah, that's unfortunate. Bug looks like a memory corruption so it would be great to track it back to it's source in V8 or node.js" -- Vyacheslav Egorov. http://twitter.com/mraleph/status/22205963701 [20:12] dilvie: http://www.mongodb.org/display/DOCS/Production+Deployments [20:12] nerdEd has joined the channel [20:13] mikeal: most of those deployments don't use it as the primary data store [20:13] mikeal: they use it for analytics [20:13] dilvie: there are people doing stuff that requires a lot more transactions than I'm going to be pushing for a while. [20:13] mikeal: which is what it was designed for [20:13] mikeal: there are no transactions :) [20:14] dilvie: mikeal: I'm not talking about sql transactions. I was using the word in a much looser sense. My bad. =) [20:14] mikeal: http://www.couch.io/case-studies [20:14] mikeal: detailed uses of CouchDB in production [20:14] jamescarr_: h [20:14] mscdex: i [20:14] jamescarr_: tomorrow node knockout starts [20:14] mikeal: tomorrow at midnight [20:14] mikeal: PDT [20:14] visnup: 5p pdt [20:14] jamescarr: we're doomed [20:14] visnup: midnight gmt [20:14] dilvie: Mongo seems perfect for the computer-game like status update stuff [20:14] mscdex: there ought to be a live stream at some of the knockout locations, that would be cool [20:15] mikeal: ok, i've got all those examples in my blog post [20:15] mikeal: dilvie: if you don't mind losing some updates, yes [20:15] mikeal: but you probably want something with a pub/sub interface for pushing those updates [20:15] mikeal: so you'll actually want to use Redis or CouchDB or Postgres depending on the style of game [20:15] visnup: mscdex: there are plans for that........ [20:15] mikeal: Redis is probably best at that [20:15] visnup: "plans" [20:15] mscdex: heh [20:16] mscdex: visnup: why on the front page does it say, "node.js isn�t just another MVC web framework" ? the "just" part makes it sound like it is an MVC web framework [20:16] V1: \o/ sockets are working \o/, hyped [20:17] visnup: mscdex: ehhhh dunno [20:17] visnup: take out the "just"? [20:17] mscdex: :) [20:17] V1: It sucks that there arent any nodekockout locations "near" me :9 [20:17] mscdex: visnup: at least that i would think [20:17] mikeal: isaacs, mde: I included you on the draft of this blog entry I wrote [20:17] mikeal: it's in markdown [20:18] eisd has joined the channel [20:18] jdub: how about "node.js bears no relationship to MVC frameworks... aside from the fact that you could build one with it" [20:18] isaacs: mikeal: included me? [20:18] jdub: ;-) [20:18] mikeal: i sent you the draft [20:18] dilvie: mikeal: Mongo "loses" updates? [20:18] mikeal: so you can review it :) [20:18] aubergine has joined the channel [20:18] visnup: mscdex: changed [20:18] mikeal: Mongo isn't very durable [20:18] mikeal: this is well known [20:18] mscdex: yeah, node is like a set of building blocks [20:18] isaacs: ah, email is slow [20:18] mikeal: their default minimum configration is two slaves [20:18] mscdex: for anything really [20:19] mikeal: in order to protect you from data loss on a ndoe [20:19] mscdex: it's just really good at http and stuff [20:19] mikeal: er node [20:19] mscdex: :p [20:19] dilvie: mikeal: I understand the durability issues with Mongo, but isn't that easily mitigated with database replication and failover? [20:19] mikeal: man peter braden had the best quote about Twisted yesterday [20:19] mikeal: "Twisted is like writing node in Python in Java [20:19] mde: Heheh [20:20] mscdex: does that include deeply nested paths? [20:20] mde: Sounds like Peter. [20:20] mscdex: :p [20:20] mikeal: dilvie: have you ever tried to keep something accessible with that kind of constant failover? [20:20] brianmario has joined the channel [20:20] creationix: mikeal: I'm working on a node + couch app right now, but I'm not sure when it will be public [20:20] creationix: hopefully soon [20:20] mikeal: Mongo isn't like Riak, it's not going to manage that cluster for you [20:20] jdub: visnup: the nodejs runtime is roughly equivalent to the python runtime, but with a small standard library focused on event based i/o [20:20] mikeal: creationix: what are you using to talk to couch? [20:20] creationix: my couch client [20:20] creationix: pretty bare [20:20] creationix: http://github.com/creationix/couch-client [20:21] mscdex: the nodejs runtime is less sucky than the python runtime [20:21] mscdex: :-D [20:21] visnup: jdub: that paragraph should get rewritten for general public in mind at some point [20:21] visnup: by mondayish [20:21] dilvie: mikeal: yeah, I spent many years as a web server administrator back when hot swappable hard drives were a luxury. [20:21] rnewson has joined the channel [20:21] rnewson has joined the channel [20:21] V1: mscdex: nearly all runtimes are less sucky than python ;) [20:21] jdub: mikeal: i'm working on a node-based app that will hit github relatively soon: http://is.gd/eFtfu [20:21] mikeal: it's not practial [20:21] mscdex: huhu [20:21] mikeal: the thing is, all of these database were built for a use case [20:21] drudge: i like it creationix [20:22] mikeal: and all of them are pretty upfront about that [20:22] visnup: and then it'll probably make no technical sense and will be all PR bait. [20:22] mikeal: and MongoDB wasn't built for general purpose data storage [20:22] mikeal: it was built for analytics [20:22] mscdex: V1: i don't know about that.... i mean what about .net? :p [20:22] mikeal: and it does that really well [20:22] jdub: mscdex: equivalence in concept [20:22] isaacs: mikeal: is general purpose data storage web scale? [20:22] mikeal: but they can't make a living off of analytics, so they've convinced a lot of people that it's good for general purpose [20:22] mikeal: isaacs: hahhaha [20:22] isaacs: mikeal: that sentence seems like just a bunch of words put together randomy [20:23] V1: mscdex: i do think python sucks more than .net :p [20:23] mscdex: V1: impossible! [20:23] V1: Hoax! [20:23] _announcer: Twitter: "There’s been a huge spike in new #nodejs libraries. I’m sure that has nothing to do with #nodeknockout this weekend. Nothing at all." -- Steve Streza. http://twitter.com/SteveStreza/status/22206626425 [20:23] isaacs: when technobabble looks like technobabble to people who actually know what the words mean, you've gone too far. [20:23] jdub: ie. if you think about node as being anything other than an (opinionated) environment to run JS, you've probably misunderstood [20:23] creationix: drudge: thanks, I recently added an interface for the changes feed and streaming, just havn't updated the readme [20:23] dilvie: mikeal: You make it sound like mongo is constantly crashing. [20:24] mikeal: i really hope that the winner of node knockout does something with node-pcap [20:24] drudge: creationix: i'm gonna play with it more when i get home :) [20:24] mikeal: and that it replaces httpscoop [20:24] mscdex: s/opinionated/optimized/ [20:24] creationix: drudge: awesome, let me know what you think [20:24] mscdex: :p [20:24] mikeal: i'll be a very biased judge to anyone who does that [20:24] mikeal: dilvie: it crashes enough [20:24] isaacs: dilvie: the issue is that it crashes ever. all software crashes sometimes. [20:24] mikeal: software eventually crashes [20:24] mikeal: durable databases assume they will crash [20:25] mikeal: CouchDB is "crash only", the shutdown call is a kill −9 [20:25] mscdex: nowai! not my database! [20:25] _announcer: Twitter: "I wish all the node.js knockout participants a lot of fun! I wish I had the time to compete." -- Jan Monschke. http://twitter.com/thedeftone/status/22206761822 [20:25] mikeal: oh man [20:25] mikeal: ultra-geekery [20:25] mikeal: http://rpg.stackexchange.com/ [20:25] mikeal: mde: ^^ [20:25] creationix: mikeal: http://howfuckedismydatabase.com/nosql/fault-tolerance.png [20:26] mikeal: i love that [20:26] maushu: You traitorous swine! [20:26] mikeal: we need to blow that up and get it made in to a poster for our office [20:26] mde: mikeal: Wow, nice. [20:26] mikeal: pick Oracle [20:26] mscdex: http://www.youtube.com/watch?v=zng5kRle4FA [20:26] mscdex: :p [20:26] mikeal: How much money do you have? [20:26] mikeal: millions / less than a million [20:26] mikeal: hilarious [20:27] eazyigz: anyone use jsdom jqueryify api? [20:27] mscdex: why are you casting magic missile? there's nothing to attack here [20:27] mde: Polyhedral dice FTW. [20:28] polyrhythmic: yes creationix been loving that cartoon all day [20:28] polyrhythmic: thx for the hilight mde [20:28] _announcer: Twitter: "Are Web Sockets supported on @joyent No.de? /cc @node_knockout #node.js" -- Daniel Shaw. http://twitter.com/dshaw/status/22206929205 [20:29] dilvie: LOL! Click "yes" http://howfuckedismydatabase.com/mssql/ [20:29] mde: Hopefully larp.stackexchange is next. [20:30] mde: http://www.youtube.com/watch?v=lpmvFK02jY8 [20:30] mde: "Lightning bolt!" [20:30] mde: I love the chick applauding at the end. [20:31] mikeal: ok people [20:31] mikeal: draft [20:31] mikeal: http://gist.github.com/552181 [20:31] mikeal: of the CouchDB and node.js blog post for the knockout [20:31] mikeal: give me bugs! [20:32] creationix: mikeal: ohh, include my driver, pretty please [20:32] mikeal: what do you want the sentence to say? [20:33] _announcer: Twitter: "Writing bridging code between PHP and a node.js backend." -- Tim Hastings. http://twitter.com/timhastings/status/22207198587 [20:33] _frankie has joined the channel [20:33] mikeal: creationix: you're added to the bottom now [20:33] mikeal: http://gist.github.com/552181 [20:34] creationix: that works [20:34] mikeal: if you want a detailed writeup I'll take a diff if you send it in the next 15 minutes :) [20:34] eisd has left the channel [20:34] JimBastard: !tweet test [20:35] _announcer: Twitter: "Might sit down and play with #nodejs tonight." -- Bob Waycott. http://twitter.com/bobwaycott/status/22207381584 [20:36] creationix: mikeal: ok, I might do that [20:36] creationix: ACTION goes to write some docs [20:36] Tim_Smart has joined the channel [20:36] jbenesch has joined the channel [20:36] aubergine has joined the channel [20:36] dannycoates has joined the channel [20:37] dilvie: request({uri:'http://myaccount:password@myname.couchone.com:5984/dbname', method:'PUT', headers:h <-- um... people do this over the interwebz? [20:37] creationix: mikeal: want about the same size as the node-couchdb one? [20:37] JimBastard: /s/http/https [20:37] dilvie: JimBastard: that's more like it. [20:38] jdub: dilvie: did you see the presentation about amusing things you can do with exposed memcache ports? [20:38] JimBastard: still though, i dont let people perform direct queries on couch, we keep it all on the vlan [20:38] dilvie: jdub: no... [20:38] dilvie: JimBastard: That's even better. =) [20:38] jdub: dilvie: http://news.ycombinator.com/item?id=1578750 [20:39] jdub: link and discussion [20:39] dilvie: but it's likely my db server is going to wind up on some virtualized host floating in the cloud. [20:39] jdub: merely reading the slides had my heart racing [20:39] jimt has joined the channel [20:41] _announcer: Twitter: "If you still think node.js is just hype, wait til you see the fallout from Node Knockout. Shit's gonna be CRAZY." -- Fil Maj. http://twitter.com/filmaj/status/22207694117 [20:42] _announcer: Twitter: "@peepcode Bought nodeJS vid hours ago, and still can't download it.. Can I just drive to my local Blockbuster and rent it? Should be faster." -- Tal Ater. http://twitter.com/TalAter/status/22207782307 [20:42] JimBastard: does anyone know any elegant solutions for managing /etc/hosts on mac os? editing the file directly is mehh [20:43] JimBastard: i need groups and whatnot [20:43] beynon_ has joined the channel [20:43] MikhX has joined the channel [20:44] dilvie: whoah [20:44] dilvie: I had no idea it was so easy to find the reverse value of an md5 hash. [20:45] JimBastard: dilvie: its double rainbow tables all day [20:45] dilvie: I guess that makes sense though. [20:45] JimBastard: throw some salt in the mix [20:45] _announcer: Twitter: "@timwhitlock using HTTP POST from PHP to node.js HTTP server and using JSON to simplify marshaling between native associative arrays" -- Tim Hastings. http://twitter.com/timhastings/status/22207951679 [20:45] _announcer: Twitter: "http://streamie.org/ Web based Twitter live user stream client. Node.js based using WebSockets. #earlyalphatest HTML/CSS by @helgri" -- Malte Ubl. http://twitter.com/cramforce/status/22207956842 [20:45] beynon has joined the channel [20:47] dmcquay has joined the channel [20:49] dilvie: omg [20:49] creationix: mikeal: https://gist.github.com/0d6f7aac205f0bcd74d0 [20:49] creationix: mikeal: will that work [20:49] dilvie: that slideshow gave me a heart attack. [20:52] mattly has joined the channel [20:52] dannycoates has joined the channel [20:52] dilvie: reationix: /reault/result/ [20:52] dilvie: of course [20:52] dilvie: I dropped a letter, too. [20:53] mikeal: creationix: added :) [20:53] creationix: awesome [20:53] creationix: mikeal: I was surprised how easy it was to make a couch client with node [20:54] dilvie: creationix: does it use the native JSON.parse()? [20:54] creationix: after working on implementing the postgres protocol and making nStore, this was nothing. [20:54] creationix: dilvie: yep [20:54] creationix: dilvie: why? [20:54] mikeal: haha, it's all just HTTP :) [20:54] dilvie: just making sure. [20:54] mikeal: http is well supported [20:54] admc has joined the channel [20:54] creationix: and node's http client is getting much better [20:54] mikeal: native JSON is super fast [20:54] dilvie: I've noticed some people around here like to roll their own EVERYTHING. Not naming any names. =) [20:54] mikeal: the only thing that might be better for some use cases are the yajl binding [20:54] mikeal: because they are evented [20:55] dilvie: mikeal: that's why I wanted to make sure. =) [20:55] mikeal: so you could parse a very large JSON object without taking it all in to memory [20:55] creationix: mikeal: I noticed couch supports http pipelining? [20:55] mikeal: yes it does [20:55] creationix: mikeal: I have a connection pool in my client, but would pipelining be better? [20:55] mikeal: mochiweb does it for us [20:55] creationix: (not that node's client supports it) [20:55] mikeal: but it's more effecient to use a client pool [20:56] nathanhammond has joined the channel [20:56] creationix: yeah, when I implemented the changes feed as a helper, I noticed that I need connection pooling [20:56] mikeal: yeah, CouchDB is optimized for concurrency, so a pool of concurrent connections is much better than pipelining which will force them to be sequential [20:56] creationix: it was blocking my only client [20:56] mikeal: haha :) [20:56] mikeal: did you see my pool library? [20:56] creationix: I did, but only after I made mine [20:56] mikeal: http://github.com/mikeal/node-utils/tree/master/pool/ [20:56] dannycoates has joined the channel [20:56] mikeal: i know you like writing your own everything [20:56] mikeal: but it's pretty simple and patches are welcome :) [20:57] dilvie: lol mikeal: I wasn't naming names! [20:57] creationix: I'm still adverse to depending on third-party code [20:57] creationix: nothing personal [20:57] mikeal: third-party == anything not written by creationix [20:57] mape: Isn't node third-party code? ;) [20:57] Frans-Willem: W0000t!, transaction support in my node-PostgresClient :D [20:57] dilvie: mape: don't tell him that. [20:57] creationix: I accept node as my father [20:57] mikeal: haha [20:57] Frans-Willem: dilvie: Did you mean me with the "roll your own everything" :p? [20:58] mikeal: creationix has his own dependency chain [20:58] dilvie: hahaha [20:58] dilvie: Frans: kinda defeats the purpose of not naming names if everybody asks. =) [20:58] creationix: well, as node matures more I'll be more open to using other people's code [20:58] icozzo0 has joined the channel [20:58] creationix: in fact I use htmlparser and jsdom quite happily for my scraper project [20:59] creationix: I almost used mikeal's request, but didn't like the api [20:59] JimBastard: i'll use OPC for none core business functionality [20:59] _announcer: Twitter: "I am so glad there's almost no chance someone will say 'node.js" in front of me in person so I don't have to stab anyone" -- Don Whiteside. http://twitter.com/phearlez/status/22208786206 [20:59] JimBastard: anything outside of that, bring it on [20:59] JimBastard: blackbox that shit [20:59] Frans-Willem: Speaking of rolling your own everything, why would that be a bad thing? Sure, there'll be loads of nonsense modules, and it'll be hard to find the good ones, but it also ensures that problems are being looked at from all sorts of different angles. I mean, look at that redis parser with try/catch continuations [20:59] nathanhammond: Has anybody yet gotten Socket.IO's flash sockets to play nicely on Joyent? [20:59] creationix: Frans-Willem: nobody was saying it's a bad thing (I think) [20:59] mape: Frans-Willem: That dude won't put UglifyJS on npm :S [21:00] Frans-Willem: nathanhammond: You need to put a webserver on a seperate port that gives flash some "Yes, it's ok, you may connect" message [21:00] dilvie: LOL @ _announcer [21:00] Frans-Willem: mape: "That dude" ? [21:00] mikeal: creationix: you know [21:00] mikeal: if you sent me a patch [21:00] mikeal: it wouldn't be "third party" anymore :) [21:00] mape: Frans-Willem: the one who did the redis client [21:00] creationix: multiple inheritance [21:00] Frans-Willem: mape: Meh, who cares ? [21:00] dilvie: I told my C# fanboy friend about Node.JS. He scoffed at the idea of JavaScript on the server. [21:01] creationix: mikeal: basically I'm so busy and scattered that it's often easier to just write my own than try to understand some else's code [21:01] isaacs: mape: so, add a package.json, publish it, send him a pull req and say "lemme know when you have an npm user account, and i'll add you as an owner" [21:01] creationix: (maybe that's why I'm so busy, hmmm) [21:01] dilvie: There are people out there who still hate JavaScript. [21:01] Frans-Willem: creationix: Does this also mean you'll be sticking to your own postgres-js module, even if mine grows to be much better :p? [21:01] Tim_Smart has joined the channel [21:01] mape: Frans-Willem: I do, my project has UglifyJS as a dependancy and it is way easier to just add that in package.js instead of manually updating it [21:01] dilvie: I don't think they bothered to learn. [21:01] creationix: Frans-Willem: actually after pgriess's module release I'll probably start over using that [21:01] mape: isaacs: Well it doesn't really matter unless he'll keep updating it on npm, in that case it is better I just keep it up to date manually [21:01] JimBastard: bad news everyone, javascript is here [21:02] isaacs: mape: or you could keep it up to date in npm :) [21:02] Frans-Willem: creationix: pgriess is writing a postgres module too ? [21:02] eazyigz has joined the channel [21:02] mape: isaacs: Guess [21:02] sonnym has joined the channel [21:03] pgriess: frans-willem: i hope i'm not. [21:03] Frans-Willem: creationix: What did you mean ? [21:04] creationix: Frans-Willem: no http://github.com/pgriess/node-strtok [21:04] dilvie: I've got a bunch of legacy projects that use Postgres [21:04] creationix: it makes building fast binary protocols easy [21:05] creationix: Frans-Willem: I haven't had time to look deeply into it, but I think it will work [21:05] Frans-Willem: Ah, similar to my BufferQueueReader then ? [21:05] creationix: probably, I haven't had time to look deeply into that either [21:05] Frans-Willem: hmmm, strtok is pretty neat too, might even switch to that or something similar [21:06] dilvie: hmm.. MongoDB's debug output could be a little easier to read. [21:06] dilvie: text formating: yr doin' it rong! [21:06] david has joined the channel [21:07] pgriess: frans-willem: looks like strtok is covering similar ground to bufferlib [21:07] reeeelix: hey, I just started using node.js and would like to add a module (formidable) [21:07] nathanhammond: Frans-Willem: the response for Flash is correctly coded into Socket.IO ... when running locally I have to sudo it to allow it to respond on port 843. [21:07] reeeelix: where do I put it so that it's accessible by default? [21:07] reeeelix: I'm running ubuntu and installed node using configure/make/make install [21:07] pgriess: frans-willem: but bufferlib looks like it isn't as well suited to disjoint data and the node data flow [21:07] Frans-Willem: pgriess: Yeah, at least the BufferQueueReader part. But I really like your take on this, btw [21:07] _announcer: Twitter: "@joyent When would you choose node.js over Smart? What types of apps are best suited for each?" -- Mark James Adams. http://twitter.com/mja/status/22209341671 [21:08] bradleymeck: y would someone choose node over my personal project, y!? [21:08] bradleymeck: ACTION sorry for outburst [21:09] _frankie has joined the channel [21:09] dilvie: bradleymeck: sell me on Smart. Let's hear the elevator pitch. [21:09] Frans-Willem: pgriess: Actually, the BufferReader and BufferBuilder are meant for building or decoding buffers. BufferQueueReader was specifically meant for parsing incoming streams. e.g., you can keep pushing on new buffers, check to see if you've got enough data in there, and then pop any tokens/parts you want from it. BufferBuilder will internally keep or discard all buffers as needed [21:09] JimBastard: real men respond to requests with a freshly spanwed instance of their app [21:09] daniellindsley: reeeelix: You might want to consider using npm (http://github.com/isaacs/npm). Otherwise, you should be able to link formidable into ``~/.node_libraries``. [21:09] creationix: Frans-Willem: do your list work like my buffer_extras stuff, or did you change it a lot? [21:10] reeeelix: thanks daniellindsley! [21:10] deepthawtz has joined the channel [21:10] dilvie: reeeelix: go the npm route. [21:10] icozzo has joined the channel [21:10] Frans-Willem: creationix: What do you mean ? [21:10] matt_c: npm. doo eet! [21:10] reeeelix: but but but [21:10] reeeelix: it sounds rather overkill for just one module [21:10] dilvie: reeeelix: npm is off the hizzle-nizzle [21:11] bradleymeck: dilvie idk what smart is, cant find any ref to it on first page of google, the end [21:11] daniellindsley: reeeelix: ...Until you need another module. [21:11] creationix: Frans-Willem: I had builder and consumer utilities in my postgres-js. Does your refactored/rewritten stuff work the same, or different? [21:11] reeeelix: yes well, I won't (famous last words?) :p [21:11] dilvie: reeeelix: Urm. It actually makes it easier. Especially if you require anything. [21:11] reeeelix: ok fine you guys [21:11] MrTopf has joined the channel [21:11] reeeelix: but it better be the hizzle menizzle shizzle [21:11] MrTopf: good evening [21:11] _announcer: Twitter: "Just wrote a simple template engine for node.js. Might have to use this in a project soon..." -- Dave Hall. http://twitter.com/etianen/status/22209588293 [21:11] dilvie: reeeelix: It is. [21:11] creationix: bradleymeck: smart is joyent's javascript platform as a service product. [21:12] creationix: bradleymeck: and they just announced node hosting today too [21:12] _announcer: Twitter: "Node.js - I’m trying to figure out how to (or if it’s even possible) configure apache proxy services to work... http://tumblr.com/x5qgsx3lr" -- Gustavo Tandeciarz. http://twitter.com/dcinzona/status/22209646721 [21:13] bradleymeck: mmm *goes to look what smart is running* [21:14] jbenesch1 has joined the channel [21:14] eazyigz has joined the channel [21:14] dilvie: reeeelix: Did I mention that npm makes it really easy for you to share your new module with the rest of the node.js community? [21:15] isaacs: dilvie: you guys are like a commercial [21:15] dilvie: isaacs: Yeah. =) [21:15] reeeelix: dilvie: no you didn't [21:15] isaacs: BUT WAIT, THERES MORE! [21:15] reeeelix: dilvie: but I probably won't make a new module myself anyway ;) [21:15] JimBastard: !tweet @dcinzona use nginx. if you really wanna be cool, use http://github.com/nodejitsu/node-http-proxy [21:16] reeeelix: INSTALL NOW AND RECEIVE TEN MODULES, FOR FREE [21:16] dilvie: isaacs: Order now and all you'll have to do is put a little JSON into your project directory! [21:16] bradleymeck: jim i could hug you right now for putting frankie up on a decent system [21:17] JimBastard: heh, lets wait till i get it actually on the cloud [21:17] JimBastard: >.< [21:17] dilvie: reeeelix: that's a way better upsell joke than mine. [21:17] dilvie: I fail. [21:17] ivong has left the channel [21:17] isaacs: reeeelix: actually, you can get them ALL for free! [21:18] dilvie: npm ls [21:18] gf3 has joined the channel [21:18] cnu has joined the channel [21:18] creationix: isaacs: I want pay/per/download modules [21:18] jakehow has joined the channel [21:18] creationix: then I'll put my stuff on npm :P [21:19] isaacs: creationix: bs. you do already put your stuff on there [21:19] bradleymeck: i just want a way to have trending packages XD [21:19] dilvie: creationix: That's actually not a terrible idea. =) [21:19] dilvie: a commercial library store running on top of npm would be neat. [21:19] isaacs: creationix: but yeah, pay per install could be neat [21:19] icozzo has joined the channel [21:19] isaacs: like an app store [21:20] dilvie: freemium baby. [21:20] cferris has joined the channel [21:20] dilvie: release the core open-source, and do pay for play with enterprise features. [21:20] bradleymeck: license management mmmm [21:20] reeeelix: :D [21:22] _announcer: Twitter: "The only major downside of @node_knockout that it starts at 12:00 am in my timezone. #eyeswillgetblurryafter72hours #nodejs" -- Arnout Kazemier. http://twitter.com/3rdEden/status/22210264031 [21:22] JimBastard: i guess if joyent is announcing hosting today i might have to as well [21:22] JimBastard: I, DECLARE, HOSTING [21:22] JimBastard: best press release ever [21:22] JimBastard: aight see you guys later [21:22] dilvie: I was just wrapping my head around MongoDB [21:22] creationix: JimBastard: where is my account! [21:23] dilvie: now I have to wrap my head around couch. [21:23] _announcer: Twitter: "node.js is way cooler then I originally thought. How'd I miss that one?" -- slajax. http://twitter.com/slajax/status/22210328759 [21:23] creationix: ACTION collects bets hosting accounts [21:23] creationix: *beta [21:24] cloudhead has joined the channel [21:24] rklancer has joined the channel [21:25] bradleymeck: 7pm my time, im expecting 5hrs sleep in those 48? [21:26] eisd has joined the channel [21:26] eisd has left the channel [21:26] JimBastard: creationix: good things coming soon i swear [21:26] dilvie: The best thing about node isn't that it's fast, and event-driven. (Well, that's pretty great). The best thing about it is how fast the community has built out libraries for it. [21:27] creationix: and TextMate 2 will be out next week [21:27] Gruni has joined the channel [21:27] JimBastard: :-) [21:27] dilvie: JimBastard: offer free dev accounts and a pay-for-use model and I'll be sold. [21:28] dilvie: as long as the pay-for-use is competitive. =) [21:28] creationix: offer free accounts and I'll but a million [21:28] creationix: *buy [21:28] JimBastard: dilvie, check! [21:28] dilvie: rock. Sign me up for beta. [21:28] creationix: ACTION would start a hosting company if he didn't have to many friends doing the same thing [21:29] JimBastard: dilvie: do you have any apps or sites yet? [21:29] Tim_Smart has joined the channel [21:29] JimBastard: creationix: well part of our thing is the support and consulting. we WILL make your node.js app scale [21:29] JimBastard: with our ninja skills, of course [21:29] JimBastard: nodejitsu! [21:29] creationix: I like helping people [21:29] nathanhammond: Anybody have ideas on opening :843 on Joyent's Node SmartMachines? (<1024, requires admin privs) [21:29] dilvie: JimBastard: I'm still tinkering on virtualbox [21:29] dilvie: JimBastard: but I'm writing a Facebook game. =) [21:30] creationix: nathanhammond: really, I thought the node user had super user powers [21:30] creationix: it can run apps on port 80 at least [21:30] nathanhammond: I can't make it listen on 843 [21:30] dilvie: JimBastard: a fighting RPG. =) [21:30] creationix: dilvie: need any help with that? [21:30] javajunky has joined the channel [21:31] JimBastard: dilvie: nice! once you get it somewhat stable and working id be totally down for helping you get it hosted [21:31] hukash has joined the channel [21:31] JimBastard: do things like help monitor your usage and scale / optimize accordingly [21:31] dilvie: creationix: um, yeah. A decent facebook wrapper would be friggin' fantastic. Their API is half-documented and half-implemented, it seems. I had to threaten to shoot it in the head to make Facebook connect work properly. =) [21:32] _announcer: Twitter: "how I got redis installed on my @joyent Smart Machine http://bit.ly/cU1Vhm #redis #node.js #nodeknockout" -- Daniel Jackoway. http://twitter.com/jackowayed/status/22210918945 [21:32] creationix: dilvie: what are you using for data persistence [21:32] frode has joined the channel [21:32] dilvie: creationix: that's what I'm trying to figure out. I thought I'd settled on MongoDB and then somebody convinced me it was gonna crash every 3 seconds. [21:32] dilvie: now I'm looking at Couch. [21:33] JimBastard: dilvie: couch is fun [21:33] JimBastard: but you should look at your needs [21:33] creationix: dilvie: I just made an easy to use couch client [21:33] dilvie: creationix: I know, I'm playing with it right now. [21:33] creationix: with the connection pooling and bulk api usage I get about 16k inserts/second [21:33] dilvie: ACTION pays attention [21:33] creationix: which is pretty good for couch I think [21:34] JimBastard: creationix: how many reads can you get? [21:34] JimBastard: are you caching? [21:34] creationix: JimBastard: no, I don't cache [21:34] creationix: it's a pretty thin driver [21:34] JimBastard: bulk inserts are nice, but reads are what im interested in [21:34] creationix: more like a set of utilities [21:34] JimBastard: got ya [21:34] creationix: I do bulk reads too [21:35] pufuwozu has joined the channel [21:35] _announcer: Twitter: "node-oauth now provides neat mechanism for accessing request object http://bit.ly/atkI7X (thanks @cramforce) #nodejs" -- Ciaran Jessup. http://twitter.com/ciaran_j/status/22211131757 [21:35] dilvie: I was thinking that the whole fight would be pre-determined server side, so clients wouldn't have to wait for events to fire back and forth between the client and server, and then I saw some of the realtime log analizers running on node... [21:36] dilvie: now I'm thinking realtime interaction during the fight might be cool [21:36] dannycoates has joined the channel [21:36] dilvie: like, hit a hotkey to switch up strategy (block/regenerate health vs attack, etc..) [21:36] bradleymeck: !ciaran_j yes it does, i am using it [21:37] javajunky: bradleymeck: eh ? [21:37] dilvie: seems like it could be pretty fun to get into realtime battles with other players -- almost arcade style action in a Facebook app. [21:37] _announcer: Twitter: "@mgodave plus it wasn't built on #node.js" -- Dietrich Featherston. http://twitter.com/d2fn/status/22211305517 [21:38] dilvie: Do you think that's realistic? [21:38] JimBastard: dilvie: hell yeah, use some javascript [21:38] zemanel has joined the channel [21:39] dilvie: I haven't seen any facebook apps even remotely as interactive as that. [21:39] dilvie: it might be fun to try to get a simple playable online for KO [21:39] dilvie: creationix: you game? [21:39] dilvie: =) [21:40] bradleymeck: mmm? [21:40] creationix: dilvie: I'll do what I can, but I don't have much time to spare [21:40] creationix: maybe Saturday I'll have some time [21:41] dilvie: creationix: I need a couple things - a decent facebook game API module, and the communication layer. I can handle the gameplay and a rudimentary UI. [21:42] dilvie: creationix: is your CouchDB abstraction up to it? =) [21:42] jodo has joined the channel [21:42] creationix: it should be fine for persistence, though if the game takes off couch and a single node client won't scale too far [21:43] jodo: anyone know if theres an openid library for node? [21:43] dilvie: creationix: Jim volunteered to help us scale. Right Jim? =) [21:43] _announcer: Twitter: "Node.js knockout in cowoco http://post.ly/twb1" [de] -- Michael Bumann. http://twitter.com/Bumi/status/22211676898 [21:43] mape: jodo: http://npm.mape.me/ [21:43] Dmitry has joined the channel [21:43] creationix: well, all the hardware in the world won't help if your code depends on being a single process [21:43] creationix: CPUs are only so fast [21:44] pufuwozu has joined the channel [21:44] creationix: dilvie: I was working on nStore so much for that kind of load, but alas, I had to put it aside for a little bit [21:44] jodo: mape: thanks, guess there isnt :( [21:44] mape: jodo: Well those aren't all, but some [21:45] dilvie: creationix : I don't have any experience trying to scale node apps, yet. =P [21:45] mape: there is the wiki modules page as well [21:45] creationix: dilvie: few people do [21:45] dilvie: creationix : But I can imagine how we could break it up over several node instances if need be. [21:45] creationix: dilvie: yeah, if you can shard the node instances, then it's super easy [21:45] jodo: mape: yea looked there and search github, couldnt find anything [21:46] mape: jodo: Might want to talk to javajunky, think he is into that kinda stuff [21:46] dilvie: creationix : I imagine the most resource intensive bit will be the actual fights. We might be able to auto-shard fight servers. [21:46] dug_ has joined the channel [21:47] Ysinopsis has joined the channel [21:47] creationix: dilvie: my experience is that JSON.parse and JSON.stringify are often a bottleneck [21:47] creationix: that and creating buffer objects [21:47] jodo: mape: will do, thanks [21:47] dilvie: hmm. [21:47] creationix: there isn't much getting around that though, you have to serialize your data to send it over the wire [21:49] dilvie: not counting keypresses (which I have only thought about), I imagine there will be about 160 messages per fight, on average. [21:50] dilvie: Pretty much all of them will result in changes to fighter stats [21:50] dilvie: usually 2 property updates per message [21:51] dilvie: which would really result in one db update on mongo. I don't know anything about how Couch does it. [21:52] mikeal: is there a way for me to turn on EventSource tracebacks yet? [21:53] dilvie: can we just make a players table document that grabs data from multiple fight streams and writes snapshots to disk periodically? [21:54] visnup has joined the channel [21:54] gerad has joined the channel [21:54] dilvie: in mongo you can make several changes to a document and then do a db.fights.save()... [21:54] JimBastard: id prob want to see the game built first to work in single player [21:55] creationix: dilvie: sounds like you would love nStore [21:55] creationix: it's mostly stable now [21:55] creationix: the rewrite branch has nice write-combining [21:55] JimBastard: lol creationix you are cruel [21:55] creationix: though nStore will corrupt your data about as likely as mongo [21:56] creationix: that's why I'm not pushing it to everyone [21:56] dilvie: JimBastard: I could whip out single player pretty quickly. Are we allowed to start hacking on our KO projects? [21:56] creationix: dilvie: nope, not yet [21:56] JimBastard: dilvie: negative [21:56] dilvie: do. [21:56] JimBastard: i havent even thought about what im gonna do, fuck [21:56] dilvie: d'oh [21:56] mape: 1day 4min keft [21:56] junkee[] has joined the channel [21:56] JimBastard: ive been too busy making henry bloggins and broodmother [21:56] mape: *left [21:56] dilvie: I could get an in-browser test of the basic fight UI going pretty quickly. [21:56] JimBastard: mape: we should make a timer [21:57] JimBastard: that does all the time zones [21:57] mape: they have it on nodeknockout.com [21:57] JimBastard: caus i fail at adding / subtracting and space/time [21:57] JimBastard: word life [21:57] mape: just that it is pretty small [21:57] creationix: mikeal: what's a good number for a client pool to a local couchdb server? [21:57] mape: 1 days 2 hours 2 minutes 29 seconds [21:57] _announcer: Twitter: "http://bit.ly/dDtLNF Hm looks quite interesting at first glance. # Nodejs" [de] -- raichoo. http://twitter.com/raichoo/status/22212595814 [21:57] mikeal: honestly [21:57] visnup: I'm going to make that bigger [21:57] mikeal: it'll handle thousands of concurrent requests [21:57] JimBastard: mape 1 days 2 hours 2 minutes 23 second [21:57] mikeal: so if your pool is elastic [21:57] mape: visnup: Btw I think the timer is wrong... [21:57] creationix: mikeal: I see in my config the limit is 2048 [21:58] JimBastard: mape: i think you are wrong [21:58] JimBastard: ? [21:58] mape: visnup: It is 1h of, it should be 1day 1hour left [21:58] mikeal: it can handle way more than that tho [21:58] eazyigz has joined the channel [21:58] ivong has joined the channel [21:58] JimBastard: knockout starts at 8pm eastern time i think [21:58] creationix: mikeal: my pool isn't elastic yet, but a single http client doesn't use much ram [21:58] JimBastard: either way, we are spending all night friday drinking [21:58] mikeal: dude [21:58] mape: Sweden is GMT+1, will begin at Saturday, August 28, 0:00am [21:58] JimBastard: to get ideas [21:58] mape: its 00:00 now in sweden [21:58] creationix: JimBastard: that sounds right, it's right before Crockford's node talk here [21:58] mikeal: i have an elastic pool [21:58] mikeal: that works [21:58] mape: so that would be 25h [21:58] mikeal: that you could use [21:58] mikeal: :) [21:58] mape: not 26 [21:58] mikeal: it's like 40 lines of code [21:58] mape: ie 1 day and 1h, not 1day 2h [21:58] mikeal: super easy to understand [21:59] creationix: mikeal: so with node + couch + 1000 http clients isn't a crazy idea [21:59] junkee[]: mape: 23:59 germany [21:59] dilvie: I really think if my project is going to show off the capabilities of node.js, I need to work realtime interaction into the fights. Hotkeys to switch between guard, various attacks, rest/heal, etc.. [21:59] mikeal: not at all [21:59] dilvie: that could be fun. [21:59] mikeal: but you're going to hit socket timeouts [21:59] Tim_Smart has joined the channel [21:59] mape: junkee[]: Well yeah, same here, but easier to make a point with even numbers ;) [21:59] mikeal: if you keep them open and don't do anything [22:00] javajunky has joined the channel [22:00] junkee[]: mape: :D [22:00] dipser: is it ok to do: response.writeHead(200, {'Content-Type': 'text/html'}); response.writeHead(200, {'Set-Cookie': 'SID='+SID+'; expires='+getCookieExpiresFormat(30)+'; httpOnly'}); [22:00] creationix: mikeal: hmm, so I can't just send the keep-alive header and hope it works? [22:00] mikeal: there is still a socket timeout dude [22:00] mape: But yeah, its off 1h. [22:00] gerad: JimBastard: 8pm eastern time is correct [22:01] mikeal: the best thing to do is spin up new ones as needed [22:01] mikeal: and reuse them as they come free [22:01] gerad: 1 day 5 hours left! [22:01] mikeal: which is what my pool does [22:01] mape: gerad: You saw what I wrote? [22:01] dilvie: anybody else know what they're doing for KO? [22:01] gerad: sorry [22:01] dipser: is it ok to write the header twice? [22:01] gerad: 1 day 2 hours left [22:01] mikeal: dipser: no [22:01] gerad: mape: nope, I didn't see it? [22:01] junkee[]: 22am utc [22:01] visnup: mape: I'm pretty sure it's right... [22:01] mape: gerad: If Saturday, August 28, 0:00am GMT is suppose to correct, it can't be 1day 2h [22:01] junkee[]: sry pm [22:01] dipser: mikeal: but its working [22:02] mape: or my head is working the wrong way.. [22:02] mikeal: probably because node just isn't writing the second header [22:02] gerad: hahaha [22:02] dipser: mikeal: yes it looks a bit crazy for me, thats why i am asking [22:02] mikeal: wiat [22:02] dipser: mikeal: the cookie is set [22:02] mikeal: are you writing all the headers twice [22:02] dug_ has joined the channel [22:02] gerad: mape: unless javascript is wrong and rails rumble was wrong last year, I think we're good [22:02] dipser: is it ok to do: response.writeHead(200, {'Content-Type': 'text/html'}); response.writeHead(200, {'Set-Cookie': 'SID='+SID+'; expires='+getCookieExpiresFormat(30)+'; httpOnly'}); [22:02] mape: Or no.. in 1day two hours it is 02:00 here, 01:00 in england, which means 0:00 is off [22:02] mikeal: or just a single header twice [22:03] mikeal: that should throw [22:03] mikeal: i'm surprised it doesn't [22:03] gerad: mape: daylight savings time? [22:03] mape: Yeah might be [22:03] dipser: its working fine, but how can i do that in a right wa? [22:03] mape: So what time do I start? :P [22:03] dipser: way [22:04] creationix: is UTC + 0 the same as GMT + 0 ? [22:04] dipser: i want to make a function response.setCookie(); dunno how ;) [22:04] hukash has left the channel [22:05] mape: gerad: Guess I'll just follow the countdown, and hope you make a countdown to the end so I don't have to think of wonky time zone changes [22:05] dug_ has left the channel [22:05] JimBastard: mape: lulz [22:06] JimBastard: more aquavit! [22:06] gerad: mape: http://permatime.com/UTC/2010-08-28/00:00 [22:06] mape: My throat is to screwed up for that :( [22:06] _announcer: Twitter: "Seriously, if NodeJS/Ruby fibers seem neat to you, head over to http://bit.ly/dCqcnQ to get your mind blown." -- Natalie . http://twitter.com/natalie_lee87/status/22213207274 [22:06] mape: So yeah, From your computer's settings, we estimate that this permatime would be at 02:00 on Saturday, 28 Aug 2010 in your local time zone. [22:07] mape: Which is 01:00 GMT [22:07] BrianTheCoder has joined the channel [22:07] mape: but yeah, swedish summer is UTC+2 and winter is UTC+1 [22:07] creationix: so the problem is that London and UTC aren't the same thing right now [22:07] mape: So guess it only matches up on the winter [22:07] creationix: http://permatime.com/UTC/2010-08-28/00:00/Node_Knockout_Starts?link=http://nodeknockout.com/ [22:08] creationix: http://permatime.com/Europe/London/2010-08-28/00:00/Node_Knockout_Starts?link=http://nodeknockout.com/ [22:08] gerad: tweeting that [22:08] JimBastard: hey creationix , do you think there are any directory traversal attacks in wheat? [22:08] JimBastard: ive torn through it pretty hard, got it working nicely now [22:08] mape: We should just stop with the dumb ass timezone stuff [22:08] creationix: how so, you can't escape the git repo [22:08] JimBastard: creationix: i guess not then [22:08] creationix: JimBastard: there are no real files served ever [22:08] mape: Just use timestamps instead [22:08] JimBastard: :-) [22:09] junkee[]: ;) [22:09] JimBastard: i wonder what kinda ab i can get out of wheat running through broodmother right now [22:09] JimBastard: brb [22:09] _announcer: Twitter: "Node.js Knockout starts in just under 26 hours! http://bit.ly/aedoVn" -- node knockout. http://twitter.com/node_knockout/status/22213417463 [22:10] dilvie: does couchio support https? [22:10] creationix: ok, so it's london time not UTC? [22:10] dilvie: I can't fathom sending passwords in plaintext. [22:10] creationix: dilvie: nope, the docs recommend putting it behind nginx or something for ssl [22:10] _announcer: Twitter: "Allright... I think I get the purpose of node.js now: http://blip.tv/file/2899135" -- Martin Brochhaus. http://twitter.com/mbrochh/status/22213484932 [22:11] SubStack: I sure do map over hashes a lot [22:11] aubergine has joined the channel [22:11] dilvie: creationix: I mean the hosted version, for tinkering. [22:11] mikeal: dilvie: we will eventually [22:11] mikeal: hosting is still in beta [22:11] dilvie: I'm having trouble trying to install on Ubuntu hardy [22:11] mikeal: but if you download CouchDB you can turn on SSL in 1.0.1 [22:12] mikeal: dilvie: pull down the pre-built package [22:12] mikeal: http://couch.io/get [22:12] mikeal: scroll down to linux [22:13] mikeal: dependency hunting is a real pain so we produce those fully inclusive packages [22:13] _announcer: Twitter: "Introducing Yeti, the YUI Easy Test Interface, by @reid. http://j.mp/aDX9ye There is even a Mac installer! #YUI #nodejs #yahoo #testing" -- Matthew Taylor. http://twitter.com/rhyolight/status/22213642496 [22:13] mikeal: surprisingly, Mac has the best story here [22:13] dilvie: mikeal: which package do I need for the fewest dependency headaches? [22:13] mikeal: homebrew install couchdb [22:13] mikeal: ubuntu 32 or 64? [22:13] SubStack: aha awesome, http://github.com/creationix/pattern [22:13] creationix: mikeal: I'm using the osx app that comes with the nice gui [22:13] creationix: SubStack: I was about to point you to that [22:14] mikeal: creationix: that's ok [22:14] mikeal: slow js [22:14] dilvie: 32 [22:14] mikeal: dilvie: http://dl.couchone.com/dl/26f246a0fe23d6a53d53267133090142/install-couchdb-1.0.1_rel1-linux.bin [22:15] ivong has joined the channel [22:15] SubStack: depends on 0.2.0 >_< [22:15] SubStack: ACTION takes the plunge [22:15] creationix: mikeal: so brew install couchdb is going to cook my cpu for how many hours? [22:15] creationix: it took ages on my linux box [22:16] mikeal: hrm..... [22:16] deepthawtz has joined the channel [22:16] mikeal: i don't know, i don't actually use it [22:16] mikeal: ask mjr [22:16] creationix: I used the rake version on my linux box [22:16] mikeal: i check it out from git and build [22:16] mikeal: because i'm usually working on some dev branch [22:16] creationix: I reminded me of building gnome for gentoo [22:16] mikeal: i mean, we need spidermonkey, erlang, and ICU [22:17] mikeal: building CouchDB isn't much at all [22:17] mikeal: it's all the deps [22:17] dilvie: hmm [22:17] mikeal: dilvie: that bin includes all the deps inside it already built [22:17] dilvie: well, the all-inclusive is almost finished. [22:17] mikeal: so you don't have to worry about any of this [22:17] SubStack: bah there's no v0.2.0 tag yet on ry's master [22:17] SubStack: I'll just assume what I have is 0.2.0 [22:17] mikeal: fwew! [22:17] bradleymeck: is it just me or does that combining page seem just like what nodejs does? [22:17] mikeal: i love it when i'm getting random low level exceptions [22:17] mikeal: and a git pull ry [22:18] mikeal: just fixes them [22:18] creationix: SubStack: yes there is [22:18] SubStack: o_O [22:18] creationix: http://github.com/ry/node/tree/v0.2.0 [22:18] SubStack: oh I know, pull doesn't fetch new tags automatically [22:19] SubStack: there it is now [22:19] creationix: SubStack: correct [22:19] creationix: mikeal: hg.mozilla.com is SLOW [22:19] mikeal: hg is SLOW [22:19] mattly has joined the channel [22:19] isaacs has joined the channel [22:20] mikeal: i could spend all day talking about mozilla stuff that is too damn slow to be productive :) [22:20] mikeal: still love em tho [22:21] _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/22214164150 [22:21] creationix: Someone should make a node app like gitx that runs a local web server and serves the interface over http [22:21] overra has joined the channel [22:21] creationix: then it will work on any system [22:21] creationix: even remote ones [22:22] creationix: mikeal: still downloading spidermonkey... Good think I'm not a blocking interface [22:23] mikeal: haha [22:23] mikeal: how are you install this? [22:23] mikeal: homebrew? [22:23] Astro: is there a nodeko irc channel already? [22:23] mikeal: why don't we just use this channel [22:23] mikeal: everyone is already on it [22:23] mikeal: and pretty much everyone in here is competing or judging [22:24] dilvie: mikeal: for KO? [22:24] mikeal: yeah [22:24] dilvie: yeah, I'm dreaming up my little node facebook game in a day right now.. =) [22:25] Ysinopsis has joined the channel [22:25] dilvie: deciding on what tools I'm gonna test-drive [22:25] MikhX has joined the channel [22:26] _announcer: Twitter: "anyone know the best way to setup node.js alongside nginx?" -- ssɐquʞunɹp. http://twitter.com/drunknbass/status/22214484117 [22:26] dilvie: mikeal: so, in mongo, I can make a bunch of changes to a document, and then sample it to disk, change some more, sample to disk, etc... is that also doable in couchdb? [22:26] mikeal: this joyent stuff is pretty hot [22:26] JimBastard: http://hg.mozilla.org/ [22:26] mikeal: dilvie: writes are atomic [22:27] _announcer: Twitter: "Yea! via@ rhyolight ntroducing Yeti, the YUI Easy Test Interface, by @reid. http://j.mp/aDX9ye There is even a Mac installer! #YUI #nodejs" -- Yahoo Eng Recruiter. http://twitter.com/YahooEngRecruit/status/22214537928 [22:27] mikeal: but each write updates the last rev [22:27] mikeal: and you can query for the old revs [22:27] mikeal: so if you want to roll back to a previous version you can do that [22:27] mikeal: but when you write a document body, you write the whole body [22:27] mikeal: only binary attachments are written without re-writing the whole body [22:27] c4milo: yahoo disappoint me with Bing :( too bad [22:28] mikeal: well, attachments, not necessarily binary [22:28] mikeal: i still don't get a lot of this "YUI on the server" stuff [22:28] dilvie: hmmm... that means I can't do my in-memory sampling cache idea. [22:28] mikeal: what's that? [22:29] creationix: dilvie: you can do that in node code [22:29] mikeal: are you saying that you take all writes in memory and just dump them couchdb on some interval? [22:29] mikeal: cause there is some closure code that does that [22:29] micheil: morning folks. [22:29] creationix: afternoon micheil [22:29] mikeal: it was benchmarking like 4K writes a second or something [22:30] dilvie: creationix: yeah, but then I'll have to send big globs of JSON over the wire to write to db. [22:30] creationix: dilvie: how is that a bad thing? [22:30] dilvie: mikeal: yes, that's what I'm saying. [22:30] creationix: it will be less traffic then sending each change as it's own request [22:30] mikeal: "big globs of JSON" [22:30] mikeal: it's not that much [22:30] mikeal: the bottleneck is not the network dude [22:30] creationix: dilvie: plus couch has bulk-update apis [22:31] mikeal: the write to disc is far more costly than the socket io time [22:31] creationix: my node "driver" uses them [22:31] mikeal: and in node the impact of the socket io is close to nothing [22:31] dilvie: cool. [22:31] dilvie: good to know. [22:31] mikeal: yeah, the closure code that does the interval writer uses bulk docs [22:31] dilvie: I think the main reason I was wary of couch is because I was afraid interval sampling would be harder than it is in mongo. [22:32] mikeal: so [22:32] creationix: dilvie: just keep a list of "dirty" keys and on an interval update those documents [22:32] mikeal: why do you want to do this tho? [22:32] mikeal: like, what do you get out of it? [22:33] mikeal: are your writes more than 2K a second or something? [22:33] mikeal: because this limits your application processes [22:33] javajunky has joined the channel [22:33] mikeal: you can't just spin up another one because they'll get update conflicts [22:33] creationix: mikeal: they may be for what he's making [22:33] cferris has joined the channel [22:33] _announcer: Twitter: "NewsBasis is hiring! Come work with me http://newsbasis.com/newsbasis_is_hiring #rails #nodejs #redis" -- Jacob Rothstein. http://twitter.com/jacobrothstein/status/22214986907 [22:34] zemanel has joined the channel [22:34] dilvie: mikeal: writes may just get a little crazy, yeah -- and I don't necessarily need every single value stored to disk. [22:34] mikeal: i think you want Redis [22:34] mikeal: i think you want Redis and you want to use the channels for realtime updates [22:34] mikeal: this sounds like something that is best suited for Redis [22:35] creationix: mikeal: what is otp, it's huge [22:35] mikeal: otp is the erlang stlib [22:35] creationix: ahh [22:35] mikeal: stdlib [22:35] creationix: my laptop is a toaster [22:36] micheil: creationix: the new one? [22:36] mikeal: so [22:36] mikeal: i'm not using the node http client for my performance testing [22:36] mikeal: because i have keep-alive now [22:36] mikeal: and it only uses like 5% more CPU than my selective parser that i was using before [22:36] creationix: keep-alive in node-utils/request? [22:36] mikeal: that's pretty amazing [22:37] mikeal: in node-core [22:37] mikeal: but it works in request [22:37] mikeal: because you just need to pass the client in to the next options sent to request [22:37] mikeal: so, request uses the options object you pass it as a state machine [22:37] mikeal: and it uses options.client if it's there, and sets it if it's not [22:37] junkee[]: @all: do u know a reference of v8? [22:38] mikeal: so you can just pass that client in again and set the connection:keep-alive header [22:39] mikeal: junkee[]: http://code.google.com/p/v8/w/list [22:39] creationix: mikeal: so how does node keepalive work then [22:39] creationix: I thought I understood it [22:39] mikeal: http keepalive? [22:39] mikeal: or tcp keepalive? [22:40] mikeal: http keepalive is enabled if you send the connection:keep-alive header when you call the request method on the client [22:40] mikeal: that client will now use keep-alive [22:40] Jimmy203 has joined the channel [22:40] mikeal: which means the socket won't close and node won't exit until you call client.close() [22:40] micheil: how cheap are eventEmitters to create? [22:40] creationix: so it's that simple? [22:40] mikeal: yup [22:40] Knew has joined the channel [22:40] Knew: hi [22:40] mikeal: the only hard part is remembering to call .close() [22:41] creationix: mikeal: ok, what about timeouts? [22:41] Knew: Can anyone tell me if this is using node.js? http://github.com/daleharvey/dropup [22:41] mikeal: creationix: i got that patch in to node like 3 releases back [22:41] mikeal: timeouts are on the socket [22:41] bradleymeck: yes knew [22:41] micheil: mikeal: is there documentation on this? [22:41] mikeal: http://nodejs.org/api.html#http-client-184 [22:42] mikeal: Sending a 'Connection: keep-alive' will notify Node that the connection to the server should be persisted until the next request. [22:42] creationix: mikeal: so it won't timeout mid request will it? [22:42] micheil: and how does it respond if the server calls socket.close() ? [22:42] creationix: only when the connection is sitting idle? [22:42] mikeal: oh no, never [22:42] mikeal: i mean, if you waited like 10 minutes to send a response [22:42] mikeal: it'll probably timeout [22:42] mikeal: but timeouts in node are a little weird [22:42] creationix: like long-pool [22:42] bradleymeck: micheil they are pretty cheap to make, like cost of 3 base objects~ [22:42] creationix: *poll [22:42] mikeal: like, there is a node internal timeout [22:42] mikeal: and all that does is emit "timeout" [22:42] c4milo has joined the channel [22:42] mikeal: so that you can handle it [22:43] c4milo has joined the channel [22:43] micheil: bradleymeck: k, so it should be okay to make large usage of them in node-websocket-server's new streamable parser [22:43] mikeal: if the socket actually times out after that, it's just a socket error [22:43] mikeal: cause it closed [22:43] Knew: bradleymeck, okay what do I need to use this then? Can I just throw up the files from http://github.com/daleharvey/dropup on my server and start using it? [22:43] c4milo has joined the channel [22:43] Jimmy203: how do you specify the ejs template using expressjs? [22:43] mikeal: creationix: sitting idle like that will eventually timeout, that's why you do a heartbeat [22:43] mikeal: so you send \r\n every 10 seconds or so [22:43] c4milo has joined the channel [22:43] bradleymeck: micheil under all normal applications, yes [22:44] mikeal: or every 60 seconds, whatever [22:44] mikeal: it'll make sure the socket doesn't close [22:44] creationix: mikeal: like on the _changes feed [22:44] rklancer_ has joined the channel [22:44] mikeal: right [22:44] mikeal: that's why we do that [22:44] mikeal: browsers are pretty aggressive about trying to sever that connection [22:44] bradleymeck: knew, that and whatever libraries it is using, ejs/node-formidable, idk what else [22:44] creationix: if only there was a simple to use http client I could just plug into my couch driver [22:44] dilvie: wow. [22:44] gerad has joined the channel [22:45] mikeal: creationix: it's called request :) [22:45] bradleymeck: creationix, request? [22:45] creationix: mikeal: ;? [22:45] dilvie: You could do audio streaming on redis. [22:45] creationix: ;) [22:45] mikeal: creationix: actually, you should just plug in th epool [22:45] mikeal: because the pool mimics the node core api [22:45] creationix: mikeal: does pool so the same thing as request? [22:45] mikeal: so you can easily replace single client creations with pulls from the pool [22:45] mikeal: no, not at all [22:45] ivong has joined the channel [22:45] creationix: I don't think I need redirects [22:46] mikeal: pool is just for client pooling, and managing pools for different domains [22:46] mikeal: none of that is in it [22:46] mikeal: it's really raw, just pooling, no redirect or auth handling [22:46] mikeal: i want you to be able to just grab it and replace the current calls to create clients and do requests [22:46] mikeal: the only change is that it's a callback to get the client [22:46] creationix: does pool handle keepalive and/or timeouts [22:46] mikeal: so that when you exceed the pool size your callback just gets a client later once a client in the pool is free [22:47] mikeal: pool defaults it's clients to keepalive [22:47] _announcer: Twitter: "@julio_ody Yeah #nodejs will never work in enterprise!" -- Lachlan Hardy. http://twitter.com/lachlanhardy/status/22215857099 [22:47] creationix: mikeal: I like how you guys removed the 1.0.0 tag from couch [22:47] Jimmy203: mape you awake? :) [22:47] creationix: it broke my brew recipie and forced me to update [22:48] mikeal: using that tag is bad news :) [22:48] isaacs has joined the channel [22:48] mape: Jimmy203: yes? [22:48] creationix: that's what I heard [22:48] MaSch_: creationix: whats about nStore? Still working on it? [22:48] mikeal: http://github.com/mikeal/node-utils/blob/master/pool/main.js#L52 [22:48] creationix: MaSch_: it's paused [22:48] MaSch_: oh .. why? [22:48] creationix: I have an app to get out the door, and so I switched to couch to get it done [22:48] creationix: nStore is close [22:48] MaSch_: okay [22:48] creationix: MaSch_: see the rewrite branch for the latest [22:49] Jimmy203: mape: how do you set a template with expressjs / ejs? [22:49] isaacs has joined the channel [22:49] Jimmy203: or do you just use the layout and import other ejs files into layouts body? [22:49] _announcer: Twitter: "woot! just deployed my evenin' bitches (chapelle inspired hello world) node.js app to no.de" -- Brian Mavity. http://twitter.com/bmavity/status/22216009495 [22:49] ajpiano has joined the channel [22:50] creationix: mikeal: wohoo, finally got couchdb compiled [22:50] mape: Jimmy203: Make sure you installed ejs through npm (added that now to the package json) [22:50] mape: Jimmy203: other then that you use res.render('index', **** [22:50] mape: where index means index.ejs [22:50] mikeal: awesome [22:51] bradleymeck: !tweet @lachlanhardy, or so they say... [22:51] Jimmy203: but by default express seems to load layout.ejs and import index into the <%-body%> [22:51] mape: Yes [22:51] Knew: Are you guys all start-ups? [22:51] Jimmy203: Thats what seems to be happening to me at the moment [22:51] bradleymeck: @tweet @bmavity nice [22:51] bradleymeck: ... [22:51] visnup: Knew: what do you mean? [22:51] Frans-Willem has joined the channel [22:51] bradleymeck: !tweet @bmavity nice [22:52] bradleymeck: no [22:52] bradleymeck: im not [22:52] mikeal: Knew: most people here work at startups or Yahoo [22:52] Jimmy203: is there any way to change ejs to load another main template other than layout.ejs? [22:52] creationix: knew my company has vc funding, but they were bootstrapped before that [22:53] Knew: Node.js doesn't need an interpreter/compiler? [22:53] bradleymeck: it has one inside itself [22:53] Jimmy203: I could find hardly any info on this and new you use ejs for your site :) [22:53] creationix: Knew: it enbeds V8 [22:53] Knew: Okay [22:53] junkee[]: bradleymeck: it is the interpreter [22:53] mape: Jimmy203: Not sure, probly not, but if possible take a look at the ejs source, think it is pretty simple [22:54] bradleymeck: junkee it is also the compiler :D [22:54] bradleymeck: now if we could only statically link in v8.a / the node lib... [22:54] Jimmy203: I understand how to do it with ejs.. but haven`t figured how to do it with expressjs loading ejs as the render engine [22:55] _announcer: Twitter: "Stupid experiment with #node-js: twitstorm! http://bit.ly/ciwmZD Social Twitter Firehose! Synergy!" -- Jeff Larson. http://twitter.com/thejefflarson/status/22216370427 [22:55] mape: Jimmy203: Setting something other then layout.ejs? [22:55] c4milo has joined the channel [22:56] Jimmy203: yes there is a template option documented on embeddedjs.com [22:56] c4milo has joined the channel [22:56] c4milo has joined the channel [22:56] rauchg_ has joined the channel [22:56] Knew: Does chapelle mean something special in Node.js? [22:56] c4milo has joined the channel [22:57] mostlygeek_ has joined the channel [22:57] javajunky: Jimmy203: the 'layout' property itself on the options hash if it is present and not 'true/false' specifies a template to use doesn't it ? [22:58] Jimmy203: thats to specify the import of an ejs to the layout.ejs I think.. I`m still quite new to ejs [22:58] ivong has joined the channel [22:59] javajunky: Jimmy203: if you say so, thats just how I though express handled it [22:59] javajunky: http://github.com/visionmedia/express/blob/master/lib/express/view.js#L204 ? [22:59] _announcer: Twitter: "This weekend: The Age Of Stupid http://bit.ly/91z41H building 9 and Node.js Knockout http://bit.ly/cdlkfc in cowoco @! We look forward to it!" [de] -- Jan Kus. http://twitter.com/koos/status/22216654903 [23:00] javajunky: nn all ;) [23:01] fod has joined the channel [23:02] rauchg__ has joined the channel [23:02] hellp has joined the channel [23:03] bradleymeck: Knew nope [23:04] bradleymeck has left the channel [23:05] deepthawtz has joined the channel [23:05] _TS has joined the channel [23:06] cloudhead has joined the channel [23:06] gartenstuhl has joined the channel [23:06] gartenstuhl has left the channel [23:07] c4milo has joined the channel [23:07] jacobolus has joined the channel [23:07] Jimmy203: rauchg_: can you specify an empty model.property in mongoose ie a unique key with an empty array as its property [23:07] c4milo has joined the channel [23:08] c4milo has joined the channel [23:08] Jimmy203: like the query seen here: http://github.com/LearnBoost/mongoose/issues#issue/41 [23:08] c4milo has joined the channel [23:08] _announcer: Twitter: "New blog post on Google's App Inventor and Node.js http://bit.ly/csyG3D" -- Scot McSweeney-Rober. http://twitter.com/maethorechannen/status/22217284911 [23:08] tableton has joined the channel [23:08] c4milo has joined the channel [23:09] c4milo has joined the channel [23:10] rauchg__ has joined the channel [23:11] deepthawtz: creationix: did you ever post the source for your 2D world demo you showed a couple weeks ago? [23:11] creationix: deepthawtz: not yet [23:11] creationix: just the database [23:11] creationix: deepthawtz: http://github.com/creationix/world-db [23:12] _TS has joined the channel [23:15] dylang: what time does node knockout start and end in EST (new york/washington dc)? #braindead [23:15] gerad: 8pm [23:16] gerad: it starts at 8pm tomorrow in NY/DC [23:16] gerad: which is EDT not EST [23:16] dylang: gerad: thanks man. fire alarm just went off here. must evaculate building [23:16] gerad: daylight savings [23:20] ivong has joined the channel [23:20] Fullmoon has joined the channel [23:20] mape: git commit -am "Fire." [23:21] c4milo has joined the channel [23:21] _TS: Why doesnt my localStorage persist? [23:21] _TS: urgh [23:21] _TS: on domain or on localhost or on ip [23:21] deepthawtz: creationix: do you have an online demo? [23:22] creationix: deepthawtz: sortof [23:22] creationix: I have a temp one at me no.de account [23:22] _announcer: Twitter: "I see, node.js of 0.2.0 or'll work. 0.1.99 or rebuilt. ." [ja] -- Jxck. http://twitter.com/Jxck_/status/22218244532 [23:23] tpryme has joined the channel [23:23] _announcer: Twitter: "Knee-deep in node.js. Wasn't expecting server-side JS to be this interesting." -- Antonio Touriño. http://twitter.com/techiebits/status/22218282433 [23:23] ben_alman has joined the channel [23:23] kodisha has joined the channel [23:23] deepthawtz: creationix: url? [23:23] deepthawtz: creationix: is this all suspect of me, the day before node KO? [23:24] creationix: ? [23:24] deepthawtz: tmp demo url? [23:24] creationix: no, I'm a judge, I can't compete. I just haven't published my demo because it's not done [23:24] dilvie: hrm [23:24] creationix: deepthawtz: http://creationix.no.de/ [23:25] c4milo: anybody have a coupon code ? [23:25] mape: creationix: Aren't you still able to judge just that the other judges you know can't judge you? [23:25] cardona507: oh yeah - we saw this example at sencha that night of the meetup [23:25] lachlanhardy has joined the channel [23:26] Aria has joined the channel [23:26] dilvie: so I was a little worried that CouchDB was going to be too slow and looked at MongoDB again. I like the way it behaves for the most part, but now I'm nervous about potential loss of state and records if something goes wrong. [23:27] _announcer: Twitter: "Node SmartMachines - Node.js を使った PaaS? git push でデプロイ. http://ow.ly/2vsKv" -- koichik. http://twitter.com/koichik/status/22218550086 [23:27] dilvie: I need to see some couchdb benchmarks, I think. [23:27] dilvie: I mind end up using Redis after all. [23:27] creationix: c4milo: I think they are just for participants right now [23:28] creationix: dilvie: I'd go with redis [23:28] xer0xM: yay redis [23:28] c4milo: creationix: it's already started ? [23:28] creationix: c4milo: no, I got an account to test the system before they gave them out [23:28] c4milo: creationix: ok [23:30] dilvie: creationix: thanks for the advice. =) [23:30] dilvie: You guys are a great resource. [23:30] creationix: :) [23:31] creationix: ACTION is sad nStore isn't done [23:31] creationix: it would help a lot of people [23:35] nathanhammond has joined the channel [23:35] ph^ has joined the channel [23:37] ezmobius has joined the channel [23:37] ryah: http://github.com/ry/node/wiki/library-compatibility [23:38] badaxx has joined the channel [23:38] _announcer: Twitter: "@mja well,not to jump ahead,think of node.js as the new runtime for the Smart Platform (was spidermonkey).The platform is all the other APIs" -- Jason Hoffman. http://twitter.com/jasonh/status/22219361528 [23:41] mikeal has joined the channel [23:43] rklancer has joined the channel [23:46] _announcer: Twitter: "Countdown to Knockout: Post 14 - Using CouchDB with node.js http://post.ly/txQh" -- node knockout. http://twitter.com/node_knockout/status/22219847201 [23:46] creationix: mikeal: http client hates me! [23:46] dannycoates has joined the channel [23:46] creationix: I get Error: ECONNREFUSED, Could not contact DNS servers [23:46] creationix: but only if I hit the couch server on "localhost" too fast [23:46] daleharvey has joined the channel [23:47] _announcer: Twitter: "[Js 人 気 情报] dnewcome's Node.net at master - GitHub # http://bit.ly/bX6Wrb javascript" [de] -- jsMagazine. http://twitter.com/jsMagazine/status/22219923937 [23:47] creationix: if I change "localhost" to "127.0.0.1" I get Error: EMFILE, Too many open files [23:47] mikeal: two thing [23:47] mikeal: er things [23:47] mikeal: how many client in the pool [23:48] mikeal: latest node? [23:48] creationix: I think my pool is busted [23:48] creationix: 0.2.0 [23:48] WALoeIII has joined the channel [23:48] SubStack: creationix: this is odd, I can require('pattern') but not pattern/hash with the dist I pulled down from npm [23:48] mikeal: ulimit -a [23:48] mikeal: that emfile error is a file handler limit [23:48] creationix: SubStack: yeah, I noticed that [23:48] creationix: npm doesn't like me [23:48] isaacs: creationix: now, you know that's not true. npm loves you [23:49] isaacs: creationix: it told me last night. [23:49] isaacs: what's the issue? [23:49] SubStack: directories : { lib : './lib' } [23:49] creationix: mikeal: wow! open files (-n) 256 [23:49] SubStack: should fix it [23:49] SubStack: oh actually [23:49] SubStack: directories : { lib : './lib/pattern' } [23:49] creationix: isaacs: I think I need a directory parameter [23:49] isaacs: creationix: where's the code in question? [23:50] creationix: isaacs: http://github.com/creationix/pattern [23:50] SubStack: aha there is a new modules thing for the json [23:50] mikeal: creationix: yeah, you just exhausted the file handler limit with open sockets [23:50] creationix: 256 seems really low to me [23:50] creationix: how do I change that [23:51] isaacs: creationix: yeah, you could use either the modules hash, or tell it where your lib lives, and npm will expose it for you [23:52] isaacs: creationix: it's great, now *all* there is is the modules hash. directories.lib and "main" are just sugar. [23:52] mikeal: ulimit -n 4096 [23:52] creationix: isaacs: how does the modules hash work [23:52] ivong has joined the channel [23:53] blogometer has joined the channel [23:53] creationix: mikeal: that's a per environment thing? [23:53] isaacs: creationix: { "name" : "foo", "modules" : { "bar" : "./lib/bar" } } [23:53] isaacs: creationix: require("foo/bar") ===> path/to/foo/package/lib/bar [23:53] creationix: isaacs: thanks [23:53] mikeal: yeah [23:54] SubStack: what is main sugar for? [23:54] isaacs: creationix: if you have a directories.lib, and no modules hash, then it'll walk the lib dir, and create a modules hash out of the files in there. [23:54] isaacs: SubStack: main gets translated to a module called "index" [23:54] SubStack: nice [23:54] mikeal: creationix: it's up http://nodeknockout.posterous.com/countdown-to-knockout-post-14-using-couchdb-w [23:54] isaacs: SubStack: { "main" :"./foo" } ===> { "modules" : { "index" : "./foo" } } [23:54] creationix: mikeal: sweet [23:55] isaacs: SubStack: so all you have in your npm root are folders, that's it. [23:55] samsonjs has joined the channel [23:55] gerad: mikeal: woo! nice work! [23:55] mikeal: thanks [23:55] c4milo has joined the channel [23:56] c4milo has joined the channel [23:56] c4milo has joined the channel [23:56] mikeal: i'm thinking about doing a post on my blog on how http keep-alive works in node [23:56] c4milo has joined the channel [23:57] c4milo has joined the channel [23:57] [[zz]] has joined the channel [23:57] creationix: SubStack: ok, I think I updated the package in npm [23:57] creationix: try it [23:57] creationix: mikeal: good idea [23:58] creationix: can howtonode get a republish? [23:58] mikeal: when i explain something a 12 times to 12 different people, it's time to write a blog post :) [23:58] isaacs: mikeal: good idea [23:58] pyronicide: has anyone made a good, simple http(s) client library yet? [23:58] mikeal: pyronicide: yes [23:58] isaacs: pyronicide: no [23:58] isaacs: mikeal: he said "good" [23:58] mikeal: http://github.com/mikeal/node-utils/tree/master/request [23:58] isaacs: mikeal: there are no good https clients in node atm. [23:59] isaacs: request is a good http client. [23:59] mikeal: my client supports https [23:59] mikeal: :) [23:59] creationix: mikeal: I just inserted 1,000,000 documents into my couch at about 2,500/sec [23:59] isaacs: mikeal: yeah, but not with uploads, or if the server pauses on you for a split second. [23:59] pyronicide: mikeal: that looks much, much better than what i've found so far [23:59] mikeal: yeah, it's as good as node allows me to make it :) [23:59] blogometer has left the channel [23:59] isaacs: right [23:59] mikeal: when node fixes it's ssl bugs it'll improve :) [23:59] mikeal: creationix: nice