[00:01] Tim_Smart: Wow. Thats a pretty decent net split. [00:02] tmpvar has joined the channel [00:03] Atmoz has joined the channel [00:04] shimondookdin: i've started to write an maybe article anyone someone wants to do the tests and complete it: http://wiki.github.com/shimondoodkin/nodejs-autorestart/nodejs-with-haproxy [00:04] someone_cool has joined the channel [00:04] shimondookdin: *an artice and maybe .. [00:04] someone_cool: sup node.js crew [00:04] someone_cool: what's cool right now [00:04] Tim_Smart: someone_cool apparently. [00:05] someone_cool: :) [00:05] shimondookdin: have you heared about the http://wargamez.mape.me/ [00:05] jsilver: no seriously [00:05] stagas: chrome is like notepad I just run it some times because it loads fast and is quick. firefox is like word, bloated with all the features I need (through the extensions) but takes an hour to start [00:05] bd_ has joined the channel [00:05] Tim_Smart: stagas: That was... random. [00:06] jsilver: ok [00:06] jsilver: that's f*ing cool shimondookdin [00:06] jsilver: for real [00:06] jsilver: props [00:06] stagas: Tim_Smart: lol saw something sechrist was saying about chrome :) [00:06] Tim_Smart: mape made that one. [00:06] sechrist: blah blah blah chrome [00:06] shimondookdin: thats of mape [00:07] stagas: sechrist: boom! [00:07] sechrist: i'm in the list? [00:07] sechrist: I thought I wasn't on the wargame [00:07] stagas: sechrist: you're not in [00:07] Tim_Smart: nope :/ [00:07] stagas: :P [00:10] sechrist: lame [00:10] sechrist: i wanna play [00:10] sechrist: I guess I need a better vhost [00:11] _announcer: Twitter: "The plans are: node.js, express and django! \ O" [pt] -- Rafael Souza. http://twitter.com/rafaelkin/status/17530621622 [00:11] sechrist: lol @ the third apple founder [00:11] sechrist: $800 vs 22 billion [00:11] _announcer: Twitter: "Plan on some more fab/nodejs hacking, and validating fixing a potential bug with servicestack.text's dump method." -- A'braham Barakhyahu. http://twitter.com/BlessYahu/status/17530635126 [00:11] [[zz]] has joined the channel [00:11] KungFuHamster has joined the channel [00:11] kodisha has joined the channel [00:11] paulwe has joined the channel [00:11] bmizerany has joined the channel [00:11] zum has joined the channel [00:11] opello has joined the channel [00:11] lianj has joined the channel [00:11] bradleymeckboom has joined the channel [00:11] jdub has joined the channel [00:11] persson has joined the channel [00:11] Guest42356 has joined the channel [00:11] rphillips has joined the channel [00:11] inarru_ has joined the channel [00:11] Sembiance has joined the channel [00:12] jashkenas has joined the channel [00:13] sechrist: it's 2010 [00:13] sechrist: netsplits shouldn't exist [00:13] sechrist: redesign irc with redundancy plz [00:13] sechrist: better redundancy* [00:14] Tim_Smart: IRC is getting a little out-dated. [00:14] Tim_Smart: Someone needs to propose a better protocol. [00:14] sechrist: oh there are better protocols [00:14] sechrist: they're not adopted [00:14] sechrist: like xmpp [00:14] Tim_Smart: OK. Does it have a spec for chat? [00:14] gerad: Tim_Smart: email's getting a little out-dated too [00:14] sechrist: yeah [00:14] sechrist: mucs [00:15] gerad: Tim_Smart: Google wave!!!! [00:15] Tim_Smart: gerad: Heh. [00:15] sechrist: gerad: god no [00:15] MattJ: ACTION waves to Google [00:15] sechrist: and yeah xmpp has the multi-user chat [00:15] Tim_Smart: Google Wave is way slow. [00:15] sechrist: I've never used it [00:15] Tim_Smart: There needs to be a node version [00:15] gerad: Tim_Smart: I'm bitter because I've been doing email based client work all week [00:15] MattJ: Tim_Smart: when did you last use it? [00:15] Tim_Smart: MattJ: A month or two ago [00:15] MattJ: It's still not brilliant, but it's much better than it was in the early days [00:15] gerad: Tim_Smart: receiving / parsing emails - SMTP is actually quite simple / nice [00:15] sechrist: gerad: working out of your email? :( [00:16] sechrist: imap is cooler [00:16] sechrist: thing about emails is, they're durable against failure due to retries and sendmail/qmail queues [00:16] sechrist: if you netsplit in irc [00:16] sechrist: you lose that timespan of conversation [00:16] gerad: sechrist: I believe it, the ruby imap gem is really nice, but it's kinda cool to be able to telnet into a mail server and type out the commands to send a message [00:16] sechrist: unless you have specific loggers like debuggable [00:17] sechrist: gerad: who needs to do that? :) [00:17] gerad: sechrist: somewhat unfortunately, me this week [00:17] gerad: :-P [00:19] _announcer: Twitter: "I gotta say Express is my favorite web app framework at the moment. So ez and extensible. #nodejs" -- Joe McCann. http://twitter.com/joemccann/status/17531067364 [00:19] sechrist: express is outdated [00:19] sechrist: oh perhaps not -- commits 2 days ago [00:19] sechrist: is it running on top of connect yet? [00:19] jashkenas: sechrist: what are you using instead? [00:20] sechrist: jashkenas: not a framework [00:20] sechrist: I've dabbled with connect but I don't have a need to use node for web routing and stuff [00:20] sechrist: not until there's a clear cut way to render pages asyncly properly [00:21] gerad: express was nice for nodeknockout.com/ [00:21] gerad: but that's not a traditional node app [00:21] gerad: would have been better in sinatra / rails :-) [00:22] Tim_Smart: sechrist: If you worry about rendering blocking the event loop, spawn a web worked dedicated to rendering. [00:22] Tim_Smart: *worker [00:23] ben_alman has joined the channel [00:24] sechrist: for each request? [00:24] sechrist: a process spawn for each request that comes in? [00:24] sechrist: LOL [00:24] sechrist: sorry I don't think that would be any better than php-fcgi [00:24] Tim_Smart: sechrist: No silly [00:24] Tim_Smart: sechrist: Keep one open, and just pass jobs to it. [00:25] sechrist: uhh [00:25] sechrist: how would that work? wouldn't multiple requests just block on each other? [00:26] _announcer: Twitter: "I'm eating a burger @ DuMont Burger. Talking node.js with @robspychala. http://htp.to/d1eGPa" -- Linc. http://twitter.com/11nc/status/17531458630 [00:26] sigma__ has joined the channel [00:26] Tim_Smart: sechrist: Parent process gets rendering job, sends it to child via ipc, then listens for a response. [00:26] sechrist: okay and with 200 concurrent requests waiting to render the page [00:26] sechrist: how does this function? [00:26] Tim_Smart: It sends 200 jobs to the child (if you can't be bothered caching) [00:27] sechrist: and they process in order? that uhm ehh [00:27] Tim_Smart: sechrist: You assign unique id's to each task/ [00:28] sechrist: I must be fundamentally missing something here [00:29] sechrist: I would understand having several worker processes and working kind of like fastcgi processes, but having one worker process for rendering pages with blocking code sounds like everything would just block in that process [00:29] Tim_Smart: Everything would block in the child, yes [00:29] sechrist: yeah that's retarded [00:29] Tim_Smart: As long as your parent can still serve requests its fine. [00:30] Tim_Smart: Remember this is CPU-blocking, not IO related. [00:31] sechrist: and I still don't see how a child process even addresses my concern [00:31] Tim_Smart: I might make a simple task queue for this sort of thing. [00:31] sechrist: rendering pages in php is awesome because you can just inline shit anywhere you want to [00:31] jashkenas: if you're distributing a piece of javascript -- are you legally required to put the license at the top of the file: or is it acceptable to simply include it as a LICENSE alongside the JS... It seems like most minified versions of libraries come with the license inline -- and I'm wondering if there's a reason for that. [00:31] sechrist: the only viable solution i've seen in node is gathering up all of the variables before running [00:32] Tim_Smart: jashkenas: I think inline is the preferred way via the license maintainers. [00:36] _announcer: Twitter: "tonight at @sdruby: edward o'connor on node.js, patrick crowley on mobile web apps using jqtouch, and beer at rock bottom afterwards." -- SD Ruby. http://twitter.com/sdruby/status/17532035859 [00:38] qschzt has joined the channel [00:39] qschzt: mape, that's certainly bringing a lot of new Node users in :) great job! [00:40] sechrist: well unless of course you render pages in incremental closures but that's totally spaghetti shit [00:41] mscdex: sechrist: i had started a little framework that lets you inline js with the output [00:41] mscdex: like with tags instead of [00:41] sechrist: whaaaat? [00:42] qschzt: I would actually like to use the new instances feature of V8 [00:42] jashkenas: sechrist: see: http://ejohn.org/blog/javascript-micro-templating/ [00:42] mscdex: rendering pages in php is awesome because you can just inline shit anywhere you want to [00:42] aheckmann has joined the channel [00:42] qschzt: isolates, not instances [00:42] _announcer: Twitter: "Want: Node.js Riak http://busk.com/Kr-I Wrapper" [lt] -- spiceee. http://twitter.com/spiceee/status/17532440279 [00:43] sechrist: that's not raw logic but still cool [00:43] sechrist: oh wait [00:43] sechrist: it is [00:43] qschzt: http://codereview.chromium.org/2566002/diff/17001/18001 looks really good to me [00:44] qschzt: I'm doing that in Rhino now, would love to in V8 [00:45] qschzt: 'scope switching' [00:47] Tim_Smart: sechrist: I would just pass the context to the child worker as a json object then render it with whatever you pleased. [00:48] Tim_Smart: But that is just me. [00:48] sechrist: i'm totally for rendering pages with worker processes [00:48] sechrist: but the way you described it seemed flawed [00:48] dmitry has joined the channel [00:48] _announcer: Twitter: "Node.js and Coffeescript is ridiculously entertaining combination to hack on." -- Chris Shorrock. http://twitter.com/EbinFlow/status/17532788651 [00:48] Tim_Smart: :p I will have to give a go sometime, and bench it. [00:50] sechrist: mscdex: the actual rendering of the page is super quick, it's waiting on variables to materialize [00:50] qschzt: i think i agree with sechrist :) [00:50] qschzt: you want a session scope [00:50] sechrist: say you need to talk to redis, couchdb, and crap [00:50] sechrist: err didn't mean mscdex [00:50] sechrist: but yeah, i'm guessing things like partials need to exist [00:51] qschzt: there is the overhead of loading everything into every scope because you can't share data between scopes [00:51] dmitry has joined the channel [00:51] qschzt: maybe it doesn't really fit in node for the moment [00:51] sechrist: well i'm more concerned about i/o blocking calls with closures and more specifically, stacking closures and waiting on parallel closures before page rendering [00:51] jashkenas: sechrist: qschzt: I don't understand what the two of you are trying to say... [00:53] qschzt: I am using a threadpool of rhinos to process scopes [00:53] qschzt: to process events in scopes [00:53] sechrist: https://gist.github.com/93854984abd18422578f [00:53] sechrist: show me this in psuedo-node code without resolving $name at the top [00:54] sechrist: and without blocking queries [00:54] jashkenas: sechrist: why wouldn't you resolve $name at the top? [00:54] sechrist: eugh [00:54] qschzt: what the.. [00:55] sechrist: jashkenas: you're avoiding the problem :P [00:55] tekky has joined the channel [00:55] Tim_Smart: sechrist: Most people cache their renders :) [00:55] sechrist: PSSH [00:55] Tim_Smart: Unless I'm the only one. [00:55] sechrist: of course you are [00:56] qschzt: I'd love to bring that threadpool over to Node or V8 but just can't yet [00:56] sechrist: also I haven't seen a clean way to resolve a bunch of variables without recursive closures yet [00:57] Tim_Smart: sechrist: Parallel libraries aim to solve that issue [00:57] sechrist: such as? [00:57] Tim_Smart: sechrist: http://github.com/Tim-Smart/node-parallel [00:57] jashkenas: sechrist: recursive closures is the way to do it. [00:58] gwoo has joined the channel [00:58] sechrist: jashkenas: u crazy [00:58] sechrist: that offers no advantage over php then [00:58] Tim_Smart: I use that one. There is also creationix and step, flow.js and some promise libraries. [00:58] jashkenas: Tim_Smart's library builds recursive closures. [00:58] sechrist: bleh [00:58] jashkenas: (as do the others, I presume) [00:58] sechrist: two independent database queries shouldn't have to block on each other [00:59] qschzt: sechrist, tbh if you work best in php atm it's too early to move over to node.js [00:59] creationix: sechrist: step makes parallel db queries easy [00:59] Tim_Smart: sechrist: They don't need too. You can run them in parallel. [00:59] marshall_law has joined the channel [01:00] jashkenas: sechrist: you can run in serial or in parallel ... here's an example of both: http://gist.github.com/354834 [01:00] sechrist: qschzt: well there's just huge structural changes needed to just port apps over. [01:01] qschzt: sechrist, I'd definitely not even try to port them, rather bring your new projects progressively into node [01:01] Tim_Smart: "Porting" PHP apps would not be recommended. Re-write is more the correct term. [01:01] sechrist: jashkenas: that's kind of interesting except I don't understand coffee [01:01] sechrist: hehe I know [01:02] sechrist: there's also the model of sending static html/js over and rendering everything via ajax [01:02] qschzt: sechrist, node.js is not officially recommended for production use afaik [01:03] sechrist: qschzt: I use it in production, but not for rendering web pages [01:05] sechrist: it's phenomenal for ajax services and things of that nature [01:05] sechrist: but I have to just wrap my head around rendering html. Not there yet. [01:05] qschzt: so is NIO :) [01:05] sechrist: NIO? [01:05] _announcer: Twitter: "I'm doing a quick talk on #node.js tonight at @sdruby. Come on by if you're into that sort of thing!" -- Edward O'Connor. http://twitter.com/hober/status/17533772092 [01:06] sechrist: qschzt: you're one of those enterprise java developers aren't you? [01:06] qschzt: sechrist, sorta [01:06] sechrist: I bet you like rhino [01:06] sechrist: and ringojs [01:06] qschzt: sechrist, kinda like rhino, haven't tried ringojs or narwaljs [01:07] qschzt: rhino is quite solid but pretty slow [01:09] sechrist: "solid" [01:09] sechrist: I don't have stability issues with node really [01:09] pzich has joined the channel [01:10] sechrist: I'm just going to keep my complex model of rendering pages in php and keeping session state in redis. [01:10] qschzt: i can do fancy tricks like scope switching in rhino [01:10] qschzt: in a threadpool [01:10] sechrist: can you explain why that's better than just passing a reference? [01:10] qschzt: but it's still way slower than v8 [01:11] sechrist: boom [01:11] qschzt: yeah well I can change the entire scope for the code, not just the parameters to a function [01:11] rphillips has joined the channel [01:12] sechrist: that's kind of neat [01:12] qschzt: but I'm still using Node for front end services like http :) dumped the servlet stack a while ago [01:12] mscdex: stick it to the man! [01:12] sechrist: also http://code.google.com/p/namebench/ why did it take google to develop this? [01:12] qschzt: so my fe node nodes call services over amqp [01:13] sechrist: qschzt: do you just serve static html and ajaxy-json stuff? or do you render web pages with node? [01:14] qschzt: so far I'm just building the stuff up and not serving any rendered pages, they do render in client side [01:14] qschzt: so, serving html and js and websocket/multipart/longpoll connections in node, passing messages to/from amqp [01:15] qschzt: works great so far, and the amqp automatically round-robins the backend [01:18] someone_cool has joined the channel [01:20] qschzt: so you can just add front and backend servers at whim without telling any config file [01:22] _announcer: Twitter: "Jade open sourced - Haml killer for #nodejs -- site: http://bit.ly/cmKOkr, introduction: http://bit.ly/cIrd6S" -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/17534766813 [01:22] sechrist: fuck haml [01:22] SamuraiJack has joined the channel [01:22] [[zz]] has joined the channel [01:22] KungFuHamster has joined the channel [01:22] kodisha has joined the channel [01:22] bmizerany has joined the channel [01:22] zum has joined the channel [01:22] opello has joined the channel [01:22] lianj has joined the channel [01:22] bradleymeckboom has joined the channel [01:22] jdub has joined the channel [01:22] persson has joined the channel [01:22] Guest42356 has joined the channel [01:22] inarru_ has joined the channel [01:22] Sembiance has joined the channel [01:23] sechrist: uh looks like jade just spits out static pre-made html [01:23] sechrist: oh [01:23] sechrist: ew [01:23] bmizerany has joined the channel [01:23] Tim_Smart: sechrist: I like creationix haml [01:23] tmpvar has joined the channel [01:23] Tim_Smart: it generates fuctions [01:23] sechrist: I'm so used to zen coding [01:23] bmizerany: ah. there you all are. damn net-slipt. [01:24] Tim_Smart: *functions [01:24] bmizerany: is this correct behavior for node/JS? https://gist.github.com/2b29ab7a25fd5b52dc23 [01:24] bd_ has left the channel [01:24] sechrist: buffer(3) = 3 null bytes [01:24] sechrist: looks right [01:24] sechrist: what's up with it? [01:24] bmizerany: sechrist: see line 4 [01:24] Tim_Smart: try new (require('buffer').Buffer)() [01:24] tmpvar: bmizerany, looks like a bug [01:25] sechrist: holy crap why can't I read anymore [01:25] sechrist: i'm stuck in tl;dr land [01:25] Tim_Smart: new (require('buffer').Buffer)(3) rather [01:25] sechrist: Tim_Smart: that's odd [01:25] sechrist: oh nevermind [01:25] sechrist: makes sense [01:26] bmizerany: tmpvar: I think it's because Buffer::Initialize() hasn't been called to se the internal field count. [01:26] sechrist: is this only in the repl? [01:26] Tim_Smart: bmizerany: Your first examples try to make a instance of require() :p [01:26] Tim_Smart: *example [01:26] bmizerany: Tim_Smart: ah [01:26] Tim_Smart: *example trys [01:26] sechrist: also that [01:26] bmizerany: Tim_Smart: there should be a nice error for that. [01:27] bmizerany: what would be a good message? [01:27] jdub has left the channel [01:27] Tim_Smart: bmizerany: Well considering require is a function, its totally valid. [01:27] bmizerany: "require cannot be created" or something like that? [01:27] Tim_Smart: I'm not sure how you would differentiate between the different types of call. [01:28] bmizerany: Tim_Smart: right, but on `new` calls Buffer::New() which is doing an object wrap. let me gdb to be sure [01:29] bmizerany: damn. need to rebuild node with debug support. one min [01:29] bmizerany: or 10. [01:30] Tim_Smart: new Something() calls the constructor in the same way Something() does. [01:31] Tim_Smart: All the prototype field don't get inherited though. [01:31] Tim_Smart: *fields [01:33] KellyMaitreya has joined the channel [01:34] KellyMaitreya: Anyone familiar with the http client request that can give me a hand? [01:34] qschzt: sechrist, so what do you use for rendering html? [01:34] _announcer: Twitter: "Fuckn a, @tjholowaychuk is on fire. Latest project: Jade, a HAML killer for #nodejs http://github.com/visionmedia/jade" -- Joe McCann. http://twitter.com/joemccann/status/17535513779 [01:34] sechrist: qschzt: php + opcode caching with a simple cached templating lib I made [01:35] qschzt: sechrist, what about something like env.js? wouldn't DOM be the most natural way to process DOM and output HTML to clients? [01:35] sechrist: KellyMaitreya: yeah what's up with it? [01:35] qschzt: i do agree, fuck haml [01:35] sechrist: qschzt: building html from a dom sounds retarded and slow [01:35] KellyMaitreya: Well, I build nodejs for android, but when I do my request.write it returns false, but other things work [01:35] sechrist: especially since I know how to write html myself [01:36] qschzt: that's true [01:36] sechrist: KellyMaitreya: hmm, that's not something I can help with :\ [01:36] sechrist: are you doing the .end(); thing? [01:36] KellyMaitreya: yeah it's not just the module :-/ [01:36] sechrist: so it flushes [01:36] KellyMaitreya: yes [01:37] KellyMaitreya: I think it's something to do with the build, if anyone knows more about that. [01:37] sechrist: ryah: ^^ [01:37] sechrist: I'd message the mailing list [01:38] KellyMaitreya: yeah, that's where I was reminded about here ;-) [01:38] qschzt: sechrist, I guess you shouldn't really render html in node :) just message-pass without blocking as soon as you can [01:39] sechrist: qschzt: yeah it doesn't make sense to me to do it in node yet [01:39] KellyMaitreya: Thanks for trying sechrist, I'll just keep diggin myself [01:39] KellyMaitreya has left the channel [01:39] sechrist: the mailing list is awesome [01:39] sechrist: what's her problem [01:39] jherdman has joined the channel [01:40] jedschmidt has joined the channel [01:40] sechrist: rofl what -- I ran namebench and it found that ultraDNS-2 is 7.4% faster than my current primary dns provider [01:41] chapel: Anyone here affiliated or in the know about the node.js contest? [01:41] chapel: competition [01:41] sechrist: 4ms difference [01:41] jashkenas has left the channel [01:41] sechrist: chapel: I bet SOMEBODY here is [01:41] chapel: heh [01:41] chapel: just wondering about what work can be done before it [01:41] chapel: if any [01:42] sechrist: is it a hackathon? [01:43] stagas: sechrist: I found a DNS that was 88% percent faster than the one I had. [01:43] sechrist: stagas: I was already on google's public dns [01:43] Tim_Smart has joined the channel [01:43] sechrist: but hmm [01:44] Tim_Smart: sechrist: I found a DNS 80% faster than my current one with that test :o [01:44] sechrist: hmm [01:44] sechrist: ISP dnses suck [01:44] sechrist: 8.8.8.8 and 8.8.4.4 [01:44] sechrist: are good [01:44] stagas: 100 ms avg vs the 190 ms avg of mine [01:44] sechrist: rofl what [01:44] Tim_Smart: sechrist: I was using opendns [01:44] sechrist: higher than 100ms [01:44] sechrist: are you on cellular? [01:45] stagas: stealing wifi :P [01:45] sechrist: I get 120ms pings to google on my damn iphone [01:45] sechrist: ah [01:46] stagas: it's down to 23% now so there is a lot of packet loss [01:46] stagas: wep is so easy to crack with backtrack [01:46] stagas: hehe [01:47] sechrist: yeah it's retarded [01:47] qschzt: yes Telecom Italia is much slower and worse in detail than 8.8.8.8 [01:47] qschzt: what's the url again please? [01:47] sechrist: namebench [01:47] sechrist: google it lo [01:47] qschzt: seen [01:48] sechrist: so hmm -- how does google loadbalance with the same ips? [01:48] sechrist: BGP hax? [01:48] stagas: google's dns are really nice and stable have been using them too because mine had some downtimes every now and then for about 30 secs every time [01:48] sechrist: I would assume 8.8.8.8 does not go the same machines for everybody around the world [01:48] sechrist: I would assume that the routes change per region [01:49] qschzt: stagas, same in spain and italy (TI and Telefonica) [01:49] qschzt: sad state of internet... [01:50] stagas: it's the mediterranean then, I'm in Greece so.. [01:50] stagas: :P [01:50] qschzt: oh yes, Med is notoriously bad for internet [01:52] amuck has joined the channel [01:53] stagas: still it's better than it was 2-3 years ago when you couldn't get over 300kbits (at least here) [01:55] kriskowal has joined the channel [01:55] qschzt: yes it's true Telefonica improved tremendously in the time I lived in Spain; TI here in rural Italy is fast enough; but it tends go out for 30 minutes randomly, and just cut my tcp connections for no reason and then come back after 30s :) life in the med [01:57] _announcer: Twitter: "@getify I actually like HAML and Express (a node.js web framework) uses HAML.js which I'm assuming will work with Jade. It's brilliant." -- Joe McCann. http://twitter.com/joemccann/status/17536939217 [01:59] sechrist: rural italy has internet? [01:59] sechrist: wow, who doesn't now? [01:59] qschzt: sechrist, something like that, they have a pool of workers responding to these requests [02:00] qschzt: (namebench) [02:00] sechrist: I was talking about google's actual server not namebench [02:00] sechrist: or servers [02:00] sechrist: i'm guessing it's just clever bgp routing [02:00] qschzt: actually namebench has a 40 thread pool, which just benchmarks some known servers from where you are, no google services needed [02:01] meso has joined the channel [02:01] sechrist: qschzt: I know [02:01] sechrist: I was inquiring about how google responds to so many dns requests on two ips [02:01] sechrist: well same with opendns [02:01] nostromo has joined the channel [02:01] sechrist: they must have to be able to handle millions per minute [02:02] qschzt: right, some clever routing tricks :) [02:03] _announcer: Twitter: "@joemccann but since both are in JS, it shouldn't be hard at all to get either working in node if you're so inclined" -- Kyle Simpson. http://twitter.com/getify/status/17537306546 [02:05] stagas: it could be using the data from namebench (if you tick that checkbox to send them) and route to a fast dns near you. maybe that's why they build it, to outsource all those benchmarks so they don't have to do them themselves [02:05] stagas: is that possible? [02:06] qschzt: stagas, the idea is to find the fastest nameserver for you isn't it [02:06] BlessYAHU has joined the channel [02:06] stagas: I'm talking about the 8.8.8.8 [02:06] qschzt: ah right :) [02:06] kersny has joined the channel [02:07] meso has joined the channel [02:07] qschzt: you could certainly do that within the google network; so 8.8.8.8 for you could be in greece [02:08] qschzt: Your current primary DNS is Fastest - 8.8.8.8 [02:08] qschzt: yay. Italy rocks [02:08] sechrist: what a surprise [02:08] qschzt: later geeks [02:09] qschzt: make the interweb better [02:09] stagas: cu [02:09] rowbee has joined the channel [02:12] ryan[WIN]: dns is pretty easy to handle concurrently [02:13] ryan[WIN]: if someone's dns request relied on the results of someone else's dns request [02:13] ryan[WIN]: then you'd run into problems [02:15] ryan[WIN]: dns entries don't even have to update fast [02:15] ryan[WIN]: if you update every 15 minutes that's pretty absurdly good [02:19] gerad has left the channel [02:20] Tim_Smart has joined the channel [02:21] TheEnd2012 has joined the channel [02:24] polotek has joined the channel [02:30] Xavura has joined the channel [02:31] polotek: I don't know if I ever seen the room count above 200 [02:31] polotek: I think mape's wargamez tipped the scales [02:32] mscdex: heh [02:32] Tim_Smart: I'm sure I have seen it over 200 plenty of times [02:34] Xavura: Anyone here used Socket.IO? Having some problems with clients disconnecting instantly http://pastie.org/1027597 [02:36] Tim_Smart: I have used it, but I haven't come across that issue. [02:36] Xavura: Bah [02:36] mscdex: oh [02:36] mscdex: websockets? [02:37] mscdex: Xavura: what browser are you using? [02:37] Xavura: Chrome [02:37] mscdex: what version? [02:37] Xavura: 6.0.447.0 [02:37] Xavura: dev [02:38] Xavura: Tried Safari as well, same problem [02:38] mscdex: hmm [02:38] polotek: Tim_Smart: yeah I'm not in here all the time [02:38] polotek: usually later than this [02:38] streblo has joined the channel [02:39] mscdex: Xavura: i'm assuming you downloaded from the latest from socket.io and socket.io-node master branches? [02:39] Xavura: I downloaded the latest from... sec [02:39] Xavura: err, socket.io (the website) [02:39] mscdex: ok [02:40] mscdex: hmm [02:40] Xavura: latest node too [02:42] mscdex: Xavura: just for fun, try this version and see if it helps any: http://github.com/mscdex/Socket.IO-node [02:43] Xavura: 0.3.1? [02:43] mscdex: no, head [02:43] mscdex: click "Download Source" [02:44] mscdex: then the tar icon [02:48] Tim_Smart: There we are, updated socket.io on npm [02:50] Xavura: complaining about js-oo, hold on [02:50] mscdex: oh, yeah [02:50] Tim_Smart: github spam :/ http://github.com/ry/node/issues/issue/55/#issue/55/comment/296221 [02:51] mscdex: that's a first... [02:51] mscdex: at least that i've seen [02:51] Tim_Smart: Xavura: Is it? Let me check npm's archive. [02:51] mscdex: Tim_Smart: i think he means my fork [02:52] Tim_Smart: Oh. Xavura: `git submodule update --init --recursive` [02:52] marshall_law has joined the channel [02:55] mscdex: !api spawn [02:55] _api: mscdex: (Child Processes) method: spawn(command, args, env) -- Launches a new process with the given `command`, command line arguments, and environment variables. If omitted, `args` defaults to an empty Array, and `env` defaults to `process.env`. [ http://nodejs.org/api.html#child_process-spawn-88 ] [02:55] mscdex: !api exec [02:55] _api: mscdex: (Child Processes) method: exec(command, [options, ] callback) -- High-level way to execute a command as a child process, buffer the output, and return it all in a callback. [ http://nodejs.org/api.html#child_process-exec-93 ] [02:56] Tim_Smart: mscdex: Does it crawl the api docs on github? [02:56] mscdex: maybe in the future, but right now it reads from disk since i had to make some minor changes to the markdown [02:57] mscdex: some of the links don't work too because api.markdown is newer than nodejs.org/api.html [02:57] Tim_Smart: OK. [02:58] mscdex: :-\ [02:58] Xavura: mscdex - exact same problem with your fork [02:58] Xavura: afk [02:59] Tim_Smart: Xavura: Have you got npm installed? [02:59] mscdex: Xavura: ok. that's an odd one then. [02:59] Tim_Smart: Nvm. [03:00] mscdex: Xavura: fwiw i'm using 6.0.450 r50923 and it works. but i have had that same problem before but i was thinking it was draft76-related, but that's implemented in socket.io now... [03:01] stevendavie has joined the channel [03:02] Xavura: Tim_Smart, not sure [03:02] Tim_Smart: Xavura: It just makes installation easier - which isn't your problem. [03:03] Xavura: I've been wrestling with this thing for days [03:04] Tim_Smart: I got the demo to work fine. I had to manually specify the host on the client side though. [03:07] Xavura: I've put the host [03:07] Tim_Smart: For some reason 'localhost' didn't work either. I had to use '127.0.0.1' [03:07] Xavura: I've got node.mysite.com [03:07] Tim_Smart: _api: pow [03:08] Tim_Smart: hehe I bombed a bot [03:09] khug has joined the channel [03:10] JimBastard has joined the channel [03:10] JimBastard: Jag vill ha tacos tack. [03:11] JimBastard: och inlagd sill [03:11] mscdex: if _api had a fist, it would be shaking it at you Tim_Smart [03:12] JimBastard: HOLY SHIT [03:13] JimBastard: the spy password is something is say all the time [03:13] JimBastard: lol [03:13] JimBastard: fail [03:13] JimBastard: aight translate.js is dual-sided now [03:14] _announcer: Twitter: "node.innerHTML = ""; I get I've slipped IE 3 # javascript # jS" [ja] -- ishiduca. http://twitter.com/ishiduca/status/17541710100 [03:15] tmpvar: lol [03:15] tmpvar: woops [03:16] JimBastard: ahaha wtf [03:16] JimBastard: best tweet ever [03:17] JimBastard: !tweet @ishiduca node.js jaja! jsdom yata! [03:18] Xavura: any more ideas? [03:18] JimBastard: sop? [03:18] JimBastard: Xavura: [03:18] mattly has joined the channel [03:19] Xavura: JimBastard: Having some problems with clients disconnecting instantly with Socket.IO http://pastie.org/1027597 [03:20] JimBastard: did you ask rauchg_ [03:20] dmitry has joined the channel [03:20] JimBastard: or post an issue [03:20] Xavura: Nope [03:20] rauchg_: Xavura: [03:20] rauchg_: hi [03:20] Xavura: hey there [03:20] JimBastard: ACTION summons web socket wizard lvl 16. [03:20] rauchg_: what browser ? [03:20] Xavura: latest chrome dev and latest safari [03:20] rauchg_: using socket.io-node HEAD ? [03:21] Xavura: I tried the latest release then I tried mscdex's head [03:21] rauchg_: what are the steps to reproduce [03:21] rauchg_: cause i'm testing with webkit nightly [03:21] Xavura: I've got it live on the interwebz if that helps [03:22] bradleymeck2 has joined the channel [03:22] rauchg_: let's go to private [03:23] tmpvar: damn, how much does that cost? [03:25] rauchg_: Xavura: [03:25] rauchg_: are you using nginx ? [03:25] dmitry: Ok, jslint is full of crap [03:25] rauchg_: Bad Upgrade header: Server: nginx [03:25] Xavura: well I think the way it works with my host, it will be using nginx [03:25] rauchg_: nginx tcp forwarding is adding headers [03:25] rauchg_: can nginx forward websocket traffic ? [03:26] _announcer: Twitter: "http://tempalias.com provides temporary, anonymous email addresses. Email server written with node.js!" -- Eric Williams. http://twitter.com/MotoWilliams/status/17542439871 [03:26] rauchg_: i have to do more research about that [03:26] rauchg_: but [03:26] rauchg_: if you want a quick solution, i'd turn off the *socket transports [03:26] liucougar_ has joined the channel [03:26] rauchg_: and have multipart, polling and htmlfile [03:26] rauchg_: those will probably work behind nginx [03:26] Xavura: I only want to use socket [03:26] rauchg_: then [03:26] rauchg_: you should be using something else [03:26] rauchg_: node-websocket-server [03:26] rauchg_: socket.io is a layer of cross-browser compatibility [03:27] Xavura: it's set up like this on my host - http://docs.webfaction.com/software/custom.html [03:27] Xavura: well, for now I'm only wanting to use websockets [03:27] rauchg_: socket.io drops the connection if the headers are invalid [03:28] rauchg_: right now, nginx is appending headers to the websocket handshake [03:28] Xavura: well would my host be able to stop it doing that? [03:28] rauchg_: what you can do [03:28] rauchg_: is disable that [03:28] Xavura: Right now, no matter what I use it's going to do the same thing because "custom apps listening on port" use nginx [03:28] Xavura: disable what? [03:29] rauchg_: nginx adding headers [03:29] rauchg_: im sure it could be odne [03:29] rauchg_: it's webkit that doesn't like them [03:29] rauchg_: Date and Server headers need to go [03:29] rauchg_: http://cl.ly/1WxH [03:30] rauchg_: and again, i'm not sure that nginx proxying will work. [03:30] JimBastard: aight, going to put the demo online now [03:30] Xavura: hrm [03:33] Xavura: Well I've filed a ticket with my host [03:34] joshholt_ has joined the channel [03:36] joshholt_: creationix: would you be willing to share the Connect Doxygen config? [03:36] creationix: Doxygen? [03:36] creationix: tjholowaychuk did the docs [03:36] joshholt_: Make Docs [03:37] joshholt_: ah, ok [03:37] joshholt_: they are very nice... [03:37] creationix: is it in the repo? [03:37] joshholt_: no, or at least I wasn't able to find it [03:38] creationix: ok, then ask tj when he's online [03:38] creationix: or email tj at sencha.com [03:38] joshholt_: ok, thanks for your help.. [03:40] JimBastard has joined the channel [03:40] JimBastard: aight http://maraksquires.com/translate.js/ [03:41] JimBastard: dual sided demo [03:41] JimBastard: with a shitty UI [03:42] everton has joined the channel [03:42] tav has joined the channel [03:43] polotek: Jag vill ha tacos tack. [03:43] polotek: swedish [03:43] marshall_law has joined the channel [03:49] mscdex: the only swedish thing i've done is eaten swedish fish [03:49] mtodd has joined the channel [03:49] polotek: the only swedish thing I've done is translate english into swedish with JimBastard's app [03:51] _announcer: Twitter: "working on getting a simple node-js proxy going for cross domain jQuery" -- Chris Hoffman. http://twitter.com/hoffmanc707/status/17544050677 [03:52] _announcer: Twitter: "Ah ... so many lol. node.js "haml killer" - http://tjholowaychuk.com/post/759178288/jade-haml-killer-for-nodejs" -- Toby Hede. http://twitter.com/tobyhede/status/17544067538 [03:54] mscdex: @hoffmanc707: http://blog.jsonpify.com/ [03:54] mscdex: heh [03:55] _announcer: Twitter: "New Google Group haxe-node.js: http://wp.me/pKkTb-3X" -- BlackDog. http://twitter.com/blackdog66/status/17544266167 [04:02] mscdex: this is pretty neat: xtranormal.com [04:03] tmpvar has joined the channel [04:04] liucougar_ has joined the channel [04:05] wilmoore has joined the channel [04:09] _announcer: Twitter: "Trying to finish this simple node.js side project so it's ready by the time its .ly domain arrives; wish the weekend was here now." -- Scott Trudeau. http://twitter.com/sstrudeau/status/17545140553 [04:14] _announcer: Twitter: "translate.js - #javascript translator for #node.js and the browser. 30+ languages supported. #nodejs. http://maraksquires.com/translate.js/" -- marak squires. http://twitter.com/maraksquires/status/17545469750 [04:15] JimBastard_ has joined the channel [04:15] JimBastard_: !tweet @maraksquires you suck, build a better UI for that thing! ^_^ [04:16] JimBastard_: that guy sucks [04:16] tmm1: agreed [04:17] JimBastard_: :=D [04:17] JimBastard_: hows it going tmm1 ? [04:17] JimBastard_: keeping it evented? [04:18] tmm1: ofcourse [04:18] tmm1: just got a new imac i7 at the office, setting it up [04:19] JimBastard_: !tweet simple dual-sided javascript wrapper for google translate http://maraksquires.com/translate.js/ #nodejs [04:19] JimBastard_: nice man [04:20] JimBastard_: من می خواهم tacos لطفا. [04:20] JimBastard_: :-D [04:20] JimBastard_: man, stupid libraries are the best [04:21] tmm1: heh [04:21] tmm1: hows apartment jail treating you [04:21] Xavura has joined the channel [04:21] JimBastard_: check out that thing i sent ya [04:21] JimBastard_: nodejitsu logos :-D top secret [04:22] JimBastard_: my roommate is starting to work full-time on that project now [04:22] JimBastard_: trying to launch before nodeknockout [04:24] tmpvar: what does launch mean? [04:24] tmpvar: balloons and you start charging? [04:25] tmpvar: JimBastard ^^ [04:25] JimBastard_: tmpvar: it means i can start telling people they cant have accounts [04:25] JimBastard_: eric cartman is our marketing department [04:26] JimBastard_: i'll consider us launched once we can accept sign ups and have the deployment API 1.0.0 [04:26] JimBastard_: then no one gets an account [04:26] JimBastard_: mwahahahaha [04:26] JimBastard_: except for you guys, you guys are cool [04:27] JimBastard_: nodejitsu for node ninjas only! [04:27] JimBastard_: ^_^ [04:27] tmpvar: f-you, and you and you.. you're cool.. and f-u [04:27] temp01 has joined the channel [04:27] JimBastard_: and javascript-fu you [04:27] JimBastard_: im out [04:27] JimBastard_: yo mape_ mape http://wargamez.mape.me/ is not working? [04:28] JimBastard_: tmm1: did you get my PM? [04:29] tmpvar: man, im such a newb with this mesa stuff [04:29] JimBastard_: i can haz audioz? [04:29] tmpvar: im asking the same ol' questions "where do gl* methods come from?" [04:29] JimBastard_: tmpvar said knock you out? [04:29] tmpvar: tmpvar said rock our [04:29] tmpvar: out* [04:30] tmpvar: and give me glTranslatef! [04:30] JimBastard_: all i know is that if someone gives me a god damn audio pipe out of node for 24bit stereo wav files. i can make the sickest shit ever [04:30] JimBastard_: and i already have the proof of concept working [04:31] JimBastard_: ACTION casts summon multimedia c developer lvl 42 [04:31] tmpvar: lol [04:31] JimBastard_: i dont know if i had enough mana for that one, its a hard spell [04:31] tmpvar: maybe you should dig in ;) [04:32] JimBastard_: i refuse to write in c [04:32] tmpvar: you know audio apparently [04:32] tmpvar: oh, well its c++ [04:32] tmpvar: you'll be fine [04:32] JimBastard_: ohhwrd [04:32] satori: Can anyone help me with c++ addons? specifically libeio and libev? [04:32] JimBastard_: #IFDEFINE play [04:32] JimBastard_: done? [04:33] pquerna: satori: whats the question? [04:33] tmpvar: satori, you can ask [04:33] tmpvar: you may ask my son [04:33] satori: I have a locking function that I want to 'wrap' in a eio threadpool thread using eio_custom... [04:33] satori: Is it ok to use this a lot? [04:34] jedschmidt has joined the channel [04:34] satori: or is this a bit of a hack? [04:34] pquerna: blocking? [04:34] satori: yar block [04:34] pquerna: no, thats the normal pattern. [04:34] makuro has joined the channel [04:34] pquerna: using eio_custom, to run blocking functions [04:34] pquerna: (and then invoking a callback in the finished callback) [04:35] pquerna: javascript callback that is [04:36] _announcer: Twitter: "Wow, #node.js is so popular it's getting spammed on github. Either that or somebody's hatin." -- Marco Rogers. http://twitter.com/polotek/status/17546714027 [04:36] satori: ok cool [04:38] tmpvar: JimBastard, I'd put more brain power into it -- if I had it [04:40] Tim_Smart: tmpvar: BOOM [04:40] Tim_Smart: Oh, New York, that right. [04:40] Tim_Smart: *that's [04:41] _announcer: Twitter: "Are there any book-like resources for node.js? These blog posts and API docs just aren't cutting it for me." -- Tom Preston-Werner. http://twitter.com/mojombo/status/17546995849 [04:41] tmpvar: boom? [04:41] tmpvar: nz terrorist in our midst [04:41] tmpvar: ;) [04:42] Tim_Smart: tmpvar: wargamez.mape.me :p [04:42] JimBastard_: !tweet @polotek I promise I'm not manipulating the watcher counts anymore. [04:42] tmpvar: borken atm [04:42] polotek: heh [04:42] satori: Another question about eio_custom... Is it ok to use long running threads. [04:43] polotek: JimBastard_: I was actually referring to the spam comments on issues [04:43] polotek: in the github repo [04:43] JimBastard_: :p [04:43] polotek: been getting emails with garbage for the last hour [04:43] JimBastard_: wait a minute [04:43] JimBastard_: we can talk in IRC? i thought we could only talk over twitter [04:43] JimBastard_: this shit is amazing [04:43] JimBastard_: we should just use IRC instead of twitter [04:44] polotek: only if everytime I mention JimBastard_ he gets hit with a missile from across the country [04:44] JimBastard_: http://wargamez.mape.me/ [04:44] JimBastard_: down [04:44] Tim_Smart: Haha. I can attack JimBastard_ polotek [04:45] JimBastard_: :-( [04:45] Tim_Smart: It isn't down for me... [04:45] JimBastard_: strange [04:45] JimBastard_: chrome is mad at it now [04:45] JimBastard_: was working before [04:45] Tim_Smart: NYC has banhammered it [04:45] polotek: yep, it dies in chrome [04:46] JimBastard_: fuck [04:46] JimBastard_: did we get blowed up [04:46] Tim_Smart: I'm using Chromium daily [04:46] kriszyp has joined the channel [04:46] tmpvar: oh good point [04:46] polotek: doesn't work any safari anymore either for me [04:47] srh has joined the channel [04:47] Tim_Smart: Oh. Cleared my cache and it broke. [04:48] satori: If I have a blocking method that gets called very often, is it better to restart a new eio thread for each call? or can I use a long lived single eio thread and signal a ev_async watcher with ev_async_send() to get a callback? [04:48] satori: I think using both libev and libeio might be best but i can't find any good example code [04:50] Tim_Smart: satori: What is the use case? [04:50] satori: I call a function that behaves very much like select() but not for 'real' sockets. It blocks until my psuedo socket is ready fpor reading.writing [04:51] satori: I need to call this method alot. It seems wasteful to keep spwaning eio threads to get the blocking calls results [04:51] amuck has joined the channel [04:52] satori: I think maybe it would be better to loop in a thread and signal a watcher to get a c++ callback that can trigger js callbacks [04:52] Tim_Smart: Node.js uses a thread pool, you could probably use what node uses. [04:52] satori: Yeah. I can use the eio_custom() function to spawn a thread, but I do not know what the impact on node internals is if this is used a lot [04:53] aheckmann has joined the channel [04:54] tmpvar: hrm, I wish I knew more about this... satori can you call back into c/c++ after the the call succeeds? [04:54] tmpvar: that way you don't have to poll [04:55] satori: with a regular eio_custom call you pass two callbacks. the first runs in the threadpool and the second runs when the trad is complete [04:55] satori: but each time you call it it spawns a new thread and goes thru this process. [04:55] satori: I want to just spawn one thread that loops on my blocking call [04:56] rektide: ok so the issue presented, [04:56] satori: and signals a watcher form inside the loop [04:56] rektide: how to route a request to a particular process [04:56] Tim_Smart: satori: Is this any help? http://github.com/ry/node/blob/master/src/node_file.cc#L160 [04:56] satori: I think I can do this using ev_async watcher and ev_async_send() [04:56] rektide: not so sure the multi-process Worker plan is really gonna work [04:56] rektide: pretty sure we need workers integrated into node.js [04:57] tmpvar: satori, ah that's pretty much what I meant heh.. nice! [04:57] derferman has joined the channel [04:57] tmpvar: yeah, keep the thread active, while over your "select" report back to the master when data is available [04:58] aho has joined the channel [04:58] satori: I am going to try this now. The documentation for libev is not easy to understand. [05:00] satori: It seems that it is safe to call ev_async_send() from the threadpool. So if I can signal an ev_async watcher from a thread created using eio_custom() then I should be ok. [05:01] Tim_Smart: satori: Node generally uses these for async io http://github.com/ry/node/blob/master/src/node_io_watcher.cc [05:02] Tim_Smart: I'm gathering you already looked there. [05:02] satori: Yeah, I have been studying those alot. My problem is that they only work with genuine OS file descriptors, and mine are application level descriptors that behave very like real ones but are not interchangable [05:03] Tim_Smart: Ah. Gotcha [05:03] satori: I am writing a binding for the UDT4 protocol. It is a nifty high performance connection orientated UDP based protocol. [05:04] satori: It has a nifty abilty to be able to do 'rendezvous' connection directly between two clients both behind NAT routers [05:04] Tim_Smart: Cool cool. I need to start writing more C / C++ at some stage. [05:05] satori: I think I need to write a new watcher class. Based on nodes io watchers but for UDT socket descriptors. [05:06] satori: Everything I start always turns out to be way more complicated than i first thought [05:08] zomgbie has joined the channel [05:12] ewdafa has joined the channel [05:13] satori: I just made a sample app. I think it will work. ev_async_send() is threadsafe and can notify an ev_async watcher in the main node thread. [05:13] satori: Thats means I just saved a bunch of threads. cool. [05:15] hassox has joined the channel [05:16] tmpvar: nice [05:17] tmpvar: satori, I know the "way more complicated than I first thought" concept probably too well [05:21] mostlygeek has joined the channel [05:21] rektide: have not heard of udt [05:22] _announcer: Twitter: "http://bestc.am/XDDt Bummed to miss node.js talk by @hober at sdruby tonight. Not bummed to be in Maui." -- Bradly Feeley. http://twitter.com/bradly/status/17549234154 [05:23] _announcer: Twitter: "Rubyists using node.js, any reasons why you chose node instead of EventMachine?" -- Matt Aimonetti. http://twitter.com/merbist/status/17549279578 [05:26] satori: UDT http://udt.sourceforge.net/ [05:30] tmpvar: satori, very interesting! [05:31] tmpvar: this is cool in a few different ways [05:31] satori: Yeah. The rendezvous connection mode is most interesting. [05:31] satori: High speed data xfer is cool too [05:31] tmpvar: you just getting started? [05:31] tmpvar: right :) [05:31] satori: http://github.com/satori99/node-udt [05:31] satori: I have done all the binding code. [05:31] tmpvar: udp is like lightning.. I keep saying.. lol [05:32] tmpvar: binding code is the easy part though ;) [05:32] satori: and I have made all the sync functions async [05:32] satori: now I am up to the part of making the js interface. [05:32] satori: it's basically a port of what net.js and dgram.js does [05:32] satori: but mashed together [05:32] tmpvar: yeah [05:32] tmpvar: nice man, good good stuff [05:35] steadicat has joined the channel [05:36] satori: I just create a udt_watcher class that behaves like the io_watchers and I should be able to duplicate much of the code from those files. [05:36] mscdex: good to see udt has decent cross-platform support [05:37] _announcer: Twitter: "going to change over my node.js sample app from #haml to #jade" -- Brian Mavity. http://twitter.com/bmavity/status/17549961560 [05:37] satori: My knowledge of waf/make/ and c++ is limited [05:37] satori: I don;t know how to properly make a xplatform wcript file [05:38] _announcer: Twitter: "Node.js Channel as a live Wargames map. - http://su.pr/3GANBd" -- eBot. http://twitter.com/kicauan/status/17549994009 [05:38] satori: I have a few js interface decisions to make still. UDT can behave either like datagrams or a reliable stream... [05:38] Tim_Smart: mape: You wargamez map is broke. [05:39] derferman has joined the channel [05:39] satori: so do I make a hybrid stream/dgram object? or make a stream object only for reliable streams and and some other object for partial reliable messaging [05:41] satori: Unlike node's dgram Socket, UDT dgram sockets are still connection orientated. So I can't make it work exactly like either net.Stream or dgram.Socket [05:41] Tim_Smart: satori: You will have to implement your own UI for it then :) [05:42] satori: Yeah. I will of course implement the stream API for reliable UDT streams [05:42] satori: but I will need custom contructors, and my psuedo dgram.Socket will need a connect method [05:43] Tim_Smart: So its almost a hydrid of net.Stream and dgram.Socket? [05:43] satori: yeah. well kind of [05:43] satori: UDT can operate in a stream mode or a datagram mode [05:43] satori: stream mode is just like tcp but faster [05:44] _announcer: Twitter: "Node.js community is amazingly helpful. So unlike Ruby. :) #nodejs" -- Chandra Sekar. http://twitter.com/tuxychandru/status/17550297644 [05:44] satori: datagram mode is like node's, only you still to coonnect and cannot send or receive to adhoc peers [05:44] polotek has left the channel [05:45] _announcer: Twitter: "@merbist I'm using both for now. For me Node.js is simpler but it's not Ruby so it's difficult to choose between the 2." -- Nicolas Mérouze. http://twitter.com/nmerouze/status/17550333922 [05:45] Tim_Smart: I have never worked with datagram / UDP before... [05:45] rektide: ahhh mental anguish [05:45] rektide: sctp for the long win [05:45] satori: UDT can also multipex any number of streams into a single UDP port, so I will need to expose the bind method in my interface. Node only does this via process.binding [05:46] rektide: reliable multiplexed datagram ftw [05:46] Tim_Smart: !tweet @nmerouze Checkout out http://coffeescript.org/ [05:46] rektide: and again i reference the "workers as external rpocesses" problem [05:46] rektide: dispatching requests to external processes over unix sockets is lame [05:46] mscdex: !api binding in process [05:46] mscdex: oh yeah, it's undoc [05:46] mscdex: heh [05:46] rektide: need real multi-threads in process workers api impl [05:49] manveru: is there no multi-core support for node yet? [05:49] rgl has joined the channel [05:50] aurynn: multiple processes [05:51] manveru: btw, {} is short for new Object? [05:51] mscdex: yes [05:51] mscdex: just like [] is short for new Array [05:52] _announcer: Twitter: "@nmerouze http://coffeescript.org/ works well with Node.js :)" -- Tim Smart. http://twitter.com/Tim_Smart/status/17550681721 [05:52] manveru: thanks... the MDC doesn't really mention that [05:52] SvenDowideit has joined the channel [05:53] tyfighter has joined the channel [05:53] aurynn: ACTION starts ripping postgres-pure apart [05:54] satori: The new ability to send fd's to a child process, even new peer connections, is pretty cool. I haven't played with it yet, but it seems like good solution to running a multicore http or tcp server. [05:54] manveru: i'd still prefer a normal load balancer in front ;) [05:54] mscdex: haproxy :-D [05:54] satori: why not let the kernel decide which core gets the connection? [05:55] manveru: no need to reinvent that wheel... [05:55] satori: I am talking about a single machine though [05:55] satori: load balancers have their place of course [05:55] manveru: btw, does node do fcgi? [05:55] Tim_Smart: You should never really need more than one node process... unless you have multiple network interfaces. [05:56] satori: on a single proc, it seems reasonable to run multiple node event loops and let the kernel decide which core anwers the nest connection request [05:56] mscdex: well it depends on what you're doing [05:56] manveru: Tim_Smart: you ever tried ab -c 1000 -n 10000 on biggie-router serving static files? [05:56] mscdex: some situations you may need multiple node processes [05:56] Tim_Smart: manveru: Lol -c 1000 [05:56] aurynn: If you have a function called "sql escape", you are clearly not doing it correctly. [05:56] manveru: Tim_Smart: it dropped 60% due to running out of fds :) [05:57] manveru: yeah, just did it for the lolz [05:57] Tim_Smart: manveru: Haha, right. I currently don't have a cache middleware made. I might steal one from connect. [05:57] manveru: i'll server static stuff with lighttpd in production anyway [05:58] Tim_Smart: manveru: Cool cool. Have you tried -c 1000 against lighttpd? [05:58] satori: Using node's child processes you can share a listening socket between procs. That is the key to nodes multicore abilities. [05:58] manveru: Tim_Smart: i'll try, gimme 10 minutes [05:59] Tim_Smart: manveru: http://github.com/extjs/Connect/blob/master/lib/connect/middleware/cache.js should work fine in biggie-router [05:59] manveru: satori: you got example code? [05:59] manveru: Tim_Smart: thanks :) [05:59] satori: ryan or someone posted example code in the google group a month or so back [06:00] manveru: Tim_Smart: how would you handle http://github.com/manveru/disjoint/blob/master/start.coffee#L117-135 [06:01] satori: the gist of it is that you can pass a listening socket to multiple child processes via a unix socket and then the kernel will decide which child will answer the next connection [06:01] javajunky has joined the channel [06:01] Tim_Smart: manveru: I use my node-asset asset packager [06:01] satori: cheap, effective, balanced multicore node. [06:01] manveru: Tim_Smart: don't really know how to use that [06:02] Tim_Smart: manveru: OK. I'll see if I can find an example. [06:02] Tim_Smart: satori: http://github.com/pgriess/node-webworker [06:04] Tim_Smart: satori: It can send fd's as the second argument of postMessage [06:04] creationix: satori: and with connect it's as easy as "connect -n 4" and you app is running on 4 cores [06:04] satori: cool [06:05] satori: I haven't played around with any of that stuff yet. [06:05] satori: I am not using node for anything other than hobby coding atm.\ [06:06] satori: I keep trying to promote it at work, no traction so far. [06:09] Tim_Smart: manveru: http://gist.github.com/461001 [06:10] manveru: Tim_Smart: Requests per second: 20577.44 [#/sec] (mean) [06:10] manveru: 0 requests dropped [06:10] Tim_Smart: Ah you would hope so :p [06:10] manveru: :) [06:10] Tim_Smart: npm install node-asset (If you have npm) [06:11] manveru: having and loving it :) [06:11] khug has joined the channel [06:12] Tim_Smart: manveru: You can also use it for CSS: http://gist.github.com/461001 [06:13] manveru: ss? [06:13] manveru: less? [06:13] manveru: *lesscss? [06:13] Tim_Smart: Oops. type: 'css' [06:13] Tim_Smart: manveru: Normal CSS [06:13] Tim_Smart: I can add less later I guess. [06:13] manveru: what does it do with the css? [06:14] Tim_Smart: Packages it into one file etc [06:14] manveru: oh... [06:14] manveru: and for haml? [06:14] Tim_Smart: I haven't bothered with haml yet [06:15] manveru: maybe you can make one from my code :) [06:15] Tim_Smart: manveru: node-asset is more for packaging assets, rather than templating [06:15] manveru: it simply compiles and optimizes templates when they are changed and stores them for evaluation [06:16] pplante has joined the channel [06:16] Tim_Smart: I.e. Getting multiple source files then making it as small as possible [06:17] manveru: ok [06:17] Tim_Smart: I'll definitely look into a 'less' type. [06:17] manveru: i've written like 10 versions of automatic source reloaders for ruby web-frameworks... really good to have [06:18] manveru: but first i need to figure out a clean way to split my current app into different files [06:19] manveru: like, i want one file for the model stuff, one for actions, one for options... [06:19] Tim_Smart: Yeah I choose the 'static file generator' approach - as then I can just serve the result with nginx or something. [06:20] manveru: yeah, that's definitly needed [06:20] paulwe has joined the channel [06:20] manveru: but i don't really want to restart my app every time i change a line of code :) [06:20] Tim_Smart: manveru: Yeah same, that is why there is a 'watch' option [06:21] manveru: for? [06:21] manveru: node-asset? [06:21] Tim_Smart: yeah [06:21] sechrist: node builds for arm right? [06:21] manveru: yes, but that won't change the code running in the server, just the assets [06:21] sechrist: armv6? [06:21] Tim_Smart: manveru: Ah, yeah. [06:22] Tim_Smart: sechrist: I'm pretty sure it does, yes. [06:22] sechrist: I'll be the first to run node on a kindle then [06:23] felixge has joined the channel [06:23] felixge has joined the channel [06:23] jetienne has joined the channel [06:23] dgathright has joined the channel [06:24] manveru: Tim_Smart: so without the compile option it will generate pretty code? [06:24] mscdex: !api execfile [06:24] mscdex: er [06:24] mscdex: !api execpath [06:24] _api: mscdex: (process) property: execPath -- This is the absolute pathname of the executable that started the process. [ http://nodejs.org/api.html#process-execpath-57 ] [06:24] Tim_Smart: manveru: Yup. [06:24] mscdex: hmm [06:24] mscdex: !api __dirname [06:24] _api: mscdex: (Global Objects) staticProperty: __dirname -- The dirname of the script being executed. [ http://nodejs.org/api.html#__dirname-48 ] [06:25] manveru: Tim_Smart: thanks a lot again :) [06:25] Tim_Smart: manveru: With the compile options, for example, my code for fostle.com http://fostle.com/assets/main.coffee , http://fostle.com/assets/js/json2.js gets turned into http://fostle.com/assets/js/all.js?1278045198609 [06:25] Tim_Smart: http://fostle.com/assets/coffee/main.coffee sorry [06:26] manveru: i wish i could just drag tabs between chrome and firefox... [06:26] mscdex: i could see firefox->chrome, but why the other way around? ;-) [06:27] _announcer: Twitter: "@merbist Exactly. Node.js has a clean slate, and everything is async. right from the get-go. EM lives alongside lots of sync. libraries." -- Mathias Meyer. http://twitter.com/roidrage/status/17552381218 [06:28] manveru: mscdex: why not? [06:28] mscdex: chrome is faster :-D [06:28] mscdex: and not so bloated [06:29] manveru: i use both [06:29] Tim_Smart: I hardly use Firefox - unless debugging. I just find it too slow. [06:29] manveru: and i like them both :) [06:29] mscdex: Tim_Smart: same here, used to be diehard ff fan until i finally got fed up with slow start times and stuff [06:30] mscdex: i only use it for debugging multipart and other ff-specific stuff [06:30] mscdex: *multipart/x-mixed-replace [06:30] manveru: still haven't found a good replacement for vimperator [06:31] manveru: and with lastpass and bookmark sync switching between them is pretty painless [06:31] mscdex: yuck, vim :S [06:32] manveru: heh [06:32] manveru: i don't use vim... wrote my own editor [06:32] manveru: but i like the keybindings [06:32] mscdex: when it comes to console-based text editors, emacs and vim are equally yuck imho [06:32] mscdex: they're not very intuitive [06:33] manveru: well, yeah [06:33] Tim_Smart: I <3 vim :p [06:33] manveru: i don't think anybody will ever claim that they're intuitive :) [06:33] Tim_Smart: (With a few plugins of course) [06:34] manveru: but they really rock once you know them [06:34] mscdex: if i have to do console-based editing i use nano [06:34] mscdex: or pico for older or other systems [06:34] manveru: at work we use vim in shared screen sessions [06:34] Tim_Smart: mscdex: What don't you like with vim? [06:35] mscdex: it's not user-friendly to me [06:35] Tim_Smart: Oh right. Yeah when I first used it I hated it :p [06:35] manveru: likewise :) [06:35] manveru: until i found vimtutor [06:35] mscdex: having to press 'i' to edit text and such [06:36] mscdex: well, insert i guess [06:36] mscdex: i should just be able to start typing [06:36] manveru: mscdex: vim -y [06:36] manveru: makes it modeless [06:37] Tim_Smart: Haha I don't think there was a single vim user out there who didn't hate the modes when they first started. [06:37] mscdex: manveru: but you still have to use : to write and quit and stuff though right? [06:37] Tim_Smart: Then it becomes the single best feature. [06:38] mscdex: like :wq [06:38] mscdex: or whatever [06:38] Tim_Smart: :wq is write + quit [06:38] WarBot has joined the channel [06:39] manveru: mscdex: i think -y is gui only [06:39] manveru: so you use menu items to exit... [06:39] mscdex: :S [06:39] _announcer: Twitter: "@merbist Perhaps the better question is: would you still use node.js if you could use GCD instead?" -- Joshua Ballanco. http://twitter.com/jballanc/status/17552922412 [06:39] mscdex: i mean console-only [06:40] manveru: i just started it... but i disabled my menu bar... so i cannot exit it anymore :P [06:40] Tim_Smart: lol [06:40] manveru: oh well, just closing the window does the trick :) [06:40] mape: Tim_Smart: yeah fixed it [06:40] Tim_Smart: mape: :) [06:41] javajunky has joined the channel [06:41] jetienne: gcd? [06:42] manveru: greatest common denominator? [06:42] pquerna: grand central dispatch [06:42] Tim_Smart: mape: test [06:42] _announcer: Twitter: "@merbist all libraries with node.js are already event design. When you use EM, we have a lot of librarie with blocking :(" -- Cyril Mougel. http://twitter.com/shingara/status/17553062229 [06:42] manveru: grand central... the old google voice? [06:43] pquerna: no [06:43] pquerna: it is a feature in osx 10.6 [06:43] pquerna: a library for doing async work [06:43] manveru: oh :) [06:43] ewdafa has joined the channel [06:43] pquerna: the base library has been ported to freebsd and linux though [06:43] pquerna: http://libdispatch.macosforge.org/ [06:43] pquerna: guess not linux [06:43] jetienne: manveru: pquerna:apparently yoou are as lost as me [06:43] manveru: i'm not really familiar with apple stuff [06:44] jetienne: oh it wasnt a joke ... [06:44] jetienne: pquerna: in which lanauge is it usable ? [06:44] jetienne: language [06:45] _announcer: Twitter: "@merbist nodejs brings speed, low ram... after that it is up to the implementation language. js or ruby up to you to see" -- Jerome Etienne. http://twitter.com/jerome_etienne/status/17553172704 [06:45] pquerna: C, GCD is just a set of functions to provide async scheduling and callbacks [06:45] pquerna: apple builds on it in objectiveC for some things [06:46] pquerna: the EIO stuff that nodejs uses is similar in some ways, though GCD has a simppler api at times, and has some kernel accelerated bits [06:46] jetienne: hmm i see nodejs a lot more as "js on server" than as "async network lib" [06:46] jetienne: maybe this is just me tho [06:46] pquerna: well, internally, it is a async network lib [06:46] pquerna: that just happens to embed V8 for javascript [06:47] jetienne: pquerna: sure but async lib has been there for a long time. the newness of nodejs is to be done on top of a good js engine [06:47] jetienne: for example most nodejs perf comes from v8 [06:48] jetienne: ryan is doing well at not putting crap on top of it, but this is "all" [06:48] jetienne: "all" here is deceiving, it is quite hard not to had crap :) [06:48] jetienne: not reducing ryan work [06:48] aliem has joined the channel [06:48] pquerna: well, for example, you could bind node to GCD [06:49] pquerna: it might even make it faster on osx [06:49] rgl: mape, are you there? [06:49] mape: rgl: yes [06:49] pquerna: but thankfully most people don't run servers on osx :) [06:49] jetienne: pquerna: so this is libeio vs gcd... what would be the advantage of doing this ? [06:49] rgl: mape, how did you generate the world map? [06:49] mape: I found one that had the right projection [06:50] rgl: mape, I'm trying to use the world borders dataset, but the country dimensions on yours are not the same. [06:50] pquerna: jetienne: gcd has cooperation from the kernel in spots, things like knowing how loading the machine is, number of and tyype of hardware, custom event signals, etc -- libeio is generic to all the os it runs on, its still fast... but its not the same. [06:51] jedschmidt has joined the channel [06:51] jetienne: pquerna: in ultra short, gcd would be more integrated with the os, but only on osx... is it noticeably faster ? [06:52] pquerna: meh, not a big deal, threading kills you on the high end anyways [06:52] pquerna: the interesting approach of GCD really was the integration of blocks too [06:53] jetienne: pquerna: naice question what are "blocks" here [06:53] pquerna: closures in C [06:53] pquerna: annoymous functions ish [06:53] pquerna: in C [06:53] pquerna: which is kind of mindblowing, when you think about C :) [06:53] pquerna: http://en.wikipedia.org/wiki/Blocks_(C_language_extension) [06:53] jetienne: closure in C :)))) you have to be apple to get this ::) [06:53] mostlygeek has joined the channel [06:54] jetienne: sorry [06:54] jetienne: pquerna: yep but it doesnt bring anything for nodejs, right? i mean js has closure already [06:55] pquerna: thinking about it the wrong way -- its not a competitor to nodejs, its something you would build the internals of nodejs on (hopefully making the high level js faster in the end) [06:55] javajunky: faster than v8 ? [06:55] pquerna: nodejs is still 40k of C++ [06:55] pquerna: outside of v8 itself [06:55] Tim_Smart: Err.. javajunky you would compare it to libeio [06:56] pquerna: and not counting libio or libev [06:56] Tim_Smart: and libev or something [06:56] jetienne: pquerna: so gcd will bring say a "confort for writing code" but loose compatibility [06:56] javajunky: Oh I know about GCD, one of my languages is Obj-C, I'm just not convinced atm :) [06:56] jetienne: pquerna: i dont see the point at all :) [06:56] _announcer: Twitter: "what I hear is that node.js is already fully async while EM isn't quite there. Maybe Rubyists don't mind JS after all ;)" -- Matt Aimonetti. http://twitter.com/merbist/status/17553674934 [06:57] _announcer: Twitter: "After meeting with people from nodeJS community… http://ff.im/n3I8d" -- Cagdas Tulek. http://twitter.com/ctulek/status/17553688583 [06:57] pquerna: v8 just provides the javascript layer, the network IO and many 'core' functions are implemented in C++. GCD could replace parts of it that use libeio for example. It could make them faster. The problem then really is portability [06:57] pquerna: mostly that libdispatch isn't portable enough, yet. [06:58] javajunky: GCD would certainly increase the fairness of the scheduling on the OSX platform, but my understanding of it (albeit only at the level I need to use it) I don't see how it would present an advantage to node.js which is inherently a single process so has no internal scheduling issues ? [06:59] pquerna: node.js is multi-threaded [06:59] pquerna: this multi-threading is not exposed to javascript [06:59] pquerna: but internally it uses threads all over [07:00] javajunky: pquerna: true, but only minimally so ? really , I thought there were only a couple ? There would I guess be advantages if you were running a large number of node processes on the same server [07:00] javajunky: my knowledge of node.js internals is lacking I Guess :) [07:00] pquerna: 'minimally' really depends on what you are doing with node [07:00] pquerna: some operations are very heavy on their uses of threads [07:00] pquerna: basically any operation that calls a C api that blocks [07:00] pquerna: is actually one inside a thread [07:00] jetienne: pquerna: in short, you are free to port nodejs to this if you want. but as a project it makes no sense [07:00] javajunky: interesting. [07:01] pquerna: unforuntately, almost all C apis block. [07:01] sechrist: "idontcare" [07:01] javajunky: I imagine that if it could be demonstrated as a performance improver then ryah would be interested, assuming libdispatch matches the platforms that node.js currently supports, and the beauty of open source is that it costs nothing to fork ;) [07:02] jetienne: pquerna: ??? [07:02] jetienne: pquerna: almost all C api block ??? [07:02] manveru: Tim_Smart: how about making Package.make polymorphic? [07:02] Tim_Smart: manveru: ? [07:03] Tim_Smart: manveru: I might do a small re-write of node-asset soon [07:03] dahankzter: pquerna: how is it multi threaded? [07:03] pquerna: jetienne: yes, things like stat(), they block. They were designed before anyone thought about blocking io really hard. [07:03] manveru: Tim_Smart: instead of 'if @type is xxx' using something like 'if maker: @makers[@type]' [07:03] jetienne: pquerna: rezvise your definition of "almost all" :) [07:03] Tim_Smart: I want to expose middleware for different types soon. [07:03] Tim_Smart: jetienne: All the IO functions. [07:04] jetienne: Tim_Smart: same things [07:04] manveru: that way i could extend it without monkeypatching :) [07:04] jetienne: Tim_Smart: i run a [07:04] pquerna: jetienne: no, almost all. The only ones that aren't are a *some* related to sockets, and those are a very small number of functions compared to the rest of a posixy api [07:04] jetienne: Tim_Smart: i run a single thread async network library in c++ and i got files too [07:04] Tim_Smart: jetienne: We are talking about libc here :p [07:04] pquerna: in addition most 3rd party librarie that were designed 5-10 years ago [07:05] pquerna: were build around blocking [07:05] jetienne: pquerna: well you got partial knowledge, to be diplomatic [07:05] pquerna: sure, some stuff isn't, but most of the default things out there are. [07:05] manveru: Tim_Smart: templates: {}; new Package(templates, ['view/'], {type: 'haml', watch: yes, compile: yes}).serve() [07:05] manveru: that would be my proposal :) [07:06] javajunky: I take it the socket stuff is using non-blocking recvs ? [07:06] pquerna: It's a UNIX system! I know this! [07:07] jbrantly2 has left the channel [07:07] manveru: Tim_Smart: please let me know when you get around to this, i'd like to help [07:08] mscdex: !api error [07:08] _api: mscdex: (EventEmitter) event: error(exception) -- If an error was encountered, then this event is emitted. This event is special - when there are no listeners to receive the error Node will terminate execution and display the exception's stack trace. [ http://nodejs.org/api.html#event-error-16 ] [07:08] mscdex: hmm, i guess the guy that tweeted earlier about his first experience with node didn't know about the error events :S [07:10] mscdex: where do i sign up for twitter bot privileges? :P [07:17] marshall_law has joined the channel [07:18] ph^ has joined the channel [07:20] sooli has joined the channel [07:23] virtuo has joined the channel [07:30] sixbit has joined the channel [07:35] nostromo has joined the channel [07:36] virtuo has joined the channel [07:40] ehaas has joined the channel [07:41] _announcer: Twitter: "How soon graduate research season. node.js'll be flying high" [ja] -- KOBA789. http://twitter.com/koba789/status/17555578360 [07:43] _announcer: Twitter: "@mojombo My upcoming book has a chapter on TDD-ing a tiny web app using node.js http://www.amazon.com/dp/0321683919/ Not until sept though.." -- Christian Johansen. http://twitter.com/cjno/status/17555664368 [07:50] norfold has joined the channel [07:50] norfold: ok, socket.io not working so great [07:50] norfold: any other alternatives [07:50] norfold: that actually work [07:50] norfold: without modifying very much my current code ? [07:50] mscdex: what's the problem? [07:50] mape: norfold: what isn't working? [07:50] norfold: mape: I just do a connect to the srever [07:51] norfold: mape: I get stuff like [07:51] norfold: "Error: uncaught exception: [Exception... "Not enough arguments [nsIXMLHttpRequest.send]" nsresult: "0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)" location: "JS frame :: http://localhost/server/socket.io-node/test/client/socket.io.js :: anonymous :: line 1124" data: no]" [07:51] norfold: that's abnormal [07:52] _announcer: Twitter: "Need an idea for a real time app/feature so I can play around with node.js and websockets" -- Jim Neath. http://twitter.com/jimneath/status/17556012113 [07:52] ollie has joined the channel [07:52] norfold: mape: did you read what I wrote ? [07:52] mscdex: what version of firefox is this? [07:52] mape: norfold: That is what I do [07:53] norfold: mscdex: 3.0.6 [07:53] mape: norfold: so not using the flash fallback? [07:53] norfold: mape: I've no idea ? [07:53] _announcer: Twitter: "I do node.js ruby scala of writing a Web application very Futsu. Wait to Be Banta opened once more as well Banban gun Norya dad-gummed adhesive Banban Reckless means exactly the same as the Customer asks: should I get one bite I Mashita." [ja] -- mooz deceives you. http://twitter.com/stillpedant/status/17556078081 [07:53] mscdex: norfold: hmmm, have you tried on 3.5+? [07:54] mscdex: i haven't used 3.0.x in a long time [07:54] norfold: mscdex: is that gonna make a difference ? [07:54] mscdex: possibly [07:54] norfold: mscdex: ok I'll that and report back [07:54] mscdex: oops he left too soon [07:54] mscdex: heh [07:56] mscdex: v3.0.6, released February 3, 2009 [07:56] _announcer: Twitter: "%w[node.js ruby scala].choice" -- Wataru MIYAGUNI. http://twitter.com/gongoZ/status/17556195742 [07:56] mscdex: i thought maybe it was older than that even [08:02] teemow has joined the channel [08:06] mape: Anyone here used raphael and svg? [08:07] Tim_Smart: mape: Where is Dmitry when you need him ;) [08:07] _announcer: Twitter: "@ Stillpedant node.js good I think. Twitter is the way to the IRC node.js node.js to flow because it is being translated into English, including a remark, the remark has drifted w" [ja] -- Toshihiro Shimizu. http://twitter.com/meso/status/17556646287 [08:07] mape: Tim_Smart: hehe [08:10] Dmitry has joined the channel [08:10] Tim_Smart: mape: There he is! [08:11] mape: Dmitry: Morning :) Was working on getting raphael into the wargames. [08:11] mape: But I can't find any information on how to get the SVG file imported/converted into something that raphael can use [08:12] Tim_Smart: mape: http://raphaeljs.com/reference.html#path [08:12] TomY has joined the channel [08:13] mape: yeah, but the file I got from adobe illustrator has 40+ paths [08:13] Tim_Smart: 40 path calls :p [08:13] mape: :S [08:14] Tim_Smart: mape: I'm sure you can write a script that extracts the paths and generates the code [08:14] Tim_Smart: Or I can. I'm bored atm. [08:15] mape: http://wargamez.mape.me/img/map.svg [08:16] mape: But I guess raphael isn't suited for adobe generated svgs? [08:16] Tim_Smart: mape: Should be fine. Its just a complex SVG thats all. [08:17] christkv has joined the channel [08:17] mape: I guess each thing that isn't connected with something else become a path? [08:17] b_erb has joined the channel [08:18] Tim_Smart: mape: I'll make it with firebug hehe [08:20] Tgmessi has joined the channel [08:22] manveru: Tim_Smart: any session support planned? [08:22] Tim_Smart: manveru: Connect already has session module done I think. [08:22] Dmitry: mape: Raphaël is very good with ADobe generated SVG :) [08:23] markwubben has joined the channel [08:23] mape: Dmitry: So how would one import a svg file generated from illustrator into raphael? :) [08:23] Tim_Smart: mape: Almost done [08:24] mape: Dmitry: It needs massaging or just straight import? [08:25] manveru: mape: inkscape can save files as "simple SVG"... which strips the svg down quite a bit for use in browsers [08:25] manveru: no idea about illustrator [08:25] Dmitry: Open SVG file [08:25] Dmitry: Grab path: path fill-rule="evenodd" clip-rule="evenodd" d="M457.873,251.539c-0.131,1.316,0.347,0.309,0.832,0.832 [08:25] Dmitry: c-0.081,1.027,0.157,2.377-1.109,2.219c-0.193,1.211,0.801,1.234,0.832,2.219C455.473,257.15,455.017,251.628,457.873,251.539z"/> [08:25] Dmitry: paper.path("M457.873,251.539c-0.131,1.316,0.347,0.309,0.832,0.832c-0.081,1.027,0.157,2.377-1.109,2.219c-0.193,1.211,0.801,1.234,0.832,2.219C455.473,257.15,455.017,251.628,457.873,251.539z") [08:26] mape: Dmitry: and If I have 40 paths? [08:26] mape: just append them to the string? [08:26] Dmitry: 40 times [08:26] Dmitry: or concat the pathes into one [08:26] mape: what is the format for concating them? [08:26] mape: M****.*,***,M**.**,** ? [08:26] manveru: Tim_Smart: and how well does connect integrate with biggie-router? [08:27] Tim_Smart: manveru: The middleware api is identical almost [08:28] Tim_Smart: mape: https://gist.github.com/0dba1cdd19664696b81a [08:28] Tim_Smart: Dmitry: Does that look right? ----^ [08:29] mape: hmm, that looks very unsexy [08:29] sechrist: rofl [08:29] sechrist: morgan freeman just called a macbook air a supercomputer [08:29] Tim_Smart: mape: You lied, there was 132 paths [08:30] mape: Tim_Smart: Yeah.. I tend to do that.. [08:32] xla has joined the channel [08:32] sechrist: http://i46.tinypic.com/4t7exe.png holy shit this is fast [08:32] Tim_Smart: Not really.. [08:33] sechrist: the catch? it's an SSH tunnel going over ICMP with ptunnel, so yeah, that makes it fast. [08:33] Tim_Smart: Oh. [08:33] sechrist: ^ [08:33] sechrist: ptunnel seems to cap out at around 2 megabit [08:33] sechrist: i'm not sure if that's just limitations of networking infrastructure or what [08:34] sechrist: probably is to stop pingbombing [08:34] Tim_Smart: mape: I attached the firebug script I used to generate the code :) [08:34] maritz has joined the channel [08:34] Tim_Smart: (To the gist) [08:34] maritz: good morning ladies and gentlemen [08:34] mape: Tim_Smart: thanks [08:36] sechrist: Tim_Smart: so I found the perfect way to retain my super anonymity [08:36] Tim_Smart: Heh. [08:36] sechrist: 1. buy an amazon kindle off of somebody second hand. 2. Jailbreak it. 3. ptunnel out to VPN in china [08:36] felixge has joined the channel [08:36] felixge has joined the channel [08:36] sechrist: if you don't get social engineered [08:36] sechrist: it's fool proof [08:37] felixge_ has joined the channel [08:37] Tim_Smart: mape: Maybe export the paths as an array [08:38] Tim_Smart: Put them in an external JS file [08:38] mape: Tim_Smart: yeah [08:39] mape: the " " in the middle is needed? [08:39] Tim_Smart: Not sure. I'll regex it out [08:39] mape: or well every so often [08:40] _announcer: Twitter: "@ Meso ashamed / / /. Node.js so curious, I want to use someday." [ja] -- mooz deceives you. http://twitter.com/stillpedant/status/17557996471 [08:42] Tim_Smart: mape: Updated gist [08:42] Tim_Smart: Forgot commas >.> [08:43] mape: Tim_Smart: neat :) [08:43] Tim_Smart: mape: Commas first or last? :p [08:44] N` has joined the channel [08:44] jetienne has joined the channel [08:44] mape: first! [08:45] Tim_Smart: OK. https://gist.github.com/0dba1cdd19664696b81a [08:46] norfold has joined the channel [08:46] norfold: yeah so socket.io it doesn't work .. [08:46] norfold: does faye work or same situation ? [08:47] norfold: so to make this clear, I really want to use comet or websockets [08:47] norfold: I want something that works [08:47] Tim_Smart: norfold: Implement it yourself then :) [08:47] stagas has joined the channel [08:47] norfold: Tim_Smart: I'm not that smart [08:48] sechrist: norfold: what's wrong with socket.io? [08:48] norfold: sechrist: it doesn't work ? [08:48] sechrist: norfold: don't be retarded, be specific [08:48] sechrist: I use socket.io every day [08:48] norfold: sechrist: ok then help me make it work over here [08:48] sechrist: what are you trying to get to work? the retarded chat demo? [08:49] zomgbie has joined the channel [08:49] sechrist: also what browser are you using to test it? [08:49] norfold: sechrist: no, I pulled minimalistic stuff from the retarded chat demo and wrote it in my stuff [08:49] sechrist: gist [08:49] norfold: sechrist: I can't use gist [08:49] sechrist: ..what? [08:49] Tim_Smart: http://pastie.org [08:49] norfold: norfold: listen... the demo that comes with socket.io works fine ok ? [08:49] norfold: norfold: I can't make a testcase if that's what you want [08:50] Tim_Smart: You are talking to yourself there. [08:50] sechrist: what is broken? [08:50] norfold: sechrist: what I can do is show you my code [08:50] sechrist: gist [08:50] sechrist: gist your damn code [08:50] norfold: sechrist: I am connecting form client-side to server socket.connect() and I'm not seeing what I expect to see on server-side [08:50] Tim_Smart: http://pastie.org/ <- Next best thing [08:50] norfold: sechrist: I can't fckn gist it , it's too big for a gist [08:50] norfold: sechrist: it's already on teh githubz [08:50] sechrist: I thought it was minimalistic [08:50] sechrist: okay show me [08:50] norfold: norfold: lemme make a branch for it and I upload and show ok ? [08:51] norfold: norfold: >1m [08:51] sechrist: okay so if there's proof of black holes [08:51] sechrist: doesn't that definitively prove the theory of relativity? [08:51] sechrist: stupid wikipedia [08:52] _announcer: Twitter: "Late night #webdev roundup: Lessapp is lessCss for mac, now v2 (http://ow.ly/26alI) & Jade is html templates for nodejs (http://ow.ly/26amV)" -- Jake Luer. http://twitter.com/jakeluer/status/17558453791 [08:54] sechrist: norfold: so it's socket.connect() which is fucking up? does the console show "client connected" at all? [08:54] sechrist: also are you using firefox? [08:54] sechrist: if so, 843 outbound has to be open, and not just for firefox, but for anything that uses the flash fallback [08:57] mape: Tim_Smart: hmm seems to work not so well [08:57] Tim_Smart: mape: OK. I'm about to try it. [08:58] norfold: sechrist: no console does not show any client connected [08:58] sechrist: is this running locally or are you connecting out? [08:59] norfold: it's running as locally as possible(localhost) [08:59] sechrist: k [08:59] sechrist: the server is meant to attach to an already bound http.Server object [08:59] sechrist: do you have a http.Server running? [08:59] sechrist: also, do a local portscan [09:00] sechrist: unless guille broke something, you're just using it wrong [09:00] sechrist: are you on the latest learnboost? [09:00] sechrist: nah he hasn't updated it since I made my branch [09:00] sechrist: so it's fine [09:00] norfold: I cloned it from teh githubz [09:01] norfold: http.server yea [09:01] norfold: I has one [09:01] sechrist: k well I have yet to see the client and server code [09:01] norfold: I wrote a 400-500 line server with node.js then I decided regular AJAX requests just didn't cut it for me [09:01] norfold: so now I need them socket.ioz but cannot get them to work [09:02] norfold: sechrist: just a sec [09:04] mape: Tim_Smart: got it working? [09:05] Tim_Smart: mape: Yes. Buts its small :/ [09:05] Tim_Smart: All the detail is there though [09:05] mape: Using the same code?+ [09:05] mape: Tim_Smart: http://wargamez.mape.me/index2.html [09:05] sechrist: mape: add flash websockets plz [09:05] sechrist: so I can use firefox [09:05] wao: mape: what should be there? [09:06] mape: wao: a map.. [09:06] mape: sechrist: That is second on my list :) Need to get rapahel working [09:06] Tim_Smart: mape: Let me forward my router port [09:06] sechrist: mape: for vector work? [09:06] wao: mape: well, at chrome I can't see there any map, only had activity 0.00sec ago, messags inthe last 40min :) [09:07] sechrist: http://raphaeljs.com/tiger.html [09:07] sechrist: holy [09:07] sechrist: shit [09:07] wao: wee, at origin ipv6 support is there [09:07] wao: :D [09:07] Tim_Smart: mape: http://121.79.216.71:8080/index.html [09:08] mape: Tim_Smart: not working [09:08] Tim_Smart: mape try again [09:08] mape: white page [09:08] Tim_Smart: mape: Yeah something is screwed up with my server [09:08] wao: and title raphael [09:09] mape: I would give my right arm for firebug in chrome :S [09:09] sechrist: norfold: well i'm getting tired so so either write something super minimalistic that you can gist [09:09] sechrist: or hurry up [09:09] sechrist: lol [09:09] mape: The server denies connections. [09:09] mape: The server might be too busy or might be disabled. Try again a bit later. [09:11] Tim_Smart: mape: There we go. [09:11] Tim_Smart: Might need to clear cache [09:11] mape: works :) [09:12] mape: Tim_Smart: mind sharing a non minified version of the js? :) [09:12] Tim_Smart: mape: Look at the bottom of the file [09:12] mape: oh, yeah.. I'm being dumb.. [09:12] Tim_Smart: I used coffeescript haha [09:12] sechrist: k if the chat demo works [09:12] sechrist: and yours doesn't [09:13] viktors has joined the channel [09:13] sechrist: I can promise you it's just your code [09:13] sechrist: lol [09:13] sechrist: ACTION goes to bed [09:14] mape: makes for some wonky code [09:15] Tim_Smart: mape: Should the map appear bigger? [09:15] Tim_Smart: Its small on my browser. [09:15] mape: Tim_Smart: well that is the idea with svg no? :) Just change the size [09:15] Tim_Smart: How do you scale? [09:15] Tim_Smart: :/ [09:16] sechrist: % [09:16] Tim_Smart: Only by element it appears... [09:16] mape: Tim_Smart: http://wargamez.mape.me/index2.html [09:17] sechrist: I want a dyson fan [09:17] sechrist: but i'm not paying $400 [09:17] Tim_Smart: mape: I see no map [09:17] mape: Tim_Smart: hehe yeah.. [09:17] mape: That is the issue [09:18] mape: It prints all the paths, but nothing is plotted [09:18] Tim_Smart: Need to make the path white :p [09:18] mape: oh is that it? [09:18] Tim_Smart: Black on black doesn't work too good [09:18] mape: once you go black you never go back?... [09:19] mape: that is better, but yeah the svg is still to small.. [09:20] mape: I figured raphael would handle that [09:20] mape: Dmitry: shouldn't the svg scale to the canvas? [09:21] mape: hmm [09:21] Tim_Smart: mape: I'm having a play atm. Will let you know if I get anywhere. [09:21] mape: Tim_Smart: Great :) [09:22] Tim_Smart: mape: Found the solution :p [09:23] MattJ has joined the channel [09:24] mape: Tim_Smart: so how do I scale it? := [09:24] mape: *:) [09:24] Tim_Smart: Need to set viewBox on the svg element to '5.064 -4.956 567 369' [09:24] Tim_Smart: Trying to see if raphael can do that, otherwise use the DOM [09:25] moondust has joined the channel [09:27] mape: Feels like something that should be supported, seeing how it is all about scaling [09:27] Tim_Smart: mape: Take a look at my server now :p [09:28] mape: Tim_Smart: are your server on a modem? [09:28] mape: or is.. [09:28] Tim_Smart: Yeah, my laptop [09:29] creationix: mape: having fun while this half of the world sleeps ;) [09:29] mape: creationix: I try.. ;) http://wargamez.mape.me/index2.html [09:30] mape: seems to be working [09:30] mape: but the svg looks awful.. [09:30] creationix: interesting [09:30] mape: assume it is the stroke? [09:30] Tim_Smart: mape: I'm working on it... [09:30] mape: should just look like http://wargamez.mape.me/img/map.svg [09:31] creationix: wow that takes a long time to draw [09:31] creationix: any way you can simplify the points without killing the quality? [09:31] mape: It does? [09:31] mape: It is instant here.. bw issues? [09:31] creationix: hmm, maybe it was just streaming the xml [09:31] creationix: it's fast on other loads [09:31] mape: xml? [09:31] creationix: svg [09:32] mape: ah [09:33] mape: Dmitry: ? [09:33] tmedema has joined the channel [09:34] creationix: well, I'd better get back to work before my colleague in UK wakes up [09:34] mape: creationix: Hehe altering work time to fit the global clock? := [09:34] creationix: mape: well, I started today 9am my time [09:34] creationix: it's just been a long day [09:35] mape: isn't it like 2:30 am over there? [09:35] creationix: yep [09:37] WarBot has joined the channel [09:37] _announcer: Twitter: "asciimo - create awesome ascii art with javascript! works in the browser or node.js: http://asciimo.com/" -- Amsis. http://twitter.com/am5i5/status/17560252364 [09:38] caolanm has joined the channel [09:40] mape: Tim_Smart: seems using attr fill and lowering the stroke-width does the trick :) [09:40] mape: Tim_Smart: http://wargamez.mape.me/index2.html [09:40] Tim_Smart: mape: Cool [09:40] stagas: mape: it's good now [09:40] Tim_Smart: mape: I'm in the ocean now :/ [09:41] sztanpet: that shows the map all wrong tho [09:41] hoodow has joined the channel [09:41] mape: it does? [09:41] mape: if you refresh? [09:41] caolanm: its like I never disconnected ;) ...still talking about wargamez \o/ [09:41] sztanpet: yea its okay after refreshing [09:42] Tim_Smart: mape: http://121.79.216.71:8080/index.html [09:43] Tim_Smart: mape: But it manually modifies the svg, so it isn't portable [09:43] mape: Tim_Smart: loading.. [09:43] mape: loading... [09:44] mape: yeah, my way seems to work well enough [09:46] aubergine_ has joined the channel [09:46] Tim_Smart: mape: The position is a little off here [09:46] stagas: mape: islands disappeared though :/ can you increase the detail a bit? [09:46] hoodow has joined the channel [09:47] stagas: Tim_Smart: mine also is off a bit to the right [09:48] mape: stagas: you are on the little island to the left of your dot? [09:49] stagas: mape: yes, it's bigger before the dot comes in cause it has a black border and makes it look like it's cut [09:49] maushu has joined the channel [09:50] mape: Yeah.. so well [09:50] maushu: Zoot. [09:50] mape: I don't really think it is off [09:50] maushu: ACTION pokes mape. [09:50] mape: since Tim_Smart is right on the island? [09:50] maushu: Poke, poke, poke. [09:50] mape: and that is a pretty tiny place to match [09:51] Tim_Smart: mape: I'm supposed to be in NZ, not swimming :p [09:51] mape: Tim_Smart: http://pic.thefarm.se/mape/20100702114629/ [09:51] mape: right no? [09:52] Tim_Smart: Thats how I see it, but I'm on the big island next to it [09:52] mape: hmm k, then it is the geoip [09:52] mape: if you check maushu he is on the coast [09:53] mape: if I would offset it he would be in the ocean [09:53] mape: and I am where I should be in sweden [09:53] Tim_Smart: mape: That not how it looked before the raphael update [09:53] stagas: the map maybe wrong [09:53] mape: caolanm: also seems to be on the right place [09:54] caolanm: mape: yep, looks like a good match for me [09:54] mape: Tim_Smart: hmm that is strange [09:54] Tim_Smart: mape: Let me find a screenshot from yesturday [09:54] maushu: Tim_Smart: woah, you are totally awesome. Swimming in the middle of the ocean while in IRC. [09:54] maushu: Rock on. [09:54] maushu: \m/ [09:55] stagas: center stuff look ok, but I think it stretches while it gets to the sides [09:55] stagas: that's why I'm a little to the right, and Tim_Smart is a lot to the right [09:55] mape: hmm k, might be the clipping of the svg causing an issue [09:57] lianj_ has joined the channel [09:59] Tim_Smart: mape: Found this one http://ranney.com/strike.jpg [09:59] Tim_Smart: See where I am there? [09:59] mape: Tim_Smart: yeah [09:59] fermion has joined the channel [09:59] mape: trying to convert the svg again without lossing the positions [10:00] Tim_Smart: mape: I managed to produce a 1 to 1 copy [10:00] Tim_Smart: My node server is still running I think. [10:01] mape: 1 to 1 copy? [10:01] Tim_Smart: I.e. I look at the SVG elements and made sure it was the same [10:01] Tim_Smart: *looked [10:01] mape: Yeah I think it is the width though.. [10:02] mape: but yeah it should be teh same [10:02] mape: the code didn't change [10:02] mape: Tim_Smart: line [10:03] mape: I need jed here [10:03] mape: Tim_Smart: what deos the viewbox do? [10:04] Tim_Smart: mape: Its the thing that scales it up [10:05] mape: but what do the vars represent? [10:05] mape: ratio? [10:05] hellp has joined the channel [10:06] Tim_Smart: mape: Not sure [10:06] mape: so how did you come up with them? [10:06] Tim_Smart: Have you got the original web page there somewhere? [10:06] Tim_Smart: mape: Copied it from the original SVG [10:07] Tim_Smart: Right Click -> View Source on the image page [10:07] mape: Now I just have to figure out how to do bezierCurveTo in rapahel [10:09] Tim_Smart: mape: Can you put the original page with a normal svg back up somewhere? [10:09] virtuo has joined the channel [10:09] mape: a normal svg? [10:09] Tim_Smart: mape: The one before the 'upgrade' [10:09] mape: http://wargamez.mape.me/img/map.png [10:10] mape: that is the image [10:10] Tim_Smart: Oh. [10:10] mape: the old one that "worked" [10:10] Soryu has left the channel [10:10] mape: Reverting the code would mean 106 hackers would be mad :) [10:11] mape: Tim_Smart: But it is strange [10:11] mape: That the new svg would change things [10:11] mape: Tim_Smart: I just kinda find it strange that the offset would be so perfect as to put you on an island [10:12] mape: creationix: Dmitry is in SF right? [10:13] creationix: no, he's in Australia [10:13] mape: oh [10:13] mape: Guess he is having dinner now then [10:13] creationix: I'm starting to get tired though [10:14] creationix: almost done with work for the day [10:15] mape: I really should add a time activity graph for the channel [10:15] femto has joined the channel [10:15] mape: but then again timezones would be more fun.. [10:17] mape: but then timezones are a pita.. [10:18] _announcer: Twitter: "I'll use Redis and Node.js for my next project !!" -- Olivier BONNAURE. http://twitter.com/olivierb/status/17561881831 [10:18] towski has joined the channel [10:19] mape has joined the channel [10:20] therealkerni has joined the channel [10:23] Tim_Smart: mape: After playing around >.< http://img267.imageshack.us/img267/6527/screenshotpr.png [10:24] mape: that seems of in regards to the code [10:28] maushu: Tim_Smart: Woah, you're swimming to australia?! Rock on! \m/ [10:29] Tim_Smart: maushu: Yeah. Got bored, just checking to see if my dual monitors are water proof. [10:29] maushu: Awesome! [10:31] Tim_Smart: mape: We should be able to do this all from raphael, otherwise it won't be portable :/ [10:31] virtuo has joined the channel [10:32] maushu: mape: You are using raphael to draw the canvas? [10:32] mape: maushu: yup [10:32] Tim_Smart: maushu: Yeah. We are trying to get it to work properly. :( [10:33] Tim_Smart: We got pretty close :p [10:33] maushu: ...why? Isn't the canvas api enough to draw curves? [10:33] Tim_Smart: maushu: socket.io + raphael = all browsers (roughly) [10:33] mape: maushu: well the lines are still canvas, the map is raphael [10:35] mape: hehe either someone is trying out node or people wake up at the same time.. :P [10:35] mape: 270 clients connected [10:35] Tim_Smart: Thats quite a bit. [10:36] mape: I guess [10:36] Tim_Smart: mape: Installing inkscape to see if it can be merged into one path. [10:37] mape: Tim_Smart: still doing 0.07 load so guess it could take quite a bit more :) [10:37] mape: Tim_Smart: how would that help? [10:37] _announcer: Twitter: "Installed Linux to get me some love from Node.js... I really like the dev experience on this platform :o" -- Bjarte Djuvik Næss. http://twitter.com/bjartn/status/17562679741 [10:37] Tim_Smart: mape: We can then scale it using raphael [10:38] Tim_Smart: scaling one path at a time makes them overlap like crazy. [10:38] mape: Tim_Smart: how is that different from the current case? [10:39] Tim_Smart: mape: map.canvas directly references the svg element - in other viewBox isn't a raphael support attribute type. [10:39] Tim_Smart: *other words [10:39] Tim_Smart: *supported [10:41] mape: hmm k, so how does that change things? [10:41] Tim_Smart: If everything goes through raphael, and you use socket.io, it will work in IE [10:42] Tim_Smart: And that my friend, will be a true wtf moment [10:43] mape: hehe.. but I would need the curves math in raphael [10:44] Tim_Smart: Yes, hopefully Dmitry can help there or something [10:44] mape: yeah, I'm no math wizz [10:45] Tim_Smart: OK made it one path with inkscape [10:45] blackdog_ has joined the channel [10:46] Tim_Smart: https://gist.github.com/raw/0b9f28d168be90a3924a/8f5ef5290baa3955a58a6206d82301f04f610f5e/map.js [10:47] mape: what difference does it make? [10:47] mape: to having multiple [10:48] Tim_Smart: can use the element.scale() method now [10:50] mape: ah, k [10:55] jedschmidt has joined the channel [11:06] camilo has joined the channel [11:07] pzich has joined the channel [11:09] _announcer: Twitter: "By @ chrjean for my tutorial on that stream nodejs timeline world;)" [fr] -- Jérôme M.. http://twitter.com/phollow/status/17564044043 [11:18] creationix: I think I found a V8 bug [11:18] creationix: http://pastie.org/1027963 [11:18] creationix: or just some really bad error reporting [11:20] creationix: ryah: are you swamped getting ready? [11:20] rowbee has joined the channel [11:21] jedschmidt: creationix: safari complains too: TypeError: Result of expression 'undefined' [undefined] is not a valid argument for 'in'. [11:22] creationix: I've seen this error before, but the line it's showing has no "name" or undefined in sight [11:22] creationix: and the error is in native code somewhere [11:23] jedschmidt: creationix: ah, good catch. that's a mystery. [11:24] creationix: It's probably a v8 bug, I'm trying to work around it so I can finish and go to bed [11:25] Tim_Smart: Dmitry: Raphael is mutilating my path :/ [11:25] hellp has joined the channel [11:26] Dmitry: I am on it… [11:26] Tim_Smart: Dmitry: http://121.79.216.71:8080/index.html [11:27] lorewarden has joined the channel [11:27] Tim_Smart: if I manually create the path element, and setAttribute('d', path_string); it works fine. [11:30] Dmitry: Tim_Smart: http://raphaeljs.com/map.html [11:31] Tim_Smart: Dmitry: Why doesn't the code on http://121.79.216.71:8080/index.html work? [11:32] Dmitry: Tim_Smart: I don’t know, some error in path string [11:32] rowbee has left the channel [11:32] femtoo has joined the channel [11:33] camilo: . [11:33] Dmitry: Tim_Smart: May be some bug in parsing… [11:34] Tim_Smart: Dmitry: How do you generate you path strings? [11:34] Dmitry: From Illustrator [11:34] Dmitry: I edited it a bit. Removed double lines. Instead you can change width of the path [11:35] Dmitry: And also united all pathes into one big path [11:36] creationix: Dmitry: yeah, I did the same thing with my USA map using Inkscape [11:37] creationix: it help to unify everything into one path [11:37] Tim_Smart: I used inkscape, except it did work :/ [11:38] Dmitry: It could be bug in Raphaël parsing. Worth investigation. [11:38] Dmitry: Anyway, you can use my path. It is working. :) [11:38] Tim_Smart: Yeah I am :) [11:38] Tim_Smart: mape: ping [11:40] Tim_Smart: Dmitry: You don't need to parse the path, if it is already given? [11:40] Tim_Smart: You just need to wham the string into the 'd' attribute [11:41] mklappstuhl has joined the channel [11:41] Dmitry: Tim_Smart: there is a reason to parse, trust me ;) [11:41] Tim_Smart: So you can animate it? [11:43] aubergine has joined the channel [11:46] Dmitry: Tim_Smart: Animate and to find bounding box [11:54] aubergine has joined the channel [11:58] Dmitry: mape: http://raphaeljs.com/map.html [11:58] Dmitry: Tim_Smart: the same with some small animation: http://raphaeljs.com/map.html [11:58] Tim_Smart: Dmitry: I inserted it into the page with the chrome console [11:58] Tim_Smart: Nice :) [12:04] Tim_Smart: femtoo: ping [12:04] femtoo: watpong [12:04] Tim_Smart: femtoo: Where about do you live? [12:04] Tim_Smart: (trying to get map right) [12:04] femtoo: glhf [12:05] Soryu has joined the channel [12:06] Tim_Smart: Berlin right? [12:08] augustl has joined the channel [12:09] augustl: I would like to create a server that prematurely closes the connection, for debugging. How can I do that? [12:11] femtoo: Tim_Smart, how did you do it? [12:11] augustl: finding it kind of hard to determine what the arguments to the createServer function are. [12:11] mertimor has joined the channel [12:11] femtoo: I mean where did you get my ip from? [12:11] Tim_Smart: femtoo: /whois [12:11] femtoo: oh I didn't know this tells you the ip on freenode [12:12] mertimor has joined the channel [12:13] _announcer: Twitter: "The Google Maps API docs makes it apparent that most other API docs kind of sucks. Looking at you, node.js." -- August Lilleaas. http://twitter.com/augustl/status/17567145207 [12:14] brainproxy has joined the channel [12:14] augustl: haha that's so evil [12:16] augustl: time to make those tweets protected? =P [12:17] Dmitry: Tim_Smart: It was a bug in Raphaël. I fixed it on “cuttingedge” branch. :D [12:17] Tim_Smart: Dmitry: OK cool. Thanks! [12:17] Dmitry: I mean I fixed a while ago. [12:19] _announcer: Twitter: "Recently if you want, and have fun coding. Node.js someone thinking he can use the Web to people who want to collaborate apps" [ja] -- KOBA789. http://twitter.com/koba789/status/17567459600 [12:21] augustl: http://gist.github.com/461280 - on line 7 I want to close the connection so the browser errors out. How can I do that? [12:21] augustl: even better - how can I figure out what methods the 'req' and 'res' objects have? [12:22] _announcer: Twitter: "@ Augustl HAHAHAHAHAHAHAH KARMA # # # IRON NOHOMO # NODEJS" [cs] -- Seivan Heidari. http://twitter.com/Seivanheidari/status/17567586155 [12:22] augustl: ugh.. [12:23] hansek has joined the channel [12:23] _announcer: Twitter: "@augustl node.js' docs are sucky indeed, not to mention outdated at time. But the code is on github, and the awesomeness trumphs bad docs!" -- Peter Haza. http://twitter.com/phaza/status/17567652182 [12:23] Tim_Smart: augustl: You will need to move the writeHead call below it [12:23] therealkerni has joined the channel [12:24] ph^: augustl: req and res are documented [12:24] augustl: Tim_Smart: I see, I guess there's no way to close a http connection mid-stream? That's probably the same as just closing it? :) [12:24] _announcer: Twitter: "@augustl nah, let's just start spamming the node.js channel (through Twitter) :D" -- Magnus Holm. http://twitter.com/judofyr/status/17567729188 [12:24] Tim_Smart: augustl: Oh, just call `return response.end()` [12:25] augustl: ph: I'm spoiled with http://code.google.com/apis/maps/documentation/javascript/reference.html#Map I guess :) [12:25] augustl: I kind of like the strongly typed esque thing they got going [12:25] ph^: augustl: I agree, google maps docs are awesome [12:25] ph^: as are most docs on google code [12:26] ph^: but node.js is way younger than google docs [12:26] Tim_Smart: Apart from the V8 embedding docs [12:26] mw has joined the channel [12:26] ph^: google maps didn't even have an api at first [12:26] augustl: good points [12:27] ph^: younger than google maps* (of course) [12:27] _announcer: Twitter: "btw, Why isn't the IRC node.js-to-two-way bridge?" [fil] -- Magnus Holm. http://twitter.com/judofyr/status/17567882753 [12:27] phoenix24 has joined the channel [12:27] robinduckett has joined the channel [12:28] kodisha: uh oh.. _announcer doesn't un-escape html [12:28] _announcer: Twitter: "@ Teramako it is. I'm Mia and I speak. No node / lang / javascript / vimperator-plugins / trunk / twittperator.js at revision 37876" [ja] -- M. Hanafusa. http://twitter.com/masa8723/status/17567949338 [12:28] hansek has left the channel [12:29] hansek has joined the channel [12:30] tacobreath has joined the channel [12:34] augustl: throw new Error("This type of response MUST NOT have a body."); - what type of response? [12:34] _announcer: Twitter: "@augustl what's missing? I'm gonna work on some soon for streams and http. #node.js" -- Marco Rogers. http://twitter.com/polotek/status/17568290253 [12:34] jashkenas has joined the channel [12:35] Tim_Smart: augustl: You are probably getting a HEAD request or something. [12:35] robinduckett has joined the channel [12:35] augustl: I'm "curl -I"-ing to inspect headers [12:35] augustl: no errors raised when accessing via browser [12:35] augustl: http://gist.github.com/461297 - not getting the error with line 5 commented out [12:36] Tim_Smart: augustl: curl uses HEAD request to inspect headers [12:36] augustl: ah, I see [12:36] Soryu has left the channel [12:36] _announcer: Twitter: "@ Silion server-side development environment with NodeJS see him, spread out in an amazing world does. :-)" [ko] -- A.J. http://twitter.com/andrwj/status/17568431638 [12:37] augustl: I suppose "req" tels me what the request type is? [12:37] robinduckett: augustl sys.puts(sys.inspect(req)); [12:37] augustl: is it a http.ClientRequest or a http.ServerRequest? [12:37] kriszyp has joined the channel [12:37] augustl: robinduckett: isn't it in the documentation? [12:37] robinduckett: sure but you can see it at a glance [12:37] Tim_Smart: mape: Finally got the map converted to raphael for wargamez [12:39] ph^: augustl: serverRequest [12:40] robinduckett: thoughts everyone, what's the best client side JS windowing system for the browser? Click / draggable / maximize / minimize etc [12:40] Dmitry: Tim_Smart: Raphaël 1.4.4 with fix for path issue is out. [12:40] Tim_Smart: Dmitry: Brilliant job! [12:42] DozyPieman has joined the channel [12:43] augustl: I don't know much about http. Is there something other than "end()" I can use that simulates the server suddenly going down mid-request or something like that? I.e. simulating a failed request. [12:44] robinduckett: Are you running a server or a client? [12:44] ph^: what are you trying to achieve? [12:44] ph^: just kill the server, that's a good simulation :) [12:45] robinduckett: yeah [12:45] Tim_Smart: augustl: Maybe response.socket.destroy(); [12:45] augustl: ah [12:45] robinduckett: Ctrl+C :P [12:46] augustl: ph^: true :) I want to be able to run requests after that though, so I can re-test without having to restart the node server [12:46] Tim_Smart: mape: When you are back, this path and code will put the map in the right place https://gist.github.com/0b9f28d168be90a3924a [12:46] augustl: Tim_Smart: nice, seems to work [12:48] Tim_Smart: Cool cool. [12:48] _announcer: Twitter: "Praise node.js, though. http://gist.github.com/461309 for debugging behavior of borked XHR requests." -- August Lilleaas. http://twitter.com/augustl/status/17569087769 [12:52] pgriess has joined the channel [12:54] maushu: Tim_Smart: http://raphaeljs.com/graffle.html I wonder if text goes well inside those shapes. [12:54] brainproxy has joined the channel [12:54] Tim_Smart: maushu: I guess it could... [12:55] teemow has joined the channel [12:55] maushu: It would totally solve all my problems. [12:55] maushu: Like cross-browser and positioning. [12:56] Tim_Smart: maushu: What are you working on? [12:58] devtime has joined the channel [12:58] maushu: Tim_Smart: Javascript hosting. [12:59] maushu: I really need to write a pre-launch landing page. [12:59] Tim_Smart: maushu: Lol. They get to drag around shapes while waiting for deploys? [12:59] maushu: Basically, it goes like this. You create a process, link the web services and libraries you need to that process, code that process and deploy it. [13:00] maushu: Tim_Smart: Nah, the user connects web services using that. [13:01] _announcer: Twitter: "@_mql Wha..that is awesome. I'm now writing a SceneJS file translation service in NodeJS and Connect solves caching+compress "layers"..." -- Lindsay Stanley Kay. http://twitter.com/xeolabs/status/17569903882 [13:01] benoitc has joined the channel [13:02] ryah: ACTION is in euro timezone [13:03] MattJ: ACTION too [13:03] sztanpet: good afternoon to you then [13:03] Tim_Smart: ryah: According to map, you are near NYC :/ [13:03] ryah: im logged in through a server [13:03] Tim_Smart: Oh, good flight? [13:04] dgathright has joined the channel [13:04] ryah: yes [13:06] sechrist has joined the channel [13:07] augustl has left the channel [13:08] jherdman has joined the channel [13:13] markwubben has joined the channel [13:15] davidsklar has joined the channel [13:16] Tim_Smart: raphael is pretty damn awesome :) [13:22] aubergine has joined the channel [13:22] bradleymeck has joined the channel [13:23] bradleymeck: holy heck _utility survived my sleeping +1 for it! [13:23] phoenix24 has joined the channel [13:24] kersny has joined the channel [13:24] Tim_Smart has joined the channel [13:25] maushu: ACTION pokes _utility to death. [13:31] pzich has joined the channel [13:35] Tim_Smart has joined the channel [13:36] kodisha has joined the channel [13:37] benoitc has joined the channel [13:40] davidwalsh has joined the channel [13:41] bpot has joined the channel [13:43] mklappstuhl: is there a simple way to avoid duplicates in an array? (besides iteration and comparison) [13:43] dmshann0n has joined the channel [13:44] robinduckett: in js? [13:44] mklappstuhl: yup [13:45] robinduckett: just check before you add anything to it [13:46] hpoydar has joined the channel [13:46] robinduckett: iteration and comparison is the only way iirc [13:47] mklappstuhl: okay [13:47] robinduckett: the methods in js for array manipulation are limited by number [13:47] robinduckett: http://www.w3schools.com/jsref/jsref_obj_array.asp [13:48] phiggins: Array.prototype.has = function(i){ return this.indexOf(i) >= 0 }; ? [13:48] Tim_Smart: ew, prototype extensions. [13:48] phiggins: i only do them when I'm drunk [13:49] Tim_Smart: Use underscore or something. [13:49] Tim_Smart: phiggins: :D [13:49] matt_c has joined the channel [13:49] phiggins: http://code.google.com/p/dojotype/source/browse/trunk/es3ex-String.js is the bees knees of prototype extensions [13:52] mklappstuhl: Tim_Smart: what would be different with underscrore? isnt underscore just a way to write functional js [13:52] Tim_Smart: mklappstuhl: Yeah, except it is similar to jQuery in the fact that it namespaces everything [13:55] mklappstuhl: http://documentcloud.github.com/underscore/#uniq :) [13:55] phiggins: putting everything on one object isn't 'namespacing'. [13:55] phiggins: it's putting things on an object. [13:56] Tim_Smart: Err that didn't make any sense at all. [13:57] phiggins: var foo = { bar: function(){} } did I "namespace" anything, or just put a bar function on a foo object [13:58] robinduckett: var foo = function(){return {bar: function() {}};}; XD [13:58] blowery: phiggins.no.you.did.not <— i just namespaced you [13:59] robinduckett: com.not.did.you.no.phiggins [13:59] Tim_Smart: Well technically it isn't name-spacing, but you get the idea. [14:04] jlilly has left the channel [14:04] micheil has joined the channel [14:04] joshbuddy has joined the channel [14:06] micheil has joined the channel [14:06] micheil: Howdy' chaps. [14:09] mklappstuhl has joined the channel [14:09] _announcer: Twitter: "My two issues with node.js: 1. The JS implementors, in general, do not know/care about node.js or any use of JS outside of the browser." -- Joshua Ballanco. http://twitter.com/jballanc/status/17574649208 [14:10] Tim_Smart: ^--- That was only one. :p [14:12] micheil: uhh.. what's they on about anyway? [14:13] mitkok has joined the channel [14:14] keeto has joined the channel [14:14] Tim_Smart: micheil: I think he is referring to the V8 implementers aka Google. [14:14] micheil: yeah? [14:14] micheil: node works fine on v8 [14:14] micheil: I'm not sure what they mean by their comment [14:18] zaach has joined the channel [14:22] Tim_Smart1 has joined the channel [14:24] micheil: ryah: btw, nevermind about that email, it was something else causing the messages [14:25] ryah: micheil: ok [14:26] micheil: hmm.. busy week :) [14:26] micheil: when are / were you calling 0.2.00? [14:27] micheil: ryah: ^^ [14:28] brainproxy has joined the channel [14:30] jedschmidt has joined the channel [14:31] _announcer: Twitter: "Tomorrow I'll be there with http://bit.ly/9fhadB # WebWorkersCamp program Node.js, MongoDB, WebSocket ..." [fr] -- Romain Desplanques. http://twitter.com/desplanques/status/17576397288 [14:32] ryah: micheil: i'll bump it soon [14:32] micheil: okay, just checking [14:32] ryah: working on getting a new website up first [14:33] micheil: wasn't sure if it'd be called while I was away or anything like that [14:33] ryah: but that might wait.. [14:33] micheil: need a hand on the website? [14:33] ryah: i think we're good [14:33] micheil: because after 0.2.00, I'll finish up those patches for chown & chgrp [14:33] micheil: okay [14:35] kodisha has joined the channel [14:35] joshholt_ has joined the channel [14:37] ryah: ACTION is working on the long stack traces [14:40] bradleymeck: boom goes _utility [14:40] brainproxy has joined the channel [14:41] peburrows has joined the channel [14:43] Yuffster has joined the channel [14:44] ajpiano has joined the channel [14:46] phiggins has joined the channel [14:46] benoitc has joined the channel [14:47] martoche has joined the channel [14:48] _utility has joined the channel [14:48] bradleymeck: wonder why _utility sometimes fails on entering a room... [14:49] _frankie has joined the channel [14:50] bradleymeck: !translate Japanese testing this out [14:50] _utility: これをテスト [14:52] richardhodgson has joined the channel [15:02] maushu: Moonspeak?! [15:03] bradleymeck: O-o [15:03] bradleymeck: got !translate and !tweet-translate (tolanguage | language'-'tolanguage) text, working [15:04] peburrows: quite this morning [15:04] _announcer: Twitter: "Finally a web server in Javascript stable http://www.nodejs.org/" [fr] -- HPJ Solutions. http://twitter.com/hpjsolutions/status/17578953372 [15:05] bradleymeck: yub [15:06] bradleymeck: trying to ramp up stuff for knockout so i can release frameworks that should aid some for ppl who need em [15:07] tjholowaychuk has joined the channel [15:07] figital has joined the channel [15:10] bradleymeck: anyone have a gui for node working yet? [15:10] micheil: does a commandline one do? [15:10] micheil: there's a binding for ncurses [15:10] bradleymeck: no, i have a CLI :( [15:11] norfold: faye kicks f*cking ass [15:11] norfold: very nice module [15:11] mklappstuhl: can anyone tell me what i'm doing wrong here http://pastie.org/1028206 [15:13] peburrows: mklappstuhl: require('./vendor/underscore/underscore'); _.uniq(requestedFiles, true); [15:14] mklappstuhl: norfold: did you take a look at socket.io [15:14] mklappstuhl: peburrows: so not us = require … [15:15] peburrows: mklappstuhl: right [15:15] peburrows: mklappstuhl: which will give you the "_" object [15:15] norfold: mklappstuhl: yes, I took a look at socket.io, I actually tried it about 6-7 times, I guess I'm not smart enough to use it, it just doesn't work over here [15:16] nostromo has joined the channel [15:16] norfold: mklappstuhl: but I really tried, a lot of times [15:16] norfold: mklappstuhl: and faye worked just like that *snap* [15:17] nostromo: a question, how can I make debug work in node? [15:17] nostromo: export NODE_DEBUG=4; ./node does not make for any http debug output, and I'm puzzled [15:17] _announcer: Twitter: "experimenting with node.js and WebSocket" -- andydust. http://twitter.com/andydust/status/17580033026 [15:17] martoche has left the channel [15:17] brainproxy has joined the channel [15:18] softdrink has joined the channel [15:18] mklappstuhl: norfold: for me it works (very basic tasks) – just decided to use websockets since there are going to be the standard i think [15:19] nostromo: so, anyody got the "debug" function actually output debug information? [15:20] norfold: mklappstuhl: I am going to stick to faye(which is a comet implementation for node.js) [15:20] norfold: mklappstuhl: maybe websockets will be the standards ?I do not know ... [15:20] Gruni has joined the channel [15:20] norfold: but comet is pretty popular nowadays isn't it ?? [15:21] peburrows: nostromo: not exactly what you're asking, but you could try this: http://github.com/Connorhd/node_debug [15:22] bpot has joined the channel [15:23] nostromo: I can't understand why export NODE_DEBUG=4 does not trigger debug output in http [15:25] tomc has joined the channel [15:27] tjholowaychuk: ryah: any word on process.daemonize() or similar? [15:27] robinduckett: should be ,fork :P [15:28] robinduckett: *.fork [15:28] _announcer: Twitter: "@jsjohnst These points were an effort to understand what my gut is telling me. I like JS and have been following node.js for over a year..." -- Joshua Ballanco. http://twitter.com/jballanc/status/17581056661 [15:28] fermion has joined the channel [15:28] tjholowaychuk: robinduckett: I think we wanted something that hid internals so that windows could implement something different behind the scenes [15:29] robinduckett: Windows: The death of Node [15:29] aurynn: is there an object method that gets called, or an event fired, when an object goes out of scope/is destroyed in Node? [15:29] norfold: when is node going to be ported on Windows btw ? [15:29] norfold: robinduckett: ? [15:29] norfold: ryah: ? [15:29] robinduckett: it's already on cygwin [15:30] bradleymeck: aurynn not w/o some c++ loving [15:30] khug has joined the channel [15:30] bradleymeck: destructors arent guaranteed either [15:31] _announcer: Twitter: "@jsjohnst ...but something just seems off. I just can't seem to get as excited as everyone else. Maybe the node.js knockout will help ;-)" -- Joshua Ballanco. http://twitter.com/jballanc/status/17581439131 [15:31] aurynn: hmm. [15:32] ryah: norfold: ? [15:32] ryah: norfold: ask robinduckett said [15:32] norfold: ryah: node on windows, when ? [15:32] ryah: s/k// [15:32] ryah: norfold: cygwin - now. mingw - when someone does it. [15:33] bradleymeck: spidermonkey's c api confuses me [15:35] aurynn: hm. So I want to detect when my event callback has been completed. [15:35] norfold: bradleymeck: how about rhinojs ? [15:35] norfold: bradleymeck: or even better, just fire up firefox and inject js code at runtime with selenium, get results etc .. [15:35] bradleymeck: rhinojs uses java and breaks my c++ needs [15:35] norfold: bradleymeck: like firefox+selenium is the closest you can get .. [15:35] norfold: ryah: ah I understand [15:36] Soryu has joined the channel [15:37] aurynn: Calling connectionhandle.release() at the end of every callback works, but seems.. wrong. [15:39] aurynn: hm. Maybe it's not, since you should be calling .commit() or .rollback() regardless.. [15:40] aurynn: so a .release for a select-only should be fine. [15:41] phoenix24 has joined the channel [15:42] Soryu has left the channel [15:43] kersny has joined the channel [15:43] kristate has joined the channel [15:45] cloudhead has joined the channel [15:46] aubergine has joined the channel [15:48] tjholowaychuk: ACTION is the only one that wants process.daemonize() :( [15:49] tjholowaychuk: ACTION likes coffee [15:49] TomY: I want that [15:49] TomY: :-) [15:49] pquerna: tjholowaychuk: i want [15:50] aurynn: doesn't node have fork()? [15:50] tjholowaychuk: nope [15:50] tjholowaychuk: at least not that i know [15:53] tjholowaychuk: i think the idea is to encapsulate it into a method not explicitly named fork() so it *could* be portable [15:53] aurynn: well, there's child process magic [15:53] aurynn: so you could probably pull it off [15:54] _frankie has joined the channel [15:54] tjholowaychuk: yeah i guess you could exec yourself or something, hacky [15:55] tjholowaychuk: it uses vfork() though anyways is that even portable? [15:55] pquerna: the daemonize patch looked fine [15:56] pquerna: its the right approach, it does what most people want, detaching from the tty [15:56] pquerna: forking and multi-process maangement should be a different thing [15:57] tjholowaychuk: yeah thats all I need, the rest of the process you can do in node for the most part aside from redirecting the std fds and setsid() possibly something else i forget [15:57] steadicat has joined the channel [15:57] tjholowaychuk: maybe it should be process.detach() [15:58] pandark_ has joined the channel [15:59] matt_c has joined the channel [16:01] mape: hmm [16:02] bradleymeck: ACTION ponders mape [16:03] camilo has joined the channel [16:03] lorewarden has joined the channel [16:07] mape: tjholowaychuk: you are in sf right? [16:07] tjholowaychuk: mape: nope [16:07] tjholowaychuk: canada [16:07] mape: oh [16:08] tjholowaychuk: howcome [16:08] mape: Nah just trying to calibrate this map [16:08] doodkin has joined the channel [16:09] tjholowaychuk: ah :) [16:09] tjholowaychuk: im in victoria bc so it should be the lower west coast of canada [16:09] bradleymeck: anyone got IRC DCC lib lying about? [16:09] tjholowaychuk: my pos looks right on the map [16:14] tjholowaychuk: is twitter still ruby its crashing like a bitch [16:14] aurynn: Asynch is hard. [16:15] bradleymeck: twitter = failwhale [16:15] aurynn: my mental model is shot.. [16:15] bradleymeck: aurynn use a callback library for help [16:15] aurynn: bradleymeck, I have to have a working mental model on how flow will work [16:16] tjholowaychuk: aurynn: lots and lots of callbacks :D [16:16] aurynn: hehehe [16:16] aurynn: yes, but what will pre-empt what? :) [16:18] _announcer: Twitter: "http://tinyurl.com/3xc57yo asciimo - create awesome ascii art with javascript! works in the browser or node.js" -- bunny_car. http://twitter.com/bunny_car/status/17584584418 [16:18] bradleymeck: for managing that id recommend http://github.com/creationix/step , lets you have a done w/ all groups of callbacks callback XD [16:18] ben_alman: is there any way for node to spawn other processes, like for urls matching /\.php$/ run the php interpreter, etc? is this a retarded idea? [16:19] tjholowaychuk: bradleymeck: I wouldn't tell people to use stuff like that first if they are learning node [16:19] tjholowaychuk: hell I still dont use anything like that [16:19] bradleymeck: but but :( [16:19] tjholowaychuk: but it gets in the way of learning I think [16:19] JimBastard has joined the channel [16:19] marshall_law has joined the channel [16:19] JimBastard: ALL HAIL KING NEPTUNE AND HIS WATER BREATHERS [16:20] tjholowaychuk: hahaha [16:20] mscdex: you said that yesterday [16:20] bradleymeck: ben_alman, yes but it wont act like an apache module [16:20] mscdex: we need fresh material Jim [16:20] ben_alman: bradleymeck: what does that mean? [16:20] bradleymeck: $_POST etc wont be populated the same [16:20] ben_alman: meaning it won't add headers etc [16:20] ben_alman: ah makes sense [16:20] JimBastard: im so glad ben_alman is in here now [16:21] ben_alman: so if i run haproxy up front, then node behind that, when i want to exec php or perl stuff, what do i run that under? apache? lighty? nginx? something else? [16:21] ben_alman: what do people recommend? [16:22] JimBastard: ben_alman: nginx with proxy_pass? [16:22] bradleymeck: ben http://nodejs.org/api.html#child-processes-83 [16:23] mscdex: hmm that reminds me.. [16:23] bradleymeck: prolly what jim says is best idea when doing it on all .php or something similair [16:23] ben_alman: where does nginx fit in there [16:23] ben_alman: is that the 1st level like haproxy? [16:24] ben_alman: (someone here recommended haproxy the other day) [16:24] mikeal has joined the channel [16:24] mscdex: haproxy ftw [16:24] TheEnd2012 has joined the channel [16:25] ben_alman: why would i use haproxy instead of just nginx? [16:25] bradleymeck: generally the proxy will be before node, idk about level in this context [16:25] ben_alman: i'm a little confused about what app does what [16:25] ben_alman: i know what node does. [16:25] JimBastard: ben_alman: i can help, in standup brb [16:25] mscdex: haproxy is purely a proxy only [16:25] mscdex: it can't serve files [16:26] ben_alman: i just don't know how best to integrate node, which will be serving the majority of the content of the site, moving forward, with legacy php/perl stuff [16:26] ben_alman: mscdex: ok. [16:26] aurynn: so, if I return from an emitter, where does it go? [16:26] ben_alman: now, nginx seems to be somewhat of a jack-of-all-trades [16:26] mscdex: nginx and apache are webservers that can also proxy requests, but meh [16:26] ben_alman: ok [16:26] mscdex: they have their problems with it [16:26] bradleymeck: aurynn back to the event loop [16:26] ben_alman: so you think haproxy up front, then node and nginx+php/perl under that [16:26] mscdex: that's what i do [16:27] aurynn: bradleymeck, the returned $whatever goes to the event loop? [16:27] mscdex: haproxy to node or apache depending on the request [16:27] bradleymeck: return value from an emitter's callback is ignored [16:27] ben_alman: mscdex: can you post a sample haproxy config somewhere? [16:27] ben_alman: just so i can get an idea of what it's like? [16:27] mscdex: sure [16:27] mscdex: one sec [16:27] ben_alman: thx u [16:27] shimondoodkin: http://wiki.github.com/shimondoodkin/nodejs-autorestart/nodejs-with-haproxy [16:28] aurynn: bradleymeck, that's what I was looking for, thanks :) [16:28] ben_alman: awesome [16:29] shimondoodkin: why obj.subfunc.call(newscope) might not work? in subfunc it still return the global scope in this [16:31] mscdex: ben_alman: http://gist.github.com/461583 [16:31] bradleymeck: rephrase that shimondodkin, or a gist/paste? [16:31] ben_alman: mscdex: how does it know which requests go to which backend [16:31] ben_alman: nm i see the /node [16:31] mscdex: ben_alman: look at the bottom of the frontend section [16:31] mscdex: heh [16:31] mscdex: yeha [16:32] mscdex: *yeah [16:32] ben_alman: can you use regex for matching? [16:32] shimondoodkin: http://github.com/shimondoodkin/nodejs-mongodb-app/blob/master/app_skeleton.js line 625 , lines 620 do work [16:32] mscdex: ben_alman: the haproxy reference doc has the other methods you can use for checking a request [16:32] ben_alman: ok, awesome [16:32] mscdex: ben_alman: i believe so, but it may be something other than path_beg [16:32] ben_alman: sure [16:33] ben_alman: i get it [16:33] admc_ has joined the channel [16:33] admc has joined the channel [16:33] shimondoodkin: in haproxy the matches called 'acls' it is section 7 in the manual [16:33] ben_alman: cool [16:33] ben_alman: i'll read the manual.. i'm just trying to get a general heads' up [16:34] mscdex: yep np [16:34] ben_alman: i want to make sure i'm going down the right path [16:34] b_erb has joined the channel [16:34] shimondoodkin: maybe it is beter to read the links on my page about ha proxy it seemed to me easyier yesterday [16:35] ben_alman: so in making all the configurations and app installs to my new ubuntu vps.. is there any way i can do everything so all i need to do is backup one, single, /foo folder? [16:35] bradleymeck: shimondoddkin, its not page.model.list? [16:35] ben_alman: like, i'd love to have everything in /srv, all my config files, etc, for all my apps just so it's easier to backup [16:35] ben_alman: is this crazy? normal? stupid? [16:35] JimBastard: ben_alman: sup [16:36] JimBastard: i would setup nginx on port 80 as your "front" the you can route requests via proxy_pass to locally running services running on non port 80 ports [16:36] JimBastard: so node can run on 8000 [16:36] JimBastard: php on 8001 [16:36] JimBastard: etc [16:36] JimBastard: and then you just route the requests with nginx.conf [16:36] ben_alman: wouldn't php just be running through nginx? [16:36] JimBastard: dunno if that helps [16:36] JimBastard: yep [16:36] JimBastard: is that no good? [16:36] ben_alman: so it doesn't need a port, right? [16:36] JimBastard: if you are running mod_php or whatever [16:36] JimBastard: i dont do php [16:36] ben_alman: nginx gets a port, and node gets a port [16:36] JimBastard: in nginx [16:36] shimondoodkin: the list function is the template from templates\default\list.html [16:37] softdrink: ACTION kicks php in the face [16:37] ben_alman: i've never used nginx before [16:37] JimBastard: its pretty easy [16:37] Xavura has joined the channel [16:37] Xavura has joined the channel [16:37] shimondoodkin: it is loaded on line 408 in app sekleton,js [16:38] shimondoodkin: doubletemplate.loadtemplate return afunction that return text [16:38] micheil: gee.. twitter need to redo their server in node! They're constantly over capacity atm. [16:38] mscdex: if you use nginx instead of haproxy, be aware that nginx doesn't work well when proxying websocket connections among other things [16:39] micheil: haproxy, you say? [16:39] micheil: does haproxy do fileserving? [16:39] mscdex: nope, purely a proxy [16:39] tjholowaychuk: micheil: I waas wondering if it was done in erlang or something now, or still ruby [16:39] ehaas has joined the channel [16:39] shimondoodkin: nginx is serving files best , or node js files from memmory [16:39] micheil: yeah, it's ruby + erlang + scala or something [16:40] ehaas has joined the channel [16:41] ben_alman: should i install the default haproxy 1.3.22-1 through aptitude or get a newer 1.4.x from somewhere? [16:41] bradleymeck: i dont see whats wrong on glance, unless list has a overridden .call [16:42] mscdex: i think i ended up compiling and installing the latest stable version, 1.4.x [16:42] micheil: ben_alman: I'd go with 1.4.X [16:42] shimondoodkin: haproxy 1.2+ is good [16:42] texodus has joined the channel [16:43] JimBastard: hey texodus [16:43] lorewarden has joined the channel [16:44] javajunky has joined the channel [16:44] shimondoodkin: JimB .. me too [16:44] voodootikigod_ has joined the channel [16:44] JimBastard: hey shimondoodkin sup [16:44] ColloquySucks has joined the channel [16:45] voodootikigod_: jedschmidt: yer famous [16:45] shimondoodkin: i mean bradleymeck>: mew too [16:45] texodus: yo [16:45] shimondoodkin: i mean bradleymeck: me too [16:45] bradleymeck: ya [16:46] JimBastard: what did jedschmidt do now [16:46] JimBastard: all hail voodootikigod_ [16:46] voodootikigod_: haha [16:46] Xavura has joined the channel [16:46] shimondoodkin: JimBastard: yey everything fine [16:46] JimBastard: voodootikigod_: i hope my jsconf video has one of the rocky montage scenes spliced in [16:47] voodootikigod_: did you request it with the camera guys [16:47] JimBastard: something like that lol [16:47] JimBastard: i said random footage and old school rap songs [16:47] robinduckett: YOU BASTARD [16:47] robinduckett: :D [16:47] phiggins: i've got a hot new howling-wolf/american flag shirt I'm ready to rock at jsconf [16:47] Xavura: This says it works with node 0.1.98, anyone know if it works with 0.1.99 too? http://github.com/miksago/node-websocket-server [16:48] JimBastard: +1 phiggins [16:48] JimBastard: i forget is micheil miksago? [16:48] mscdex: yup [16:48] micheil: phiggins: btw, what's with the dojo tees. [16:48] micheil: yeah [16:48] JimBastard: micheil: you see what Xavura said [16:49] micheil: ohh [16:49] micheil: totally missed that [16:49] micheil: Xavura: I haven't tested [16:49] Xavura: I'll try it [16:49] micheil: 0.1.99 came out the last two weeks while I've been away, I haven't had time to compile & fully test on it [16:49] jacoblyles has joined the channel [16:49] micheil: (still really gotta write the test suits for it) [16:50] mscdex: 0.1.99 is old already ;-P [16:50] shimondoodkin: bradleymeck: here is the result http://bechick.co.il/mainpage/list.jsp [16:50] micheil: mscdex: :P [16:51] b_erb: bah, nginx really can't handle PUT/POST without content-length? [16:52] shimondoodkin: b_erb, i dont think so, it has buffering [16:53] phiggins: micheil: new logo, not sure we've made any yet [16:53] JimBastard: mape: http://wargamez.mape.me/ randomly crashes chrome for me [16:53] b_erb: shimondoodkin: there is even a module for this. http://wiki.nginx.org/NginxHttpChunkinModule – it works by intercepting the 411 response(!). that's really bad [16:53] shimondoodkin: ohh [16:53] micheil: phiggins: ah, okay, it was more a "where can I get one?" [16:54] mape: JimBastard: did you do something to it? [16:54] micheil: we should really get some node.js tee shirts [16:54] micheil: *t-shirts [16:55] mscdex: node.js logo on the front, and "Are you in the node?" on the back [16:55] JimBastard: mape: naah, i just leave it open in a tab and every once and while when i go back to check in on i see the chrome unhappy face and a crashed tab [16:55] mape: Hmm k [16:55] mscdex: emo chrome [16:56] TobiasFar has joined the channel [16:58] cloudhead has joined the channel [16:59] micheil: hey cloudhead [17:00] micheil: hmm.. a 55+minute song... maybe not. [17:00] mscdex: the entire cd is one file? heh [17:03] marshall_law has joined the channel [17:04] voodootikigod_: anyone know the licensing on the node.js logo? [17:04] ben_alman: what's the best way to install node? [17:04] voodootikigod_: ryah: do we just need your perms to print it? [17:04] phiggins: micheil: we don't sell them or anything, contributors and commiters get them for sure, then the rest go out to random folks at whatever events. going to jsconf.eu? [17:05] ben_alman: git checkout + make or something? [17:05] jacoblyles has joined the channel [17:05] voodootikigod_: ben_alman: i think you wrote a plugin for it [17:05] ben_alman: phiggins: can i have a dojo shirt? i'm 3xl [17:05] voodootikigod_: micheil: you have to be able to out drink phiggins [17:05] ben_alman: heh [17:05] voodootikigod_: ben_alman: you on windows/mac/linux? [17:05] ColloquySucks has joined the channel [17:05] ben_alman: voodootikigod_: ubunto 10.04 server [17:05] phiggins: they are color coded sorta, we could make a color for "i can outdrink the lead" [17:06] voodootikigod_: git clone [17:06] voodootikigod_: ./configure [17:06] voodootikigod_: make [17:06] voodootikigod_: sudo make install [17:06] ben_alman: voodootikigod_: i'm literally just setting up a new vps and learning node [17:06] ben_alman: ok [17:06] voodootikigod_: make sure you have build_essentials installed [17:06] ben_alman: what is that [17:06] ben_alman: a package? [17:06] voodootikigod_: yea [17:06] voodootikigod_: sudo apt-get install build_essential [17:07] ben_alman: it's build-essential [17:07] voodootikigod_: yea [17:07] voodootikigod_: sorry [17:07] ben_alman: np getting it [17:07] voodootikigod_: http://remysharp.com/2010/02/14/slicehost-nodejs-websockets/ [17:07] ben_alman: this is a fresh install so i'm getting everything [17:07] voodootikigod_: git-core [17:07] voodootikigod_: as well [17:07] voodootikigod_: so you have git [17:07] ben_alman: i have that [17:08] ben_alman: i've got haproxy, nginx, git-core, and build-essential so far [17:08] shimondoodkin: ha ha found how to debug a page.list.call problem by sys.puts(sys.inspect(page.list.toString())); [17:08] ColloquySucks: hmm [17:09] ColloquySucks has left the channel [17:11] ben_alman: voodootikigod_: should i do git checkout origin/stable first? [17:11] x_or has joined the channel [17:11] ColloquySucks has joined the channel [17:11] voodootikigod_: up to you [17:11] voodootikigod_: you can probably run edge [17:11] liucougar_ has joined the channel [17:11] ryanmcgrath: Yeeaaahhh running edge [17:11] voodootikigod_: sudo git checkout origin master [17:13] ColloquySucks has joined the channel [17:13] tjholowaychuk has joined the channel [17:13] Xavura has joined the channel [17:13] Xavura: http://wargamez.mape.me/ is sweet. [17:14] richardhodgson has left the channel [17:14] micheil: phiggins: probably not, unless uxebu fly me :P [17:15] micheil: voodootikigod: ooh.. I don't know about that. maybe I'd out drink him on age? :P [17:15] creationix has joined the channel [17:15] rauchg_ has joined the channel [17:16] micheil: Xavura: how'd that testing go? [17:16] Xavura: micheil: Just about to start, had a few other things to do, I'll let you know [17:17] micheil: ah, okay [17:19] derferman has joined the channel [17:20] _announcer: Twitter: "Wow. Building bindings for node.js really isn't too hard. I haven't delved into the fine points of I/O yet, though. Go ZeroMQ!" -- Aria Stewart. http://twitter.com/aredridel/status/17586758619 [17:21] technoweenie has joined the channel [17:21] [[zz]] has joined the channel [17:22] micheil: hey technoweenie [17:23] technoweenie: micheil: sup [17:23] micheil: not much [17:23] micheil: just chillin' after a long week [17:24] micheil: erm. long two weeks [17:24] micheil: technoweenie: did you end up finding the mem leak? [17:24] technoweenie: yea, it was node. its better on master [17:24] micheil: ah, okay. good stuff :D [17:25] micheil: man... I'm still running.. 0.1.97? [17:25] micheil: 0.1.98, rather [17:27] nefD: hah.. wargamez.. pwnage [17:27] technoweenie: yea, even leaked on 1.99 [17:27] technoweenie: micheil: test script: https://gist.github.com/b922126a11aa0b1ed78b [17:28] micheil: gee.. damn. [17:28] micheil: hmm.. compiling node is really flogging both my processes [17:29] phiggins: thats because there is so much win involved. [17:29] tjholowaychuk: anyone know if later versions of ecma support ||= ? getting so sick of this.foo = this.foo || {} [17:29] micheil: can someone verify this test error? [17:29] micheil: Path: message/undefined_reference_in_new_context [17:29] micheil: on node head [17:30] sh1mmer has joined the channel [17:30] mostlygeek has joined the channel [17:30] softdrink: anyone hiring? [17:30] micheil: phiggins: so, with age in consideration, is it that you can drink me under the table, or vica verse? [17:30] micheil: softdrink: sadly not. [17:30] nostromo has joined the channel [17:30] micheil: phiggins: :P [17:30] phiggins: micheil: how old are you? [17:31] micheil: 4 months' till the australian legal age. [17:31] phiggins: oh yah i'd probably win based on experience alone [17:31] micheil: yeah, probably. [17:31] phiggins: so no specially-colored-shirt for you [17:31] micheil: phiggins: it's all in teh technique! [17:32] phiggins: slow and steady. very very steady [17:32] mape: no colored shirts? [17:32] micheil: phiggins: I'd be cool with just a plain black one :P [17:32] phiggins: there are blue and black sofar [17:32] ben_alman: you can call the puke a color [17:32] phiggins: some ugly random colors for various beer() events [17:32] micheil: phiggins: oh, I thought you meant green or yellow or something. [17:32] phiggins: i seriously have like 15 different dojo shirts [17:33] micheil: I've got about.. 100 dojo stickers lying about [17:33] micheil: gotta get to sydney to set them free. [17:33] phiggins: all the old logo [17:33] micheil: true ture [17:33] micheil: *true [17:33] micheil: but it's dojo none the less. [17:36] texodus has joined the channel [17:36] saikat has joined the channel [17:36] ben_alman: phiggins: you should create shirts and stickers that just say "JavaScript" on them, and tell everyone they're the new dojo shirts [17:36] micheil: phiggins: oh, btw, I will one day make it to a jsconf. [17:36] ben_alman: it would serve your mantra [17:37] _announcer: Twitter: "Testing node.js" -- Paulino Ochoa. http://twitter.com/pau_ochoa/status/17587744984 [17:37] phiggins: that would be even worse marketing than we currently do [17:37] ben_alman: i didn't say it would be good marketing [17:37] phiggins: i've got to eat man. [17:37] creationix: phiggins: nah, just put ECMA on them [17:37] ben_alman: did phiggins just come out? [17:37] phiggins: ecma4eva [17:38] creationix: lol [17:38] aubergine has joined the channel [17:38] phiggins: though that includes flash sorta [17:38] ben_alman: i've been watching too much six feet under i think [17:38] creationix: I just want a sencha tshirt, we've got a cool logo now ;) [17:39] ben_alman: big letters: JavaScript, small letters underneath: brought to you by dojo [17:39] creationix: but a node.js tshirt would be cool too [17:39] creationix: tjholowaychuk: sup [17:40] TheEnd2012 has joined the channel [17:42] tjholowaychuk: creationix: eyyy nm [17:42] creationix: tjholowaychuk: I was wanting to add a custom backend to the session middleware [17:42] creationix: but it looks overcomplicated [17:42] sh1mmer has joined the channel [17:42] creationix: it was more than I could handle at 3:30 am at least [17:43] tjholowaychuk: haha ya i hear you. i slept like shit last night my brain is dead [17:44] niklasfi has joined the channel [17:48] stevendavie has joined the channel [17:49] tilgovi has joined the channel [17:49] TheEnd2012 has joined the channel [17:52] jbrantly has joined the channel [17:52] voodootikigod_: tjholowaychuk: with connect are you going to continue dev on express? [17:52] voodootikigod_: or just go all connect [17:52] voodootikigod_: ? [17:52] tjholowaychuk: express will run on connect actually [17:52] tjholowaychuk: whenever I have time lol [17:54] voodootikigod_: haha [17:54] voodootikigod_: time [17:54] voodootikigod_: isnt that a beautiful thing we never get [17:54] voodootikigod_: I hear myths of it [17:54] voodootikigod_: tales of wonder [17:54] creationix: voodootikigod: the router middleware in connect has most of express's functinality [17:55] creationix: but yeah, express apps would need to be heavily modified I'll bet [17:55] voodootikigod_: was noticing htat [17:55] voodootikigod_: just didn't know if you were going to reformulate the rest over [17:55] voodootikigod_: or start a new [17:56] tjholowaychuk: yeah the new express api will work with router, but it will tame down the changes that would be required [17:57] voodootikigod_: but the long term goal would be to have express as a sub project of connect [17:57] tjholowaychuk: ill write a migration guide though [17:57] ollie has joined the channel [17:57] benoitc has joined the channel [17:57] voodootikigod_: not a disjoint project [17:57] benburkert has joined the channel [17:57] rictic has joined the channel [17:57] tjholowaychuk: might have time soon-ish now that im done jade [17:58] tjholowaychuk: but i have yet even more secret projects on the go [17:58] marshall_law has joined the channel [17:58] benoitc has joined the channel [17:58] voodootikigod_: still need to look into jade [17:58] voodootikigod_: WOO HOO [17:58] ben_alman: ACTION is out of the loop [17:58] voodootikigod_: seriously man [17:58] voodootikigod_: do you ever sleep [17:58] voodootikigod_: you are the ben_alman of node.js [17:58] voodootikigod_: :) [17:58] jakehow has joined the channel [17:58] ben_alman: rofl [17:58] ben_alman: that's scary [17:58] tjholowaychuk: it was basically just a rewrite of my haml.js implementation but i took that effort to change the syntax a bit to what i wanted [17:58] tjholowaychuk: and it has REAL error reporting OMG [17:58] tjholowaychuk: in a hacky way [17:58] tjholowaychuk: but it works [17:59] voodootikigod_: do you have a basic diff from haml syntax [17:59] khug has joined the channel [17:59] voodootikigod_: from my quick glance it looked almost exactly the same [17:59] voodootikigod_: ? [17:59] bkz0 has joined the channel [17:59] tjholowaychuk: almost yeah, just no %tag prefix, and text blocks have the pipe margin [18:00] maushu has joined the channel [18:00] tjholowaychuk: some people will hate that change some will like it. personally I dont write tons of copy in haml so I prefer this [18:01] tjholowaychuk: and I think it makes arbitrary inline js / css / text look a bit cleaner [18:01] voodootikigod_: cool [18:01] voodootikigod_: will check it out more [18:01] voodootikigod_: btw have you tried deploying a connect app to heroku? [18:01] creationix: voodootikigod: yeah, connect runs on heroki [18:01] creationix: heroku [18:01] voodootikigod_: cool [18:02] voodootikigod_: bang! [18:02] voodootikigod_: its like 1 2 punch of awesome today [18:02] tjholowaychuk: i have but my app requires node-discount so it cant compile obviously haha so i need to use showdown or something [18:02] _announcer: Twitter: "Here I am sitting and wondering, what would rewrite the server part of his game, the Erlang or node.js. .. Although coin tossing." [ru] -- Devgru. http://twitter.com/Devgru/status/17589290384 [18:02] creationix: voodootikigod: you just need this adaptor http://github.com/creationix/sousaball/blob/master/server.js [18:02] voodootikigod_: awesome thanks creationix [18:03] creationix: I had updated my pure-js psotgres driver just for heroku [18:03] creationix: it's works as long as load isn't high [18:03] creationix: ACTION should probably update sousaball to the new connect api [18:03] voodootikigod_: using couch [18:03] creationix: couch is great [18:04] voodootikigod_: so no need for postrgres [18:04] creationix: voodootikigod_: you should check out nStore some time ;) [18:04] JimBastard: hey does anyone have 3 minutes to test this project in node and the browser? im about to do social media push, would like sanity check >.< [18:04] JimBastard: http://github.com/Marak/translate.js.git [18:04] micheil: hmm.. that's always weird when music starts playing.. and then five minutes later you realise that you left your music playing. [18:04] Sembiance: :) [18:04] JimBastard: http://github.com/marak/translate.js/ [18:04] JimBastard: should take < 3 mins to clone and run node test and browser test [18:04] JimBastard: ill give you +10 internet dollars [18:05] voodootikigod_: creationix: will do [18:05] creationix: JimBastard: works for me [18:05] creationix: now where [18:05] JimBastard: thanks creationix , you rock! [18:05] creationix: 's my money [18:05] creationix: :D [18:05] JimBastard: ACTION sends creationix 10 internet dollars [18:06] Xavura: Seems to work good micheil [18:06] JimBastard: don't ask me how to redeem them, ive been trying to figure that part out for years [18:06] micheil: Xavura: that's good :D [18:06] creationix: JimBastard: How come I get Quiero tacos por favor for english in the demo [18:06] voodootikigod_: btw [18:06] voodootikigod_: connect [18:06] bkz0: ben_alman test [18:06] voodootikigod_: goingto be under the commercial licensing stuff of extjs [18:06] voodootikigod_: or foss? [18:06] ben_alman: hi [18:07] creationix: JimBastard: http://pastie.org/1028475 [18:07] micheil: is anyone getting any tests failing under current HEAD? [18:07] creationix: voodootikigod_: connect will always be MIT [18:07] bkz0: just wanted to test the wargamez @ map me [18:07] voodootikigod_: cool [18:07] ben_alman: i don't know what that means, but cool [18:07] creationix: voodootikigod_: we may sell some server stuff, but it will be on top of connect [18:07] creationix: still not sure about that part [18:07] voodootikigod_: cool [18:07] bkz0: ben_alman: fyi: http://wargamez.mape.me/ [18:07] zomgbie has joined the channel [18:07] voodootikigod_: i always fear the adoption problem [18:08] voodootikigod_: like with sencha [18:08] voodootikigod_: i wanna use it [18:08] voodootikigod_: but dont feel liek busting my ass writing code [18:08] ben_alman: test [18:08] voodootikigod_: only to have to buy a license later [18:08] voodootikigod_: wtf [18:08] ben_alman: that's sexy. [18:08] JimBastard: creationix: the index.html file worked too? [18:08] creationix: well, sencha is a lot safer now [18:08] creationix: JimBastard: as far as I can tell [18:08] creationix: it translated something for me [18:08] voodootikigod_: did they announce the commercial stuff [18:08] voodootikigod_: ? [18:08] JimBastard: thanks again [18:08] voodootikigod_: creationix: http://www.sencha.com/products/touch/license.php [18:08] voodootikigod_: still unknown [18:08] mape: So anyone good with SVG? [18:09] creationix: voodootikigod_: are you talking about the new sencha touch? [18:09] voodootikigod_: yea [18:09] voodootikigod_: sorry [18:09] FliPPeh_ has joined the channel [18:09] creationix: voodootikigod_: yeah, it will probably end up dual licensed like QT [18:09] creationix: but the GPL version will stay [18:09] voodootikigod_: now thats hawt [18:09] voodootikigod_: ok [18:09] voodootikigod_: cool [18:09] voodootikigod_: well not hot [18:10] roger_raymond has joined the channel [18:10] FliPPeh_: http://wargamez.mape.me/ - This is... interesting! [18:10] voodootikigod_: i just wish there was some definition [18:10] roger_raymond: indeed [18:10] creationix: voodootikigod_: sencha doesn't like charging the individual developers, it's the large companies we try to sell to [18:10] mape: FliPPeh_: :) [18:10] creationix: but if it's licensed MIT people will stel it [18:10] JimBastard: wait [18:10] creationix: *steal [18:10] JimBastard: people pay for software? [18:10] JimBastard: i think i have the greatest idea ever! [18:10] creationix: JimBastard: some people won't touch software unless they can pay for it [18:10] mape: creationix: How can you steal something that is MIT? :) [18:10] voodootikigod_: by people you mean JimBastard [18:10] creationix: it's strange, I know [18:11] FliPPeh_: JimBastard: SOME people pay for it :) [18:11] mtodd has joined the channel [18:11] creationix: mape: like take it, rebrand it, and sell it as their own thing (without honoring even the mit clauses) [18:11] roger_raymond has left the channel [18:12] mape: isn't that pretty much what MIT says? [18:12] creationix: sortof, but with MIT you can't close source it and call it your own [18:12] mape: creationix: hmm k [18:12] creationix: MIT actually isn't a very good license legally speaking [18:13] ben_alman: if it's licensed mit, it's not considered stealing if people use it under the mit license [18:13] creationix: but I still use it for everything [18:13] DTrejo__ has joined the channel [18:13] DTrejo__: hello [18:13] JimBastard: so will one of you guys pay me for my software? [18:13] JimBastard: where can i find these "people" that will "pay" [18:13] phiggins: bsd ftw. [18:13] DTrejo__: Is there a way to run my server and so it serves the latest version of my html and css files? [18:13] mape: JimBastard: not if it is stolen [18:13] creationix: ben_alman: yea, as long as they follow the license [18:13] phiggins: JimBastard: usually "enterprise" [18:13] ben_alman: JimBastard: beg for donations [18:13] ben_alman: creationix: well, that's the point [18:14] ben_alman: if someone wants to steal it, they will regardless of the license [18:14] ben_alman: you're just talking about legal recourse [18:14] aaron___ has joined the channel [18:14] creationix: yeah, like I said, I personally use MIT for everything [18:14] khug has joined the channel [18:14] creationix: I don't like playing the charge for software game, I much prefer selling services [18:14] ben_alman: yeah, i'm using dual mit/gpl [18:14] ben_alman: just for convenience [18:14] aaron___: I'm trying to install the native mongo driver using npm, and npm claims to install it, but my require("mongodb") fails hard.... something obvious I'm missing? [18:15] DTrejo__: is it possible for node to always serve the latest versions of my html and css files? I've googled but found nothing [18:16] creationix: DTrejo__: it's very possible, but in node you have to write all the code yourself [18:16] maushu has joined the channel [18:16] shimondoodkin: i like the idea that eveyone can do business without caring for legal staff = bsd license | mit license | public domain license << super. gpl is to get rid of competition and close source later. [18:16] creationix: or use a framework like express, geddy, or connect [18:16] streblo has joined the channel [18:16] ben_alman: how do people here feel about serving html/markdown content in static files in a git repo vs a database? [18:16] JimBastard: mape: FFFFFFFFFFFUUUUUUUUUUU [18:16] DTrejo__: thanks for the tip creationix [18:17] creationix: ben_alman: have you seen wheat? [18:17] JimBastard: ben_alman: howtonode works like that [18:17] JimBastard: aye [18:17] mape: JimBastard: Sheesh [18:17] ben_alman: creationix: yes [18:17] JimBastard: mape: ima steal your wargames [18:17] shimondoodkin: some wikis do that [18:17] JimBastard: i mean, i wrote wargames [18:17] ben_alman: but i want to know how people feel about it [18:17] JimBastard: why did you steal it from me [18:17] mape: JimBastard: Becuase I wanted that iPad soooo bad [18:17] JimBastard: ben_alman: im looking to switch to that method of bloggin [18:17] creationix: ben_alman: it works great for my use case [18:17] ben_alman: is there any way to search with static files? [18:17] shimondoodkin: it is kind of good if you relay on file system and not on memory [18:17] creationix: and if you resolve all queries to a specific sha before serving them, then you can cache verry agressivly [18:18] shimondoodkin: linux grep command [18:18] ben_alman: no, like search box on web page. [18:18] _jesus_ has joined the channel [18:18] ben_alman: would i need to build some kind of search index from the static content, and then reference that? [18:18] _jesus_: Hi [18:18] creationix: ben_alman: yeah, something like that [18:19] _jesus_: someone that can help me to setup node.js on cygwin? [18:19] shimondoodkin: might be , there are several, you might parse the output of grep... [18:19] _jesus_: I downloaded last version, unpack, run make and get an error [18:19] voodootikigod_: sweet jesus its _jesus_ [18:19] micheil: _jesus_: run ./configure? [18:20] _jesus_: same error [18:20] micheil: no idea then. [18:20] micheil: (my smartassery tells me: get a real unix machine :P) [18:20] _jesus_: File "/home/jsp/node-v0.1.99/tools/wafadmin/Utils.py", line 274, in load_modul [18:20] _jesus_: e [18:20] shimondoodkin: i run it localy in vm [18:20] _jesus_: ;) [18:21] tjholowaychuk: ACTION wishes sloccount worked with js ! wtff [18:21] bradleymeck: sloccount? [18:22] creationix: DTrejo__: btw, connect has a static file server built-in http://extjs.github.com/Connect/ [18:22] aaron___: so anyone here an npm user? [18:22] aaron___: or should I be pushing down kiwi? [18:22] tjholowaychuk: bradleymeck: it calculates SLOC [18:22] creationix: tjholowaychuk: is that on brew? [18:22] tjholowaychuk: yup [18:22] x_or: tjholowaychuk: I just posted a new module for connect with works with RPX (OpenID from Janrain). [18:22] shimondoodkin: sloccount, lol there is every language but [18:22] creationix: noce, but yeah, without js support it's not much good to me [18:22] tjholowaychuk: x_or: nice! [18:22] shimondoodkin: but javascript [18:22] tjholowaychuk: yeah i know so lame lol [18:23] _announcer: Twitter: "jade looks sick! http://tjholowaychuk.com/post/759178288/jade-haml-killer-for-nodejs" -- Forrest P. http://twitter.com/sorrodos/status/17590598421 [18:23] x_or: tjholowaychuk: http://github.com/xrd/connect-rpx [18:24] JimBastard: tjholowaychuk: -10 for making another html markup markup language :-( [18:24] tjholowaychuk: JimBastard: :D [18:24] brainproxy has joined the channel [18:24] JimBastard: x_or: is that for RPXNOW ? [18:25] WarBot has joined the channel [18:25] x_or: JimBastard: Yes. [18:25] mscdex: node.js rules! [18:25] JimBastard: x_or: thats really bad ass, i wish i had the use for it right now [18:25] JimBastard: good stuff [18:26] tjholowaychuk: x_or: chucked it on the wiki, feel free to edit [18:26] x_or: Thanks. [18:26] tjholowaychuk: I dont know much about it, but I will check it out :D [18:27] x_or: It just simplifies the process of using OpenID with any site, does not require you to understand any of the variety of implementations from Google, Facebook, Twitter, etc. It is super simple and powerful and free for most types of usage. I live in Portland, OR and know a bunch of the guys at Janrain, though I don't work there. [18:28] dgathright has joined the channel [18:28] JimBastard: tjholowaychuk: its SSO webservice [18:28] JimBastard: tjholowaychuk: that has support for all major providers [18:28] bradleymeck: mmm does jade cache template renders into partially compiled ones? [18:29] tjholowaychuk: oOoO cool, will check it out that sounds nice [18:29] stagas has joined the channel [18:29] _announcer: Twitter: "Trying to pick out an open source project to hack on for the summer. Thinking of Tahoe-LAFS or node.js" -- Jacob Lyles. http://twitter.com/jacoblyles/status/17590999829 [18:29] tjholowaychuk: bradleymeck: yup if you pass { cache: true } with a filename for keys (or use renderFile()) it caches the intermediate js in memory [18:30] tjholowaychuk: which is instrumented with linenos for error reporting when evaluated [18:30] stagas: hi [18:30] bradleymeck: heya stagas [18:31] JimBastard: !tweet @jacoblyles the node.js irc room has 100+ people waiting to answer your questions anytime :-) [18:32] tjholowaychuk: bradleymeck: and due to how it buffers you can actually use vanilla JS conditionals etc with or without braces n crap [18:32] DTrejo__: hey tjholowaychuk , random question: are you planning to rewrite the nodejs chatroom using connect? [18:32] tjholowaychuk: DTrejo__: I didnt write the nodejs chat demo [18:32] mape: ryah wrote that no? [18:33] DTrejo__: tjholowaychuk: yes, I'm wondering if you're going to write using connect to show the difference [18:33] ben_alman: hrmn, linode says my nginx config files is at /opt/nginx/conf/nginx.conf. but my /opt is empty... [18:33] tjholowaychuk: im confused :( [18:33] brainproxy has joined the channel [18:33] unscene has joined the channel [18:33] mscdex: heh [18:34] tjholowaychuk: DTrejo__: but no lol I dont have any intention on re-writing, might make a nice example for connect some day though [18:34] DTrejo__: tjholowaychuk: oh, I just meant to show how connect can do the same thing, an help people compare the differencess [18:34] tjholowaychuk: ah :) [18:34] tjholowaychuk: yes that would be nice [18:34] unscene: What is the recommnded way to extend the default .js modules such as http [18:34] unscene: I've had trouble just extending client and client request [18:34] unscene: flushing errors and such [18:35] bradleymeck: by extend you mean...? add methods? wrap methods? [18:35] shimondoodkin: what is good in using haml? (i like the php style icould not find, so i made my own templates http://github.com/shimondoodkin/nodejs-meta-templates ) [18:35] tjholowaychuk: holy fuck my bird is annoying [18:35] unscene: override the constructor [18:35] mape: tjholowaychuk: bird? [18:35] tjholowaychuk: mape: I have a stupid canary named nugget haha [18:35] mape: haha [18:35] tjholowaychuk: its the most annoying thing on the planet [18:36] unscene: and on Client altering the request method [18:36] DTrejo__: I feel like there are way too many options for nodejs - it makes decisions hard. [18:36] JimBastard: DTrejo__: if you are interested in the node demo i can assist [18:36] JimBastard: errr, node chat demo [18:36] JimBastard: i know authors and i host the demo [18:36] JimBastard: http://chat.nodejitsu.com/ [18:37] DTrejo__: cool [18:37] shimondoodkin: what is good in using haml? maybe iam missing something ? [18:37] Xavura: that demo is sexy [18:37] DTrejo__: I'm doing node for work so I can't contribute as much as I might like [18:37] bradleymeck: haml is just a very easy to read template for most ppl [18:37] voodootikigod_ has joined the channel [18:38] tjholowaychuk: shimondoodkin: its for people like me who hate <%= foo %> style stuff [18:38] unscene: bradleymeck: http://gist.github.com/461721 [18:38] DTrejo__: tjholowaychuk: what do you think of selector based templating? [18:38] rauchg_: DTrejo__: we have that going on in haml.js [18:38] brainproxy has joined the channel [18:38] rauchg_: #test.something [18:38] creationix: DTrejo__: the multitouch demo is basically a chat room [18:39] DTrejo__: JimBastard: that demo is really cute [18:39] creationix: you just move circles instead of typing messages [18:39] rauchg_:
[18:39] zomgbie has joined the channel [18:39] DTrejo__: rauchg_: im guessing I can find it on github? [18:39] rauchg_: tjholowaychuk: is there a jade textmate bundle to easily prepend | to a chunk of code ? [18:39] rauchg_: DTrejo__: github.com/visionmedia/haml.js [18:40] tjholowaychuk: rauchg_: no TM bundle yet :( I really one want to support the syntax too [18:40] shimondoodkin: is there an example that demonstrates hamal ? [18:40] tjholowaychuk: ill have to look into that [18:41] tjholowaychuk: shimondoodkin: http://jade-lang.com [18:41] tjholowaychuk: is basically haml [18:41] DTrejo__: rauchg_: that's different, I was thinking more ala http://github.com/swannodette/enlive-tutorial [18:41] tjholowaychuk: but that example shows a bit [18:41] creationix: tjholowaychuk: jade looks nice [18:41] DTrejo__: rauchg_: then your designers who don't know haml can still enjoy themselves [18:42] brainproxy has joined the channel [18:42] tjholowaychuk: creationix: thanks man. the biggest improvement IMO is the error handling and the buffering so - if / - else actually work [18:42] creationix: nice, maybe I'll switch to this over my haml [18:42] tjholowaychuk: i might port it back to haml.js who prefer that syntax so they can have the error reporting etc [18:42] creationix: both our haml implementations are pretty buggy [18:43] tjholowaychuk: yup [18:43] tjholowaychuk: lo [18:43] tjholowaychuk: very [18:43] tjholowaychuk: haha [18:43] tjholowaychuk: in different ways [18:43] Unscene_m has joined the channel [18:44] shimondoodkin: so haml it is like yaml for html [18:44] creationix: I made my haml different from ruby's haml on purpose, but it was still too close [18:44] creationix: shimondoodkin: not really, though there are syntax similarities [18:44] creationix: shimondoodkin: http://haml-lang.com/ [18:45] ryanmcgrath: Might be a constant question, but googling didn't turn up anything - I get "Error in sys.excepthook" when trying to ./configure Node on my system, no other error details beyond that. Anyone else run into this? [18:45] creationix: ryanmcgrath: never seen that one actually [18:45] rauchg_: tjholowaychuk: did you make any parsing speed improvements, or it's along the lines of haml.js ? [18:45] creationix: ryanmcgrath: what python version do you have? [18:46] ryanmcgrath: 2.3 ~ 2.6, whatever's needed [18:46] shimondoodkin: how do you design hamal with wysiwyg ? (how to integrate designers into the workflow) [18:46] JimBastard: hey ryanmcgrath ! [18:46] DTrejo__: rauchg_: let me know what you think of that style of css selector templating? [18:46] tjholowaychuk: rauchg_: pretty much the same, tiny bit slower actually due to the buffering but to support vanilla js it has to be that way [18:46] creationix: ryanmcgrath: sorry, no clue [18:46] ryanmcgrath: JimBastard: yo? [18:46] JimBastard: << marak [18:46] creationix: tjholowaychuk: does it compile to js or interpret [18:46] ryanmcgrath: Oh shiiit [18:46] ryanmcgrath: What up dude [18:46] shimondoodkin: looks like haml is only for programmers [18:46] JimBastard: :-) [18:47] creationix: shimondoodkin: actually designers love it because it looks like css [18:47] JimBastard: today its an update to http://maraksquires.com/translate.js/ [18:47] creationix: they just have to learn it on top of html [18:47] JimBastard: i might be coming down to the javascript olym[pics [18:47] tjholowaychuk: rauchg_: but you only need to parse it once really, execution is still fast, i think 500 calls for layout.jade was 20ms [18:47] ryanmcgrath: Haha, nice. [18:47] ryanmcgrath: Awesome, I'm planning to be there. [18:47] JimBastard: ya ya [18:47] tjholowaychuk: creationix: it compiles to js first. use { debug: true } to see the token trace and generated js func [18:47] JimBastard: let me know if you ever feel like coming up to NYC [18:47] JimBastard: javascript party [18:48] ryanmcgrath: I'll actually be there Tuesday. [18:48] creationix: tjholowaychuk: so I can pre-compile templates to js functions and then use them later? [18:48] ryanmcgrath: And may be heading there permanently, we'll see. [18:48] creationix: that's the only way I'll use js templates [18:48] tjholowaychuk: creationix: yup! if you pass { cache: true } it does that for you [18:48] tjholowaychuk: creationix: no need to re-compile anything [18:48] creationix: tjholowaychuk: but can I get access to the generated function? [18:48] JimBastard: ryanmcgrath: wooooot lol [18:48] mikecampo has joined the channel [18:48] bradleymeck: the question is how much precompiling is being used, if you really want speed i think an eval created function after all that work is still the fastest, if you can make one that is [18:48] creationix: tjholowaychuk: like store it in a js file on the disk [18:49] tjholowaychuk: creationix: good question ill check, if not I can easily expose that [18:49] aaron___ has left the channel [18:49] JimBastard: ryanmcgrath: if you wanna meet up on tuesday drop me a message on cell or github or whatever [18:49] ryanmcgrath: Will do [18:49] JimBastard: im at 27th and lexington abouts [18:49] JimBastard: so im probaly close to where you going [18:49] JimBastard: :-) [18:49] x_or has joined the channel [18:49] _announcer: Twitter: "Node.js For My Tiny Ruby Brain: Keeping Promises | techno weenie http://ow.ly/17YzVU" -- Javascript News. http://twitter.com/del_javascript/status/17592247363 [18:50] shimondoodkin: +10 to http://maraksquires.com/translate.js/ on forkme on github !!!! [18:50] JimBastard: sup? [18:50] tjholowaychuk: creationix: not right now no, but the execution in render could be exposed to exports.execute() or whatever [18:50] JimBastard: shimondoodkin: thats me, what did i do :-D [18:52] bradleymeck: _utility is using it for !translate [18:52] JimBastard: huzaah! [18:53] Xavura: Is there anything like window.setInterval/Timeout [18:54] ryanmcgrath: Ah interesting, config.h isn't getting generated. [18:54] ryanmcgrath: Wonder why that is... [18:54] shimondoodkin: just setTimeout()... [18:54] brainproxy: .win 12 [18:54] JimBastard: hey ryanmcgrath do you know anyone who the skills to get me an audio pipe out of node? [18:54] tkmorris has joined the channel [18:54] tjholowaychuk: ACTION gets lunch [18:54] Xavura: Oh there is setTimeout? Awesome [18:55] mattly has joined the channel [18:55] JimBastard: i got a audio sequencer i built working, but its using AFPLAY and that has too much latency, i need a real pipe [18:55] JimBastard: http://github.com/marak/JSONloops [18:55] mscdex: !api timers [18:55] mscdex: er [18:55] mscdex: !api methods in timers [18:55] _api: mscdex: Timers methods: (..]), clearTimeout(timeoutId), clearInterval(intervalId) [18:55] tkmorris: . [18:55] JimBastard: tmpvar has been trying to crack the nut, but hes uber busy with jsdom and real work [18:55] mscdex: whoa [18:55] ryanmcgrath: Huh [18:55] Xavura: Wah [18:55] mscdex: i spy a bug [18:55] mscdex: :S [18:55] JimBastard: ryanmcgrath: like openAL or libao [18:55] ryanmcgrath: I don't know anybody offhand. I'm busy this weekend, otherwise I'd try it myself. [18:55] tkmorris has left the channel [18:56] Xavura: Anyone know of any benchmarks with node.js and websockets on high-end servers? My google fu is lacking [18:56] mscdex: oh i see what happened.. [18:57] Xavura: All I can find is something saying 100k+ users but that's with Comet and there's no info. about the server(s) [18:57] JimBastard: Xavura: i mean, why do you care? [18:57] JimBastard: can we get real for a moment? [18:57] mscdex: keep it real! [18:58] DTrejo__: what's the most dead simple DB for node that a beginner could use? [18:58] unscene: Oracle [18:58] mscdex: there are no oracle bindings are there? [18:58] Xavura: Text file [18:58] DTrejo__: (I started using http://github.com/randomekek/noodb.js but it is not for the latest version of node) [18:58] DTrejo__: I might modify it, but.. [18:58] unscene: lol im just kidding [18:58] mscdex: DTrejo__: there's an sqlite binding [18:59] unscene: oracle is my nightmare [18:59] JimBastard: DTrejo__: you might as well use dirty and finish it or something [18:59] DTrejo__: i might have to move to ms sql later [18:59] DTrejo__: cause I work at the government [18:59] unscene: ugggh [18:59] mscdex: Microsoft Government 1.0 [18:59] Xavura: JimBastard: Because I'm thinking about using node.js for a big project... [19:00] JimBastard: but yeah Xavura if you can give me a good reason why you need to read someone elses benchmarks, i'd love to hear it [19:00] JimBastard: Xavura: if that was really the case, you would do your own due diligence on your own hardware and not trust the blogosphere [19:00] unscene: Xavura: just build seomthing and test it yourself it shouldn't be that hard to form some sort of baseline [19:00] JimBastard: node.js is amazing and will support a billion concurrent connections [19:00] JimBastard: prove me wrong [19:01] unscene: a TRILLION [19:01] Xavura: I'm not going to benchmark it on shared hosting and I don't have the money for dedicated/vps yet so I was just asking if anyone had [19:01] Xavura: but whatever [19:01] JimBastard: Xavura: then obviously you arent building a "big" project [19:01] JimBastard: if you dont have the budget to do testing or research [19:01] Xavura: We're thinking about it [19:01] Xavura: Yet* [19:01] mape: micheil: there? [19:01] JimBastard: we'll, think smarter [19:02] bradleymeck: id suggest starting w/ mongodb-native for node [19:02] rauchg_: interesting: http://cl.ly/1Y1B [19:02] JimBastard: Xavura: you can also benchmark on a home computer, you dont need a server [19:02] Xavura: True, true. [19:02] rauchg_: tjholowaychuk: jedschmidt ^ [19:02] rauchg_: they're talking about you guys [19:02] rauchg_: haha [19:03] rauchg_: one of the guys is a django core guy, the other a pypy committer i believe [19:03] DTrejo__: thanks for the dirty tip JimBastard - wow this sentence sounds bad [19:04] unscene: man java is so much better than javascript, i always write way less code in java [19:05] unscene: i really wish i could post this 4000 line class for logging in java, it makes me cry [19:05] DTrejo__: lol thats funny [19:05] JimBastard: DTrejo__: anytime, im somewhat interested in actually supporting dirty, but i have a feeling resourcer might just smash it [19:06] DTrejo__: JimBastard: whats resourcer? I can't find it from a quick google [19:06] texodus has joined the channel [19:06] JimBastard: DTrejo__: its gonna be one of the best ORM's for node [19:07] JimBastard: cloudhead is unstoppable [19:07] unscene: is there thrift support for node yet? [19:07] JimBastard: we've been collaborating on this a bit [19:07] JimBastard: as well as other stuff [19:07] DTrejo__: is there a link? [19:07] JimBastard: http://github.com/cloudhead/resourcer [19:07] JimBastard: thought i sent [19:08] JimBastard: http://github.com/cloudhead/ [19:08] JimBastard: check out vows too [19:08] JimBastard: http://vowsjs.org/ [19:08] JimBastard: pretty much once we get all these little pieces done, its gonna get clued together to make the best shit ever [19:08] JimBastard: but shhhh its top secret [19:08] JimBastard: cloudhead will yell at me [19:08] unscene: omg at vows [19:08] DTrejo__: JimBastard: wait woah you made vows? nice, I saw it on HN the other day [19:09] DTrejo__: ok i say nothing [19:09] JimBastard: DTrejo__: not at all, its all cloudhead [19:09] creationix: JimBastard + secret = impossible ;) [19:09] DTrejo__: haha [19:09] JimBastard: but ive been helping test [19:09] JimBastard: i guess im a cloudhead power user [19:10] JimBastard: creationix: i keep secrets all the time, like this one time when i ..... HEY dammit [19:10] shimondoodkin has joined the channel [19:10] amuck_ has joined the channel [19:11] creationix has joined the channel [19:13] shimondoodkin: ryanmcgrath: http://www.stephenbelanger.com/tag/openal/ - might help you ,http://code.google.com/p/jslibs/ - inspiration source [19:15] JimBastard: shimondoodkin: i would kill for a < 1ms latency play(myFile.wav) in node [19:15] JimBastard: where myFile.wav is a 24 bit stereo interlaced wav file [19:16] bradleymeck: openal wont give you the 24bit stereo you want [19:16] JimBastard: i could do the SICKEST shit [19:16] JimBastard: really? [19:16] shimondoodkin: what wave ? [19:16] bradleymeck: 16bit [19:16] JimBastard: shimondoodkin: im a music producer [19:16] shimondoodkin: where do you get myFile.wav [19:16] JimBastard: shimondoodkin: i have many many tracks [19:16] JimBastard: http://github.com/marak/JSONloops [19:16] JimBastard: thats a JSON based audio sequencer, check out the demo [19:16] JimBastard: it works in node [19:16] JimBastard: you just need mac os [19:17] JimBastard: (and it has crazy bad latency)_ [19:17] bradleymeck: mmm wonder if freemod is a viable option, would require a license for anything serious though :/ [19:17] JimBastard: all i know is that i write the javascripts and produce the songs [19:17] JimBastard: everything else is magic and turtles [19:17] JimBastard: i just need play() [19:17] shimondoodkin: if the wave is eady on the client you can play it with websocket with ~30ms? latency [19:17] JimBastard: shimondoodkin: it works server side [19:18] JimBastard: from console [19:18] JimBastard: clone the demo and try it (if you are on macos) [19:18] JimBastard: it could be browser too, im working on making it dual-sided [19:18] shimondoodkin: * ready [19:18] JimBastard: should be easy [19:18] JimBastard: but the browser has MUCH worse latency [19:18] JimBastard: i need <20ms latency on playing files, would like <1ms [19:18] JimBastard: anything over 20ms is kinda unacceptable.... [19:18] bradleymeck: we really need to get an NPAPI impl up for us [19:19] sveisvei has joined the channel [19:19] shimondoodkin: why do you need it waht is your plan? [19:19] bradleymeck: what is this 'plan' word... [19:21] shimondoodkin: * what do you want to do [19:21] rgl has joined the channel [19:21] shimondoodkin: JimBastard: * what do you want to do [19:21] JimBastard: http://github.com/marak/JSONloops [19:21] JimBastard: i dont know how many times i have to post that [19:21] figital: anyone have any luck the last few days compiling node.js on an ipad? [19:21] JimBastard: http://github.com/Marak/JSONloops/blob/master/node-demo.js [19:22] bradleymeck: you got v8 onto an ipad? [19:22] JimBastard: shimondoodkin: javascript based audio sequencer [19:22] stagas: <1 ms latency don't even have the sound cards [19:22] softdrink has joined the channel [19:22] shimondoodkin: do you have a working demo? [19:22] JimBastard: stagas: i get 18ms latency on my ASIO device [19:22] figital: @bradleymeck ... i'm not sure what part of the process didn't work ... it was something like glibc. [19:23] JimBastard: shimondoodkin: yes, for the 3rd time [19:23] JimBastard: clone the repo and try it [19:23] JimBastard: mac os only [19:23] JimBastard: since its using AFPLAY [19:23] JimBastard: it can barely keep metronone, afplay and childprocess is too laggy [19:23] bradleymeck: i dont think you have a full libc to work with on an ipad anyway [19:23] maritz has joined the channel [19:24] figital: i tried to plug that whole earlier in the week and then ran out of time ... slightly beyond my realm but getting easier. [19:24] JimBastard: shimondoodkin: it looks like i simplified the demo to just use the metronome "song" for now [19:24] figital: thanks .... i'll try to find an isolated v8 package to test install [19:24] JimBastard: shimondoodkin: i have a basic beat in there too, but its not being loaded [19:24] JimBastard: its been put on hold until i can get a real audio pipe [19:25] JimBastard: its impossible to build / debug with the latency [19:25] JimBastard: since i need to hear the song actually working [19:25] JimBastard: but it outputs to the console [19:25] shimondoodkin: is it local app? [19:26] JimBastard: yeah [19:26] JimBastard: you run it from console for now [19:26] stagas: pressing a note to hearing sound, <45-50 isn't noticeable for most people [19:26] mklappstuhl has joined the channel [19:26] JimBastard: stagas: 1. it doesnt work like that [19:26] shimondoodkin: have you seen http://www.stephenbelanger.com/tag/openal/ and http://code.google.com/p/jslibs/ - there is openal [19:26] JimBastard: 2. trust me, i know audio production [19:27] stagas: i have a degree on music technology thank you :P [19:27] JimBastard: shimondoodkin: i feel like you dont read anything i say [19:27] JimBastard: shimondoodkin: i started this conversation by linking to that [19:27] shimondoodkin: yes i have missed some my irc just disconnect at that time [19:27] JimBastard: stagas: well then you know that 50ms is noticeable for a pro musician trying to keep time [19:27] JimBastard: shimondoodkin: sorry [19:28] stagas: a said for most people [19:28] stagas: I [19:28] JimBastard: stagas: really, if it was like <100 or even <200 it might be okay [19:28] JimBastard: but id like to aim high [19:28] mscdex: beam him up scotty! [19:28] JimBastard: you are right though, 50ms is kinda acceptable [19:28] _api has joined the channel [19:28] JimBastard: anything over 20ms i can tell [19:29] mscdex: !api methods in timers [19:29] _api: mscdex: Timers methods: setTimeout(callback, delay, [arg, ...]), clearTimeout(timeoutId), setInterval(callback, delay, [arg, ...]), clearInterval(intervalId) [19:29] mscdex: thar we go [19:29] JimBastard: especially when using a midi device in real time, its the worst [19:29] mscdex: !api settimeout [19:29] _api: mscdex: (Timers) method: setTimeout(callback, delay, [arg, ...]) -- To schedule execution of `callback` after `delay` milliseconds. Returns a `timeoutId` for possible use with `clearTimeout()`. [ http://nodejs.org/api.html#settimeout-82 ] [19:29] stagas: it depends on what the delay is, if the ms delay is between two kicks difference then you can notice a 5ms difference [19:29] shimondoodkin: i can tell audio latency too [19:29] shimondoodkin: its easy and sound like eww [19:30] stagas: if it's playing a keyboard, and it's the latency to pressing the note and hearing sound then you can go up to 70-80ms [19:31] JimBastard: ehhhhhh [19:31] JimBastard: i mean [19:31] JimBastard: can we just agree it would awesome to get audio playing from node without afplay? [19:31] JimBastard: and childprocess [19:31] stagas: yeah :) I'm interested in music projects in the browser too [19:32] JimBastard: stagas: ive been experimenting with soundmanager2 and firefox minefield [19:32] JimBastard: there is no reason JSONloops won't work in the browser [19:33] shimondoodkin: http://www.soundonsound.com/sos/jan05/articles/pcmusician.htm , to have 1ms latency you have to have a very special hardware because my sound card has 96khz [19:33] tjholowaychuk: rauchh_: pff to bad haml originated with ruby, its not like its just "us". some people hate that stuff though. just like I hate the ejs approach [19:33] shimondoodkin: at max [19:33] JimBastard: i think the idea will be to create a web interface, and it will work over the wire or locally [19:33] JimBastard: locally, being more robust and faster [19:33] bradleymeck: !api Object.keys [19:33] JimBastard: shimondoodkin: i use protools hardware for the most part [19:33] stagas: soundmanager2 is the way to go, I wanted to get the developer to built in pitch controls, now that flash 10 supports it, he had done some stuff but he said it wasn't fast enough for production [19:34] JimBastard: stagas: what kind of play latency is there in the browser? [19:34] stagas: it'd be cool to dj mix in the browser [19:34] JimBastard: stagas: im going to focus on sequencing first i think [19:34] stagas: I'm not sure about soundmanager's latency [19:35] JimBastard: i did some early testing, wasnt great [19:35] JimBastard: still working it all out... [19:37] malkomalko has joined the channel [19:38] malkomalko: beautiful day in NY! [19:38] stagas: it's difficult to get accurate bpm with js [19:38] stagas: or maybe, impossible [19:39] stagas: http://blog.andre-michelle.com/2009/pitch-mp3/ here is the flash pitch demo, you need to wait for the mp3 to load completely (there's no indicator) [19:39] stagas: it's really cool [19:40] DTrejo__: JimBastard: the yesterday I saw there was no node install guide for windows, so I wrote one [19:41] nateanderson has joined the channel [19:41] JimBastard: stagas: i think you can get a solid bpm no? [19:41] JimBastard: node has microseconds [19:41] JimBastard: setInterval / setTimeout is no good you think? [19:42] JimBastard: i know it will be a bit off, but i would think not that much? [19:42] stagas: what about when the garbage collector hits? [19:42] zomgbie has joined the channel [19:42] mscdex: "garbage day!" [19:42] mape: :9 [19:42] nateanderson: I am trying to npm from work where I am behind a firewall which blocks github.com. Does anyone know how I can tell node to connect through a socks proxy? [19:43] malkomalko has joined the channel [19:44] quirkey has joined the channel [19:44] stagas: setTimeout is probably the way to go, count the ms and correct if necessary [19:45] mtodd has joined the channel [19:45] brainproxy has joined the channel [19:45] maritz has joined the channel [19:47] y has joined the channel [19:48] malkomalko has joined the channel [19:48] rgl has joined the channel [19:48] stagas: most of the time it'll be unnoticable but you wouldn't want to record that stuff, it'll be just for fun, or you can output a midi file and use the generated sequences elsewhere [19:49] malkomalko has joined the channel [19:50] stagas: it'd be cool if there was a sequencer with js scripting built in :P [19:50] jacoblyles has joined the channel [19:50] temp01 has joined the channel [19:50] JimBastard: !tweet @augustl whats wrong with that? did you not get the help you wanted? [19:50] stagas: I could finally make some proper techno [19:50] JimBastard: stagas: midi sucks [19:50] JimBastard: death to midi [19:50] mostlygeek has joined the channel [19:51] polyrhythmic: MIDI is good for some things [19:51] polyrhythmic: could use better resolution though [19:51] bradleymeck: npm must revalidate? [19:52] JimBastard: resolution polyrhythmic ? [19:52] stagas: everything is midi [19:52] stagas: lol [19:52] stagas: t-shirt [19:52] [1]bkz0 has joined the channel [19:53] ben_alman: ok, best guide for getting node up and running as a web server? [19:53] ben_alman: i've got nginx + php-fpm working [19:53] JimBastard: ben_alman: the first thing you see on nodejs.org? [19:53] malkomalko has joined the channel [19:53] polyrhythmic: JimBastard: yes using MIDI controllers is often limited to a range of 128 [19:53] ben_alman: but how do i daemonize that, i guess [19:53] polyrhythmic: JimBastard: unless they use MIDI pitch [19:54] JimBastard: rgr [19:54] stagas: polyrhythmic: you need more than 128? [19:54] polyrhythmic: otherwise MIDI makes it very easy to connect a number of devices flawlessly [19:54] JimBastard: MIDI still sucks [19:54] JimBastard: should be JSON based [19:54] stepheneb has joined the channel [19:54] polyrhythmic: stagas: definitely for controlling pitch, especially for beatmatching, or for better resolution with effects [19:55] emehrkay has joined the channel [19:55] stepheneb has joined the channel [19:55] stagas: midi can do 16384 [19:55] emehrkay: what are the chances of a neo4j (neo4j.org) node binding being made? (i woudlnt know where to start) [19:56] polyrhythmic: stagas: MIDI pitch can, yes [19:57] malkomalko_ has joined the channel [19:57] mape: tjholowaychuk: poke [19:58] tjholowaychuk: mape: whats up [19:58] mape: tjholowaychuk: Testing the new map that uses SVG instead of canvas [19:58] malkomalko has joined the channel [19:58] mostlygeek: does anybody know how node allocates memory? or is this something takes care of itself? [19:59] tjholowaychuk: ah :) [20:00] mape: You are far away so good to test with :D [20:00] malkomalko has joined the channel [20:00] demolithion has joined the channel [20:00] tjholowaychuk: hahaha fair enough [20:02] gbot2 has joined the channel [20:02] bradleymeck: mostlygeek does it the same way as almost any JS engine, there are no real ways to deallocate memory, thats what the GC does, allocate what you want, make sure you dont hold references to it to get rid of it [20:02] bradleymeck: mind you if you want a blob of memory, use a buffer [20:03] malkomalko has joined the channel [20:03] mostlygeek: @bradleymeck i see in process.memoryUsage there is a rss and vsize, how do those get calculated? [20:03] mostlygeek: they allocate differently based on the system... if I have a lot of swap the vsize is bigger [20:04] bradleymeck: dunno the internals, they are coming from v8, virtual size is probably coming from the OS, on mac for example it generously gives out virtual memory, too generously i think [20:04] ben_alman: i've read http://howtonode.org/deploying-node-upstart-monit .. is this the recommended way of running a node webserver, with upstart and monit? or is there something better that anyone knows of [20:06] malkomalko has joined the channel [20:06] pplante_ has joined the channel [20:07] BrianTheCoder has joined the channel [20:07] coolston_bro has joined the channel [20:08] jbaron has joined the channel [20:08] pplante- has joined the channel [20:10] pplante has joined the channel [20:11] Vekz: A friend recommended I try God http://god.rubyforge.org/ [20:11] Vekz: but i am using supervisor [20:12] Vekz: heres a guide to setting up node with supervisor [20:12] Vekz: http://bigbangtechnology.com/post/installation_configuration_deployment_node.js_applications_on_media_temple [20:12] malkomalko: man orientdb might be a nice candidate for node apps.. rest interface and they toute 200k inserts/sec [20:12] ceej has joined the channel [20:15] stagas: mape: you could use 3 numbers from the ip to an rgb or hsl css value so everyone can have his own color on the dot and the curve [20:15] mape: stagas: hmm yeah.. [20:15] stagas: it'll lose the terminator feeling though :P [20:16] mape: hehe yeah, would prefer the non cuddly look [20:16] mape: should get socket.io working first though [20:17] ben_alman: i'm having "issues" with the node docs [20:17] ben_alman: i see on the home page http.createServer [20:17] ben_alman: but i don't see createServer listed in the docs [20:17] ben_alman: i see http.Server [20:17] ben_alman: but i don't quite understand. [20:18] tjholowaychuk: http.createServer() does new Server for you [20:18] ben_alman: new http.Server ? [20:18] tjholowaychuk: exports.createServer = function (requestListener) { [20:18] tjholowaychuk: return new Server(requestListener); [20:18] tjholowaychuk: }; [20:18] tjholowaychuk: just candy [20:19] ben_alman: is this documented anywhere? [20:19] tjholowaychuk: should be all over [20:19] ben_alman: i'm trying to familiarize myself with the docs [20:19] ben_alman: and i was surprised to not see http.createServer [20:19] pplante_ has joined the channel [20:19] tjholowaychuk: hmm its possible, i only remember that example on the home page [20:19] ben_alman: i think i've found it [20:19] ewdafa has joined the channel [20:20] ben_alman: i guess it's a little difficult to visually discern things in the docs [20:20] bradleymeck: http://nodejs.org/api.html#http-createserver-154 [20:21] bradleymeck: use !api as needed [20:21] ben_alman: yeah, i was just expecting something more visually distinct [20:21] ben_alman: so it says "Returns a new web server object." but i don't see "web server" listed in the left nav [20:22] ben_alman: does it mean http.Server ? [20:22] bradleymeck: yes [20:22] ben_alman: gotcha. [20:22] _announcer: Twitter: "any of my local #abqwebgeeks wanna enter in the node.js knockout competition? Need a team of 4. http://nodeknockout.com/" -- markie. http://twitter.com/teampoop/status/17597613966 [20:23] ben_alman: so i'm trying to configure server.listen [20:24] ben_alman: it accepts a path [20:24] ben_alman: i don't see a definition for what the format of that path is [20:24] ben_alman: for example, can i do ":81" or "*:81" ? [20:24] tjholowaychuk: it can be port / hostname, or unix domain socket path [20:25] ben_alman: when i do "http://127.0.0.1:81" i can get to it via localhost but not externally [20:25] ben_alman: can it be just a port? [20:25] kodisha has joined the channel [20:25] tjholowaychuk: yeah, listen(3000) et [20:25] tjholowaychuk: c [20:25] pplante has joined the channel [20:25] ben_alman: awesome. [20:26] ben_alman: is that documented somewhere? [20:26] ben_alman: (works great btw) [20:26] pplante- has joined the channel [20:26] tjholowaychuk: server.listen(port, hostname=null, callback=null) [20:26] tjholowaychuk: its in there [20:26] ben_alman: i saw that [20:26] tjholowaychuk: server.listen(path, callback=null) [20:27] ben_alman: oh, hostname=null [20:27] ben_alman: missed that one [20:27] tjholowaychuk: null is INADDR_ANY [20:27] ben_alman: i see. so optional params are listed as foo=default_value ? [20:27] tjholowaychuk: guess so yup [20:27] ben_alman: heh [20:28] ben_alman: i'm used to [, foo ] syntax [20:28] ben_alman: i missed it [20:28] tjholowaychuk: if the docs are consistent that is haha, I just open the source all the time [20:28] ben_alman: once i get more familiar, i'll be in the source [20:28] ben_alman: but for now, i'm just getting my bearings [20:29] tjholowaychuk: i think the docs reverence ServerRequest which is non existent [20:29] tjholowaychuk: reference* [20:30] ben_alman: is it possible to have one app .listen( 'http://foo.com/', 80 ) and another .listen( 'http://bar.com/', 80 ) ? [20:30] malkomalko has joined the channel [20:30] ben_alman: simultaneously? [20:30] ben_alman: or does each app need its own port [20:31] _announcer: Twitter: "@pragma_tech did you ever hear any more about nodejs/rhino + envjs? sure would love to have jSpec in terminal." -- Steven Harman. http://twitter.com/stevenharman/status/17598081591 [20:31] ben_alman: i think i have the params swapped, but still [20:31] mklappstuhl has joined the channel [20:33] phiggins has joined the channel [20:33] pplante has joined the channel [20:34] figital: i'm ready to duck before asking this ..... what's the logistics of node.js running with squirrelfish ? [20:34] _jesus_: Hi [20:34] brainproxy has joined the channel [20:34] mape: Not at all? [20:34] _jesus_: I'm trying to run node.js on cygwin [20:34] _jesus_: and runnin ./configure I got an error [20:34] mape: figital: node is coupled with V8 [20:34] _jesus_: can someone help me? [20:35] bkz0: not really; what I did to run it on win is to run TurnKey inside a VM [20:35] stagas: _jesus_: http://blog.dtrejo.com/how-to-install-nodejs-on-windows [20:35] figital: @mape thanks [20:35] bkz0: a virtualbox one [20:35] _jesus_: : /home/jsp/node-v0.1.96/tools/jsmin.py <- syntax error [20:36] _jesus_: stagas: I'll take a look thank you [20:36] stagas: get the zip, it's already compiled, you just run node.cmd [20:36] Tim_Smart has joined the channel [20:37] maushu has joined the channel [20:39] bradleymeck: ben_alman you are going to need separate ports since only 1 listening socket will grab, you can route them however still [20:40] phiggins has joined the channel [20:41] JimBastard has joined the channel [20:41] ben_alman: ok [20:45] _jesus_: stagas: I think it is going to work this time :) [20:45] _jesus_: thank you! [20:46] stagas: _jesus_: np. if you get the node> thing then it's working [20:52] rtl has joined the channel [20:55] zapnap has joined the channel [20:56] malkomalko has joined the channel [21:00] drostie has joined the channel [21:00] mostlygeek has joined the channel [21:05] mjr_ has joined the channel [21:07] bradleymeck: we got a random port # listener for net.createServer (just finds an open one)? [21:08] isaacs has joined the channel [21:10] jashkenas has joined the channel [21:11] bradleymeck: !api events [21:11] bradleymeck: !api help [21:11] bradleymeck: :( [21:12] isaacs: bradleymeck: does !api do stuff? [21:12] bradleymeck: sometimes [21:12] mape: !api make things work [21:12] bradleymeck: !api settimeout [21:12] _api: bradleymeck: (Timers) method: setTimeout(callback, delay, [arg, ...]) -- To schedule execution of `callback` after `delay` milliseconds. Returns a `timeoutId` for possible use with `clearTimeout()`. [ http://nodejs.org/api.html#settimeout-82 ] [21:12] mjr_: bradleymeck: I didn't understand your createServer question [21:13] bradleymeck: i want to open up a connection on a random open port, then find out which port it was opened on [21:13] bradleymeck: so, i need a server, guess i could route them all to one port but thats no fun [21:14] mjr_: like, open a client connection, then find out what the local ephemeral port is? [21:15] bradleymeck: i might have said that in reverse, open up a distinct port on the server that is not currently in use, report it to a client [21:15] mjr_: ohhhh [21:15] mjr_: So you want to open up a new port on which to accept connections, and you don't care what that port is, you just need to know what it is after it is chosen for you. [21:15] mjr_: ? [21:16] bradleymeck: yes [21:17] mjr_: Hmmm, I dunno if there's a elegant way to do that, other than to pick a random high port, then try/catch the listen to see if it worked. If it didn't, keep on trying until it does. [21:17] mjr_: awkward [21:17] bradleymeck: ACTION dislikes the try catch [21:17] mjr_: Are you writing olde fashioned FTP? [21:18] bradleymeck: DCC [21:18] JimBastard: hee hee [21:18] mjr_: ohh, cool [21:18] mikeal: so sad [21:18] mjr_: That one thing that almost never works [21:18] mikeal: such a shitty way for Ghana to go [21:18] bradleymeck: DCC works fine as long as the bot supports continuation [21:20] tjholowaychuk: creationix: we should put our larger projects on sencha labs too, not much on there right now [21:20] mjr_: bradleymeck: I think how this is usually handled is that you pick a starting point way up high in the port range space, and then remember which you last used. [21:21] isaacs: mikeal: i know, right? [21:22] isaacs: mikeal: i never thought that they would have gone out playing soccer, of all things. [21:22] isaacs: ;P [21:22] mape: isaacs: football! [21:22] benburkert has joined the channel [21:22] isaacs: mape: the only people in america who call soccer "football" are pretentious white people who wish they were european. [21:23] mape: Hehe [21:23] isaacs: mape: football is played with an oblong thing on a 100 yard field with helmets and pads. [21:23] mikeal: i call it "proper football" [21:23] creationix has joined the channel [21:23] mikeal: :P [21:23] isaacs: mikeal: s/call soccer "football"/use the "proper" britishism/ [21:24] isaacs: mikeal: i'm jk, it's cool [21:24] isaacs: ACTION likes a lot of Stuff White People Like [21:24] mikeal: american football is just super boring [21:24] mikeal: they love just stopping, all the time [21:24] isaacs: ACTION is currently wearing birkenstocks [21:24] mjr_: we all have our own unique and endearing pretentiousness. [21:24] isaacs: mikeal: yes. the only fun sport to watch is hockey. [21:24] isaacs: it's like soccer, but bigger and faster. [21:24] mikeal: hockey should get rid of offsides, then it would be funner to watch [21:24] mape: I actually prefer handball.. [21:25] isaacs: i know, hockey is played on a smaller field, but that makes the *players* seem bigger, relative to the TV [21:25] mikeal: the field of play is too damn small and they move too fast to have offsides [21:25] mape: Guess that isn't a very active sport in the US though [21:25] isaacs: mikeal: +1 [21:25] isaacs: mape: no, i don't even quite know what handball is [21:25] mikeal: everytime something gets exciting in hockey it's like "oh no, stop, offsides" [21:25] mikeal: but i do love hockey announcers to death [21:26] mape: isaacs: like football, but you use your hands.. [21:26] mikeal: because they turn in to boxing announcers the moment a fight breaks out [21:26] isaacs: hahaha [21:26] mikeal: mape: that's what Uruguay was playing today :) [21:26] isaacs: mikeal: yeah, you notice that like, with football or baseball, the announcer has time to breathe? not so much in hocket. [21:26] mape: isaacs: http://www.youtube.com/watch?v=kPgnRff5EVg [21:26] isaacs: *hockey [21:27] isaacs: mape: do they have to be off the ground when they shoot, or is that just to look cool? [21:27] mape: isaacs: they can't touch the area [21:27] isaacs: oic [21:27] mape: the ok to be in the air [21:27] isaacs: so they jump so that they can get closer [21:28] mape: so to get closer == easier to score they jump [21:28] mape: yeah [21:28] isaacs: kewl [21:28] mikeal: this Ghana game had one of the craziest closing minutes I've ever seen [21:28] isaacs: it also makes it look like some kind of kung fu movie [21:28] mape: Fun game since it is quick [21:28] mape: Usually games end with like 23-29 [21:28] bradleymeck: another question, how to get the IP address of your local machine? [21:29] isaacs: bradleymeck: ifconfig -a [21:29] mikeal: you mean the public IP? [21:29] mikeal: or the local IP? [21:29] JimBastard: ifconfig? [21:29] bradleymeck: public [21:29] mjr_: bradleymeck: it's complicated if you are behind a firewall. [21:29] mape: mikeal: Uruguay? Is there a global tournament going on? [21:29] bradleymeck: s'fine im not looking for things to route through firewalls/NAT [21:29] JimBastard: mape: lol [21:29] mikeal: haha [21:29] JimBastard: i cant tell if you are joking or being swedish [21:30] JimBastard: both would be appropriate here [21:30] isaacs: hahahaa [21:30] mikeal: i can't believe the netherlands beat brazil [21:30] isaacs: every time someone pronounces "uruguay" properly, I think "nuh uh, i like girls, too" [21:30] JimBastard: hee hee [21:30] JimBastard: isaacs: our contracting firm is based in UY [21:31] mape: JimBastard: I've had to many beers to be funny on purpose [21:31] JimBastard: they have been a bit unavailable today >.< [21:31] isaacs: every time someone pronounces "uruguay" the common way, i think "that's not how you pronounce it" [21:31] mjr_: bradleymeck: I think you'll have to run ifconfig, which is awkward. [21:31] bradleymeck: ah awkward, we are becoming best friends [21:31] mjr_: bradleymeck: I guess pcap will tell you also, but that's kind of overkill. [21:31] isaacs: bradleymeck: http://github.com/isaacs/dotfiles/blob/master/.extra.bashrc#L675-692 [21:31] mjr_: But hey, why kill something when you can over kill it? [21:32] mape: regardless of how you do it.. just cache it? since you only do it once it isn't a big deal [21:32] mjr_: Yeah, why not just put it in a config file? [21:33] bradleymeck: sounds reasonable, just if you have a dynamic ip might get awkward, though not too many of those around these days [21:34] creationix: so did heroku get v0.1.99 yet, I can't seem to activate it [21:35] mjr_: I just noticed that there are 239 people in the channel. WTF? [21:35] dgathright has joined the channel [21:35] mape: Yup [21:35] isaacs: mjr_: i blame windows support [21:35] mjr_: I blame wargames support. [21:35] isaacs: hahaha [21:35] isaacs: maybe! [21:35] mape: mikeal: PEW PEEW PEW [21:35] jakehow has joined the channel [21:35] mikeal: huh? [21:36] mape: or sorry.. mjr_ pew pw.... :( [21:36] mjr_: pew misdirection [21:36] unscene has joined the channel [21:37] Tim_Smart: mape: Get the map working as expected? [21:38] bradleymeck: !translate Chinese pew misdirection [21:38] _utility: pew misdirection [21:38] mape: Tim_Smart: yeah think so, it is all svg now [21:38] bradleymeck: awww [21:38] mape: and kinda thing it works like it should [21:38] mape: Tim_Smart: If you refresh you should get the latest version [21:38] mape: I've had beers though so the getting it working took quite a while [21:39] mape: but yeah.. hope it works now [21:39] mape: think the client side is leaner now [21:39] mjr_: oh yeah, it's way less CPU-wastey. [21:39] Tim_Smart: mape: Cool cool. [21:39] mape: only thing it lost going with svg is that it won't fix the map big to tall [21:40] mape: guess I could fix it but yeah.. think socket.io is more of a prio [21:40] Tim_Smart: You should github it, and I can patch it [21:40] mape: Yeah I know, I'm just not very experiences with it [21:41] mape: so doing the whole licenising/dependencies part is an issue [21:41] Tim_Smart: mape: npm ftw? [21:41] mape: same same there [21:42] mape: still links to a github repo [21:42] Tim_Smart: I put socket.io on npm [21:42] rauchg_: nice [21:42] rauchg_: can you send a pull req [21:42] DTrejo__: isaacs: yeah im on windows, it's our fal [21:42] DTrejo__: t [21:42] mape: Tim_Smart: you coded socket.io? :) [21:43] isaacs: DTrejo__: why!? [21:43] DTrejo__: isaacs: im in the government [21:43] Tim_Smart: mape: Nope. rauchg did [21:43] mape: Ah k [21:43] DTrejo__: so im actually extra cool cus im prolly the only person in the government who is using node lol [21:43] isaacs: DTrejo__: right. heaven forbid the government use a secure os! [21:43] DTrejo__: isaacs ^ [21:43] isaacs: DTrejo__: ;P [21:44] mape: Tim_Smart: yeah he offered me help to get it working so I'll def get it running on that [21:44] mape: Not sure if it supports the last websocket standard though? [21:44] tjholowaychuk: haha i loved doing government work, they fork out the $$ like no ones business [21:44] DTrejo__: isaacs: and I'm converting my die hard counterparts as well (i'm an intern, so I get to change it up :) [21:45] Tim_Smart: mape: I'm pretty sure rauchg_ accepted a patch for that. [21:45] mape: Nice [21:45] rauchg_: i did [21:45] rauchg_: but it was incomplete [21:45] rauchg_: and now it's fixed [21:45] rauchg_: and it works with the older one too (for flash websocket) [21:45] mape: rauchg_: How different is node-websocket from the implementation in socket.io? [21:46] rauchg_: mape: both spec compliant-ish, different code [21:46] mape: but no way to merge/join effort? [21:46] rauchg_: at one point if node-websocket-server is abstract enough i'd like to use it as a submodule [21:46] rauchg_: that'd be great [21:46] rauchg_: for now, it works, and the code is short [21:46] rauchg_: so, i'm not too concerned [21:46] mape: ok [21:46] rauchg_: obviously, i need to incorporate integration testing which is what im gonna do next [21:47] tjholowaychuk: haha wtf some dude from mac.com just bought my mag [21:47] mape: rauchg_: but socket.io supports just using websockets and longpull? skip the flash skim? [21:47] Tim_Smart: mag? [21:47] rauchg_: mape: you can choose to leave out any transport [21:47] rauchg_: supports websocket, flash socket, htmlfile, multipart, long-polling [21:47] tjholowaychuk: my old lame javascript ebook [21:47] tjholowaychuk: wanted to play around with docbook [21:47] mape: Great, I'll make it work tommorow [21:47] rauchg_: mac.com anyone can have. [21:47] tjholowaychuk: oh :) [21:48] tjholowaychuk: good to know [21:48] tjholowaychuk: haha [21:48] rauchg_: but i also shared that short-lived excitement [21:48] tjholowaychuk: docbook is hell though fuck [21:48] tjholowaychuk: hahaha [21:48] rauchg_: many times when i sold copies of textboxlist [21:48] mape: tjholowaychuk: Isn't that what everyone gets that uses .me? :P [21:48] tjholowaychuk: mape: no clue I don't use that stuff [21:48] tjholowaychuk: but apparently haha [21:48] rauchg_: mape is correct [21:49] rauchg_: mape: socket.io tests for flash to be installed, so leaving it out on the basis that "it's flash" is kinda lame [21:49] tjholowaychuk: oh well, I have had them ask me to work for them so I guess its not any more exciting to have a mag bought [21:49] rauchg_: because it's a great-ish trasnport [21:49] _announcer: Twitter: "Video: Quick demo showcasing the magic of Node.js and Websockets. http://tumblr.com/xrvcm9334" -- Anders Norås. http://twitter.com/anoras/status/17602851433 [21:50] DTrejo__: is announcer in node? [21:50] tjholowaychuk: ah fuck god damnit apple command+q is to close to command+w [21:50] rauchg_: tjholowaychuk: you can rebind [21:50] rauchg_: to command+p if oyu want [21:51] tjholowaychuk: rauchg_: yeah I really should lol I do that so often [21:51] skampler: ///lastlog ryah [21:52] rauchg_: /lastlog ryah [21:52] nostromo has joined the channel [21:53] Tim_Smart: mape: Did you add variance to the 'missile' pahts? [21:53] DTrejo__: api: quit [21:53] Tim_Smart: *paths [21:54] rgl: ping [21:54] mape: rauchg_: that didn't work when I tried it the last time.. the flash detection thingy that is [21:54] mape: Tim_Smart: Seems rapahel does that [21:54] rauchg_: mape: it's been updated [21:54] mape: which is nice I guess [21:54] mape: rauchg_: ok [21:54] technoweenie: mape: pj setup a github map to track locations of git pushes [21:54] mape: pj? [21:54] technoweenie: he didnt use the wargames map though, but was clearly inspired by it [21:54] technoweenie: pj at github [21:55] mape: oh k [21:55] mape: Neat :) [21:55] mscdex: DTrejo__: eh? [21:55] tilgovi has joined the channel [21:55] Tim_Smart: Hehe it would be cool to make a twitter visualisation map [21:55] mape: I tried to stay away from twitter since it is so "done" [21:55] mape: But yeah [21:56] Tim_Smart: mape: Yeah Google brings up too many matches for me to bother [21:56] jashkenas: technoweenie: is that something y'all would consider making a public feature of the site? [21:56] rgl: mape, the coordinates in the svg map aren't a bit off? [21:56] mape: twitter/google maps mashup [21:56] mape: rgl: they are? [21:57] isaacs: rgl: yeah, for some IPs, it just says the country [21:57] DTrejo__: mscdex: was trying unsuccessfully to use the irc bot to look up how to kill your own process [21:57] isaacs: that's why it shows me somewhere in oklahoma [21:57] technoweenie: jashkenas: i dont know, its kinda boring unless you're showing commits from all repos [21:57] mscdex: DTrejo__: oh [21:57] mape: Hopefully the geoip is off and not the actuall coordinates [21:57] mscdex: !api kill [21:57] _api: mscdex: (process) method: kill(pid, signal) -- Send a signal to a process. `pid` is the process id and `signal` is the string describing the signal to send. Signal names are strings like 'SIGINT' or 'SIGUSR1'. If omitted, the signal will be 'SIGINT'. See kill(2) for more information. [ http://nodejs.org/api.html#process-kill-69 ] [21:57] rgl: mape, my dot is in the north. but it should be on the center left of the country [21:57] mscdex: !api pid [21:57] _api: mscdex: (process) property: pid -- The PID of the process. [ http://nodejs.org/api.html#process-pid-70 ] [21:57] mscdex: ;-) [21:57] mape: rgl: Well probly the ISP then [21:58] rgl: mape, geoip coords are more-or-less ok [21:58] mscdex: DTrejo__: -^ [21:58] jashkenas: technoweenie: that's what I meant. Something like github.com/live that would light up with all pushes to all public repos. [21:58] mape: rgl: Well, that depends :) [21:58] rgl: mape, for my ip that is hehe [21:58] jashkenas: technoweenie: like http://github.com/timeline, but on a map. [21:58] DTrejo__: mscdex: thanks [21:58] mape: rgl: Yeah, hard thing for me to improve [22:00] streblo has joined the channel [22:00] rgl: mape, I guess the conversion from lat,lng to map coordinates is a bit tricky? [22:00] Tim_Smart: jashkenas: Github needs a streaming API ;) [22:00] mscdex: Tim_Smart: agreed [22:00] mape: rgl: Well kinda, not really. But yeah.. [22:01] mape: As long as it works and I don't look like an idiot for coding it I'm happy [22:01] mscdex: Tim_Smart: maybe since they are starting to use node, we will see that happen sooner than later? :-) [22:01] Tim_Smart: mscdex: Hope so. [22:01] technoweenie: well, i could always use eventmachine, i don't have to use node [22:01] mscdex: oh come on now [22:01] mscdex: :-D [22:02] mape: Guess that is the biggest change for me doing open source stuff, still don't want to release code since it is more or less shitty [22:02] mape: But I guess I'll get used to that [22:02] technoweenie: mape: i'd say no one cares [22:02] technoweenie: but jimbastard might call you out [22:02] mape: technoweenie: Or steal it [22:02] mape: But yeah.. For sure [22:02] rgl: mape, release early, release often :-) [22:03] mde: Or both together. :) [22:03] bradleymeck: lol have you *seen* _utilitiy's source? [22:03] mscdex: gedddddyyyyyy [22:03] bradleymeck: there i even mispelled it [22:03] mscdex: that reminds me, i need to start a apibot repo [22:03] Tim_Smart: mscdex: http://support.github.com/discussions/feature-requests/702-streaming-api [22:03] mde: mscdex: "If you choose not to use Geddy, you still have made a choice." [22:03] rgl: mape, don't bother too much about quality. it can only improve ;-) [22:03] mape: Hehe yeah [22:04] marshall_law has joined the channel [22:04] mscdex: mde: i do plan on giving it a try one of these days though. which will probably be when i have my next vacation [22:04] MattJ: mape: I got over "I can't release it because it's ugly" thing a while back, it's good :) [22:05] mape: MattJ: Yeah, I'm still early in the game so, guess it gets better over time [22:05] MattJ: It surprised me how many people sent feedback or patches to code I never thought anyone but me would use [22:05] technoweenie: Tim_Smart: we've been experimenting... though my aim isnt to provide a streaming api, but a better event subsystem [22:05] mde: mscdex: Cool, man, lemme know what you think. The routing and templating is pretty fucking solid. [22:05] technoweenie: and a streaming api is just 1 part [22:05] MattJ: But the other thing it's done is meant that I don't write ugly code anymore :) [22:05] mscdex: mde: awesome [22:05] mde: The ORM is a biiiig question mark. Talking to Tim_Smart about some of that stuff this weekend. [22:06] MattJ: Because if I know other people will be looking at it from day 1, I'm sure to keep it more readable than if it was a quick script for myself [22:06] mape: mde: I would love to kinda haz many to many things i the ORM [22:06] mscdex: hasAndBelongsToMany [22:06] mscdex: lulz [22:06] mape: MattJ: For sure :) Public humiliation keeps me writing better code [22:07] MattJ: It's true :) [22:07] technoweenie: i find i get a ton more questions from newbs than contributions [22:07] MattJ: It's kind of the same with blogging ideas and thoughts, though I never managed to get into that in the same way [22:07] mde: mape: Yeah, coming up with something usable for both SQL/NoSQL is the big task. [22:07] MattJ: so now I just release code [22:07] mape: mde: Yeah, from what I heard Django is shitting bricks on that one [22:08] mde: Realistically, people will be using both. [22:08] MattJ: technoweenie: Maybe I'm lucky that much of the code I write lives in a niche, and those people are generally more clueful :) [22:08] x_or has joined the channel [22:08] mde: mape: I think per-model datastore is the way, and I think you can come up with a simple API for wherever the overlap is. [22:09] mde: Just porting a plain ORM like DM or SQLAlchemy is a huge job, but it's doable. [22:09] technoweenie: clone activemodel [22:09] mde: You just want something a little more future-proof. [22:09] tjholowaychuk: mde: in the works :) [22:09] mde: tjholowaychuk: Link? [22:09] cloudhead has joined the channel [22:10] tjholowaychuk: mde: not yet [22:11] technoweenie: there's a DB, cassandra, riak, and mongo orm for activemodel [22:11] technoweenie: ruby guys aren't shitting bricks about it [22:12] mape: technoweenie: well aren't they busy shitting bricks about it running fast? [22:12] DTrejo__: is it possible to ask a child process what modules / files it requires? [22:12] technoweenie: mape: no [22:12] mape: need the prioritize the shitting of bricks? [22:12] DTrejo__: I should say modules [22:12] bradleymeck: not w/o making a protocol to do so DTrejo__ [22:12] bradleymeck: talking to eachother on stdin/out etc [22:13] DTrejo__: ok, thanks [22:13] mde: tjholowaychuk: I'll be interested to see it whatever you're working on, whenever it's something. :) [22:13] DTrejo__: (I'm trying to make an code auto-reloader work across all the files the server references without me having to type extra) [22:14] DTrejo__: oops typo [22:14] mde: technoweenie: I'll take a closer look at ActiveModel. [22:14] tjholowaychuk: mde: :D async orms are a little funky but so far so good [22:14] mde: tjholowaychuk: Yeah, I haven't had any issue with the acync piece. [22:15] tjholowaychuk: mde: me neither, just design decisions but nothing that is like oh wow that wont work [22:15] DTrejo__: bradleymeck: oh i figured it out: list all the files in the directory and go from there. nvm thanks [22:15] mde: The problem is coming up with something that works with lots of different kinds of backends, that normal people can use. [22:16] technoweenie: mde: AMo is about extracting the common stuff across ORMs like validations/callbacks/etc, and then assembling them with your connection adapter to build your orm [22:17] mde: Yes, the validation stuff is easy -- geddy-model has it and it's solid. [22:17] mde: The real problems are associations and the query API. [22:17] technoweenie: well its about putting the abstraction at the right level [22:18] technoweenie: hardly anyone uses DM [22:18] tjholowaychuk: I did :D [22:18] mde: technoweenie: Right, there are a couple of levels of abstraction. [22:18] technoweenie: it has a few adapters that "work" but people opt to use other libs for it [22:18] technoweenie: like smtp or couch [22:19] [[zz]] has joined the channel [22:20] mde: It's kind of academic -- the query API for all the ORMs is pretty similar. [22:20] mde: Well, the Ruby/Python ones. I don't know that much about Hibernate or whatever. [22:21] technoweenie: activerelation is really cool for query stuff, but i've only seen a db implementation of it [22:21] malkomalko: I really like Mongoose, one of the newer MongoDB libs [22:21] malkomalko: some nice stuff in there for querying [22:22] technoweenie: yea theres like 50 ruby mongo libs [22:22] malkomalko: yup [22:22] technoweenie: oh thats like ambition's querying [22:22] malkomalko: yah, lots of promises [22:22] malkomalko: and it fits well with Mongo's querying [22:22] malkomalko: it's just a DSL on top of the mongo native lib [22:22] khug has joined the channel [22:23] technoweenie: i like the chaining stuff for queries [22:23] technoweenie: which also works well with mongo, you're just building up a hash [22:23] teemow has joined the channel [22:24] mde: That's probably the biggest issue -- the delta between all the SQL stores is way smaller than what you have between the non-relational stuff. [22:24] technoweenie: i wouldnt worry about that so much [22:24] mde: A lot harder to come up with a sane common API. [22:24] malkomalko: been getting some good results with some spikes with mongoose and express [22:25] technoweenie: no one's going to just up and change from mysql to redis and have the app keep working [22:25] mde: Not the issue of changing, it's the issue of maybe using three different stores in the same app. [22:25] malkomalko: pulling in about 1k beefy objects, with a custom jquery templating plugin and it renders on load in a little over a second [22:25] mde: And you want the API not to be wildly different. [22:25] mape: Just love how node isn't big enough yet so the channel can really foster a community and have people talk about whatever/things related rather then forcing it into a ask/tell support channel [22:26] mde: mape big +1 [22:26] malkomalko: truth [22:26] skampler: surfing the bleeding edge [22:26] skampler: by the way, node + redis is great :P [22:27] malkomalko: haven't tried that combo out [22:27] zomgbie has joined the channel [22:27] malkomalko: everything sits in ram with redis right? [22:27] mape: dumps to disc every now and then no? [22:27] mape: persistant memcache [22:28] mape: with more bells and whistles [22:28] kodisha has joined the channel [22:28] technoweenie: redis 2.0 has a VM feature, so only recently used stuff fits in ram [22:29] malkomalko: and it can persist hashes now right? [22:30] mape: hasen't it always done that? [22:30] _announcer: Twitter: "@heroku how often do you check the nodejs@ email? I requested into the beta almost 2 days ago and haven't heard anything." -- Daniel Jackoway. http://twitter.com/jackowayed/status/17605025412 [22:30] malkomalko: when I was using it like 9 months ago I remember it only having lists and sets [22:30] _announcer: Twitter: "I just did a screencast on #nodejs and #websockets http://vimeo.com/13043828 Like it? Grab the code at http://gist.github.com/461993" -- Anders Norås. http://twitter.com/anoras/status/17605052061 [22:30] malkomalko: maybe it's time to check out redis again [22:31] technoweenie: yea hashes are relatively new [22:31] technoweenie: pub/sub is sweet too [22:31] steadicat has joined the channel [22:31] shimondoodkin has joined the channel [22:31] drostie has joined the channel [22:33] DTrejo__: wow the node api has changed a lot, updating some old code now, thank god it's only like 20 lines [22:33] mscdex: heh [22:33] tjholowaychuk: haha yes yes it has [22:33] tjholowaychuk: ive gone to hell and back with the node api [22:34] mscdex: it changes for the better though ;-) [22:34] DTrejo__: I can't imagine, you're persevering hehe [22:34] tjholowaychuk: its a good investment though i dont plan on leaving the node community ever really [22:34] hellp has joined the channel [22:34] mape: I'd rather have a changeing api rather then stale/worse base :) [22:35] mjr_: If we don't fix things now, we'll never be able to once node gets really popular. [22:35] DTrejo__: at least puts is the same [22:35] DTrejo__: hehe [22:35] mjr_: Ha! not for long [22:35] DTrejo__: really? [22:35] mjr_: Seriously, puts is about to get changed to console.log() [22:35] mape: console.log.. [22:35] sechrist has joined the channel [22:36] DTrejo__: is that so browser/server code can be copy pasted? [22:36] shimondoodkin: i dont like the name log when it is system.out.writeln [22:36] skampler: then i'm about to add 'var puts = console.log' everywhere [22:36] shimondoodkin: lol [22:36] mape: Just common stuff [22:36] mde: mape: Is that going to be a builtin now? [22:36] tjholowaychuk: fuck that is going to be a bitch of a change too [22:36] mde: Or will you have to import ... console? [22:36] tjholowaychuk: its global i think [22:37] mde: That's a relief. [22:37] DTrejo__: lol import console [22:37] mde: Always seemed like a reduntant import just for that. [22:37] mape: i usually just do console.log = require('eyes').inspect() [22:37] mape: colors are good [22:39] sh1mmer: just showing wargamez [22:39] sh1mmer: it's a cool demo [22:39] tjholowaychuk: mape: would be cool if there was ~/node.js or something loaded everything time you exec node [22:39] tjholowaychuk: to do things like that [22:39] Tim_Smart: Hmm.. Any ideas anyone for something to do with Node + Raphael? [22:39] tjholowaychuk: swap shit out all the time [22:39] tjholowaychuk: maybe, maybe not [22:39] tjholowaychuk: lol [22:40] tjholowaychuk: Tim_Smart: rts ! [22:40] tjholowaychuk: ive been meaning to get on that [22:40] Tim_Smart: Urgh. I hate making games :p [22:40] tjholowaychuk: :p [22:40] tjholowaychuk: umm [22:40] paulwe: multiplayer td :D [22:40] mape: Tim_Smart: An idea I had for node knockout was folding@home in the browser, have a central server handing out tasks, gather them and send it to a good cause [22:41] ryah has joined the channel [22:41] pquerna has joined the channel [22:41] Astro has joined the channel [22:41] foobarfighter has joined the channel [22:41] hober has joined the channel [22:41] jspiros has joined the channel [22:41] dahankzter has joined the channel [22:41] sixthgear has joined the channel [22:41] doppler has joined the channel [22:41] mulander has joined the channel [22:41] wao has joined the channel [22:41] MattJ has joined the channel [22:41] WarBot has joined the channel [22:41] maritz has joined the channel [22:41] tilgovi has joined the channel [22:41] khug has joined the channel [22:41] drostie has joined the channel [22:41] cloudhead has joined the channel [22:41] nostromo has joined the channel [22:41] ceej has joined the channel [22:41] BrianTheCoder has joined the channel [22:41] FliPPeh_ has joined the channel [22:41] sh1mmer has joined the channel [22:41] tacobreath has joined the channel [22:41] hoodow has joined the channel [22:41] tav has joined the channel [22:41] KungFuHamster has joined the channel [22:41] zum has joined the channel [22:41] opello has joined the channel [22:41] bradleymeckboom has joined the channel [22:41] persson has joined the channel [22:41] Guest42356 has joined the channel [22:41] inarru_ has joined the channel [22:41] Sembiance has joined the channel [22:41] Tim_Smart: mape: Don't you need GL for that? [22:41] bradleymeck: get me a collab vector graphics editor that has version control [22:41] benburkert has joined the channel [22:41] mape: Or distrobuted cracking of hotmail passes.. depending on the need :P [22:41] mikeal has joined the channel [22:42] bradleymeck: thats what raphael is for? [22:42] DTrejo__: "Error: puts() has moved. Use require('sys') to bring it back." [22:42] DTrejo__: hmm [22:42] Tim_Smart: console.log [22:42] mape: Tim_Smart: Well depends on what to visualize.. But just a general "go to this page and help the world" kinda thing [22:42] technoweenie: oh man, i wanna build a tower defense game [22:42] DTrejo__: nvm figured it out [22:42] technoweenie: i dont know the first thing about building games though [22:42] tjholowaychuk: technoweenie [22:42] tjholowaychuk: ahaha [22:42] tjholowaychuk: fuck [22:42] tjholowaychuk: my bad [22:43] Tim_Smart: mape: I'm trying to think of decent streaming data sources. [22:43] Tim_Smart: Seems all API's these days aren't awesome enough to be streaming. [22:43] mape: Tim_Smart: I mean if someone has an algo for curing cancer.. Or at least find a way to cure cancer.. Wouldn't it be awsome to just have a page that you could open and then help out? :) [22:43] tjholowaychuk: what I really want is to make an MMO RTS for the ipad [22:43] WALoeIII has joined the channel [22:43] Tim_Smart: mape: Lol. A virtual operating table hooked up to a robot [22:44] WarBot1 has joined the channel [22:44] tjholowaychuk: technoweenie: was that you guys that had the ardiuno / stop-light for CI ? [22:44] technoweenie: tjholowaychuk: yea [22:44] tjholowaychuk: I want that [22:44] tjholowaychuk: so dope [22:44] Tim_Smart: chilts: Where in NZ are you? [22:45] creationix has joined the channel [22:45] technoweenie: tjholowaychuk: we flew a friend out from NYC to set it up for us [22:45] technoweenie: well i mean the collective 'we', i really had nothing to do with it [22:45] DTrejo__: the use of double and single quotes in inconsistent - what do you guys recommend? [22:45] tjholowaychuk: technoweenie: cool :) I have been trying to think of something cool to do with the ardiuno, something that I actually would not mind at least [22:45] DTrejo__: singles unless doubles needed? [22:46] Tim_Smart: DTrejo__: single quotes ftw. [22:46] DTrejo__: I agree [22:46] creationix: DTrejo__: well, JSON requires double [22:46] DTrejo__: oh [22:46] mape: Tim_Smart: hehe well not like that, more like curing stuff through analasys [22:46] creationix: but otherwise, singele is more nodey [22:46] tjholowaychuk: DTrejo__: ditto single quotes [22:46] bradleymeck: get me a gardener that will watch my plants for me from node? i got plenty of plants [22:47] shimondoodkin: wow what a graphic lib http://raphaeljs.com/scape/ [22:47] sechrist has joined the channel [22:47] ajpiano has joined the channel [22:48] technoweenie: what's the criteria for node knockout? [22:48] mape: Ned_: there? [22:48] mape: Tim_Smart: awsome idea, done in 48h that can be hosted on 2 services? [22:49] mape: * technoweenie [22:49] bradleymeck: mmm where was that pump for buffers? [22:49] malkomalko: that's awesome shimondoodkin [22:49] technoweenie: ah i see.. Overall, Best solo (one-person team), Innovation, Completeness, Usefulness, Appearance, Popularity [22:49] paulwe: bradleymeck: sys.pump()? [22:49] technoweenie: i have an idea but its not really a good node example [22:50] mattly: technoweenie: were you still going to be in pdx during node knockout? [22:50] technoweenie: mattly: no [22:50] mape: Ned_: http://gist.github.com/462030 [22:50] mattly: bah [22:50] creationix: anyone here a lawyer, I may or may not have a squatter at my house in Texas [22:50] technoweenie: node knockout is in like 4 years or so isnt it [22:50] paulwe: technoweenie: august 28th [22:50] mde: creationix: That really sucks, dude. [22:51] malkomalko: you can't tell him to leave? [22:51] bradleymeck: ... do i need to head up to dallas and tell him off? [22:51] technoweenie: give him the pile driver [22:51] mape: technoweenie: Seems like people think the wargames thing is a good example. Which isn't really node heavy.. So I guess it is more a fun project rather then something really really node specific [22:51] mattly: creationix: you're better off getting a lawyer local to the area [22:51] mattly: who knows the jurisdiction [22:51] creationix: yeah, just wondering [22:52] bradleymeck: mape its from eventemitter [22:52] mde: creationix: So, he may or may not be in the house, or he may or may not be a squatter? [22:52] mape: creationix: as in domain squatter? Or just general? :P [22:52] bradleymeck: cant emit('error') if that argument isnt going to throw [22:52] mape: bradleymeck: huh? [22:52] aheckmann has joined the channel [22:52] mape: bradleymeck: oh the error? [22:52] bradleymeck: ya [22:52] technoweenie: that'd suck if he was a domain squatter too [22:52] bradleymeck: change the emit in node-irc to emit('err') [22:52] creationix: mape: no, someone moved into my old house in Texas [22:53] mape: creationix: That you still own? [22:53] bradleymeck: without a key? [22:53] mape: Or have intrest in? [22:53] creationix: mape: yep, I still own it [22:53] mape: Oh, so yeah, doesn't it have a key? [22:53] mape: And isn't that trespassing? [22:53] mattly: you can tell how nice of an area someone lives in by how well they understand the concept of squatting [22:54] bradleymeck: sometimes the trouble of throttling reminds me of 'many welps, handle it' [22:54] creationix: mape: it's actually quite complicated, it's someone we know (a mortgage officer actually), so this is completely unexpected [22:54] mape: ... [22:55] mde: creationix: So he's definitely in the house, but it's unclear if he's a squatter? [22:55] Tim_Smart: Hehe http://raphaeljs.com/reference.html#safari [22:55] mape: That is the worst [22:55] creationix: mde, correct [22:55] mde: Oh, that sounds pretty dire. [22:55] mape: creationix: so he is just chillin out in your house without your consent? [22:55] mde: Selling a house from far away is no damn fun. [22:55] creationix: he's the one who was going to buy the house next month, but decided instead to just move in [22:55] mde: Oh, nice. [22:55] mape: .. [22:56] mape: So how does he get in? [22:56] mde: That's super-weird. [22:57] creationix: mape: he had a key to water the garden [22:57] mape: So .. em.. The guy who is suppose to buy it waters the garden? [22:57] creationix: yeah, so the garden doesn't die before he buys it [22:57] creationix: since I'm in CA [22:58] mape: But yeah, that is totally a worst case scenario? [22:58] mde: You can't let the yard dry out. Our realtor was frantic about keeping the yard watered. [22:58] mape: If you gave him the key he isn't trespassing? [22:58] DTrejo__: is there a complete list of events somewhere? [22:58] creationix: well, moving in isn't the same as watering a garden [22:58] mape: So you are more or less screwed if you don't have it in writing that he can't enter the premesis? :S [22:58] mscdex: DTrejo__: events for what? [22:58] _announcer: Twitter: "use cygwin. Native Window App, it is not "@ msftbrknews: How to Install Node.JS on Windows http://bit.ly/9sovLS"" [ko] -- A.J. http://twitter.com/andrwj/status/17606525948 [22:59] DTrejo__: say events emitted by a child process? [22:59] DTrejo__: mscdex: ^ [22:59] mscdex: !api events in child process [22:59] mape: creationix: Well do you have somekinda contract with the person? [22:59] _api: mscdex: Child Processes events: exit(code, signal) [22:59] DTrejo__: hehe announcer just announced an article I wrote [22:59] mscdex: hmm [22:59] creationix: mape: nothing at all [22:59] mape: creationix: :S [22:59] mscdex: that doesn't seem right [22:59] creationix: anyway, I'm talking with lawyer friends in the area now [23:00] DTrejo__: mscdex: I want to let my child print to the console, but I don't know which event to listen for [23:00] mscdex: wait, i think that is [23:00] DTrejo__: 'output' [23:00] mde: creationix: Best of luck with that. That kind of stuff always sucks. [23:00] mape: creationix: so it is a gentlemens kinda deal? [23:01] creationix: mde: thanks [23:01] creationix: mape: there is no deal yet, just plans for one [23:01] mape: But he still has the keys? [23:01] bradleymeck: utility is going down for a couple hrs ... bbl [23:01] mape: Regarding the squatting thing, do you have good contact with the neighbours? [23:02] bradleymeck has left the channel [23:02] mscdex: DTrejo__: you can do: var proc = require('child_process').spawn('ls', ['-lh', '/usr']); proc.stdout.addListener('data, function(data) { /* do something with data here */ }); [23:02] mscdex: that'll intercept the output from ls [23:02] DTrejo__: hmm ok, I'll try that again, maybe I had a typo [23:03] DTrejo__: mscdex: I'm trying to intercept output from another node process [23:03] DTrejo__: but that shouldn't matter [23:03] mscdex: correct [23:03] texodus has joined the channel [23:04] paulwe: DTrejo__: have you seen node-worker? [23:04] stagas has joined the channel [23:05] DTrejo__: paulwe: I have not [23:05] mscdex: you can also pass file descriptors [23:06] DTrejo__: paulwe: link? I can't find after quick google [23:06] DTrejo__: nvm found [23:06] paulwe: http://github.com/cramforce/node-worker [23:06] stepheneb has joined the channel [23:06] paulwe: ah, beat me to it [23:06] paulwe: it's pretty close to web workers on client side [23:07] DTrejo__: paulwe: hmm ok. I'm just looking to run my server as a child process and restart it whenever a js/html/css file changes [23:07] DTrejo__: autorestart seemed really fancy and unixy [23:07] DTrejo__: i should look at it again though [23:07] paulwe: DTrejo__: yeah, that's what i'm using it for actually, makes development way easier [23:08] DTrejo__: I don't like that it requires you to change your code [23:08] DTrejo__: also it seems like it only monitors js? [23:08] Tim_Smart: Twitter API docs got an upgrade :) [23:09] DTrejo__: paulwe: maybe I just need to stop using 'fu.js' from the chat demo [23:09] DTrejo__: to server my static content [23:10] paulwe: i didn't know it monitored stuff, i wrote a little daemon that relays connections from /x to configured scripts so my dev team can share one hole in our firewall [23:10] paulwe: had to tweak worker a little so it would handle broken code more gracefully but it's been working alright [23:12] DTrejo__: paulwe: I am just thinking of something that I run like this from command line: node run.js server.js [23:12] DTrejo__: then it monitors for any changes in static files and JS and restarts server if needed [23:12] DTrejo__: paulwe: i dunno if I said that clearly [23:13] paulwe: i understand, there's pokenode too that might give you all that [23:14] paulwe: i haven't used that though [23:14] bmizerany has joined the channel [23:18] DTrejo__: thanks for the tip paulwe, that's super fancy tho [23:18] DTrejo__: lol ill never be happy [23:18] mape: these netsplits are killing me [23:21] paulwe: DTrejo__: lol... here's the script i've been using... bear in mind i hacked it and haven't really looked back since i got it working but it might give you a place to start http://gist.github.com/462064 [23:23] DTrejo__: paulwe: cool [23:28] bmizeran_ has joined the channel [23:30] shimondoodkin has joined the channel [23:30] jacoblyles has joined the channel [23:31] malkomalko: is there anyway with js to create a dynamic deeply nested object? let's say I have an array with [1,2,3].. can I turn that into a[1][2][3] = {} dynamically? [23:32] stagas has joined the channel [23:32] opello: malkomalko: sure, but it might not be real clean [23:33] malkomalko: I'm trying to figure out a way to get this parsed xml that's sitting in an array into an object graph [23:33] JimBastard has joined the channel [23:34] mde: malkomalko: JS arrays are sparse, so the function to do that wouldn't be very large. [23:35] DTrejo__: can you chain listeners like this? child.stdout.addListener('data', function(data) {}).addListener('end', function(end) {}).addListener('error', function(error) {}); [23:35] dmcquay has joined the channel [23:35] malkomalko: hmm [23:35] mscdex: malkomalko: here's one i wrote awhile ago using (a now older version of) libxmljs: http://mscdex.net/code-snippets/#xml2js [23:35] mscdex: DTrejo__: not that i'm aware of [23:36] DTrejo__: mscdex: aw [23:36] DTrejo__: thanks [23:36] malkomalko: I tried out node-expat for speed [23:36] malkomalko: let me check out that code mscdex, thanks [23:36] mscdex: malkomalko: i also wrote an async version using libxmljs's push parser [23:36] mscdex: malkomalko: i'll see if i can find that one [23:36] malkomalko: I tried most of the xml to js stuff I could find, but node-expat was the only one that could parse this disgusting soap object I had [23:38] mscdex: malkomalko: here it is i think: http://gist.github.com/416021 [23:38] mscdex: ^ the async version [23:39] shimondoodkin: node-mongodb-native: cursor.toArray() [0]._id =somethingbinay ,i need some id i can pass to html, how to do with that? [23:39] malkomalko: that looks similar to how expat works, which has async for startElement, endElement, and text [23:39] malkomalko: guessing onCharacters is the text equiv [23:40] _announcer: Twitter: "@hober Aw, sorry to have missed you guys. I couldn't figure out what time it was... bummer. Next time. I'd love to chat about node.js. :)" -- ✺ Nate Ritter ✺. http://twitter.com/nateritter/status/17608752315 [23:41] mscdex: malkomalko: possibly [23:41] isaacs has joined the channel [23:41] shimondoodkin: ACTION stumbled upon somthing scarry strange [23:41] shimondoodkin: http://bechick.co.il/mainpage/list.jsp [23:41] opello: malkomalko: would something like prototype's toJSON be an option and just hand it the DomDocument? [23:41] mscdex: malkomalko: not sure if onCharacters buffers the whole text or not [23:42] jacoblyles has joined the channel [23:42] malkomalko: got it, gonna see if I can use this as a starting point, thanks [23:42] dgathright has joined the channel [23:42] malkomalko: probably with that opello is the same prob with most of the other xml -> json, sometimes there is a lot of junk coming back in xml that blows stuff up [23:42] opello: ah [23:44] shimondoodkin: ACTION aww binary junk instead id [23:44] stagas: is there a many to many socket code anywhere? [23:45] shimondoodkin: stagas is such thing exists? [23:45] stagas: I mean, like a chat [23:45] mscdex: stagas: sure [23:46] mscdex: stagas: faye implements bayeaux [23:46] mscdex: stagas: and you could implement something similar with socket.io [23:47] stagas: hmm.. I was thinking of something ready :) [23:49] DTrejo__: off of work now! see you guys when I get home :) [23:49] stagas: that's ruby [23:49] stagas: or not? [23:49] mscdex: stagas: what's that? [23:49] stagas: http://ajaxian.com/archives/faye-bayeaux-protocol-comet-server-for-node-js [23:49] texodus has left the channel [23:49] stagas: am I on the correct page? [23:49] mscdex: stagas: http://faye.jcoglan.com/ [23:49] marshall_law has joined the channel [23:52] stagas: I don't get it. does that use sockets? [23:53] devinus has joined the channel [23:53] davidwalsh has joined the channel [23:54] mscdex: stagas: it probably uses jsonp or something [23:54] mscdex: on the client side [23:54] mscdex: like in the browser [23:54] mscdex: yep, it does [23:55] mscdex: or it uses longpoll [23:55] softdrink has joined the channel [23:56] stagas: CONNECTION_TYPES: ["long-polling", "callback-polling"], [23:58] stagas: hm the socket.io demo will do after all :P [23:59] mscdex: heh [23:59] Tim_Smart: What the the maximum geo co-ordanate?