[00:00] Tim_Smart: ryah: So the new suggestion for using non-js as modules would be to over-ride the compile() function? [00:00] ryah: Tim_Smart: hm - not sure [00:00] ryah: Tim_Smart: well, let's think about it [00:00] ryah: the hook in the module stuff is kinda annoying [00:00] ryah: there's probably an easier way for you all to hook in [00:00] Tim_Smart: .compile = function(stuff, ..) { doStuff(); old_compile.call(...); }; [00:00] ryah: yeah, for exmple [00:01] muk_mb: bah, both the redis orm's are backed by the non-working redis client [00:01] ryah: Tim_Smart: that puts the complication on your end [00:01] ryah: which i like :) [00:01] Tim_Smart: But as long as compile() accepts ecmascript source (not filenames) [00:01] ryah: i always go through that code and go "huh - what is this?" [00:01] ryah: then i have to remember.. [00:02] sstephenson: I'm using it in an application to require ejs templates as modules [00:02] ryah: Tim_Smart: okay [00:03] ryah: someone needs to do a new API for process.binding('evals') [00:03] Tim_Smart: ryah: Because you wouldn't devs to completely re-write the stock compilie() function just to patch in something small. [00:03] sstephenson: wouldn't require still need to know to look for the other extensions? [00:05] Tim_Smart: ryah: Well if I come up with a decent alternative, I'll send you a patch. [00:05] Anti-X: sveimac: pong [00:06] ryah: sstephenson: yeah -him [00:06] ryah: s/i// [00:06] pbradek has joined the channel [00:09] pbradek: what version of v8 should one be using with the node.js 0.2.2? [00:10] prettyrobots has joined the channel [00:10] asfw has joined the channel [00:12] Validatorian: I just installed node from http://github.com/ry/node and it says the version is 0.2.0 -- shouldn't it be the latest? [00:13] NemesisD has joined the channel [00:13] ryah: pbradek: [00:13] ryah: > process.versions.v8 [00:13] ryah: '2.4.4' [00:13] asfw: says 0.2.0 for me node --version [00:13] pbradek: i see 0.2.2 here http://nodejs.org/#download [00:13] Validatorian: yea- I was expecting 0.2.2 [00:14] salieri: i used the github [00:14] Tim_Smart: Latest master is using an old version that is all. [00:14] salieri: ah [00:14] Validatorian: is there a repo that will always contain the latest code? [00:14] muk_mb: what should my npmrc look like to install things into a local directory? [00:14] Tim_Smart: Validatorian: master does contain the latest code. [00:14] Tim_Smart: Validatorian: The version number just hasn't been updated/ [00:15] Validatorian: ah, alright [00:15] Validatorian: thanks Tim_Smart [00:15] ryah: > process.versions [00:15] ryah: { node: '0.2.0' [00:15] ryah: , v8: '2.4.4' [00:15] ryah: , ares: '1.7.3' [00:15] ryah: , ev: '3.9' [00:15] ryah: } [00:15] ryah: well - node's version is wrongish [00:15] ryah: :) [00:15] pbradek: so for v8 should we just be using trunk which is 2.4.4, or v8 2.3.8 as that is what is see in a nodejs changelog "upgraded to v8 2.3.8" [00:16] pbradek: or does it matter [00:16] JimBastard: did SubStack ever reappear [00:16] ryah: i guess we should change that to 3.0.0-pre [00:16] ryah: or something [00:16] ryah: er [00:16] ryah: 0.3.0-pre [00:18] benburkert has joined the channel [00:19] muk_mb: I seriously don't see where the syntax for npmrc is. Where is it? [00:19] aho has joined the channel [00:20] benburkert has joined the channel [00:20] bpot has joined the channel [00:20] muk_mb: nvm, got it working [00:20] jpld has joined the channel [00:22] CIA-77: node: 03Ryan Dahl 07master * r354150f 10/ src/node_version.h : Tag release versions in 'process.version' - http://bit.ly/9j0Xnz [00:22] blaines has joined the channel [00:22] lachlanhardy has joined the channel [00:23] Nietecht: Anyone got experience with using felixge's node-mysql? [00:23] NemesisD: how is assert.throws supposed to work? i pass a string as the second arg for the error text and it complains it was "expecting a function in instanceof check" [00:25] matschaffer has joined the channel [00:25] lhardy has joined the channel [00:26] muk_mb: mjr_: where's the redis info function? [00:27] ehaas has joined the channel [00:27] voodootikigod__ has joined the channel [00:29] wilmoore_ has joined the channel [00:29] sugardave has joined the channel [00:29] muk_mb: oh nevermind [00:29] derferman has joined the channel [00:30] JimBastard: http://localhost:8080/sys/puts?a=Hello%20World [00:30] JimBastard: :-) [00:31] JimBastard: http://localhost:8080/fs/writeFile?filename=foo.txt&content=lol&enc=binary&fn=function(err,rsp){console.log('lol%20file%20created');} [00:31] JimBastard: :-D [00:31] meatmanek: hoo boy [00:31] wilmoore_ has joined the channel [00:33] muk_mb: is redis not the storage system to use? hmm [00:35] _numbers: how can i turn a json string into an oject [00:35] ehaas: JSON.parse(string) [00:36] JimBastard: so yeah, does anyone wanna check this out? [00:36] JimBastard: http://github.com/marak/webservice.js [00:36] JimBastard: turns node.js modules into webservices [00:36] JimBastard: ryah? lol [00:41] sveisvei has joined the channel [00:43] ehaas has joined the channel [00:43] JimBastard: _announcer seems to hate me now [00:43] muk_mb: with express, do I need a style.css -and- style.less in my public/stylesheets? [00:50] muk_mb: oh ok, I get it [00:50] ryah: JimBastard: ? [00:51] JimBastard: ryah: you wanna peep this little project? http://github.com/marak/webservice.js . turns node modules into webservices [00:51] JimBastard: pretty simple code for now [00:52] _numbers: thx ehass [00:52] _numbers has left the channel [00:52] JimBastard: i think this might be a nice pattern for building web-services. you just create your modules and then you can expose them if you want [00:52] JimBastard: you can also create new modules that only export certain methods (that you want public) [00:52] JimBastard: and require your core business logic (which you dont want public) [00:54] prettyrobots has joined the channel [00:54] mjr_: muk_mb: does redis client.info() not work for you? [00:54] muk_mb: mjr_: Yeah turns out I was doing a few things wrong, haha [00:54] muk_mb: fixed though [00:54] mjr_: cool [00:57] muk_mb: redis.client.info(redis.print); works just fine [00:57] muk_mb: errr, redis client.info(redis.print); [00:58] Tim_Smart: ryah: I think I have an idea that should make the module system a bit more sane... [00:58] Tim_Smart: Well, some code rather. [01:04] Nohryb has joined the channel [01:04] f00li5h has joined the channel [01:05] gerred has joined the channel [01:06] chiragrules has joined the channel [01:07] jacobolu_ has joined the channel [01:07] a_meteorite has joined the channel [01:08] a_meteorite has joined the channel [01:13] chrisdickinson has joined the channel [01:13] ekidd has joined the channel [01:13] c4milo has joined the channel [01:13] drudge has joined the channel [01:17] eisd has joined the channel [01:19] jamescarr has joined the channel [01:21] digitalsatori has joined the channel [01:21] zhesto has joined the channel [01:28] manveru has joined the channel [01:28] manveru: heya [01:28] manveru: how do i check whether something == {} [01:31] jashkenas: manveru: that's a good question... figuring out if something is a vanilla object is actually a little tricky. Are we assuming that it's an object literal to start with, or can it be anything? [01:31] jashkenas: If you can assume it's an object literal, and just want to check if it's empty, you can: !Object.keys(object).length [01:32] manveru: it could be anything... [01:32] manveru: well, usually string, but sometimes {} [01:32] langworthy has joined the channel [01:32] manveru: and i just need to filter those out [01:32] manveru: so i guess i could check typeof instead [01:32] jamescarr: man [01:33] manveru: but everytime i use typeof i feel dirty :P [01:33] aho has joined the channel [01:33] NemesisD: anyone have any ideas about stubbing filesystem methods in tests? one of my modules reads from a file, i'd like to intercept that readFileSync call and return some string [01:34] jashkenas: manveru: I can't think of anything without explicitly blacklisting things it can't be. [01:34] jashkenas: typeof doesn't help you much here -- there are a ton of things that are typeof object. [01:34] manveru: heh [01:35] jashkenas: !Object.keys(object).length && !('length' in object) gets you pretty close. [01:37] jashkenas: that should knock out empty strings and arrays... [01:37] rcy has joined the channel [01:44] bradleymeck1: mmmm Object.getPrototypeOf(o)===Object.prototype && Object.getOwnPropertyNames(o).length === 0 [01:44] bradleymeck1: i cant really think of what that wouldnt cover [01:45] bradleymeck1: well need to check typeof o === "object" first [01:45] danielzilla has joined the channel [01:46] noahcampbell has joined the channel [01:46] dilvie has joined the channel [01:47] genexp has joined the channel [01:47] sahazel has joined the channel [01:49] mrbrdo has joined the channel [01:49] mrbrdo: anyone here use socket.io? [01:49] rtomayko has joined the channel [01:51] jamescarr_ has joined the channel [01:52] Tim_Smart: ryah: http://github.com/Tim-Smart/node/commit/b87686bc8d81c6e4fdb38264eae7b1229575568b.patch [01:52] jamescarr has joined the channel [01:52] sudoer has joined the channel [01:52] Tim_Smart: isaacs[away]: ---^ [01:53] saikat has joined the channel [01:54] nornagon has left the channel [01:57] voodootikigod__: ryah: you around [01:58] voodootikigod__: trying to figure out IOWatcher [01:58] voodootikigod__: it keeps eventing, but never reads [01:59] voodootikigod__: if anyone can help find the issue wiht this [01:59] voodootikigod__: http://github.com/voodootikigod/node-serialport/blob/master/serialport.js#L70 [01:59] voodootikigod__: would love the support [02:00] jesusabdullah: serial port? That sounds awesome! [02:00] jesusabdullah: I'd help, but I have no idea :S [02:02] voodootikigod__: thanks [02:02] voodootikigod__: its hte last piece i need [02:02] voodootikigod__: then its done! [02:03] saikat has joined the channel [02:05] voodootikigod__: join #node.js-dev [02:05] mephux has joined the channel [02:05] jesusabdullah: \join #node.js-dev [02:05] jesusabdullah: er [02:05] jesusabdullah: Sorry, LaTeX-ing [02:05] saikat has joined the channel [02:06] aho: dav glass' yui3+node talk was excellent :) [02:06] aho: 251mb http://yui.zenfs.com/theater/glass-node-hd.mov [02:09] jesusabdullah: downlording [02:10] jamescarr: res.send(JSON.stringify(obj), {'Content-Type':'application.json'}) gets annoyingly repetitive [02:10] jamescarr: wish I could leave the JSON.stringify out [02:11] bpadalino: could you prototype a new method for the response object to be sendJSON and just use that ? [02:11] jesusabdullah: Sounds like a good strat to me :) [02:12] bpadalino: i'm starting to get this stuff! it's scary :( [02:14] jakehow has joined the channel [02:19] dilvie: bpadalino: Yes we can. [02:19] bpadalino: neato [02:20] CrabDude has joined the channel [02:21] benburkert has joined the channel [02:21] isaacs[away]: anyone on the node-dev list noticed that splitting off has led to a flurry of patches? [02:22] dilvie: isaacs: I'm not on the list. ); [02:22] dilvie: ACTION is missing the party [02:24] bpadalino: what splitting off ? [02:24] halfhalo: who died? [02:24] isaacs: dilvie, bpadalino: ry announced it a while back [02:25] matschaffer has joined the channel [02:25] bpadalino: got a link to said announcement ? [02:27] eisd has left the channel [02:27] isaacs: bpadalino: http://groups.google.com/group/nodejs/browse_thread/thread/2def722a5a78ad41/ [02:28] bpadalino: thanks very much [02:29] bpadalino: oh i see .. interesting .. [02:29] Aria has joined the channel [02:31] bpadalino: very nice - it's probably a good split [02:32] Tim_Smart has joined the channel [02:33] jbenesch has joined the channel [02:34] CrabDude has joined the channel [02:35] kjy112 has joined the channel [02:36] _CrabDude has joined the channel [02:37] NemesisD: any nodeunit users in? what is the point of test.expect()? why would you want to assert how many tests you had [02:42] sstephenson: NemesisD: you need it when testing asynchronous code [02:42] sstephenson: otherwise you can't be sure assertions in async callbacks are ever made [02:44] bpadalino: is there anything that actually looks at code coverage ? [02:44] Aria has left the channel [02:44] Aria has joined the channel [02:47] amuck has joined the channel [02:48] Tim_Smart: bpadalino: Yup. Expresso is bundled with jscoverage [02:49] bpadalino: ah interesting [02:49] sirevanhaas has joined the channel [02:49] bpadalino: how does it figure out which parts of an if statement have been exercised ? [02:50] ivong has joined the channel [02:50] Tim_Smart: It modifies your source tree, and creates a new library to test against. [02:50] paulwe has joined the channel [02:51] bpadalino: interesting [02:52] derferman has joined the channel [02:55] Me1000 has joined the channel [02:57] NemesisD: sstephenson: oh i see.. ive got another question: how do i get calls to assert to count towards that expectation? the "test" context only has a few methods like equals, etc. if i make raw assert calls, it doesn't seem to count towards the testrunner's count [02:57] NemesisD: hope that made sense [02:57] atourino has joined the channel [03:01] Aria: test.assert() [03:09] dipser has joined the channel [03:09] dicon has joined the channel [03:10] bradleymeck1: mmm dmitry said i had errors in the js primer on nodejsbot, cant see any on a quick glance, did anyone else notice? [03:11] sechrist: ryah: did anything evolve on that ssl problem? [03:12] dilvie: bradleymeck1: where's the bot? [03:13] hassox has joined the channel [03:13] dilvie has joined the channel [03:14] rtomayko has joined the channel [03:14] bradleymeck1: the post on blogger [03:15] bradleymeck1: i can understand his wanting to use his article for advanced features (which it goes into great detail) but i still cant find the errors on that blog post [03:16] malkomalko has joined the channel [03:17] dilvie: I didn't see the link [03:18] bradleymeck1: In JS there are many arguments of whether classes exist or not (Wikipedia). [03:18] bradleymeck1: The argument that classes exist [03:18] bradleymeck1: Javascript allows the creation of Object that may inherit properties from other objects in a chain. That by definition is the smalled type that may be associated in a JS execution. They are neither Object's in the sense that they rely on inheritance and neither types due having instance methods and properties. [03:18] bradleymeck1: The argument that classes do not exist [03:18] bradleymeck1: Classes imply things about languages after years of use to some of us. All of these aresubjective but an argument about classes as considered from a per language implementation basis:Inheritance from multiple sources (interfaces and superclasses, or multiple inheritance). ClassesAccess privileges: namely a distinction of protect and private, friendly and not friendlyShared privileges: an ability to access private data of an inst [03:18] bradleymeck1: woops... [03:18] bradleymeck1: http://nodejsbot.blogspot.com/2010/09/javascript-primer.html [03:18] digitalsatori has joined the channel [03:19] matschaffer has joined the channel [03:19] x_or has joined the channel [03:20] nroot7 has joined the channel [03:21] sechrist: ryah: the leak actually appears to be with around AddCACert [03:21] sechrist: which is interesting [03:21] jacobolus has joined the channel [03:22] ivong has joined the channel [03:24] dilvie: bradleymeck1: Did you write that? [03:24] bradleymeck1: yea, in a fit of rage though [03:25] dilvie: There are a few problems. First of all, there are lots of missing semicolons - technically not required, but when you leave them off, the interpretter inserts them at line breaks if the line forms a complete statement on its own, which can introduce hard-to-find bugs. [03:25] bradleymeck1: it doesnt insert them actually, but it does complete the statement [03:26] x_or1 has joined the channel [03:26] terinjokes has joined the channel [03:26] dilvie: bradleymeck1: it guesses where they should go, and it sometimes guesses different from your intentions. [03:26] bradleymeck1: no it doesnt [03:27] hassox has joined the channel [03:27] bradleymeck1: there is no guesswork, if you attempt to have an expression on a line not with a statement that accepts a statement is the error crockford talks about [03:27] bradleymeck1: which makes perfect sense [03:28] terinjokes: how is node with XML data? [03:28] sechrist: terinjokes: pretty good [03:28] bradleymeck1: terinjokes it can parse it but if you want xslt or xpath, bleh [03:28] isaacs: terinjokes: there are a few xml parsers out there [03:28] sechrist: yeah xpath/xslt = :X [03:28] sechrist: node-expat the only one I suggest checking into [03:29] vmthehut has joined the channel [03:29] langworthy has joined the channel [03:29] errorhandler has joined the channel [03:29] sechrist: but from what I use of node-expat it's fantastic [03:29] bradleymeck1: line not with a statement that accepts an expression* [03:30] terinjokes: hrm [03:30] terinjokes: trying to think of the best way of handling this [03:30] sechrist: ryah: I found the source of the SSL memleak. It's because node is creating certs on the fly without a credentials passed (and not freeing them properly) [03:30] dilvie: return [03:30] sechrist: I reused a crypto.credentials and no more problem [03:30] dilvie: { [03:30] dilvie: thisIsBroken : "oops" [03:30] bradleymeck1: indeed, you returned undefined [03:30] dilvie: }; [03:32] dilvie: bradleymeck1: I think semi-colons help readability, too. For example, when I don't see a semicolon at the end of a line, I assume a multi-line statement -- that's not always the author's intent if they're lazy about semicolons. [03:33] terinjokes: is parsing a string file much worse/ [03:33] bradleymeck1: i think there are many arguments for both sides, as there have been for years [03:33] sechrist: terinjokes: what's your use case? [03:33] bradleymeck1: semicolons help clarify when a statement must end, lack of them i find to be more understandable personally when reading [03:33] noahcampbell has joined the channel [03:34] terinjokes: "PO files", Portble Objects (for internationalizations) [03:34] sechrist: terinjokes: like i8n? [03:34] bradleymeck1: however, calling that return statement bug a prime example, there is use for object literal statements, even if rare so i wouldnt really call it that [03:34] terinjokes: sechrist: exactly [03:34] paulwe has joined the channel [03:34] jbenesch1 has joined the channel [03:35] sechrist: terinjokes: k well are you handling a stream or a defined chunks? [03:35] terinjokes: sechrist: PO files are pretty standard, though in the future I might want to expand to other types [03:35] terinjokes: sechrist: files [03:35] terinjokes: sechrist: so I assume defined [03:35] sechrist: terinjokes: k node-expat and most of the node libs are stream-oriented. so you're most likely going to find the interface weird [03:35] bradleymeck1: then again, i guess you could be arguing against new lines entirely rather than semicolon use in particular [03:36] sechrist: it doesn't work like "parse the xml and give me back a json object" instead you get events for each type of xml object [03:36] bradleymeck1: ACTION is going to bed, heading off on tangents  [03:36] bradleymeck1 has left the channel [03:37] terinjokes: slightly a bit harder, I guess because I don't know the capablities of node (ha)... I'll also have to save the translations back to something [03:37] halfhalo: why is it so hard to build a damn control console for this irc thingie [03:38] sechrist: terinjokes: also it depends on what you want to do with the data. reading the XML is possible of course [03:38] Tim_Smart has joined the channel [03:39] terinjokes: sechrist: effectively, it's "read files, send to client, get item translated (returned from client), and edit that one part of the file [03:40] cataska has joined the channel [03:40] sechrist: fairly straightforward, though I'm not sure what the libraries have in terms of editing/rebuilding xml. I've only read xml data. [03:40] terinjokes: good enough for now /me guesses [03:41] jchris has joined the channel [03:42] dilvie: bradleymeck1: Do minifiers automatically insert semi-colons for you? =) [03:43] sechrist: dilvie: seems like they would take away semicolons where applicable :) [03:43] ivong has joined the channel [03:44] dilvie: var a = "Henry the ", [03:44] dilvie: b=7 [03:44] dilvie: ++b [03:44] dilvie: alert(a+b+"th\nI am, I am...") [03:44] dilvie: ^ that will break. [03:44] x_or has joined the channel [03:46] wilmoore_ has joined the channel [03:50] overra has joined the channel [03:52] dnolen has joined the channel [03:56] austinfromboston has joined the channel [03:56] jbenesch has joined the channel [03:59] CrabDude has joined the channel [04:02] gsmcwhirter: well then. managed to get node to segfault... interesting... [04:03] atourino has joined the channel [04:05] ehaas has joined the channel [04:09] ivong has joined the channel [04:10] benburkert has joined the channel [04:15] JimBastard has joined the channel [04:17] lachlanhardy has joined the channel [04:26] ysinopsys has joined the channel [04:26] gsmcwhirter: is there a straightforward way to change a buffer slice into an array? [04:26] endtwist has joined the channel [04:27] endtwist: http://nodejs.org/dist/node-latest.tar.gz is still pointing to v0.2.1 instead of v0.2.2. [04:27] damien has joined the channel [04:28] mjr_: gsmcwhirter: it'd be a pretty small function to make it one. [04:29] gsmcwhirter: mjr_, yeah. was just hoping there was a .toArray or something already in existence [04:29] mjr_: http://gist.github.com/587425 [04:29] mjr_: You can use that one if you want [04:30] mjr_: voodootikigod: did you figure out your iowatcher thing? [04:35] googol has joined the channel [04:41] dilvie has joined the channel [04:42] jbenesch has joined the channel [04:43] ivong has joined the channel [04:49] ehaas has joined the channel [04:50] jameshome: does crypto.createHmac need to be wrapped in a callback? [04:53] paulwe has joined the channel [05:00] jashkenas has joined the channel [05:00] tahu has joined the channel [05:00] prettyrobots has joined the channel [05:01] tk has joined the channel [05:01] ivong has joined the channel [05:03] meatmanek: are there any decent HTTP session libraries for node? [05:04] aaronblohowiak: lol [05:05] meatmanek: something funny? [05:05] aaronblohowiak: whoops, wrong window =) [05:07] mikew3c_ has joined the channel [05:13] dilvie has joined the channel [05:16] dilvie: hi [05:20] jbenesch has joined the channel [05:22] benburkert has joined the channel [05:27] JimBastard: so ive decided that anonymous callbacks over json-rpc is a bad idea [05:27] JimBastard: http://localhost:8080/demoModule/asyncHello?fn=function(){return%20'hello';} [05:27] JimBastard: lol [05:29] admc has joined the channel [05:30] JimBastard: i think just providing method names is safe though [05:33] jacobolu_ has joined the channel [05:35] saikat has joined the channel [05:35] nwhite has joined the channel [05:40] sechrist: Is there a way to execute javascript outside the node app via like one of the debuggers but inside the scope of an app? [05:40] sechrist: I tried but even like require was undefined [05:45] ph^ has joined the channel [05:46] jakehow has joined the channel [05:46] stiang has joined the channel [05:47] hassox has joined the channel [05:48] admc has joined the channel [05:48] meatmanek: JimBastard, it would be nifty if you implemented something with WebSockets or long polling so that the callback could actually be defined on client-side [05:49] JimBastard: meatmanek: it is defined [05:49] bronson has joined the channel [05:49] JimBastard: long polling works [05:49] meatmanek: hmm [05:50] meatmanek: it'd be nifty to abstract the HTTP request inside of a client library [05:51] meatmanek: so you can call something like thing.on('event', [05:51] meatmanek: fxnCallback); [05:51] meatmanek: where thing is the server-side module [05:54] jbenesch1 has joined the channel [05:58] JimBastard: dnode does that i think meatmanek [05:58] meatmanek: nifty [06:01] brianmario has joined the channel [06:01] ivanfi1 has joined the channel [06:01] jacobolus has joined the channel [06:04] NemesisD has joined the channel [06:05] amerine has joined the channel [06:05] amerine has joined the channel [06:07] jbenesch has joined the channel [06:07] mies has joined the channel [06:12] jbenesch has joined the channel [06:12] gerred: anybody here using faye? [06:12] gerred: it's basically everything I've ever wanted. [06:14] Duncan_ has joined the channel [06:21] jbenesch has joined the channel [06:22] sechrist: Anybody in here familiar with openssl sdk? I have no idea what's going on here [06:22] sechrist: http://github.com/ry/node/issuesearch?state=open&q=https#issue/221 [06:28] micheil has joined the channel [06:31] SamuraiJack has joined the channel [06:38] smcq has joined the channel [06:38] micheil: morning chaps' and ladies. [06:38] Tim_Smart: Evening. [06:39] smcq_ has joined the channel [06:39] mjr_: Tim_Smart: just about finished with pub/sub in my redis client. [06:39] jesusabdullah: gerred: No. Tell me about Faye. [06:39] jesusabdullah: >:) [06:39] Tim_Smart: mjr_: hawt. [06:39] javajunky has joined the channel [06:39] javajunky: yawn. honeymoon over, I'm back ;) [06:39] sechrist: Any cool startups in SF looking for engineers? I'm visiting for a few weeks and I'd like to migrate out here [06:40] Tim_Smart: ryah: ping. [06:40] gerred: jesusabdullah: it's an implementation for node/ruby of the bayeaux protocol. just started playing with it [06:40] gerred: er [06:40] gerred: bayeux [06:40] gerred: http://faye.jcoglan.com/ [06:41] jesusabdullah: Not familiar with the bayeaux protocol [06:41] jesusabdullah: But it allows for slick message passing between node and ruby? [06:42] gerred: node, ruby, and clients. [06:42] jesusabdullah: Huh [06:42] jesusabdullah: Cool [06:42] gerred: apparently it has support for websockets, with automatic fallbacks to long polling, but I'm still trying to figure that out. [06:43] galaxywatcher has joined the channel [06:43] sechrist: sounds like socketio [06:43] sechrist: (and I like socketio) [06:44] brianmario has joined the channel [06:44] gerred: sechrist: basically yes. [06:44] sechrist: however socketio isn't meant for inter-service message passing [06:44] javajunky: bayeaux is effectiely comet [06:44] Tim_Smart: Socket.io has a bit more overhead compared to plain websockets. [06:44] micheil: yeah [06:44] micheil: also things like queue / parsing of messages [06:44] javajunky: http://cometd.org/ [06:45] zomgbie has joined the channel [06:45] gerred: this may be my infamiliarity with websockets, but can javascript handle the actual WS creation? [06:45] sechrist: so it's like socketio + thrift? [06:45] micheil: yes [06:45] micheil: gerred: websockets come under the umbrella term HTML5 [06:45] gerred: right. [06:46] sechrist: it's not html at all [06:46] sechrist: bleh [06:46] micheil: so, currrent browser support is chrome, chromium, safari [06:46] gerred: sechrist: as far as I can tell. [06:46] micheil: sechrist: the client side comes under the umbrella of html5, while not strictly html [06:46] sechrist: there's a flash based ws client for those unfortunate clients [06:46] sechrist: before it hits xhr-multipart etc [06:47] gerred: anyway. thinking about creating a service using faye or socket.io that takes all the work out of real time sockets. basically, someone pays for a restful handler that their app posts to, embeds the relevant JS in their client side pages. [06:47] gerred: and the app broadcasts to those clients. [06:47] micheil: gerred: http://pusherapp.com and there's another one [06:47] gerred: aw, shame. [06:48] gerred: i'll compete. [06:48] sechrist: tons of people doing that [06:48] sechrist: pusherapp is one of like 4 that I know of [06:48] micheil: gerred: check out the changelog's panel on it for more: http://thechangelog.com/post/927103350/episode-0-3-1-websockets [06:49] micheil: sechrist: okay, well, yeah, I know of pusherapp and the one that powers observerapp.com [06:49] gerred: anyway. I've come to a philosophy on node.js/socket.io's entire point as being that intermediary, and the actual logic and client side stuff is handled by those respective services. [06:50] gerred: thus this. [06:50] gerred: it seems insane to handle logic inside node.js [06:51] micheil: gerred: no [06:51] gerred: no? [06:51] micheil: gerred: I'm doing it with the apps I'm currently working on fine [06:51] micheil: I have all the logic for it in javascript [06:52] micheil: even the unique sorting for data coming in [06:52] micheil: (it's a data aggregation service) [06:52] gerred: ah [06:52] micheil: so I have two segments: a worker & the server [06:52] micheil: the server's built with express.js and node-websocket-server [06:53] micheil: and the worker uses mongodb, hashlib, and request [06:53] gerred: ahh [06:53] gerred: express.js is essentially the sinatra of the js worldy es? [06:53] gerred: s/es/yes [06:53] micheil: (the only reason for a worker is because it's doing like, 2 reqs every 1800ms [06:54] micheil: and pretty much [06:54] micheil: have a look at http://github.com/ry/node/wiki/modules [06:55] gerred: oh cool [06:55] gerred: i'm going to have to dig much deeper into node [06:57] gerred: and socket.io [06:57] micheil: have a look at node-websocket-server too. [06:57] micheil: :D [06:58] micheil: ACTION is the author. [06:58] mr_daniel has joined the channel [06:58] gerred: ah cool. [06:59] gerred: ws.creareServer() under Server, is this a typo? [06:59] ryah: Tim_Smart: hey [06:59] micheil: sort of [07:00] micheil: ws.createServer() will either create a http.Server to use [07:00] jesusabdullah: creare [07:00] jesusabdullah: hah [07:00] gerred: creare. ;) [07:00] Tim_Smart: ryah: Oh hey, just was going to check if you had a glance at that patch yet. [07:00] micheil: or you can pass an option like: ws.createServer({server: http.Server}) [07:00] gerred: second paragraph, first word under Server. [07:00] micheil: and it'll hijack that server [07:00] ryah: Tim_Smart: no - not yet [07:01] ryah: i'll have a look tomorrow [07:01] Tim_Smart: OK brilliant. [07:01] micheil: hey ryah [07:01] micheil: ryah: btw, what did you think of those ideas for logo changes? [07:02] micheil: does anyone have an LRU for node? [07:02] micheil: like, an array with a fixed length [07:02] jesusabdullah: logo changes? [07:03] javajunky has joined the channel [07:03] micheil: jesusabdullah: ideas, nothing solid ;) [07:05] mjr_: Tim_Smart: new redis version with pub/sub is here. Feedback appreciated: http://github.com/mranney/node_redis [07:05] mjr_: Sadly, I'm still having an npm auth issue, so I don't be able to publish it until isaacs fixes it. [07:05] micheil: has anyone heard of anyone doing http fallbacks for websockets using redis? [07:06] mjr_: and now, to bed. [07:06] freeall has joined the channel [07:07] jesusabdullah: micheil: What ideas? I'm curious! [07:07] micheil: jesusabdullah: for? [07:07] pyro_ has joined the channel [07:07] pyro_: hi [07:07] micheil: howdy [07:07] pyro_: what's the closest framework to rails/django? [07:07] Tim_Smart: pyro_: Probably geddy [07:07] pyro_: i'm using express, i don't mind it but it's more along the lines of sinatra than rails [07:08] micheil: oh, yeahs, if anyone's working on something epically awesome that's opensource, email me: micheil@changelogshow.com [07:08] jesusabdullah: Oh, you do the changelog? [07:08] jesusabdullah: Shit son, I had no idea [07:08] micheil: yeah [07:08] jesusabdullah: I think my thesis is pretty awesome [07:08] micheil: I'm a part-time co-host [07:08] jesusabdullah: but it's not useful [07:08] jesusabdullah: :P [07:08] pyro_: i <3 cls [07:08] micheil: is it opensource? [07:08] jesusabdullah: My thesis? [07:08] jesusabdullah: I guess so [07:08] micheil: prove it. [07:08] jesusabdullah: well, everything on github anyway [07:08] micheil: :P [07:09] jesusabdullah: github.com/jesusabdullah/anisotropy [07:09] jesusabdullah: and [07:09] jesusabdullah: github.com/jesusabdullah/anisotropy_fea [07:09] micheil: jesusabdullah: tl;dr? [07:09] micheil: :P [07:09] pyro_: micheil: [07:09] micheil: ? [07:09] pyro_: micheil: do a segment on chromium [07:09] jesusabdullah: matlab scripts that interface with comsol to do finite element analysis [07:09] javajunky: pyro_: yeah it's express' *intention* to be close to sinatra, definitely geddy is trying to be closer to rails. [07:09] micheil: heh, I'll keep it in mind [07:09] pyro_: they just flipped the switch on webgl, 2d accelerated canvas, accelerated composition in beta 6 [07:10] micheil: I'm mainly to help write articles [07:10] pyro_: sorry i mean [07:10] pyro_: the flipped switch is firefox [07:10] micheil: (and do the node.js / js related interviews) [07:10] jesusabdullah: Hmm [07:10] pyro_: the acceleration is chromium [07:10] pyro_: but yeah [07:10] pyro_: 3d acceleration is huge in browsers atm [07:10] pyro_: itd be good to get the word out [07:10] pyro_: even microsoft has done a decent job, not that thats open source [07:11] pyro_: javajunky: [07:11] pyro_: Tim_Smart: [07:11] pyro_: would you say it's as mature as express [07:11] pyro_: i'm entered in a 48 hour game comp 2 weeks from today and i want something with a little documentation for my team [07:12] javajunky: pyro_: technically express has been around longer, but in its *current* form, geddy has actually been around a little longer, they're both mature enough :) . I'm biased as I"m associated with express [07:12] Tim_Smart: pyro_: Not quite. mde might be around to help though. [07:12] micheil has left the channel [07:12] micheil has joined the channel [07:12] pyro_: hmm [07:12] shellingfox has joined the channel [07:12] pyro_: do the people in #nodejs know theyre in the wrong room lol [07:12] pyro_: it should forward here [07:13] pyro_: or have a bot saying [07:13] pyro_: goto node.js [07:13] pyro_: i might write on...in node [07:13] crohr has joined the channel [07:13] javajunky: pyro_: there's a few irc bots to use as starting points ;) [07:13] pyro_: ja [07:13] pyro_: there's this badass framework in ruby [07:13] pyro_: i'd love to see a js version as mature some day [07:14] pyro_: the ruby one uses eventmachine and stuff so it'd be a good benchmark [07:14] javajunky: port it then :) [07:14] pyro_: hmm [07:14] pyro_: once upon a time i may have [07:14] pyro_: dont use irc as much these days [07:14] javajunky: fair [07:15] pyro_: so geddy you thinks? [07:16] javajunky: pyro_: again, biased , I'd use express ;) [07:16] javajunky: geddy offers much better model orientated stuff, so if you need/want that then geddy [07:17] javajunky: express builds on top of connect so you get all of that module support for free [07:17] pyro_: javajunky: as much as i'd like to say i do i'm not sure i dont [07:17] pyro_: yeah that might be more valuable for the comp [07:17] pyro_: just being able to drop in some rack-like functionality [07:17] javajunky: if you've any requirements for authentication with 3rd party systems, I'd say that express is currently better (but then I wrote connect-auth so extremely biased on that one) [07:18] pyro_: hmmm not just yet but ill keep that in mind for our current project [07:18] pyro_: game engine ^w^ [07:18] pyro_: \mmo [07:18] pyro_: so we'll definitely need some decent authen [07:19] javajunky: well I woud [07:19] javajunky: nt say 'decent' .. but pretty complete ;) [07:19] javajunky: http://github.com/ciaranj/connect-auth [07:20] sechrist: woah wth.. the same query in both navicat and node-mysql takes 21 times longer in node-mysql [07:20] sechrist: 30msish for navicat, 640ish for node-mysql [07:20] sechrist: large resultset (few k), but daaaamn [07:21] pyro_: what's the query if you dont mind [07:22] sechrist: that's IP but I'll write something similar [07:22] sechrist: sec [07:22] pyro_: ta [07:22] pyro_: i cant fix it for you but im interested in avoiding the same type of query ^w^ [07:24] sechrist: pyro_: http://pastie.org/1169560 [07:24] sechrist: it's a simple equijoin [07:24] sechrist: 4k row resultset on average [07:24] sechrist: the problem isn't mysql [07:24] sechrist: it's the node library [07:24] pyro_: yeah i gathered that from navicat being fast [07:25] jesusabdullah: Which library? [07:25] sechrist: var Client = require('mysql').Client [07:25] sechrist: so [07:25] sechrist: node-mysql [07:25] sechrist: lemme get ver [07:26] sechrist: 0.5.0 mysql by felix [07:26] pyro_: you should try to profile the query [07:26] sechrist: from npm [07:26] sechrist: oh i've ran explains and crap on it [07:26] sechrist: I know what it's doing [07:26] pyro_: nah not that part [07:26] pyro_: i mean the parsing part in node [07:26] sechrist: ah [07:26] sechrist: true [07:27] pyro_: i imagine the bulk of the work is just in transcoding into javascript strings [07:27] pyro_: javascripts especially slow at that [07:27] sechrist: shouldn't be that slow though [07:27] pyro_: given it's all unicode [07:27] Anti-X has joined the channel [07:28] pyro_: and i imagine it's jumping between the c and js a billion times as it parses the response from mysql [07:28] sechrist: it may be the way i'm using the library too [07:29] sechrist: I'm waiting for the entire query to come back and call the callback instead of using the provided events per row and stuff [07:33] ngw has joined the channel [07:34] ngw has joined the channel [07:38] shockie has joined the channel [07:39] unconed has joined the channel [07:40] mbrochh has joined the channel [07:40] mbrochh has joined the channel [07:46] virtuo has joined the channel [07:47] pyro_: sechrist: the fact the library has per-row ops might be the source of its slowness [07:48] pyro_: but yeah, it's very much node-like to hook into the per-row events [07:48] pyro_: if that fits in well with your architecture try to use that instead [07:48] pyro_: that way your user wont go .6 seconds without any action and it'll be better on memory [07:49] sechrist: no user [07:49] pyro_: no user [07:49] sechrist: this is generating stats [07:49] pyro_: program uses itself? [07:49] sechrist: but yeah [07:49] pyro_: lol well in that case it doesnt really matter [07:49] pyro_: might be easier just to do the entire result set [07:49] sechrist: oh I can't have a runtime over a few seconds [07:49] sechrist: but yeah I can do per row [07:49] sechrist: i'll clock both in a sec [07:50] pyro_: the per row will be slower i think [07:50] pyro_: more calls [07:50] pyro_: calls are slow [07:50] sechrist: I mean I'm taking the results and doing (what I perceive to be) a map/reduce heh [07:50] sechrist: plopping into arrays and crap, but that's like 20ms of my time [07:50] sechrist: instead of 600-700ms [07:50] pyro_: id say [07:50] pyro_: the majority of the .6 seconds is actually blocking js execution [07:51] pyro_: so in this case you're not getting much out of it being async [07:51] sechrist: I'm already using step, so lmao.. I get you though [07:51] pyro_: but you're probably not doing much while you wait around for the results [07:51] sechrist: if I do per row the libev loop can continue other things [07:51] sechrist: between rows [07:52] sechrist: but then I have to group callbacks and all kinds of nasty things [07:52] sechrist: that's likely slower [07:52] pyro_: yes, you can be processing rows whilst the rest are i/o'ing [07:52] nroot7 has joined the channel [07:52] pyro_: which means you'll be getting the most out of the evented nature [07:52] pyro_: so yeah id go with perrow if it's not too much trouble [07:52] pyro_: let me know when you benchmark it im interested in knowing [07:52] olegp has joined the channel [07:53] DoNaLd` has joined the channel [07:53] pyro_: for some reason [07:53] pyro_: even though it's not the most artistic i've ever seen [07:53] pyro_: i kinda like the geddy site [07:53] pyro_: Tim_Smart: [07:54] rnewson has joined the channel [07:55] sechrist: I need to read up on Mach ports [07:55] sechrist: those things are weird [07:55] pyro_: javajunky: would it be feasible to base geddy on connect? [07:55] pyro_: they're not incompatible in anyway are they? [07:55] aubergine has joined the channel [07:55] pyro_: theoretically or otherwise [07:56] pyro_: when coffeescript gets executable class bodies geddy's ORM will be so clean [07:59] sechrist: does coffeescript add any significant time onto execution? [07:59] sechrist: I'd guess that happens with the script loads moreso than during runtime [08:00] Duncan_ has joined the channel [08:02] unconed: anyone here know a lot of about handling unix processes and node.js? specifically i'd like to spawn childprocesses with more pipes pointing at them than just stdin/out/err [08:04] javajunky: pyro_: I've no idea, mde is the guy to ask [08:04] pyro_: ok [08:06] sahazel has joined the channel [08:08] Tim_Smart: pyro_: Executable class bodies = constructor function... [08:08] vmthehut has joined the channel [08:08] pyro_: Tim_Smart: not exactly [08:09] Tim_Smart: I'm not sure if jashkenas will ever let that patch pass. [08:09] pyro_: ill find the issue [08:09] Tim_Smart: Yeah I know the issue [08:09] pyro_: Tim_Smart: he will if someone proposes a clean implementation [08:09] pyro_: someone smart will come up with a trick for the "this" issue [08:09] pyro_: IMO thats the only thing holding it back [08:10] pyro_: it will make it so much nicer [08:10] path[l] has joined the channel [08:10] iwasbiggs has joined the channel [08:12] pyro_: does anyone else think that css is just the wrong 'language' to be trying to animate things [08:12] unconed: pyro: you mean CSS transitions, or CSS animations? [08:13] pyro_: animations [08:13] iwasbiggs: there are so many things they could have fixed, but instead, they add another feature =\ [08:13] Tim_Smart has joined the channel [08:13] pyro_: maybe when there's a decent IDE to abstract away all of the math from 'artists' then it will be irrelevant [08:13] unconed: well it seems the main reason they added it is so you could achieve hardware accelerated animation on the iphone/ipad [08:13] pyro_: but whilst you need to code animations by hand it's so awkward... [08:13] unconed: but the possibilities are pretty limited [08:14] pyro_: im reading through some stuff on chromium [08:15] pyro_: http://dev.chromium.org/developers/design-documents/gpu-accelerated-compositing-in-chrome [08:15] pyro_: there's a new flag [08:15] pyro_: --enable-accelerated-compositing [08:16] sechrist: pyro_: it's about the same either way, but yeah way less blocking [08:16] pyro_: sechrist: if you were performing more processing on the rows [08:16] unconed: pyro: well, css animations means the animation loop is not in battery-draining JS code [08:16] pyro_: sechrist: the per-row would be ~ 600 ms faster [08:16] unconed: doesn't really affect compositing, but does allow them to be leaner about it [08:17] pyro_: unconed: this flag enables hardware css acceleration [08:17] pyro_: that's what they call 'compositing' [08:18] sechrist: pyro_: that's an interesting figure. how the hell though? the same processing is taking place. I don't think mysql is actually streaming the results as efficiently as it could be, but even so. whatever hehe [08:18] unconed: yes but whether an object is positioned manually with JS or through defined css animations, something has to composite it regardless [08:18] sechrist: 99% of my execution time is node-mysql being slow. that sucks. [08:18] pyro_: sechrist: [08:18] pyro_: if it really bothers you [08:19] sechrist: libmysql bindings probably are way more blocking [08:19] pyro_: you could run the mysql query through the mysql binary directly and just pipe in the results [08:19] spetrea has joined the channel [08:19] pdelgallego has joined the channel [08:19] sechrist: now THAT would be interesting [08:19] Tim_Smart: sechrist: Are you using felixge's module? [08:19] pyro_: he is [08:19] sechrist: Tim_Smart: yes [08:19] sechrist: it's slow as shit [08:20] sechrist: at least for my particular query resultset [08:20] Tim_Smart: sechrist: Which node branch are you on? [08:20] Tim_Smart: 0.2 or latest master? [08:20] sechrist: the 0.2.2 I built maybe yesterday? [08:20] sechrist: from nodejs.org tarball [08:20] Tim_Smart: Oh right so you aren't on a branch with fast-buffers. [08:20] sechrist: and node-mysql 0.5.0 from npm [08:21] sechrist: fast buffers aren't in the main release yet? [08:21] Tim_Smart: Nope. [08:21] pyro_: Tim_Smart: how do they achieve their fastness... [08:21] sechrist: how is ryan doing his rollouts? I don't really get it thus far [08:21] sechrist: I need to check out the branches I spose [08:21] Tim_Smart: pyro_: Memory pool. [08:21] pyro_: that's cool [08:21] pyro_: that's what i'm doing in webgl atm [08:21] pyro_: for 3d math [08:21] jimmy203 has joined the channel [08:22] Tim_Smart: Mainly the fact that calls to C++ from ecma-land is slow. [08:22] pyro_: not performing any allocations in my matrix / vector / quartering operations [08:22] pyro_: so memory pooling perse [08:22] xla has joined the channel [08:23] sechrist: damn [08:23] sechrist: buffers even faster than Buffer [08:23] Tim_Smart: Buffer was always slow. [08:23] Tim_Smart: But not as slow as large strings. [08:23] digitalspaghetti: heh @nodecore would be funny....if they made any funny, but unfortunatly they do not [08:24] sechrist: Tim_Smart: Are you familiar with openssl's lib? [08:24] Tim_Smart: Not really. [08:24] Tim_Smart: I'm view on crypto is to leave it to everyone else, and just use it. [08:24] Tim_Smart: s/I'm/My/ [08:24] sechrist: http://github.com/ry/node/issuesearch?state=open&q=https#issue/221 [08:24] sechrist: ah [08:24] sechrist: ic [08:25] Tim_Smart: Wow 60MB+ for a crypto op? [08:26] sechrist: oh dude [08:26] sechrist: it climbs linearly [08:26] sechrist: it's a legitimate memory leak [08:26] sechrist: it will consume all of your ram [08:26] delapouite has joined the channel [08:26] Tim_Smart: Is ssl the bug, or node just doing it wrong? [08:26] sechrist: it's in the credential generation on the flight [08:26] sechrist: it's node [08:26] sechrist: fly* [08:27] sechrist: I don't know exactly what the hell the problem is, because he's calling x509_free on the object that is supposedly leaking [08:27] sechrist: according to Leaks [08:27] sechrist: if you reuse credentials it's fine [08:27] Tim_Smart: Hmm yeah crypto refactor is definitely on the TODO list apparently. [08:27] markwubben has joined the channel [08:27] sechrist: (I mean that probably still leaks, but at least it's once and not n times) [08:28] matjas has joined the channel [08:28] pyro_: device tag preview: http://www.youtube.com/watch?v=WcwnQW_AnC8&feature [08:30] jimmy203: has anyone used connect-mongo? [08:30] sechrist: pyro_: scuba pirate ftw [08:30] sechrist: that's pretty cool [08:30] sechrist: flash gtfo [08:31] sechrist: css transformation that's sweet [08:32] pyro_: yep [08:32] sechrist: I don't know how you can call all of this "HTML5" technology "HTML5" [08:32] pyro_: yeah [08:32] pyro_: i dont really care it's the best word for it [08:32] sechrist: web 3.0 [08:32] sechrist: (but even that is stupid) [08:32] pyro_: html5 has just become a label for the accepted apis [08:33] jesusabdullah: "cool new shit" [08:33] pyro_: and by accepted i mean apis with two or more implementations [08:33] gthb has joined the channel [08:33] pyro_: it's kind of what the web needed, the browsers are finally taking responsibility for the internet rather than some fuzzy-haired ivory tower knobheads [08:33] unconed: pyro: er but the difference is, the standard process is now geared towards it [08:33] sechrist: hopefully ie6 dies soon and ie7 doesn't become it's retarded cousin [08:34] unconed: html5 and css3 are now modular standards, with different portions at different stages of completion [08:34] unconed: whichever is widely implemented reaches standard status [08:34] pyro_: that's okay as long as there are acid tests [08:34] unconed: so it really is HTML5 [08:35] muk_mb: what's the js equivalent to the ruby write_attribute ? [08:35] sechrist: you can't call a clusterfuck of javascript/websockets/canvas "hypertext markup language 5" [08:35] unconed: sechrist: why not? [08:35] sechrist: I guess you should, honestly [08:35] sechrist: because "web development" is honestly one of the hardest things to pick up and learn [08:35] unconed: when hypertext came out, the idea of embedding a link in a piece of text was unique [08:35] sechrist: due to all of the different technologies you have to have a grasp on [08:36] caolanm has joined the channel [08:36] sechrist: (To do it properly, and not half-ass-indian-style) [08:36] unconed: now with html5, it seems it is acceptable that "hypertext" is now software [08:36] herbySk has joined the channel [08:36] sechrist: hyperjson markup language IMO [08:36] unconed: well i know i'm doing interesting things with it ;) [08:37] sechrist: yeah but like if somebody asked me "How do I start to get into web development?" I have no idea what to tell them [08:37] unconed: google has a course up [08:37] unconed: http://code.google.com/edu/ajax/index.html [08:37] daglees has joined the channel [08:38] antares_ has joined the channel [08:38] pyro_: "web 2.0" [08:38] pyro_: that's so 2009 [08:39] unconed: thing is, nobody is really teaching this stuff [08:39] unconed: it's all the industry doing it itself, at a tiny pace [08:39] unconed: at conferences and camps [08:39] unconed: if you try to hire junior developers, the ones who aren't eager hackers already will be behind 5 years [08:39] sechrist: ^ [08:39] pyro_: i bet all the people who opted to make games in "html5" for performance reasons rather than opting for canvas are kicking themselves now it's hardware accelerated [08:40] unconed: well 2D canvas is interesting [08:40] unconed: but the real magic happens when webgl becomes universal enough [08:40] sechrist: isn't canvas "html5" [08:40] pyro_: sort of [08:40] unconed: sechrist: i think he means "using native HTML elements rather than drawing onto canvas" [08:40] sechrist: oh lord [08:40] sechrist: like [08:40] pyro_: in this case by html5 i mean css animations and dom elements [08:40] sechrist: ew [08:40] sechrist: svgs [08:41] unconed: opacity styles etc [08:41] pyro_: yeah basically svg or even worse [08:41] unconed: z-index [08:41] pyro_: svg's not that bad for some games [08:41] saikat: which browsers are using GPU for canvas? [08:41] unconed: only IE9 so far [08:41] sechrist: hopefully ie9 [08:41] unconed: and chromium nightlies iirc [08:41] saikat: interesting [08:41] sechrist: IE 9 should be very good [08:41] saikat: didn't know about that, i like that news a lot [08:41] pyro_: yeah ie9 is decent [08:42] unconed: yeah and they've thrown down the gauntlet at least there [08:42] pyro_: was taking a look last night [08:42] sechrist: I mean I won't use it -- but I'm happy it's fabricating [08:42] unconed: within the year, all the major browser will have to be hardware rendered [08:42] aubergine has joined the channel [08:42] unconed: safari / chrome already has the mobile path to work off [08:42] unconed: firefox is working on it for 4 [08:42] saikat: i do pretty much [08:42] saikat: everything on canvas [08:42] saikat: just bet big that it would eventually get fast enough [08:42] pyro_: canvas is win now [08:42] sechrist: I've never worked with canvas [08:42] saikat: well, it's already pretty fast [08:42] saikat: i'm pretty happy with my bet then [08:42] sechrist: I've never made an "html5 app" [08:42] pyro_: yeah with acceleration it smashes html [08:42] sechrist: I've used websockets but with fallbacks [08:43] pyro_: whatd you use? [08:43] unconed: there's socket.io which is awesome [08:43] saikat: yeah, i'm using socket.io [08:43] sechrist: well yeah I used socket.io [08:43] saikat: which is great [08:43] sechrist: I uhm [08:43] saikat: and cappuccino on the frontend [08:43] pyro_: i have a youtube video up of some webgl stuff using websockets to load all the content and sync between instances [08:43] saikat: which used to abstract over canvas/VML [08:43] pyro_: it was AWESOME [08:43] sechrist: used xhtml 4.01 transitional + jquery [08:43] saikat: but soon i probably won't care about that abstraction [08:43] sechrist: booyah [08:46] sechrist: everything I've worked on has been practical [08:46] sechrist: a lot of the "html5" branded technologies are still toys [08:47] sechrist: websockets being the only one I've actually taken advantage of, because