[00:00] superjudge has joined the channel [00:01] jimt has joined the channel [00:09] tob1 has joined the channel [00:16] noahcampbell has joined the channel [00:17] jakehow has joined the channel [00:18] bingomanatee has joined the channel [00:19] ben_alman: it might be failing because .lastIndex isn't getting reset to 0 [00:19] ben_alman: yeah, i have RegExp down :P [00:19] ben_alman: thanks [00:20] ben_alman: anyone tried spludo? [00:23] cnu has joined the channel [00:29] JimBastard: 1.75 liters of petron xo cafe [00:29] JimBastard: this isnt going to end well [00:32] espadrine_ has joined the channel [00:35] Vertice has joined the channel [00:36] Ond has joined the channel [00:38] langworthy has joined the channel [00:42] cnu has joined the channel [00:43] pkrumins: JimBastard: 1.75 liters of vodka in the breakfast. [00:43] JimBastard: ahaha [00:44] pquerna: sounds too accurate. [00:48] maushu_ has joined the channel [00:49] pkrumins: JimBastard: how is it going man? you got those idiots off your back? [00:53] possibilities has joined the channel [00:53] JimBastard: pkrumins: which ones? lol [00:53] JimBastard: nodejitsu is coming along really great [00:54] JimBastard: new version of the client site getting pushed in a few days, UI makeover [00:54] bitdrift has joined the channel [00:55] benburkert has joined the channel [00:55] pkrumins: haha, the ones accusing your of taking someone elses code [00:55] JimBastard: unless its from a lawyer or the person who wrote the code im not listening to anyone anymore [00:56] JimBastard: put that shit on a cdrom and in a safe if you dont want people looking at it [00:56] JimBastard: :-D [00:56] JimBastard: http://www.youtube.com/watch?v=BuJDaOVz2qY [00:58] binarypie has joined the channel [01:01] bingomanatee has joined the channel [01:02] themiddleman has joined the channel [01:07] prettyrobots has joined the channel [01:19] softdrink has joined the channel [01:24] void_ has joined the channel [01:28] spetrea has joined the channel [01:29] jacobolus has joined the channel [01:29] zentoooo has joined the channel [01:34] jimt_ has joined the channel [01:36] maushu_ has joined the channel [01:38] matjas has joined the channel [01:40] pyrotechnick has joined the channel [01:40] espadrine_ has joined the channel [01:42] [[zz]] has joined the channel [01:49] ginader has joined the channel [01:49] ginader has left the channel [01:50] possibilities has joined the channel [01:59] tob1_ has joined the channel [02:00] namelessnotion_ has joined the channel [02:05] noahcampbell has joined the channel [02:08] AAA_awright_ has joined the channel [02:11] herbySk has joined the channel [02:13] hassox has joined the channel [02:14] mikeal has joined the channel [02:16] mikew3c has joined the channel [02:16] Aria has joined the channel [02:23] Hello71 has joined the channel [02:23] Hello71 has joined the channel [02:24] desaiu: thank you node.js for causing me to learn js in the year 2011 :) [02:25] muk_mb: yay [02:27] pkrumins: ˘_˘ [02:28] mikew3c has joined the channel [02:33] softdrink: thar be robots among us: http://www.youtube.com/watch?v=FIX9AQnNJWg [02:35] jpld has joined the channel [02:39] herbySk has joined the channel [02:40] herbySk: v8: Math.ceil [02:40] v8bot: herbySk: function ceil() { [native code] } [02:45] jacobrelkin has joined the channel [02:45] masahiroh has joined the channel [02:52] hellp has joined the channel [02:57] aklt has joined the channel [02:59] opengeard has joined the channel [03:00] RichardJ: happy new year everyone! [03:02] aurynn: Woo, minor bugfixes for postgres-js [03:07] jpld has joined the channel [03:07] jpld has joined the channel [03:10] lwille has joined the channel [03:13] espadrine_ has joined the channel [03:15] jimt has joined the channel [03:16] daveyjoe has joined the channel [03:17] galaxywatcher has joined the channel [03:20] jimt has joined the channel [03:28] herbySk has joined the channel [03:33] herbySk74 has joined the channel [03:41] namelessnotion has joined the channel [03:45] sveimac has joined the channel [03:57] [[zz]] has joined the channel [04:00] booths has joined the channel [04:00] lwille has joined the channel [04:02] benburkert has joined the channel [04:09] dipser has joined the channel [04:12] espadrine_ has joined the channel [04:14] mikeal has joined the channel [04:16] jacobrelkin has joined the channel [04:19] espadrine has joined the channel [04:21] booths has joined the channel [04:27] creationix has joined the channel [04:29] espadrine has joined the channel [04:29] pHcF has joined the channel [04:33] espadrine_ has joined the channel [04:34] booths: I'm having a little difficulty w/ connect.router... I might be doing it wrong, but every request seems to be handled by app.get('/'...) rather than respective app.get('/images'...) or what have you [04:36] booths: is there any readme or anything? [04:39] creationix has joined the channel [04:39] creationix has left the channel [04:45] pHcF: happy new year!! [04:45] pkrumins: ACTION looks at the clock, still dec 31... [04:46] SubStack: dec 31 == oct 37 [04:47] pkrumins: hahahaha [04:47] pkrumins: good old joke [04:47] zentoooo has joined the channel [04:49] jacobrelkin has joined the channel [04:50] jonaslund has joined the channel [04:54] shaver: dec 25 == oct 31 is my favorite [04:54] aurynn: ACTION argues with CSS [04:54] shaver: aurynn: http://giveupandusetables.com [04:55] aurynn: shaver, heh [04:55] aurynn: I'm getting closer to "just paying a goddamn designer" [04:55] shaver: I have had some luck with stylizer [04:55] shaver: but yeah [04:56] pkrumins: going to a node.js party! [04:56] pkrumins: in san francisco :D [04:59] Lorentz: CSS is pretty easy [05:11] aurynn: It can be [05:11] aurynn: until you try to do complex things. [05:13] aurynn: or realize you're hitting issues with a font's vertical alignment [05:14] Ond: Are there any parties in Portland? [05:34] espadrine_ has joined the channel [05:46] aaronblohowiak has joined the channel [05:46] aaronblohowiak: How long does it take for search.npmjs.org to catch up? [05:48] Twelve-60 has joined the channel [05:50] Blink7_ has joined the channel [05:51] andrewfff has joined the channel [05:53] jacobrelkin has joined the channel [05:56] cagdas has joined the channel [06:01] aaronblohowiak: happy new year, people in CST [06:05] desaiu: happy new year aaronblohowiak [06:05] aaronblohowiak: i'm in pacific time, but thank you [06:05] desaiu: :) [06:05] aaronblohowiak: :) [06:06] aaronblohowiak: what are you working on? [06:07] AAA_awright: There's no way to use a function to determine the value of a member access, right? Like, object.(somename) [06:07] aaronblohowiak: AAA_awright: object[somename] [06:07] AAA_awright: defineGetter defines a getter for a particular member [06:08] aaronblohowiak: or do you want to know what the function's name is ? [06:08] AAA_awright: No, like have object["somename"] get it's value from function(key){return key;} [06:08] AAA_awright: In this case, object["somename"] == "somename" [06:08] aaronblohowiak: no, you'd have to curry the fn [06:08] AAA_awright: I think you have to use functions for that [06:09] aaronblohowiak: oh [06:09] AAA_awright: object("somename") but that's no fun, I want the shorthand: object.somename [06:09] aaronblohowiak: sorry i was confused about what you are asking [06:09] aaronblohowiak: you can do that but you have to use a function [06:09] AAA_awright: I don't quite know how to explain it yeah [06:09] aaronblohowiak: you want the object to be a read-through cache [06:09] AAA_awright: Well of course I have to use a function, that's what I'm asking [06:10] aaronblohowiak: yea [06:10] AAA_awright: But can you do it with the member access shorthand, a.b.x.whatever [06:10] aaronblohowiak: not yet [06:10] AAA_awright: That implies it's coming soon [06:11] aaronblohowiak: it is a controversial feature of es5 [06:11] AAA_awright: How does Chrome do CSS styles for object.style. [06:12] devdrinker has joined the channel [06:12] aaronblohowiak: i do not know. [06:16] aaronblohowiak: AAA_awright: i dont think that's a great design decision. it is like method_missing in ruby: possibly too much magic [06:17] aaronblohowiak: hide data, not behaviour [06:17] aurynn: I like method_missing style functionality [06:17] aaronblohowiak: it is fun to use, harder to debug [06:17] AAA_awright: It can certainly be overused [06:18] AAA_awright: I hate chain methods [06:18] aaronblohowiak: alias_method_chain? [06:18] AAA_awright: What I'm going after here is being able to get/set long property names with prefixes [06:19] AAA_awright: It would be nice if there were a function that could handle property access... I'm pretty sure that's what object.style does in Chrome, it calculates/sets all the properties dynamically [06:20] aurynn: you can do that with __defineGetter__ [06:20] aurynn: and a for loop [06:22] AAA_awright: There's no code defined for them [06:22] AAA_awright: __lookupSetter__ and __lookupGetter__ both report undefined [06:22] AAA_awright: Yet I can still set them [06:23] AAA_awright: And it changes the document [06:23] AAA_awright: Object.keys(m.style) => ["cssText", "length", "parentRule"] [06:23] AAA_awright: How do I iterate over the unenumerated... hm [06:27] stepheneb has joined the channel [06:27] AAA_awright: namedPropertyGetter in C++ [06:27] AAA_awright: I could code this in C++ :-/ [06:29] amerine has joined the channel [06:30] aaronblohowiak: haha [06:30] aaronblohowiak: good [06:30] aaronblohowiak: keep js simple [06:38] sechrist has joined the channel [06:41] espadrine_ has joined the channel [06:45] creationix has joined the channel [06:45] galaxywatcher has joined the channel [06:46] AAA_awright: aaronblohowiak: Hopefully object.first is better than object.predicate("first") or object["http://www.w3.org/1999/02/22-rdf-syntax-ns#first"], though? [06:47] aaronblohowiak: why not just pass around a function instead of an object and just have curriedObject("first") [06:49] AAA_awright: There's other functions and stuff there to call, though [06:49] AAA_awright: object.value(), object.ref() and whatnot [06:49] AAA_awright: object("first")("value") isn't very intuitive [06:54] micheil has joined the channel [07:01] zentoooo has joined the channel [07:06] Iszak has joined the channel [07:06] Iszak has joined the channel [07:10] Iszak has joined the channel [07:10] softdrink has joined the channel [07:17] alek_br has joined the channel [07:17] masahiroh has joined the channel [07:22] pdcawley: AAA_awright: arrange for object("first").value is perfectly plausible. [07:24] aaronblohowiak: AAA_awright: you know that functions are objects and can have members that are functions, right? [07:24] pdcawley: object.first().value, ferinstance. [07:24] Blink7 has joined the channel [07:26] masahiroh has joined the channel [07:26] creationix: ACTION is recording the twitter 1% sample stream for later analysis [07:26] shaver: nice [07:27] AAA_awright: Of course [07:28] AAA_awright: pdcawley: That's less odd, but still quite a bit so... object("short") as an alias for object["whateverLongString"] doesn't seem right [07:28] fedora_e has joined the channel [07:28] creationix: shaver: it's only giving about 16k of json per second, but that's a good start [07:28] AAA_awright: That's a lot of tweets O.o [07:28] shaver: yeah, that'll do [07:29] softdrink: reminder: i know someone looking for a node developer in utah [07:29] hobodave has joined the channel [07:29] pdcawley: Why do you need such a long attribute name as 'whateverLongString'? [07:29] shaver: are you recording the pacing of the incoming data, so you can replay at the same speed? [07:29] creationix: I'm told the full firehose is 100 times that, but I don't have access [07:29] pdcawley: Lots of attributes on a single object? [07:29] shaver: creationix: I know people there, I could ask [07:29] creationix: no, it's fine [07:29] AAA_awright: pdcawley: For accessing a list of URIs [07:29] shaver: though I guess you could just replay each tweet 100x :-) [07:29] pdcawley: each uri is an attribute name? [07:29] AAA_awright: Like XML namespaces [07:30] shaver: is someone talking about RDF? [07:30] shaver: I'm not drunk enough for that yet [07:30] AAA_awright: And/or XML namespaces [07:30] AAA_awright: But yes [07:30] AAA_awright: It would be nice to replace http://www.w3.org/1999/02/22-rdf-syntax-ns# with rdf$ [07:30] AAA_awright: I could iterate through all the properties but that's needlessly expensive [07:31] AAA_awright: shaver: Why do you do anything with RDF? [07:31] creationix: AAA_awright: do you use xpath or something like that to query xml data? [07:31] pdcawley: my expand = { rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#", ... }; object[expand['rdf']], if you really need to. [07:31] fedora_e has left the channel [07:32] micheil has joined the channel [07:32] pdcawley: But surely you wouldn't be mucking with literal strings except in test data. [07:32] micheil_mbp has joined the channel [07:32] pdcawley: (actually, expand.rdf would work in that accessor wouldn't it?) [07:33] AAA_awright: creationix: I have, right now I'm not working with XML though but I imagine I would use the same solution [07:34] shaver: I have been trying to remove RDF from our product for years now [07:34] shaver: SOME DAY! [07:34] creationix: AAA_awright: I realized that the json parser I made can easily support xpath like queries against a json stream [07:34] shaver: creationix: *that* is hot [07:34] creationix: json has something like xpath right? [07:34] shaver: no [07:34] micheil_mbp has joined the channel [07:34] shaver: but it would be easy to write [07:34] AAA_awright: pdcawley: Except it's just a prefix... By the time you have object[expand.rdf+"first"] you've just made it easier to go with object("rdf:first") [07:34] creationix: ok, 10mb of json, that's enough [07:34] pdcawley: 'tis just a tree after all. [07:35] AAA_awright: Meh I guess that works then, object("predicate")("predicate").value() or whatever [07:35] creationix: shaver: my test program now simply echos all values found in the stream and the path to them [07:35] aaronblohowiak: jsonpath: http://goessner.net/articles/JsonPath/ [07:35] creationix: so [1,2,3] would be: [07:35] creationix: value.1 = 1 [07:35] creationix: value.2 = 2 [07:35] creationix: value.3 = 3 [07:35] creationix: value = [1,2,3] [07:36] creationix: except the indexes would be 0,1,2 not 1,2,3 [07:36] gkatsev: you can't dot access with a number [07:36] AAA_awright: aaronblohowiak: That looks an awful lot like E4X [07:36] creationix: gkatsev: I know that, it's just output [07:36] creationix: not code [07:36] gkatsev: ah, ok [07:36] aaronblohowiak: AAA_awright: yeap [07:37] gkatsev: creationix: we were just talking about you in #webos-internals :) [07:37] creationix: gkatsev: really [07:37] halfhalo: Possibly [07:39] pdcawley: AAA_awright: I'm having a hard time working out what would be meant by object[expand.rdf+"first"] is supposed to mean and what you'd be using it for in real code. Gut tells me that we're talking about stroking Javascript against the nap of its fur. If we keep going much longer we'll get bitten by it. [07:40] AAA_awright: pdcawley: Accessing the object located at object["http://www.w3.org/1999/02/22-rdf-syntax-ns#first"] but with a prefix so that all doesn't have to appear in code... if object.first doesn't exist, then fall back onto ""http://www.w3.org/1999/02/22-rdf-syntax-ns#first" [07:40] AAA_awright: er, fall back onto object["http://www.w3.org/1999/02/22-rdf-syntax-ns#first"] [07:41] AAA_awright: (and "first" shouldn't exist it's not a valid URI) [07:41] pdcawley: And why would be using the full literal in code anyway? Surely the literal would be stashed in a nice short variable? [07:41] AAA_awright: So it would have to resolve to an absolute one, if it's relative to something, or if it's a known postfix to some existing prefix [07:41] shaver: why not use something like xmlns? [07:42] shaver: arc.namespace = "http://www.w3.org/2030/11/11-semantic-web-lulz"; [07:42] AAA_awright: pdcawley: Well then you would be doing object[first] and there's so many attributes, you don't want to have to declare all the attributes individually, just the prefixes [07:42] shaver: arc.id = "first" [07:42] cagdas has joined the channel [07:42] shaver: object.hasOutboundArc(arc) [07:43] espadrine has joined the channel [07:43] AAA_awright: heheh [07:43] AAA_awright: You're mixing properties with different namespaces so an Object-wide namespace wouldn't work [07:44] sveimac has joined the channel [07:44] aaronblohowiak: AAA_awright: are you building a SMARTplatform app? [07:44] shaver: hmm? [07:44] shaver: *arc* has a namespace [07:44] shaver: objects don't [07:44] pdcawley: If you want fallback behaviour, then you're going to have to use an accessor method of some description - foo[bar] notation isn't going to work for you. [07:44] shaver: nodes, I guess [07:45] shaver: pdcawley: until v8 implements proxies, then you're all set [07:45] aaronblohowiak: http://www.smartplatforms.org/ has an rdf library [07:46] AAA_awright: aaronblohowiak: Is that Javascript? [07:46] AAA_awright: aaronblohowiak: Never heard of it [07:46] masahiroh has joined the channel [07:46] aaronblohowiak: there is a js client [07:46] aaronblohowiak: do you work in healthcare? [07:47] aaronblohowiak: AAA_awright: actually, it doesnt look like they are doing what you need [07:47] aaronblohowiak: nevermind [07:47] hassox has joined the channel [07:48] pdcawley: ACTION has the feeling he's missing some important context here. What does AAA_awright's object represent? [07:49] pdcawley: shaver: proxies? Javascript's version of doesNotUnderstand: aMessage ? [07:50] zentoooo has joined the channel [07:50] aaronblohowiak: pdcawley: yes [07:50] aaronblohowiak: shaver: do you think they will implement proxies? [07:51] creationix: proxies are so much more powerful than that [07:51] creationix: it's actually quite scary [07:51] creationix: firefox 4 already implements them [07:51] creationix: but I doubt v8 will get it any time soon [07:51] pdcawley: creationix: You can get more powerful than doesNotUnderstand: aMessage? [07:51] pdcawley: Somehow, I doubt it. [07:51] AAA_awright: pdcawley: Just properties of an object, nothing special [07:51] creationix: pdcawley: oh yes [07:51] AAA_awright: pdcawley: I should be able to iterate through them [07:51] AAA_awright: etc [07:52] creationix: pdcawley: look up /be's talk at jsconf.eu [07:52] creationix: I'm pretty sure they posted the video [07:53] aaronblohowiak: http://jsconf.eu/2010/speaker/be_proxy_objects.html [07:53] aaronblohowiak: i think proxies enable the hiding of behavior [07:53] aaronblohowiak: which I'm generally against =) [07:54] creationix: yeah, it's super powerful, people will abuse it [07:54] creationix: but it is super powerful [07:54] shaver: proxies were partially designed by a guy at google [07:54] pdcawley: ACTION skims the slide deck... [07:54] shaver: but v8 doesn't really do language advancement, so they'll need to be dragged forward [07:55] shaver: you need something like proxies to self-host the standard classes, or the DOM, etc. [07:55] Iszak: language advancements, isn't that what Microsoft was doing when they added ? [07:55] shaver: not quite the same thing, given the way proxies have been designed (publicly, in a standards org, with multiple vendors active) [07:56] aaronblohowiak: give a man enough rope.... [07:56] shaver: but perhaps I am just being trolled for the last time this year! [07:56] Iszak: it's already 2011 :D [07:56] Iszak: atleast here [07:56] shaver: not here [07:56] aaronblohowiak: 4 mins left [07:57] aaronblohowiak: shaver: wait, you didn't know that ry added proxies to v8 ? [07:57] aaronblohowiak: (that should be the last time for the year.) [07:57] aaronblohowiak: ;) [07:57] shaver: I hope he does generators first! [07:58] Iszak: why aren't you guys out boozing it up for NYE? [07:58] shaver: (generators are a lot harder) [07:58] shaver: Iszak: toddler [07:58] aaronblohowiak: Iszak: i don't drink [07:58] Iszak: oic. [07:58] chapel: Im at work [07:58] chapel: :) [07:59] chapel: Fri Dec 31 23:59:16 PST 2010 [07:59] chapel: :) [08:00] devdrinker: happy new year even though we had 15hrs ago :) [08:00] shaver: there we go [08:00] chapel: Sat Jan 1 00:00:09 PST 2011 [08:00] chapel: :) [08:00] jacobrelkin has joined the channel [08:00] Iszak: it's 4 PM here, welcome to the future [08:01] gkatsev: Iszak: where are you located, if I may ask? [08:01] Iszak: GMT + 8 [08:01] Iszak: or UTC + 8, whatever tickles your fancy [08:01] devdrinker: bangkok [08:01] gkatsev: zimbabwe time + 8, i think is also equivalent. [08:01] gkatsev: it is only 3am for me [08:01] devdrinker: (thailand) [08:02] devdrinker: 4pm is probably signapore/hongkok [08:03] Iszak: something like that. [08:04] gkatsev: that stripe of the world [08:04] gkatsev: I am GMT-5 [08:06] creationix: 'night everyone, I'm going to start 2011 by SLEEPING [08:07] creationix has left the channel [08:07] chapel: lol [08:08] pdcawley: Mmm... proxies look nice. More turtles in the stack has to be a good thing. [08:08] chapel: hmm, what are these proxies you speak of? [08:08] chapel: ACTION has been away [08:08] gkatsev: Survive a New Year everyone! http://www.explosm.net/comics/2281/ [08:11] Ond has joined the channel [08:14] mikew3c_ has joined the channel [08:14] aaronblohowiak: chapel: http://jsconf.eu/2010/speaker/be_proxy_objects.html [08:15] chapel: okay thanks [08:19] tob1 has joined the channel [08:23] SamuraiJack has joined the channel [08:24] skm has joined the channel [08:25] daglees has joined the channel [08:25] benburkert has joined the channel [08:25] daglees has joined the channel [08:27] chapel: hmm [08:31] aaronblohowiak: grrr, it stinks that jquey bind works only for dom elements [08:31] aaronblohowiak: and not arbitrary javascript objects [08:32] aaronblohowiak: every object should be an event emitter =( [08:32] aaronblohowiak: what do you use for custom eventemitter stuff in the browser [08:34] Blink7 has joined the channel [08:34] micheil: aaronblohowiak: I use my own library, Evan [08:34] aaronblohowiak: linky linky? [08:34] micheil: https://github.com/miksago/Evan.js [08:35] aaronblohowiak: yay [08:35] micheil: read the source code though [08:35] micheil: it's a little slower then nodes, but follows the same-ish api [08:35] micheil: or not, it's actually got bind/unbind, not on/addListener [08:36] aaronblohowiak: i like how you do undefined-override protection [08:36] aaronblohowiak: i will check it out [08:36] micheil: yeah, undefined override detection there is cool [08:37] micheil: the code should be pretty similar to the node eventemitter code [08:37] espadrine_ has joined the channel [08:38] aaronblohowiak: Evan.prototype.emit has arity 1 but then you do a check for arg length [08:40] aaronblohowiak: i wish there was a good way to use npm for client side js =) [08:40] pdcawley: I'm still unsure about why node's eventemitter is synchronous. I tried redoing it to use nextTick, but that broke the tests rather spectacularly. [08:41] micheil: aaronblohowiak: it doesn't have arity [08:41] micheil: just one argument that is required [08:41] pdcawley: ACTION had thought that the game was to yield to the event loop as soon as possible. [08:42] micheil: http://labnotes.org/2010/12/30/zombie-js-insanely-fast-full-stack-headless-testing/#9d2285de570d17b18a3874f234677215 [08:42] micheil: looks interesting [08:42] aaronblohowiak: https://github.com/miksago/Evan.js/blob/master/src/evan.js#L70-74 [08:42] aaronblohowiak: can you explain that optimization? [08:43] micheil: one sec. [08:43] aaronblohowiak: oh it is just to save the call to splice() [08:43] micheil: https://github.com/ry/node#L24-41 [08:43] micheil: it's saving on number of arguments [08:44] micheil: there was a v8 profiling which showed that calling a function with more arguments that it takes is slower or something [08:44] micheil: I forget exactly what it was though [08:44] micheil: but that's why there's those fast-cases [08:45] hassox has joined the channel [08:45] micheil: that said, it can still be made faster [08:45] aaronblohowiak: oh [08:45] aaronblohowiak: ok [08:47] SamuraiJack_ has joined the channel [08:47] shaver: it's because it needs to allocate more locals, so it misses the PIC [08:47] pdcawley: You have to be careful with optimizations based on platform profiling - have to remember to revisit them every time the platform changes. But you knew all that. [08:48] shaver: I think all engines are slower with extra or too few nargs [08:48] pdcawley: PIC? P... Inline Cache? [08:48] shaver: polymorphic [08:48] pdcawley: Yay! Good guess me! [08:48] pdcawley: :) [08:52] aaronblohowiak: my new years resolution is to try and get a job hacking on node all day [08:53] pdcawley: Paging Joyent... [08:55] aaronblohowiak: Oooooooh. I did not see that they are hiring. [08:55] pdcawley: They are? [08:55] aaronblohowiak: am i going to have to cagematch you for this job? [08:55] aaronblohowiak: http://www.joyent.com/contact/jobs/software-engineer/ [08:56] pdcawley: I doubt it. I mostly talk a decent game where Javascript is concerned. Did a bit of hacking around on Joyent Smart Platform when it was still the Reasonably Smart Platform and then went back to writing Perl for the BBC. [08:57] aaronblohowiak: =) [08:57] aaronblohowiak: yay [08:57] pdcawley: Plus, while I love Vancouver, it's a bloody long way away. [09:00] pdcawley: Though, if Reasonably Smart had got funding rather than being bought outright, I might have ended up with them. [09:00] chapel: http://www.websiteadaychallenge.com/ << over doing it? [09:01] aaronblohowiak: chapel: holy cow [09:02] aaronblohowiak: i love the /p> [09:02] aaronblohowiak: is that some new kind of emoticon? [09:02] aaronblohowiak: ;) [09:02] pdcawley: Yeah, it means "Ofuck, I cocked up my markup!" [09:03] chapel: haha [09:05] aaronblohowiak: :) [09:07] pdcawley: micheil: Evan looks rather sweet. [09:07] micheil: pdcawley: evan is rather sweet [09:07] shaver: we have an event-emitter in jetpack, too [09:07] micheil: but then again, the code is pretty much node's event emitter from about 0.2.X [09:08] MrMooCow has joined the channel [09:08] pdcawley: micheil: What? Node's events used to be asychronous? [09:08] sveimac has joined the channel [09:09] micheil: umm.. [09:09] void_ has joined the channel [09:09] micheil: well, not really, that async_call was something I added in [09:10] aaronblohowiak: for error handling? [09:11] micheil: oh wow, node's network module now has a new api. sweet. [09:12] pdcawley: aaronblohowiak: Well, I'd've thought that and the fact that yielding to the event loop is never a bad thing if you're trying to handle multiple connections in a single process. [09:13] aaronblohowiak: pdcawley: sure [09:13] espadrine has joined the channel [09:14] pdcawley: ACTION wrote an (admittedly pointless) JSON generator that did everything in a continuation passing style, invoking the continuation by doing 'process.nextTick(continuation)', but as soon as I stuck the code behind a webserver it got _horribly_ slow. Occasional 5 second hangs between ticks on a server that was serving a single request. [09:15] pdcawley: ACTION really should reduce that to something that fits in a gist but exhibits the same behaviour... [09:16] aaronblohowiak: :-) [09:16] aaronblohowiak: SWIM should create a continuation-based web framework for node [09:17] pdcawley: I think I can probably hack a simple stream-of-fibonacci-numbers example together... [09:17] pdcawley: But, for family related reasons, not on New Year's Day. [09:17] aaronblohowiak: :-) [09:19] pdcawley: SWIM? [09:20] aaronblohowiak: someone who isnt me [09:20] pdcawley: Ah. Yes. [09:20] aaronblohowiak: my favorite person to assign tasks to [09:20] pdcawley: From my playing, I'm not sure you actually _need_ a framework as such. [09:21] aaronblohowiak: pdcawley: s/framework/example to brag about on HN [09:22] aaronblohowiak: if you used connect sessions you could just store the continuation as the value in a LRU-evicting hash of session:continuations [09:22] pdcawley: Oh, I did that. I just didn't brag about it on Hacker News because it turns out to be too bloody slow once it sat on a server. [09:22] aaronblohowiak: :-) [09:22] aaronblohowiak: you know most of those readers are programming with ruby, right [09:23] pdcawley: Which has call-cc, which they don't know how to use. [09:23] aaronblohowiak: ACTION chuckles [09:23] aaronblohowiak: yes. [09:23] pdcawley: ACTION did a generalizable logic puzzle solver in Ruby using callcc. Same basic thing solves Sudoku, Killer and Kakuro [09:24] aaronblohowiak: ooooh [09:24] aaronblohowiak: neat [09:24] pdcawley: Quite cute watching it dump out the states as it bruteforces its way to a solution. [09:24] aaronblohowiak: Amaturelog [09:24] aaronblohowiak: (not quite prolog) [09:25] MrMooCow: Out of curiosity are there any known jsnode apps out there in the wild? [09:25] pdcawley: Rapidly becomes apparent that Killer is substantially harder than Sudoku. Got _way_ quicker once I added in the second order 'rule of 45' constraints. [09:26] pdcawley: ACTION should really try and make it work with picross. [09:28] pdcawley: I reckon that a streams based solution, probably lifted from the approach in The Reasoned Schemer would be more plausible in CoffeeScript/Node though... [09:28] aaronblohowiak: is the reasoned schemer good? [09:29] pdcawley: Definitely head food. I've not got through it and grokked it properly yet. But the Seasoned Schemer took me a few goes and that's a fabulous book. [09:29] [[zz]] has joined the channel [09:30] aaronblohowiak: ah [09:31] aaronblohowiak: did you see the asana folks added yield to v8 ? [09:32] pdcawley: ACTION <- Perl hacker, doesn't follow Javascript very closely at all. [09:32] aaronblohowiak: k [09:33] pdcawley: yield in this case being a coroutine style yield, or ruby style? Hopefully not ruby style. [09:33] aaronblohowiak: coroutine style yield [09:33] noahcampbell has joined the channel [09:33] aaronblohowiak: which is why i brought it up in this context [09:33] pdcawley: Nice. [09:33] aaronblohowiak: ACTION doesnt understand why ruby needs yield when it has proc.call [09:33] AAA_awright: Is it just me or is the REPL acting funny in master? [09:34] AAA_awright: Tab completion doesn't work, up/down history doesn't work [09:34] pdcawley: Would certainly make it easier to do a stream of candidate sudoku solutions, say... [09:34] aaronblohowiak: :) [09:34] AAA_awright: Hitting enter on an incomplete statement gives me strange crap: "[object Context]:1 :� ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" [09:35] aaronblohowiak: AAA_awright: master has dragons [09:35] AAA_awright: Well I would expect it to be fixed after a month or two [09:35] pdcawley: aaronblohowiak: ruby's yield is way faster. [09:36] aaronblohowiak: pdcawley: yes, i dont understand the implementation details of why [09:36] aaronblohowiak: no additional stack frame? [09:36] Ezku\ has joined the channel [09:37] pdcawley: I've not looked at the guts I'm afraid. [09:37] aaronblohowiak: =) k [09:39] pdcawley: I think that the block gets hung off the method invocation as a half finished proc that's callable but doesn't have any of the other features of a Proc. When you add a ¶m, the C level data structure has to be promoted to a full on object. [09:39] pdcawley: But don't quote me on that; merely an educated guess. [09:40] adambeynon has joined the channel [09:40] pyrotechnick has joined the channel [09:41] pdcawley: Might be interesting to compare the speed differences in ruby 1.8.x and ruby 1.9.x. [09:41] pdcawley: If I still cared about Ruby. [09:41] aaronblohowiak: awwww [09:41] aaronblohowiak: hahaha [09:41] aaronblohowiak: yea, ditto [09:41] AAA_awright: Node.js compiles in the library scripts right? [09:41] AAA_awright: Or where does it get them from? [09:41] AAA_awright: things like util and fs [09:44] skm has joined the channel [09:47] aaronblohowiak: compiling node produces a single binary [09:48] AAA_awright: aaronblohowiak: Many of those libraries are Javascript source, it compiles those in? [09:48] espadrine_ has joined the channel [09:49] daveyjoe has joined the channel [09:49] espadrine has joined the channel [09:50] aaronblohowiak: i believe that to be the case, yes [09:51] espadrine_ has joined the channel [09:52] espadrine_ has joined the channel [09:53] mart1n_ has joined the channel [09:54] espadrine_ has joined the channel [09:55] jimt_ has joined the channel [09:56] skm has joined the channel [09:56] aaronblohowiak: you know, with all of this callback stuff it is almost like we are doing manual CPS [09:57] zentoooo has joined the channel [09:59] espadrine has joined the channel [10:00] espadrine_ has joined the channel [10:01] micheil: is it possible to tell node to connect / listen on a specific network interface yet? [10:01] espadrine has joined the channel [10:03] hellp has joined the channel [10:06] espadrine has joined the channel [10:07] espadrine_ has joined the channel [10:11] espadrine_ has joined the channel [10:12] espadrine_ has joined the channel [10:14] espadrine has joined the channel [10:14] mart1n_ has left the channel [10:15] espadrine_ has joined the channel [10:16] espadrine_ has joined the channel [10:17] espadrine_ has joined the channel [10:19] espadrine_ has joined the channel [10:19] pyrotechnick has left the channel [10:20] espadrine_ has joined the channel [10:21] andrewfff has joined the channel [10:22] espadrine_ has joined the channel [10:22] matjas has joined the channel [10:23] espadrine_ has joined the channel [10:24] espadrine_ has joined the channel [10:26] espadrine_ has joined the channel [10:27] devdrinker has joined the channel [10:27] espadrine_ has joined the channel [10:28] frodenius: micheil㇀ .listen takes a host parameter, if that helps [10:28] micheil: hmm, okay [10:29] espadrine has joined the channel [10:30] micheil: frodenius: I'm more thinking about clients [10:30] micheil: but servers for that is also cool [10:30] espadrine has joined the channel [10:32] espadrine_ has joined the channel [10:33] mikeal has joined the channel [10:33] espadrine has joined the channel [10:34] mikeal has joined the channel [10:35] espadrine has joined the channel [10:38] espadrine has joined the channel [10:38] devdrinker: is there anything clientside pref jquery ish that does what Seq does? [10:44] aaronblohowiak: seq is pretty cool [10:44] guybrush: ACTION also likes seq [10:47] guybrush: basically i dont see any dependencies of seq on node except for EventEmitter [10:50] Max-Might has joined the channel [10:51] mraleph has joined the channel [10:53] zorzar has joined the channel [10:54] aaronblohowiak: then you should port it to use Evan [10:54] aaronblohowiak: https://github.com/miksago/Evan.js [10:55] micheil: or, you should send me a pull request on evan to change the api to reflect the node event emitter api [10:58] muhqu has joined the channel [11:01] devdrinker has joined the channel [11:01] muhqu_ has joined the channel [11:04] muhqu_ has joined the channel [11:04] jimt has joined the channel [11:05] femtoo has joined the channel [11:07] steffkes has joined the channel [11:11] markwubben has joined the channel [11:12] void_ has joined the channel [11:17] jimt has joined the channel [11:19] mr_daniel has joined the channel [11:21] hassox has joined the channel [11:28] ewdafa has joined the channel [11:29] micheil_mbp has joined the channel [11:31] micheil has joined the channel [11:34] stride: happy new year noders! [11:44] stagas has joined the channel [11:48] SamuraiJack__ has joined the channel [11:50] zentoooo has joined the channel [12:12] jimt_ has joined the channel [12:16] Dreamer3 has joined the channel [12:22] void_ has joined the channel [12:22] jimt has joined the channel [12:25] astoon has joined the channel [12:30] Druid_ has joined the channel [12:35] sriley has joined the channel [12:35] sriley has left the channel [12:37] flashingpumpkin has joined the channel [12:41] sriley has joined the channel [12:43] sh1mmer has joined the channel [12:44] sriley has left the channel [12:47] spoobie has joined the channel [12:49] sh1mmer has joined the channel [12:50] jimt has joined the channel [12:52] sh1mmer has joined the channel [12:55] jimt has joined the channel [12:57] sh1mmer has joined the channel [12:58] pyrotechnick has joined the channel [13:09] Ond has joined the channel [13:12] SamuraiJack__ has joined the channel [13:14] broofa has joined the channel [13:14] broofa has joined the channel [13:18] pyrotechnick: bingomanatee_: are you around? [13:18] jankoprowski has joined the channel [13:22] vineyard has joined the channel [13:24] spoobie has left the channel [13:25] pyrotechnick has joined the channel [13:25] unomi has joined the channel [13:36] sechrist has joined the channel [13:52] MattJ has joined the channel [13:52] skm has joined the channel [13:52] Frush3 has joined the channel [13:53] sh1mmer has joined the channel [13:53] tob1 has joined the channel [13:55] nook has joined the channel [13:59] kolor has joined the channel [14:00] tomhsx has joined the channel [14:01] SamuraiJack has joined the channel [14:03] sh1mmer has joined the channel [14:11] tomhsx has joined the channel [14:13] mikew3c_ has joined the channel [14:15] fly-away has joined the channel [14:16] SamuraiJack has joined the channel [14:23] oal has joined the channel [14:25] dspree: micheil: is anyone working on that (changing evan api to reflect node event emitter api)? if not, i might make a fork and get started on that [14:26] dspree: this looks similar https://github.com/tmpvar/node-eventemitter [14:28] chapel: http://phpadvent.org/2010/mistrust-and-verify-by-kitt-hodsden << has anyone thought about security/trust with node? [14:34] unomi has joined the channel [14:35] lwille has joined the channel [14:36] micheil: dspree: it's open [14:37] dspree: k [14:37] micheil: node-eventemitter also works [14:39] dspree: what is it commonly accepted to name a nodejs web app as? app.js? server.js? [14:39] micheil: server.js, but only because joyent lead the way [14:42] darthdeus has joined the channel [14:42] V1_ has joined the channel [14:42] V1_: Is there an easyway to see what the IP is of the server that is running Node.js? I don't think the net module has something like this.. [14:45] micheil: yeah, there is [14:45] micheil: http://nodejs.org/docs/v0.3.1/api/net.html#server.address [14:45] shinmei has joined the channel [14:46] bluegene has joined the channel [14:50] d0k has joined the channel [14:52] V1: But that's only in 0.3.1 micheil, and the no.de server does not run that yet [14:52] micheil: hmm.. in which case, not possible easily [14:54] V1: I would probably need to start a childProcess that reads out he ifconfig iguess [14:54] stride: V1: it uses process.binding('net').getsockname(filedescriptor) is that available on no.de? [14:54] micheil: https://github.com/ry/node/tree/v0.2#L1289 [14:54] micheil: looks like it's in 0.2 to me. [14:54] stride: chapel: I don't know why that article is on the HN frontpage somehow [14:55] V1: You are right micheil I was looking in the wrong file [14:55] V1: Thanks allot [14:56] micheil: :) [14:57] micheil: omgyes. neo4j now can run as a standalone server [14:58] femtoo has joined the channel [14:58] stride: \o/ [14:59] micheil: sorry, pretty much unrelated to anything, but it now means I might work and play with neo4j through node a bit more [15:02] tomhsx has joined the channel [15:02] V1: Yay, pet project finished! [15:03] V1: I can now use redis as native javascript objects ^_^ [15:03] micheil: ? [15:03] stride: micheil: nah, it's great. means I can take a look at it again after I swore I'll never use it again in java :> [15:03] mape: auto saving into redis? [15:04] micheil: stride: yeah, that was why I never used it; I'm not a java programmer, and I have no desire to become one. [15:04] V1: mape: yup [15:04] mape: V1: gist? :) [15:04] micheil: V1: nice, but please, some code? [15:05] V1: Will gist it when it's more 'stable' :p have some small stability issues where it's actually crashing node due to out of memory issues ;) [15:05] stride: micheil: hehe :) I had to get data from a legacy app into it last year or so... that project was a pain.. [15:05] mape: setInterval(function(){if(JSON.stringfy(everything) !== old){update()}}, 100)? :P [15:05] micheil: stride: I just feel that for data which is highly relational, a graph database makes much more sense then a relational databse [15:08] stride: micheil: don't know, as the SQL fanboy I am, I still like RDBMS for stuff with fixed structures.. :) [15:08] rsms has joined the channel [15:09] micheil: well, when you have stuff which is like user -> idea rather then having thousands of join tables and shit, graph dbs make sense [15:09] micheil: plus you can draw them on paper more easily. [15:13] stride: hmmm.. why do I always see such things at the end of holidays.. do you think we can postpone monday? :) [15:20] derren13 has joined the channel [15:25] sveisvei has joined the channel [15:31] Imperion has joined the channel [15:38] opengeard has joined the channel [15:42] Iszak has joined the channel [15:46] themiddleman has joined the channel [15:47] namelessnotion has joined the channel [15:48] Ezku\ has joined the channel [15:52] AAA_awright_ has joined the channel [15:55] SamuraiJack_ has joined the channel [15:59] lief has joined the channel [16:00] Max-Might has joined the channel [16:12] devdrinker has joined the channel [16:14] bitdrift has joined the channel [16:20] devdrinker has joined the channel [16:25] SamuraiJack__ has joined the channel [16:25] creationix has joined the channel [16:30] pgte has joined the channel [16:31] pgte: Happy New Year, noders! [16:34] binarypie has joined the channel [16:39] galaxywatcher has joined the channel [16:40] Blink7 has joined the channel [16:41] Sembiance: pgte: you too! [16:41] Sembiance: pgte: I'm using your 'fugue' to power http://worldofsolitaire.com :) [16:41] pgte: kewl! ;) [16:41] Sembiance: pgte: handling over 3 million requests a day, no problems at all so far :) [16:42] pgte: had no idea! I had come across your project before :) [16:42] pgte: wonderful [16:43] Sembiance: pgte: up until decemver 24th, it was apache+php+postgres on the back end. on the 24th it changed to nginx+fugue+expressjs+redis [16:43] Sembiance: so it's only been node.js based for a few days [16:44] pgte: so I had seen it before it was node-powered, and now it is ! cool! [16:45] sveimac has joined the channel [16:46] micheil: mape: ping [16:46] micheil: wait. wrong person. [16:46] pgte: Semblance; congrats, the app is great :) [16:46] pgte: Semblance: congrats, the app is great :) [16:47] pgte: jeez, i have to increase font size [16:47] pgte: Sembiance: congrats, the app is great :) [16:47] Sembiance: pgte: :) [16:48] Imperion: ACTION points his fingers at Sembiance and screams "CHAIN LIGHTNING" [16:48] Imperion: ACTION hides [16:49] Sembiance: pgte: wanted to say thank you very much for fugue [16:49] Sembiance: pgte: it's so very much appreciated :) [16:49] pgte: Sembiance: you're welcome, glad you like it :) [16:50] Imperion: fugue looks awesome [16:50] Sembiance: I wish github project pages had like built-in 'Donate' buttons, so I can show appreciation by helping purchase your next awesome computer or video game or whatever ;) [16:50] Imperion: I will definitely use it in production [16:51] pgte: I just give a bit back to the OS community, it's all part of ecosystem [16:52] herbySk has joined the channel [16:53] Sembiance: pgte: I'm gonna do a presentation or two on the conversion from apache+php+postgres to nginx+node.js+redis. Going to give them at work, to some boston javascript/html5 web game meetups and will post them online [16:53] mape: micheil: pong? [16:53] mape: oh [16:54] micheil: mape: yeah, I was after ciaranj [16:54] mape: ah k [16:56] Sembiance: I'm just loving how much excitement and enthusiasm there is surrounding node.js [16:57] Sembiance: I also like how much competition and excitement there is around so-called 'nosql' databases. [16:57] Sembiance: redis, couchdb, mongo, all very interesting and exciting :) [16:57] Imperion: Redis sounds cool [16:57] Sembiance: cassandra, etc. [16:57] Imperion: but I will wait for them to implement virtual memory [16:58] Sembiance: Imperion: so far I really like redis. However it's clearly now meant for all types of data. luckilly what I Was storing fit pretty well (top 10 lists (sorted sets), user records (hashes), other statistics (counters), etc) [16:58] Imperion: sure [16:58] Imperion: but I'd like it not to need to fit in memory [17:04] riven has joined the channel [17:05] Hello71 has joined the channel [17:06] tswicegood: are there any known issues with the REPL in 0.3.2 that cause extraneous output? (i.e., function foo() { <-- generates [object Context]:1 and a few \n) [17:07] polotek has joined the channel [17:09] V1 has joined the channel [17:09] jpld has joined the channel [17:09] bitdrift has joined the channel [17:11] tswicegood: here's an example of what I mean: https://gist.github.com/761855 [17:12] davidc_ has joined the channel [17:12] davidc_ has joined the channel [17:14] paulrobinson has joined the channel [17:15] Kami_: Imperion: you can already do this using redis virtual memory (keys still need to fit in the memory though) [17:19] rpflo has joined the channel [17:23] creationix: tswicegood: I've seen that too [17:23] creationix: never bothered to see if it's a bug or not [17:23] tswicegood: I'm trying to track it down... [17:24] tswicegood: I've reverted out repl and readline, but the problem persists [17:24] creationix: awesome [17:24] creationix: (awesome that you're looking) [17:25] tswicegood: creationix: I've got all of the examples in my book (and their test runner) freaking out because of it, kinda putting a damper on things :-) [17:26] bitdrift: anybody know of a working openid consumer for node? [17:27] bitdrift: or maybe has anybody even done an openid integration in node? [17:30] galaxywatcher has joined the channel [17:31] herbySk has joined the channel [17:35] daveyjoe has joined the channel [17:38] ollie: i'm having an issue with express not running post routes, any idea why this could be happening? [17:39] ollie: get routes are fine, no errors, everything else seems ok [17:39] ollie: express 1.0.1, node v0.2.5 [17:40] tswicegood: hmm - didn't get anywhere with my bug hunt... I've opened a ticket (https://github.com/ry/node/issues/543) if anyone wants to help out and/or point me in the right direction [17:45] aklt has joined the channel [17:47] softdrink has joined the channel [17:49] rpflo has joined the channel [17:52] blueadept has joined the channel [17:53] ollie: problem solved. i was calling app.use(express.bodyDecoder()); twice :/ [17:53] ollie: i blame my hangover [17:54] sveimac has joined the channel [17:58] rpflo has joined the channel [18:02] herbySk has joined the channel [18:04] maushu has joined the channel [18:04] bingomanatee has joined the channel [18:04] bingomanatee: are there parameters to console.dir -- and for that matter where is console documented? [18:06] bingomanatee: for instance when I do console.dir on a nested object [{word: "foo", tags: ["a","b","c"]}.{}] tags are often described as "Circular" even though thay are simple arrays of strings -- is there a config I can tweak on console to make this work better? [18:06] galaxywatcher has joined the channel [18:08] polotek: bingomanatee: not really, though there has been some discussion recently on the mailing list about it [18:08] polotek: console.log isn't documented. it mostly follows the conventions in the browser [18:08] polotek: Firebug, webkit, etc [18:09] herbySk74 has joined the channel [18:09] bingomanatee: oaky -- so I guess if I want introspection on a deep object I need to loop through it ? "D [18:09] polotek: no, that's what console.log does [18:10] polotek: if you're seeing Circular it's because the same array is referenced in multiple places [18:10] polotek: not the values, the array itself [18:10] polotek: gist an example of your data plus the output of inspect [18:10] bingomanatee: from an object POV. Understood. Thanks - I can fix that. [18:10] polotek: to better illustrate your problem [18:10] noahcampbell has joined the channel [18:10] bingomanatee: No - I get it - in fact that is excatly what I'm doing - copying an array over several different subobjects. [18:10] bingomanatee: I can fix. [18:11] polotek: bingomanatee: no need to fix if that's what you actually want [18:11] polotek: but inspect is meant to show you those things [18:11] polotek: so you can be sure that's what you want [18:11] Gruni has joined the channel [18:11] polotek: for instance if you pass that object to JSON.stringify it'll barf on you [18:11] polotek: because it doesn't like circular refs [18:11] MrNibbles: happy new year gents [18:13] bingomanatee: That done it. thx pol. [18:13] bingomanatee: So far, so good. [18:13] bingomanatee: course ... its still the weekend ... so.... [18:15] bingomanatee: polotek: I have a DB listings of words/tags that I was manually map/reducing - so no reasons for shared references. Thanks for explaining the paradigm. [18:16] trotter has joined the channel [18:17] polotek: bingomanatee: no prob [18:19] jetienne has joined the channel [18:26] bingomanatee: Is it possible to stop an event from percolating to the next handler, and is it possible to rearrange the order in which events are handled? [18:27] polotek: bingomanatee: I don't think so [18:27] polotek: definitely no to #2 [18:27] bingomanatee: okie [18:27] polotek: events could be added by any agent [18:27] polotek: they aren't necessarily related [18:28] bingomanatee: good point [18:28] polotek: you could write some management code to manage related event handlers though [18:28] polotek: you can remove an individual event [18:28] polotek: event handler that is [18:28] polotek: if you have a reference to it [18:29] bingomanatee: So the event management system - is that a JS library or is that part of the compiled Node package? [18:29] polotek: emitter.removeListener('data', myhandler); [18:30] polotek: you manage events through the emitter [18:31] davidc_ has joined the channel [18:31] polotek: the emitter registers events with the event loop [18:31] polotek: on every pass of the event loop, it runs all handlers that have been registered with it [18:32] polotek: that's a simplified view of course [18:32] pgte: Sembiance: if you post your talk online can you then give me a link? [18:32] pgte: I'm http://twitter.com/pedrogteixeira [18:32] pgte: Also, I do http://nodetuts.com [18:32] pgte: I'm thinking about covering some nosql databases there [18:32] polotek: actually what happens is the event loop informs the emitter that an event has occured [18:33] polotek: and the emitter runs any handlers it has registered for that event [18:33] pgte: Sembiance: if you would like something covered there, give me some feedback [18:35] saikat_ has joined the channel [18:39] bingomanatee: is regexp the only way to do string searches in javascript? [18:40] bingomanatee: nm found indexOf [18:41] pkrumins: good morning [18:41] mgutz has joined the channel [18:42] pkrumins: great node.js party guys [18:43] SubStack: ACTION saw a lot [18:45] augustl has joined the channel [18:51] rwaldron_ has joined the channel [18:54] sveisvei has joined the channel [18:55] bingomanatee: hit unsee! hit unsee! [18:55] cagdas has joined the channel [18:55] SubStack: It's too late, I didn't drink enough! [18:56] wilken has joined the channel [18:57] wilken: is anyone using connect-auth? i have some problems resulting in 'too many redirects', when i try to log in using github as oauth provider [18:58] Aria has joined the channel [18:59] creationix has joined the channel [19:00] omni5cience has joined the channel [19:01] arpunk has joined the channel [19:01] pkrumins: i dont remember anything from the node.js party [19:02] MikhX has joined the channel [19:02] SubStack: :/ [19:03] pkrumins: wondering what i talked with ry [19:04] Aria: Oops. [19:08] softdrink has joined the channel [19:08] tibbetts has joined the channel [19:09] pyrotechnick has joined the channel [19:11] ryah: pkrumins: did i meet you last night? [19:15] stepheneb has joined the channel [19:15] hobodave has joined the channel [19:17] shimondoodkin has joined the channel [19:21] kjeldahl has joined the channel [19:22] jchris has joined the channel [19:22] SubStack: ryah: briefly on the street [19:24] jrpz has joined the channel [19:27] augustl has joined the channel [19:28] ryah: were you a drunk latvian? [19:28] dnolen has joined the channel [19:29] Max-Might has joined the channel [19:32] jimt has joined the channel [19:33] RichardJ: hah, good evening everyone :) [19:35] muhqu has joined the channel [19:39] bingomanatee: no [19:39] bingomanatee: I disagree. [19:39] bingomanatee: I say it is morning, and nothing you ca say can change my mind [19:40] pydroid has joined the channel [19:42] herbySk has joined the channel [19:42] RichardJ: bingomanatee: my clock tells me it's 20:42 [19:42] RichardJ: that qualifies as evening for me :) [19:46] Imperion: hm, how often does tjholowaychuk come by? [19:47] pquerna: often [19:49] benburkert has joined the channel [19:49] niklasfi has joined the channel [19:50] beta_ has joined the channel [19:51] niklasfi: what do i need to install again for openssl support? sudo apt-get install ??? [19:51] Imperion: openssl? [19:51] muk_mb: Hey, does anyone understand Jade well? I'm having this problem where I don't get what I expect from my template: http://pastie.org/1421849 [19:51] Aria: openssl-dev [19:51] Aria: And then compile node with it, of course. [19:51] richcollins has joined the channel [19:51] niklasfi: Aria: thanks [19:52] Imperion: muk_mb: what's the problem? [19:52] Imperion: oh [19:52] Imperion: nvm [19:52] muk_mb: it's not putting in that one bit to the rss tag [19:53] Imperion: *shrug* [19:53] muk_mb: that -should- work right? [19:53] Imperion: dunno how Jade's XML stuff works [19:53] muk_mb: hmm [19:54] Ari-Ugwu has joined the channel [19:54] muk_mb: is there a better xml template thing to use? [19:55] pyrotechnick: bingomanatee: PM... [19:55] niklasfi: aria: i actually meant libssl-dev [19:55] RichardJ: niklasfi: with ubuntu i believe you need libssl-dev [19:56] RichardJ: or other os's of course [19:56] Aria: Ah! Right. [19:56] niklasfi: richardj: i just figured that, too [19:56] Aria: I'm on an RPM-ish system, and I forget that ubuntu does that. [19:56] RichardJ: :) [19:56] Aria: Sorry about that. [19:56] RichardJ: I made the same mistake first [19:56] RichardJ: but hey, everyone makes mistakes :) [19:57] benburkert has joined the channel [19:58] bartmax has joined the channel [19:58] bartmax has joined the channel [20:00] niklasfi: why did you change to the new style of docs by the way? [20:05] V1: Is there an easy way to "copy" an object so it no longer modifies the referenced object if I add new properties ? [20:05] V1: The easiers, and most awfull thing I could think of was JSON.parse( JSON.stringify( obj ) ) [20:06] wilken:  otherwise you need a copyconstructor i yhink [20:07] MikhX has joined the channel [20:07] Aria: There's not, really. [20:08] softdrink has joined the channel [20:08] V1: I thought so.. And Object.freeze / seal / isn't really helpful here either. :( [20:08] muk_mb: latest coffeekup is broken, sweet [20:09] fangel has joined the channel [20:13] mikew3c_ has joined the channel [20:14] bitdrift has joined the channel [20:17] CIA-121: node: 03Ryan Dahl 07many_listener_warning * rbdb1464 10/ (doc/api/events.markdown lib/events.js): Print error when EventEmitters get too many listeners - http://bit.ly/fQmdFw [20:18] polotek: V1: is there a reason you don't make a new object and deep all properties? [20:18] polotek: or are you just saying that's not "easy" enough? [20:20] V1: I don't know which properties my object will have, so I cannot create a new object. [20:20] Nogwater has joined the channel [20:21] AAA_awright has joined the channel [20:23] Nogwater: Hi. I'm new to node.js. I just did an install of v0.2.6 on OS X 10.6. When I run the tests I get 1 error for test-http-upgrade-server. Is this normal? [20:23] Nogwater: Hmm... actually, I just re-ran it and now don't get any errors. Go figure. [20:25] polotek: Nogwater: it's a known issue [20:25] ryah: Nogwater: i think there is a race conditin in that test [20:25] Nogwater: ah [20:25] polotek: V1: I'm sure I'm missing something [20:25] Nogwater: well, I'm looking forward to playing with node [20:26] AAA_awright: I thought Node was designed so race conditions were impossible? [20:26] AAA_awright: Well, not impossible probably [20:26] AAA_awright: ...but I can't think of how [20:26] matjas has joined the channel [20:27] ryah: AAA_awright: e.g. start the client before the server is started [20:27] ryah: (often the tests start a client and server in the same process) [20:27] V1: polotek: Could be that I mis understood your question, it's getting a bit late here :p [20:29] V1: The case is I have a object that I want to store in my database. And this object is also transmitted over a socket connection. But for the socket connection I want to add a extra metadata like current date, ip, etc. If I add this directly to the object, it will also be added to the database which is something that I'm to prevent atm. [20:29] herbySk: v8: Date.now() [20:29] v8bot: herbySk: 1293913785632 [20:29] Imperion: we have a v8bot? [20:29] niklasfi has left the channel [20:30] Imperion: cool! [20:30] polotek: V1: that's fine, you just need to do a deep copy of your object [20:30] aurynn: Botness is bottie. [20:30] polotek: and use the copy for the socket transfer [20:30] softdrink1 has joined the channel [20:31] polotek: I use underscore.js and the extend method http://documentcloud.github.com/underscore/#extend [20:31] polotek: so something like [20:32] Aikar: anyone got an example of best way with Mongoose to say 'get doc with foo = bar, else create it' with models? [20:32] polotek: var socketObj = dbObj; [20:32] polotek: scratch that [20:32] polotek: var socketObj = {}; [20:32] polotek: socketObj = _.extend(socketObj, dbObj); [20:33] polotek: socketObj is a full deep copy of your dbObj [20:33] polotek: you can modify it all you like [20:33] V1: Yeh that kinda what I'm doing atm but I was wondering if there was an easier way. [20:33] V1: But I guess this will work for now [20:33] polotek: haha, what's easier than that? [20:33] V1: :$ [20:34] V1: It will work for flat objects, but fail if the data structure goes deeper.. But I guess, I can build that in.. [20:34] Imperion: aaargh [20:34] Imperion: I'm an idiot [20:34] polotek: V1: no it doesn't [20:34] possibilities has joined the channel [20:35] polotek: "full deep copy" [20:35] polotek: look at the code for extend [20:35] Imperion: I forgot to put in an else in my caching module [20:35] Imperion: FFS [20:35] V1: polotek, will do. Thank [20:35] Imperion: there went 6 hours of bug-hunting [20:35] V1: s* [20:35] sivy has joined the channel [20:35] davidc_ has joined the channel [20:35] davidc_ has joined the channel [20:36] polotek: V1: actually I take that back [20:36] polotek: I forgot that I modified the extend method myself some time back [20:36] polotek: I think the base underscore lib doesn't do the deep copy [20:37] V1: It just needs to call it self again, if it encounters a object, not to hard to build in. [20:37] markwubben has joined the channel [20:38] polotek: V1: this is my version of extend [20:38] polotek: https://gist.github.com/761992 [20:39] V1: Thanks allot [20:39] polotek: V1: that only works on the server obviously [20:39] polotek: node or spidermonkey or rhino [20:40] polotek: later folks [20:40] polotek has left the channel [20:40] V1: polotek: That's the only environment I'm using it for. I'm strictly agains using client side code in server side environment because of all the unneeded code bloat [20:42] tibbetts_ has joined the channel [20:43] cagdas has joined the channel [20:46] jonaslund: What editors do you guys use when working ? [20:47] aurynn: Textmate. [20:47] aurynn: though I'm going to need t find a new editor [20:47] chrisdickinson: vim [20:47] stride: when working Eclipse, vim when doing node stuff [20:48] jonaslund: You're not working when doing node stuff ? :) [20:48] jonaslund: :S [20:49] stride: nah, my day job is purely java development as of monday [20:50] bingomanatee_: hey all ... [20:50] bingomanatee_: question - do you think the event system is peformant enough to drive an entire site architecture? [20:50] aurynn: Yes. [20:50] vineyard has joined the channel [20:50] aurynn: But it depends on the site. [20:50] jonaslund: stride: big place ? [20:51] AAA_awright has joined the channel [20:51] Hasan has joined the channel [20:52] stride: jonaslund: nope, 30 people or so [20:56] V1: jonaslund: Dreamweaver! :D [20:58] mazharhasan has left the channel [20:59] borior: does tmpvar (author of jsdom) ever hang out in here? [21:01] ncursestest has joined the channel [21:01] ncursestest: /exit [21:04] JojoBoss has joined the channel [21:11] Imperion has left the channel [21:13] sivy has joined the channel [21:19] bingomanatee_: do you guys have any particular online JS reference you prefer? [21:20] V1: google :) [21:20] jonaslund: ecma-262.pdf [21:20] bingomanatee_: Is the term "Iggy stick" still in common use? [21:20] jonaslund: www.ecma.ch [21:20] jonaslund: sorry http://www.ecma-international.org/ [21:21] bingomanatee_: got that [21:23] Aria: I mostly use the Mozilla developer reference, but I'm good at guessing which parts are extensions not in v8. [21:23] bingomanatee_: guess thats what repl is for ... [21:24] fangel: yeah, MDC but if the feature is sufficiently clever, then I don't assume it's in V8.. :P [21:24] stride: cd deps/v8/src/ [21:24] stride: :)) [21:24] fangel: (okay, the only think I really wish for is array dereferencing) [21:24] bingomanatee_: so it sounds like there are no absolute v8/js guides? [21:24] andrewfff has joined the channel [21:24] Aria: (Ditto) [21:25] jonaslund: bingo: if you're doing node stuff then the ecma docs + node docs should be pretty complete [21:25] bingomanatee_: thx [21:26] jonaslund: maybe apart from some "modern" things in V8 like forEach [21:26] Aria: Hehe. Just read the ES5 docs then ;-) [21:26] amerine has joined the channel [21:27] oal has joined the channel [21:30] sivy has joined the channel [21:31] markwubben has joined the channel [21:31] tob1 has joined the channel [21:32] AAA_awright: Isn't there an HTML version of the ECMA spec somewhere? [21:33] AAA_awright: And same thing with the stupid RFCs who uses plain, monospaced text anymore [21:34] shaver: there is an html5 version somewhere, yeah [21:34] JojoBoss has joined the channel [21:34] shaver: forEach is in ES5, though [21:35] shaver: a co-worker has an HTML version, I think [21:35] shaver: lemme find it [21:35] shaver: yes! [21:35] shaver: http://people.mozilla.org/~jorendorff/es5.html [21:35] shaver: I don't think v8 implements all of es5 yet, though [21:35] shaver: maybe in bleeding edge [21:35] V1: We also have this doc: https://github.com/ry/node/wiki/ECMA-5-Mozilla-Features-Implemented-in-V8 [21:36] V1: Seems to be fairly up to date [21:37] aurynn has joined the channel [21:37] AAA_awright: HTML5 implies unnecessarily flashy, plain HTML? [21:37] bingomanatee_: Just because you are bleeding doesn't make you edgy. [21:37] bingomanatee_: Lemmings bleed. [21:37] AAA_awright: No one ever said HTML4.01 when they were talking about CSS I wish people would knock it off with calling HTML HTML5 [21:37] bingomanatee_: We could give it a cool code name. [21:38] shaver: AAA_awright: how's your 2011 so far, Senor Quixote? [21:38] bingomanatee_: "HTML - Ferret" [21:38] AAA_awright: Or at least stop confusing the next version of the DOM with HTML5 which has nothing at all to do with Javascript [21:38] shaver: who said HTML5 here? [21:38] bingomanatee_: Maybe have a hot babe hanging her hooters off the bar of the "H" [21:38] shaver: only you, afaict [21:38] AAA_awright: there is an html5 version somewhere, yeah [21:38] shaver: oh [21:38] shaver: that was just a typo, heh [21:38] AAA_awright: xD [21:39] shaver: I didn't even notice it [21:39] bingomanatee_: HTML5 is like religion - if enough people believe in it it exists. [21:39] AAA_awright: shaver: Where's my electric car? [21:39] shaver: I haven't checked the doctype on it [21:39] AAA_awright: er [21:39] AAA_awright: flying car [21:39] bingomanatee_: Expecially if it ends up in a book. [21:39] AAA_awright: (But electric too) [21:39] bingomanatee_: I can make a car fly. [21:39] shaver: hmm, that link is dead [21:39] bingomanatee_: Electric cars fly further. they have better pickup. [21:41] bingomanatee_: And technically speaking there are several flying cars. [21:41] bingomanatee_: Hobbyists have been making cars fly for a while. Jesse James did it on "Monster Garage". [21:41] CIA-121: node: 03Ryan Dahl 07master * r40f29dd 10/ (src/node_script.cc src/node_script.h): Lint node_script.cc - http://bit.ly/fZqIIf [21:48] sechrist has joined the channel [21:53] softdrink has joined the channel [21:55] jimt_ has joined the channel [21:59] namelessnotion_ has joined the channel [21:59] meandi has joined the channel [22:01] davidc_ has joined the channel [22:01] davidc_ has joined the channel [22:05] dspree has joined the channel [22:09] JojoBoss: anyone got a link to a good explanation of function chaining, like the way jquery does it? [22:10] Aria: Just return this from functions. [22:11] Aria: There's no magic to it -- it's just returning the logical object to keep working on. 'this' is often that object. [22:11] JojoBoss: ok [22:11] JojoBoss: so like encapsulate your functions in an object and have each function return this? [22:12] robotarmy has joined the channel [22:14] Aria: Sure. I mean, jQuery has a 'context' object that it returns -- the list of elements it's currently matching, among other things. [22:15] JojoBoss: k [22:15] JojoBoss: i get it. [22:15] JojoBoss: thanks [22:15] JojoBoss: dunno why I didnt just think to look at the jquery dev code. so used to viewing minified. [22:18] RichardJ: I never even use the minified version, I'm using a custom minifier in all deployment processes [22:18] RichardJ: dang, I wish JavaScript had extended regular expressions [22:20] sveimac has joined the channel [22:21] JojoBoss: custom minifier in node? [22:21] JojoBoss: are you compiling it on access or precompiled / compressed [22:22] Gruni has joined the channel [22:24] mikeal has joined the channel [22:25] Nevtus has joined the channel [22:25] Nevtus has joined the channel [22:28] Wizek has joined the channel [22:29] jimt has joined the channel [22:30] bingomanatee has joined the channel [22:30] noahcampbell has joined the channel [22:32] amerine has joined the channel [22:34] sivy has joined the channel [22:38] binarypie has joined the channel [22:40] richcollins has joined the channel [22:41] namelessnotion has joined the channel [22:41] RichardJ: JojoBoss: no, not in node, in PHP for the moment [22:42] JojoBoss: i've seen a couple for node in the modules list [22:42] JojoBoss: hows it work for you [22:44] RichardJ: it works great [22:44] RichardJ: very easy and fast [22:45] RichardJ: the parser is one step, then you get to optimizing the AST [22:45] RichardJ: lot of work to get it right but now it's killer [22:45] JojoBoss: cool [22:46] RichardJ: of course it isn't perfect but it's kind-of closed source for now until I've had time to clean up the code [22:46] jchris1 has joined the channel [22:47] RichardJ: you can try it here [22:47] RichardJ: http://expert-shops.com/minify/js.php [22:50] RichardJ: hmm, smoe trouble with my server [22:50] Aria: Hehe. Fails on code I gave it. [22:50] RichardJ: Aria: can you give me a copy? [22:51] Aria: a() [22:51] Aria: b() [22:51] Aria: function x(){bar()}() [22:51] RichardJ: the last one isn't valid without parentheses [22:51] RichardJ: it's a function statement now, not an expression [22:51] Aria: Oh. That'd do it. [22:52] RichardJ: so you can't just call it [22:52] Aria: Silly node repl failing without showing the error there. [22:52] RichardJ: :) [22:52] RichardJ: any idea what to do when your server doesn't seem to know anything about DNS? [22:53] RichardJ: i can ssh to it but something like "ping google.com" says host not found [22:53] jimt_ has joined the channel [22:54] Aria: You'd fix /etc/resolv.conf if it's linux, possibly that and nsswitch.conf if it's solaris. [22:56] robotarmy has joined the channel [22:56] RichardJ: seems the nameserver is down [22:57] RichardJ: sure of it, pinging 74.125.79.99 works fine [22:58] Aria: Likely. [22:58] Aria: 8.8.8.8 and 8.8.4.4 are google's that tend to work well. [22:58] gJ|Alex has joined the channel [22:58] RichardJ: all work fine [22:58] RichardJ: but the ip of the nameserver doesn't [22:59] RichardJ: dang, now I have to contact support :) [22:59] Aria: Fun! [22:59] Aria: Or use a different nameserver ;-) [22:59] RichardJ: you know, I'm not that used to managing a server ;) [23:00] Aria: Edit /etc/resolv.conf; change the nameservers IP there to 8.8.8.8, and 8.8.4.4 for secondary. [23:00] Aria: Assuming you don't mind letting Google in on your nameservice traffic. [23:01] Wizek has joined the channel [23:01] RichardJ: well, for now I don't see a problem [23:03] RichardJ: and suddenly it all works :) [23:03] jimt has joined the channel [23:03] RichardJ: thanks a lot [23:08] jimt_ has joined the channel [23:08] Wizek has joined the channel [23:09] herbySk has joined the channel [23:14] ryah: ACTION used gdbjit for real to find something out [23:15] Hello71 has joined the channel [23:15] Hello71 has joined the channel [23:16] shaver: using a debugger in anger is always a major step [23:18] derferman has joined the channel [23:18] Wizek has joined the channel [23:25] qFox has joined the channel [23:25] benburkert has joined the channel [23:26] RichardJ: using a debugger at all is a huge step for some people :) [23:29] zomgbie has joined the channel [23:30] Aria has joined the channel [23:30] tk has joined the channel [23:31] daveyjoe has joined the channel [23:32] jimt has joined the channel [23:32] Aria has joined the channel [23:34] Wizek has joined the channel [23:34] hornairs has joined the channel [23:37] Aria has joined the channel [23:38] jimt_ has joined the channel [23:39] daveyjoe: Hi, just trying to figure out the node.js paradigm. Is something like this https://gist.github.com/237529 performant in terms of server resources when compared with standard cron? [23:43] sveimac has joined the channel [23:45] ben_alman has joined the channel [23:45] Wizek has joined the channel [23:46] AAA_awright: daveyjoe: I can't figure out how it works past setInterval, there's no good reason to overload the Number prototype like that... [23:47] AAA_awright: daveyjoe: How cron works, or at least how it worked at one point, is it set a timer for the number of seconds until the next system time cron needed to be called [23:47] Wizek has joined the channel [23:48] AAA_awright: Every time the cron file was changed, or every time it was executed, it would calculate the next commands to run and when to run them, and you would use a setTimeout (Actually I forget the name but the lonely networking function in ) for those rules [23:48] mraleph: ryah: so I did help? [23:48] fugoki has joined the channel [23:49] mraleph: *i = it [23:49] daveyjoe: AAA_awright: Yeah, I guess I'm just wondering are node processes light enough to be run in the background indefinitely as a substitute for c-cron? [23:49] davidc_ has joined the channel [23:49] davidc_ has joined the channel [23:51] AAA_awright: select in [23:51] Wizek has joined the channel [23:52] AAA_awright: daveyjoe: That should be light enough, I'm not sure if it would drift or not, but certainly less than a recursive setTimeout with a constant delay [23:54] jimt has joined the channel [23:54] herbySk has joined the channel [23:55] daveyjoe: AAA_awright: Thanks [23:56] Wizek has joined the channel [23:57] maushu has joined the channel [23:57] AAA_awright: daveyjoe: If peformance is really an issue, I have no clue what that extra stuff is for ('if((5).minutes().addTo((5).minutes()).seconds == 600)' *blink*) there's no simpler way to handle that? [23:58] Wizek has joined the channel [23:59] jamund has joined the channel [23:59] jimt_ has joined the channel