[00:00] creationix: Tim_Smart: wow, it shows calls in my code too, that's cool [00:00] creationix: the osx profiler only shows C++ stuff in V8 [00:01] Tim_Smart: creationix: Yeah, I want to hurry up and get scons installed so I can try it out. [00:01] joshholt__ has joined the channel [00:01] Tim_Smart: But eclipse is a unwieldy thing that takes ages to installed, and it is locking up apt [00:03] sudoer has joined the channel [00:06] Tim_Smart: creationix: I have a feeling this will be really helpful for making stuff fast. [00:06] _announcer: Twitter: "Negotiation of high frequency algorithmic trading in the lecture by CEP. Example Java running. Only the lack of SOA Node.JS # # TDC2010" [pt] -- lucabastos. http://twitter.com/lucabastos/status/21619244225 [00:07] pquerna: if someone made a CEP in node.js they could have my 3rd child fwiw. [00:07] mscdex: CEP? [00:07] Tim_Smart: pquerna: Did you get my message up above? [00:07] pquerna: complex event processor... http://esper.codehaus.org/ [00:08] pquerna: basically, takes a stream of events, let you write functions/queries against that stream in an efficient way [00:09] pquerna: esper specifically has a SQL-like query language for evaluating things like (20% growth in X over 10 minutes) [00:09] pquerna: Tim_Smart: no.. looking [00:09] creationix: Tim_Smart: hope so. I've had great luck with the OSX tools, but this seems to show a little more [00:09] JimBastard has joined the channel [00:10] Tim_Smart: creationix: Is this xcode instruments? [00:10] Tim_Smart: I played with it, but didn't really know the best way to use it. [00:10] pquerna: Tim_Smart: oh, roughly 40-50% of the sampling time in the buffer benchmark ryah made, was spent in creating the Buffer::New() and bellow in v8 objectwrap code [00:10] konobi_: instruments is just dtrace underneath =0) [00:11] Tim_Smart: pquerna: Oh right, so ObjectWrap is taking most time? [00:11] pquerna: ya, i wish instruments.app had an html export. [00:11] creationix: Tim_Smart: no, just plain osx stuff [00:11] creationix: it comes with quite a few good tools [00:12] mattly has joined the channel [00:12] creationix: Shark, Sampler, Activity Monitor, ... [00:13] creationix: They are optimized for objective C, but give a fair amount of info for C++ stuff [00:14] pquerna: i would give my 4th born child for shark.app to be fixed on 64bit kernels :( [00:20] Aria has joined the channel [00:23] _announcer: Twitter: "Wondering if it's possible to do some kind of bubbling/propagation with Node.js event emitters. That would be useful." -- Tom. http://twitter.com/sh1mmer/status/21620351488 [00:25] creationix: isaacs: you sure setting length to 0 doesn't remove references [00:25] creationix: I'm pretty sure that's a feature of js arrays [00:26] isaacs: creationix: huh, so it seems that is the case. [00:26] stepheneb has joined the channel [00:26] isaacs: weird. [00:26] creationix: isaacs: https://gist.github.com/48bfaea35532f4ac6461 [00:26] creationix: yeah, it's an optimization I use all the time [00:26] creationix: fast truncate [00:27] fod has joined the channel [00:27] creationix: isaacs: should I reply on the mailing list or you? [00:27] isaacs: reply to the list, it's a good find [00:27] isaacs: is that portable, or just v8/webkit? [00:27] ivong has left the channel [00:28] creationix: isaacs: I'm pretty sure it's part of ES3 [00:29] isaacs: it's so weird when companies ask you to fill out an application. reminds me of my food service days. [00:30] isaacs: even weirder when a VP or CTO recruits you personally, then sends you an offer, which you accept, and then weeks later, an HR person asks you to apply for the job you just got. [00:30] Aria: ACTION laughs [00:30] Aria: Every job I've ever had has been like that. [00:31] blogometer has joined the channel [00:31] isaacs: Aria: at kno, i had forgotten to do that, and was working at the company for a week before I "applied" for the job. [00:31] blogometer: mscdex: The MySQL solution: Don't be an idiot. (Me, that is.) [00:31] blogometer: I was doing this: [00:31] blogometer: client.connect(); client.end(); [00:31] blogometer: And the script was not ending. [00:31] blogometer: Of course I was supposed to do this: [00:32] _announcer: Twitter: "Web razrabotka / MySQL v Podderžka Node.JS: node-mysql-Habr libmysqlclient http://sy.ly/c5f # # # Russia Novosti # ru # news" [hr] -- Tech News. http://twitter.com/technewsru/status/21620920021 [00:32] blogometer: client.connect(function () { client.end() }); [00:32] creationix: isaacs: actually I don't see it in the ES3 spec, but I've known about the behavior for years [00:32] creationix: and the es3 spec is hard to find things sometimes [00:32] isaacs: creationix: it could be a defacto thing that didn't get "official" recognition until es5. there's a lot of that [00:32] JimBastard: fucking ruby [00:33] creationix: I just see in the spec what the value of length is, not what happens if you try to override it [00:33] JimBastard: i blame technoweenie [00:37] creationix: isaacs: actually I did find it in ES3 under section 15.4.5.1 step 14 [00:37] isaacs: creationix: kewl [00:37] creationix: it's just easier to find in the ES5 spec [00:37] isaacs: creationix: it's also easier to write in ES5. [00:37] creationix: For every integer k that is less than the value of the length property of A but not less than [00:37] creationix: Result(12), if A itself has a property (not an inherited property) named ToString(k), then delete [00:37] creationix: that property [00:37] tpryme has joined the channel [00:38] isaacs: creationix: Object.defineProperty(Array.prototype, "length", { set : function (l) { this.splice(0, l) } }) [00:38] tpryme: Anyone know how to typecast from a Local to char* for v8 c++ lib? [00:39] isaacs: tpryme: String::Utf8Value utfVal(tehHandle); char* str = *utfVal; [00:40] tpryme: isaacs: Thanks [00:40] isaacs: tpryme: where "tehHandle" is either a Persistent, Local, or Handle [00:41] creationix: hmm, this v8 profiler isn't helping me much [00:41] creationix: my code is 31% in [GC] and 5% in node::Loop [00:42] creationix: and lots of "Builtin: A builtin from the snapshot" [00:42] mattikus: in the node repl, if you typo something and it wont let you out of the ... prompt, is there any way besides ctrl-c to fix that? [00:42] isaacs: tpryme: if you want a null-terminated c string copy, you could do: char *str = (char*)malloc((sizeof char) * utfVal.length()); strncpy(str, *utfVal, utfVal.length()); [00:42] creationix: mattikus: .break or .clear [00:43] mattikus: ah, thanks [00:43] isaacs: tpryme: and then free() it later [00:43] mattikus: creationix: is that documented/ [00:43] tpryme: isaacs: Gotcha, thanks for the help [00:43] creationix: mattikus: yeah, type .help [00:43] mattikus: creationix: awesome, thanks. [00:44] Tim_Smart: creationix: Do you get an warning similar to "line 683: unknown command: .str.split." when you parse the profile log? [00:45] dannycoates has joined the channel [00:45] Tim_Smart: I get it everytime. [00:45] creationix: Tim_Smart: yeah, I get that too, I just ignore it [00:45] Tim_Smart: OK all good. [00:46] creationix: Tim_Smart: ohh, it has command-line options [00:46] creationix: --ignore-unknown looks promising [00:46] creationix: and --js [00:47] Tim_Smart: creationix: node, or the parser tool? [00:47] creationix: Tim_Smart: the parser tool [00:47] creationix: which seems to be a wrapper around d8 [00:47] creationix: that's what it was compiling [00:48] matthewford has joined the channel [00:51] sh1mmer has joined the channel [00:56] zemanel has joined the channel [00:58] joshbuddy has joined the channel [00:58] joshholt_ has joined the channel [01:00] _announcer: Twitter: "JS server benchmark: Node.js & Rhino - Wishful Coding:Because Node is so new, you'd have to rent you...http://bit.ly/dzSWmm" -- beacon50. http://twitter.com/beacon50/status/21622762996 [01:01] herbySk: hi, all, I came over strange error now... Object.hasOwnProperty({}, 'foo') works great... but Object.hasOwnProperty(Object.create(null), 'foo') throws an error [01:02] herbySk: (but, otherwise, Object.create(null) works great, I can write and read properties from it... [01:04] Yuffster has joined the channel [01:04] ajpiano has joined the channel [01:04] herbySk: Is this a bug or a feature? [01:04] creationix: herbySk: feature [01:05] creationix: Object.create(null) doesn't have any of the functions from Object.prototype [01:05] joshbuddy_ has joined the channel [01:05] creationix: including hasOwnProperty [01:05] herbySk: creationix: I'm not calling _it's_ function [01:05] herbySk: hasOwnProperty is called externally [01:05] creationix: I'll bet it calls it internally [01:05] inimino: but, I think he meant to use Object.hasOwnProperty.apply() above [01:05] herbySk: (other things work, like Object.keys etc) [01:06] creationix: herbySk: I didn't even know there was an hasOwnProperty alias on Object [01:06] inimino: ehm, Object.prototype.hasOwnProperty.apply(...) [01:06] inimino: ...if there is I haven't heard of it... [01:06] creationix: you can bug the v8 guys and ask if it's a feature, or look in the es5 spec [01:06] herbySk: aha... [01:06] twomashi1 has joined the channel [01:06] twomashi1 has left the channel [01:07] creationix: herbySk: oh, hah, it's not meant to be called from Object [01:08] creationix: but Object is an instance of Functions which inherits from Object.prototype [01:08] creationix: that's why it's there [01:08] inimino: If you actually do Object. .. yes... that. [01:08] creationix: I just checked the spec, it should only be on Object.prototype [01:08] herbySk: my mistake, I thought hasOwnProperty is external, like Object.keys etc. but it's in Object.prototype [01:08] herbySk: I'll call it though apply (or call), thanx [01:08] creationix: herbySk: yeah, that makes sense now [01:11] hassox has joined the channel [01:12] JimBastard: where did tmpvar go, he was suppose to be here an hour ago [01:12] JimBastard: hrmm [01:12] JimBastard: i hope no one deleted him [01:12] inimino: I usually do function hasprop(o,p){return Object.prototype.hasOwnProperty.call(o,p)} if I need it more than once [01:13] creationix: how do I run just one node test? [01:13] inimino: ...because otherwise it is just so ugly. [01:13] inimino: creationix ⋱ Last I knew you just run it. [01:13] micheil: creationix: is Array.pop() as slow as Array.shift() [01:13] Tim_Smart: Hmm eclipse debugger segfaults node. [01:13] micheil: ? [01:13] inimino: creationix ⋱ ./node test-foo.js [01:13] creationix: micheil: no, pop is much faster [01:13] micheil: okay [01:14] micheil: so why not use pop() in that nextTick stuff? [01:14] creationix: micheil: you get a fifo instead of a lifo [01:14] inimino: micheil ⋱ pop and push are O(1), shift and unshift are O(n) [01:14] creationix: micheil: because pop changes the order [01:14] creationix: micheil: plus in this case a simple loop works fine [01:14] micheil: k [01:14] creationix: much faster than pop or shift [01:14] creationix: ok, now back to see why the test fails [01:14] micheil: it's been ages since I did any benchmarks on this [01:15] inimino: sometimes linked lists are just what you want, but Arrays are what we have :) [01:16] creationix: ryah: I see why it's breaking now [01:16] creationix: the array is getting modified while we're looping over it [01:16] creationix: I'll submit a new patch [01:17] steadicat has joined the channel [01:19] micheil: creationix: that's why I suggested pop() ;P [01:19] creationix: no, pop will break the ordering test [01:19] mu-hannibal has joined the channel [01:19] micheil: true [01:19] micheil: ACTION is out. [01:21] creationix: ok, updated the patch http://gist.github.com/539223 [01:21] blogometer has joined the channel [01:23] twomashi1 has joined the channel [01:24] creationix: does the dgram-multicast test always fail? [01:25] _announcer: Twitter: "ok, drupal, i dare you to stop me from making a view that will loads every node so i create a non-ajax SEO-friendly js experience #views" -- smooshyLab. http://twitter.com/smooshyLab/status/21624506991 [01:26] steadicat has joined the channel [01:29] creationix: ryah: you there? [01:30] ryah: creationix: yep [01:31] creationix: I fixed it for the nextTick tests, but for some strange reason it's breaking test-dgram-multicast [01:31] creationix: http://gist.github.com/539223 [01:31] _announcer: Twitter: "of course: basic authentication gets shut off (in favor of oauth) for twitter api as i'm trying to add tests to my toy node.js twitter app" -- Colin Jones. http://twitter.com/trptcolin/status/21624936694 [01:32] creationix: I wonder if it's some race condition from nextTick being faster [01:32] creationix: though I only see about 8 next ticks in the test, so that shouldn't matter [01:33] ryah: creationix: there's a race in that test [01:33] creationix: so it might be ok? [01:33] Tim_Smart: creationix: Why all the temp variables? [01:33] ajpiano has joined the channel [01:33] creationix: tmp is for swapping arrays [01:33] ryah: so tim - this one is still fast? [01:33] creationix: ryah: oh yeah [01:34] ryah: creationix: i wouldn't mind a benchmark/ script [01:34] creationix: ryah: ok [01:34] ryah: if you've got something handy [01:34] creationix: I can make one easy [01:36] creationix: ryah: https://gist.github.com/458c452b515b60d89704 [01:36] creationix: run it with different values, I'd try 1 10 100 1,000 10,000 100,000 and 1,000,000 [01:36] daleharvey has joined the channel [01:36] creationix: and change the nextTick with a setTimeout to test that [01:38] tmpvar has joined the channel [01:39] creationix: at about 10,000 on my machine the two really seperate [01:44] softdrink has joined the channel [01:44] codemariner has joined the channel [01:46] creationix: ryah: there may be a problem with the new code if the function is called several times while still running [01:48] rob___ has joined the channel [01:48] creationix: I think I fixed it [01:49] herbySk: creationix: the problem with the patch may be if nextTick callback schedules another callback [01:49] creationix: exactely [01:49] herbySk: it may go forever, then [01:49] creationix: well, the old version had that same problem [01:49] herbySk: I think simply put away the while could help [01:49] CIA-77: node: 03Ryan Dahl 07master * r60b93cc 10/ test/simple/test-dgram-multicast.js : Fix race conditions in test-dgram-multicast.js - http://bit.ly/cIoOgA [01:50] creationix: ryah: cool, that test was bothering me [01:50] herbySk: no, it stoppped after l items, it was brilliant in this aspect [01:50] ryah: people should not put timeouts in thier tests.. [01:50] ryah: the test runner has a timeout mech [01:51] alcuadrado has joined the channel [01:52] alcuadrado: Hey, I was reading the YUI blog and saw this... "Think of Node.js as a viable replacement for your server-side scripting language, sitting behind an http server like Apache or nginx." AFAIK that's not a good way of deploy a node.js app, or is it? [01:52] herbySk: err, that is, s/while/if/ [01:53] ryah: depends on how bold you are [01:53] ryah: that was for alcuadrado [01:54] Tim_Smart: creationix: Going over some code with the profiler, working really nice :) [01:54] blogometer has joined the channel [01:54] creationix: ryah: know what. I think I'll just use slice, that way we'll have the exact same behavior as before [01:54] ryah: creationix: whatever works for you [01:54] _announcer: Twitter: "@ryah I'm not sure why it's the first thing you mention on the Node.js "About" page when you dis on threads. Erlang leverages threads" -- Tony Arcieri. http://twitter.com/bascule/status/21626474180 [01:54] creationix: ryah: the current version in node only pulls l items of the queue, but new ones may be added while that runs [01:55] creationix: so after _tickCallback there can still be items in the queue [01:55] creationix: my version cleaned it out good, but maybe that's not a good idea [01:55] creationix: in fact I know that's not a good idea [01:57] alcuadrado: ryah, sorry, i don't get the meaning of bold, i'm not a native speaker... is it something like corageous or brave? :$ [01:58] justin_ has joined the channel [01:58] ryah: alcuadrado: yes [01:58] alcuadrado: cool, so i wasn't that bad :P [01:59] william has joined the channel [02:01] creationix: ryah: ok, much simpler patch http://gist.github.com/539223 and it passes all tests [02:01] dipser_ has joined the channel [02:01] creationix: slice is actually quite fast [02:01] mu-hannibal: is there a way to get the current time in node? (like System.currentTimeMillis() in Java)? [02:01] creationix: mu-hannibal: new Date() [02:01] creationix: mu-hannibal: or Date.now() [02:02] tmpvar has joined the channel [02:04] mu-hannibal: creationix: thx! guess it's just standard js... [02:04] creationix: ryah: do you think a if (nextTickQueue.length === 0) return; line would help [02:04] creationix: mu-hannibal: :) [02:04] creationix: I find tickCallback is called a lot when the queue is empty [02:05] creationix: and splice(0,0) isn't expensive, but not free either [02:07] creationix: ryah: yeah, I added the if check. if is faster than splice [02:07] creationix: http://gist.github.com/539223 [02:07] devinus has joined the channel [02:07] creationix: hmm, I should cache the length call [02:07] SvenDowideit has joined the channel [02:08] ryah: yeah, tickCallback could be done better.. [02:08] ryah: its horrifying how im calling it [02:09] zapnap has joined the channel [02:09] creationix: ryah: ok, final version http://gist.github.com/539223 [02:09] creationix: I'm going to stop messing with it [02:10] creationix: with this patch I can now use nextTick is loops with over 100,000 items and it not die [02:10] careo has left the channel [02:10] ryah: ok [02:10] creationix: I've been having to resort to setTimeout, but it's a bit slower [02:11] creationix: ryah: I think later I'll go through the node code and look for other low-hanging fruit with shift [02:11] creationix: I saw some questionable ones in http [02:11] creationix: and the one in freelist can probably be a pop [02:11] creationix: pop is much faster [02:12] creationix: ok, heading home [02:13] siculars has joined the channel [02:17] _announcer: Twitter: "looking at using #nodejs and #expressjs for my next creation" -- Andrew Homeyer. http://twitter.com/andrewhomeyer/status/21628034436 [02:18] mechanate has joined the channel [02:19] _announcer: Twitter: "Reading the docs for Node.js: http://nodejs.org/api.html It's like the cheetah of programming languages: light, fast, and useful." -- Douglas Muth (Giza). http://twitter.com/dmuth/status/21628160389 [02:19] aho has joined the channel [02:22] ChrisPartridge has joined the channel [02:23] CIA-77: node: 03Tim Caswell 07master * r81a53e8 10/ src/node.js : Make process.nextTick worlds faster for large queues. - http://bit.ly/dyEM4n [02:24] ditesh|cassini has joined the channel [02:25] CIA-77: node: 03Ryan Dahl 07master * r0c20c58 10/ doc/index.html : [02:25] CIA-77: node: Remove YAWS vs Apache benchmark [02:25] CIA-77: node: http://twitter.com/bascule/status/21626934378 - http://bit.ly/cVD1Lj [02:27] amerine has joined the channel [02:31] mattly has joined the channel [02:34] mattikus has joined the channel [02:38] _announcer: Twitter: "@ Marijnjh (Mihai Bazon) new work UglifyJS. Node.js. compression Bibi YUI Compressor using high performance faster than Google Closure Compiler. http://github.com/mishoo/UglifyJS" [zh-CN] -- 马士华. http://twitter.com/mashihua/status/21629417918 [02:41] deadlyicon has joined the channel [02:42] bradleymeck2 has joined the channel [02:42] _announcer: Twitter: "Another article on understanding Node.js: http://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb" -- Douglas Muth (Giza). http://twitter.com/dmuth/status/21629682333 [02:42] bradleymeck2: bon soir mis amis [02:42] EyePulp has joined the channel [02:44] chrischris has joined the channel [02:52] bradleymeck2: what would be an easy way to introduce evented programming to people who have never done any parallel programming (even threads)... [02:52] mattikus has joined the channel [02:53] webr3: setTimeout in js..? [02:54] dnolen_ has joined the channel [02:54] wllm has joined the channel [02:56] bradleymeck2: maybe [02:57] pzich has joined the channel [02:57] mjr_ has joined the channel [02:58] davidwalsh has joined the channel [02:58] bsstoner has joined the channel [02:59] Tim_Smart: bradleymeck2: Probably start with something like jQuery [03:01] mr_danie1 has joined the channel [03:01] _announcer: Twitter: "Testing #ubuntu Me menu with #gwibber-serive. #nodejs <3" -- Tim Smart. http://twitter.com/Tim_Smart/status/21630993074 [03:04] sztanphet has joined the channel [03:08] tmpvar has joined the channel [03:10] grahamalot has joined the channel [03:10] JimBastard has joined the channel [03:11] cloudhead has joined the channel [03:12] robotarmy has joined the channel [03:15] bradleymeck2 has left the channel [03:20] JimBastard: cloudhead in the house [03:20] JimBastard: its a javascript party [03:20] qFox has joined the channel [03:20] JimBastard: ACTION is writing vows tests right now >.< [03:23] _announcer: Twitter: "@node_knockout thanks for opportunity to have such great introduction into #nodejs stuff before the contest start" -- Mikhailov Anatoly. http://twitter.com/amikhailov/status/21632434629 [03:23] _announcer: Twitter: "Trying to get my head around even small sections of the Node.JS code is a stark reminder of how much I need to brush up on C++. #nodejs" -- Chris Lea. http://twitter.com/chrislea/status/21632479352 [03:26] creationix has joined the channel [03:29] blogometer has joined the channel [03:31] blogometer: Javascript and dates. [03:32] _announcer: Twitter: "Wanted to deploy my little #whyday hack to @heroku, but not getting any love on Beech. #nodejs" -- Daniel Shaw. http://twitter.com/dshaw/status/21633060232 [03:33] overra has joined the channel [03:35] _announcer: Twitter: "@tnm8 node.js:@tnm8::MongoDB:@ericflo ?" -- Eric Florenzano. http://twitter.com/ericflo/status/21633222003 [03:35] rauchg_ has joined the channel [03:35] marek_z has joined the channel [03:35] cardona507 has joined the channel [03:36] marek_z has joined the channel [03:37] sh1mmer has joined the channel [03:37] TommyM has joined the channel [03:45] deadlyicon has joined the channel [03:46] _announcer: Twitter: "RT: @tnm8: "I fucking love node.js" http://bit.ly/asXVvT" -- Honza Král. http://twitter.com/HonzaKral/status/21633946055 [03:55] raymorgan has joined the channel [03:57] kodisha has joined the channel [03:58] TommyM has joined the channel [03:59] lachlanhardy has joined the channel [04:01] sonny has joined the channel [04:01] _announcer: Twitter: "Erlang vs node.js http://bit.ly/dn29FW // It's not a flamewar. It's just a short comparison in the real world, at least it's what I think." -- Leandro Silva. http://twitter.com/codezone/status/21634923537 [04:04] saikat has joined the channel [04:06] JimBastard: ahahaha http://i.imgur.com/doDtD.jpg [04:15] confoocious has joined the channel [04:16] bpot has joined the channel [04:18] william has joined the channel [04:19] Blink7 has joined the channel [04:22] _announcer: Twitter: "What would you git what I rely on. I abandoned the server cloud age (laughs), I can make one by doing that I set the repository Dano! Like. I just want to move node.js, git stuck in the first place" [ja] -- Ken Nishimura. http://twitter.com/knsmr/status/21636235548 [04:23] confoocious has joined the channel [04:24] tmpvar has joined the channel [04:29] mape: isaacs: Have you thought about adding somekinda download count for npm packages? [04:30] isaacs: mape: meh [04:30] mape: Muh [04:30] tekky has joined the channel [04:31] bpot has joined the channel [04:33] stellar678 has joined the channel [04:36] _announcer: Twitter: "Node.js concurrency talk from Yahoo's @pgriess was a great kickoff to the STL Node meetup. Thanks @jamescarr! http://bit.ly/bxmZ0b" -- David Jacobs. http://twitter.com/MetaThis/status/21637039653 [04:42] cferris has joined the channel [04:43] _announcer: Twitter: "Currently looking up "interview questions for programmers" and solving them with node.js. Kind of fun." -- Ryan Florence. http://twitter.com/ryanflorence/status/21637411883 [04:43] wllm has joined the channel [04:45] blogometer: You know what would also be useful for an IRC bot? [04:45] blogometer: Notifications of mentions of Node.js at Stack Overflow. [04:46] SamNZ has joined the channel [04:47] ChrisPartridge: blogometer: Get cracking ;-) [04:48] Tim_Smart: blogometer: _announcer used to do that. [04:48] ditesh|cassini has joined the channel [04:48] blogometer: ChrisPartridge: Oops. I mean, you know what would be really *useless* ... [04:49] blogometer: Anyway. [04:49] blogometer: Tim_Smart: Where is the source code for _announcer? [04:50] Tim_Smart: somewhere @ http://maushu.com/ [04:51] jimt has joined the channel [04:51] _announcer: Twitter: "Here @ ukhamitov proposed nagovnokodit todo-service, xs why) I think scratch with node.js together, chtoli." [ru] -- Dmitriy Modin. http://twitter.com/xzwiex/status/21637910035 [04:52] hassox has joined the channel [04:53] blogometer: So, _announcer is made in Graphnode, eh? [04:55] nj_dancer has joined the channel [05:03] mape: by [05:03] _announcer: Twitter: "when using web-sockets, are cookies sent back to the server that have already been established? (even with flash based connections) #nodejs" -- Daniel Neighman. http://twitter.com/hassox/status/21638589865 [05:08] ditesh|cassini has joined the channel [05:09] pzich has joined the channel [05:13] sonny has joined the channel [05:14] pzich has joined the channel [05:15] webr3 has joined the channel [05:15] mikeal has joined the channel [05:21] sudoer has joined the channel [05:22] _announcer: Twitter: "fixed the gist for node.js and comet (using twitter search results as feed): http://gist.github.com/539667" -- gleicon. http://twitter.com/gleicon/status/21639624588 [05:28] _announcer: Twitter: "people, to tie you to your pohape http://habrahabr.ru/blogs/webdev/102167/ # nodejs" [ru] -- Daniil Churikov. http://twitter.com/danechkin/status/21639948149 [05:28] _announcer: Twitter: "http://geddyjs.org/ web framework for node.js" -- Antonio Pardo. http://twitter.com/apardo/status/21639953509 [05:30] _announcer: Twitter: "Building node.js on #Sheevaplug failed ... #V8 failed to compile in fact on #arm ! Ive to dive into :( #nodejs" -- Vincent RABAH. http://twitter.com/itwars/status/21640060842 [05:30] matthewford has joined the channel [05:36] jackish has joined the channel [05:44] holydevil has joined the channel [05:44] jochen has joined the channel [05:45] quellhorst has joined the channel [05:45] quellhorst: is there a way to access redis or mysql from node.js? [05:46] mikeal: yes and no [05:47] mikeal: the mysql client is a work in progress [05:47] mikeal: the redis client is function [05:47] mikeal: er functional [05:48] blogometer: I'm using node-mysql . [05:48] blogometer: It is swell. [05:49] blogometer: http://github.com/felixge/node-mysql [05:49] MikhX_ has joined the channel [05:50] creationix has joined the channel [05:52] ako has joined the channel [05:55] ivong has joined the channel [05:55] ditesh|cassini has joined the channel [05:58] mjr_: I love that felix did the mysql thing in pure JavaScript. [05:58] sh1mmer: mikeal: the mysql client is functional [05:58] tilgovi has joined the channel [05:58] mikeal: i thought it still had some issues [05:58] sh1mmer: mjr_: I know right [05:59] mikeal: glad to hear it's functioanl [05:59] sh1mmer: it's not 100% feature complete and it still has bugs [05:59] mikeal: er functional [05:59] sh1mmer: but I can use it to query [05:59] mikeal: someone seriously needs to write bindings for drizzle [05:59] justin_ has joined the channel [05:59] mikeal: they'll work for mysql and drizzle [05:59] mjr_: I'm planning on using his parser to decode the mysql network traffic. [05:59] mikeal: and they are damn fast and non-blocking [06:00] admc has joined the channel [06:02] _announcer: Twitter: "@ APARD see also follows a reed nodejs" [es] -- karlos g liberal. http://twitter.com/patxangas/status/21641689265 [06:15] dnolen_ has joined the channel [06:16] quellhorst: what is a quick way to get started with node.js? [06:17] mjr_: quellhorst: make yourself a hello world style web server [06:17] Aria: Download, build, run. Play. [06:17] quellhorst: docs, tutorials? [06:17] mjr_: howtonode has a few [06:18] mjr_: There are several examples in the API documentation that are fully functional, although very simple. [06:19] ph^ has joined the channel [06:19] Aria: Node is actually really, really small. Don't be surprised that that's all it is. [06:19] visnup has joined the channel [06:19] ditesh|cassini has joined the channel [06:19] sh1mmer: quellhorst: it depends what you wnat to do [06:19] mape: quellhorst: I'd try to find something you find fun on github and check how it works [06:19] sh1mmer: 'getting started' is a subjective term [06:19] mape: And mod it [06:19] isaacs_mobile has joined the channel [06:20] mjr_: mod that shit [06:20] quellhorst: mape: anything like an adserver with node.js? [06:20] sh1mmer: quellhorst: define what makes an ad server different from a regular HTTP server? [06:20] mape: quellhorst: Not that I know of, and yeah not sure what that entails [06:20] isaacs has joined the channel [06:21] mape: Guess you mean keep track of ads/clients/clicks/views? [06:21] quellhorst: adserver may lookup into some type of db what ad to show based of some calculations, and log what was shown. [06:21] sh1mmer: No, then. [06:21] quellhorst: yeah, one part display ads, second half, track clicks [06:22] quellhorst: ok, how about any example http apps that communicate with redis or mysql? [06:22] sh1mmer: Although as far as I know that kind of tech is extremely proprietary so you'd have to write all your own business logic anyway. [06:22] sh1mmer: quellhorst: there are a bunch of pre-built nosql drivers on http://wiki.github.com/ry/node/modules [06:22] mape: Just fetch the hello world http server, install npm, get felixge s mysldriver and check the docs [06:22] mape: And you should be off to a good start [06:23] ChrisPartridge: quellhorst: compile node.js, install npm (package manager, its on github) and take a look here http://npm.mape.me/ [06:23] mape: quellhorst: But yeah, start out by getting npm, makes it tons easier to get started and fetch modules that fix pieces of your app [06:23] mape: Then you gather modules for what you need and glue them together [06:23] sh1mmer: mape: did felix put mysql into npm already? [06:24] mape: not sure [06:24] isaacs: sh1mmer: yes [06:24] sh1mmer: oh hello [06:24] SamuraiJack has joined the channel [06:24] sh1mmer: I was talking about you earlier [06:24] quellhorst: ok cool. [06:24] mape: Still trying to make the dude that did UglifyJs to put it on npm :/ [06:25] _announcer: Twitter: "@peepcode Is the Node.js 'cast due any time soon? Itching to watch it... er... itching to make time to watch it :)" -- Matthew Savage. http://twitter.com/amasses/status/21642786069 [06:25] isaacs: mape: yeah, it's on my list too. [06:25] isaacs: mape: i usually just send them a pull req with a package.json, and include the instructions. [06:25] isaacs: mape: resistance is futile! [06:25] mape: Would love to bundle it in my assets-manager, so much easier to just add it as a dependancy [06:26] rsms has joined the channel [06:26] JimBastard has joined the channel [06:27] steadicat has joined the channel [06:27] mape: isaacs: Hehe you should just build a wysiwig click and play thing that you point to a github repo ;) Then you get a file list, click the main stuff, insert some stuff in input boxes and generate the package [06:28] sh1mmer: isaacs, mape have you guys some kind of auto-packaging system from github [06:28] sh1mmer: maybe based on tags [06:28] sh1mmer: so you can just pick up stable versions as people push them out [06:28] sh1mmer: that would rock [06:28] isaacs: sh1mmer: bradleymeck did something like that [06:28] isaacs: sh1mmer: but you stil lhave to have a package.json file [06:28] mape: sh1mmer: I have no part in npm :) All isaacs glory [06:28] sh1mmer: right [06:28] sh1mmer: mape: I have no desire to see isaacs' glory [06:28] isaacs: mape: you're on the contrib list. that logo is hawt [06:29] CIA-77: node: 03Ryan Dahl 07master * r51ecba8 10/ lib/buffer.js : Add get/set methods to Buffer - http://bit.ly/c1YP72 [06:29] isaacs: sh1mmer: that aloof act ain't foolin no one [06:29] ryah: future proofing. [06:29] mape: isaacs: Yeah well, don't like taking credit where credit isn't due. Hate people who leech off other peoples success :/ [06:30] isaacs: ryah: buf.set(8, 100)? [06:30] ryah: yeah [06:30] ryah: javascript sucks. can't do anything about it. [06:30] isaacs: ryah: why's that any beter than buf[8] = 100? [06:31] mape: It doesn't have to be implemented in js? [06:31] ryah: definitely worse [06:31] isaacs: ryah: so...? [06:31] xer0xM has joined the channel [06:31] isaacs: ryah: why have that then? [06:31] ryah: just in case [06:31] isaacs: ACTION is missing something... [06:32] sh1mmer: isaacs: working on a node.js hack for internal hack day [06:32] sh1mmer: :) [06:32] ryah: isaacs: in case i implement buffer in js [06:33] mjr_: isaacs: buffer pool in JS seems to be a lot faster if you end up making a lot of buffers. [06:33] mjr_: Sadly, you lose the nice syntax if you do a buffer pool in JS [06:33] isaacs: ryah: but i still don't see why .get and .set is any different than just using [] [06:33] ryah: isaacs: http://gist.github.com/538464 [06:33] ryah: magic appriciated if you know any [06:33] mjr_: FastBuffers are super fucking fast. [06:34] isaacs: hm...... [06:34] mjr_: At being made anyway. Have you tried the get/set methods to see if they are the same speed? [06:34] isaacs: so the issue is that you want buffers to have the same api as fastbuffers? [06:34] ryah: mjr_: i don't think people do that much getting and setting. [06:34] mape: Will "FastBuffer" be separate from Buffer? Or is Buffer being replaced? [06:34] isaacs: and fastbuffers are js only, so you can't just set and get them and have their child objects updated? [06:34] ryah: mjr_: or maybe im wrong [06:34] Aria: Depends on what you're doing. I keep intending to do a bunch of getting and setting, but so far have wimped out and used strings. And it's SLOW. [06:35] mjr_: ryah: I think typically they don't, but a lot of people are writing parsers that grind through buffers a byte at a time. [06:35] ryah: Aria: yeah i retract that statement [06:35] ryah: i do a lot of getting and setting to [06:35] mjr_: Aria: I had to fall back to strings as well for exactly this reason. [06:36] mjr_: I'd love to use these new buffers though, if it all works out. Strings mightily suck. [06:36] mjr_: Oh wait, but I also use the magic auto-grow property of strings sometimes. [06:36] mape: But when FastBuffer is landed, why would one us the standrad Buffer? [06:36] mjr_: hmmm, nothing's for free [06:36] mape: *standard [06:36] ryah: mape: it'll be named Buffer when its landed [06:37] mape: Ah k, so it will replace. [06:37] isaacs: i see. so the point of this is to prevent alloc'ing a bunch of little buffers, then? [06:37] ryah: yes [06:37] Aria: I wish regexes worked on buffers. Even just bytewise. [06:37] mape: Isn't there an issue when doing one bigg buffer that you don't know when there is no more space? [06:37] mjr_: Aria: or even indexOf(string) [06:37] isaacs: hmmm.... [06:37] ryah: Aria: have you seen http://github.com/pgriess/node-strtok [06:38] mape: Then you would have to grow it? Does it just add another big buffer or increase it by a little and move the old buffers content? [06:38] Aria: I've not! [06:38] isaacs: yeah, i mean, you don't have a way to make [] act like a pointer offset or anything in js, so you can't just overlay arrays like you can in c [06:38] ryah: Aria: check it out [06:38] ryah: still pretty low level... but i think it's good [06:38] Aria: Neat! [06:38] Aria: Not at all what I need, not for what I've been doing [06:39] Aria: But if I ever do any binary stuff (which I will...), I'll need something like that [06:39] konobi: there's also BufferList (and it's included library Binary) [06:39] ryah: strtok is unpack() for node [06:39] ryah: terrible name though. [06:39] joshbuddy has joined the channel [06:40] pufuwozu has joined the channel [06:40] isaacs: ryah: i assume it's inspired in some way by http://www.opengroup.org/onlinepubs/000095399/functions/strtok.html? [06:40] jetienne has joined the channel [06:40] mu-hannibal has joined the channel [06:40] Validatorian has joined the channel [06:40] Aria: Yeah, horrible name. [06:41] ryah: isaacs: oh, i guess. i didn't know about that function. [06:41] Throlkim has joined the channel [06:42] Aria: Whoa. I didn't realize that V8 used cons strings. [06:42] hassox has joined the channel [06:42] Aria: Hot. [06:44] creationix has joined the channel [06:44] _announcer: Twitter: "Said node.JS's nextTick nice with ah XD http://plurk.com/p/71olrt" [zh-TW] -- ericpi. http://twitter.com/ericpi/status/21643712003 [06:45] mape: isaacs: So yeah, would you be interested in me actually making a click and play/wysiwyg package.js generator? Or is that just redundant [06:45] isaacs: mape: i dunno. i've thought about an "npm init" command to sniff your folder and try to make informed guesses and then write a package.json for you' [06:45] mape: Yeah [06:46] mape: Figured it would be an easy way to encourage best practises [06:46] mape: Allow you to see all the properties that can be set and whatnot [06:47] mape: Guess I'll do it anyway and we'll find out if it is useful [06:49] Validatorian: Aria: Out of curiosity, do you intend to make a jQuery-based web crawler (even an example thereof) using HTML5 and jsdom? I might just be missing it, and don't want to reinvent the wheel [06:49] Aria: I do, but have not yet. [06:49] konobi: apricot? [06:49] Aria: I haven't quite finished integrating into jsdom, at least the innerhtml stuff. I'm close, but constant emergencies at work have kept me from it. [06:50] konobi: Aria: http://github.com/silentrob/Apricot [06:50] Validatorian: ah, alright -- I'll probably hold off then, until you get further. I really appreciate all of your work :) [06:50] Aria: Hehe. Glad to! [06:51] pufuwozu has joined the channel [06:51] crohr has joined the channel [06:51] Aria: Neat, konobi. I've got the HTML5 parsing algorithm ported (with only 166 failures out of 1000+ test cases now!) [06:51] mjr_: Oh man, I'm on the top of npm.mape.me again. Probably for at least another few minutes. [06:51] mape: mjr_: Hehe, just keep the updates coming [06:51] n3v3le1 has left the channel [06:53] Aria: Ryan, have you looked at v8's ExternalString stuff at all? [06:53] ryah: yes [06:53] Aria: ACTION nods.  [06:53] ryah: :) [06:54] ryah: Aria: http://github.com/ry/node/blob/0c20c588af8eeebdbf21b703934563f5c91c48dd/src/node_buffer.cc#L116 [06:54] EyePulp has joined the channel [06:54] ryah: wasnt very fast [06:54] Aria: Bummer. [06:55] ryah: probably good for large sets of data [06:55] Aria: How's it compare to toString()? [06:55] ryah: for packets it doesn't seem to work well [06:55] konobi: probably lots of flipping between heaps/stacks [06:56] pufuwozu has joined the channel [06:56] ryah: Aria: that's what it was implemented for [06:56] Aria: Aah. Okay. [06:56] ryah: my feeling with v8 stuff: if you're in the hot path [06:56] ryah: like normal typical js shit [06:57] ryah: it's fast [06:57] ryah: outside of that - eh [06:57] Aria: Heh. Figures. [06:57] tpryme has joined the channel [06:57] ryah: hit and miss [06:58] ryah: debugging stuff appears to be fantastic though [06:58] Aria: Yeah, really. I'm looking forward to using some of it. [07:02] pufuwozu has joined the channel [07:05] sveimac has joined the channel [07:05] Aria: Hm. I wonder how hard it would be to add an 8-bit-character string type to v8. [07:07] ryah: yeah [07:07] ryah: importantly though, you need raw memory access [07:07] Aria: Yeah, at least on one side of the runtime wall or other. [07:07] ryah: i tried this once http://codereview.chromium.org/391068 [07:08] Aria: Something that'd let you call writev() on a cons string's data. [07:08] mikeal has joined the channel [07:08] ryah: v8 moves objects around all the time [07:08] ryah: so they wont let me expose a damn pointer to it [07:08] ryah: which makes it useless for me [07:08] ryah: i need to be able to write(2) and read(2) [07:08] Aria: Yeah. Unless you work inside their system. [07:09] ryah: yeah [07:09] ryah: that might be one way to go [07:09] ryah: but - even that kinda sucks [07:09] Aria: Yeah? [07:09] ryah: how am i going to run http-parser across it? [07:10] ryah: without a pointer to the actual memory [07:10] Aria: Ah, true, since that's in C. [07:10] Aria: Do what they do for regexes? [07:10] SamNZ has joined the channel [07:10] ryah: which is what? [07:11] ryah: afaik v8 has magic regex stuff [07:11] ryah: they don't use pcre [07:11] Aria: Yeah, it's their own implementation. [07:11] Aria: (which is fugly, by the way. Talk about hard to read code.) [07:12] stellar has joined the channel [07:12] Aria: // Support for regular expressions. [07:12] Aria: const uc16* GetTwoByteData(); [07:12] Aria: const uc16* GetTwoByteData(unsigned start); [07:13] ryah: is that in v8.h? [07:13] Aria: objects.h [07:13] zomgbie has joined the channel [07:13] Aria: ... Which if I'm reading the implementation right, gives you a pointer to the data. [07:14] pufuwozu has joined the channel [07:14] jetienne has joined the channel [07:14] Aria: God, v8 is ugly. Man. [07:14] jetienne: ? [07:15] ryah: Aria: eh [07:15] astrolin has joined the channel [07:15] ryah: i don't undersatnd it - i reserve judgemnt [07:15] ryah: it seems like they're able to handle its complexity [07:16] Aria: Yeah. . . I'm kinda surprised at just how good their memories are to navigate all this. [07:16] Aria: Just so many edge cases on EVERYTHING. [07:16] mape: Good docs? [07:16] ryah: no docs :) [07:16] Aria: Not that I've found ever. [07:16] Aria: One-line comments at best. [07:16] mape: Hehe, ever better [07:16] mape: Make sure no poor devs poke it (or ones that don't take the time to understand it) [07:17] _announcer: Twitter: "# Node.js library for mysql from @ SannisDev http://habrahabr.ru/blogs/webdev/102167/. It's time to teach, how you can expand by MySQL." [ru] -- ramainen. http://twitter.com/ramainen/status/21645234297 [07:17] Tim_Smart: Well, it is all time. [07:17] astrolin has joined the channel [07:18] stride: the code-generation files are like reading a wiki article that consists only of links to other articles imho.. [07:18] Aria: YEah, stride [07:18] Aria: There's no less than 9 separate implementations of String. Wow. [07:20] _announcer: Twitter: "I added BOOLEAN support to sequelize. check it out: http://bit.ly/bngiLd #orm #mysql #nodejs" -- Sascha Depold. http://twitter.com/sdepold/status/21645367932 [07:20] Tim_Smart: Damn crazy Dutch people. [07:21] creationix has joined the channel [07:21] shreekavi has joined the channel [07:21] ryah: Tim_Smart: danish [07:22] Tim_Smart: Yeah. [07:23] omarkj has joined the channel [07:23] pdelgallego has joined the channel [07:23] felixge has joined the channel [07:23] felixge has joined the channel [07:26] pufuwozu has joined the channel [07:30] jetienne: Aria: but if the code is so dirty... how they achieve such performance with a software which is rather young.. [07:30] Aria: Because mess and speed are unrelated? [07:31] jetienne: Aria: is it ? speed requires good understanding, so clarity. [07:31] virtuo_ has joined the channel [07:31] Aria: And they understand it. [07:31] Aria: (and actually, no, it doesn't.) [07:32] Aria: (Ease of maintenance requires that. Everything in V8, I'm sure, has good reason to be there. But a lot of it is heavy-handed solutions to specific performance problems.) [07:32] Aria: (like having 9 kinds of string, to avoid rewriting them into different formats on the spot. Just store them as they came.) [07:32] lhardy has joined the channel [07:33] jetienne: Aria: ok how do you explain the mess ? they just code dirty ? the mess is needed to achieve perf ? [07:34] Aria: Well, it looks like it was their way to make it perform. [07:34] Aria: Make optimized code paths for each specific case to speed up. [07:34] Aria: (which explains Ryah's results, too, with things that aren't part of normal browser-based javascript) [07:35] ditesh|cassini has joined the channel [07:35] jetienne: looks like the 'fast path' as we say for routers [07:35] jetienne: i vaguely remember a talk from v8 author where string implementations were mentioned [07:36] Tim_Smart: Cool video: http://www.youtube.com/watch?v=hWhMKalEicY [07:36] ryah: better fast and dirty than slow and beautiful [07:37] Aria: Yep. [07:37] wilmoore has joined the channel [07:39] tobiassjosten has joined the channel [07:41] persson has joined the channel [07:42] _announcer: Twitter: "http://bit.ly/bbPybj Expert to Expert - Erik Meijer and Lars Bak: Inside V8 - A Javascript Virtual Machine # nodejs" [nl] -- Jerome Etienne. http://twitter.com/jerome_etienne/status/21646351988 [07:42] jetienne: http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Erik-Meijer-and-Lars-Bak-Inside-V8-A-Javascript-Virtual-Machine/ this video [07:42] tyfighter has joined the channel [07:42] voxpelli has joined the channel [07:43] voxpelli has joined the channel [07:45] margle has joined the channel [07:45] pr0cy0n has joined the channel [07:45] pufuwozu has joined the channel [07:49] ditesh|cassini has joined the channel [07:50] javajunky has joined the channel [07:55] pufuwozu has joined the channel [07:58] EyePulp: what's the proper way to test if a filepath is valid? [08:00] javajunky: stat ? [08:02] rnewson has joined the channel [08:03] DoubleV has joined the channel [08:06] Tim_Smart: EyePulp: write / read it anyway, and if an error occurs, then handle it accordingly. [08:07] frza has joined the channel [08:10] ntelford has joined the channel [08:11] matthewford has joined the channel [08:14] jacobolus has joined the channel [08:17] icy: he did not say "exists" but "is valid" :) [08:21] devinus has left the channel [08:21] quellhorst: so i'm testing the hello world node.js http server. [08:22] quellhorst: running ab -c 20 -n 10000 http://127.0.0.1:8124/ [08:22] mape: And? [08:22] quellhorst: things are super fast like 5000 req/second but sometimes something gets held up and then it drops down to 500 req/second [08:22] ker2x: Friendly greetings \o/ [08:22] mape: Other stuff on the machine? [08:22] ker2x: quellhorst: gc ? [08:22] felixge has joined the channel [08:22] felixge has joined the channel [08:23] quellhorst: its my desktop [08:23] quellhorst: lots of other stuff [08:23] Aria: Then there's a huge number of confounding factors there. [08:23] icy: you maybe are running out of sockets [08:23] quellhorst: also noticed something similar happens when i run some lightweight ruby http server [08:23] mscdex: EyePulp: there is path.exists [08:23] Aria: Your machine may have decided to spend a moment paying attention to all the rest. [08:23] pufuwozu has joined the channel [08:24] ryah: ACTION measured write() syscalls that took 500 ms on OSX [08:24] ryah: not much you can do about that.. [08:24] bcg has joined the channel [08:24] ryah: (well - make fewer write calls...) [08:25] ryah: (don't aggitate the scheduler into unscheduling you?) [08:25] icy: osx is useless for benchmarks anyways imho :) [08:25] icy: unless you write an app only for osx that is [08:25] omarkj: Morning. [08:25] mscdex: yes, 4:30am in the morning. [08:26] BryanWB_ has joined the channel [08:26] omarkj: Somewhere in the world, yes. [08:26] BryanWB_ has joined the channel [08:27] mscdex: here :-) [08:27] omarkj: Lovely. You should go to sleep. :) [08:27] mscdex: maybe [08:27] mscdex: today was unproductive [08:27] mscdex: i need like a giant wheel so i can choose what node project to work on on any given day [08:28] mscdex: so i can just give the wheel a good spin [08:28] mscdex: and have it decide for me [08:28] Tim_Smart: What is wrong with good ol Math.random()? [08:28] mscdex: the wheel is more funner [08:29] mscdex: plus it would make a great conversation starter [08:29] stride: do one with serverside rendering sent over websockets to a canvas element :) [08:29] omarkj: Hah, I guess that's true. [08:29] quellhorst: I guess i'll have to do more testing on linux then? [08:30] quellhorst: after the new server i ordered today, got 9 total linux systems [08:30] mscdex: linux \o/ [08:30] stride: quellhorst: a dedicated server for it would be in order to call it "testing" I guess :) [08:31] TomY_ has joined the channel [08:31] BryanWB has joined the channel [08:31] stride: I run my node stuff on a CentOS VM on a ibm xen, didn't see problems like that so far [08:31] quellhorst: i try not to run virtualized anymore. [08:31] ditesh|cassini has joined the channel [08:31] quellhorst: after getting bit in EC2 running big DBs [08:32] Aria: I like containerization much more than virtualization. [08:32] ryah: so - it's imposible to chang ethe process name in solaris [08:32] ryah: sucks [08:32] Aria: Eesh, geez. [08:32] quellhorst: hehe, i would change my process names over a decade ago to hide long running processes on ISPs that didn't want them [08:32] Aria: I've only ever wanted to have isolation between zones -- an administrative division. [08:32] quellhorst: even funnier is when they would kill their root processes with matching names on accident [08:33] stride: it's only a small dev-machine, was too lazy to put large box in the rack for my mostly private experiments [08:34] quellhorst: it still shocks me that I have 35/35 fiber at home with static ips and unmetered [08:34] felixge: stride: how much longer can I keep my access to your db? This pw hashing thing is a bitch, I need to compile the mysql code to get some test vectors, it's a nice time sink ;) [08:37] robotarmy has joined the channel [08:38] voxpelli has joined the channel [08:38] stride: felixge: it's bound to your IP, keep it as long as you need it. we're just having some hardware problems until new routerboards arrive so it may be offline for a few minutes every now and then [08:39] felixge: stride: np : ) [08:39] ollie has joined the channel [08:39] felixge: stride: well, I might need to ask you to change it to a different IP next time as I'm not going to be using this one anymore. But I think I can write the code without access to the db for now. Just need to make sure my function behaves like the mysql one [08:41] stride: felixge: okay, sure. just query me or something. (I'm moving tomorrow so I wont be able to get to it before sunday) [08:41] felixge: stride: np [08:41] stride: ok [08:42] felixge: ACTION signing off to get some work done :) [08:42] chilts has joined the channel [08:43] wllm has joined the channel [08:51] tisba has joined the channel [08:51] quellhorst: ok great, testing on linux, and it didn't do any of the weird osx stuff where things hault after 10k requests [08:52] mAritz has joined the channel [08:52] cataska has joined the channel [08:54] CrzayGoogle has joined the channel [08:54] davidc_ has joined the channel [08:54] _announcer: Twitter: "For a simple "Hello world", Javascript + PHP + Apache node.js sink: Deeply http://bit.ly/crAjoW tests on real apps # SSJS" [fr] -- Clochix. http://twitter.com/clochix/status/21649517048 [08:54] Egbert9e9 has joined the channel [08:54] davidc_ has joined the channel [08:55] _announcer: Twitter: "finally had a play with http://nodejs.org/ pretty amazing performance for simple helloworld compared to LAMP" -- Peter Simons. http://twitter.com/cabbiepete/status/21649562701 [08:56] n3v3le has joined the channel [08:56] _announcer: Twitter: "The node.js WebAppServer with MVC I wanted to make something of a framework that people are making so much already. But good." [ja] -- fu_su. http://twitter.com/fu_satou/status/21649587740 [08:56] n3v3le has left the channel [08:57] mAritz: not great good but ok good. GET! [08:59] _announcer: Twitter: "best post I found explaining node.js benefits http://bit.ly/d5NBd5" -- Peter Simons. http://twitter.com/cabbiepete/status/21649748755 [09:01] pufuwozu has joined the channel [09:04] zomgbie has joined the channel [09:06] zemanel has joined the channel [09:06] CIA-77: node: 03Ryan Dahl 07master * r9283e13 10/ (5 files in 3 dirs): bump version - http://bit.ly/clcGTh [09:06] CIA-77: node: 03Ryan Dahl 07master * r4fcbc1b 10/ Makefile : Update make website-upload - http://bit.ly/90Z1Uk [09:07] _announcer: Twitter: "Nodejs 0.2 released !!! ;) http://groups.google.com/group/nodejs/browse_thread/thread/c040c5fd7d761d57" -- Ciaran Jessup. http://twitter.com/ciaran_j/status/21650124405 [09:09] javajunky: oops, I beat ryah to the annouce ;) [09:10] _announcer: Twitter: "node.js v0.2.0 released, in time for the weekend! http://bit.ly/9N7hUw" -- Mathias Pettersson. http://twitter.com/mape/status/21650231316 [09:12] jelveh has joined the channel [09:12] Tim_Smart: Lolwut!? [09:12] pufuwozu has joined the channel [09:12] astrolin has joined the channel [09:12] FransWillem has joined the channel [09:13] stride: \o/ [09:13] digitalspaghetti: woop, time to use nave to test my app on 0.2.0 [09:14] maushu has joined the channel [09:14] mAritz: what does --without-snapshot do? :) [09:14] _announcer: Twitter: "fighting with my node.js installation *bleh* package management is a ball-ache" -- Quinton Parker. http://twitter.com/quintonparker/status/21650428451 [09:19] ryah: mAritz: compiles node without snapshotting [09:19] mAritz: ryah: ok, which means? :D (i don't know what snapshotting means in this context. i'll just google it) [09:20] quellhorst: man, why is it so hard to do a benchmark over the net [09:20] felixge has joined the channel [09:20] felixge has joined the channel [09:20] _announcer: Twitter: "Finally, a stable version! :) Now we can take as follows:) # nodejs" [ru] -- Serge Shirokov. http://twitter.com/kurokikaze/status/21650682492 [09:20] Tim_Smart: How does 0.2 automatically make it stable :/ [09:20] proppy has joined the channel [09:20] proppy: hop [09:20] quellhorst: getting 800 req/second over the net, but neither the apache bench system or the remote node server is even hitting much cpu [09:20] _announcer: Twitter: "Oh, and @ brainfucker there cheyndzhloge was marked:) # nodejs" [ru] -- Serge Shirokov. http://twitter.com/kurokikaze/status/21650708707 [09:20] mAritz: in russia stable makes you 0.2 [09:20] mAritz: wait, that doesn't work :/ [09:20] felixge: ryah: that came unexpected :) [09:21] felixge: ryah: great work [09:21] ryah: mAritz: snapshots compile the v8 libs into memory [09:21] felixge: are any data structure nerds online right now? [09:21] proppy: ryah: did you see my pull request (with console.log tests) [09:21] ryah: mAritz: without snapshots will be slower [09:21] proppy: congrats for 0.2 ! [09:21] BryanWB has joined the channel [09:21] felixge: I have a whole bunch of Lng/Lat coordinates and I need to slice out a sub set for a certain area [09:21] ryah: proppy: no - maybe not [09:22] ryah: proppy: email me again? [09:22] felixge: The area is a rectangle [09:22] proppy: ryah: sure [09:22] proppy: I made the pull request throught github, maybe it didn't make it [09:22] maushu: It would be great if there were something like shoes for node.js [09:22] felixge: but I don't want to iterate over thousands of coordinates and test if they fit my rectangle :) [09:22] maushu: Maybe gloves? xD [09:22] maushu: felixge: Use a quadtree. [09:22] mAritz: ryah: ok, thanks :) [09:23] maushu: ACTION <- game dev at heart. [09:23] felixge: maushu: exactly what I was looking for :) [09:23] proppy: ryah: mail to you, or to the group ? [09:23] proppy: felixge: use postgis :) [09:23] mAritz: felixge: if you have postgre flying around, use that [09:23] mAritz: damnit [09:23] ryah: proppy: whichever [09:23] felixge: maushu: I'm doing some google maps stuff and decided reloading data all the time sucks if I can probably just cache a few thousand items upfront :) [09:23] _announcer: Twitter: "Said that "but the API has been considered stable for quite a while now." ... So you can spend more time play nodejs the ... http://plurk.com/p/71rvp7" [zh-TW] -- Hsu Ping Feng. http://twitter.com/fillano/status/21650843525 [09:23] mAritz: proppy: you stole my answer! [09:23] ryah: mail is better than github things [09:24] proppy: mAritz: :) [09:24] proppy: mAritz: I got a spare one if you want [09:24] micheil: hmm.. why do people love api freezes? [09:24] felixge: now that the API is stable, we need plans for breaking it again [09:24] felixge: :) [09:24] micheil: felixge: good idea. [09:24] proppy: mAritz: (whisper: tell him to use pincaster, it has nodejs bindings) [09:24] maushu: felixge: How is transload.it going? [09:24] pufuwozu has joined the channel [09:25] sveimac has joined the channel [09:25] felixge: maushu: the startup we're working for doesn't let me work on it enough anymore, so we're looking for a new gig ideally half-time [09:25] mAritz: proppy: a spare one of what? :D [09:25] proppy: mAritz: answers [09:25] proppy: since I stoled yours :) [09:25] maushu: felixge: Huh, wat. [09:25] felixge: maushu: bootstrapping is tough, otherwise things are good :) [09:26] maushu: Ah. [09:26] solidsnack has joined the channel [09:26] mAritz: proppy: nah, the stupid ones are the happy ones. more answers just lead to more questions :P [09:26] micheil: felixge: hmm, who do you work for? [09:26] codetonowhere has joined the channel [09:26] felixge: micheil: we are working for tvype.com [09:26] SamuraiJack has joined the channel [09:26] proppy: http://github.com/zyll/pincaster pincaster-node, http://github.com/jedisct1/pincaster pincaster [09:26] micheil: felixge: ah, okay [09:26] felixge: micheil: they needed something like transloadit and so they let us work on it while working for them [09:27] felixge: micheil: but the pay overall sucks, so now that transloadit does everything they need and they don't allocate time for it anymore we need to find something new [09:27] micheil: felixge: maybe ask sencha? [09:27] felixge: we already have 1 suitable half-time gig lined up [09:27] Tim_Smart: I got an idea, how about we break the API with a hammer :o [09:27] felixge: but I'd like to work on node stuff ideally [09:27] Tim_Smart: 0.2.1, API broken with hammer. [09:28] felixge: micheil: yeah, I can try - not sure if they are working with contractors [09:28] hellp has joined the channel [09:28] _announcer: Twitter: "Wait. WTF? Node.js actually reached 0.2.0?! Aww man.. there's to all those jokes of node v0.1.99999" -- Micheil Smith. http://twitter.com/miksago/status/21651049099 [09:28] mAritz: proppy: is pincaster able to handle points in 3d? [09:28] holydevil has joined the channel [09:28] proppy: mAritz: note that I know of, but you could ask on #pincaster [09:29] _announcer: Twitter: "Oh yea! #nodejs v0.2.0 released http://nodejs.org/docs/v0.2.0/changelog.html Thanks for the heads up @miksago :) http://nodejs.org/" -- The Changelog. http://twitter.com/changelogshow/status/21651076336 [09:29] ditesh|cassini has joined the channel [09:29] maushu: WAT. [09:29] maushu: ryah: 0.2.0?! You... you... you troll! [09:29] quellhorst has left the channel [09:29] markwubben has joined the channel [09:30] pufuwozu has joined the channel [09:31] mAritz: proppy: if not i could add another layer for the z-axis... haha -.- [09:31] ivong has joined the channel [09:33] stagas has joined the channel [09:33] proppy: ryah: posted [09:36] _announcer: Twitter: "BlisterPipe # nodejs v0.2.0 released http://groups.google.com/group/nodejs/browse_thread/thread/c040c5fd7d761d57: R. .. http://bit.ly/bBAT3y" [lv] -- BlisterList. http://twitter.com/BlisterList/status/21651433264 [09:39] _announcer: Twitter: "Node.js version 0.2.0 released http://nodejs.org/" -- Georg Portenkirchner. http://twitter.com/portenkirchner/status/21651567941 [09:40] pufuwozu has joined the channel [09:42] mscdex: maushu.com! [09:44] _announcer: Twitter: "Fail to compile node.js 0.2.0 on #arm #plug #computer .Still 1 issue with #v8 macro-assembler-arm.cc we require an architecture supports blx" -- Vincent RABAH. http://twitter.com/itwars/status/21651781853 [09:44] stride: semantic versioning ftw \o/ http://semver.org/ :> [09:45] maushu: mscdex: I will give you that domain for $500 [09:45] mscdex: too much :~( [09:45] maushu: It's small and memorable. [09:46] ker2x: as a unix sysadmin, node.js my new perl \o/ [09:46] mscdex: i thought there was a fix for the blx instruction for arm compilation? [09:46] Tim_Smart: maushu: Can I have google.com for $500? [09:46] ker2x: i'm coding a syslog event reporter [09:46] ker2x: for a ~200 server cluster [09:47] mscdex: i'm coding an asynchronous sleep script [09:47] maushu: Tim_Smart: Sure! Money first though. [09:47] bsstoner has joined the channel [09:47] mscdex: cross-ship! [09:47] mscdex: :p [09:48] maushu: Tim_Smart: I also have this bridge I want to sell if you want. [09:48] _announcer: Twitter: "#iaflash Fail to compile node.js 0.2.0 on #arm #plug #computer .Still 1 issue with #v8 macro-assembler-arm.cc we r... http://bit.ly/aNVmB6" -- I, Architect.. http://twitter.com/iaflash/status/21651972996 [09:48] _announcer: Twitter: "node.js + expressjs http://nodejs.org/ http://expressjs.com/" [id] -- Evgeny Maslennikov. http://twitter.com/maenwen/status/21651975904 [09:49] _announcer: Twitter: "#nodejs v0.2.0 released with a kind-of freeze in the API. Great!" -- Frank Grimm. http://twitter.com/frank_grimm/status/21652014254 [09:50] mscdex: maushu: what if he's not a bridge player? [09:50] maushu: He can be, for only $999.99 [09:51] _announcer: Twitter: "Installing node.js on ubuntu 10.04 : http://www.codediesel.com/linux/installing-node-js-on-ubuntu-10-04/" -- Avinash . http://twitter.com/AforAvi/status/21652119916 [09:52] stride: ker2x: are you releasing your stuff opensource? [09:53] ker2x: we have a very custom format [09:53] ker2x: opensourcing it will be useless [09:53] micheil: make it generic? [09:54] ker2x: i'll probably opensource something else. a gateway between syslog-ng and mongodb or couchdb [09:54] ker2x: logging to database in syslog-ng is a $2000/year feature [09:54] ker2x: that could be solved with a few line of nodejs [09:55] micheil: 2000$/year? bloody hell. [09:55] Tim_Smart: Tip: Don't use 'delete' in v8 unless you really have to. [09:55] micheil: Tim_Smart: good tip. [09:55] ker2x: not as good as the original syslog-ng feature of course, but that should do it [09:55] micheil: is syslog-ng some product? [09:55] ker2x: micheil: yes, sql and many other feature. they have a opensource version and a premium version [09:55] Tim_Smart: micheil: I'm watching a video on v8 implementation.. [09:55] micheil: Tim_Smart: ah, okay [09:55] ker2x: syslog-ng is the very best syslogd (imho) [09:56] stride: oh, okay, we're not running -ng here, in that case my own stuff is sufficient [09:56] maushu: Tim_Smart: why? [09:56] ker2x: http://www.balabit.com/network-security/syslog-ng/ [09:56] CrzayGoogle: ../src/node_crypto.cc: In static member function ‘static v8::Handle node::SecureContext::Init(const v8::Arguments&)’: ../src/node_crypto.cc:77: error: ‘SSLv2_method’ was not declared in this scope ../src/node_crypto.cc:79: error: ‘SSLv2_server_method’ was not declared in this scope ../src/node_crypto.cc:81: error: ‘SSLv2_client_method’ was not declared in this scope [09:56] CrzayGoogle: :( [09:56] CrzayGoogle: cant compile 0.2.0 [09:57] micheil: hmm.. [09:57] maushu: I mean, what if I want to delete a item from a hash? (array or object) [09:57] micheil: do you have ssl and ssl-dev installed? [09:57] CrzayGoogle: yeap [09:57] Tim_Smart: maushu: When you delete a property, it degenerates the object to a hash-map, instead of their super fast method. [09:57] stride: I knew balabit has somewhat harsh prices sometimes but $2400 for a few configuration lines in the opensource version? [09:57] Tim_Smart: s/the/to a / [09:57] micheil: maushu: use undefined [09:57] CrzayGoogle: dev-libs/openssl-1.0.0a [09:57] maushu: Tim_Smart: So, I should use undefined? [09:57] Tim_Smart: maushu: Ideally, yeah. [09:58] micheil: CrzayGoogle: let me pull the latest and try. [09:58] ker2x: stride: its config file is <3 ... you define source, filter, destination, you mix everything and you can do everything you could think about. :) [09:58] pr0cy0n has joined the channel [09:58] maushu: But... wait a sec, if use undefined the key is still there. [09:58] _announcer: Twitter: "Node.js 0.2 released http://bit.ly/92fM9T - still rarer than rare steak but delicious nonetheless" -- Don Park. http://twitter.com/donpark/status/21652431096 [09:58] _announcer: Twitter: "Run all your web node.js apps on 1 machine, restart them, watch for code changes, auto rollback to the last stable http://bit.ly/b3CZwB" -- George Stagas. http://twitter.com/stagas/status/21652447806 [09:58] maushu: Don't mean delete should not be used on objects but hash-maps should use it? [09:58] Tim_Smart: I love rare steak >.> [09:59] micheil: I prefer my stuff fairly fully cooked. [09:59] CrzayGoogle: micheil, ok [09:59] Tim_Smart: maushu: Well, it just means your object skips all the V8 optimizations. [09:59] micheil: also, Baking is science for hungry people. [09:59] _announcer: Twitter: "[Devblog] est is # nodejs Node.js v0.2.0" [vi] -- Bruno Michel. http://twitter.com/brmichel/status/21652483523 [09:59] maushu: Yeah, but after a while the hash will have tons of keys with undefined values. [09:59] micheil: CrzayGoogle: it's building ok for me [10:00] micheil: CrzayGoogle: have you done ./configure first? [10:00] CrzayGoogle: v0.2.0 tag ? [10:00] micheil: latest HEAD of the github repo [10:00] CrzayGoogle: micheil: yeap, i done configure first [10:00] Tim_Smart: maushu: I guess the only way to test is to benchmark it. [10:00] CrzayGoogle: micheil: i will try HEAD too [10:00] micheil: CrzayGoogle: make distclean? [10:01] CrzayGoogle: micheil: no, just make clean [10:01] micheil: try distclean [10:01] CrzayGoogle: micheil: but i will try that one too [10:01] _announcer: Twitter: "Frankly my #nodejs , we give a damn at http://www.startupweekly.com/hashtag/show/nodejs.html" -- Startup Weekly. http://twitter.com/startupweeklies/status/21652591343 [10:02] _announcer: Twitter: "Node v0.2.0 released! Google Groups - http://goo.gl/GxNM #nodejs" -- Peter Hoffmann. http://twitter.com/peterhoffmann/status/21652624548 [10:02] CrzayGoogle: micheil: no, dosnt work [10:03] micheil: CrzayGoogle: what platform? [10:03] CrzayGoogle: gentoo [10:03] _announcer: Twitter: "node.js is to Ruby as Google is to Apple." -- Fronx. http://twitter.com/fronx/status/21652659713 [10:03] CrzayGoogle: dev-libs/openssl-1.0.0a-r2 USE="gmp (sse2) zlib -bindist -kerberos -rfc3779 -sslv2 -test" [10:03] jetienne has joined the channel [10:03] micheil: hmm.. [10:04] CrzayGoogle: micheil: and v8 v2.3.9 [10:04] FransWillem: ... [10:04] micheil: you don't need v8 for node, it's packaged inside it [10:04] CrzayGoogle: oh o_O ? [10:04] FransWillem: Could anyone explain to me what all the hype over Ruby is about? I've never really understood it :/ [10:04] micheil: FransWillem: try in a ruby channel, not a javascript one ;P [10:05] ker2x: Erlang for Servers, Ocaml for scientists, Haskell for anything, ruby for mac hipsters \o/ [10:05] stride: it's magic and sparkling! oh wait.. that was apple, and table water [10:05] CrzayGoogle: how do i switch in git from tag to head ? [10:06] CrzayGoogle: git checkout HEAD ? [10:07] micheil: git checkout master [10:07] CrzayGoogle: ok, tnx [10:07] micheil: (you can check, because a checkout of a tag will show up under `git branch` as [no branch]) [10:07] FransWillem: <3 Haskell :) [10:07] mscdex: how is using undefined instead of delete a solution? [10:08] mscdex: won't the property still exist? [10:08] FransWillem: Did some great projects for Uni in haskell, raytracers, compilers, interpreters, love it :) [10:08] ker2x: :))) [10:08] micheil: or, atleast, deref'ing it makes it able to be GC'd, iirc, mscdex [10:08] CrzayGoogle: no, no success with HEAD [10:08] CrzayGoogle: [68/69] cxx: src/node_crypto.cc -> build/default/src/node_crypto_4.o /usr/bin/g++ -DHAVE_OPENSSL=1 -DEV_MULTIPLICITY=0 -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_FDATASYNC=1 -DPLATFORM="linux" -DNDEBUG -g -O3 -Idefault/src -I../src -Idefault/deps/libeio -I../deps/libeio -Idefault/deps/http_parser -I../deps/http_parser -Idefault/deps/v8/include -I../deps/v8/include -Idefault/deps/libev -I../deps/libev -Idefault/dep [10:08] mscdex: i realize that, but you can't remove the property still [10:08] mscdex: without using delete [10:08] CrzayGoogle: ../src/node_crypto.cc: In static member function ‘static v8::Handle node::SecureContext::Init(const v8::Arguments&)’: [10:09] CrzayGoogle: ../src/node_crypto.cc:77: error: ‘SSLv2_method’ was not declared in this scope [10:09] ker2x: FransWillem: i couldn't create a real project in haskell, but it's definitively an interesting langage. but i choose erlang over haskell :) [10:09] CrzayGoogle: ../src/node_crypto.cc:79: error: ‘SSLv2_server_method’ was not declared in this scope [10:09] mscdex: you can set it to undefined to GC the value of the property [10:09] mscdex: but the property itself won't be removed [10:09] CrzayGoogle: ../src/node_crypto.cc:81: error: ‘SSLv2_client_method’ was not declared in this scope [10:09] mscdex: that's the real problem imho [10:09] micheil: CrzayGoogle: send an email to the mailing list; you might be able to get an answer there [10:09] ker2x: time to eat. bbl [10:09] CrzayGoogle: micheil: ok, tnx [10:10] micheil: I don't think anyone here is using gentoo [10:10] ker2x: s/here// [10:10] CrzayGoogle: compiled v0.1.104 still work [10:10] CrzayGoogle: :D [10:11] mscdex: CrzayGoogle: what does ./configure say regarding ssl? [10:13] CrzayGoogle: mscdex: Checking for openssl : yes [10:13] CrzayGoogle: sorry, guys, had to go away for the while, i will write in to google group [10:13] CrzayGoogle: tnx anyway [10:16] FransWillem: ker2x: A whole project in Haskell is pretty do-able, but you really need to know your way around Monads to keep it nice :) [10:17] ollie has joined the channel [10:20] _announcer: Twitter: "UglifyJS: a very fast JS compressor that can compress as well as Google's Closure. Written in JS, runs on node.js http://is.gd/er5bE" -- Morgan Pyne. http://twitter.com/morganpyne/status/21653446639 [10:22] _announcer: Twitter: "Node.Js 0.2.0 released http://twurl.nl/2jcrqj SuperW0000tt!!! #node" -- jonpauldavies. http://twitter.com/jonpauldavies/status/21653570885 [10:23] _announcer: Twitter: "Checked the limestone, the standard calls such as working with the # nodejs 0.2.0. Expanded be finished, and finally add the missing functionality" [ru] -- Serge Shirokov. http://twitter.com/kurokikaze/status/21653587331 [10:25] ker2x: FransWillem: a monad is a monad :) [10:26] sveisvei has joined the channel [10:28] _announcer: Twitter: "Node.JS 0.2 released .. will try stuff later today ..." -- Aditya. http://twitter.com/NetRoY/status/21653838718 [10:29] FransWillem: ker2x: Still, I feel like since I took "Advanced Functional Programming" at uni, and pretty much had to be able to implement a monad completely from scratch, I've gotten a much better grasp at them and they've become much more powerful than I originally thought :) [10:31] jetienne: what is the deal between nodejs/v8 and ccache ? why ccache is disabled in ./configure ? [10:31] pr0cy0n has left the channel [10:32] _announcer: Twitter: "@ Nurikidy dear, preceded. I try oprek nodejs aja deh. He said perfect match for mongodb" [id] -- Lhutfhy pribadi. http://twitter.com/lhutfhy/status/21654047365 [10:33] BryanWB has joined the channel [10:35] ditesh|cassini has joined the channel [10:38] joshthecoder has joined the channel [10:40] halorgium has joined the channel [10:40] _announcer: Twitter: "Multi-Channel WebSockets with Node.js and Socket.IO http://bit.ly/aoVuWx" -- Brian Stoner. http://twitter.com/bsstoner/status/21654398304 [10:40] maushu: Hmm, wondering if I should go to codebits. [10:40] maushu: Maybe advertise node.js xD [10:40] digitalspaghetti: Like some kind of big brother, I am tracking you all now: https://twitter.com/tanepiper/node-js [10:41] maushu: I'm not there! AHAHAH [10:41] maushu: You will never find me. [10:41] maushu: Hint: I'm not from Romania. [10:42] _announcer: Twitter: "Node.js / Mongo DB server. I'm starting one up to experiment with. Access available for a couple of £/month donation. DM me..." -- Ross Cairns. http://twitter.com/RossC1/status/21654490547 [10:42] digitalspaghetti: oh well, you don't get to be on the list then :p [10:43] maushu: Freedom! [10:43] proppy: mape: try the finger thing, neat ! [10:43] pufuwozu has joined the channel [10:44] fermion has joined the channel [10:44] _announcer: Twitter: "Like some kind of big brother I'm tracking the cool people on twitter who do #node.js stuff: http://ow.ly/2sjVz Want to be on it? tweet me" -- Tane Piper. http://twitter.com/tanepiper/status/21654627028 [10:44] _announcer: Twitter: "http://bit.ly/aDx4jP how to install node.js 0.2.0 on ubuntu. deb package + repository" -- Jerome Etienne. http://twitter.com/jerome_etienne/status/21654629163 [10:45] Aikar has joined the channel [10:47] _announcer: Twitter: "woohoo, node.js v0.2.0 is out! - http://northpole.sg/47 #node.js" -- Kenny Shen. http://twitter.com/kenny_shen/status/21654753353 [10:48] hellp has joined the channel [10:53] sh1mmer: wait. seriously [10:53] sh1mmer: awesome [10:53] jetienne: semver seems nice http://semver.org/ [10:54] proppy: jetienne: what is neoip ? [10:54] jetienne: proppy: my p2p stuff. a huge sw i have spent several years to write [10:55] proppy: I see it is large from the github repo, but I was looking for a README file :) [10:55] jetienne: proppy: hehe :) im currently working on releasing it. i will release webpeer by the end of the month [10:56] jetienne: proppy: webpeer is "web ubiquity + p2p efficiency" [10:56] proppy: jetienne: if I understand correctly webpeer is based on neoip ? [10:57] jetienne: proppy: yep neoip contains 12 apps. webpeer is one of them [10:59] FransWillem: Hmm [10:59] FransWillem: do home and end work for anyone in the node repl? [10:59] blackdog has joined the channel [11:00] er1c_ has joined the channel [11:00] proppy: ctrl-a ctrl-e [11:01] FransWillem: ? [11:01] FransWillem: But the normal home/end keys don't work for you either ? [11:02] jetienne: some stty guru should provide the little script to change that [11:02] bsstoner has left the channel [11:03] FransWillem: I'm actually trying to patch it in [11:03] jetienne: ^[OH = line home ^[OF=line end on linux [11:03] jetienne: FransWillem: make ctrl-c acts as .break too [11:03] FransWillem: Hmmm [11:03] _announcer: Twitter: "node.js 0.2.0 is out http://bit.ly/a6tCzr #nodejs" -- Régis Gaidot. http://twitter.com/rgaidot/status/21655552800 [11:04] jetienne: this is the usual behaviour for langauge shell. bash, irb (ruby), ipython(python) [11:04] proppy: FransWillem: repl code: looks like it's in lib/readline.js [11:04] FransWillem: Yeah [11:04] FransWillem: I figured there wouldn't be any code for it [11:04] FransWillem: But there is [11:04] proppy: yes [11:04] FransWillem: and it seems to trigger on what jetienne described, ^[OH and ^[OF [11:04] proppy: } else if (b[1] === 91 && b[2] === 72) { // home [11:04] proppy: this.cursor = 0; [11:04] proppy: this._refreshLine(); [11:04] proppy: } else if (b[1] === 91 && b[2] === 70) { // end [11:04] proppy: this.cursor = this.line.length; [11:04] FransWillem: but that's not what Putty is sending :/ [11:04] proppy: FransWillem: but it's not working for me either [11:05] FransWillem: Putty seems to be sending ^[O1 and ^[O* :/ [11:05] jetienne: FransWillem: hmmm yep home/end arent working here (linux) on node 0.2.0 [11:05] FransWillem: err [11:05] jelveh has joined the channel [11:05] FransWillem: ^[O1 and ^[O4 [11:06] proppy: maybe readline.js is not used for node repl [11:06] FransWillem: It is [11:06] proppy: there is a - readline item in the TODO file [11:06] jetienne: i think this is the minireadline.js to workaround the GPL license of libreadline [11:06] FransWillem: But it's handling ^[OH and ^[OF, instead of the ^[O1 and ^[O4 putty is sending it :/ [11:07] proppy: FransWillem: I don't grep any require( .* readline in the node.js code :9 [11:07] FransWillem: proppy: it's in repl.js, line 20 [11:07] jetienne: FransWillem: im not sure. if so, home/end should work on my linux box, and they dont [11:07] proppy: FransWillem: thanks :) [11:08] proppy: FransWillem: you're better than M-x grep-find :) [11:08] phil- has joined the channel [11:09] proppy: is REPLServer used when connecting from CLI ? [11:09] proppy: maybe the network repl is different from the local CLI one [11:09] FransWillem: jetienne: I suspect that the terminal standard that defines ^[OH and ^[OF isn't what's actually being used, tbh [11:09] FransWillem: proppy: Nope, it's what's being used :) [11:10] proppy: nice maybe there is room for adding M-f M-b support in it :) [11:10] FransWillem: M-f M-b ? [11:11] jetienne: stdio.setRawMode(true); [11:11] FransWillem: ? [11:12] proppy: FransWillem: one word forward / backward [11:12] proppy: FransWillem: I put some console.log in readline.js [11:12] proppy: and [11:12] proppy: and home print [11:12] proppy: 79 72 [11:12] proppy: and end print [11:12] proppy: 79 70 [11:13] FransWillem: http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter4.html#config-keyboard [11:13] proppy: and currently readline.js checks for 91 [11:13] FransWillem: xterm, and other terminals, send ESC [1~ for the Home key, and ESC [4~ for the End key. rxvt sends ESC [H for the Home key and ESC [Ow for the End key. [11:13] jetienne: ryah got a mac [11:13] jetienne: FransWillem are you on mac ? [11:13] FransWillem: Nope, windows, with an ubuntu VM running Node [11:13] jetienne: i suspect that 91 is the mac key [11:15] FransWillem: Ok [11:15] jetienne: case 3: [11:15] jetienne: //process.kill(process.pid, "SIGINT"); [11:15] jetienne: this.close(); [11:15] jetienne: i want to remove this :) [11:15] FransWillem: Hmm, I think that should be more like .break, tbh [11:16] jetienne: me too, this is the case for ruby/python console stuff [11:16] FransWillem: Ok, so, long story short: [11:16] jetienne: as a way to mimic bash behavior [11:17] proppy: http://github.com/proppy/node/commit/0a4bf38263bc4219407c585b068d0bd6471f3a8e [11:17] FransWillem: We have macs that are sending ^[[O and ^[[H, then we have linux sending ^[OH and ^[OF, and then we have xterm/putty sending ^[O1 and ^[O4 [11:17] proppy: did the trick for me [11:17] ditesh|cassini has joined the channel [11:17] FransWillem: Bastard :p [11:17] FransWillem: Was hoping to get a commit applied to Node, but appears you've stolen that opportunity now :p [11:17] jetienne: hehe :) [11:18] proppy: FransWillem: you can still do M-b M-f :) [11:18] FransWillem: Still, I think there's more to it than just that [11:18] proppy: the number are good but the implementation is missing :) [11:18] FransWillem: Because now it only supports linux and mac, but still not xterm/putty :/ [11:18] jetienne: FransWillem: remove ctrl c, ryah told me ok for it [11:18] proppy: FransWillem: you can try with the patch applied on putty [11:19] mape: sveisvei: Thanks for the support ;) [11:19] FransWillem: Nope, doesn't work on putty [11:20] FransWillem: Hmm [11:20] FransWillem: funny [11:20] FransWillem: Putty says it's using the xterm style [11:20] FransWillem: yet xterm defines ESC-H [11:20] FransWillem: whereas putty is sending ESC-1 [11:21] BryanWB has joined the channel [11:22] BryanWB: anybody having trouble installing v0.2.0 on linux [11:22] FransWillem: So we have ESC-H and ESC-F for *nix, then ESC-1~ and ESC-4~ for putty/xterm :/ [11:22] FransWillem: Horrible [11:23] BryanWB: those readline keybindings mostly come from emacs iirc [11:23] BryanWB: w/ some mutations by xterm [11:24] blackdog has joined the channel [11:24] proppy: FransWillem: do you want to pull my changeset and submit it as a bigger pull request with your fixes to ryah ? [11:25] FransWillem: Not sure [11:25] Dmitry1 has joined the channel [11:25] FransWillem: I could hack in support for those keys [11:26] FransWillem: But I'd still feel it'd be rubbish :/ [11:26] proppy: nothing is rubbish once you write test for it :) [11:27] FransWillem: I mean, it's expecting every character sent to be in its own buffer/packet [11:27] maushu: We need to write tests for the tests. [11:27] FransWillem: What if you're behind some kind of slow socks proxy that just dumps a shitload of characters in one buffer? [11:27] maushu: And tests for those tests. [11:27] proppy: maushu: that's called documentation :) [11:27] FransWillem: it'll lose half of your input :S [11:27] proppy: or specs ! [11:28] FransWillem: Actually, it might be a good idea to write some unit tests for the readline library [11:28] FransWillem: and work from there to do a proper implementation [11:29] proppy: that sound like a good candidate to get you a commit applied to Node :) [11:29] FransWillem: Not sure if I'd want to do it all by myself, though :/ [11:33] proppy: maybe there is already a javascript readline implementation out there [11:35] SamNZ has joined the channel [11:38] Tim_Smart1 has joined the channel [11:39] maushu: Hmm, pump is not working. [11:39] jetienne has joined the channel [11:40] proppy: it seems that d8 (v8 debugger already links to readline) [11:40] felixge: maushu: thanks for the quad tree hint, seems to be working great :) [11:40] _announcer: Twitter: "@felixge Now in you wrote that in #nodejs it would probably go back in time and slap you before it was done :p" -- Tane Piper. http://twitter.com/tanepiper/status/21657469430 [11:41] _announcer: Twitter: "@tanepiper I might actually move that part of this app into node.js once node-mysql is ready enough." -- Felix Geisendörfer. http://twitter.com/felixge/status/21657520587 [11:42] felixge: I love this twitter bot [11:42] maushu: No prob. My game dev heart rejoices. [11:42] BryanWB: anybody else having trouble building v0.2.0 on linux? [11:43] BryanWB: previous builds worked fine for me [11:43] felixge: maushu: writing a non-recursive function to insert elements into the tree was tricky so :) [11:43] maushu: BryanWB: nope. I event built it on cygwin. [11:43] felixge: (especially in PHP) [11:43] felixge: :D [11:43] maushu: WAT. [11:43] BryanWB: maushu, wow, that is an accomplishment [11:43] maushu: PHP?! BLASPHEMER! [11:43] herbySk has joined the channel [11:44] felixge: maushu: as I said ... bootstrapping a startup is tough :D [11:44] maushu: Are there any problem on creating streams in cygwin? [11:44] felixge: maushu: it isn't all that bad so: https://gist.github.com/239aa575f8ec1a8cfa58 [11:45] felixge: The trickiest part was realizing that my insert function would never finish if 2 items had the exact same coordinates *g* [11:45] maushu: Oh the horror... [11:45] felixge: well, realizing that I had two items like that [11:45] _announcer: Twitter: "Javascript server Node.js moves to 0.2.0: The up-and-coming JavaScript-running network server gets a first minor b... http://bit.ly/97BLiD" -- Robbert-Frank. http://twitter.com/RobbertFrank/status/21657749756 [11:46] maushu: felixge: Now implement a octotree! xD [11:46] felixge: maushu: The data structure you have dialed is permanently not existing? [11:47] maushu: err [11:47] maushu: I meant octree. [11:47] stride: it's a 2-3-4-5-6-7-8-tree with octopuss arms [11:48] _announcer: Twitter: "Update to # nodejs to v0.2.0, check-ins" [ru] -- Oleg Efimov. http://twitter.com/SannisDev/status/21657930841 [11:50] zomgbie has joined the channel [11:52] felixge: maushu: that sounds like fun :D [11:53] maushu: Pretty useless for now. I think. [11:54] felixge: maushu: well, unless I have 3d coordinates :) [11:54] maushu: "HAI MOM! CURRENTLY TWEETING FROM THE AIRPLANE!" [11:54] felixge: I guess projecting the earth surface into a 2 dimensional system does make sense [11:54] felixge: :) [11:54] maushu: Well, there are caves. [11:54] maushu: And oceans. [11:55] maushu: And superman. [11:55] felixge: maushu: :) [11:55] felixge: no thanks [11:55] felixge: ;) [11:56] Tim_Smart has joined the channel [11:57] BryanWB: javajunky, hey ciaran, i was confused by success method in connect-auth [11:58] BryanWB: i want to call it if authentication is successful and add a callback that redirects the user to a succcessful login page [11:58] BryanWB: i guess u have a different workflow [11:59] daleharvey has joined the channel [12:00] javajunky: well its up to the strategy provider to determine the workflow, An example that does redirects and login pages etc can be found here: http://wiki.github.com/ciaranj/connect-auth/creating-a-form-based-strategy [12:00] d0k has joined the channel [12:02] BryanWB: javajunky, ah, i c u updated that page in the last week. I have been away for about a week [12:03] javajunky: BryanWB: hmm I don't recall updating it (I've also been on holiday) .. so it possibly hasn't changed much from when you last saw it ?.. [12:03] jetienne has joined the channel [12:03] javajunky: BryanWB: So are you implementing your own strategies or working with one of the pre-built ones ? [12:04] BryanWB: javajunky, i last saw version 5 that didn't have the validate_credentials function [12:04] BryanWB: javajunky, create a new strategy for nstore [12:04] BryanWB: s/create/creating/ [12:05] javajunky: cool, grr github's wiki could do with a diff function, damn you and your free stuff github [12:07] herbySk: hello, I've got a git question: if upstream has identically-named tags than origin and I do git fetch upstream, do these tags get rewritten? [12:07] BryanWB: javajunky, would be nice to have super simple auth to get started w/ a new app just like many tomcat apps can start off using hsql or derby [12:07] Dmitry1 has joined the channel [12:08] javajunky: BryanWB: well there is, HTTP Basic + Digest ;) [12:09] BryanWB: javajunky, ugh u r right but i never liked htpasswd [12:09] javajunky: but I was planning on simplifying + generic'fying (is that a word…clearly not) .. the forms example once I'd worked out what people neded or wanted from it :) [12:09] javajunky: BryanWB: I rather threw it together in a hurry to demonstrate multiple things as a workable starting point for others :) [12:11] voxpelli has joined the channel [12:13] stalled has joined the channel [12:13] Tim_Smart: javajunky: Node.js uses the new git-backed wiki, so diffs should be just fine. [12:14] ker2x: is it possible to have a memory leak somewhere ? [12:14] ker2x: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND [12:14] ker2x: 29297 root 15 0 612m 44m 4856 S 1 4.5 0:04.30 node [12:14] ker2x: :( [12:14] BryanWB: javajunky, wouldn't I need to use something like Step to serialize the actual authentication function and the function that branches on whether the authentication was successful? [12:15] BryanWB: javajunky, why do you use setTimeout? just to simulate the amount of time needed to authenticate? [12:15] javajunky: Tim_Smart: I meant the wiki page on one of my projects ;) [12:15] ker2x: ho... now back to 16m [12:15] javajunky: BryanWB: yeah, to demonstrate it can be async. [12:15] ker2x: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND [12:15] ker2x: 29297 root 15 0 612m 20m 4856 S 0 2.0 0:04.79 node [12:15] ker2x: Mmmmm [12:15] javajunky: BryanWB: not sure about needing step, I don't entirely follow [12:16] javajunky: one never *needs* step (or alternative)..but it may well be a good idea. [12:16] BryanWB: javajunky, u have setTimeout in your validate_credentials function http://wiki.github.com/ciaranj/connect-auth/creating-a-form-based-strategy [12:16] BryanWB: i am trying to figure out why [12:17] javajunky: BryanWB: yes, just purely to demonstrate that the contents can be done asynchronously..for example a call to nstore… in that example if you remove the setTimeout line (and its closing parenthesis) the example will continue to wokr. [12:18] BryanWB: javajunky, sure, i just have to remember to chain the callbacks, which I find Step syntactically easier to use [12:20] FransWillem: Yay, Aho Corasick automaton generation in JS done :) [12:20] FransWillem: Now on to implement a Buffer parser using it :) [12:20] jelveh has joined the channel [12:21] javajunky: BryanWB: yeah, thats cool, a lot of people do (I would do it myself if there was something that shipped outta the box with node..but we know thats not going to happen ) ;) [12:23] _announcer: Twitter: "Comet with node.js and V8 http://slidesha.re/cMVFa9" -- Ahmad Gozali. http://twitter.com/gozali/status/21659949303 [12:25] _announcer: Twitter: "@ericflo I'm interested to find out why node.js leaves a bad taste in your mouth. Is it the community? The hype? The JavaScript?" -- Colin Gourlay. http://twitter.com/login_required/status/21660091908 [12:27] _announcer: Twitter: "Clientside and serverside, building it all javascript! #senchatouch and #nodejs I love it!" -- Jeroen van Duffelen. http://twitter.com/jeroenvduffelen/status/21660179595 [12:28] _announcer: Twitter: "New interests: Google V8 & Node.js" -- Pavel Pavlenko. http://twitter.com/pavlik/status/21660288351 [12:28] aglemann has joined the channel [12:29] _announcer: Twitter: "Web-development / Released Node.js v0.2.0 http://bit.ly/bbbo29" [be] -- Web Developer. http://twitter.com/web_codex/status/21660337608 [12:33] voxpelli has joined the channel [12:34] tpryme has joined the channel [12:34] tpryme has left the channel [12:35] _announcer: Twitter: "Just realized that geekcamp's 2 weeks away. Time to get my presentation for node.js in place." -- Kenny Shen. http://twitter.com/kenny_shen/status/21660710871 [12:38] _announcer: Twitter: "Coding for NodeJS with loads of GitHub dependencies is fun in much the same way that taming wild dragons is." -- Robin Berjon. http://twitter.com/robinberjon/status/21660865038 [12:38] alcuadrado has joined the channel [12:38] pr0cy0n has joined the channel [12:39] _announcer: Twitter: "Updating my local portfile to get Node.js 0.2 in #Macports http://bit.ly/9Q7thw" -- Pepijn de Vos. http://twitter.com/pepijndevos/status/21660935747 [12:41] _announcer: Twitter: "In my opinion it node.js megakruto. Raise a host on the Mac and try! Pity hostings supporting it yet. Only Heroku mode test" [ru] -- Pavel Pavlenko. http://twitter.com/pavlik/status/21661081057 [12:42] voxpelli has joined the channel [12:42] feroz_ has joined the channel [12:42] nerdEd has joined the channel [12:43] _announcer: Twitter: "as you bunch node.js + MongoDb?" [be] -- Pavel Pavlenko. http://twitter.com/pavlik/status/21661239501 [12:45] stepheneb has joined the channel [12:47] s0enke has joined the channel [12:49] voxpelli has joined the channel [12:51] stagas has joined the channel [12:53] astrolin_ has joined the channel [12:54] fod has joined the channel [12:56] matt_c has joined the channel [12:56] stagas_ has joined the channel [13:00] RedMike has joined the channel [13:02] RedMike has joined the channel [13:02] _announcer: Twitter: "#nodejs 0.2.0 released! @ryah hopes to maintain API compatibility through the 0.2.x series! HOLD ME. http://is.gd/erqk1" -- Jeff Waugh. http://twitter.com/jdub/status/21662459479 [13:04] _announcer: Twitter: "Web razrabotka / Vyšla Node.js v0.2.0 http://sy.ly/FDg Habr # # # Russia Novosti news # # ru" [hr] -- Tech News. http://twitter.com/technewsru/status/21662549780 [13:06] charlesjolley- has joined the channel [13:06] shreekavi has left the channel [13:07] rkieffer has joined the channel [13:08] rkieffer: Does node expose the current OS/CPU information anywhere? [13:09] mjijackson has joined the channel [13:12] jtsnow has joined the channel [13:13] mscdex: rkieffer: OS, yes. process.platform [13:13] mtodd has joined the channel [13:15] SvenDowideit has joined the channel [13:17] charlesjolley- has joined the channel [13:22] daleharvey has joined the channel [13:22] dnolen_ has joined the channel [13:24] _announcer: Twitter: "Last night and this afternoon what nodejs played. Nice toys:)" [nl] -- Michiel H.. http://twitter.com/michh37/status/21663943073 [13:25] Gruni has joined the channel [13:26] sztanphet has joined the channel [13:26] _announcer: Twitter: "twitter today is like your senile friend that just discovered there's a nodejs google group - again, and again, and again.." -- Torgeir. http://twitter.com/torgeir/status/21664093840 [13:27] Egbert9e9 has joined the channel [13:28] codemariner has joined the channel [13:28] ceej has joined the channel [13:29] aheckmann has joined the channel [13:30] hsuh has joined the channel [13:30] SamuraiJack_ has joined the channel [13:33] ker2x: i'm trying to install node-mongodb but i have an error i don't understand :( [13:33] wink_: ker2x_: what is it? [13:33] ker2x: 2mn, i pastebin [13:34] _announcer: Twitter: "Javascript server Node.js moves to 0.2.0 - The H http://bit.ly/96mTxP" -- Dedicatedserverdir. http://twitter.com/serverdir/status/21664622986 [13:34] ker2x: http://pastebin.com/Swbc4EVq [13:34] ker2x: here it is [13:34] wink_: did you already build the mongo c driver? [13:35] wink_: because it looks like your c driver is 32 bit and you're on a 64 bit machine [13:35] ker2x: i executed update-mongo-c-driver.sh [13:35] wink_: 1 sec [13:36] zapnap has joined the channel [13:37] wink_: ker2x: open mongo-c-driver/SConstruct you'll see env.Append( CPPFLAGS=" -O3" ) [13:37] wink_: change that to env.Append( CPPFLAGS=" -O3 -fPIC" ) [13:37] wink_: and rebuild [13:38] tmpvar has joined the channel [13:38] ker2x: 'build' finished successfully (0.250s) [13:38] BryanWB: javajunky, do you know the difference b/w session and sessisonStore in express? [13:38] ker2x: thx :) :) [13:39] omarkj has joined the channel [13:39] hpoydar has joined the channel [13:41] sztanphet has joined the channel [13:45] herbySk: quick question: how to check if teo handles in v8 point to the identical object? == is enough? [13:45] herbySk: s/teo/two/ [13:45] wattz: ahh, top of da mern'n tew ya [13:47] _announcer: Twitter: ""a git based blogging engine written in node.JS." That sounds so hip http://github.com/creationix/wheat" -- Kfir Breger. http://twitter.com/kfirbreger/status/21665569195 [13:47] stagas has joined the channel [13:51] nerdEd has joined the channel [13:51] javajunky: BryanWB: yeah session is the middleware, sessionstore is where sessions are actually stored, i.e. in memory, or in mongo or couch etc. etc. [13:52] kodisha has joined the channel [13:53] BryanWB: javajunky, hmm, should user credentials be stored in req.session or req.sessionStore? like req.session.name = "foo" [13:54] BryanWB: and req.session.isAuthenticated = true [13:54] astrolin_ has joined the channel [13:56] javajunky: BryanWB: well as it happens I'm moving all the auht off the session ..or rather it won't depend on the session being there.. .. I'm following hassox' warden model .. there are auth cases where you don't require a session at all [13:56] javajunky: so the request is the natural place to put it… there is req.isAuthenticated() for example.. and to get the credentials there's req.getAuthDetails() [13:57] javajunky: but anything you put in 'session'… should end up in sessionStore, but that should really be transparent to you ... [13:57] maushu: I never checked. [13:57] maushu: I node.js ipv6 compatible? [13:58] BryanWB: javajunky, and getAuthDetails would return an object w/ username property? [13:59] javajunky: it returns whatever you pass to the 'success' method [13:59] javajunky: conventionally most of the strategies supply at least and 'id' and 'name' property I think [13:59] javajunky: (sorry to be clear this is how it *currently* does work ...) [13:59] markwubben has joined the channel [14:00] BryanWB: javajunky, sure id + name, atm my crappy app just has names ;) [14:00] javajunky: well its up to you as a strategy provider + consumer to put in whatever you want, if you don't want an id, s'cool.. [14:00] matt_c has joined the channel [14:01] BryanWB: i want id's but I need to get some basic functionality working first [14:01] robotarmy has joined the channel [14:03] javajunky: so , whatever you pass to success({}) will be available in req.getAuthDetails().user [14:03] femtoo has joined the channel [14:03] BryanWB: javajunky, hmm, so should I use something like Math.random()*50 for the id? [14:04] BryanWB: sorry am a webdev n00b [14:05] BryanWB: better yet parseInt(Math.random()*500000) [14:06] digitalspaghetti: parseInt(Math.random()*500000, 10); [14:06] digitalspaghetti: parseInt is funny one, the second parameter ensures it's base 10 [14:06] ryan_gahl has joined the channel [14:06] _announcer: Twitter: "Okay, enough. Now 6k+ on treadmill before a weekend of coding (#FrontEnd 2010 prep, some #WP7 and perhaps a dash of Ruby or node.js)" -- Jonas Follesø. http://twitter.com/follesoe/status/21666996647 [14:06] BryanWB: digitalspaghetti, ah good to know [14:07] digitalspaghetti: http://jehiah.cz/archive/javascript-parseint-is-broken explains why :) [14:08] digitalspaghetti: it's not always needed, but safter to pass than not. Also, Math.random is too much entropy, you have a good chance of getting a repeat ID even at 500,000 [14:08] javajunky: BryanWB: you can do whatever you wish for your id :) max_id++ will probably be fine. [14:08] javajunky: it depends on whether you expose the id outside of your app to determine if it matters! [14:09] digitalspaghetti: if you don't need a numerical ID, better to go with a UUID [14:09] digitalspaghetti: numerical ID's work best for auto incremented stuff, UUIDs or a MD5 hash for random ID's [14:10] SamuraiJack__ has joined the channel [14:10] BryanWB: digitalspaghetti, um uuid is same as globally unique id right? [14:10] javajunky: BryanWB: similar ;) [14:13] stagas has joined the channel [14:13] digitalspaghetti: GUID tends to be M$'s defenition, UUID is more generic [14:14] ThePub has joined the channel [14:15] SubStack: I would use Math.floor there [14:15] SubStack: instead of parseInt [14:15] SubStack: parseInt feels icky [14:16] _announcer: Twitter: "NodeJS, the web server in JavaScript: http://nodejs.org/" -- jQuery Pittsburgh. http://twitter.com/jquerypgh/status/21667665376 [14:16] wattz: I see a jsdocs for narwhal, has anyone done one for node yet? [14:17] _announcer: Twitter: "Node.js you finally release 0.2.0 of the ..." [zh-CN] -- aki. http://twitter.com/aki_xavier/status/21667741515 [14:17] pgriess has joined the channel [14:18] mscdex: BryanWB: uuid isn't global, it's universal :p [14:19] BryanWB: mscdex, now we're getting spiritual :p [14:19] SubStack: node> var ps = []; for (var j = 0; j < 10; j++) { var i = 0; var ids = {}; while (true) { var id = Math.floor(Math.random()*50000); if (id in ids) break; ids[id] = 1; i++ }; ps.push(i) } ps [14:19] mscdex: guid is global though ;-) [14:19] SubStack: [ 276, 355, 244, 194, 154, 63, 136, 373, 145, 439 ] [14:19] SubStack: neat [14:19] SubStack: go go gadget conditional probability [14:19] mscdex: isn't "in" slow? [14:20] _announcer: Twitter: "0.2.0 IP Meng! RT @ aki_xavier Node.js you finally release 0.2.0 of the ..." [zh-CN] -- 暁暁. http://twitter.com/xiao99xiao/status/21667971562 [14:20] SubStack: isn't javascript slow? [14:20] mscdex: not compared to typeof ids[id] === 'undefined' [14:20] mscdex: or similar [14:20] SubStack: but that is a lot of typing [14:20] wattz: "in" is slow with an item count over about 12 [14:20] wattz: in my experience [14:21] mscdex: wattz your experience? [14:21] SubStack: this calls for experiment [14:21] _announcer: Twitter: "Yan text か よ. RT @ xiao99xiao 0.2.0 excited Meng! RT @ aki_xavier Node.js you finally release 0.2.0 of the ..." [zh-CN] -- bluebug. http://twitter.com/ernix/status/21668030624 [14:21] wattz: mscdex: we have HUGE catalogs that we pull from webservices [14:21] wattz: to a json object [14:21] mscdex: SubStack: experiments/benchmarks have already been done, check the recent ML thread on it [14:21] dylang has joined the channel [14:21] wattz: 500+ items per request [14:21] wattz: and you could notice a bit of slower performance from "in" [14:21] Tim_Smart: for increment loops ftw. [14:21] mscdex: ++i ! [14:21] SubStack: pfft [14:22] _announcer: Twitter: "#nodejs v0.2.0 released http://nodejs.org/docs/v0.2.0/changelog.html" -- Scot Gellock. http://twitter.com/sgellock/status/21668142807 [14:23] wattz: but good js is actually pretty fast [14:23] jetienne_ has joined the channel [14:23] SubStack: node> var hash = {}; for (var i = 0; i < 100000; i++) hash[i] = 1; var t0 = Date.now(); for (var i = 0; i < 100000; i++) i in hash; (Date.now() - t0) / 1000 [14:23] SubStack: 0.015 [14:24] mscdex: fwiw: http://jsperf.com/object-availability/5 [14:24] _announcer: Twitter: "Having a #nodejs workshop with @pastith @chstath @nkapra" -- Dionysios Synodinos. http://twitter.com/synodinos/status/21668252279 [14:24] SubStack: node> var hash = {}; for (var i = 0; i < 100000; i++) hash[i] = 1; var t0 = Date.now(); for (var i = 0; i < 100000; i++) typeof hash[i] == 'undefined'; (Date.now() - t0) / 1000 [14:24] SubStack: 0.003 [14:24] felixge has joined the channel [14:24] felixge: maushu: I had to come back again to thank you for the quadtree idea :) [14:24] zemanel has joined the channel [14:25] felixge: maushu: it takes 0.13ms to filter through 1000 items in JS :) [14:25] SubStack: === undefined is 0.004 [14:25] jetienne_: this kind of optimisation should not be done by human but compilers [14:25] SubStack: jetienne_: agree [14:25] felixge: maushu: no more ajax reloads for this map :) [14:25] ajpiano has joined the channel [14:26] maushu: :p [14:26] mscdex: SubStack: what about typeof === 'undefined' ? [14:26] _announcer: Twitter: "My github news feed is pretty much just a node.js news feed at this point. http://flic.kr/p/8tSGVn" -- Zach Waugh. http://twitter.com/zachwaugh/status/21668448898 [14:26] SubStack: mscdex ? [14:26] matt_c has joined the channel [14:27] _announcer: Twitter: "I found myself being node.js of v0.2.0 released! ? I have to update" [ja] -- こば@変人生徒会長. http://twitter.com/KOBA789/status/21668460078 [14:27] mscdex: SubStack: in your code there [14:27] SubStack: typeof hash[i] === undefined? [14:27] mscdex: yes [14:27] mscdex: no [14:27] SubStack: typeof is a string [14:27] mscdex: 'undefined' [14:27] nerdEd has joined the channel [14:27] SubStack: s/is/returns/ [14:27] SubStack: mscdex: already did that [14:27] SubStack: see above [14:27] mscdex: strong equals? [14:28] SubStack: oh [14:28] SubStack: 0.004 [14:28] SubStack: for typeof hash[i] === 'undefined' [14:28] devewm has joined the channel [14:28] mscdex: ok [14:28] devewm has left the channel [14:28] SubStack: same as == pretty much [14:28] devewm has joined the channel [14:28] mscdex: that's strange, because from my testing === 'undefined' actually performed better than == 'undefined' [14:29] Somebi has joined the channel [14:29] SubStack: there's not enough precision to see it [14:29] Somebi: hello everyone [14:29] Somebi: it's nodejs channel right? :) [14:29] mscdex: Somebi: yep [14:29] Somebi: nice [14:29] keeto has joined the channel [14:29] SubStack: I want a better Date.now() [14:29] Somebi: so much people O_o [14:29] Somebi: great [14:30] mscdex: i want a coffee [14:30] SubStack: hmmm [14:30] SubStack: ACTION brews one of those [14:30] mscdex: how about a better coffee.now() ? ;-) [14:30] Somebi: ACTION impressed by nodejs [14:30] Somebi: :) [14:30] SubStack: in other news, my last day in fairbanks today! [14:30] SubStack: I will be in the SF area with the rest of you hipsters soon enough [14:31] mscdex: heh [14:31] mscdex: not i [14:31] mscdex: the only javascript meetup around here got cancelled this month because of too few people lol [14:31] FransWillem: Hey, would you guys be so kind to review some of my code: http://github.com/Frans-Willem/node-AHParser [14:31] mscdex: and there's hardly anyone in it [14:31] mscdex: so sad [14:32] mscdex: FransWillem: like how? [14:32] FransWillem: mscdex: Style-wise, maybe play with it if it interests you. [14:32] FransWillem: Its an implementation of one of the fastest find-multiple-words-in-a-string algorithms [14:32] BryanWB: mscdex, u could have it worse [14:32] FransWillem: I plan to use it to write a better readline, and use this to extract all the escape sequences properly. [14:33] mscdex: FransWillem: as long as there's no comma first and you use semicolons, it's all good as far as i'm concerned ;p [14:33] SubStack: yeah fuck leading commas [14:33] FransWillem: ? [14:33] FransWillem: leading commas ? [14:33] SubStack: [1 [14:33] SubStack: ,2] [14:33] SubStack: like that [14:34] FransWillem: Ah, ok [14:34] BryanWB: javajunky, how do i pass options to an authentication strategy? [14:35] FransWillem: Do you think it'd be acceptable to have this class added to the Node.js source (in the readline): http://github.com/Frans-Willem/node-AHParser/blob/master/AhoCorasickParser.js [14:35] FransWillem: ? [14:35] BryanWB: require('./mystrategy', arg1, argn)? [14:35] ben_alman has joined the channel [14:36] bradleymeck has joined the channel [14:36] stagas has joined the channel [14:37] BryanWB: require('./mystrategy')({options})? [14:37] kodisha has joined the channel [14:37] SubStack: I don't like how the node readline won't let me delete up to a marker with stupid vi tricks [14:37] _announcer: Twitter: "http://github.com/mikeal/npm/blob/master/lib/utils/semver.js found a semver parsing in nodejs. thx @mikeal" -- Jerome Etienne. http://twitter.com/jerome_etienne/status/21669257082 [14:38] SubStack: esc-d[tf] stuff [14:38] javajunky: BryanWB: the latter will work. [14:38] javajunky: (but I generally do my requires further up ) [14:38] stepheneb has joined the channel [14:38] SubStack: jumping around with t and f in command mode works fine though [14:39] FransWillem: SubStack: the readline is severly lacking, so I set out to re-write it. [14:39] nerdEd_ has joined the channel [14:39] SubStack: excellent [14:39] FransWillem: SubStack: Mostly I'd want it to be able to cope with streaming data, instead of just assuming every buffer is one keypress [14:39] SubStack: does it look at ~/.inputrc? [14:39] FransWillem: Not atm [14:40] SubStack: oh that too [14:40] SubStack: can it do node <<< "console.log('moo')" [14:40] FransWillem: SubStack: And using that algorithm I posted earlier, it should be rather easy to generate an automaton to do the parsing bit :) [14:41] _announcer: Twitter: "South, node.js 0.2.0! http://bit.ly/bZuGIR" [sk] -- Matthias Bauer. http://twitter.com/moeffju/status/21669507853 [14:42] SubStack: I want a readline that reads my brainwaves to determine intent [14:42] FransWillem: Does anyone know if ryah responds to e-mails ? [14:42] bradleymeck: he does [14:42] bradleymeck: he gets tons though [14:45] markwubben has joined the channel [14:46] loincloth has joined the channel [14:47] vnaren has joined the channel [14:47] jMCg: How do I build Node.js with a specific version of OpenSSL, residing in /opt/bw ? [14:47] vnaren: i am getting openssl error when i try to compile new build - AttributeError: Values instance has no attribute 'use_openssl' [14:47] herbySk: ryah: ayt? [14:47] vnaren: i have the latest openssl installed [14:47] nefD has joined the channel [14:51] aurynn: what's new in 0.2? [14:52] jetienne has joined the channel [14:52] daleharvey has joined the channel [14:52] sudoer has joined the channel [14:53] JAAulde has joined the channel [14:53] JAAulde: Anyone know if there is a command line based JSLint that relies on Node.js instead of Rhino ( http://www.jslint.com/rhino/ )? [14:54] JAAulde: I found one version, but it runs JSLint as if I am writing code for Node--with predefined vars and settings already configured [14:54] JAAulde: I just want to run a generic JSLint with Node as the JS engine rather than Rhino [14:54] jetienne: qunit in node.js ... anybody with spare time ? [14:54] BryanWB: javajunky, does executionScope.success( {name:request.body.user}, callback ) set req.name to the value of request.body.user? [14:55] _announcer: Twitter: "Showing new node.js visualizations, getting ready to launch new app all while waiting for clients to arrive. #toth" -- Andrew Kolesnikov. http://twitter.com/truthvalue/status/21670499958 [14:55] gwoo has joined the channel [14:55] marshall_law has joined the channel [14:56] bradleymeck: jaaulde, if you can get me the uncompressed source i can look at a port, seems somewhat sane [14:56] _announcer: Twitter: "Really pleased to see the 0.2 node.js release today, I expect a stable branch will now be supported... good news for production use :)" -- Caolan McMahon. http://twitter.com/caolan/status/21670622989 [14:56] marshall_law_ has joined the channel [14:57] CrzayGoogle: have a nice day, cu [14:57] steadicat has joined the channel [14:57] Yuffster has joined the channel [14:58] JAAulde: bradleymeck: ok, i will take a look around [14:59] zomgbie has joined the channel [15:00] Somebi has joined the channel [15:00] BryanWB_ has joined the channel [15:00] JAAulde: bradleymeck: http://www.jslint.com/fulljslint.js [15:00] bradleymeck: i must say jslint's code (found it) is not very portable [15:00] bradleymeck: or hackable [15:00] bradleymeck: but give me a while [15:01] JAAulde: bradleymeck: there are rhino and wsh versions out there...not sure if looking at how he wrapped the core for them would help [15:01] _announcer: Twitter: "Node.js knew that guy. want to write javascript in server. I'm quite well done. http://nodejs.org/" [ja] -- atshushi. http://twitter.com/kumazaku/status/21670962093 [15:01] JimBastard has joined the channel [15:01] bradleymeck: he hard coded them into the core [15:01] JimBastard: yes yes yes! nodejitsu just got its first round of funding wooooooot [15:01] bradleymeck: nice [15:01] JimBastard: i start work fulltime at nodejitsu today [15:02] bradleymeck: i still want to buy myself an account sometime [15:02] JimBastard: jaaaaaaaaaaaaavvvvvvvvvvvvvvvaaaaaaaaaaaaaaaaaaaaascript [15:02] bradleymeck: no more ruby pairs? [15:02] JimBastard: not anytime soon [15:02] JimBastard: :-) [15:03] JAAulde: bradleymeck: yeah, it's weird... looking at http://www.jslint.com/wsh/ and the wsh script source, it doesn't seem like params can be given [15:03] astrolin has joined the channel [15:04] BryanWB_: javajunky, so does the success method normally populate req.name w/ req.body.user ? [15:04] stepheneb has joined the channel [15:04] JAAulde: bradleymeck: http://github.com/reid/node-jslint this might help since it is the one that says it is passing node specific cettings [15:04] bradleymeck: jslint is special in my book [15:04] JAAulde: s/cettings/settings/ [15:04] EyePulp has joined the channel [15:06] softdrink has joined the channel [15:07] EyePulp: sorry if this is old news, just wondering if node is SSL capable? [15:07] EyePulp: ahh - using openssl? [15:08] javajunky: BryanWB_: um, not sure I know what you mean… the success method wouldn't no, as that would be highly specific to a strategy that expects those parameter on the post [15:09] _announcer: Twitter: "But low-level language specification Node.js JavaScript, C're made of. Want to be so inter-process communication and system calls. Http://bit.ly/byqhnw're pretty good reference site" [ja] -- atshushi. http://twitter.com/kumazaku/status/21671556103 [15:09] bradleymeck: eyepulp, yes [15:09] zemanel has joined the channel [15:11] EyePulp: what's the process for getting a node server to use a cert? [15:11] bronson has joined the channel [15:12] EyePulp: (if that question makes sense =) [15:12] marek_z has joined the channel [15:12] danielzilla has joined the channel [15:12] ajpiano has joined the channel [15:13] jamescarr_ has joined the channel [15:13] stalled has joined the channel [15:13] ajpiano has joined the channel [15:13] Jimmy203 has joined the channel [15:14] bradleymeck: ummm there was a blog post on that somewhere [15:14] webr3 has joined the channel [15:15] bradleymeck: once you have a pem it goes to the crypto module, then you pass the createCert to createServer if i remember right [15:16] Jimmy203: can someone confirm if this is the write way to return results from mongo using mongoose - http://pastebin.com/P7wMzjJQ [15:17] _announcer: Twitter: "Javascript server moves to 0.2.0 http://dlvr.it/42YrX Node.js # opensource" [id] -- Free Software News. http://twitter.com/EntOpenSource/status/21672160636 [15:18] eazyigz has joined the channel [15:19] rixius has joined the channel [15:19] pr0cy0n has joined the channel [15:20] Jimmy203: anyone? [15:20] JimBastard: Jimmy203 you might have to have a little patience [15:20] bradleymeck: guess most of us arent using mongoose [15:20] JimBastard: mongoose is just a project, nothing to do with node.js core [15:21] JimBastard: is that rauchg's thing [15:21] JimBastard: ? [15:21] herbySk: hello, v8 coders around? [15:21] Jimmy203: yep [15:21] devewm has joined the channel [15:21] Jimmy203: rauchg is usually here. [15:21] JimBastard: usually yeah [15:21] JimBastard: i refuse to use mongodb anyway [15:21] Jimmy203: any reason why? [15:21] Jimmy203: I`m new to mongodb [15:21] JimBastard: mikeal said its bad, plus the mongodb chicks arent that hot [15:22] JimBastard: you should do couch [15:22] wink_: stop hating on mongo [15:22] wink_: :> [15:22] pzich has joined the channel [15:22] Jimmy203: why is couch better than mongo? [15:22] JimBastard: hey wink_ , i dont go down to the bus station and tell you how to whipe the pee of the seats, caus thats what you do [15:22] JimBastard: Jimmy203: there was a blog post the other day actually, let me see if i can find it [15:22] SubStack: I want an object graph that can also serialize functions and function state [15:22] Jimmy203: thanks :) [15:23] wink_: dont listen to the blog hate jimmy [15:23] wink_: but make sure you replicate [15:23] wink_: :p [15:23] aurynn: ACTION uses an RDBMS [15:23] Jimmy203: Itsstill early days for me and my project so want to read up and find whats the best path for me to take [15:23] bradleymeck: jaaulde, http://gist.github.com/540535 , gives you a generic jslint, can pass it the 'node' option to enable node predefined vars, otherwise acts like normal JSLINT [15:23] SubStack: aurynn: how unfashionable [15:24] bradleymeck: herbySk whatcha need? [15:24] JimBastard: ahhh rdbms, how quaint [15:24] aurynn: Eh, it gets the job done, and I understand how to normalize my data [15:24] JAAulde: bradleymeck: cool, taking a look. Thanks! [15:24] JimBastard: aurynn: what happens when your schema changes [15:24] wink_: im not sure why everyone acts like choosing one is mutually exclusive to choosing another :p [15:24] herbySk: bradleymeck: I'd like to DRY some code and I don't know if I can do an 'extract method' which uses some Handles [15:24] bradleymeck: only reason i prefer mongo is the sub-object searching built in [15:24] aurynn: JimBastard, I plan my deploys carefully and take advantage of Postgres' transactional DDL [15:24] herbySk: all this HandleScopr thing [15:25] bradleymeck: not sure i understand [15:27] herbySk: bradleymeck: I've git a long function which uses its HandleScope, and there are pattern of code which is repeated, so I'd like to extract it to a function and call it. This is the portion: [15:27] herbySk: keys = sandbox->GetPropertyNames(); [15:27] herbySk: for (i = 0; i < keys->Length(); i++) { [15:27] herbySk: Handle key = keys->Get(Integer::New(i))->ToString(); [15:27] herbySk: Handle value = sandbox->Get(key); [15:27] herbySk: if (value == sandbox) { value = context->Global(); } [15:27] herbySk: context->Global()->Set(key, value); [15:27] herbySk: } [15:27] herbySk: } [15:28] herbySk: There's something very similar later, so I'd like to make it fyunction with arguments. But, the code uses Handle<....> var = .... [15:28] JAAulde: bradleymeck: so do I run that like: node jslint.node.js fileToLine.js [15:28] JAAulde: ? [15:28] herbySk: So i don't know if it doesn't break with HandleScopes etc. [15:28] bradleymeck: jaaulde, its just a module it doesnt do that, but i can change it to work like that one sec [15:28] herbySk: (sorry for paste, I could have used gist... :-/ ) [15:29] tisba_ has joined the channel [15:29] BryanWB_: javajunky, http://github.com/bryanwb/undone/blob/master/myFirstFormStrategy.js#L19 [15:29] bradleymeck: herbysk, its not recommended to do that, there is a chance it will break [15:30] BryanWB_: i keep getting the error "executionScope has no method success" [15:30] javajunky: BryanWB_: ah, yes the scope is err complex.. I optimised the scope for strategy consumers not strategy providers ;) [15:30] javajunky: what line's throwing that error [15:30] BryanWB_: javajunky, 19 [15:30] herbySk: bradleymeck: unless I have own HandleScope in the extracted function, isn't it? But there's no reason to extract that small thing and create additonal HandleScope... [15:30] elliottkember has joined the channel [15:30] aurynn: JimBastard, without transactional DDL, though, it'd be a huge pain to handle [15:30] bradleymeck: yes that works [15:30] BryanWB_: doesn't the authentication strategy inherit the success method? [15:31] JimBastard: aurynn: id imagine. schema migration suck in general [15:31] JimBastard: not to mention all the code updates, if you dont have a proper orm [15:31] bradleymeck: whenever working with handles have a handlescope above them [15:31] aurynn: JimBastard, but, being able to ROLLBACK all your ALTER statements? Gorgeous. [15:31] bradleymeck: always [15:31] aurynn: JimBastard, I haven't had a problem just changing the SQL [15:32] JAAulde: bradleymeck: not to be a PITA, but do you envision the node-lint script taking params to define what should be checked, etc? [15:32] bradleymeck: you would need to give me a writeup of what you want [15:32] aurynn: but I don't use ORMs [15:32] javajunky: BryanWB_: yeah, inheritance..a little thorny that in JAvascript.. although what you've got there seems ok.. [15:33] JAAulde: bradleymeck: i hate to ask you for so much when I should probably sit down and hack it out [15:33] bradleymeck: write me a spec, im almost done w/ command line [15:33] JAAulde: ok [15:33] javajunky: BryanWB_: I would totally expect that code to work [15:34] BryanWB has joined the channel [15:35] BryanWB: javajunky, sorry dropped out [15:35] javajunky: BryanWB: I was saying that code should work totally [15:35] javajunky: and also inheritance is a little thorny in Javascript [15:35] javajunky: oh ffs. [15:36] matt_c_ has joined the channel [15:37] kriszyp has joined the channel [15:37] BryanWB: javajunky, argh it doesn't work [15:38] stagas_ has joined the channel [15:38] TS_ has joined the channel [15:38] BryanWB: javajunky, do u think the node debugger would be helpful in this case? I might have to try that out [15:38] EyePulp: bradleymeck: thanks for the ssl tidbits earlier - was on the phone, being angry. [15:38] BryanWB: bbiab [15:38] JAAulde: bradleymeck: honestly, I don't even know what to ask you for. Ideally, I would like a script that can be run from the command line with flags which correspond to the form below the code area on jslint.com for configuration of how the checks are done. an opition to output error text or just return bool pass/fail would be cool too [15:39] [[zz]] has joined the channel [15:39] JAAulde: bradleymeck: but i don't want to eat up a bunch of your time, so please don't kill yourself producing such a thing [15:39] bradleymeck: k, write up the names of the flags, ive got the rest pretty much done [15:39] javajunky: BryanWB: tbh I'd just console.log(require('sys').inspect(this)) and make sure the method is really present… . [15:39] stellar has joined the channel [15:42] stellar has joined the channel [15:44] davidwalsh has joined the channel [15:45] _announcer: Twitter: "@nodejsbot why did nodejs get rid of futures, and what did it replace it with?" -- A'braham Barakhyahu. http://twitter.com/BlessYahu/status/21674197497 [15:45] _announcer: Twitter: "@technoweenie Have people been taking you up on Github's offer to host during the Node.js knockout weekend?" -- ecin krispie. http://twitter.com/ecin/status/21674206838 [15:47] jetienne: hehe he makes them bid :) [15:47] bradleymeck: futures? [15:49] mscdex: EyePulp: there's a setSecure method that takes in cert info and other things [15:49] CIA-77: node: 03Ryan Dahl 07master * r7fc794a 10/ doc/api.markdown : Fix default encoding in docs - http://bit.ly/cUbnEw [15:49] mscdex: bradleymeck: more or less promises [15:50] mattikus has joined the channel [15:50] mscdex: that reminds me, i thought we were getting new html docs for 0.2.0? :p [15:51] BryanWB: javajunky, here are the properties of execution scope { name: 'someName', authenticate: [Function] } [15:51] ryah: mscdex: don't want to wait any longer [15:52] ryah: they're not ready - unclear future [15:52] mscdex: :S [15:52] ryah: but i want to move forward [15:52] ryah: mostly i want to break the API in the future :) [15:52] cloudhead has joined the channel [15:52] ryah: so im drawing a line in the sand [15:52] BryanWB: javajunky, but note that I am not using a setUpRoutes method like your example does [15:53] javajunky: BryanWB: thats odd. [15:53] EyePulp: mscdex: cool - I'll do some reading on that [15:53] devinus has joined the channel [15:54] javajunky: BryanWB: and 'this' when inside of that.authenticate ? [15:54] BryanWB: javajunky, does the my auth strategy inherit success() or does the request object inherit success? [15:54] BryanWB: javajunky, yes [15:54] javajunky: really ? [15:54] javajunky: wtf [15:54] BryanWB: javajunky, it is probably something wrong in my code [15:54] javajunky: I don't see how it can be [15:54] nerdEd has joined the channel [15:54] matt_c: ACTION pulls and runs make for 0.2.x hotness. [15:55] herbySk: ryah: have a little time? [15:55] javajunky: BryanWB: everything looks right . [15:57] dylang: any d.js users? node 0.2 killed my dj. as of 0.2 i'm now getting an infinite loops on a regex. [15:57] ker2x has left the channel [15:57] pr0cy0n has left the channel [15:58] BryanWB: javajunky, is the auth strategy supposed to inherit the success method? [15:58] nerdEd_ has joined the channel [15:58] ironfroggy: I have gotten most of my Socket.IO problems fixed, but now I'm having trouble with WebSocket connecting on Firefox 3.6 and xhr-polling disconnects if it ry to use that instead. everything is fine on chrome. [15:58] ironfroggy: are there known issues here? [16:00] javajunky: BryanWB: I've cloned your code and it seems ok to me ? [16:00] _announcer: Twitter: "http://bit.ly/aIHLc5 ★ Mysql for NodeJs ! #node #mysql" -- François-G. Ribreau. http://twitter.com/FGRibreau/status/21675326666 [16:00] BryanWB: javajunky, does it work for you if u try to log on w/ username: bwb, passwd: foo ? [16:01] mscdex: ryah: yeah but the layout of the docs wouldn't change, just the content [16:01] JAAulde: bradleymeck: the options spec is actually on crockford's site: http://www.jslint.com/lint.html#options [16:02] JAAulde: bradleymeck: having a way to set up the options object or comment via command line flags would be ideal [16:02] bradleymeck: ive got that, checking his spec to what i have [16:03] javajunky: BryanWB: no, cos I've not got nstore etc. [16:03] mjr_ has joined the channel [16:03] BryanWB: javajunky, it is bundled w/ the repo [16:04] danielzilla has joined the channel [16:04] javajunky: but if replace the contents of validateCredentials executionScope.fail(callback); then it works ok [16:04] javajunky: so the scope looks fine [16:05] javajunky: your checked in file doesn't declare the 'store' option of the strategy [16:06] BryanWB: javajunky, store is declared here http://github.com/bryanwb/undone/blob/master/myFirstFormStrategy.js#L4 [16:06] BryanWB: javajunky, what should I replace? [16:07] dylang: EyePulp: did you ever get d.js to work again? [16:07] proppy: d.js ? [16:07] EyePulp: dylang: I totally did! it was very exciting. [16:08] dylang: proppy: node DJ - it auto-restarts node when you make changes to your js. [16:08] amerine has joined the channel [16:08] dylang: EyePulp: i upgraded to node 0.2 and now mine is broken. i traced it to the regex search for require. what was your problem and how did you fix it? [16:08] bpot has joined the channel [16:08] hsuh has joined the channel [16:08] bradleymeck: hey whats the easiest way to return the source of the executing file? [16:08] proppy: dylang: sounds hot ! [16:09] EyePulp: yep! I moved the regex scope outside of the while() and it works again [16:09] dylang: EyePulp: ha, how about that. trying now... [16:10] EyePulp: dylang: hang on, I'll post [16:10] dylang: EyePulp: excellent, thanks [16:10] nerdEd has joined the channel [16:11] hpoydar has joined the channel [16:11] proppy: dylang: how does it affect setTimeout function call ? [16:11] EyePulp: dylang: http://pastie.textmate.org/private/lei2tbqda9s7h7zhd3mq4g [16:11] hpoydar_ has joined the channel [16:11] proppy: does it actually restart node, or just reload the code ? [16:12] benburkert has joined the channel [16:12] dylang: EyePulp: awesome, that worked. [16:13] dylang: proppy: it spawns a second node process and restarts that process when it detects changes to your js [16:13] zemanel has joined the channel [16:13] EyePulp: dylang: tons of console.log() messages in there - sorry [16:13] BryanWB: javajunky, i don't think my auth strategy is inheriting anything from connect-auth [16:13] dylang: EyePulp: no prob, just grabbed the lines i needed [16:13] robotarmy has joined the channel [16:14] claudiu__ has joined the channel [16:15] EyePulp: dylang: cool [16:15] claudiu__ has joined the channel [16:15] EyePulp: I'm glad it's working again. proppy - try it out, it's good stuff [16:16] rkieffer has joined the channel [16:16] proppy: npm packages ? [16:16] joshowens has joined the channel [16:17] Ori_P has joined the channel [16:17] proppy: found it http://github.com/lrbabe/node-DJs [16:17] dylang: sadly dj isn't in npm. and the build on git hasn't been touched in a while. [16:17] proppy: I like the --test thing ! [16:18] dylang: i haven't tried --test. i must be missing out. [16:19] aubergine has joined the channel [16:20] javajunky: BryanWB: but you never set options.store ;) [16:20] EyePulp: I wrote the author (lrbabe?) a few days ago - no response [16:20] EyePulp: maybe I should... fork it? [16:20] javajunky: BryanWB: the 'inheritance' is ok here (weirdly) [16:20] EyePulp: ACTION is leery of calling anything he does fit for human consumption [16:22] voodootikigod has joined the channel [16:24] tj_ has joined the channel [16:25] dylang: EyePulp: i feel the same way.... but maybe i'll do it anyway. would be nice to have a working version on github. [16:26] EyePulp: agreed [16:27] eazyigz has joined the channel [16:28] Ori_P has joined the channel [16:30] bradleymeck: jaaulde: http://gist.github.com/540535 , done some minor testing, check if that fits the bill , --help for usage [16:30] JAAulde: bradleymeck: sweet, you're too kind. checking it out [16:30] JAAulde: thanks! [16:31] tyfighter has joined the channel [16:34] visnup has joined the channel [16:36] joshbuddy has joined the channel [16:37] JAAulde: bradleymeck: amazing! very cool stuff. [16:37] JAAulde: one question, one file caused this output after a few errors with the code were output: [16:37] JAAulde: Stopping, unable to continue. (18% scanned). undefined FATAL [16:38] JAAulde: any idea what would cause that? [16:39] bradleymeck: mmm [16:40] bradleymeck: well, something killed jslint [16:40] BBBB has joined the channel [16:42] bradleymeck: seems reading the source, the error message before the fatal is the killer [16:42] JAAulde: heh, ok. i had another where it hit too many errors and stopped, but it was very clear that it stopped for that reason [16:42] mjr_: JSLint gets pretty sad about some things, like one of the getter/setter syntaxes, for example. [16:43] JAAulde: but anyway, this is amazing--thanks! [16:43] JAAulde: mjr_: lol, yeah, i know [16:43] _announcer: Twitter: "What's New in Node.js? http://dzone.com/YcUa" -- DZone. http://twitter.com/DZone/status/21678550578 [16:44] jelveh has joined the channel [16:44] [[zz]] has joined the channel [16:45] BryanWB has joined the channel [16:47] mechanate_ has joined the channel [16:48] felixge has joined the channel [16:48] felixge has joined the channel [16:48] mu-hannibal has joined the channel [16:49] bpot has joined the channel [16:50] _announcer: Twitter: "What's New in Node.js? http://bit.ly/aRBUOE ##news #design" -- Jessyka. http://twitter.com/yummymashup/status/21679016639 [16:51] stepheneb has joined the channel [16:53] tmpvar has joined the channel [16:54] saikat has joined the channel [16:54] _announcer: Twitter: "@jamescarr how was the node.js meetup?" -- Alex Miller. http://twitter.com/puredanger/status/21679338475 [16:57] matt_c has joined the channel [16:57] ker2x: weekend \o/ [16:58] sonnym has joined the channel [17:00] JimBastard has joined the channel [17:01] TooTallNate has joined the channel [17:02] cardona507 has joined the channel [17:02] aheckmann has joined the channel [17:02] MaSch has joined the channel [17:03] wink_: weekends rule [17:03] ker2x: :) [17:03] wink_: what doesnt rule however is this bug [17:03] wink_: :< [17:03] MaSch: anyone worked with node-websocket-server ? [17:04] ker2x: i planned to play with Socket.IO that implement websocket [17:04] hpoydar has joined the channel [17:04] _announcer: Twitter: "JavaScript News: Node.js Version 0.2.0 http://bit.ly/ca4r8G #JavaScript" -- JavaScript Jobs. http://twitter.com/JSJobs/status/21680016161 [17:04] ker2x: http://github.com/LearnBoost/Socket.IO-node [17:04] maushu: wink_: Try having a bug while the client is waiting for the fix and you just have 20 minutes to fix it. [17:05] bmavity has joined the channel [17:05] sveisvei has joined the channel [17:05] maushu: And you find out that you need to change a huge section of the code and remake it to fix it. [17:05] aglemann has joined the channel [17:06] aglemann has left the channel [17:06] maushu: That just happened to me. It took me 12 minutes. I'm so awesome. [17:06] EyePulp: sooo... I just did a git pull of node, then .configure;make;make install and node --version is still showing v0.1.100-3-g3d948d8 -- what'd I miss? [17:06] maushu: EyePulp: the / in ./configure. [17:06] _announcer: Twitter: "I really want to get into node.js but I frakkin wouldn't know where to begin ..." -- Oskar Krawczyk. http://twitter.com/oskar/status/21680187940 [17:06] mikeal has joined the channel [17:07] maushu: Hi mike. [17:07] EyePulp: sorry - bad transcription - I did ./configure [17:07] maushu: EyePulp: sudo make install? Perhaps you aren't root. [17:07] EyePulp: no errors - so I was thinking I should be seeing 0.2 ? [17:07] EyePulp: maushu: yup, I did sudo - sorry - typed too fast. =) [17:08] EyePulp: maushu: "'install' finished successfully (1.429s)" [17:08] EyePulp: and it put it in the same location that "which node" points to [17:09] maushu: And you still get that version? [17:09] EyePulp: si [17:09] EyePulp: is git pull not sufficient to catch me up? looks like it grabbed a lot [17:09] maushu: EyePulp: well, try a "make clean" and start from the beginning. [17:10] maushu: Thats what I would do. If it doesn't work then just delete the node folder and clone it again. (If you don't lose anything.) [17:10] eazyigz has joined the channel [17:10] EyePulp: maushu: make clean, then a normal make, then sudo make install [17:10] EyePulp: ? [17:11] sveimac has joined the channel [17:11] MikhX has joined the channel [17:11] EyePulp: ACTION is already re-running make as evidenced by the jet turbine sound out of the back of his MBP [17:12] feroz_ has joined the channel [17:12] wattz: speaking off. I really need to finish up this work project so i can finish Bob. [17:12] maushu: EyePulp: ./configure before normal make,. [17:13] wattz: throw a make clean in there prehand too, just to be safe [17:13] maushu: And a make distclean. [17:13] Throlkim has joined the channel [17:13] EyePulp: it worked! make clean did it [17:13] EyePulp: danke! [17:13] wattz: word [17:13] maushu: No prob. [17:14] EyePulp: don't know how long I've been on 0.1.1 [17:14] EyePulp: I feel so... dirty [17:14] wattz: im going to make bob send error reports to a little google app engine web service [17:14] maushu: There there. [17:14] maushu: ACTION pats EyePulp in the back. [17:14] maushu: It's all over. [17:14] jetienne: :) [17:14] wattz: So i can give deveopers reports about people's errors [17:14] jMCg: 16:47 < jMCg> How do I build Node.js with a specific version of OpenSSL, residing in /opt/bw ? [17:14] wattz: jMCg: have you looked at ./configure --help? [17:15] JimRoepcke has joined the channel [17:15] jetienne: configure is a waf trick :) [17:15] jMCg: wattz: yes, dear. It doesn't allow for --with-openssl=/opt/bw [17:15] isaacs has joined the channel [17:15] jMCg: I think I also looked through wscript, but it was very late yesternight when I did that. [17:15] wattz: hey.. don't be smart.... I have no clue from your question what you have or have not tried [17:15] wattz: :D [17:16] zemanel has joined the channel [17:16] maushu: Ignore wattz. Please be smart. [17:16] EyePulp: speaking of feeling dirty -- I saw a midnight showing of Piranha 3D -- it's abysmal and wonderful all at once. [17:16] maushu: Piranha! [17:16] wattz: maushu: >:O [17:16] jMCg: I could just patchup wscript in my buildscript. [17:16] digitalspaghetti: EyePulp: i'm amazed at how much is being spent on marketing for that film :o [17:17] maushu: Funny, the only thing I've seen about it was a online trailer. Nothing more. [17:17] jMCg: replace libpath=['/usr/lib', '/usr/local/lib', '/opt/local/lib', '/usr/sfw/lib'] --> libpath=['/opt/bw/lib'] [17:17] EyePulp: digitalspaghetti: there were two people at the show last night - me & the wife. (who was the one insisting we go, oddly) [17:17] jetienne_ has joined the channel [17:17] digitalspaghetti: ive seen posters on the buses here [17:17] jMCg: But then I'd also have to somehow prepend -I/opt/bw/include to the include path, which I could do with -i, IIRC. [17:18] EyePulp: digitalspaghetti: but it's unapologetic in its motives. Music, girls, blood, gore [17:18] jMCg: Yes, that should work -- but it should be easier to do this, or so I dare claim. [17:18] EyePulp: dylang: so did you for d.js? [17:18] EyePulp: er, "fork" [17:19] jMCg: Where do I submit bugs/RFEs? [17:20] bradleymeck: github [17:22] jMCg: s/-i/-I/ - okay.. so that's fine, then... bleh. I'm too tired, I should leave this for.. later. [17:23] jchris has joined the channel [17:23] deepthawtz has joined the channel [17:24] dylang: EyePulp: did i fork? no not yet. i have to brush up on my git. i probably won't have time today. [17:26] mikeal has joined the channel [17:27] EyePulp: dylang: no worries. If you want me to do it let me know - I'm git-ignorant, but I do have a github account, so I suppose learning wouldn't be the worst thing. [17:27] zemanel_ has joined the channel [17:28] dylang: EyePulp: okay, i'm in the same boat. i was embarresed to admit that in an open forum. i almost thought "git-ignorant" was a special git client you were using. [17:29] _announcer: Twitter: "Hehe love NodeJS ... N VPN control panel before long it turned out to be my rewrite. . ." [zh-CN] -- Aveline Lan. http://twitter.com/LonelySwan/status/21681734189 [17:29] hsuh has joined the channel [17:31] hpoydar has joined the channel [17:31] matthewf_ has joined the channel [17:35] dmcquay has joined the channel [17:35] joshowens has joined the channel [17:36] Tobsn has joined the channel [17:36] _announcer: Twitter: "InfoQ: Virtual Panel: The Node.js Ecosystem - Frameworks, Libraries and Best Practices http://goo.gl/fb/h40Ec #nodejs" -- Delicious Over 50. http://twitter.com/readelicious/status/21682250838 [17:37] Tobsn: i hate those goo.gl links [17:37] Tobsn: its just dumb. [17:37] raymorgan has joined the channel [17:37] matt_c_ has joined the channel [17:38] stellar has joined the channel [17:38] sveimac has joined the channel [17:40] matt_c has joined the channel [17:41] _announcer: Twitter: "git pull && ./configure --prefix=/opt/local && make && make insall RT: @egorFiNE Node.js 0.2.0" -- voituk. http://twitter.com/voituk/status/21682578632 [17:46] ker2x: Mmmm [17:46] eazyigz: I need to use memcache, I'm thinking to just calling .exec commands to store/retrieve data. Would that be less efficient than using an api like node-memcache? [17:46] ker2x: can't sort with node-mongoDB ? :( [17:46] programble has joined the channel [17:47] rnewson has joined the channel [17:47] rnewson has joined the channel [17:49] mikeal: don't use node-mongodb [17:49] mikeal: use mongoose or that other one i can't remember [17:49] mikeal: if i remember correctly node-mongodb are bindings to their C library [17:49] mikeal: which is blocking [17:50] Egbert9e9: nk cells are newbs [17:52] drudge: mongoose is pretty awesome, uses node-mongodb or whatever behind the scenes [17:52] drudge: but it's miles more enjoyable to use [17:52] aglemann has joined the channel [17:53] ker2x: -_-' [17:54] mikeal: wait, node-mongodb isn't the c bindings? [17:54] mikeal: this is all too confusing [17:54] ker2x: it is [17:54] matthewford has joined the channel [17:54] ker2x: but it's non-blocking, afaik [17:54] Egbert9e9: oh wait, this isn't #biology [17:54] daleharvey has joined the channel [17:54] ker2x: http://github.com/w1nk/node-mongodb [17:55] TommyM has joined the channel [17:55] ker2x: wink_: are you alive ? :) [17:56] jakehow has joined the channel [17:56] hansek has left the channel [17:56] felixge: ryah: think the fake submodules will work for you? [17:57] _announcer: Twitter: "http://github.com/dannycoates/node-inspector is pretty cool. #nodejs" -- James Duncan. http://twitter.com/jamesaduncan/status/21683574951 [18:00] mu-hannibal: isaacs: node-glob rocks! if I only could get orlandov's node-sqlite to build on CentOS 4 / 32bit... [18:00] isaacs: mu-hannibal: thanks [18:00] tmpvar has joined the channel [18:00] tmpvar: 0.2.0 wut! wut! [18:00] isaacs: mu-hannibal: what errors are you encountering? (i'm not familiar with node-sqlite, but if it's the same ones i was seeing maybe i can help) [18:00] isaacs: tmpvar: inorite!? [18:01] tmpvar: :) [18:01] mu-hannibal: node-waf configure build: [18:01] mu-hannibal: Checking for sqlite3 : not found [18:01] mu-hannibal: ../src/database.h:95: error: `sqlite3_int64' does not name a type [18:01] matt_c_ has joined the channel [18:02] mu-hannibal: used yum install sqlite sqlite-devel to install it [18:02] isaacs: mu-hannibal: oh, ok, yeah, tha'ts weird, then [18:02] trentm has joined the channel [18:02] isaacs: mu-hannibal: does `locate sqlite3` show you where it lives? [18:02] mu-hannibal: yep - the sqlite3_int64 thing seems odd on a 32 bit machine... [18:02] eazyigz: if I want to set key/values in memcache, can I exec a telnet session from node? [18:06] devinus: fuuck... i'm trying to delete a global variable to garbage collect and i have the variable Obj that i pass to a function, but i can't delete it globally within the function [18:06] devinus: ACTION cries [18:07] ironfroggy: my_global = null; [18:07] ironfroggy: you have to have the name of something in order to delete it, not a reference to it. [18:09] devinus: ironfroggy: yeah, that's my problem [18:09] sudoer has joined the channel [18:09] javajunky has joined the channel [18:09] mscdex: setting it to undefined might be better [18:09] mscdex: i dunno [18:09] creationix has joined the channel [18:10] _announcer: Twitter: "Doing a lot of awesome #Node.js stuff. Can't wait to show you. #unnodejsko" -- superfeedr. http://twitter.com/superfeedr/status/21684463741 [18:10] streampunk has joined the channel [18:11] mscdex: but if it's a primitive data type, then it's not possible to delete the original value because those are not passed by reference [18:11] _announcer: Twitter: "If you have a Node.js module. Please assert that it works with 0.2 and add a link to http://github.com/ry/node/wiki/Library-compatibility" -- Ryan Dahl. http://twitter.com/ryah/status/21684533911 [18:12] ryah: ^^^^^ [18:12] creationix: wohoo, a version to officially support finally [18:13] creationix: ACTION gave up updating for every minor release [18:13] javajunky: creationix: now we just a need a v1 of connect eh ;) [18:13] creationix: javajunky: maybe it come now [18:13] javajunky: chortle ;) [18:14] _announcer: Twitter: "First stable release of #nodejs v0.2.0! http://nodejs.org/ Now to update all my modules..." -- Tim Caswell. http://twitter.com/creationix/status/21684715273 [18:15] grahamalot has joined the channel [18:15] aglemann has left the channel [18:16] devinus: creationix: why doesnt Connet's gzip middleware use http://github.com/egorich239/node-compress ? [18:16] inimino: 0.2? [18:16] twoism has joined the channel [18:16] inimino: Wow. [18:16] benburkert has joined the channel [18:16] tj_: devinus: its support both AFAIK [18:16] tj_: if i remember right [18:16] creationix: inimino: yeah, isn't it awesome [18:16] creationix: devinus: yeah, it auto-detects it [18:17] inimino: creationix ⋱ It is. [18:17] creationix: it was a contribution from Astro [18:17] jacobolus has joined the channel [18:18] _announcer: Twitter: "If you have a Node.js module. Please assert that it works with 0.2 and add a link to (cont) http://tl.gd/38fehu" -- Sveinung Røsaker. http://twitter.com/sveisvei/status/21684937677 [18:19] devinus: creationix: so it detects both libraries? [18:19] bronson has joined the channel [18:19] creationix: devinus: both? It just shells out to gzip on the command line if there is no native gzip [18:19] devinus: creationix: right, there are two node-compress libraries now [18:19] devinus: one's really old [18:20] devinus: the other is much improved [18:20] nerdEd has joined the channel [18:20] devinus: http://github.com/egorich239/node-compress [18:20] creationix: devinus: oh, that I don't know [18:20] _announcer: Twitter: "Understanding Node.js http://goo.gl/uT9V #nodejs #javascript" -- alejandro. http://twitter.com/ramonlechuga/status/21685062257 [18:21] blogometer has joined the channel [18:21] blogometer: What do you use to serialize JSON? [18:22] creationix: blogometer: JSON.stringify [18:22] creationix: it's part of the language [18:23] blogometer: cerationix: Thank you. [18:24] TooTallNate: It's surprising to me that nobody has made a good async replacement JSON for node [18:24] TooTallNate: or is there? [18:25] tjholowaychuk: TooTallNate: yajl? [18:25] tjholowaychuk: one sec [18:26] _announcer: Twitter: "#nodejs now has not 1, but 2 fully async mysql client libs. One just in JS, and another interfacing to libmysqlclient." -- Ⓘⓢⓐⓐⓒ. http://twitter.com/izs/status/21685429698 [18:26] nerdEd_ has joined the channel [18:26] tjholowaychuk: TooTallNate: seems like its on bitbucket lol ewWWWwwW http://bitbucket.org/nikhilm/yajl-js [18:26] tjholowaychuk: havent tried the bindings personally [18:27] ker2x: hum... mongoose do not have map/reduce... sigh [18:27] ker2x: look like there isn't a single driver with map/reduce support [18:27] TooTallNate: Yet Another JSON Library, lol [18:28] blowery: json libraries are the ultimate bikeshed [18:28] TooTallNate: http://github.com/lloyd/yajl The Github mirror [18:28] jackish has joined the channel [18:28] jochen has joined the channel [18:29] jedschmidt has joined the channel [18:29] blogometer: blowery: Java build systems are the ultimate bikeshed. [18:29] TooTallNate: blowery: Well it's just that JSON.parse and .stringify are blocking [18:29] blogometer: Or maybe Java serialization systems. [18:30] blogometer: JSON libraries are not bikesheds. [18:30] blogometer: People just roll their own. Different from everyone trying to build the one true solution. [18:31] Gruni has joined the channel [18:32] sh1mmer has joined the channel [18:32] kodisha has joined the channel [18:33] joshbuddy has joined the channel [18:33] joshbuddy has joined the channel [18:34] _announcer: Twitter: "The Milwaukee Javascript Users Group will be talking about Node.js next month (hopefully) http://meetup.com/u/CPM" -- Jordan Arentsen. http://twitter.com/blissdev/status/21685940828 [18:34] matthewf_ has joined the channel [18:35] benburkert has joined the channel [18:35] blogometer: Great read, actually. Just re-read. [18:35] blogometer: http://www.bikeshed.com/ [18:35] _announcer: Twitter: "Casual friday, a day of studying interesting things at work. Today we are all studying Node.js http://nodejs.org/" [pt] -- Nerdson. http://twitter.com/nerdson/status/21686014831 [18:36] cardona507: congrats on 2.0 [18:36] cardona507: *v0.2 [18:36] cardona507: :D [18:37] proppy has joined the channel [18:37] marshall_law has joined the channel [18:40] justin_ has joined the channel [18:41] herbySk: maybe I'm strange, but what is this buzz about 0.2 about? Is this version somehow special? I don't see it, it is yet another version... I'd not call it stable, it still have bugs / failing tests... [18:42] felixge: herbySk: some time ago ryan announced 0.2 would bring an API freeze [18:42] herbySk: ahh [18:42] herbySk: fine [18:42] devinus: ACTION is wondering i should you use window or self in my client side JS code.... [18:42] felixge: herbySk: not sure if that has changed, but it's why people are excited [18:42] felixge: :) [18:43] herbySk: thanx for info [18:43] femtoo has joined the channel [18:43] davidc_ has joined the channel [18:44] WALoeIII has joined the channel [18:46] mscdex: mu-hannibal: i tried it on centos 5.5 32-bit and got the same error. you have to build and install a newer version of sqlite [18:47] mu-hannibal: mscdex: thanks for checking - will do! [18:47] mscdex: mu-hannibal: i used 3.7.0.1 from sqlite.org and node-sqlite built fine [18:48] nerdEd has joined the channel [18:48] mscdex: mu-hannibal: http://sqlite.org/sqlite-amalgamation-3.7.0.1.tar.gz [18:50] creationix: felixge: yep, a stable api means something that library makers like me can officially support [18:50] zemanel has joined the channel [18:50] creationix: which means people can use my library without worrying that it will break in 3 weeks [18:50] creationix: it's a huge wiin [18:51] creationix: and it means ryah can remove all the deprecation warnings and start fresh with 0.3.0 branch [18:51] creationix: and break apis at will without breaking everyone's apps [18:52] ivong has joined the channel [18:52] Ori_P_ has joined the channel [18:52] mattly has joined the channel [18:53] ezmobius has joined the channel [18:53] creationix: ryah: the internal fs functions still use [] on buffers right? I see you added get/set to buffers [18:53] mattly_ has joined the channel [18:53] mscdex: creationix: get/set use [] for now [18:54] creationix: ryah: if all internal node functions used the get/set aliases, I could implement my own fastBuffer in userspace on 0.2.0 [18:54] bronson has joined the channel [18:54] creationix: though it's still pretty fast without the fastbuffer so it's not a huge deal [18:54] _announcer: Twitter: "Installation starts today NodeJs -_-;; today, please help me turn one example ..." [ko] -- Jung Jae Pil. http://twitter.com/J2PFnc/status/21687161259 [18:55] mikeal has joined the channel [18:56] ryah: herbySk: 0.2 is stable [18:57] ryah: with respect to other node releases [18:57] ryah: (not other software) [18:57] murz has joined the channel [18:57] overra has joined the channel [18:57] ryah: and i will maintain that branch's stability - which is useful for people [18:57] creationix: ryah: so no plans to make 0.2.0 use get and set internally on buffers? [18:58] creationix: just wondering [18:58] ryah: no [18:58] creationix: ok, that's fine [18:58] ryah: not even sure about the get/set stuff [18:58] ryah: i just threw it in there in case [18:58] herbySk: mhm, ..., so if something is added to 0.2, it is only bugfixes... [18:58] TooTallNate: What are you trying to overwrite those methods or something? [18:58] ryah: herbySk: yeah, and perf fixes [18:58] ryah: which are bugs too [18:58] creationix: ryah: good idea, it will make authoring libs for both 0.2.0 and 0.3.0 much easier [18:59] creationix: TooTallNate: no, I just want fastBuffers now [18:59] hsuh has joined the channel [18:59] creationix: and I can't figure a way to implement then without using something like get and set on buffers [18:59] creationix: TooTallNate: it will be in the 0.3.0 branch [18:59] icozzo has joined the channel [19:00] ryah: we can try to implement method missing in v8 [19:00] TooTallNate: creationix: What is this fastBuffer you speak of? [19:00] creationix: ryah: we can, but it will likely have performance implications [19:00] ryah: creationix: *shrug* [19:00] creationix: TooTallNate: an experiment ryah and others did to make buffers faster [19:01] creationix: but for technical reasons, it's hard to keep the existing buffer api [19:01] tmpvar: oooh, method missing would be interesting [19:02] creationix: there was even a v8 patch floating around that implemented it for a while [19:02] creationix: not sure if the guy is still keeping it up to date though [19:02] creationix: since v8 never accepted it [19:02] tjholowaychuk: if it is used like ruby's is i will kill myself [19:02] creationix: tjholowaychuk: do you have []= in ruby too? [19:02] tmpvar: i want it for array accessors on LiveNodeLists in jsdom ^_^ [19:03] ryah: creationix: oh, interesting [19:03] tjholowaychuk: creationix: oh i thought you guys were talking about method missing stuff :D [19:03] creationix: tjholowaychuk: s/have/hate/ [19:03] ryah: creationix: i wouldn't expose it generally [19:03] creationix: tjholowaychuk: []= is the same thing as method missing in js [19:03] ryah: only for this use case [19:03] creationix: since ['foo'] is the same as .foo [19:03] tjholowaychuk: that has nothing to do with method missing [19:04] tjholowaychuk: its not a catch all [19:04] _announcer: Twitter: "Twitter: Twitter Streaming API + node.js + Appcelerator Titanium = Real-time tweet map: http://bit.ly/ab5mqP" -- fury. http://twitter.com/__fury/status/21687756719 [19:04] tjholowaychuk: []= is an actual method in ruby [19:04] nerdEd_ has joined the channel [19:05] creationix: tjholowaychuk: I know, but we're talking js [19:05] maushu has joined the channel [19:05] creationix: and it's the same thing here [19:05] tjholowaychuk: of course [19:05] creationix: I would love for it to just work with [] in js [19:06] creationix: but I don't think that's possible [19:06] tmpvar: really? [19:06] tjholowaychuk: internally they are no different AFAIK [19:06] aliem has joined the channel [19:06] creationix: tjholowaychuk: exactely [19:06] creationix: but you go deep enough into v8 and it's going to be different [19:07] creationix: tmpvar: do you need it for a.foo or just for a['foo'] [19:07] tjholowaychuk: doubt it, syntactically yeah [19:07] tmpvar: creationix, I need it for a list[0] where the list is recalculating on every access [19:07] creationix: tjholowaychuk: but yeah, if they implemented them the same at the lexer or parser level, then it's too deep [19:07] bradleymeck: creationix what did you need? [19:07] creationix: bradleymeck: the equiv of []= in ruby [19:08] bradleymeck: isnt that the same as a proxy? [19:08] creationix: bradleymeck: so buffers can be implemented in js, but keep the existing api [19:08] creationix: bradleymeck: yeah, method missing and proxy are similair [19:08] bradleymeck: how is that method missing though? [19:08] creationix: ryah: maybe we could use someone's proxy plugin and bundle it in node, but not expose it [19:08] bradleymeck: you arent calling the index, just grabbing [19:08] ker2x: cool post about mongodb http://www.snailinaturtleneck.com/blog/2010/08/19/if-it-quacks-like-a-rdbms/ :) [19:09] _announcer: Twitter: "Playing with node.js. I like it so far." -- Ryan Farnell. http://twitter.com/criscokid/status/21688047740 [19:10] creationix: bradleymeck: ? [19:10] bradleymeck: when you use [] in javascript that isnt a method? [19:10] creationix: bradleymeck: I know [19:11] creationix: but the functionality I want is how it works in ruby [19:11] creationix: I'm not thinking it's possible though [19:11] bradleymeck: how does it work? [19:11] creationix: in ruby you define a []= method and it's a getter for all [foo] accesses [19:11] tjholowaychuk: bradleymeck: in ruby you can define [] and []= methods [19:11] creationix: but in ruby ["foo'] isn't the same as .foo [19:12] creationix: it's just an operator [19:12] creationix: operator/syntax sugar [19:13] bradleymeck: mmm, so []= is on all classes? [19:13] creationix: basically it's just another method [19:13] creationix: but with syntax sugar to call it [19:13] mu-hannibal has joined the channel [19:13] creationix: foo[bar] = will call foo.[]=(bar) [19:14] creationix: anyway, the more I think about the more I realize it's probably way to hard to hack into v8 [19:14] creationix: it's just not javascript [19:14] bradleymeck: so in js you want all objects to gain a ['[]='] method, yes? [19:15] tjholowaychuk: creationix: []= is for setting not getting its def obj.[]=(key,val) [19:15] creationix: I just want a way to intercept access to an object [19:15] creationix: proxies should work [19:15] creationix: or __methodMissing__ [19:15] bradleymeck: __methodMissing__ slows down all accesses :( [19:15] creationix: I'd rather it only work when the [] syntax is used in js, but that's probably asking too much [19:15] tjholowaychuk: is __methodMissing__ supposed to account for all props? [19:15] tjholowaychuk: or just calls? [19:15] creationix: bradleymeck: exactely, and I only want it on a certain class of objects [19:15] bradleymeck: only calls [19:16] tjholowaychuk: interesting [19:16] tjholowaychuk: no magic getters n shit i guess [19:16] creationix: but with proxies, you just create a proxy object and only that object has the performance hit right? [19:16] bradleymeck: well, not until Proxies become native in v8, for now, just addons [19:17] bradleymeck: yes, only that object, a raw proxy gives around 2x access time + closures from normal [19:17] creationix: node could bundle a proxy addon and use it internally [19:17] creationix: I think that would work [19:17] bradleymeck: weakmaps, collectors, and proxies, abuse and reuse [19:17] creationix: (personally I would like them all bundled with node, but that's another story) [19:18] creationix: especially if we know the api that V8 will eventually have and just copy that [19:18] creationix: but that's still in discussion afaik [19:18] jackish has joined the channel [19:18] bradleymeck: only proxies is outta strawman i believe, but not frozen [19:19] creationix: hmm, where is the proxy addon? [19:19] creationix: github? [19:19] blogometer has joined the channel [19:19] bradleymeck: node-proxy or node-overload, both on github [19:20] creationix: what's the difference, just APIs [19:21] bradleymeck: no, apis for proxy are the same, node-proxy is more strict to the API (throws some errors if proxy doesnt have all possible options etc) but that can be good or bad, node-overload uses a js proxy wrapper around v8's interceptors (called a watcher in js), so it is a little closer to the wire [19:21] bradleymeck: but overload is a little less w/ the spec [19:21] creationix: bradleymeck: so if node doesn't expose it then yours is probably better [19:22] creationix: because then the spec doesn't matter [19:22] bradleymeck: i guess [19:22] tjholowaychuk: is the dropping of response bodies (ex: 304) in node? cant remember but i thought it was now [19:22] creationix: tjholowaychuk: not sure [19:22] creationix: test it! [19:23] tjholowaychuk: ahhh [19:23] tjholowaychuk: lazy [19:23] tjholowaychuk: lol [19:23] creationix: I do it manually in Connect.conditionalGet [19:23] aglemann has joined the channel [19:23] tjholowaychuk: i just swear i remember there being talk of that within http.js ill try it out [19:24] aglemann has left the channel [19:24] hellp has joined the channel [19:25] _announcer: Twitter: "node.js [del.icio.us] http://goo.gl/fb/ZwOW4" -- moises_souto. http://twitter.com/moises_souto/status/21688939402 [19:25] wink_: anyone have any idea why my script is outputting this: [19:25] wink_: module:422 [19:25] raymorgan has joined the channel [19:25] wink_: var compiledWrapper = process.compile(wrapper, filename); [19:26] wink_: there isnt even an error there :P [19:26] tjholowaychuk: hmm http server does not want to work in REPL haha [19:26] tjholowaychuk: booo [19:26] wink_: i mean, something is going wrong but i've got no idea what that thing is trying to tell me [19:27] tilgovi has joined the channel [19:27] tjholowaychuk: creationix: hmm ya it seems to! [19:27] tjholowaychuk: creationix: ah yes, statusCode === 204 || statusCode === 304 [19:27] tjholowaychuk: in http.js [19:27] tjholowaychuk: perfect [19:27] creationix: tjholowaychuk: so it just ignores write calls then? [19:28] _announcer: Twitter: "Cloning #NodeJS #Github repo : http://github.com/ry/node" -- Jay Garcia. http://twitter.com/tdgi/status/21689092280 [19:28] tjholowaychuk: creationix: yeah just ignores, calls console.error though [19:28] tjholowaychuk: which is kinda lame [19:29] bradleymeck: wink_ can you give a full stacktrace instead of just that line? [19:29] wink_: bradleymeck: that was all it was spitting out [19:29] matthewford has joined the channel [19:29] bradleymeck: doesnt say its an error even? [19:29] wink_: i've got a really jacked up bug at the moment and that is one manifestation of it [19:29] wink_: nope [19:30] bradleymeck: then my guess is that you have required an undefine [19:30] bradleymeck: d [19:30] wink_: erm i dunno how [19:30] wink_: i mean the script is almost finished running at that point [19:31] wink_: but its likely all jacked up anyhow [19:31] wink_: im seeing crazy things with the mongo binding [19:31] bradleymeck: O-o [19:31] wink_: large datasets are crashing throwing some v8 internal errors [19:31] jelveh has joined the channel [19:31] wink_: i've found the threshold for my data, and literally one extra record makes it go *boom* [19:32] wink_: actually, 2 extra records causes a seg fault [19:32] wink_: one extra causes that weirderror [19:32] wink_: so its just as likely something has been smashed at the point [19:32] _announcer: Twitter: "Any node.js-ers know why I can't install something (less.js) outside of its source tree? Only works if I run it from the bin folder." -- Patrick Gibson. http://twitter.com/pgib/status/21689368994 [19:33] _announcer: Twitter: "Here's what I get: node.js:275 throw new Error("Cannot find module '" + request + "'"); #nodejs" -- Patrick Gibson. http://twitter.com/pgib/status/21689381845 [19:33] wink_: 0x0817ac3b in v8::internal::SetProperty(v8::internal::Handle, v8::internal::Handle, v8::internal::Handle, PropertyAttributes) () [19:33] wink_: sigsegv :< [19:34] wink_: one record less, it throws that weird process error [19:34] wink_: one less than that and it works fine :p [19:34] bradleymeck: sounds like the mongodb binding is probably getting an overflow? [19:35] wink_: thats my guess, for the life of me i cant find it though [19:35] wink_: valgrind doesnt report anything silly [19:35] wink_: and everything looks fine via gdb [19:36] _announcer: Twitter: "Awesome. #NodeJS build tests passed 100% on my i7 MacBook Pro" -- Jay Garcia. http://twitter.com/tdgi/status/21689605965 [19:37] creationix: whew, finally finished reading emails and tweets for the morning and it's 12:37! [19:37] matthewf_ has joined the channel [19:37] creationix: node release ftw [19:38] bradleymeck: where was that old filter api spec? [19:38] drudge: woah, 0.2.0! [19:40] _announcer: Twitter: ""Introduction to Geddy" post on the Node Knockout blog: http://is.gd/esjMz #nodejs #node.js" -- Matthew Eernisse. http://twitter.com/mde/status/21689817472 [19:41] _announcer: Twitter: "NodeJS 到0.2.0了。。。" -- Aveline Lan. http://twitter.com/LonelySwan/status/21689891490 [19:42] pgriess has joined the channel [19:45] rnewson has joined the channel [19:46] matthewf_ has joined the channel [19:48] dipser: does someone know a site which compares php with nodejs? [19:49] bradleymeck: they specialize in different things, what did you want to know [19:49] _announcer: Twitter: "I gotta try this tutorial :D #nodejs #javascript #websockets http://goo.gl/Lz47" -- alejandro. http://twitter.com/ramonlechuga/status/21690350364 [19:50] dipser: yeah i mean php+apache vs. node.js benchmarks [19:50] bradleymeck: i can dig some of those up [19:50] dipser: ok [19:50] creationix: dipser: it's hard to benchmark, they do very different things [19:51] creationix: php utterly sucks at long pool, can't do websockets, isn't persistent [19:51] creationix: but php is much easier to set up if you want to do shared hosting or something like that [19:51] bradleymeck: http://www.google.com/search?hl=en&q=php+vs+nodejs&aq=f&aqi=&aql=&oq=&gs_rfai= [19:51] bradleymeck: also php is better at buffering but much worse at streams [19:52] bradleymeck: is there even async in php? [19:52] creationix: bradleymeck: nope, it's all blocking and either threads or processes [19:52] wink_: i think there is some async [19:52] creationix: actually just processes, php isn't threadsafe [19:52] wink_: i believe sockets can be non blocking [19:52] creationix: wink_: php+apache does sockets? [19:53] dipser: jo [19:53] dipser: you can do websocket with php afaik [19:53] wink_: creationix: you can open a socket, yes [19:53] matthewf_ has joined the channel [19:53] creationix: oh, socket client, right? [19:53] bradleymeck: yes, you can, its not nice if its from apache though [19:54] creationix: well, the main use case for php+apache is websites, and that's mostly blocking [19:54] wink_: fair enough <3 [19:55] wink_: i dont think im ever going to find this bug [19:55] wink_: ACTION screams [19:56] matthewford has joined the channel [19:57] tjholowaychuk: Geddy requires 0.1.102 of Node.js [19:57] tjholowaychuk: awesome [19:57] tjholowaychuk: lol [19:57] tjholowaychuk: this is going well [19:57] jamescarr_: how is geddy? [19:57] jamescarr_: I have not tried it yet [19:57] ryah: herbySk: hey [19:57] creationix: would someone be interested in node docs this style? http://www.simoens.org/projects/SenchaTouchDocs/ [19:57] tjholowaychuk: jamescarr_: never works for me [19:57] ryah: herbySk: it'd be nice to have good error messages when node can't find a module. [19:57] ryah: it used to have that... [19:58] ryah: herbySk: + test/message tests [19:58] jamescarr_: creationix, theres nothng there [19:58] creationix: jamescarr_: probably need to use a webkit browser [19:58] creationix: jamescarr_: it's built on sencha touch (mobile framework) [19:58] creationix: I'm just talking about the style [19:58] matthewf_ has joined the channel [19:58] digitalspaghetti: Looking at Geddy myself, but it doesn't have MySQL, athough probably not hard to add [19:59] jamescarr_: I like [19:59] mde: jamescarr_, digitalspaghetti: Lemme know if you have questions or issues with Geddy. [19:59] creationix: though node will probably never have auto-generated docs, but the markdown docs are structured [19:59] creationix: I actually prefer hand-written docs for things like node [20:00] mde: digitalspaghetti: Doesn't support MySQL because there are no native non-blocking drivers. [20:00] creationix: mde: there is now [20:00] digitalspaghetti: mde: node-mysql [20:00] mde: But it would probably be simple to support it with something like ... Oooooh ... Really? [20:00] creationix: and felix's one is getting better too [20:00] digitalspaghetti: mde: http://github.com/felixge/node-mysql [20:00] mde: Awesome, I'll hack that in then. The Postgres/SQLite stuff is just a thin layer. [20:01] digitalspaghetti: having a look at sql_base I thin it might work [20:01] mde: But the persistence and query API are very minimal anyhow right now. [20:01] digitalspaghetti: because the error and results are same arguments as node_postgres by the looks of it [20:01] femtooo has joined the channel [20:01] mde: Only supports find-by-id and find-by-type, really. [20:02] _announcer: Twitter: "countdown to knockout: Getting Started With Express http://bit.ly/a9hTBD -- #expressjs / #nodejs" -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/21691060767 [20:02] creationix: mde and http://github.com/Sannis/node-mysql-libmysqlclient/tree/v0.0.7 [20:02] bradleymeck: the only things i dont like about sencha's docs is that, a. the search is meh, b. events are thrown wayside quite often [20:02] herbySk: ryah: hm... anyway, it seems to me really bad that require() a module with syntax error simply kills a process, where I have servers running and protected them with uncaught exception handler [20:02] mde: creationix: Sweet. I'll definitely want to add MySQL support then. [20:02] creationix: felixge's version is pure js, Sannis's version uses a threadpool and links to libmysql [20:02] tjholowaychuk: mde: i did make/install from HEAD and it says 0102 is required? :( [20:02] creationix: mde: do you support my postgres one yet? [20:02] creationix: it's getting closer to being done [20:03] bradleymeck: have we come up with a generic db api? [20:03] mde: tjholowaychuk: Are you wanting it to support older versions, or are you saying there's a bug? [20:03] digitalspaghetti: I've been doing custom express + sequelize at the moment, but would rather go with a more wrapped up framework, especially around the ORM stuff [20:03] creationix: mde: and what about key/value things like nStore? [20:03] tjholowaychuk: mde: im using 0.2.0 [20:03] ironfroggy: bradleymeck: the number and type of databases in use is too broad for any real abstraction, isnt it? [20:03] digitalspaghetti: tjholowaychuk: you could use nave [20:03] digitalspaghetti: then 'nave install 0.1.101' [20:03] mde: creationix: I'd love to support the pure-JS one, but it was broken way back when I added Postgres support originally. [20:04] digitalspaghetti: *102 [20:04] tjholowaychuk: digitalspaghetti: I dont want to use an older version lol i just wanted to try out geddy [20:04] creationix: we should all update our libraries to 0.2.0 before node knockout [20:04] creationix: just an idea ;) [20:04] mde: creationix: And since it supports Couch, adding nStore should be pretty easy. [20:04] digitalspaghetti: oh, is geddy broken in 0.2? [20:04] creationix: mde: awesome, I've been spending a lot of time polishing nStore [20:04] mde: tjholowaychuk: Awesome, so the min-version stuff is b0rken. [20:04] wink_: is there a changelog for .2? [20:04] felixge has joined the channel [20:04] felixge has joined the channel [20:05] raymorgan has joined the channel [20:05] bradleymeck: ironfroggy, to cover them 100% yes, but most people just want a get,query?,update,set,delete, collection? . the individual db specifics beyond that i rarely mess w/ if at all [20:05] pquerna_ has joined the channel [20:05] mde: I will fix and push a version ASAP. [20:05] tjholowaychuk: mde: shit :( I will revisit in a bit, trying to play around with other frameworks from time to time [20:05] creationix: wink_: it's actualy just a minor change from .01.104 [20:05] wink_: oh ok [20:05] mde: tjholowaychuk: I appreciate it. I know how hard it is to keep up with what other people are doing when you have your own plate full. [20:05] creationix: the number change just means it's api freeze [20:05] mde: You found a good bug, looks like. :) [20:06] tjholowaychuk: whoop [20:06] creationix: tjholowaychuk: do you have bandwidth to work on some connect stuff? [20:06] tjholowaychuk: creationix: not ATM nope [20:06] creationix: tjholowaychuk: ok, just wondering [20:07] tjholowaychuk: but there is an annoying little router regexp bug i want to fix [20:08] bradleymeck: is connect combining router regexps or compiling a switch for static ones yet? [20:08] nerdEd has joined the channel [20:08] _announcer: Twitter: "In fact some asynchronous hate NodeJS" [zh-CN] -- Aveline Lan. http://twitter.com/LonelySwan/status/21691455610 [20:08] tjholowaychuk: bradleymeck: nope not yet forgot about that [20:09] bradleymeck: ill submit a patch one tick [20:10] npup has joined the channel [20:10] zemanel has joined the channel [20:10] tjholowaychuk: bradleymeck: there are some other improvments that could be made but i think it would be over optimization [20:10] digitalspaghetti: mde: i meant to ask as well, how are you doing associations in geddy models? [20:11] creationix: bradleymeck: will that make it a lot faster? [20:11] bradleymeck: yea, just regexp has a brutal startup cost [20:11] creationix: but the compile is a one-time cost [20:11] creationix: not per-request [20:11] bradleymeck: per test? [20:11] creationix: ahh [20:11] bradleymeck: the compile time is meh cause its 1 time [20:11] creationix: yeah, v8 lazy loads js features [20:11] mde: digitalspaghetti: The associations are still experimental. Right now they're just stored directly with each record. I want to change that. [20:11] creationix: so if you don't use regexp it doesn't load it [20:12] bradleymeck: well its more the .exec/.test/.match etc that cost [20:12] digitalspaghetti: mde: http://github.com/sdepold/sequelize had quite a nice setup for it [20:12] creationix: bradleymeck: yeah, that's per request for sure [20:12] tjholowaychuk: we can optimize routes that dont even have captures groups etc [20:12] digitalspaghetti: you can set up .hasMany, .belongsTo and associate in saves [20:12] creationix: tjholowaychuk: someone needs to add streaming and throttling support too [20:13] bradleymeck: ive got some regexp utils for combining regexp, just dont mix /g and one w/o /g [20:13] mde: digitalspaghetti: Oh, that looks pretty nice. I have been deferring the work on the ORM stuff, because it's still so nebulous with the relational vs. non-relational. [20:13] bradleymeck: switch for statics -> non /g -> /g [20:13] tjholowaychuk: creationix: we need quite a lot still :( [20:13] tjholowaychuk: asdflknasdfalksdfn [20:13] tjholowaychuk: lol [20:13] creationix: tjholowaychuk: what do we need to get it ready for node knockout? [20:14] mde: I would love something unified that behaves as expected for SQL stores, and supports lowest-common-denominator for non-relational ones. [20:14] tjholowaychuk: creationix: started implementing the range support but need this other bug fixed first [20:14] creationix: which bug? [20:14] konobi: still haven't found any other web frameworks that do 'chained' controllers [20:14] creationix: konobi: what do you mean? [20:14] mscdex: node.js rules! [20:14] mAritz: just out of curiosity: is there any interest here for a redis orm? [20:15] mscdex: geddyyyyyyyyyy [20:15] bradleymeck: mde, i have a simple wrapper i use, but i dont like my api [20:15] mde: digitalspaghetti: Yeah, sequelize looks pretty solid, if it performs as advertised. [20:16] mde: bradleymeck: What's the issue with your API? [20:16] bradleymeck: its long winded [20:16] konobi: creationix: http://www.slideshare.net/jshirley/catalyst-and-chained [20:16] bradleymeck: plus its only hooked up to in memory and nstore [20:16] mde: I mean, most people can get a ton of mileage out of a standard ORM, and the non-relational stuff seems pretty specialized anyhow. [20:16] konobi: not sure how that fits in, in the async world... i'd have to think [20:16] digitalspaghetti: mde: it works pretty well, i'm trying to use it in a geddy-way, seperating it out into seperate files, but it's missing some features just now [20:17] digitalspaghetti: most of the issues are mine :) [20:17] tjholowaychuk: digitalspaghetti: for what? [20:17] digitalspaghetti: tjholowaychuk: [20:17] creationix: konobi: so internal redirects? [20:17] digitalspaghetti: sequelize [20:17] creationix: without actually sending 302 responses to the browser [20:18] tjholowaychuk: digitalspaghetti: ah, saw that havent checked it out yet [20:18] konobi: not really... based on a url, it'll create a chain of actions to run through... each part of that chain is reusable in another chain [20:18] creationix: konobi: connect kinda does that [20:19] konobi: and the chain isn't tied to the url except for a declaration [20:19] creationix: the layers are chained [20:19] creationix: and even the routes in the router middleware is layered [20:20] creationix: and since connect doesn't enforce mvc half the stuff in those slides aren't needed [20:21] mde: digitalspaghetti: when you say the issues are yours, do you mean sequelize is your lib? Or just how you're using it? [20:21] digitalspaghetti: in using it [20:22] digitalspaghetti: one issue is from the underlying driver rather than the lib [20:22] mscdex: someone ought to fork sequelize and modify it to use felixge's node-mysql [20:22] mscdex: :p [20:22] digitalspaghetti: mscdex: i started [20:22] mde: Oh, okay. It would be great to abstract this stuff so it's just plain SQL instead of MySQL-specific. [20:22] digitalspaghetti: but i didn't have time [20:22] mscdex: aw [20:22] digitalspaghetti: but i agree with mde [20:23] mscdex: does sequelize use anything specific to mysql? [20:23] creationix: mde would the api make sense with things that aren't sql based? [20:23] mde: Hm, and there's no license anywhere I can see. [20:23] creationix: not the sql generation of course [20:23] mde: creationix: There would be some small subset that is the same. Like the find-by-id, find-by-type. [20:24] digitalspaghetti: mscdex: SQL wise I don't think so, but it's using the nodejs-mysql-native driver [20:24] creationix: as much as I don't like ORMs I think they are terribly useful for quick projects [20:24] digitalspaghetti: which isn't async, but emits events [20:24] mde: Seems like eventually most complex webapps will have per-model persistence defined. [20:24] tjholowaychuk: creationix: and for tests! [20:24] pzich has joined the channel [20:24] tjholowaychuk: creationix: switching to a mem store is wicked [20:24] tjholowaychuk: but yeah over all meh [20:24] creationix: well, you don't need an orm for that, just a common api [20:24] mscdex: i like orms because of the consistency of the queries generated [20:24] _announcer: Twitter: "There was some seemingly "ignorable error" when doing ./configure --without-ssl for #nodejs 0.2.0" -- P Envall. http://twitter.com/npup/status/21692402727 [20:24] mde: creationix: You'd be surprised how much mileage normal people get out of ORMs. I don't mind raw SQL, actually. [20:25] mscdex: writing SQL all over the place in an app is cumbersome when you have to change them all [20:25] mscdex: or one of the queries is incorrect or something from copying and pasting [20:25] creationix: mde: well, I made a couple apps using nStore, and really wished I had an orm for it [20:25] mscdex: or stuff like that [20:25] _announcer: Twitter: "#nodejs AttributeError: Values instance has no attribute 'use_openssl'.. just moved on and it went fine" -- P Envall. http://twitter.com/npup/status/21692433721 [20:25] saikat has joined the channel [20:25] creationix: I was just throwing together quick live-crud apps [20:25] JimBastard: creationix: resourcer! [20:25] mde: mscdex: Exactly, and having a common set of expectations from the API is good too. [20:25] JimBastard: http://github.com/indexzero/resourcer [20:25] mscdex: and having the option to use raw queries when necessary is available [20:25] creationix: live-crud = CRUD + live updates [20:25] mde: creationix: That's exactly the sweet spot, right. [20:26] JimBastard: http://github.com/indexzero/resourcer/tree/master/test/ [20:26] bradleymeck: http://gist.github.com/541071 seem reasonable for db clients? [20:26] npup has joined the channel [20:26] mde: And that's an area that Geddy is really good. [20:26] digitalspaghetti: As much as it has it's problems, Django does have a good ORM - which makes me lazy and want a NodeJS orm :) [20:27] mde: Not the live part, just the CRUD part. The live stuff is a huge can of worms I haven't touched yet. :) [20:27] mde: digitalspaghetti: Exactly, we should have the same 'nice things' any other ecosystem has. [20:27] tmpvar has joined the channel [20:27] digitalspaghetti: and the app I am writing is heavy client side built in ExtJS, I want to try make the backend as simple as possible [20:27] mde: Maybe we can talk to the sequelize guy and see how much of his code is portable. [20:28] creationix: I think we should work as a community to build some patterns around live-crud [20:28] mscdex: we need some clean crud :-D [20:28] creationix: it's a common use case and node is good at that kind of server-push stuff [20:28] sh1mmer has joined the channel [20:28] digitalspaghetti: creationix: well i had been thinking of suggesting a nodejs sprint weekend sometime soon, might be an idea to look at that issue [20:28] Validatorian: isaacs: you around? [20:29] creationix: digitalspaghetti: hopefully some day I'll write a node backend that integrated with extjs [20:29] isaacs: Validatorian: for a minute, what's up? [20:29] digitalspaghetti: creationix: there is a connect implemenation of Ext Direct around, but it's very light, doesn't have many features [20:29] creationix: digitalspaghetti: maybe, but coming up with patterns and best-pratices takes time [20:29] Validatorian: I have twitscript installed via npm, but I'm getting 'Error: Cannot find module 'twitscript' -- any ideas? [20:29] creationix: digitalspaghetti: not that I know of [20:29] digitalspaghetti: and I prefer REST anyway [20:30] Validatorian: I have twitscript installed via npm, but I'm getting 'Error: Cannot find module 'twitscript' -- any ideas? <-- @ isaacs [20:30] isaacs: Validatorian: update node to the latest? post an issue? [20:30] isaacs: Validatorian: putting "npm" in the message pages me just as surely as "isaacs" [20:30] isaacs: :) [20:30] digitalspaghetti: creationix: http://webdribble.blogspot.com/2010/07/extdirect-gridpanel-w-connect-on-nodejs.html [20:30] Validatorian: I'll post an issue, just wanted to check if it was a know issue [20:32] mscdex: maybe an old version of npm? [20:32] mscdex: :S [20:32] isaacs: Validatorian: yeah, make sure that npm and node are the latest [20:32] creationix: digitalspaghetti: awesome [20:32] Validatorian: I'll double check, but I'm pretty sure they are [20:32] mde: digitalspaghetti: Let me know how things go with Geddy. And let me know what problems or issues you run into. [20:33] mde: Thanks for checking it out. [20:34] frza has joined the channel [20:34] digitalspaghetti: mde: i haven;t fully tried it yet, but i might look at writing something this weekend [20:34] _announcer: Twitter: "There is a node in court, until I get Node.js" [pt] --  Gleydson Costa. http://twitter.com/costalince/status/21692955636 [20:34] digitalspaghetti: i could proably use sqlite initially [20:34] mde: Nice. :) [20:34] creationix: mde: what do you need from connect to be able to use it as a base to geddy? [20:35] creationix: digitalspaghetti: do you need something with sql or just persistence [20:35] mde: creationix: I think I just need to look at the API to decide the entry points. [20:35] creationix: mde: well let me know, I want so solidify the api [20:35] digitalspaghetti: creationix: something with less boilerplate :) [20:35] ajsie has joined the channel [20:35] creationix: digitalspaghetti: you've seen nStore right? [20:35] mde: Like people have said before, it's different from the Ruby ecosystem, because we don't need to choose from different HTTP servers. [20:36] digitalspaghetti: creationix: not had a full look at it, but i need more than key/store, i need relational stuff [20:36] creationix: yep, but unlike php, we don't have high-level http stuff [20:36] creationix: digitalspaghetti: ok, fair enough [20:36] mattly has joined the channel [20:36] mde: Right, so it's not like WSGI or Rack where you need this well-defined interface between the two things. [20:36] creationix: mde: connect aims to bring node style apis to the php level of abstraction [20:37] creationix: it's a collection of http utilities chained together rack style [20:37] digitalspaghetti: at the moment, i seem to be getting on fine with Express + Sequlize for now anyway [20:37] creationix: digitalspaghetti: sounds like a good combo [20:37] ajsie has left the channel [20:37] mde: We have Connect, and ... doesn't it seem like Nitrode is in a similar vein? [20:38] tjholowaychuk: digitalspaghetti: remember too for MVC people there is no reason you cant use express in that manor, its just not imposed. super easy to setup controller based stuff as well [20:38] tjholowaychuk: digitalspaghetti: I dont have a good example yet though I will make an issue to create that [20:38] tmpvar has joined the channel [20:38] lianj has joined the channel [20:38] joshbuddy has joined the channel [20:39] creationix: mde: yeah, the nitrode guy made his own framework because connect didn't stream files or work the way he wanted [20:39] Viriix has joined the channel [20:39] tjholowaychuk: digitalspaghetti: and eventually express(1) will create various types of apps [20:39] creationix: connect doesn't intent to compete with anyone, it's just a collection of utilities for framework makers to use [20:39] mde: Heheh. That's always a good reaason, I guess. "It doesn't do what I want." :) [20:39] digitalspaghetti: tjholowaychuk: this is how i am doing stuff just now: https://gist.github.com/61099cce3b11d49c5058 [20:39] creationix: and the more that use it, the higher quality the components will become [20:40] digitalspaghetti: apps_organisation_location_models.js should be /, thats how i'm organising it in directories [20:40] mde: Right, that totally makes sense. I would love to componentize everything so it could run on Connect and Jack-based stacks as well. [20:40] mde: Or JSGI, or whatever people are calling it today. [20:40] digitalspaghetti: tjholowaychuk: then on top, I have an ExtJS app that uses a HttpProxy to call REST methods [20:41] creationix: compat with jsgi is a harder problem than I want to tackle right now [20:41] creationix: digitalspaghetti: heh, I have one too, for an internal demo I've been working on [20:41] digitalspaghetti: I want to try extract out the .sync stuff and have some kind of init scripts, since those will only need to be called once [20:41] mde: Right, I was envisioning some sort of adapter for Geddy that would handle that part. [20:41] creationix: mde: sure, fine by me [20:42] tjholowaychuk: digitalspaghetti: ah gotcha :). unfortunately passing an app to several files is a bit wonky, but i have examples that do that if you are [20:42] tjholowaychuk: interested in seperating some logic into different files [20:42] tjholowaychuk: or even just for routes [20:42] mde: creationix: Seems like the approaches are very different. [20:42] creationix: I'm a little concerned that geddy, nitro, grasshopper and others don't use connect, seems like we didn't make it useful enough [20:42] saikat: is there anything specifically significant about node hitting 0.2 instead of 0.104? [20:42] digitalspaghetti: tjholowaychuk: yea, basically i'm using the Django-app style here [20:42] saikat: er [20:42] saikat: 0.105 [20:42] creationix: express uses it, but tjholowaychuk wrote half of connect [20:42] digitalspaghetti: seperating each model in the app out into seperate views [20:43] digitalspaghetti: then on the front end, I can call the approriate REST resource uri [20:43] creationix: (over half if you count tests and docs) [20:44] creationix: the grasshopper guy said he would have used connect, but it wasn't out yet when he started [20:44] tjholowaychuk: whats grasshopper [20:44] creationix: tjholowaychuk: http://howtonode.org/grasshopper-shoutbox [20:44] creationix: http://github.com/tuxychandru/grasshopper [20:44] mde: It's a continuum between 'enabling' and 'imposing' MVC. :) [20:44] mde: And everybody draws the line in a different place. [20:45] tjholowaychuk: hm [20:45] creationix: I thought that by making connect 100% modular people could pick and choose the parts they wanted [20:45] creationix: so it would work for about anyone [20:45] creationix: if you don't like how connect serves static files, then fine, write your own module [20:46] creationix: but you can still use the rest of the framework [20:46] mde: Right, that sounds like the perfect approach. [20:46] danielzilla has joined the channel [20:46] tjholowaychuk: its working well for my needs [20:46] bradleymeck: you can always write your own module , pretty easy in connect [20:46] creationix: maybe I just don't market it right [20:46] tjholowaychuk: building Express on it helped with some design decisions too as far as making it more framework friendly [20:46] creationix: plus there are many that want to use connect directly as a app framework and don't want a layer on top [20:47] bradleymeck: connect: filtering your logic for you~ [20:47] mde: creationix: I think it's also still super-early in the lifecycle of the Node ecosystem. [20:47] creationix: mde: nah, just early [20:47] creationix: super-early has passed ;) [20:47] mde: Heheh [20:47] mde: Depends on your definition of 'super.' :) [20:47] mscdex: ultra-early! [20:47] mscdex: the best early ever [20:47] creationix: ultra > super [20:47] Validatorian: did something change with the default directory for node libraries, ~/.node_libraries, or how they are included or something? [20:47] mde: Double-secret-uber-early. [20:48] creationix: Validatorian: not that I know of [20:48] creationix: Validatorian: type require.paths in the repl [20:48] ryah: .names [20:48] creationix: Validatorian: well, I do know that it now looks for the module without extensions first [20:48] creationix: foo, foo.js, foo.node [20:48] saikat: creationix: are they using JSGI instead? some might have a preference for the whole commonjs way of doing things [20:49] creationix: saikat: no they are all home grown [20:49] creationix: I don't worry about things commonjs based [20:49] Validatorian: well, I have twitscript.js in ~/.node_libraries/ root and in ~/.node_libraries/twitscript, and require('twitscript') is telling me that it cannot find the module. [20:49] creationix: I'm not concerned with that mindshare yet [20:49] creationix: Validatorian: what is the value of require.paths? [20:49] jacobolu_ has joined the channel [20:50] creationix: are you running it with sudo or something? [20:50] raymorgan has joined the channel [20:51] creationix: saikat: the primary goal of connect is to keep people from having to reinvent the wheel for low-level things like parsing cookies, serving static files, http redirects, sessions [20:51] digitalspaghetti: creationix: the less boilerplate and less coupling, the better [20:51] Validatorian: node> require.paths [20:51] Validatorian: [ '/home/paf/.node_libraries', '/usr/local/lib/node' ] [20:51] tjholowaychuk: weird that grasshopper thing just kinda rolls its own session etc in the lib [20:51] tjholowaychuk: and i18n :s [20:51] Validatorian: and no, not running it as root (though I tried, and same error) [20:51] tjholowaychuk: grr [20:51] saikat: creationix: yeah i understand [20:52] creationix: Validatorian: ok, then /home/paf/.node_libraries/twitscript.js should be found [20:52] creationix: saikat: but if it's not working, then I need to change it. Maybe I'm just not patient enough [20:53] creationix: plus if people will reinvent-the-wheel just because it's fun, there isn't much I can do about that ;) [20:53] Validatorian: creationix: agreed :) ls /home/paf/.node_libraries/ shows twitscript.js [20:53] creationix: Validatorian: no clue then [20:53] creationix: Validatorian: try passing in the absolute path [20:53] zemanel has joined the channel [20:54] creationix: saikat: I just don't want people to feel that they have to re-implement things found in connect because connect isn't flexible enough for them [20:54] saikat: yeah fair point [20:54] saikat: i doubt that's the reason [20:54] saikat: i [20:54] saikat: i'd be willing to bet that it's still recent enough that enough people started their stuff before connect existed [20:54] creationix: that's basically what the nitrode guy told me [20:54] tjholowaychuk: creationix: hopefully that is not the case, it basically does nothing by default [20:54] tjholowaychuk: (which is good obviously) [20:54] saikat: he thought it wasn't flexible enough? [20:55] saikat: interesting [20:55] tjholowaychuk: nitrode looked like a clusterfuck from what i saw [20:55] creationix: well, didn't say flexible enough, he just found a part he didn't like and decided the whole thing was no good [20:55] tjholowaychuk: followed it,viewed source, unfollowed [20:55] creationix: ok, then I'll cool down and just continue polishing connect [20:55] digitalspaghetti: q: can I pass switches to my apps that I can make global vars? [20:56] tyfighter has joined the channel [20:56] creationix: maybe a howtonode article about how to roll your own connect based mvc framework ;) [20:56] saikat: heh that is a perennial problem with developers. i mean you guys have done a pretty good job of making it easy to get started with it [20:56] digitalspaghetti: like node app.js --foo='bar' and make the foo value available? [20:56] saikat: which is usually what i think frameworks do wrong when they have so much else going well for them [20:56] mscdex: digitalspaghetti: there are a few option parsers for node [20:56] creationix: digitalspaghetti: that's a terrible security hole, but sure, you could do that [20:56] tjholowaychuk: digitalspaghetti: process.argv? you can do nuts with that however you like [20:56] Validatorian: ah, I found the issue creationix -- cat ~/.node_libraries/twitscript.js returned "too many levels of symbolic links" -- make it only one level and now it works :) [20:57] creationix: Validatorian: interesting [20:57] digitalspaghetti: tjholowaychuk: ahh, i was looking in sys, bad python habit :) [20:57] creationix: Validatorian: glad it works now :) [20:57] pquerna_ has joined the channel [20:57] tjholowaychuk: digitalspaghetti: :d [20:57] rwaldron has joined the channel [20:58] c4milo has joined the channel [20:58] creationix: tjholowaychuk: how would you feel if I made a creationix flavored app framework that competed with express just to show that connect is flexible? [20:59] tjholowaychuk: creationix: how does that show that its flexible if it is doing the same stuff as express lol [20:59] creationix: tjholowaychuk: no, it would be different [20:59] creationix: use some custom middlewares [20:59] mde: creationix: Yeah saikat hit it on the head. At this point, I have to go backwards and pull stuff apart that's working. It's on the list of stuff to do, but there are other things I need to do first. [20:59] creationix: by "compete" I mean the same level [21:00] SubStack: I'm planning on using connect for my dnode-based framework [21:00] creationix: mde: yeah, I'm not too worried about you, geddy was way before connect [21:00] SubStack: it will make your puny brains melt [21:00] creationix: plus you want to eventually support jsgi too [21:00] _announcer: Twitter: "It seems @seeflanigan forked Sinon.JS to brush up its Node.js compliance. Awesome! http://github.com/seeflanigan/Sinon.JS" -- Christian Johansen. http://twitter.com/cjno/status/21694492605 [21:00] creationix: SubStack: :P [21:00] saikat: creationix: the people who aren't willing enough to get past a single part they dislike in a framework won't look at how you implemented your framework using connect. [21:01] saikat: i don't think at least [21:01] mde: creationix: And I also think it's ... okay, maybe slightly post-super-early. You just have to wait and let it pick up steam. :) [21:01] saikat: utf-8 is default now for everythnig right? [21:01] bradleymeck: connect's router will only match 1 path, correct [21:01] teemow has joined the channel [21:01] charlesjolley- has joined the channel [21:01] mde: saikat: Yeah, lots of people look for an excuse to DYI. Because it's fun. [21:01] saikat: i hope i didn't just make a false comment on HN [21:01] creationix: well, either way, I should probably have my own framework so I stop trying to make connect be a framework on it's own [21:01] tjholowaychuk: bradleymeck: correct, but you can next() and continue matching [21:01] creationix: right tjholowaychuk? [21:02] mde: creationix: You definitely need your own framework. I thought everybody had one already. :) [21:02] mscdex: is there a way to swap out connect's caching mechanism? [21:02] tjholowaychuk: creationix: IMO that is ideal, I never once thought of connect as a framework on its own [21:02] creationix: mde: right, and DYI for fun is great, they can use connect for ideas [21:02] mde: Exactly, it's the best way to learn stuff. [21:02] creationix: I'm worried about the people who are on deadlines and just want to get something working and don't have the luxary to re-invent everything [21:02] SteveDekorte has joined the channel [21:03] saikat: creationix: connect processes new HTTP requests right? is it possible to plug it into a socket.io app and have my websockets messages pass through connect layers? [21:03] mde: creationix: Yeah, in that case the OOTB experience is the key. And it looks like you have that nailed. [21:03] mscdex: :S [21:03] creationix: saikat: sortof [21:03] saikat: (since each message is not a separate HTTP request) [21:03] mscdex: saikat: it is if it's long poll [21:03] creationix: saikat: currently socket.io hijacks the request handler and connect never gets a change [21:03] creationix: *chance [21:03] saikat: ah i see [21:03] saikat: mscdex: it's not. well, not usually. [21:04] creationix: but I'd love to see something like socket.io implemented as a proper middleware layer [21:04] mscdex: it has to be a new request if it's long poll [21:04] mscdex: it's not duplex [21:04] mscdex: :S [21:04] saikat: yeha of course [21:04] saikat: j [21:04] saikat: ust saying most of my users are on fairly new browsers [21:04] saikat: and using websockets [21:04] mscdex: i see [21:04] saikat: or multipart [21:04] creationix: mde: I did have my own framework, remember node-router, but when I ported it to connect there wasn't anything left [21:05] saikat: which i guess would work [21:05] jbrantly1 has joined the channel [21:05] mscdex: creationix: kuya (iirc) sent me an example of using grappler with connect, i'll be pushing that sometime in the near future [21:05] creationix: mscdex: neat [21:06] mde: creationix: Heheh, right on. Yes, Geddy started as a router too. [21:06] mscdex: i don't know how proper it is with regards to how it hooks into connect, but yeah [21:06] creationix: yeah, my other concern with connect is if it's flexible enough at the core [21:06] creationix: I think it is, but only time and people using it will tell [21:06] creationix: I'm willing to change it if needed [21:07] c4milo: excuse my ignorance but what the hell is Node Knockout [21:07] c4milo: ? [21:07] tjholowaychuk: c4milo: rails rumble ish [21:07] creationix: c4milo: it's a contest next weekend [21:07] tjholowaychuk: for node [21:07] tjholowaychuk: lol [21:07] c4milo: where ? [21:07] creationix: c4milo: teams will try to make the best node program in 48 hours and there are lots of prizes [21:07] creationix: c4milo: all over the world, but some teams have local HQs [21:07] saikat: i'm hoping another one happens soon. i had to drop out last minute =/ [21:07] confoocious has joined the channel [21:08] ironfroggy: Is socket.IO supposed to pick transports based on the browser, or do i need to do that myself? [21:08] Blackguard has joined the channel [21:08] creationix: ironfroggy: it should auto-detect [21:08] c4milo: oh, how many people is registered ? [21:08] creationix: c4milo: lots 195 teams [21:09] c4milo: let me guesss how invented that name [21:09] saikat_ has joined the channel [21:09] creationix: http://nodeknockout.com/teams [21:09] c4milo: Marak [21:09] c4milo: who [21:09] JimBastard: ? [21:09] c4milo: Marak !! [21:09] ironfroggy: creationix: in that case, is there currently any trouble with the WebSocket implementation on Firefox 3.6? had to tell it to use xhr-polling. [21:09] c4milo: did you invent that name ? [21:09] JimBastard: http://nodeknockout.com/teams/the-nyc-nodejitsu-ninjas [21:09] creationix: ironfroggy: I believe so [21:09] ironfroggy: if i need to fallback to xhr-polling and just add websocket to the list on known-good browsers, that fine with me [21:09] c4milo: JimBastard: ! [21:10] saikat_: ironfroggy: there is no websockets in FF 3.6 [21:10] saikat_: as far as i know [21:10] mscdex: ironfroggy: fwiw i've use grappler and flash websockets on ff 3.6.* [21:10] saikat_: though it can use something better than xhr-polling [21:10] saikat_: it has multipart which is an FF thing [21:10] c4milo: wow, the sponsor list is huge [21:11] ironfroggy: saikat_: "typeof WebSocket === "function"" would beg to differ [21:11] ironfroggy: but i think it differs from what chrome has and doesnt work [21:11] saikat_: interesting [21:11] mscdex: s/use/used [21:11] creationix: wow, there are a lot of node.ko judges! [21:11] saikat_: ironfroggy are you sure that the WebSocket object doesn't exist simply because flashsocket adds it? [21:11] saikat_: exists* [21:11] mjr_: we are going to judge the shit out of that contest! [21:12] creationix: too bad they are sorted by first name, I always preferred last name ;) [21:12] ironfroggy: saikat_: maybe. i dunno where it comes from. [21:12] joshbuddy has joined the channel [21:12] creationix: at least that puts me right by tjholowaychuk [21:12] ironfroggy: but i know if i dont pass any transport list, socket.io tries to use it on ff 3.6, but it doesnt work. [21:12] mscdex: i think Crockford should offer a Crockford Files boxed set as one of the prizes [21:12] tjholowaychuk: weeee [21:12] mscdex: :-D [21:12] visnup: creationix: write me a mongo query to sort a space separatedish string by last name :P [21:12] saikat: ironfroggy: http://jimbergman.net/websocket-web-browser-test/ [21:12] ironfroggy: its fine. just sticking with xhr-polling now. i just need it to work right now. i have had enoguh futzing for the week! [21:13] creationix: visnup: sorry, I've never used mongo [21:13] saikat: i'm pretty sure if you have flashsocket enabled, it adds WebSocket to the window, so you will see that "websockets" exists [21:13] Throlkim has joined the channel [21:13] visnup: creationix: I kinda wanted to just randomize the list too [21:13] creationix: visnup: change on each load, that would be fun [21:13] ironfroggy: saikat: you are right then. so its flashsocket that isnt working on ff 3.6 for me [21:13] mde: I'm so stoked we got Alex Russell involved. He's been in hiding too long. :) [21:14] tjholowaychuk: visnup: should just create ~5-10 Buffers w/ different sorts and % that shit [21:14] saikat: yeah, i have also had trouble with flashsocket, but i haven't tried to fix it yet [21:14] saikat: soon [21:14] mscdex: hmm, i've had no trouble on windows or linux ff 3.6 [21:14] visnup: tjholowaychuk: hah [21:14] mjr_: visnup: I think random would be cool. You could always do it client-side as well. [21:14] dylang has joined the channel [21:14] creationix: visnup: or node side (client to mongo) [21:14] _announcer: Twitter: "Testing Djangod: Django port node in JS! Hourrrra!" [de] -- Warry. http://twitter.com/iamwarry/status/21695384845 [21:14] saikat: yeah, i've yet to figure out if it's me or socket.io that's screwing up [21:15] visnup: k, I'll randomize.. going to randomize teams too [21:15] mscdex: and ff 4.0 websocket works fine as expected [21:16] creationix: herbySk: what's a setup section? [21:16] creationix: herbySk: re http://github.com/creationix/nstore/issues#issue/7 [21:17] ryah: http://github.com/ry/node/wiki/Library-compatibility [21:17] ryah: pls update [21:18] creationix: ryah: ok, if you insist ;) [21:19] herbySk: creationix: A section in README called "Setup" [21:19] tjholowaychuk: have never used that list :( [21:19] mde: ryah: Will do. :) [21:19] creationix: herbySk: oh, the docs aren't up to date for the rewrite branch, I'll update them once I have nStore stable again [21:19] aliudalius has joined the channel [21:19] saikat has joined the channel [21:20] creationix: ACTION has way too much to get done today, that's a good thing right? [21:20] _announcer: Twitter: "Well, not so good, testing Broke: Django port in Node JS ! Hourrra ! (-:" -- Warry. http://twitter.com/iamwarry/status/21695770155 [21:21] mde: creationix: If you enjoy all of the stuff you do, it's great to have too much of it, right? [21:21] mde: That's what I keep telling myself anyhow. [21:21] creationix: mde: it is, but it's very overwhelming [21:21] creationix: I never imagined doing open source full time would be so stressful [21:21] mde: Sometimes you feel like you have one too many plates spinning, yes. [21:22] mde: We're all pretty lucky to get to work on so much cool stuff though, all in all. :) [21:22] creationix: yep :D [21:23] tjholowaychuk: OSS FTW [21:23] creationix: well, at least updating the node wiki will give me a clear listing of the projects I need to actively support [21:23] bradleymeck: this combining regexps for router is making brain hurt [21:24] tjholowaychuk: bradleymeck: haha :p if you want u could tackle the stupid little :format bug instead :D im sidetracked [21:24] bradleymeck: i can take care of it if you point me to it [21:24] tjholowaychuk: bradleymeck: or maybe some quick substr stuff to filter out candidates, but not sure the router is a huge bottleneck [21:25] bradleymeck: its not [21:25] bradleymeck: but its something im interested in [21:25] tjholowaychuk: bradleymeck: `make test` w/ HEAD should break one assertion [21:25] tjholowaychuk: bradleymeck: stupid / simple little bug since /:id.:format? is a case where :id cant have a period [21:25] tjholowaychuk: well the capture group that it translates to [21:26] tjholowaychuk: not sure when that crept in [21:26] tjholowaychuk: pretty sure it used to be fine, maybe was just never tested properly [21:26] tuxsbro has joined the channel [21:27] bradleymeck: so on a period you just need to check (?!:[A-Za-z]) ...? [21:28] creationix: tjholowaychuk: oh the evil format bug [21:28] tjholowaychuk: ah there we go, no more stupid smilies lol [21:28] creationix: tjholowaychuk: does anyone use that middleware? [21:29] davidwalsh has joined the channel [21:29] tjholowaychuk: creationix: its a router bug [21:29] tjholowaychuk: not format [21:29] bradleymeck: i use the router, not the :key format [21:29] jbrantly1 has joined the channel [21:30] _announcer: Twitter: "@iamwarry I'm only discovering djangode, it seems interesting but I prefer the express approach for a micro framework #nodejs" -- Florent Messa. http://twitter.com/thoas/status/21696341445 [21:31] astrolin_ has joined the channel [21:31] aliudalius has left the channel [21:32] tjholowaychuk: creationix: but ya kinda doubt it with the format plugin, for small apps it would be nice but cant really assume that every *.\w+ is meant to be a "format" [21:33] tjholowaychuk: but hey i guess that is what optional stuff is for [21:33] mattikus has joined the channel [21:33] felixge has joined the channel [21:33] felixge has joined the channel [21:33] creationix: tjholowaychuk: yeah, I would just remove format [21:33] huyhong has joined the channel [21:34] creationix: people can write their own middlewares for custom stuff [21:34] tjholowaychuk: creationix: doesnt matter to me, impartial about that one [21:34] creationix: we just want the common and time-consuming-to-implement cases on connect [21:34] tjholowaychuk: at first it was just a little example for url rewriting [21:34] tjholowaychuk: but its kinda nice vs .:format? on every route [21:35] huyhong has left the channel [21:35] bradleymeck: im trying to figure out what .:format does diff than :format [21:35] maushu: Woot! [21:35] tjholowaychuk: bradleymeck: nothing really its just a bit of syntax to make it more legible [21:36] bradleymeck: woot? [21:36] tjholowaychuk: bradleymeck: but it consumes the period as well [21:36] _announcer: Twitter: "ExtDirect GridPanel w/ Connect on NodeJS! http://bit.ly/d1yB9V #extjs" -- Sencha. http://twitter.com/SenchaInc/status/21696744472 [21:36] tjholowaychuk: bradleymeck: otherwise you would have /users/:id:format or something [21:36] creationix: tjholowaychuk: sure, just bundle it with express then [21:36] creationix: dunno [21:36] tjholowaychuk: creationix: meh i dont personally use it [21:38] wink_: ACTION shoots himself [21:38] jedschmidt has joined the channel [21:38] danielzilla: Forgive the stupidity, but are ``.on`` and ``.addListener`` synonymous? [21:38] creationix: danielzilla: yes, .on is an alias [21:39] danielzilla: creationix: Cool. Is there a generally-preferred form? [21:39] creationix: danielzilla: .on is newer, use it [21:39] creationix: but both are fine [21:39] danielzilla: creationix: Thanks. [21:44] astrolin_ has joined the channel [21:44] dannycoates has joined the channel [21:44] _announcer: Twitter: "Been fooling around with node.js this afternoon. Got a nice little logging module that I wrote as proof of concept." -- Douglas Muth (Giza). http://twitter.com/dmuth/status/21697273177 [21:46] _announcer: Twitter: "Nice another tutorial for compiling #nodejs on windows http://boxysystems.com/?p=203" -- Tim Caswell. http://twitter.com/creationix/status/21697361117 [21:47] jackish has joined the channel [21:47] joshbuddy has joined the channel [21:47] joshbuddy has joined the channel [21:48] digitalspaghetti: anyone wanted to be added to the node-js twitter list? http://twitter.com/tanepiper/node-js [21:49] creationix: what do you get when you combine Crockford and Node? http://bit.ly/93B8WE A meetup with 350+40 RSVP's [21:49] creationix: digitalspaghetti: add me! [21:50] digitalspaghetti: creationix: yea, i wish i could go to that :( [21:50] digitalspaghetti: also, added [21:50] tjholowaychuk: crock is a pretty funny dude [21:50] creationix: that's twice the size of jsconf.eu [21:51] digitalspaghetti: That's a lot of Pizza :) [21:51] _announcer: Twitter: "@tanepiper Probably not, it's more to get familiar with node.js and CommonJS. I have some ideas for other projects, though." -- Douglas Muth (Giza). http://twitter.com/dmuth/status/21697701942 [21:52] tjholowaychuk: NOOO [21:52] tjholowaychuk: my energy drink is gone!!! [21:52] creationix: tjholowaychuk melts... [21:52] digitalspaghetti: i really shouldn't be drinking coffee at ten to eleven at night :) [21:52] tjholowaychuk: ragggeEEE [21:53] tjholowaychuk: yes you should [21:53] bradleymeck: im interested in crockford on node [21:54] hpoydar_ has joined the channel [21:54] tjholowaychuk: yeah me too, hopefully i remember to check the vids after [21:54] digitalspaghetti: well at least i managed to write a way around a missing feature in Sequelize .sync method by adding parseops and having a --init switch :) [21:54] _announcer: Twitter: "Just built new binaries for Ivy for node v0.2.0! http://github.com/creationix/ivy #nodejs #osx #linux" -- Tim Caswell. http://twitter.com/creationix/status/21697918718 [21:55] bradleymeck: mmm, i think the new compiling router is ready once i hook up the strings... /crosses fingers [21:55] tjholowaychuk: hehe [21:56] mjr_: I talked with Crockford at the Sencha meetup, and I asked him if he had written programs in node yet. He said, "not yet, but I'm looking forward to it." [21:57] digitalspaghetti: if there is anyone node.js needs as an advocate, it's Crockford :) [21:57] ink83 has joined the channel [21:57] mscdex: so we'll have real Crockford Files?! [21:57] digitalspaghetti: (although it doesn't really need one as it's so awesome) [21:57] creationix: I would love a node optimized version of jslint [21:57] creationix: with full es5 support and browser cruft removed [21:57] mjr_: Clearly sh1mmer rolls with the Crock, so he's getting fed good information. [21:57] bradleymeck: we have a node jslint... its not optimized, but its there [21:57] creationix: (and allows bitwise operations) [21:58] rektide: ryah: i'm headed home, but thanks for the twitter reply [21:58] bradleymeck: still have to provide the flags yourself though [21:58] mjr_: creationix: you can relax the bitwise thing as a jslint option. [21:58] creationix: mjr_: yeah, but some things don't work at all in jslint [21:58] bradleymeck: i should add es5 to it, but jslint is oddly organized [21:58] creationix: like const [21:58] mjr_: Yeah, some valid syntax does indeed blow up jslint. [21:58] bradleymeck: const is a lie! [21:58] creationix: or keywords in places that es5 allows them [21:59] rektide: will be delighted to see joyents awesome platform. :) [21:59] rektide: bye all [21:59] mscdex: who uses const? [21:59] creationix: mscdex: I do [21:59] creationix: just for fun [21:59] bradleymeck: es harmony ppl, devils [21:59] mscdex: :S [21:59] mjr_: The goggles, they do nothing! [21:59] creationix: not sure it actually makes a difference [21:59] bradleymeck: it doesnt [21:59] bradleymeck: just blows up if you try to set the var [21:59] creationix: if anything it documents my intent in the code [21:59] creationix: bradleymeck: that's something [21:59] bradleymeck: well, it should, v8 just doesnt overwrite [22:00] mscdex: String.freeze() :p [22:00] mjr_: I think it does something on Mozilla. [22:00] bradleymeck: if i remember right they are completely removing what const does in v8 [22:00] mjr_: Which is fascinating, but not that relevant for node. [22:01] loincloth has joined the channel [22:01] creationix: I also have fun using Object.seal and Object.freeze to prevent my from throwing v8 into the slow mode [22:02] creationix: and enforce "good" coding practices [22:02] mscdex: i always get those two mixed up [22:03] creationix: freeze is the stricter one [22:03] tg has joined the channel [22:03] creationix: seal just locks the keys, freeze locks the values too [22:03] mscdex: ah [22:03] creationix: but v8 optimizes the heck out of objects that never change their keys [22:04] creationix: I use freeze mainly on prototypes that I don't want getting accidentally changed. [22:04] mscdex: like how? [22:04] mscdex: like memory usage or? [22:04] tjholowaychuk: what if i want to fuck w/ the prototype [22:04] tjholowaychuk: thats the glory of js! mess with everything lol [22:04] creationix: mscdex: it actually compiles them into structs at the jit level [22:05] creationix: and property lookups are MUCH faster that way [22:05] mscdex: i see [22:05] mscdex: interesting [22:05] bradleymeck: creationix, make a shadow prototype behind the prototype so i can mess with protos? [22:05] creationix: tjholowaychuk: well, then only lock things you don't want changing [22:05] creationix: I also freeze Object.prototype to ensure any third party libs I use don't play dirty [22:06] tjholowaychuk: but you add stuff to Object.prototype in connect lol [22:06] creationix: bradleymeck: yeah, that's what I do [22:06] bradleymeck: oh, thats fine then [22:06] creationix: bradleymeck: http://github.com/creationix/nstore/blob/rewrite/test/findTest.js#L4 [22:06] creationix: for nStore plugins you can't change the nStore prototype, but you can create a new prototype that inherits from the original nStore [22:06] creationix: and then replace the local reference [22:07] _announcer: Twitter: "Exactly what I need. Thanks Charles. ExtDirect GridPanel w/ Connect on NodeJS! http://goo.gl/b/FzcJ #ExtJS #MongoDB" -- Oleh Burkhay. http://twitter.com/atmaworks/status/21698733630 [22:08] creationix: tjholowaychuk: not anymore [22:08] tjholowaychuk: creationix: got rid of forEach() ? [22:08] creationix: tjholowaychuk: does connect still have Object.prototype.forEach? [22:08] creationix: if it does, we should remove it [22:09] tjholowaychuk: creationix: yay [22:09] creationix: tjholowaychuk: I use this now http://github.com/creationix/nstore/blob/rewrite/lib/hash.js [22:09] tjholowaychuk: lol [22:10] creationix: I've realized that changing global prototypes isn't a good idea [22:10] creationix: for globals or third party modules [22:10] creationix: what if some other library uses the same third party module and you changed the prototype? [22:10] creationix: hence my shadow method with connect plugins [22:11] creationix: err nStore plugins [22:11] RedMike has left the channel [22:11] sh1mmer has joined the channel [22:11] herbySk: creationix: with NODE_CONTEXT_MODULES you're free to - they're yours and yours alone... (bring another issues, though) [22:11] creationix: herbySk: yeah, and most people don't enable that or even know about it [22:12] herbySk: (to rewrite Object.prototype etc. what you like) [22:12] herbySk: :=) [22:13] creationix: herbySk: btw, do you still think my class.js stuff is crazy? just wondering, not looking to debate [22:13] tjholowaychuk: its just not good to consider Object a Hash ala Ruby [22:13] _announcer: Twitter: "Strenuous nodejs first steps. Doku lousy, weak erschwerden tutorials to get started. yes Is a hearty break with the "old" world." [de] -- Andreas Ulrich. http://twitter.com/Nilpointer/status/21699109351 [22:13] creationix: tjholowaychuk: I wish you could tell JSON.parse what class to use for objects [22:13] creationix: maybe you can with the hook functions, not sure [22:14] tjholowaychuk: creationix: yeah would be kinda nifty, sure you could hack it in [22:14] tjholowaychuk: bson style or something [22:14] creationix: I'm pretty sure V8's JSON.parse implements the hook functions [22:15] creationix: hmm, or is that just for JSON.stringify [22:15] KungFuHamster_ has joined the channel [22:16] _announcer: Twitter: "#windows camp, here's your #nodejs install in a few easy steps http://j.mp/aAvfG8, get to it =)" -- hij1nx. http://twitter.com/hij1nx/status/21699272777 [22:16] herbySk: creationix: I bought the idea that I should use JS power as-is, and I still think final&co. are "considered harmful". These things heklp avoid some kind of errors, but demand workaround in complex scenarios... it's like (taken ad absurdum) telling statically typed languages are better because compiler checks some kind of errors [22:17] charlesjolley- has joined the channel [22:17] herbySk: but I really like the extend syntax sugar; though I'd use it as I sent in that gist som e day ago [22:17] creationix: herbySk: ok, cool [22:17] visnup: just tried throwing gravatars on the huge /team page.. 500 gravatar requests isn't so cool. [22:17] creationix: visnup: nope [22:17] tjholowaychuk: haha [22:17] tjholowaychuk: shit [22:18] creationix: herbySk: so it would work like sys.inherits? [22:18] mape: visnup: pre process and use my asset manager! :D [22:18] hsuh has joined the channel [22:18] webr3: does v8/node implement more than just ecmascript-262 v3? ie looking likes there's version 5 functionality in there [22:18] visnup: mape: haha that's what gerad just suggested [22:18] mape: Do it! And let me know if the code breaks [22:18] visnup: mape: I dislike the idea of running a job to keep pre-processing [22:19] hsuh_ has joined the channel [22:19] mape: visnup: Better to have shitty frontend performance? :S [22:19] visnup: btw, if it wasn't obvious for a node.js coding contest, a high percentage of contestants have gravatars [22:20] mjr_: what with the github and all. [22:20] visnup: the other idea is paging.... [22:20] benburkert has joined the channel [22:20] visnup: mape: checking out asset manager [22:20] mape: visnup: shouldn't be that hard to do preprocessing, unless the page changes all the time? [22:21] mjr_: visnup: even if you could fit them all on a page that you delivered quickly, it seems like it'd end up crushing a lot of links and browsers. [22:21] mjr_: Paging sounds better to me. [22:21] Tobsn: how do i get a graphic card fan to burn out... [22:21] creationix has joined the channel [22:21] webr3: stick a pen in the fan(s) and play games [22:21] herbySk: creationix: yes, but this allows to give methods in onoine object instead of "ClassName.prototype.name = func..." over and over (plus throwing in a constructor, as I did in that gist) [22:22] webr3: oh fan, not the whole thing [22:22] mape: visnup: Let me know if it makes no sence but it should be easy enough [22:23] visnup: mape: I'd need to use both assetmanager and -handlers? [22:24] mape: Well handlers are post/pre hook [22:24] mape: The core is just to manage the groups and minification, as well as serving to different user agents [22:24] mape: The post/pre hooks allows you to modify the content using functions [22:25] mape: Stuff like turning -vendor-** into ***; -moz-**; -webkit-**; -o-**; -ms-**; or use external compressions like google closure/YUI compressor or UglifyJS [22:25] visnup: got it [22:26] visnup: mape: so idea is: go grab all of the images, dump them in a directory, then just asset package them all up.. ? [22:27] mape: visnup: Well, pipe it to a css file, use data-url(/cache/path/to/file.png) and it will base64 encode it and inject into the css [22:27] halorgium has joined the channel [22:28] mape: The only issue I see is that my manager generates the css and caches it as a buffer to get better performance [22:28] dipser: base64 is longer [22:28] JimBastard has joined the channel [22:28] mape: For sure, but not so bad with gzip, and better without hundreds of http requests [22:28] JimBastard: lol installing node on windows 7 [22:28] tjholowaychuk: yeah beats ~500 requests lol [22:29] tav has joined the channel [22:29] adamholt has joined the channel [22:30] mape: visnup: it does have file watch hooks native, so if you were to touch the file it should regenerate the file again [22:30] tobiassjosten has joined the channel [22:30] visnup: mape: ooh.. [22:30] davidc_ has joined the channel [22:31] visnup: mape: k, I'm going to wait until mondayish when we move the website to joyent [22:31] mape: So just update the external css it will update, pretty easy to just make a function that pipes all avatar paths into a css and trigger modify [22:31] visnup: so that I can have a job that grabs them all at a regular interval [22:31] mape: Let me know if you need any help [22:32] streampunk has joined the channel [22:32] mape: That makes no sense.. "So if you update the external css it will update the buffer cache of the css" [22:32] visnup: mape: will do [22:34] mape: visnup: Oh and make sure the images are under 32kb [22:34] bradleymeck: lol, eval [22:35] mape: The handler for inlining images as base64 only uses files less then 32kb since IE8 and above doesn't like big files [22:35] rkieffer has joined the channel [22:35] visnup: mape: haha.. k they're like 800 bytes each [22:36] Dmitry1 has joined the channel [22:36] mape: Then it should be perfect [22:37] bradleymeck: it works!, need to check the params [22:38] _announcer: Twitter: "@jezhiggins I have tried node.js, SpiderMonkey is next on the list (HomeBrew is building it as I type this)." -- Damian Cugley. http://twitter.com/damiancugley/status/21700597895 [22:38] _announcer: Twitter: "By any chance, anyone knows how to get the actual POST body with Expressjs? #nodejs" -- superfeedr. http://twitter.com/superfeedr/status/21700617372 [22:39] mape: !tweet @superfeedr app.use(connect.bodyDecoder()); and req.body; [22:40] mape: meh crappy bot [22:40] tjholowaychuk: he posted an issue too, was wondering about xml request bodies [22:41] tjholowaychuk: which just pass through since bodyDecoder does not support it [22:41] mape: Oh [22:41] tjholowaychuk: i tweeted back too then saw that haha oh well [22:41] mape: then I just wasted a tweet [22:41] mape: How awful [22:42] tjholowaychuk: mape: were you the one using ejs? cant remember [22:42] mape: Yeah [22:42] tjholowaychuk: adding kinda experimental "filter" support ala the liquid template engine [22:42] tjholowaychuk: will push it in a sec just doing up some docs [22:44] rsms: isaacs[away] or anyone else with npm experience: What does this mean when publishing for the first time: "Error: conflict Document update conflict" [22:44] isaacs[away]: rsms: looks like tim-smart already published it ;) [22:44] rsms: ...or maybe someone else has published it? Is that possible? [22:44] isaacs[away]: but it's clearly yours [22:44] mape: It is already there? [22:45] rsms: isaacs[away]: oh... [22:45] isaacs[away]: so i'll delete it and you can do it [22:45] rsms: isaacs[away]: haha. okay, thanks [22:45] rsms: isaacs[away]: so there's no verification -- anyone can publish anyones code? [22:45] junkee[] has joined the channel [22:45] mape: isaacs[away]: started poking on the package.js thingy http://mape.me:1343/ [22:46] isaacs[away]: rsms: ok, try to publish again [22:46] mape: probly done tomorrow, to be judged if it is useful [22:46] isaacs[away]: rsms: the first person to publish owns it. they can add additional owners by doing npm owner add soandso package [22:47] rsms: isaacs[away]: I think it included _all_ files in the current directory :/ [22:47] mu-hannibal has joined the channel [22:47] markwubben has joined the channel [22:47] isaacs[away]: rsms: and i'm the king of the registry, so if someone publishes something you think should be uyours, lmk and i'll fix it [22:47] isaacs[away]: rsms: you can use .npmignore or .npminclude to configure what it publishes [22:47] isaacs[away]: rsms: they're both files that go in the root of the package, and they're globs for ta [22:47] isaacs[away]: tar [22:48] isaacs[away]: mape: nice, this is the thing that constructs the initial package.json for you? [22:48] rsms: isaacs[away]: oh, damn... can you please remove the imagemagick package again :P Maybe good to add a note about those files in http://github.com/isaacs/npm/blob/master/doc/developers.md#readme [22:49] isaacs[away]: rsms: ok, deleted [22:49] mape: isaacs[away]: Yeah that is the idea, point it to a git repo, and it will get as much info as possible, get the file list and make a file tree, let you click that, check if you want to enter extra info and get a copy paste version to get started with [22:49] isaacs[away]: rsms: you can also do "npm unpublish pkg@version" [22:49] isaacs[away]: mape: neat [22:49] rsms: isaacs[away]: just a thought: maybe require a manifest? barf when there is none, so people don't accidentally upload 100MB files (I usually keep tens and sometimes hundreds of megs in the same directory with test matter and other stuff). [22:49] mape: Just got started with the github fetching before beer wanted my attention, but should be pretty easy to finish [22:50] isaacs[away]: rsms: i dunno. most packages are tiny by default. requiring a manifest seems uncomfortably debiany [22:50] rsms: isaacs[away]: yeah, maybe [22:50] bradleymeck: ACTION cackles maniacly [22:50] isaacs[away]: rsms: i could copy the .gitignore if there is one, and use that as the .npmignore [22:50] creationix has joined the channel [22:50] SubStack: mape: how do you route subdomain traffic on mape.me? [22:51] mape: SubStack: right now I'm using apache :S [22:51] isaacs[away]: ok, need to leave for real and get some packing done. it's package management irl! [22:51] mape: SubStack: how come? [22:51] SubStack: just curious [22:52] SubStack: I'll need to setup some node services behind subdomains soonish [22:52] mape: nginx is probly better [22:52] mape: but will still choke if you need something like websockets [22:53] SubStack: :/ [22:53] rsms: mape: why would nginx choke for websockets? [22:53] mape: rsms: No idea why, but from what I've heard it is no good [22:54] mape: "Out of the box (i.e. official sources) Nginx can establish only HTTP 1.0 connections to an upstream (=backend), which means no keepalive is possibe: Nginx will select an upstream server, open connection to it, proxy, cache (if you want) and close the connection. That's it.! [22:55] rsms: mape: nginx is basically a very fast async socket server. It naturally performs well with network I/O. Here's some details http://blog.hunch.se/2009/10/10k-comet-connections -- I used that code for a live installation (an ad campaign) at the central station in Stockholm. Heavy pressure, no problems. [22:55] mape: rsms: well that isn't websockets? [22:55] creationix: yeah, keep-alive doesn't matter for websockets [22:55] creationix: you don't connect that often [22:56] rsms: mape: ah, now I see -- doesn't cope well with HTTP proxying etc. Yes, that's true. But that's not really nginx I'd say. [22:56] rsms: mape: what is websockets? [22:56] rsms: mape: is an open connection [22:56] mape: rsms: sockets on the web..? :P [22:56] creationix: websockets are http connections that get "upgraded" to full duplex and have their own framing [22:56] rsms: mape: doesn't matter what bytes float through. The push module could be used to "speak" websocket protocol (including the upgrade thingy) with some modifications. [22:57] creationix: rsms: I thought the push module was for nginx to hold the connection for the backend (for php and ruby backends) [22:57] mape: rsms: Like I said, don't really know why, just know people haven't had much luck with it [22:58] rsms: creationix: nope. php is naturally incompatible with any persistent connections (when used though fcgi or cgi). [22:58] rsms: mape: :) [22:58] creationix: rsms: exactely, that's why things like orbited and nginx push were made [22:58] creationix: so php could push to nginx and nginx would hold the long connection [22:59] rsms: creationix: ah, yes. [22:59] mscdex: creationix: it's not really a true HTTP upgrade. the upgrade request is the handshake [22:59] creationix: mscdex: sure, I don't even know the details of the latest spec, but the idea is the same right? [22:59] creationix: it comes in as plain http, but with special headers, gets "upgrades" to a full-duplex socket connection [22:59] mscdex: nope [23:00] mscdex: it's not http [23:00] mscdex: heh [23:00] mscdex: it looks and smells like it, but it's not by design [23:00] creationix: mscdex: it was back when I implemented it [23:00] mscdex: that's one of the current problems [23:00] rsms: creationix: the push module is basically a queue which you can GET (pop) from and POST (push) to. [23:00] mscdex: draft 76 is not [23:00] mscdex: draft 75 is "http compliant" [23:00] creationix: rsms: yeah, that's what I thought [23:00] rsms: :) [23:00] creationix: mscdex: ok, I implemented 75 [23:01] mscdex: but 76 adds extra bytes after the headers [23:01] mjr_: mape: I'm surprised that you don't have a node-based reverse proxy based on Host: headers. [23:01] mscdex: which is designed to break any middleman type of proxy [23:01] mjr_: That handles WS properly, HTTP/1.1, etc. [23:01] mscdex: to ensure that the connection between the client and server is direct [23:01] rsms: mscdex: creationix: related link: http://www.whatwg.org/specs/web-socket-protocol/ [23:01] mape: mjr_: Well I'm more of a fluffy person [23:01] creationix: mjr_: I've found that node's clients are too slow for reverse proxy [23:02] mscdex: i'm aware of the websocket protocol :-) [23:02] mjr_: creationix: what's the performance issue with client? [23:02] creationix: mscdex: interesting [23:02] creationix: mjr_: well, I mainly tested http.Client, maybe something using net.Client with manual http parsing would be better [23:03] mscdex: the only reason websocket draft 76 works with node is because node just uses a workaround that passes in whatever is left at the end of the packet after the headers [23:03] creationix: mjr_: you know all about using the http parser standalone ;) [23:03] mscdex: but reverse proxies like haproxy are http compliant and can't just start sticking in exceptions for any new protocol that comes out [23:03] creationix: mscdex: so this websocket thing is meant to be hard to host? [23:03] mjr_: creationix: yeah, it seems pretty fast to me, but I haven't tested client at load. [23:04] mscdex: creationix: it's more or less designed to be such that the server is a websocket-only server [23:04] creationix: mscdex: oh, then why make it look like http at all? [23:04] digitalspaghetti: goddamit, I've managed to get myself into circular reference hell :/ [23:04] mscdex: unless you have a server or reverse proxy that has a workaround/hack like node does [23:04] mjr_: creationix: I'd like to help quantify this, what test did you use that shows it slow? [23:05] creationix: mscdex: and have all the same origin crap [23:05] digitalspaghetti: ACTION is having Python sweats all over again [23:05] creationix: mjr_: it was a while ago, but I was basically using the http request and doing sys.pump style proxying [23:05] creationix: mjr_: and it was about 5 times slower to consume http than to serve it [23:05] mscdex: creationix: i'm not sure exactly, but there are several threads on the websocket mailing list about making it conform to http and still be secure [23:06] bradleymeck: tj, a bit more testing and the new router should be done XD can check its speed on high load later [23:06] hpoydar has joined the channel [23:06] mjr_: creationix: do you still have the test? [23:06] mscdex: which is a good thing, because then reverse proxies can forward websocket requests again [23:06] tjholowaychuk: bradleymeck: nice :D [23:06] mscdex: without needing hacks [23:06] creationix: mjr_: no sorry [23:06] ryah: http://github.com/ry/node/wiki/Library-compatibility [23:07] ryah: ^ ^ ^ ^ ^ [23:07] mscdex: lol ryah [23:07] ryah: :) [23:07] mscdex: i added mine already [23:07] gwoo: ryah: congrats on 0.2 [23:07] mjr_: ryah: maybe you could edit the descriptive text at the top about "API changes rapidly" [23:07] mjr_: Because 0.2 isn't going to change rapidly. [23:08] tyfighter has joined the channel [23:08] mscdex: alright, work time! [23:08] mscdex: ACTION puts his node.js thinking cap on [23:08] rsms: By the way, what have happened to GitHub after they released the new wiki module? Text no longer gets antialiased correctly on OS X. Never seen anything like it. [23:09] mjr_: rsms: looks pretty anti-aliased on my computer. [23:11] rsms: mjr_: for some reason they have disabled subpixel antialias (only using monochrome antialias) [23:11] mjr_: uhh, how do you do that> [23:11] mjr_: ? [23:11] rsms: mjr_: in webkit you can control the anti-aliasing using the -webkit-font-smoothing CSS property. [23:11] rsms: mjr_: wikipedia will tell you [23:12] rsms: mjr_: http://en.wikipedia.org/wiki/Subpixel_rendering#Examples [23:19] ryah: where odes it say that, mjr_ ? [23:19] digitalspaghetti: ACTION is livelocked :( [23:20] mjr_: ryah: http://skitch.com/mranney/d195f/library-compatibility-node-github [23:21] mjr_: It is hilarious how many bits I just moved over the internets to do that instead of just typing it out. [23:21] ryah: :) [23:21] mjr_: skitch is so great [23:23] sudoer has joined the channel [23:24] _announcer: Twitter: "Any recommendation for an option parser for node.js? #lazyweb" -- Tobie Langel. http://twitter.com/tobie/status/21703226997 [23:25] jsilver has joined the channel [23:26] bronson has joined the channel [23:26] digitalspaghetti: heh, i added an optparser to my app tonight, recommendation sent :) [23:26] jsilver has joined the channel [23:28] SteveDekorte has joined the channel [23:30] jackish has joined the channel [23:30] jakehow has joined the channel [23:31] zapnap has joined the channel [23:34] pufuwozu has joined the channel [23:36] charlesjolley- has joined the channel [23:40] mscdex: what's a good way to check if an incoming request is from the intranet or the internet? [23:40] tekky has joined the channel [23:40] _announcer: Twitter: "@ryah Any recommendation for an option parser for node.js? ... http://bit.ly/bJrYoB" -- Erin Bird. http://twitter.com/ErinBird/status/21704143960 [23:40] mscdex: on linux [23:41] digitalspaghetti: ok, can anyone think of a solution for this? https://gist.github.com/06a36e825260c863b5b6 [23:41] EyePulp_ has joined the channel [23:42] digitalspaghetti: the problem is I have a circular reference in my association [23:42] benburkert has joined the channel [23:43] tjholowaychuk: digitalspaghetti: habtm? should be fine unless hes doing something funky internally [23:43] _announcer: Twitter: "@ ErinBird Option parser http://github.com/jfd/optparse-js # nodejs" [lv] -- Tane Piper. http://twitter.com/tanepiper/status/21704329437 [23:43] tjholowaychuk: kinda to lazy to read all that [23:44] devewm has joined the channel [23:44] digitalspaghetti: ugh, tricked by a damn bot [23:44] digitalspaghetti: ErinBird seems to be a some kind of twitter bot thingy [23:45] digitalspaghetti: yea, i might raise a ticket see if there is a solution to it internally [23:45] dnm: Howdy [23:47] dnyy: aye, I have a (probably basic) question about JS/node that I can’t seem to figure out. http://gist.github.com/541457 I still don’t really get how to work w/ async I s’pose. [23:47] aheckmann has joined the channel [23:47] saikat has joined the channel [23:50] dnm: digitalspaghetti: what are you doing here, get back to cobol. ;] [23:50] bradleymeck2 has joined the channel [23:51] [[zz]] has joined the channel [23:51] SubtleGradient has joined the channel [23:53] digitalspaghetti: trying to get around my circular reference hell [23:54] dannycoates: dnyy: im not sure i understand your question. The data from the server is received by the 'data' callback. can you be more specific about where you want to access the server's response? [23:55] dnyy: dannycoates: ah, my bad. yeah, so when its received from the server, how can i (from the file requiring bar) stick it in a variable for use? [23:55] dnyy: i might be thinking about this all wrong, seems like it [23:56] _announcer: Twitter: "Congrats to @sh1mmer for winning one of the Y! Hackday awards with his #nodejs based DNS server. That thing is hawt!" -- Derek Gathright. http://twitter.com/derek/status/21705013380 [23:57] dannycoates: dnyy: one way might be to have your 'bar' module extend EventEmitter and broadcast its own event [23:57] dnyy: right now the buildObject function creates a hash/obj with the data returned and returns it, but it goes nowhere [23:57] dnyy: ACTION looks at EventEmitter [23:57] _announcer: Twitter: "Yay! Just won an internal Yahoo! Hack Day. Thanks Node.js for helping me do horrible things to DNS." -- Tom. http://twitter.com/sh1mmer/status/21705097750 [23:58] creationix: sh1mmer: awesome! [23:58] sh1mmer: creationix: I'm also really close to being able to open source it [23:58] sh1mmer: should get permission on Monday [23:59] creationix: sh1mmer: so does it do anything special, or just be really fast? [23:59] sh1mmer: just doing some refactoring before release [23:59] sh1mmer: nothing special, not even that fast for DNS [23:59] sh1mmer: but it's easy to tinker with [23:59] sh1mmer: so I've been doing some DNS experiments [23:59] sh1mmer: not sure I can talk about that yet [23:59] sh1mmer: need to hear from the patent lawyers first