[00:00] aho: you really are a bastard, jim [00:00] aho: <: [00:01] JimBastard_: i try to keep it real [00:02] mscdex: you try to keep yourself on the on notice board [00:02] mscdex: that's for sure [00:03] [[zz]] has joined the channel [00:03] mscdex: oh yeah and what ncb000gt said earlier, the ascii font renderer only outputs your name no matter what you p‌ut in the text box :-( [00:04] mscdex: javascript-fu be slippin'! [00:04] mscdex: and nodejitsu.com doesn't redirect to www.nodejitsu.com :-P [00:09] ajpiano has joined the channel [00:12] jah_ has joined the channel [00:13] JimBastard_: how are you guys finding this [00:13] JimBastard_: ohh yeah [00:13] JimBastard_: mscdex: i had to do that lol [00:13] JimBastard_: i should put it back [00:14] JimBastard_: i need to push the new version of broodmother [00:14] JimBastard_: its only running locally [00:16] JimBastard_: yeah its back [00:16] JimBastard_: we had to modify broodmother to handle multiple domain names as well as subdomains [00:16] JimBastard_: but we arent ready to push live yet [00:16] JimBastard_: o well [00:16] JimBastard_: its down now [00:16] bmizerany has joined the channel [00:21] Tim_Smart1 has joined the channel [00:25] ajpiano has joined the channel [00:28] fizx has joined the channel [00:33] JimBastard_: You just got Javascriptrolled! #bastardfacts [00:37] bmizerany: what happend to sys.inherit? [00:41] CIA-77: node: 03Ryan Dahl 07master * r7d0252e 10/ (4 files): Fix message tests - http://bit.ly/bCiEsh [00:42] ryah: inherits [00:42] bmizerany: ah. I don't see the in the docs either. I'll try again. [00:42] bmizerany: worked. [00:43] saikat has joined the channel [00:48] bmizerany: comment in anger: lost hours with in this script. http://github.com/bmizerany/borg/blob/master/wscript#L34-37 [00:48] ryah: waf angers many [00:48] bmizerany: ryah: http://github.com/bmizerany/borg/blob/master/wscript#L11 [00:48] bmizerany: heh [00:48] ryah: i hate it [00:49] bmizerany: I mean. I spent hours trying to make it all work. and it came out, like, 50 lines more than a Makefile. [00:49] keyvan has joined the channel [00:49] ryah: that said, i dn't know anything less painful :( [00:49] bmizerany: ryah: any reason not to stick with Make? [00:49] bmizerany: ryah: Rake could be better, IMHO. [00:49] ryah: more painful [00:49] ryah: rake - meh [00:49] bmizerany: ryah: why could make be more painful? [00:50] ryah: well, maybe i'm wrong - git gets away with it [00:50] bmizerany: I ask because I'm not experienced with building node [00:50] ryah: but node's build process is relatively complex [00:50] siculars has joined the channel [00:50] bmizerany: ryah: I really liked how go does it. It's super simple [00:51] bmizerany: well, simple for an end-user [00:51] ryah: well, if you're writing your own compile, i think you can do things right :) [00:51] bmizerany: heh. :) [00:51] bmizerany: true. didn't think of that [00:51] ryah: unfortunately we have to deal with gcc, g++, scons madness across many systems [00:52] ryah: test for all these functions - build libev with different backends [00:52] ryah: etc [00:52] bmizerany: I don't know _enough_ make to say it would better. I just know waf was ridiculus and painful. [00:52] mw has joined the channel [00:52] ryah: and importantly addon authors should have a reasonable interface to build their stuff [00:52] bmizerany: ryah: what I experience was unreasonable. :) [00:53] bmizerany: just yanking your chain. I'm not in much of a position to argue. [00:53] ryah: node-waf has been helpful in that i don't have to worry about it [00:53] ryah: i could easily spend 3 months making my own extconf.rb-type thing [00:53] ryah: and maybe i will at some point, but right now it's nice to offload it [00:53] bmizerany: true. now that I know 40 of the unknown gotchas, I'm sure it won't take long for the next [00:54] bmizerany: ryah: oh yeah. don't do that. [00:54] bmizerany: ryah: rubygems did that. bleh. [00:54] ryah: node depends on python already for building v8 (scons) [00:54] ryah: hence waf [00:54] ryah: (and not rake, for example) [00:54] bmizerany: right. I figure python was a good choice for that fact. [00:55] ryah: scons is total suck [00:55] ryah: very slow [00:55] JimBastard_: i know some python [00:55] JimBastard_: hissssssss hissssssssss [00:55] ryah: JimBastard_: :) [00:55] bmizerany: yeah. I looked into it to see if it would be worth trying to replace waf with, since v8 uses it. I vomited in my mouth, but it came out my nose too, that time. [00:56] ryah: but regarding making links to the build/ dir [00:57] ryah: i think it might be good to just in your frontend lib script do require('./build/default/binding') [00:57] ryah: instead of making a symlink or copying it out [00:58] ryah: i had the idea that these files were going to be installed somehow differently than they were layed out in the build dir [00:58] ryah: laid? [00:58] ryah: but i don't think that's necessary [00:58] ryah: just node-waf configure build [00:58] bmizerany: ryah: __yeah__. I thought about that. but that's gross. I don't like sticking with a convention just because an external dependency forces it, especial one that could be replaced. [00:58] fizx has joined the channel [00:58] ryah: then move the whole dir into ~/.node_libraries [00:58] ryah: i suppose [01:00] ryah: one less moving part, though [01:00] bmizerany: ryah: I don't like waf's idea of "builds". It's unneccsary for node addons, as far as I can tell. so you have this "default" (what does that mean? might ask a non-addon developer) that feels icky [01:00] maushu has joined the channel [01:00] bmizerany: ryah: well. wait. were you saying make the build dir .node_libraries? [01:00] bmizerany: or move the build/default to .node_libraries? [01:01] bmizerany: oh. ~/.node_libraries [01:01] bmizerany: ryah: have you seen/played with rip? or virtual_env? [01:01] ryah: rip? npe [01:01] ryah: neither [01:02] Tim_Smart has joined the channel [01:02] bmizerany: ryah: so rip is a ruby library manager. it uses environments. they are global to the system. [01:02] bmizerany: these packages/libraries are managed in ~/.rip [01:03] ryah: oh i've been thinking about that [01:03] bmizerany: a quick addition to ~/.bashrc to add that to your PATH and you're good. [01:03] ryah: works well? [01:03] bmizerany: it uses symlinks [01:03] bmizerany: ryah: yes. I've written a few like it in sh (for fun) [01:04] bmizerany: so you have ~/.rip/envs/ ~/.rip/active ~/.rip/packages// [01:04] bmizerany: rip uses git (written by defunct) [01:05] bmizerany: but one can imangin adding other transports. git makes it easy to track versions and dependecies. [01:05] bmizerany: ryah: http://hellorip.com/about.html [01:05] bmizerany: oops [01:05] bmizerany: ryah: http://github.com/defunkt/rip [01:06] ryah: i'd like npm to be able to set an install directory [01:06] bmizerany: ryah: python has virtualenv, which is really nice too. you can pack a whole environment (include the interpreter) into one directory, so there are no dependecies outside the apps tree. [01:06] ryah: which would be similar - you'd just add that to your NODE_PATH [01:07] bmizerany: ryah: yeah. [01:07] ryah: but what i could do is do npm setdir ~/projects/my_node_project/deps [01:07] ryah: npm install connect [01:07] ryah: *shrug* [01:07] ryah: build systems and package management [01:07] ryah: hard problems. [01:08] bmizerany: ryah: I haven't looked at npm deeply. My fav feature of rip is that it doesn't add *every* package's lib/ to your RUBYLIB path. It just adds one (~/.rip/active/lib), and manages symlinks there. it doesn't shit all over your environment. [01:08] ryah: yeah [01:08] ryah: that's good [01:08] ryah: npm doesn't have environments - but it should [01:09] Tim_Smart: Hmm apparently my lib is too large for the npm registry [01:10] drudge: seems that node projects have been dominating github explore lately [01:10] bmizerany: ryah: package management is hard. environments have been a much better solution than the model Rubygems uses. Rubygems is know for dependency hell. [01:11] joshbuddy has joined the channel [01:12] JimBastard_: dependency hell is one of the 7 levels of programming hell [01:12] JimBastard_: im not sure which one [01:12] JimBastard_: maybe 4th [01:12] ryah: :) [01:12] JimBastard_: event chain spaghetti is in there too maybe [01:12] bmizerany: JimBastard_: 3rd. right behind naming things and cache invalidation. [01:12] JimBastard_: i should do a skype call with the evil and get a list going [01:12] JimBastard_: cache invalidation ++ [01:12] JimBastard_: s/evil/devil [01:12] ryah: is cache invalidation hard? [01:13] JimBastard_: only if you are an invalid [01:13] bmizerany: JimBastard_: well. 4th. waf come in 3rd. :P [01:13] JimBastard_: im about to release asciimo [01:13] JimBastard_: hes a ascii creating robot [01:13] JimBastard_: works in node console [01:13] JimBastard_: i got 300+ ascii fonts working [01:13] JimBastard_: + colors for fun [01:14] ryah: i want to work on a node app soon [01:15] ryah: irc client or something :) [01:15] JimBastard_: http://i.imgur.com/CDKZc.png [01:15] bmizerany: ryah: heh. Matz once said (I created a Ruby app once, it was fun) [01:15] JimBastard_: yeah ryah , developing apps in node is pretty fun [01:15] JimBastard_: once you get the hang of it [01:15] JimBastard_: i can show you around a bit [01:15] JimBastard_: :p [01:15] JimBastard_: i really should dive into the C code one day, im pretty terrible like that [01:15] JimBastard_: only writing javascript for node [01:15] JimBastard_: >.< [01:15] Tim_Smart: What is the best way to get a 4mb library published on npm :/ [01:16] mattly has joined the channel [01:16] ryah: Tim_Smart: does it crash? [01:16] JimBastard_: Tim_Smart: whats the issue with just adding it normally? [01:16] Tim_Smart: ryah: The registry rejects it [01:16] bmizerany: K. Here is my Redis multi-bulk request parser. 3,000,000 parts, 10 bytes each, parsed in 1 second on my macair. :) http://github.com/bmizerany/borg/blob/master/test/proto_test.js#L53-69 [01:16] ryah: Tim_Smart: i guess tell isaacs? [01:16] Tim_Smart: Yeah, when he is around next [01:16] JimBastard_: http://i.imgur.com/CDKZc.png <-- console output [01:17] JimBastard_: Tim_Smart: whats the url to the repo? i can make sure he looks at it [01:17] Tim_Smart: http://github.com/Tim-Smart/node-closure [01:17] Tim_Smart: I'll commit the package.json now [01:17] JimBastard_: aight [01:17] bmizerany: err. sorry. 1mil in less than a sec. [01:17] ryah: bmizerany: nice [01:18] ryah: what is borg? [01:18] jarsen has joined the channel [01:18] JimBastard_: i shot him a ping on gchat maybe he'll come online Tim_Smart [01:18] bmizerany: ryah: a little distributed thing I'm working on. [01:18] Tim_Smart: JimBastard_: Cheers [01:19] bmizerany: mainly for realtime fault detection featuring low (if any) false positives. [01:20] bmizerany: I chose the redis protocol to the communication transport since most languages have a client for it and it's binary safe. [01:20] ryah: fault detection in what? [01:20] bmizerany: ryah: the "cloud". what else? :) [01:20] ryah: bmizerany: unrelated - have you seen this: http://db.ranney.com/ [01:21] ryah: so cool [01:21] bmizerany: ryah: knowing when nodes go offline and become unresponsive, or net-splits, where nodes may be alive but not able to talk others, and they can commit "suicied" if left alone/behind. [01:22] bmizerany: ryah: that is really cool. node app? [01:22] ryah: bmizerany: yeah, using node_pcap [01:23] chrischris has joined the channel [01:23] ryah: i want to do real-time analytics-type deal with node_pcap [01:23] ryah: drop a little process onto a web server vps [01:23] ryah: display stats at port 8000 [01:24] ryah: (node_pcap is hooked up to node's http parser too, so it can analyize requests) [01:25] bmizerany: ryah: that *is* sick. [01:25] bmizerany: ACTION has a nerd boner [01:26] ryah: the http parser can be interrupted at any time and it doesn't buffer data [01:26] ryah: so you can just feed it packets as you get them [01:26] bmizerany: nice [01:29] ryah: ACTION imagines nice svg graphs scrolling smoothly [01:29] ryah: req/res processing times [01:29] ryah: drill down by url [01:30] bmizerany: ryah: you saw the hummingbird app that Gilt Groupe has right? [01:30] ryah: yeah [01:30] bmizerany: ryah: sexy [01:30] ryah: but that's using an image on the page [01:30] ryah: just tracks how many people load that image [01:30] bmizerany: ryah: yeah. true. [01:30] ryah: this would be outside of all the webserving/browser processing [01:30] ryah: just passively watching the traffic [01:31] bmizerany: ryah: yeah. that's pretty awesome. [01:32] slaskis has joined the channel [01:32] ryah: my dream is to get the openssl binding good enough that we can also do a ssldump-type app [01:32] ryah: decrypt ssl traffic sseen through pcap [01:32] ryah: would be cool [01:32] bmizerany: ryah: so what's all the new stuff about spawn and FD's and stuff? I've been in v8 land for while, learning the ins and outs (thanks to your help). [01:34] bmizerany: I think I've got a good grasp on HandleScope/Local/Handle/Persistant now. I got enough segfaults to understand when GC kicks in. :) [01:34] ryah: bmizerany: the main thing is sharing server sockets between processes [01:34] isaacs has joined the channel [01:34] bmizerany: ryah: do tell. [01:34] ryah: so normally node processes are single threaded - restricted to one core [01:34] isaacs: Tim_Smart: yo [01:35] bmizerany: right. [01:35] ryah: but you can start 4 node processes (one for each core), start an http server on one, and pass the server to the other 3 [01:35] Tim_Smart: isaacs: I tried to publish a 4mb lib [01:35] Tim_Smart: isaacs: It came back with an error [01:35] isaacs: Tim_Smart: gist or pastie? [01:35] kodisha: hey, guys, can few of you point your browsers here, http://kodisha.net:8000/ i want to see if the server will slowdown [01:35] bmizerany: ryah: sick. what is the interface to that? [01:35] ryah: then the kernel load balances the incoming connectins across the 4 processes [01:36] ryah: bmizerany: basically open a unix socket /tmp/blah.sock [01:36] bmizerany: ryah: ah. using unix sockets. [01:36] Tim_Smart: isaacs: http://pastie.org/1011953 [01:36] ryah: then do socket.write("here's an fd", httpServer.fd) [01:36] ryah: then on the other side listen for the 'fd' event [01:36] ryah: socket.addListener('fd') [01:37] ryah: but there are easier interfaces now... [01:37] isaacs: Tim_Smart: i *really* hate nginx sometimes. my mission tomorrow is to get rid of it, i think. [01:37] Tim_Smart: ok [01:37] isaacs: Tim_Smart: can you try this? npm config set registry http://registry.npmjs.org [01:37] isaacs: and then try again [01:37] kodisha: any recommendation for chunk size when serving static files? [01:38] bmizerany: ryah: so does one process merely dump the incoming data to the socket, then others handle the load? i.e. nginx -> socket -> (5 nodes) [01:38] Tim_Smart: isaacs: OK I'll give that a shot [01:38] ryah: bmizerany: the connection isn't proxied [01:38] isaacs: Tim_Smart: actually, you'll have to do this, too: npm unpublish closure-compiler 0.1.0 [01:38] ryah: bmizerany: it's like how you can have 4 nginx workers [01:38] bmizerany: ryah: ah. so all 5 nodes read/write [01:39] ryah: nginx workers is the same technique [01:39] bmizerany: ryah: I'm not familiar with nginx workers. [01:40] ryah: bmizerany: unicorn too [01:40] ryah: "pre-fork" server [01:40] bmizerany: ryah: right. fork. [01:40] ryah: bmizerany: http://github.com/pgriess/node-webworkers/tree/7a55ee325f090efe8a0521fb4fd48c310b7dd18d/examples/prefork [01:40] bmizerany: ryah: ok. so you start a node that forks 3 more, passing the fd? [01:41] ryah: easier interface --^ [01:42] bmizerany: ryah: very nice. must the nodes be on the same machine? [01:42] ryah: yeah [01:43] bmizerany: ryah: confused: http://github.com/pgriess/node-webworkers/blob/7a55ee325f090efe8a0521fb4fd48c310b7dd18d/examples/prefork/worker.js#L14 [01:43] bmizerany: ryah: who uses that? [01:43] ryah: that's part of pgriess's webworker thing [01:43] ryah: it's the webworker api [01:43] Tim_Smart: isaacs: OK that works, except I forgot to unpublish first [01:44] bmizerany: ryah: ah. that isn't part of node/core, right? [01:44] ryah: bmizerany: no [01:44] Yuffster has joined the channel [01:44] isaacs: Tim_Smart: um.. it's unpublished now. you have to publish it again [01:44] Tim_Smart: yeah [01:44] isaacs: Tim_Smart: qv http://registry.npmjs.org/closure-compiler/ [01:44] ryah: bmizerany: that webworker lib hides the complexity of setting up the unix sockets [01:44] bmizerany: ryah: I'm sure the node api will be slick [01:45] ryah: yeah but we've been doing some tests - seems to work okay [01:45] ryah: scales req/sec pretty linearly [01:45] bmizerany: ryah: it's already easy to build any type of server. I'm sure you'll get this there. [01:45] bmizerany: very nice. [01:47] bmizerany: ryah: this is hot dude. got any pointers for getting started? now that I'm on a roll in v8 land, I'm willing and able to help. It's something I could really use. is the github issues tracker a good place to find todo's on this? [01:48] Tim_Smart: isaacs: Done [01:48] isaacs: Tim_Smart: looks good! [01:49] ryah: bmizerany: http://twitter.com/mape/status/15804014698 [01:49] Tim_Smart: Hmm how do you convert a c++ addon for npm, isaacs? [01:51] isaacs: Tim_Smart: just like a normal module, but have an install script that builds it. {"scripts": { "preinstall" : "node-waf configure", "install":"node-waf build"} } [01:51] isaacs: Tim_Smart: or, if you prefer, { [01:51] isaacs: " [01:51] isaacs: Tim_Smart: or, if you prefer, {"scripts":{"install" : "make"}} [01:51] ryah: isaacs: both work? [01:51] isaacs: Tim_Smart: and then have a "main" field pointing to the thing that you build. "main":"./build/blerg" [01:51] isaacs: ryah: sure, i mean, if there's a makefile there. [01:51] ryah: oh ok [01:51] isaacs: ryah: npm just runs whichever script you give it [01:52] ryah: isaacs: can i do {"scripts": { "install": "node-waf configure build" } } [01:52] isaacs: i should make it go through sh, though, since right now it just executes the command directly, so stuff like make && make-install won't work [01:52] Tim_Smart: isaacs: If it is a combination of js and c++, then you will need to cp the .node file somewhere [01:52] isaacs: ryah: sure [01:52] isaacs: Tim_Smart: no, i leave the .node file where it is, and proxy to it, just like any other main module [01:53] Tim_Smart: isaacs: This is the structure: lib/some-name/index.js; src/c_code.cc; [01:53] ryah: isaacs: it'd be nice if npm detected that wscript was there - and people didn't add "scripts" [01:54] isaacs: ryah: i like patches ;) [01:54] isaacs: tha'ts not a bad idea [01:54] Tim_Smart: isaacs: I want it to compile the C++ code, then insert into lib/some-name [01:54] ryah: ACTION just updated node_postgres on npm [01:54] isaacs: Tim_Smart: you can always just put whatever you want into a shell script, and then do "scripts":{"install":"./build-it.sh"} [01:55] Tim_Smart: yeah sounds good to me [01:55] ryah: node> require('postgres') [01:55] ryah: { createConnection: [Function] } [01:55] ryah: :D [01:56] isaacs: ryah: that's awesome [01:56] ryah: ACTION loves when stuff works [01:56] isaacs: ryah: so you named it "postgres", then? [01:56] ryah: yeah [01:56] isaacs: ACTION approves [01:56] ryah: i had to do "npm install postgres@latest" though [01:56] isaacs: ryah: yeah [01:57] isaacs: ryah: you can tag it as stable. i'm going to start making "latest" the default tag from now on. that's too confusing. [01:57] isaacs: ryah: in a world where most things are actually stable, and there's a lot of development going on, you'd probably want it defaulting to that. but for now, everything's moving fast, and node is still small enough [01:58] ryah: isaacs: yeah, well it'd be nice if it prompted you or something [01:58] isaacs: ryah: npm config set tag latest [01:58] ryah: or said "stable isn't available do 'npm install postgres@latest'" [01:58] isaacs: Tim_Smart: also, you can change the registry back to https. i figured out what was wrong. i'd changed the setting in the wrong place. [01:58] grantmichaels has joined the channel [01:58] Tim_Smart: isaacs: Yeah I have [01:58] isaacs: Tim_Smart: npm config set registry https://registry.npmjs.org [01:58] isaacs: Tim_Smart: it should work now [01:59] isaacs: ryah: the thinking is that, in a "real" environment, you would'nt want to install the latest version of anything ever, if there's a stable version. [02:00] isaacs: ryah: and if there's no stable version, you should have to explicitly say "yeah, i know, get me the latest, even though it's not stable" [02:00] isaacs: ryah: but like, *nothing* in node is stable. *node* isn't stable. [02:00] isaacs: so it's stilly [02:00] isaacs: *silly [02:00] ryah: yeah [02:01] ryah: the theory behind it is understandable [02:01] ryah: isaacs: have you seen this http://github.com/defunkt/rip [02:02] mscdex: lol @ "rip-off" [02:03] isaacs: ryah: that's actually pretty doable with npm and nave already [02:03] isaacs: ryah: almost [02:04] isaacs: ryah: i should have nave set your NODE_PATH, and then it'd be almost exactly the same, but with less installation. [02:04] Tim_Smart: isaacs: Look fine? http://github.com/Tim-Smart/node-compress/commit/1359cba46e50fd84a6cec1b302bb00006ebfbfc1 [02:04] jakehow has joined the channel [02:06] isaacs: Tim_Smart: so, why not just do this in your package.json? "scripts":{"preinstall":"node-waf configure build", "install":"cp ./build/default/compress-bindings.node ./lib/compress"} [02:06] Tim_Smart: isaacs: It means an easy install for those without npm : [02:06] Tim_Smart: :) [02:06] isaacs: Tim_Smart: fair enough :) [02:08] Tim_Smart: isaacs: OK all the dependencies for http://github.com/Tim-Smart/node-asset are in the registry [02:09] ryah: Tim_Smart: http://github.com/ry/node_postgres/blob/f955d0a05b2d5cb56a76e26ba748089d63929daa/postgres.js#L1 [02:09] isaacs: sweet [02:09] Tim_Smart: ryah: Oh yeah. Makes it hard for those who want everything contained in one directory [02:10] fowlduck has joined the channel [02:10] Tim_Smart: isaacs: So where are the docs for dependencies in package.json? [02:11] isaacs: Tim_Smart: npm help json [02:11] ryah: isaacs: is this right: http://github.com/ry/node_postgres/raw/8f54a00a563d30c48945e84db4050b4a91ccbbfd/package.json ? [02:11] isaacs: ryah: lgtm [02:12] isaacs: ryah: where do i get pg_config? [02:12] fowlduck: what's the best way to get nodejs on osx? nvm? homebrew? [02:12] isaacs: fowlduck: git [02:12] isaacs: fowlduck: or nave [02:12] fowlduck: can nvm build from HEAD? [02:13] fowlduck: nave? [02:13] isaacs: fowlduck: http://github.com/isaacs/nave [02:13] fowlduck: haha, shameless plugs ftw! ;) [02:13] isaacs: hehe [02:13] isaacs: fowlduck: it's like nvm, but using subshells instead of a bash function [02:13] fowlduck: subshells? [02:13] fowlduck: ahhh [02:14] isaacs: yeah, like it sets up the paths, and then starts a new shell with the proper env vars [02:14] isaacs: so you do: nave use 0.1.98; node [02:15] fowlduck: nothing about installing it [02:15] fowlduck: oh, it's just a shell script [02:15] isaacs: fowlduck: yeah [02:15] fowlduck: ~/bin it is [02:15] isaacs: sure, that works [02:15] fowlduck: is npm recommended? [02:15] isaacs: fowlduck: well, yo ualready called me on the shameless plugs.... [02:16] saikat has joined the channel [02:16] isaacs: fowlduck: but, yes. [02:16] fowlduck: haha [02:16] fowlduck: i see (just searched on github) [02:17] ryah: isaacs: it's part of postgres [02:17] isaacs: ryah: ah, i figgered [02:18] isaacs: fowlduck: honestly, just using node by doing the ./configure make install thing with the tarballs on nodejs.org, that's probably the best bet. [02:18] fowlduck: chicken/egg issue. need to install nave to install node to install npm to install nave [02:18] isaacs: fowlduck: you don't really need npm to install nave. you can just download the git repo and go to town on it [02:18] fowlduck: k [02:18] isaacs: fowlduck: but yeah, i mean, most of us probably just run node from HEAD [02:19] isaacs: fowlduck: nave and nvm are mostly good if you want to *switch* node versions often. [02:19] fowlduck: see, i'm not sure if i will [02:19] isaacs: fowlduck: and they do some nice segmenting of installed node libraries [02:20] isaacs: fowlduck: trust me. you will. node is growing fast. [02:20] fowlduck: k [02:20] isaacs: fowlduck: and i'm sure it has bugs that'll be fixed, and you'll be like "hey, how come this doesn't work?" and everyone on the mailing list will be like "well, duh, that version is a whole 3 weeks old, what are you a caveman or something? jeez!" [02:20] fowlduck: cool, nave install HEAD [02:20] fowlduck: haha [02:21] fowlduck: i was reading the node api in the car for an hour today. interesting stuff [02:21] fowlduck: where/how are ppl hosting node apps? [02:22] fowlduck: isaacs: where does nave install node at? [02:22] Tim_Smart: isaacs: npm install node-asset [02:23] isaacs: fowlduck: wherever the shell script is. [02:23] isaacs: fowlduck: it creates the "installed" and "src" dirs [02:23] fowlduck: hrm, k [02:23] ryah: /usr/bin/g++ debug/src/node_7.o debug/src/node_buffer_7.o debug/src/node_http_parser_7.o debug/src/node_net_7.o debug/src/node_io_watcher_7.o debug/src/node_child_process_7.o debug/src/node_constants_7.o debug/src/node_cares_7.o debug/src/node_events_7.o debug/src/node_file_7.o debug/src/node_signal_watcher_7.o debug/src/node_stat_watcher_7.o debug/src/node_stdio_7.o debug/src/node_timer_7.o debug/src/node_script_7.o debug/src/platform_darwin_7.o debug/src/node_c [02:23] isaacs: ok, gotta run [02:24] isaacs: Tim_Smart: looks like compress didn't publish right [02:24] ryah: http://gist.github.com/raw/445494/8bfcbbe91d9a5ddaf2962f32274f35aa65206062/gistfile1.txt <-- [02:24] ryah: painful [02:25] Tim_Smart: isaacs: ok [02:25] Tim_Smart: isaacs: I'll take a look in a min [02:25] isaacs: dinner time. keep it real, noders. [02:27] saikat` has joined the channel [02:28] fowlduck: wtf nave [02:28] fowlduck: subshell indeed [02:31] Tim_Smart: compress publish correctly this time [02:31] CIA-77: node: 03Ryan Dahl 07master * rf1a4f17 10/ (5 files in 3 dirs): script.runIn*Context not throwing errors properly. - http://bit.ly/cGC6p0 [02:31] maushu has joined the channel [02:35] mikeal has joined the channel [02:39] jbrantly has joined the channel [02:39] fizx has joined the channel [02:47] bmizeran_ has joined the channel [02:54] micheil has left the channel [02:54] stephenjudkins has joined the channel [02:55] k23z__bum has joined the channel [02:56] k23z__bum: any stuff for Node.js to print a 2D array column-aligned ? [02:56] k23z__bum: array contains strings [02:59] k23z__bum: ok, so I need to print a 2D array [02:59] k23z__bum: and need to align it [02:59] k23z__bum: hw do I do that ? [02:59] tmpvar: nested for loops [02:59] tmpvar: and tabs :P [03:00] k23z__: tmpvar: err [03:00] k23z__: tmpvar: yes but there are lots of corner cases . [03:01] tmpvar: ok [03:01] bpot has joined the channel [03:12] ryah: k23z__: i think there's a printf lib somewhere [03:14] keyvan has joined the channel [03:17] k23z__: ryah: linke me scotty [03:18] maushu has joined the channel [03:19] ryah: k23z__: http://www.diveintojavascript.com/projects/sprintf-for-javascript [03:19] ryah: but i'm not sure that does what you need it to [03:20] fowlduck: anyone here use connect? wondering how to use the router [03:21] fowlduck: and other providers, really [03:25] fictorial: atmos: just reading scrollback after about 4 days. I have about 10 minutes, then I need to get back to my new daughter! She arrived very early but all is well. In fact, I'm out. Bye! [03:30] CIA-77: node: 03Ryan Dahl 07master * r1c7057f 10/ tools/test.py : Execute message tests by default - http://bit.ly/cPDEdH [03:31] fowlduck: hrm [03:31] tav has joined the channel [03:31] k23z__: ryah: thx [03:38] stephenjudkins has joined the channel [03:39] hdon has joined the channel [03:40] Tim_Smart has joined the channel [03:41] fizx has joined the channel [03:42] saikat has joined the channel [03:47] fowlduck: no idea how to use this [03:47] fowlduck: hrm [03:51] Tim_Smart: fowlduck: What you using? [03:51] fowlduck: connect [03:51] fowlduck: trying to use the router but haven't the faintest idea how [03:51] fowlduck: http://github.com/extjs/Connect/blob/master/lib/connect/providers/router.js [03:51] everton has left the channel [03:52] fowlduck: everything i'm throwing at it doesn't work due to setup being undefined here: http://github.com/extjs/Connect/blob/master/lib/connect/providers/router.js#L61-66 [03:52] softdrink has joined the channel [03:53] Tim_Smart: Oh ok. I haven't tried connect yet [03:53] fowlduck: :) [03:53] fowlduck: i'm a webdev from the rails community so i decided to dive into what i'm most familiar with, rack/sinatra-ish node stuff seemed to fit the bill [03:54] fowlduck: might try express instead [03:55] fowlduck: no other providers have setup with (env, setup), just (env). maybe it's broken... [03:57] fowlduck: no tests for the router either [03:58] manveru: is there some way to compare nested arrays in nodejs? [03:59] fowlduck: maybe i should just be using rest? [03:59] fowlduck: manveru: can you diff the inspects on them? [03:59] manveru: probably... [04:00] fowlduck: just an idea (i'm a noob) [04:00] manveru: no way to augment === for Array? [04:01] mikeal has joined the channel [04:01] manveru: well, seems like someone solved that problem already [04:01] manveru: http://www.svendtofte.com/code/usefull_prototypes/prototypes.js [04:02] saikat has joined the channel [04:03] joshbuddy has joined the channel [04:03] fowlduck: nice [04:06] Tim_Smart: manveru: JSON.stringify is one way of comparing, it they don't contain functions etc [04:06] manveru: yeah... i don't know what it will contain [04:07] JimBastard_ has joined the channel [04:07] JimBastard_: okay! who wants to test!! http://asciimo.com/ [04:07] JimBastard_: http://github.com/marak/asciimo [04:08] JimBastard_: Atmos ? :p [04:08] JimBastard_: atmos [04:10] Clooth has joined the channel [04:10] Tim_Smart: JimBastard_: You might want to npm publish node_mailer [04:11] JimBastard_: yeah [04:11] JimBastard_: im on it [04:13] JimBastard_: i think i did it Tim_Smart [04:13] joshbuddy_ has joined the channel [04:14] Tim_Smart: ok [04:15] Tim_Smart: JimBastard_: Yup http://registry.npmjs.org/node_mailer/ [04:15] JimBastard_: cool [04:15] JimBastard_: i gotta add a bunch more [04:15] JimBastard_: maybe tonight [04:15] JimBastard_: you check out asciimo? [04:15] JimBastard_: he works on the node console [04:15] JimBastard_: hello installer welcome messages [04:16] derferman has joined the channel [04:22] Tim_Smart: Hmm node isn't finding openssl, even after apt-get install openssl [04:25] Tim_Smart: ryah: ping [04:27] Tim_Smart: nvm, I just had to install libssl-dev [04:29] jedschmidt has joined the channel [04:33] stephenjudkins_ has joined the channel [04:33] gb|work has joined the channel [04:35] gb|work: hi there, i'm thinking of using node.js for web analytics at my company. i'm thinking of using it in combination with mongodb. i'm finding lots of sources on the internet that suggest to brigde the data with redis. any suggestions about this topic? [04:35] gb|work: also, does anybody have good info on deploying a cluster of nodes [04:39] Tim_Smart1 has joined the channel [04:43] gb|work: hi there, i'm thinking of using node.js for web analytics at my company. i'm thinking of using it in combination with mongodb. i'm finding lots of sources on the internet that suggest to brigde the data with redis. any suggestions about this topic? [04:43] gb|work: also, does anybody have good info on deploying a cluster of nodes [04:53] fizx has joined the channel [05:03] zaach has joined the channel [05:04] zaach has left the channel [05:05] ryah: Tim_Smart: hey [05:05] ryah: Tim_Smart: oh, okay [05:10] fizx has joined the channel [05:29] kriskowal has joined the channel [05:35] mscdex has joined the channel [05:42] siculars has joined the channel [05:52] CIA-77: node: 03Ryan Dahl 07master * rb93faf9 10/ test/message/undefined_reference_in_new_context.out : [05:52] CIA-77: node: Comment out lines with full paths in message test. [05:52] CIA-77: node: Note that * in the .out files is a special wildcard. - http://bit.ly/92EZVg [05:52] Guest91024 has joined the channel [06:02] mostlygeek has joined the channel [06:03] mqt` has joined the channel [06:04] ayo has joined the channel [06:11] rphillips has joined the channel [06:12] jsilver has joined the channel [06:12] pandark_ has joined the channel [06:13] CIA-77: node: 03Ryan Dahl 07master * reda21cc 10/ test/simple/test-http-exceptions.js : Fix race condition in test-http-exceptions.js - http://bit.ly/cFaolk [06:14] Guest39010 has joined the channel [06:16] kriskowal has joined the channel [06:17] agnat has joined the channel [06:18] ryan[WIN] has joined the channel [06:18] gwoo has joined the channel [06:20] gb|work has joined the channel [06:21] chrischris has joined the channel [06:22] mikeal has joined the channel [06:24] gb|work: hi there, i'm thinking of using node.js for web analytics at my company. i'm thinking of using it in combination with mongodb. i'm finding lots of sources on the internet that suggest to brigde the data with redis. any suggestions about this topic? [06:24] gb|work: also, does anybody have good info on deploying a cluster of nodes [06:25] mqt` has joined the channel [06:29] JimBastard_ has joined the channel [06:30] rphillips has joined the channel [06:33] stephenjudkins has joined the channel [06:35] JimBastard_: zzzz [06:35] mqt` has joined the channel [06:47] sechrist has joined the channel [06:48] mostlygeek has joined the channel [06:49] sechrist: who's good with git in here? [06:49] sechrist: JimBastard: ^^ [06:50] sechrist: I have a folder with subfolders of a project -- it's mainly like the www root and the actual node-application and stuff. I'd like a way to like separate the two subfolders so I can check out just one -- but push them at the same time when i'm working on them. [06:52] joshbuddy has joined the channel [06:52] joshbuddy has joined the channel [06:53] mqt` has joined the channel [06:56] rphillips has joined the channel [07:05] Guest84720 has joined the channel [07:11] qFox has joined the channel [07:17] fizx has joined the channel [07:22] steadicat has joined the channel [07:26] zomgbie has joined the channel [07:26] JimBastard_: hey sechrist [07:27] sechrist: ey [07:27] sechrist: can you school me on git for a bit? [07:27] sechrist: #git was dead [07:28] sechrist: mainly I just want to be able to check out a subfolder of a git repo -- but it looks like they should be branches or something [07:28] sechrist: I have the master which has two folders -- www and nodeapp, I'd like to check them out separately [07:30] sechrist: or is that even possible [07:31] JimBastard_: hrmm [07:32] JimBastard_: is it one repo? [07:32] JimBastard_: you have to pull the whole repo [07:32] sechrist: for now -- yes [07:32] JimBastard_: you cant pull part of the repo, but im not sure [07:32] sechrist: ah okay -- I saw that was a git limitation [07:32] sechrist: so even if you want a subfolder you still have to have the full repo in the .git? [07:33] jetienne has joined the channel [07:34] JimBastard_: yeah [07:34] JimBastard_: but its just folders [07:34] JimBastard_: you can delete the .git [07:34] JimBastard_: and make a new one [07:34] JimBastard_: can you test http://asciimo.com/ please [07:35] sechrist: works [07:35] sechrist: haha so if I wanted to create a node.js shell with a welcome message this could generate it? [07:35] JimBastard_: hell yeah [07:35] JimBastard_: goto the github [07:35] JimBastard_: clone and check out the node-demo.js [07:35] JimBastard_: it should work [07:36] sechrist: http://i46.tinypic.com/5kps14.png [07:36] sechrist: man this whole use the same code in node and the browser is so cool [07:36] JimBastard_: yeah [07:36] JimBastard_: i think i am leading in dual-sided libraries [07:36] JimBastard_: i dunno anyone who has more out right now [07:36] JimBastard_: ^_^ [07:36] JimBastard_: its tricky business [07:36] JimBastard_: but i think i have a plan to port nodejs to the browser [07:37] sechrist: how are you effectively detecting node? is there an object that exists only in node? [07:37] JimBastard_: ive been trying a few approaches [07:37] JimBastard_: in all my libs [07:37] JimBastard_: you should check out the bundle file is like Faker, or js-fu, or jslinq, or asciimo [07:37] JimBastard_: if you are interested in doing the detect [07:37] JimBastard_: theres a lot of ways [07:37] JimBastard_: i like this one a bit, its simple [07:37] sechrist: there's no global.inNode? that would seem the simplest way [07:38] sechrist: but that means node would have to oblige [07:38] JimBastard_: if(typeof exports == undefined){ var exports = window;} [07:38] JimBastard_: that is the poor mans version [07:38] sechrist: ahh [07:39] jetienne: sechrist: you can try to see if window is there, or if process is there [07:39] rphillips has joined the channel [07:39] sechrist: but neither is concrete [07:39] sechrist: window moreso yeah [07:39] jetienne: sechrist: what do you mean by concrete ? [07:39] sechrist: I mean it always works but if there's a javascript library that defines either [07:39] sechrist: t [07:40] sechrist: that detection technique loses effectiveness [07:40] sechrist: it's not black or white as to if it's node.js or not [07:40] sechrist: if(typeof global.insideNodeJS would be absolute imo [07:40] jetienne: sechrist: got you. i agree, we should push ryah to define such a thing [07:41] jetienne: sechrist: no it wont, because it could be defined in a browser [07:41] sechrist: if you're defining that you're trying to mess it up [07:41] sechrist: process and exports is more multipurpose [07:41] jetienne: sechrist: the 'solution" is nodejs to forbid the definition of some fct/var which are present in browser [07:43] jetienne: sechrist: all in all, put that window/process in a function and change this function when you got a better alternative [07:43] sechrist: well yeah [07:44] sechrist: oh wow -- this metamaterial crap on history channel is cool [07:44] sechrist: it bends radiowaves around it -- effectively cloaking to like radar and stuff [07:44] sechrist: they claim they're working on getting light to bend around it which would mean complete invisibility [07:45] rphillips has joined the channel [07:45] jetienne: invisible to radar and light... would be cool :) [07:45] jetienne: but im sure they would not talk to history channel, more to military people :) [07:46] sechrist: oh they've already mentioned military contracts [07:46] sechrist: this metamaterial stuff is actually several years old -- it debuted in like 200 [07:46] sechrist: 2006* [07:47] sechrist: oh wow -- the invisibility is already working [07:47] sechrist: on a small scale [07:48] sechrist: I figured it would be something gravitational to do it -- I mean that's what Einstein's general theory of relativity proved [07:58] JimBastard_ has joined the channel [08:03] mqt has joined the channel [08:05] JimBastard_: yo mscdex [08:05] JimBastard_: http://www.nodejitsu.com/ [08:06] rphillips has joined the channel [08:12] jspiros has joined the channel [08:12] jspiros_ has joined the channel [08:13] JimBastard_: also, anyone who wants to help me test out http://asciimo.com/ or http://github.com/marak/asciimo/ [08:13] JimBastard_: would be much appreciated [08:13] JimBastard_: gonna post online soon [08:13] jspiros has joined the channel [08:14] jspiros has joined the channel [08:14] mqt` has joined the channel [08:16] rphillips has joined the channel [08:18] jedschmidt has joined the channel [08:19] JimBastard_: hey jedschmidt ! [08:19] jedschmidt: hey JimBastard_ ! [08:19] JimBastard_: ya japan timezone [08:19] jedschmidt: indeeeed. [08:19] JimBastard_: you think you could test something really quick for me please? [08:19] jedschmidt: sure. [08:19] JimBastard_: http://github.com/marak/asciimo/ [08:19] JimBastard_: there is a live site too, but i wanna see if the node demo is good to go [08:19] JimBastard_: http://asciimo.com/ [08:20] mikeal has joined the channel [08:20] JimBastard_: ohh shit mikeal are you alive [08:20] JimBastard_: i wanted to ping you about some couch.io stuff [08:21] JimBastard__ has joined the channel [08:23] jedschmidt: jah, works for me JimBastard_ [08:23] JimBastard_: in console? [08:23] JimBastard_: jedschmidt [08:24] jedschmidt: yeah. your node-demo.js file [08:24] JimBastard_: cheaaaaa [08:24] JimBastard_: great success [08:24] JimBastard_: thanks [08:24] jedschmidt: np [08:24] JimBastard_: now please use this for your installers :-D [08:24] mikeal: im about to sleep [08:26] mqt` has joined the channel [08:29] mostlygeek has joined the channel [08:37] mqt` has joined the channel [08:39] nostromo has joined the channel [08:40] nostromo: Hi, is there a "standard" way to handle HTTP CONNECT in node.js? [08:41] nostromo: I think I got it working with a minimal patch [08:42] femto has joined the channel [08:43] JimBastard_: sup nostromo [08:44] nostromo: not yet completely functional, but I'm being able to have a session with gmail through a node.js proxy [08:45] ryah: nostromo what'd you have to change? [08:45] nostromo: in deps/http_parser/http_parser.c: [08:45] nostromo: parser->method = HTTP_CONNECT; [08:45] nostromo: + parser->flags |= F_UPGRADE; [08:45] nostromo: break; [08:46] ryah: :/ [08:46] nostromo: and then use the upgrade event proxy [08:46] ryah: can you gist a past or so? [08:46] ryah: patch [08:46] nostromo: yeah, or even a pull request [08:46] nostromo: but it is not yet fully working, the logic in my proxy is not clean, hence I'm not sure there is nothing broken in the idea [08:47] ryah: nostromo: paste the patch, and maybe i can tell you [08:47] nostromo: the idea is to switch to the only upgrade mechanism implemented [08:47] nostromo: this is all the patch :) [08:47] markwubben has joined the channel [08:47] ryah: but i don't know what line that is :) [08:47] nostromo: the other thing is my dirty version of the 20 lines http proxy code (now getting to 160 lines) [08:47] JimBastard_: ryah: did you see my leet ascii art tool ahahaha [08:47] JimBastard_: now we have awesome ascii text fonts in the console [08:48] JimBastard_: ACTION says, worst project ever [08:48] ryah: JimBastard_: yeah, looks cool [08:48] JimBastard_: ahahaha [08:48] JimBastard_: i hope someone uses it for an installer [08:48] JimBastard_: crap server died [08:48] JimBastard_: not that again [08:49] ryah: nostromo: but gmail shouldn't be using the connect method.. [08:49] nostromo: I'm offline [08:49] jak has left the channel [08:49] jak has joined the channel [08:49] nostromo: it is using it, when configured through a proxy [08:50] ryah: hm, i'm not sure i understand... [08:50] JimBastard_: so indexzero decided to update our production servers node again without testing or really telling me [08:50] JimBastard_: and its randomly crashing ahahahaha. so i get to watch server logs for a while [08:50] JimBastard_: fuuuuu him [08:50] JimBastard_: i could kill him right now hes sleeping on the couch. no one would ever know [08:50] nostromo: I started with the code in http://www.catonmat.net/http-proxy-in-nodejs and then modified it to have CONNECT support [08:52] nostromo: now I can use this proxy to connect to gmail too, login to facebook is not yet working, not sure why [08:53] ryah: but why connect support... [08:53] ryah: web browsers don't sent connect [08:54] ryah: (or do they?) [08:54] mape: mornin [08:54] ryah: mape: howdie [08:54] nostromo: ryah: connect is how typically https through proxy works [08:54] ryah: nostromo: huh - i didn't know that.. [08:54] rphillips has joined the channel [08:55] nostromo: the browser sends CONNECT host:port to proxy, the proxy opens a socket to host:port... [08:55] nostromo: Upgrade is like the "right" protocol way to do CONNECT [08:56] nostromo: but it didn't exist back then [08:56] ryah: so CONNECT is for tunneling [08:56] ryah: ok [08:56] nostromo: yeah, I'm having a problem undestanding the fine details, as I can't find documentation [08:56] ryah: wow okay - i never knew this... [08:56] mape: http://github.com/igrigorik/async-rails [08:56] joshbuddy has joined the channel [08:57] JimBastard_: lol mape [08:57] nostromo: I mean, after I get "upgraded", I send "200 Connection Established\r\n", and it works [08:57] JimBastard_: fuck rails [08:57] JimBastard_: i know nodejitsu [08:57] JimBastard_: http://www.nodejitsu.com/ [08:57] JimBastard_: ACTION prays the webserver doesnt got down in the time you click that link [08:57] JimBastard_: which is probaly will [08:57] mape: Hmm, "Looks like a single thin on my MBP peaks ~50 req/s (with internal hit, so 100 req/s total)." [08:58] nostromo: I seem to have some timing issues, as google gives an error warning about wrong mac every so and so connections (like 20-100) [08:58] JimBastard_: i dont care what type of benchmark those guys run. i test my shit out against the front page of reddit and hackernews [08:59] nostromo: and I can't login to facebook using it :( (the error is ssl_error_wrong_mac_alert) [09:00] JimBastard_: if i ctrl-k on a remote ssh session, will that count towards my timeout? [09:00] JimBastard_: like reset it? [09:00] JimBastard_: nm [09:00] JimBastard_: its cmd-k [09:00] JimBastard_: so i think not [09:00] ryah: mape: rails a lot more than 'hello world' [09:00] JimBastard_: how can i keep my console open without timing out? but i dont want to nohup [09:01] JimBastard_: i wanna watch the consoles [09:01] mape: Yeah that I do get, still 50req a sec doesn't seem like much [09:01] mape: Anyone here involved in Less.js ? [09:01] nostromo: JimBastard I used to tweak the OS to use TCP_KEEPALIVE (linux) [09:01] ryah: mape: *shrug* probably enough [09:01] ryah: 50 is a lot better than 0.5 :) [09:02] ryah: which is what rails typically gets :) [09:02] ryah: mape: cloudhead is the author [09:02] JimBastard_: mape: what about less.js [09:02] JimBastard_: i talk to cloudhead like everyday [09:02] mape: That is like saying ugly people get laid at bars because their friends are ugly. [09:03] mqt` has joined the channel [09:03] mape: JimBastard_: Wondering about the local cache part, saying it will be as fast as native, so that means adding the script at the very top of the page not to get it flickering? And should that be inlined so it doesn't block the rest of the site loading? [09:04] jbrantly has joined the channel [09:04] JimBastard_: mape: what are you talking about [09:04] JimBastard_: less? [09:04] JimBastard_: just open an issue with your question [09:04] mape: Nm [09:05] sechrist: what's the most up to date couchdb driver? felixges? [09:05] JimBastard_: sechrist: try cradle [09:05] JimBastard_: http://github.com/cloudhead/cradle [09:05] sechrist: gotcha [09:05] ryah: wow [09:05] ryah: "npm install less" actually worked [09:06] ryah: % lessc [09:06] ryah: lessc: no input files [09:06] sechrist: node based less? [09:06] sechrist: hehe [09:06] mape: sechrist: http://fadeyev.net/2010/06/19/lessjs-will-obsolete-css/ [09:06] JimBastard_: i think that article should be renamed [09:07] ryah: http://www.youtube.com/watch?v=LANwIgpha7k [09:07] JimBastard_: cloudhead-will-obsolete-your-face [09:07] JimBastard_: perfect song ry lol [09:07] sechrist: this looks cumbersome for lss [09:07] JimBastard_: L time! [09:07] mape: Not if it blocks the loading of the page [09:08] sechrist: ryah: lol I just saw this on a timelife infomercial [09:08] JimBastard_: ryah - http://www.youtube.com/watch?v=IMOy9SsUQ7U [09:08] sechrist: history channel goes to shit at like 4 AM cst [09:08] hellp has joined the channel [09:09] ryah: JimBastard_: good song [09:09] Guest85913 has joined the channel [09:09] sechrist: sarcasm itt [09:10] sechrist: snow leopard's mdnsresponder makes me want to shoot apple [09:10] rphillips has joined the channel [09:10] JimBastard_: once i get a solid audio pipe out of node, im only gonna release my rap songs in JSON format [09:10] sechrist: JimBastard_: chiptune json [09:11] sechrist: chiptune.js ftw [09:11] JimBastard_: sechrist: have you seen my JSONloops? [09:11] sechrist: JimBastard_: yes and it's pretty lulz [09:11] sechrist: afplay though = fail [09:11] JimBastard_: hee hee [09:11] JimBastard_: yeah [09:11] JimBastard_: i updated it a bit [09:11] JimBastard_: waiting for my pipe [09:11] sechrist: bum bum tsst [09:12] sechrist: JimBastard_: how will the pipe work though outside of html5? native connectors? [09:12] JimBastard_: fuck the browser [09:12] ryah: i think node would bind well to chunk [09:12] ryah: er [09:12] ryah: chuck [09:12] JimBastard_: browser cant handle the latency i want yet [09:12] JimBastard_: needs like 1.5 more years [09:12] sechrist: hmm [09:12] JimBastard_: whats chuck? [09:12] sechrist: there's flash bridges i'm sure [09:12] ryah: in fact node + chuck was one of the original intentions [09:12] sechrist: but even still [09:12] ryah: http://en.wikipedia.org/wiki/ChucK [09:12] JimBastard_: we are looking at libao and openal [09:13] ryah: ACTION is away [09:14] JimBastard_: all these fucking libraries try to be the uber virtual instrument shit [09:14] sechrist: cradle looks cool [09:14] JimBastard_: i just need 24bit stereo interlaces wavs [09:14] JimBastard_: yarg [09:14] JimBastard_: yeah sechrist [09:14] JimBastard_: wait till you see resourcer [09:14] Nohryb has joined the channel [09:14] JimBastard_: that will make you shart your pants [09:15] mitkok has joined the channel [09:15] JimBastard_: i gotta assume cloudhead is the top nodejs module developer atm [09:15] sechrist: I'm wanting something that doesn't abstract couchdb too much -- I literally just installed it [09:15] sechrist: haven't really got my head around views and stuff yet [09:15] sechrist: converting from mongodb [09:16] sechrist: using http proxies to load balance databases = lulzly concept [09:16] sechrist: but I like it [09:26] saikat has joined the channel [09:27] JimBastard_: nice i have a 117meg nohup file [09:27] mqt` has joined the channel [09:28] jetienne has joined the channel [09:28] nostromo: I'm seeing a (dreaded) error "events: 11\n throw arguments[1];", ENOTFOUND, [09:29] nostromo: and the trace does not point ajnywhere in my code, how can I avoid it? [09:30] JimBastard_: its late but umm are you trying to start a service on the same port twice i dunno [09:30] JimBastard_: i think thats CONNREFUSED [09:31] keyvan has joined the channel [09:32] derbumi has joined the channel [09:32] nostromo: it is due to dns not resolving, but I don't call dns, but net.createConnection or http.createClient [09:32] saikat` has joined the channel [09:33] nostromo: so I'm not sure where to listen to 'error' events... [09:34] JimBastard_: nostromo: it passes the error as the first argumetn in the call back right [09:35] JimBastard_: if(err){sys.puts(err){ or something [09:35] nostromo: it doesn't [09:35] JimBastard_: you probaly shouldnt listen to me [09:35] JimBastard_: sleepy [09:35] nostromo: the problem is I get an exception that exists from time to time, and it is not in my code [09:36] nostromo: s/exists/exits/ [09:36] nostromo: so I'm not sure if I can capture it somehow [09:37] JimBastard_: try catch? [09:39] caolanm has joined the channel [09:43] sechrist: using redis makes me feel unsecure [09:43] sechrist: say somebody got a nobody shell on my box -- they could just telnet to 6379 and flushall [09:44] dabreaka has joined the channel [09:51] nostromo: JimBastard: as the trace does not show a single line in my code, I'm not sure where could I try/catch [09:52] JimBastard_: im not JimBastard [09:52] JimBastard_: yeah [09:52] JimBastard_: i dunno man [09:52] JimBastard_: im trying to catch a bug right now too [09:52] JimBastard_: thats why im up with these two console windows going [09:52] nostromo: cool, go for it [09:52] JimBastard_: waiting for it to crash [09:52] JimBastard_: getting slammed with traffic from reddit too [09:53] JimBastard_: is it random [09:53] JimBastard_: or everytime? [09:53] JimBastard_: or when the DNS fails? [09:53] nostromo: it is random, I guess when I get a request for a host that does not resolve [09:54] JimBastard_: there must be a way to trap that [09:54] nostromo: I'm trying to listen to 'error' in the whole http client [09:56] nostromo: and I get, when the client tries to connect to non resolvable host, Error: ENOTFOUND, Domain name not found at IOWatcher.callback (dns:53:15) at node.js:221:9 [09:57] slaskis has joined the channel [10:02] rphillips has joined the channel [10:03] keeto has joined the channel [10:03] JimBastard_: Sun, 20 Jun 2010 09:56:55 GMT: 127.0.0.1 GET /root/nodejitsu/apps/asciimo/asciimo.com/asciimo/index.html 200 7183 Sun, 20 Jun 2010 09:56:55 GMT: sending chunk of /root/nodejitsu/apps/asciimo/asciimo.com/asciimo/index.html 0 7183 fs:276 binding.sendfile(outFd, inFd, inOffset, length, callback || noop); ^ TypeError: Bad argument at Object.sendfile (fs:276:11) [10:03] JimBastard_: hrmmmmmmmmmmm [10:03] JimBastard_: mmmm [10:04] JimBastard_: why is that a bad argument [10:04] sechrist: is that just serving html? [10:07] mqt has joined the channel [10:15] rphillips has joined the channel [10:16] kkaefer has joined the channel [10:16] keyvan has joined the channel [10:16] Tim_Smart has joined the channel [10:19] JimBastard_: http:410 throw new Error("This type of response MUST NOT have a body."); ^ Error: This type of response MUST NOT have a body. [10:19] JimBastard_: hrmmmm [10:19] Tim_Smart: JimBastard_: Haven't you gone to sleep yet? [10:19] JimBastard_: the internet needs me [10:19] JimBastard_: you got reddit? [10:19] Tim_Smart: Oh dear, developers never learn :p [10:20] Tim_Smart: I thought I was sleep deprived [10:20] JimBastard_: http://www.reddit.com/r/programming/comments/cgyn0/asciimo_a_javascript_ascii_art_creating_robot/ [10:20] JimBastard_: im testing nodejitsu [10:20] JimBastard_: and antinode a bit [10:20] JimBastard_: catching all the errors and what not [10:20] Tim_Smart: JimBastard_: You are probably sending a body to a HEAD request [10:21] JimBastard_: yeah [10:21] JimBastard_: i need to aptch that [10:21] JimBastard_: hrmm [10:21] JimBastard_: thats a bit fucked [10:22] JimBastard_: Tim_Smart: whats the conditional to check for that im fucking tired [10:22] JimBastard_: else{ // no drone found at this adress sys.puts('no drones found @ ' + req.url); // no drones were found for this path, serve a default page showing status of balancer res.sendHeader(200, {'Content-Type': 'text/html'}); res.write('
'); //res.write(JSON [10:22] keyvan has joined the channel [10:23] Tim_Smart: JimBastard_: If request.method === "HEAD"? [10:23] JimBastard_: rgr [10:23] JimBastard_: can i just close the request? [10:23] JimBastard_: without sending anything? [10:23] JimBastard_: or setting the content type? [10:23] Tim_Smart: JimBastard_: Just writeHead then close [10:25] javajunky has joined the channel [10:26] JimBastard_: what you mean writeHead [10:28] JimBastard_: i think i fixed it maybe not [10:29] JimBastard_: its pretty amazing how fast i can start and stop node with all this traffic coming in [10:32] JimBastard_: Tim_Smart: http://www.reddit.com/r/programming/comments/cgyn0/asciimo_a_javascript_ascii_art_creating_robot/ [10:32] JimBastard_: ohh i sent u nm [10:33] Tim_Smart: Yeah its interesting [10:33] Tim_Smart: JimBastard_: I ported a few of my libraries to npm [10:34] JimBastard_: nice [10:34] JimBastard_: im pretty much ready to go on NPM [10:34] JimBastard_: i just gotta actually do it [10:34] JimBastard_: maybe today [10:35] sechrist: JimBastard_: do you use cradle? [10:35] sechrist: something weird is happening [10:35] JimBastard_: in that case no [10:35] JimBastard_: lol [10:35] JimBastard_: indexzero is the man for that [10:35] JimBastard_: hes sleeping [10:35] sechrist: well i'm doing a db.get [10:35] sechrist: and the callback is getting called twice [10:35] sechrist: idkwtf [10:36] sechrist: example: http://gist.github.com/445723 [10:38] sechrist: however the return is different the second time [10:38] sechrist: so i'm curious if this a feature [10:38] sechrist: if I don't kill the db -- the second returned result has more items in the object [10:39] sechrist: http://gist.github.com/445723 idk [10:40] mqt` has joined the channel [10:40] sechrist: this kind of like makes it unusable [10:41] Tim_Smart: Is http://fostle.com/ loading for anyone. I think (and hope) my home wireless is failing [10:42] sechrist: yap [10:42] Tim_Smart: phew [10:42] sechrist: that navy blue F is your logo? [10:42] sechrist: tell me it isn't so [10:42] Tim_Smart: I put a f on a circle, why? [10:42] sechrist: http://www.facebook.com/favicon.ico [10:43] sechrist: did you like [10:43] sechrist: not even notice that [10:43] Tim_Smart: Hmm, square and the font is different. haha [10:43] sechrist: o plz [10:43] JimBastard_: so many colors Tim_Smart [10:43] Tim_Smart: ok ok. I honestly didn't really think about that [10:44] JimBastard_: less is more [10:44] sechrist: the awesome banner makes your text unreadable [10:44] sechrist: i click about [10:44] sechrist: and can't read the paragraph [10:44] Tim_Smart: Yeah I need to fix the navigation [10:45] Tim_Smart: There is a few things to fix actually. I only have the vps for a month to see how well it performs [10:45] sechrist: JimBastard_: is that normal activity with cradle? [10:46] JimBastard_: i dunno sechrist , im having serious issues here lol [10:46] JimBastard_: i want to sleep but node is dying [10:46] sechrist: a 64mb vps is godlike for serving static html [10:46] sechrist: * if not using apache [10:46] sechrist: specifically using nginx/lighttpd [10:46] Tim_Smart: sechrist: I got to port http [10:46] Tim_Smart: ;http [10:46] Tim_Smart: urgh type fail [10:47] Tim_Smart: http://thepeople.co.nz/ from a PHP solution to node.js [10:47] sechrist: my use cases for node so far haven't been to replace php [10:47] sechrist: I can't wrap my head around serving pages properly [10:47] sechrist: so I use it for ajax services [10:48] Tim_Smart: sechrist: Fair enough [10:48] sechrist: what templating system have you chosen if any? [10:48] Tim_Smart: haml for now [10:48] sechrist: euhaghasd [10:49] sechrist: even with that -- serving variables in the page is something I haven't really put much thought into either [10:49] sechrist: the asyncness scares me [10:49] sechrist: that and frameworks are so up the air [10:49] sechrist: i'll wait [10:50] mqt` has joined the channel [10:50] Tim_Smart: Yeah waiting is good at this stage [10:50] sechrist: i'm using websockets and I have a small lib for synchronizing sessions between node and php [10:50] sechrist: so they keep state [10:50] sechrist: sort of [10:55] kodisha: hey guys, are this charts moving smoothly, or they flicker? [10:55] kodisha: http://kodisha.net:8000/ [10:55] kodisha: i'm getting complaints that they flicker on some browsers, but i suspects slow cpus [10:55] sechrist: they're static [10:56] sechrist: i has no movement [10:56] kodisha: they should be moving slowly on 5 sec [10:56] sechrist: oh there we go, -- i refreshed [10:56] kodisha: watch the bars one, easier to spot [10:56] mscdex: this channel can't handle two JimBastards [10:56] sechrist: eh there's sort of a flicker -- i can't really tell [10:56] mscdex: kodisha: it's moving so slowly it doesn't flicker :P [10:56] sechrist: it's subjective [10:57] kodisha: great! [10:57] JimBastard_: mscdex: [10:57] mscdex: i'm on chromium though [10:57] sechrist: that's a cool graph [10:57] mscdex: latest nightly [10:57] sechrist: is that something public? [10:57] kodisha: yes [10:57] JimBastard_: http://i.imgur.com/FIXNQ.png [10:57] kodisha: github.com/kodi/nodius [10:57] sechrist: JimBastard_: ^^ [10:57] kodisha: :D [10:57] kodisha: lolz [10:57] JimBastard_: im having an epic battle right now with my servers [10:57] JimBastard_: something is dying [10:58] sechrist: node-fu vs node-jitsu? [10:58] JimBastard_: indexzero updated when he wasnt suppose to [10:58] kodisha: this is supposed to be monitoring app on node.js [10:58] JimBastard_: im using js-fu and nodejitsu to try and solve problem righ tnow [10:58] kodisha: im just starting to write it [10:58] kodisha: :D [10:58] sechrist: node-awstats [10:58] sechrist: but better than awstats [10:58] JimBastard_: http://www.reddit.com/r/programming/comments/cgyn0/asciimo_a_javascript_ascii_art_creating_robot/ [10:58] JimBastard_: got reddit? [10:58] sh1mmer has joined the channel [10:58] JimBastard_: upvote that shit and reply [10:58] JimBastard_: about how awesome node is [10:58] mscdex: JimBastard: may the farce be with you [10:59] kodisha: sechrist: better than cacti :D [10:59] sh1mmer: hihi [10:59] JimBastard_: the anitnode guy asked me what i was using to benchmark, i told him REDDIT [10:59] sechrist: the frameworks have to stabilize [10:59] sechrist: before we can really have log analyzers and crap [10:59] sechrist: framewars [10:59] zomgbie has joined the channel [10:59] JimBastard_: yeah loggers please [10:59] sh1mmer: does anyone know if there is any good documentation for remote debugging running node instances? [10:59] JimBastard_: real time [11:00] sh1mmer: I know some folks were playing with eclipse [11:00] sechrist: remotely debugging node instances? [11:00] sechrist: this is new to me [11:00] mscdex: ok, back to sleep now [11:00] JimBastard_: sh1mmer: you want v8 debugger or a debug.log() method with a web console [11:00] sh1mmer: v8 debugger [11:01] sechrist: JimBastard_: your server problem -- is it related to cradle? [11:01] JimBastard_: check the mailing list i dunno [11:01] JimBastard_: its been talked about [11:01] sh1mmer: JimBastard_: ok cool [11:01] JimBastard_: sechrist: no im using v1 of broodmother on the live site [11:01] JimBastard_: it doesnt use a database [11:01] sh1mmer: I wasn't sure if anyone had written something up nicely [11:01] sh1mmer: :) [11:01] JimBastard_: its all in memory [11:01] kodisha: i don't get it why people demand chrome->node debugger so much, profiler on the other hand would be useful [11:01] mape: There is already a profiler?` [11:01] sechrist: uh [11:01] sechrist: l [11:01] sechrist: linux-tick or whatever [11:02] mape: Running node with -prof [11:02] mape: and then the tick yeah [11:02] sh1mmer: kodisha: I'd like to be able to poke a running instance [11:02] sechrist: magnets [11:02] sechrist: JimBastard_: http://images1.wikia.nocookie.net/__cb20091213210521/dragonage/images/thumb/d/de/Creature-Broodmother.jpg/270px-Creature-Broodmother.jpg [11:02] sechrist: ? [11:02] sh1mmer: kodisha: chrome makes sense because it already has a suit of v8 debugging tools with breakpoints, etc in it [11:02] kodisha: sh1mmer: what do you get? use sys.inspect :D [11:03] sh1mmer: kodisha: sure but that's not the same as breakpoints and stepping is it? [11:03] sh1mmer: kodisha: that's like saying why use firebug when you can use alert() ? [11:03] kodisha: debuggers are like UML, you ether get used to use it, or despise it :D [11:03] kodisha: well no [11:03] kodisha: :D [11:03] kodisha: ok ok [11:04] kodisha: i admit, there are breakpoints, and watches.. [11:04] kodisha: *i* just never get used to it, it's a subjective thing [11:04] JimBastard_: sechrist: http://classic.battle.net/war3/images/neutral/screens/screen-broodmother.jpg?rhtml=y [11:04] namelessjon: Hmmm. I seem to have found myself with cyclical dependencies. This is making my application cry. But what I think I actually want to do is emit some 'update' event which gets picked up higher in the application and does the work there. How would I do that? [11:05] sechrist: emitting events? [11:05] sechrist: what do you think this is, javascript? [11:06] namelessjon: Assume my javascript experience can be summed up as (aside from a few bits here and there) ... yesterday :) [11:06] sechrist: JimBastard_: yeah I totally have found a bug -- you can't nest cradle calls [11:06] sechrist: they fsck up [11:06] JimBastard_: i think you can [11:06] JimBastard_: i dunno [11:06] JimBastard_: open an issue [11:06] JimBastard_: he'll respond [11:07] JimBastard_: hey Tim_Smart what do i have to do to publish? [11:07] JimBastard_: i have the package.json good to go [11:07] JimBastard_: this is for another repo [11:08] ewdafa has joined the channel [11:08] Tim_Smart: JimBastard_: npm publich dir_name [11:08] JimBastard_: its flailing me [11:09] JimBastard_: sudo sudo sudo [11:09] JimBastard_: i think it worked [11:09] JimBastard_: you wanna test say? [11:09] Tim_Smart: k [11:09] Tim_Smart: library name? [11:09] JimBastard_: its broken [11:10] sechrist: JimBastard_: http://github.com/cloudhead/cradle/issues/issue/6 [11:10] JimBastard_: the github is called say.js but i want the package name to be be "say" [11:10] JimBastard_: is that possible? [11:10] sechrist: say.js.js [11:10] kjeldahl has joined the channel [11:11] JimBastard_: : Tag stable not found for package say [11:11] JimBastard_: okay [11:11] sechrist: on github [11:11] sechrist: is there like a tag or something? [11:11] sechrist: i literally just registered an account [11:11] JimBastard_: sechrist: you follow me now [11:11] JimBastard_: you number 100 maybe [11:12] JimBastard_: http://github.com/marak [11:12] JimBastard_: as for stable tag, that is a job for kohai [11:12] sechrist: i'm 100 [11:12] sechrist: yey [11:12] sechrist: okay so [11:12] sechrist: code tag on github? [11:12] JimBastard_: its markdown [11:12] JimBastard_: you talking about a readme? [11:13] JimBastard_: or what? [11:13] sechrist: issue [11:13] JimBastard_: try indententing it with 5 spaces [11:13] sechrist: github mangled some code [11:13] JimBastard_: 5+ spaces will make code code [11:13] JimBastard_: with and
[11:13] sechrist: there's a code tag?
[11:13] Tim_Smart: 4 spaces I thought
[11:13] JimBastard_: http://warpedvisions.org/projects/markdown-cheat-sheet/
[11:13] JimBastard_: i keep it safe
[11:13] Tim_Smart: `` for 
[11:14] sechrist: eh
[11:14] sechrist: no work
[11:15] JimBastard_: so wait tim, npm requires a stable tag?
[11:15] JimBastard_: http://github.com/marak/node_mailer doesnt have one?
[11:15] JimBastard_: fuuck
[11:15] sechrist: woah there
[11:15] sechrist: a mailer
[11:15] JimBastard_: dude
[11:15] JimBastard_: read my github
[11:15] JimBastard_: its amazing
[11:15] Tim_Smart has joined the channel
[11:15] sechrist: does it has queue
[11:15] JimBastard_: hey Tim_Smart 
[11:16] stagas has joined the channel
[11:16] kodisha: so a question,  right now for my monitoring app i use in memory structures (circular buffers to be precise) but i would like to have persistence, (in case of crash/restart).
[11:16] kodisha: so i was thinking of taking that structures, run another async job which will take those structures, and make JSON snapshots to HDD.
[11:16] kodisha: so on restart you could load them, and continue collecting. 
[11:16] kodisha: my question is is that making any sense at all, and what impact could it have on say 1000 structures? 
[11:16] JimBastard_: does npm requires a stable tag?
[11:16] JimBastard_: for repos?
[11:16] JimBastard_: node_mailer doesnt have one?
[11:16] Tim_Smart: JimBastard_: Its helps, otherwise you have to npm activate node_mailer 0.1.0
[11:17] sh1mmer: JimBastard_: fyi http://wiki.github.com/ry/node/using-eclipse-as-node-applications-debugger
[11:17] sechrist: dude holy crap that mailer is simple
[11:17] JimBastard_: rgr
[11:17] JimBastard_: sechrist: requires a locally running stmp server with no auth
[11:17] JimBastard_: but yeah
[11:17] JimBastard_: after that its cake
[11:17] JimBastard_: you can install sendmail and turn it on in seconds
[11:17] JimBastard_: keep it all firewallsed
[11:17] sechrist: near
[11:17] sechrist: neat*
[11:18] sechrist: I need to setup domkeys and ptr records and shit
[11:18] sh1mmer: i feel dirty install eclipse, but oh well
[11:19] JimBastard_: sechrist: check out say.js and play.js
[11:19] JimBastard_: those are fun
[11:19] JimBastard_: run the demos
[11:20] JimBastard_: im getting them on NPM right now
[11:20] sechrist: JimBastard_: do you have like a real job
[11:20] sechrist: or do you just crank out little util libs
[11:20] JimBastard_: ?
[11:20] sechrist: all day
[11:20] JimBastard_: no i have a real job
[11:20] JimBastard_: a serious one
[11:20] JimBastard_: where i write front-end javascript
[11:21] JimBastard_: im just unstoppable
[11:21] sechrist: right
[11:21] sh1mmer: JimBastard_: I would have pegged you as a quant
[11:21] JimBastard_: ive just been focused on javascript lately
[11:21] JimBastard_: lol finance
[11:21] JimBastard_: i didnt exactly make the security clearance at the big bank
[11:22] sechrist: what's up dog chorus
[11:22] JimBastard_: :-D
[11:22] JimBastard_: WITH COLOR
[11:22] sh1mmer: :)
[11:22] sechrist: what color
[11:22] sh1mmer: JimBastard_: banks don't make security clearance
[11:22] JimBastard_: maybe the say.js doesnt have color yet
[11:22] sechrist: there's no output from demo.js
[11:22] sh1mmer: ACTION has so many stories
[11:22] JimBastard_: lol well they told me to GTFO ASAP
[11:23] sechrist: heh the applications for node.js are endless
[11:24] Tim_Smart: node.js + coffeescript make great little scripts :)
[11:24] sechrist: THIS COFFEEEEE
[11:24] sechrist: i haven't checked it out
[11:24] sechrist: seems like pointless abstraction
[11:24] sh1mmer: sechrist: crockford told me it's how they might have done javascript
[11:24] sh1mmer: sechrist: I like it, but it's useless if you want to write client/server code
[11:24] sh1mmer: which I do
[11:26] sechrist: JimBastard_: o hai i patched cradle
[11:26] JimBastard_: nice
[11:27] sechrist: what's the standard way of prodding people for patching
[11:27] JimBastard_: im stuck trying to get NPM working
[11:27] JimBastard_: fucking shit
[11:27] JimBastard_: im retarded
[11:27] zomgbie has joined the channel
[11:27] sechrist: blame isaacs
[11:27] sechrist: he literally just forgot a return
[11:28] SvenDowideit has joined the channel
[11:29] sechrist: JimBastard_: okay so say I want to patch something 
[11:29] sechrist: do I fork
[11:29] sechrist: patch
[11:29] sechrist: request pull?
[11:29] sechrist: how does this work
[11:29] JimBastard_: sure
[11:29] sechrist: i've never used github *dives in*
[11:29] tobeytailor has joined the channel
[11:29] JimBastard_: morning tobeytailor 
[11:29] sechrist: hardcore forking action
[11:30] keeto has joined the channel
[11:31] skarlcf has joined the channel
[11:32] sechrist: dude holy fuck that was fun
[11:32] sechrist: http://github.com/sechrist/cradle
[11:35] namelessjon: How would I emit an event which would be recieved by all the streams connected to a net.Server?
[11:35] skarlcf: hey all, I've got a problem with ./configure on MacOSX SnowLeopard: /node-v0.1.98/deps/libeio/wscript:13: error: the configuration failed...
[11:35] JimBastard_: skarlcf: you on head?
[11:36] JimBastard_: did you have a prior install?
[11:36] JimBastard_: you just run an update?
[11:36] skarlcf: prior install
[11:36] skarlcf: from git and tar.gz
[11:37] rolfb has joined the channel
[11:38] sh1mmer: man, I hate Eclipse, but having a real debugger for Node is awesome.
[11:39] nostromo: can chrome be used to debug nodejs?
[11:39] sechrist: real debugger?
[11:39] Tim_Smart: sh1mmer: Is the eclipse debugger any good?
[11:39] sechrist: pics
[11:39] sh1mmer: sechrist: Eclipse
[11:39] sh1mmer: Eclipse seems like Eclipse
[11:39] sh1mmer: I haven't used it in years
[11:39] sh1mmer: but it has the usual debugging tools, breakpoints, watches etc
[11:39] sechrist: i really dislike eclipse
[11:39] JimBastard_: crap reddit is starting to buzz on asciimo
[11:40] sh1mmer: I'm not sure it all works yet, but it's good enough to pause an inspect stuff
[11:40] JimBastard_: and the servers arent exactly ready for war
[11:40] sh1mmer: and I got it working in about 15 minutes
[11:40] sechrist: JimBastard_: do you vanity search too?
[11:40] sh1mmer: most of that was figuring out Eclipse's crappy interface
[11:41] JimBastard_: dunno what that means
[11:41] sechrist: riiiight
[11:45] zomgbie has joined the channel
[11:46] sechrist: I would imagine pull requests are super annoyign
[11:46] sechrist: also annoying
[11:47] Tim_Smart: I would probably throw up if I used eclipse, considering I use vim
[11:47] sechrist: get with the 2000s
[11:47] sechrist: textmate ftw
[11:47] webben: hmm http://eclim.org/
[11:47] Tim_Smart: naw, vim is ninja
[11:47] sechrist: if somebody adapts ctags into nodetags
[11:47] sechrist: that'd rock
[11:48] webben: doesn't ctags already support JS?
[11:48] caolanm: Tim_Smart: vim is teh awesomes ;)
[11:48] nsm has joined the channel
[11:48] sechrist: even if it does
[11:49] caolanm: ACTION fuels editor war
[11:49] sechrist: there's no like prototype db
[11:49] sechrist: or anything
[11:49] Tim_Smart: yeah textmate is for masochists
[11:49] sechrist: I mean you could generate one
[11:49] sechrist: no that's emacs
[11:49] kodisha: lol
[11:49] kodisha: https://chrome.google.com/extensions/detail/laankejkbhbdhmipfmgcngdelahlfoji?hl=en
[11:50] sechrist: right
[11:51] Tim_Smart: I'll lol when it blocks google
[11:51] sechrist: duckduckgo is more productive
[11:51] sechrist: sort of
[11:51] sh1mmer: you don't actually have to use Eclipse to edit anything
[11:52] sh1mmer: just point it at a node instance and debug whatever is running
[11:52] sh1mmer: that's all
[11:52] sechrist: o roly
[11:52] sechrist: how difficult is this to set up
[11:52] stagas: yeah all those shut-off website extensions get uninstalled 5 minutes after installation they're so annoying :P
[11:53] sechrist: just wait until the cerebellum gets plugins
[11:53] sechrist: install this plugin -- be more productive!
[11:54] sechrist: a la matrix
[11:55] keyvan has joined the channel
[11:57] sechrist: JimBastard_: so did you ever develop a way to scrape urls out of haystacks well?
[11:57] sechrist: I'm using crude regexes but meh
[11:57] JimBastard_: sup
[11:58] Tim_Smart: sechrist: There are bound to by regex's premade on google somewhere
[11:59] sechrist: good logic
[11:59] Tim_Smart: *be
[11:59] sechrist: already looked
[11:59] sechrist: I found crappy ones
[11:59] sechrist: I guess my problem is url validation
[11:59] sechrist: i'm grabbing them out of tweets and some of them are partial
[11:59] sechrist: I need to check tlds or something
[11:59] JimBastard_: I use Reddit and HN as my http benchmarking tools. #bastardfacts
[12:00] sechrist: you seriously get that much traffic?
[12:02] hassox has joined the channel
[12:06] sechrist: O.O 70,000 get/s working from couch in phpillow
[12:07] sechrist: 500 puts/s = lul
[12:16] kodisha: hey, this duckduckgo thing is really useful 
[12:16] sechrist: yeah duckduckgo is cool
[12:16] sechrist: it's mentioned on hn like all the time
[12:24] JimBastard_: fuck HN
[12:24] JimBastard_: they banned me
[12:25] sechrist: paul graham got beef
[12:25] JimBastard_: because i called dustin curtis a retard
[12:25] sechrist: that's the american airlines guy right?
[12:25] sechrist: yeah
[12:26] sechrist: god I remember that debacle
[12:26] sechrist: some guy from AA reached out
[12:26] sechrist: blabbed out internal politics
[12:26] sechrist: got fired
[12:26] sechrist: lol
[12:30] jcoglan has joined the channel
[12:32] jcoglan: morning all
[12:32] jcoglan: looking for a little help with the http module
[12:33] JimBastard_: sup jcoglan 
[12:33] JimBastard_: did you try using javascript?
[12:33] jcoglan: basically I'm trying to catch ECONNREFUSED-type errors, where the server dies before sending a response
[12:34] jcoglan: I used to be able to catch that by listening to "error" on http.Client
[12:34] jcoglan: but doesn't seem to work anymore
[12:35] mscdex: did you try using javascript-fu?
[12:35] mscdex: :-P
[12:36] JimBastard_: javascript => javascript-fu => nodejitsu
[12:36] JimBastard_: the path of the javascript warrior
[12:37] JimBastard_: brb
[12:37] mscdex: i thought it went: javascript-fu => javascript
[12:37] mscdex: jcoglan: try/catch doesn't work either?
[12:38] jcoglan: no, no exceptions are thrown
[12:38] mscdex: ah
[12:38] mscdex: does that error get caught in previous versions of node?
[12:39] mscdex: .98? .97?
[12:39] jcoglan: besides, it's async. it's a long-running request, so I start the request, and some time later the server dies
[12:39] everton has joined the channel
[12:39] jcoglan: I think under 0.1.96 (guess) I could catch ECONNREFUSED using http.Client's "error" event
[12:40] mscdex: oh
[12:41] jcoglan: and removing the "error" listener would crash my client process if the request failed
[12:43] micheil has joined the channel
[12:44] kjeldahl has joined the channel
[12:44] nostromo: jcoglan: I have succeeded catching those errors listening to error in the http.createClient object, rather than in the connection
[12:45] jcoglan: yeah, I actually just tried writing a small script and the Client "error" event works this time
[12:46] mscdex: huh
[12:46] jcoglan: will take another look at my app then
[12:47] nostromo: I had trouble with it too, it was confusing because the error is thrown when trying to request (connect for net.createConnection)
[12:47] nostromo: but logically is not catched by listening after request/connect, but after create*
[12:48] rphillips has joined the channel
[12:49] mqt has joined the channel
[12:53] jedschmidt has joined the channel
[12:54] sechrist: dude what is the point of having these schemaless databases if these abstractions make you define a schema
[12:55] sechrist: argh
[12:56] jcoglan: okay, this is closer to what my app is doing, and no error listeners are called: http://gist.github.com/445814
[12:56] zomgbie has joined the channel
[12:56] jcoglan: I could definitely use Client's "error" a couple versions ago
[12:58] jcoglan: also, no exceptions and no response is received
[12:58] jcoglan: the process keeps running though, so I guess the hanging request is keeping it open
[13:04] kjeldahl has joined the channel
[13:04] mscdex: jcoglan: yeah, the process stays open because the server never called ServerResponse.end() for the incoming connection
[13:05] mscdex: jcoglan: what do you mean by "no response is received" ?
[13:05] jcoglan: the "response" event does not fire
[13:07] mscdex: jcoglan: client's error event is being fired for me also on ECONNREFUSED
[13:07] mscdex: so it's catching it
[13:07] mscdex: on .98
[13:08] mscdex: jcoglan: the request's response event fires for me when the server actually returns something
[13:08] kjeldahl has joined the channel
[13:09] jcoglan: fine, I wasn't expecting it to fire in my script
[13:09] jcoglan: just using to find out if there's any way for the client to know that the server dies
[13:09] mscdex: oh i see
[13:10] Tim_Smart has joined the channel
[13:13] mqt` has joined the channel
[13:15] jcoglan: I've split the server and client into their own files: http://gist.github.com/445814
[13:15] jcoglan: running client.js with no server running gives "Client error"
[13:16] jcoglan: running server.js then client.js gives no output, request just hangs
[13:16] jcoglan: running server.js then client.js then killing server.js before the close() timeout fires, then the client.js process exits with no output
[13:17] jcoglan: now I could handle the second case by having my app return 500 for all pending requests when the server closes
[13:18] jcoglan: but that won't handle the third situation, where the server process is simply killed
[13:18] jcoglan: the client has no idea that happened
[13:18] mscdex: hmm
[13:23] jcoglan: have posted to the mailing list. if anyone figures this out, then A) thank you! and B) post to the list
[13:29] k23z__ has joined the channel
[13:30] k23z__: how do I write a config file for js and get the data from disk from another file ?
[13:30] k23z__: I need to write some settings in both client-side and in server-side in js, how do I store this on disk ?
[13:31] micheil: clientside, you don't.
[13:31] micheil: serverside, you can
[13:31] micheil: look up the fs module & ini modules
[13:31] k23z__: micheil: ok listen
[13:31] k23z__: I have this.ajaxurl on client-side
[13:32] k23z__: and in nodejs exports.server.listen(80, "192.168.0.2");
[13:32] micheil: no point trying to tell me much right now; I'm pretty much out of it.
[13:32] k23z__: the 192.168.0.2 I need to store in a common place on both sides
[13:32] k23z__: micheil: there is nothing complicated here
[13:32] micheil: yeah.. I'm not sure why you're setting the server to listen with an ip over loopback / localhost
[13:33] k23z__: it's local area network
[13:33] micheil: yeah
[13:33] k23z__: loopback is 127.0.0.1
[13:33] micheil: if you run on localhost, and then you should be able to access it within the LAN
[13:34] k23z__: I can access it alright
[13:34] k23z__: that's not the problem
[13:34] k23z__: the problem is I have "192.168.0.2" written in client-side and in server-side and I want to write it somewhere common so that I don't have to change 3 places next time I change server, I need like a configuration file, do you understand ?
[13:35] micheil: yeah, burt that's gunna get very difficult to manage, as you'd need to have copies of the file.
[13:36] micheil: it's actually easiest just to manually duplicate it.
[13:42] jspiros has joined the channel
[13:42] k23z__: micheil: how about if I store it in a json on disk ?
[13:46] micheil: k23z: it's still awkward, because you've also gotta serve up that file to client
[13:46] micheil: in which case the client would know the server's address.
[13:59] jetienne has joined the channel
[14:02] Aaron has joined the channel
[14:04] steadicat has joined the channel
[14:06] Aaron: Feature request / question on stream.pause:  why not have it also pause the firing of the end event if the end event hasn't been fired yet? Really, pause all events that haven't been sent to observers, rather than pausing those that physically haven't occurred yet?
[14:11] mw has joined the channel
[14:13] pgriess has joined the channel
[14:18] k23z: any module for js to strip comment off a string ? (like // and /* */) 
[14:24] tobeytailor has joined the channel
[14:28] rolfb has joined the channel
[14:29] rphillips has joined the channel
[14:33] dabreaka has joined the channel
[14:35] tobeytailor has joined the channel
[14:45] rphillips has joined the channel
[14:46] micheil: k23z: it'd be called regexp
[14:47] nostromo: k23z: not really a module, it is builtin
[14:47] mitkok has joined the channel
[14:47] micheil: aka, str.replace(/(^\/\/.*)$/g, "")
[14:48] rolfb has joined the channel
[14:51] softdrink has joined the channel
[14:53] k23z: micheil: how about /* */ multiline ?
[14:53] micheil: not sure
[14:53] micheil: probably str.replace(/\/\*.*\*\//g, "")
[14:54] mape: /\/\*[^*]+\*\// ?
[14:54] k23z: micheil: that only replaces on a single line
[14:54] micheil: might need the m flag as well
[14:54] k23z: micheil: how do I tell it to replace over multiple lines ?
[14:54] micheil: instead of /g, /gm
[14:54] mape: yeah, multi line m
[14:54] k23z: ok ..
[14:55] k23z: micheil: what can I say , you're a fucking genius, it works , thanks :)
[14:55] nostromo: "/* test\ntest2 */ test3".replace(/\/\*[^*]*\*\//m,"") worked for me
[14:56] micheil: k23z: am I?
[14:56] micheil: mape: wouldn't it be cool if we had a node-repl session as a bot in here?
[14:57] mape: Didn't someone already do that?
[14:57] mape: > 1+2;
[14:57] mape: Hmm
[15:02] kodisha: why is my fs.readFileSync reading only part of file?
[15:04] markwubben has joined the channel
[15:05] markwubben has joined the channel
[15:10] k23z: micheil: if someone had a IRC module for node I think ..
[15:11] micheil: there is an irc module, there's also about 100=300 other modules..
[15:13] maushu has joined the channel
[15:15] jstewart1 has joined the channel
[15:17] kodisha: anyone? i have one line 19kb file (from JSON.stringify() ) and when i do fs.readFileSync it only reads part of the file :(
[15:17] kodisha: why?
[15:18] tav_ has joined the channel
[15:20] agnat has joined the channel
[15:24] mqt has joined the channel
[15:26] maushu: kodisha, you are using sync.
[15:26] maushu: Sync is evil you blasphemer!
[15:27] kodisha: :)
[15:30] maushu: Try other node version, check for weird characters in the file.
[15:30] deanlandolt2 has joined the channel
[15:31] derbumi has joined the channel
[15:32] ncb000gt: mde: yt?
[15:32] k23z: anybody usin qooxdoo here ?
[15:34] kodisha: oh boy what stupid typo i had :(
[15:34] kodisha: :S
[15:39] k23z: qooxdoo ?
[15:39] k23z: qnyone /
[15:40] ncb000gt: not i k23z 
[15:41] ncb000gt: I typically use jquery for fast one offs or extjs/dojo for RIA's
[15:42] keeto has joined the channel
[15:42] keeto: qooxdoo is still alive?
[15:43] pdelgallego has joined the channel
[15:45] jedschmidt has joined the channel
[15:51] k23z: keeto: yes, it has life
[15:54] joshbuddy has joined the channel
[15:54] cloudhead has joined the channel
[16:00] nostromo has left the channel
[16:21] dabreaka_ has joined the channel
[16:22] tobeytailor has joined the channel
[16:29] kersny has joined the channel
[16:33] markwubben has joined the channel
[16:39] b_erb has joined the channel
[16:46] boaz has joined the channel
[16:51] ewdafa has joined the channel
[16:53] skarlcf has joined the channel
[17:10] Yuffster has joined the channel
[17:10] sanderjd has joined the channel
[17:19] pzich has joined the channel
[17:26] jbrantly has joined the channel
[17:28] JimBastard has joined the channel
[17:28] JimBastard: cheaaaa
[17:28] JimBastard: im illing it today 
[17:28] JimBastard: i just had to install analytics to get a real grip of traffic
[17:36] MattJ has joined the channel
[17:36] sechrist: lol chrome crashes if websocket crap backs up
[17:37] sechrist: protip: don't alert() while receiving ws data
[17:37] sechrist: need async alert() por favor
[17:37] JimBastard: damn still up sechrist 
[17:38] sechrist: yarly
[17:38] sechrist: I sleep when i'm tired
[17:38] jakehow has joined the channel
[17:44] kriskowal has joined the channel
[17:54] keyvan has joined the channel
[17:54] JimBastard: fuck why did the load balancer go down again
[17:54] JimBastard: right after i wake up
[17:57] steadicat has joined the channel
[17:57] Vekz has joined the channel
[18:02] JimBastard: http://www.nodejitsu.com/
[18:02] JimBastard: ACTION knows nodejitsu
[18:03] zomgbie has joined the channel
[18:05] malkomalko has joined the channel
[18:09] tobeytailor has joined the channel
[18:14] tobeytailor has joined the channel
[18:15] jarsen has joined the channel
[18:15] namelessjon: If I set up a repl on a socket, what is the best way to talk to it?
[18:16] slaskis has joined the channel
[18:17] dabreaka has joined the channel
[18:18] Preston has joined the channel
[18:19] Preston: anyone have experience creating a subversion proxy with node.js?
[18:21] maushu has joined the channel
[18:21] JimBastard: hey maushu 
[18:21] maushu: Yo.
[18:21] JimBastard: http://i.imgur.com/FIXNQ.png
[18:22] namelessjon: namelessjon: read an old manual more closely.
[18:22] namelessjon: apologies, all
[18:23] maushu: ...
[18:24] JimBastard: :-D
[18:24] JimBastard: ive been stress tesing all morning
[18:24] JimBastard: using http://asciimo.com/
[18:24] JimBastard: soo much traffic
[18:24] maushu: http://bb.xieke.com/files/153309.jpg
[18:25] maushu: I know- is that a blackhole?! FFFFFFFfffffffff-
[18:25] ryah: kodisha: readFileSync broken?
[18:27] JimBastard: maushu: i think that my server
[18:27] mikeal: someone should look at this code and make sure I'm not crazy
[18:27] mikeal: http://github.com/mikeal/node-utils/blob/master/streams/lib/main.js
[18:29] Vekz: Hey #node.js . I could use some feedback on a new project. http://www.mixhammer.com It aims to be a MXHR responder service. But currently is more of a benchmark demo.  Uses node.js on the backend
[18:30] JimBastard: hey Vekz sure thing
[18:31] JimBastard: would you mind looking at my site too? i have the jesus jackhammer actualy
[18:31] JimBastard: http://www.divine-interventions.com/jackhammer.html
[18:32] mikeal: jesus jim
[18:32] mikeal: you're suck a dick
[18:32] JimBastard: AHAHAH
[18:32] mikeal: such
[18:32] kersny has joined the channel
[18:33] Vekz: wtf
[18:34] JimBastard: ahahahah
[18:34] JimBastard: sorry
[18:34] JimBastard: ive got issues
[18:34] Vekz: trolls trolling trolls
[18:34] JimBastard: watching server logs all night is making me lost it
[18:34] JimBastard: it says
[18:35] JimBastard: welcome to ngnixn
[18:35] JimBastard: its called a www record
[18:35] JimBastard: and you set that shit up on your website dog
[18:35] mape: Vekz: Did they figure out all the issues with MXHR?
[18:35] Vekz: hahaha fail
[18:35] mape: It broke?
[18:35] Vekz: no there is still IE6 issues and caching issues
[18:36] mape: It is just "Loading..." here
[18:37] Vekz: okay it should be restored
[18:37] Vekz: thx for breaking it hahah
[18:37] mape: Hey! I'm just trying it out, guess it will break if I try it again?
[18:37] Vekz: who knows
[18:37] Vekz: what browser you in?
[18:38] mape: Firefox latest version on osx
[18:38] tobeytailor has joined the channel
[18:38] Vekz: that should be cool
[18:38] Tim_Smart has joined the channel
[18:38] mape: Tried 5 assets now, it seems to work, the GET responds with info but the output isn't populated
[18:39] tobeytailor_ has joined the channel
[18:39] mape: Bad gateway now
[18:39] Vekz: k
[18:39] mscdex: haxxxxx
[18:39] Vekz: looks like its more fragile than i thought
[18:39] mscdex: cross-browser is hard
[18:39] mape: It isn't cross browser
[18:39] mscdex: even worse! :P
[18:39] mape: The server died (I assume)
[18:39] Vekz: the bad gateway means node is crashin
[18:40] mikeal: JimBastard: when are the nycjs meetups?
[18:40] mape: Vekz: Perhaps it doesn't like http://ad.dc2.adtech.de/addyn|3.0|831.1|2029817|0|-1|ADTECH;cookie=info;loc=100;target=_blank;alias=ab_ettan_helsida1;key=;grp=875246742;misc=1277058812650
[18:40] Vekz: lol is that the url you were using?
[18:40] mape: Jup
[18:40] mape: I needs my adscode streamlined for the web2.0 experience
[18:41] mscdex: it says "Welcome nginx!" now
[18:41] mscdex: hehe
[18:41] mscdex: *to
[18:41] Vekz: wow i will have to favorite that as a test case
[18:41] Vekz: who knows how that is reacting
[18:42] mape: How about somekinda progress indication?
[18:42] mscdex: realtime!
[18:42] Vekz: sounds good to me
[18:42] mape: Tried with 17 "good" urls now and it timed out at 1min
[18:43] mape: Is the issue fetching the remote assets?
[18:43] Vekz: kk
[18:43] Vekz: most likely
[18:43] mape: You do it in parallel?
[18:43] Vekz: yes
[18:43] mape: k
[18:44] mscdex: oh, d'oh mixhammer.com doesn't redirect to www.mixhammer.com :S
[18:44] mscdex: that's why i was seeing the wrong page heh
[18:44] Vekz: oooh shitty
[18:44] Vekz: thanks
[18:45] mape: value.match(file_ext_regex) is null on line 108 splash.js
[18:45] mape: var ext = value.match(file_ext_regex)[1]; 
[18:45] mape: when I repeat urls
[18:45] Vekz: interesting
[18:46] mape: Broke again
[18:47] sveisvei has joined the channel
[18:47] Vekz: Thanks for all the help mape
[18:47] mape: You mean breaking stuff? No problem ;)
[18:48] mape: Have they solved the issue with MXHR that you need to know what order stuff is in?
[18:48] mape: Or can you do somekinda key/value deal?
[18:48] sunpin has joined the channel
[18:49] Vekz: you can use meta data
[18:49] mape: Vekz: So what does it do? Just fetches assets, sets the type of file and base64 encodes it into one long string?
[18:49] Vekz: yup
[18:50] Vekz: then on the client side it parses apart the big base64 string by some hidden unicode characters
[18:50] JimBastard: LOL
[18:50] JimBastard: some people are jus thaters
[18:50] mape: K, and then you have a placeholder on the frontend that is the ole switcharoo?
[18:50] Vekz: yes
[18:50] mape: Seems easy enough
[18:51] JimBastard: im getting flamed on reddit for having a commented out alert box
[18:51] JimBastard: http://www.reddit.com/r/programming/comments/cgyn0/asciimo_a_javascript_ascii_art_creating_robot/c0sip3s
[18:51] mape: Was the benefits big enought to warrant it though? Or is it mostly used on icons and small stuff like that? 
[18:51] Vekz: its great for pages that have alot of small requests
[18:52] Vekz: i am still bench marking large request but it dosen't seem as beneficial
[18:52] mape: k
[18:52] mape: JimBastard: Dirty code!
[18:52] JimBastard: hee hee yeah
[18:52] JimBastard: i mean for sure
[18:52] JimBastard: but like
[18:52] JimBastard: who does that ahaha
[18:52] JimBastard: LISTEN YOUR PROJECT SUCKS I FOUND A COMMENTED OUT ALERT BOX
[18:53] mape: Well that usualy means there is more crap in there, but yeah
[18:53] mape: *l
[18:53] qFox has joined the channel
[18:53] Vekz: Jim what is your site with the dirty code?
[18:54] Vekz: oh nm
[18:54] mape: hehe
[18:54] JimBastard: lolwut
[18:54] JimBastard: www.jimbastard.com ?
[18:54] mape: You have alerts there as well?!
[18:54] JimBastard: mape: i had to delete soo much to make asciimo work
[18:54] JimBastard: the original version was like soo bad
[18:55] JimBastard: ive never seen so many concerns coupled together
[18:55] JimBastard: browser detection code? lets put it in our render text method
[18:55] JimBastard: render text method? lets put that in our drop down change code
[18:55] JimBastard: i dont want to get into it
[18:56] mape: Vekz: You happen to have any benchmarks laying around?
[18:56] stephenjudkins has joined the channel
[18:57] Vekz: no unfortunately I haven't been recording them
[18:57] stephenjudkins_ has joined the channel
[18:57] mape: k
[19:00] magcius has left the channel
[19:01] mscdex: javascript-fu!
[19:03] JimBastard: i dont appreciate you making fun of my art
[19:03] JimBastard: ive been training very hard 
[19:03] JimBastard: i had to write 100 closures every morning when i wake up
[19:04] JimBastard: i have to do 200 NaN comparisions
[19:04] JimBastard: its hard training
[19:04] mape: if(NaN === NaN) and failing?
[19:05] teemow has joined the channel
[19:05] tobeytailor has left the channel
[19:20] sveisvei: arf, stupid firebug! No this selector is not null (5-bitch-F5-slaps-later firebug agrees)
[19:23] ddollar has joined the channel
[19:24] stephenjudkins has joined the channel
[19:25] isaacs has joined the channel
[19:26] jarsen: anyone have any experience in choosing redis over mongodb with node or vice versa?
[19:26] mape: well what are you using it for?
[19:28] jarsen: i was just thinking about making a simple chat app or something. nothing specific. I've just haven't really had any experience with either. I've been reading the last day or so and it seems like they kind of cover the same range of problems. I guess what I'm wondering is with the node extensions is one better than the other. Or is maybe mongodb a little more clean since it's javascript as well.
[19:28] JimBastard: jarsen: why not couch?
[19:28] jarsen: if you know of any good articles I'd love a link too
[19:29] jarsen: JimBastard: i've looked into that too, it looks like the have a nice tool as well for macs.
[19:29] JimBastard: jarsen: if you need a database in node i would recommend look at http://github.com/cloudhead/cradle
[19:29] JimBastard: use that + couch
[19:30] zomgbie has joined the channel
[19:30] xd00f has joined the channel
[19:30] jarsen: what advantages do you see couch having? it seems like most of the stuff I've read so far depends on what community/background the person is coming from, so largely preference on style.
[19:30] jarsen: and what libs are available for their fav language
[19:31] JimBastard: jarsen: because setting up couch and cradle is dirt simple
[19:31] JimBastard: also i get to yell at mikeal and cloudhead if anything goes wrong
[19:31] JimBastard: mikeal works for couch.io and cloudhead wrote cradle
[19:31] xd00f: isaacs: i am here to talk about the macports npm thing
[19:31] JimBastard: they are both pretty active
[19:32] isaacs: xd00f: yo!
[19:32] JimBastard: sup xd00f 
[19:32] isaacs: xd00f: my battery's  about to die, sadly, so i might disappear at any moment
[19:32] isaacs: ACTION at 2%
[19:32] xd00f: ok ^^
[19:32] jarsen: JimBastard: all very good reasons. I'll have to give it a looksy.
[19:32] jarsen: thanks
[19:33] JimBastard: cool
[19:33] xd00f: yeah macports needs first to install into a special dir
[19:33] JimBastard: let me know if you run into any trouble, and dont make me regret i said that lol
[19:33] xd00f: where the port is deactivated
[19:34] xd00f: that it can be activated and deactivated at any time
[19:34] xd00f: and that you can have more than one version of something to use
[19:34] xd00f: and i am not able to do this installing in the given directory
[19:38] derbumi has joined the channel
[19:39] isaacs has joined the channel
[19:39] isaacs: ok, back, with power this time
[19:40] isaacs: xd00f: so, what you can do is set the "root" config that npm uses.
[19:40] markwubben has joined the channel
[19:40] isaacs: xd00f: or, if you run npm with sudo the first time, then it'll install in {process.installPrefix}/lib/node
[19:42] xd00f: that does not work with the macport system
[19:42] xd00f: were is the root config?
[19:46] markwubben_ has joined the channel
[19:46] xd00f: i would be really nice to do make install DESTDIR="/blub/bla" like with gnu automake stuff
[19:50] isaacs: xd00f: you can configure node to have a specific prefix
[19:50] isaacs: xd00f: ./configure --prefix=/usr/local && make && make install
[19:50] isaacs: xd00f: then install install npm with: sudo make
[19:51] isaacs: xd00f: and that'll set up npm to use the {prefix}/lib/node as it's root folder
[19:52] isaacs: xd00f: "where is the root config" - It's in the ~/.npmrc file, which you can set via the "npm config" command, or you can set for a single-use by doing npm --root /some/path 
[19:52] Tim_Smart: isaacs: Does node-asset install for you now via npm?
[19:53] rolfb has joined the channel
[19:53] sechrist: Has there been any recent development in node-gtk or node-gui?
[19:53] isaacs: Tim_Smart: looks like compress is failing with waf configure
[19:53] sechrist: just curious
[19:54] xd00f: isaacs: it is not about node
[19:54] xd00f: that works perfektly right
[19:54] isaacs: xd00f: ok...
[19:55] xd00f: i just need the first installation of npm in another directory
[19:55] isaacs: xd00f: so, what's the issue you'er running into with npm, exactly?
[19:55] xd00f: that the macport system can store ist there
[19:55] xd00f: *it
[19:55] isaacs: i see.
[19:55] xd00f: it must be right to the realative root dir
[19:56] isaacs: and at the moment, npm bootstraps itself into either ~/.node_libraries or {prefix}/lib/node/
[19:56] xd00f: so it should be some/dir/given/lib/node/blabla
[19:56] sechrist: can somebody explain this vendor git submodule stuff?
[19:56] sechrist: because if I have git checked out projects under a project that's in a git repo
[19:56] sechrist: those files don't get pushed or checked out
[19:56] isaacs: xd00f: so, yeah, npm either instals into the ~/.node_libraries/ or it gets the "prefix" from node
[19:57] isaacs: xd00f: but you're saying, iiuc, that npm should be able to have its own folder, separate from node's
[19:57] xd00f: isaacs: yes
[19:58] isaacs: k.  i think if you add something to the NODE_PATH env var, it'll use that.  i need to check on that, but i think that's there to wokr properly with nvm
[19:59] xd00f: ok that sounds good
[19:59] isaacs: xd00f: so you can either do that permanently, or just do "NODE_PATH=/some/path make"
[19:59] sechrist: I guess nobody in here uses git hehe
[20:00] isaacs: xd00f: and then maybe ask the user to update their .bashrc to add it
[20:00] xd00f: isaacs: no it is only for a short time in a script
[20:00] xd00f: isaacs: later the file will be copied to the normal location
[20:00] isaacs: xd00f: ok.  i think you'll run into other issues...
[20:01] isaacs: probably issues that i should fix, mind you.
[20:01] isaacs: but there may be workaround
[20:01] isaacs: s
[20:01] isaacs: so, the other issue is going to be where npm puts executable files.
[20:01] isaacs: the default is {prefix}/bin
[20:02] isaacs: so, i'd suggest this: rather than using make, run the ./cli.js file yourself.
[20:03] isaacs: ./cli.js --binroot /place/where/you/want/to/install/exes --root /place/where/you/want/npm/to/install/js/ install npm
[20:04] kjeldahl has joined the channel
[20:04] isaacs: it'll complain about binroot not being in the PATH and root not being in the NODE_PATH, but it should still allow it
[20:04] xd00f: ok i'll try that
[20:05] isaacs: Tim_Smart: it's faililng on "Checking for library z"
[20:06] Tim_Smart: isaacs: sudo apt-get install libz-dev?
[20:06] isaacs: Tim_Smart: mac
[20:06] Tim_Smart: OK
[20:07] ryah: we should move the libz bindings into node...
[20:08] sechrist: the license is pretty permissive
[20:08] sechrist: should be fine right?
[20:08] xd00f: isaacs: would npm create the directorys if they don't exist?
[20:08] isaacs: xd00f: yes
[20:08] isaacs: xd00f: it should.  if it doesn't, then that's a bug, and an easy one to fix
[20:09] k23z has joined the channel
[20:09] xd00f: that should make some things much more easy
[20:10] skarlcf has joined the channel
[20:12] k23z: I have 2 questions. how do I send information from server-side to client-side( my actual situation is having a chess server and a client-side browser chess game and when one player makes a move, it's recorded on the server, now how do I make the other player receive the move ? should it repeatedly make requests to the server to see "what's new" ?)  .  If a player leaves how do I check and see that ? do I also make him like send a "ping" to the server every 10-
[20:12] k23z: any oppinion is welcome
[20:12] isaacs: k23z: use websocket.
[20:12] isaacs: websockets
[20:12] k23z: is what I described the way things are normally done or is it atypical ?
[20:12] sechrist: chessockets
[20:12] isaacs: sechrist: nice!
[20:12] liucougar_ has joined the channel
[20:13] sechrist: k23z: check out socket.io
[20:13] sechrist: I'm using it now
[20:13] sechrist: I liek it
[20:13] k23z: sechrist: is socket.io like a node.js module ?
[20:13] sechrist: yes and a client side library that runs in the browser
[20:13] sechrist: if websockets aren't supported by a browser (few do), it tries flash, then it tries xhr-multipart, and then xhr-longpolling
[20:14] sechrist: of and if you have a really crappy browser it'll do activex htmlfile stuff
[20:14] sechrist: it's the first real usable websocket "solution" i've seen -- you can implement just websockets
[20:14] sechrist: but you alienate a lot of users
[20:14] sechrist: like the ipad
[20:15] sechrist: until iOS4
[20:15] sechrist: correct me if i'm wrong anybody
[20:17] BrianTheCoder has joined the channel
[20:17] k23z: hmm
[20:17] k23z: I'll use that then
[20:17] sechrist: the reason I said that is because websockets is a new feature in the html5 draft
[20:18] sechrist: firefox for example doesn't have it -- so it uses a flash bridge
[20:18] sechrist: b
[20:18] sechrist: but safari and chrome do
[20:18] Tim_Smart: websockets are becoming more common, but they still have a while to go yet. socket.io is definitely the way to go, unless you like messing around with iframes and stuff
[20:18] sechrist: Tim_Smart: how does the iframe crap work?
[20:18] sechrist: as far as I recall you can't access any inner properties of an iframe
[20:18] kkaefer has joined the channel
[20:18] Tim_Smart: forever loading page, that continually pushs script tags
[20:19] Tim_Smart: sechrist: Same domain, yes
[20:19] sechrist: oh oh so you can access the dom and crap of a iframe that follows samedomain policy?
[20:19] Tim_Smart: the iframe triggers a callback on the parent page
[20:19] sechrist: that is slick
[20:19] Tim_Smart: I think the activex html thing works different though
[20:19] k23z: which of these should i use ? ['websocket', 'server-events', 'flashsocket', 'htmlfile', 'xhr-multipart', 'xhr-polling']
[20:20] sechrist: all of the above
[20:20] sechrist: it's a fallback chain
[20:20] sechrist: the same code uses all of them
[20:20] sechrist: that's what socket.io does
[20:20] sechrist: like you write the chess server and the chess client in socket.io code
[20:20] sechrist: then socket.io handles the compatibility
[20:20] sechrist: those are "transports"
[20:21] xd00f: isaacs: i don't know if it is my fault, but that thing only create a empty file "npm" in the bin dir
[20:22] k23z: sechrist: can you have a look at what I already wrote ? http://github.com/wsdookadr/Q-Chess/blob/master/server/serv.js
[20:22] k23z: sechrist: how does socket.io fit in there ?
[20:22] sechrist: that's spaghetti but uh
[20:22] k23z: sechrist: I already bind a server using .listen
[20:22] sechrist: you're going per request
[20:23] isaacs: xd00f: that's odd.
[20:23] Aria has joined the channel
[20:23] sechrist: with socket.io you maintain "connections"
[20:23] sechrist: an
[20:23] isaacs: xd00f: can you gist the log, please?
[20:23] k23z: sechrist: spaghetti ? why does it make you feel like that ?
[20:23] sechrist: and send messages over the "socket"
[20:23] isaacs: ACTION should change his nick to "isaacs: can you gist the log, please?"
[20:23] sechrist: k23z: abrupt spacing blah blah but yeah you're going per request
[20:24] sechrist: the paradigm for socket.io is more transparent
[20:24] sechrist: check out the sample chat program
[20:24] sechrist: like instead of changing the state with each http request
[20:24] sechrist: you change it when events happen
[20:25] brainproxy: sub-millisecond timing for setTimeout, Interval etc.?
[20:25] brainproxy: not/possible?
[20:25] pgriess has joined the channel
[20:26] sechrist: I've seen people as this
[20:26] sechrist: but I still cannot figure out a use case
[20:26] sechrist: profiling code maybe
[20:27] isaacs: brainproxy: it's silly.  setTimeout isn't even to-the-ms precise
[20:27] isaacs: brainproxy: if you want something faster, use nextTick, which has higher priority.
[20:27] brainproxy: k
[20:27] ryah: yes, use nextTick - it doesn't allocate resoures
[20:27] Tim_Smart: someone made bindings to a C timer library
[20:28] sechrist: settimeout isn't even MS precise with nothing blocking? lolwut
[20:28] liucougar_: could someone confirm a bug for me? http://github.com/ry/node/issues/issue/186
[20:29] ryah: liucougar: thanksf ro the detailed report
[20:29] Tim_Smart: liucougar: readFile returns a buffer
[20:29] ryah: oh right. yeah. 
[20:30] xd00f: nice; debug output is to long and crashes a pastebin
[20:30] ryah: liucougar: put a content.toString()
[20:30] liucougar: ryah: so it will be fixed in future release of nodejs?
[20:31] liucougar: or I shall always use toString()?
[20:31] ryah: liucougar: it's not a bug
[20:31] xd00f: isaacs: http://dl.dropbox.com/u/1131101/npm.log
[20:31] liucougar: ryah: ah, ok
[20:31] ryah: liucougar: alternatively you can do fs.readFileSync(path, 'utf8')
[20:31] ryah: liucougar: specifying an encoding will make it a string
[20:32] isaacs: ACTION forgot how wordy macports logs are..
[20:32] brainproxy: process.nextTick in effect
[20:32] brainproxy: :D
[20:32] brainproxy: nice
[20:33] Tim_Smart: ryah: Is doing a buffer.cop faster than string concatation?
[20:33] brainproxy: thanks guys
[20:33] Tim_Smart: *buffer.copy
[20:34] tmpvar has joined the channel
[20:35] liucougar: ryah: with encoding its a string. thanks
[20:36] liucougar: ryah: if there is a better error message from JSON.parse I would not have spent so long to track this down. is it possible to have a warning?
[20:36] liucougar: (from JSON.parse())
[20:37] ryah: liucougar: yeah... i wish i could think of a way to do that.
[20:37] ryah: JSON.parse() is part of V8, not node
[20:37] ryah: so i don't have much control over it
[20:38] liucougar: ryah: yeah, I thought so too. thanks for the info
[20:39] jarsen: wow, express spits out some nice looking error messages
[20:40] liucougar: ryah: just closed that bug report
[20:41] ryah: liucougar: thanks
[20:41] sechrist_ has joined the channel
[20:41] ryah: liucougar: if you could think how the api doc could be improved in that area, i wouldn't mind a patch ^_^
[20:43] k23z: =^_^=
[20:44] liucougar: ryah: looking at the doc, it already mentions that "If encoding is specified then this function returns a string. Otherwise it returns a buffer."
[20:44] liucougar: I think I thought this was a bug because it was working before (in older nodejs release)
[20:44] k23z: sechrist: which of these ? http://github.com/LearnBoost/Socket.IO   ,   http://github.com/LearnBoost/Socket.IO-node   ?
[20:44] sechrist: both
[20:44] sechrist: one is for node
[20:44] sechrist: one is for the browser
[20:44] kodisha has joined the channel
[20:45] sechrist: you also need the websocket swf
[20:45] Tim_Smart: http://gist.github.com/446083 <- Has anyone benchmarked something like this?
[20:46] xd00f: isaacs: i need to go the bed; i'll resume tuesday (tomorrow i need to do something else
[20:46] xd00f has left the channel
[20:46] Tim_Smart: I'm curious to whether pure buffers are faster than converting to strings
[20:47] sechrist: Tim_Smart: you can bench mark
[20:47] sechrist: :D
[20:47] aho has joined the channel
[20:47] Tim_Smart: I'm not very good at benchmarking
[20:48] sechrist: you literally just loop the operation a few million times
[20:48] sechrist: and take times
[20:48] sechrist: that's the poor man's unit test
[20:48] Tim_Smart: Right. I'll see what I come up with
[20:50] sechrist: socket.io doesn't handle reconnections very well
[20:51] sechrist: the session as soon as it senses a disconnect
[20:51] sechrist: hm
[20:51] Yuffster has joined the channel
[20:53] sechrist: http://getsatisfaction.com/thoora/topics/thoora_crash_my_computer_plz_help
[20:53] sechrist: so sad
[20:53] Tim_Smart: sechrist: Buffers are alot faster
[20:53] sechrist: bazinga
[20:54] Tim_Smart: 5x faster
[20:54] Tim_Smart: Heres the code: http://gist.github.com/446083
[20:58] mape: sechrist: You used socket.io?
[20:59] bmizeran_: what's the conventional directory layout library developers use for libraries with js + C/C++?  Where does the C go?  src/, ext/, ... ?
[20:59] mscdex: bmizeran_: usually src
[20:59] bmizeran_: cool
[20:59] bmizeran_: thx
[20:59] bmizeran_: I was going back and forth on that.
[20:59] mscdex: but if it's a small one-file thing, sometimes they omit it and place it in root
[20:59] mscdex: it varies
[21:01] mscdex: but yeah, having C in src/ and tests in test/ and js files in lib/
[21:01] bmizeran_: mscdex: awesome.
[21:02] mscdex: and any statically linked dependency sources in deps/
[21:02] sechrist: mape: is there anything better?
[21:02] mscdex: the node repo is a pretty good model
[21:03] sechrist: mape: or are you just trollin
[21:03] mape: sechrist: Nah just that all the examples were old, but seems it is active, wonderinf if micheils websocket server is better..
[21:03] stagas has joined the channel
[21:03] sechrist: i'm less concerned about kickass websocket as I am about fallback
[21:03] sechrist: and it does it nicely
[21:03] mape: Yeah
[21:04] sechrist: the codebases are active
[21:04] sechrist: sort of
[21:04] sechrist: they work as is in .98
[21:05] sechrist: the failure at redundancy with reconnects though bothers me
[21:05] mscdex: sechrist: why not just listen for the disconnect event and then just reconnect?
[21:05] sechrist: ROFL
[21:05] sechrist: that's the first thing I tried
[21:05] mscdex: what's the problem then?
[21:06] sechrist: try it
[21:06] sechrist: sessions get mangled -- the socket object doesn't set to disconnect state
[21:06] sechrist: it gets messy
[21:06] ryah: someone should fix that..
[21:06] mscdex: which transport?
[21:06] mscdex: or is it any of them
[21:06] sechrist: I was using websockets
[21:07] sechrist: I didn't really try it with the others
[21:07] mscdex: ok
[21:07] sechrist: effects flash and native
[21:07] sechrist: affects* but yeah it was pretty messy
[21:07] sechrist: I spent a few mins hacking up socket.io to see if I could find an easier solution but nothing worked well
[21:08] sechrist: the session is wiped out immediately on disconnect on the server side -- so if you do a connect() back the session is gone
[21:08] sechrist: and the socket object keeps the same sessionid
[21:09] ryah: does socket.io have a long poll transport?
[21:09] mscdex: ryah: yes
[21:09] sechrist: yes, that's the pint
[21:09] sechrist: point*
[21:09] sechrist: that works amazingly well
[21:10] sechrist: though there's one condition where the fallback should be improved -- if the swf doesn't connect or fails to load. I installed a flash-killer plugin in firefox that disables swfs from loading and it didn't fallback
[21:10] sechrist: it may check for flash but doesn't check to see if it actually connects
[21:10] sechrist: in fact there's no timeout event either if I recall
[21:11] mscdex: yeah i'm not particularly a fan of flash, so i haven't had any experience with the flash websocket implementation
[21:11] bmizerany has joined the channel
[21:12] sechrist: well I blame socket.io on that
[21:12] sechrist: not the flash bridge
[21:12] deanlandolt_home has joined the channel
[21:12] mscdex: well i mean the socket.io<->flash code too
[21:12] mscdex: never looked at it heh
[21:13] mscdex: i guess i need to update my fork
[21:13] JimBastard: is anyone having issues with npm HEAD?
[21:13] JimBastard: i cant get it to work on my friends laptop
[21:13] sechrist: is it a mac
[21:13] JimBastard: http://gist.github.com/446119
[21:14] JimBastard: yeah
[21:14] pgriess has joined the channel
[21:15] sechrist: mscdex: I didn't realize you had a fork
[21:16] sechrist: I used learnboost's
[21:16] mscdex: yeah, it needs updating though i think. i just implemented cross-domain and other stuff which i think is in the official repo now
[21:17] sechrist: other than my grievances I listed above it works fine
[21:17] sechrist: though i'm considering redisfying it
[21:18] mscdex: yeah that would be neat to have: pluggable backend storage
[21:18] fizx has joined the channel
[21:19] sechrist: well yeah then I could just have a websockets server
[21:19] sechrist: and use the pubsub of redis in other things
[21:21] zomgbie has joined the channel
[21:29] mape: hmm socket.io uses flash fallback on Chrome?
[21:29] mape: oh nm
[21:33] keyvan has joined the channel
[21:35] Tim_Smart: socket.io demo doesn't work :(
[21:37] mape: Yeah couldn't get it up and running quick
[21:37] isaacs: JimBastard: yo
[21:38] JimBastard: hey isaacs 
[21:38] JimBastard: did you get that thing i sent you ?
[21:38] isaacs: JimBastard: so, the issue seems to be that either it didn't install right in the first place, and now it thinks it's installed when it isn't, or it was installed someplace that isn't in the PATH
[21:38] mape: hmm begin.js seems neat
[21:38] isaacs: JimBastard: ./cli.js config get binroot
[21:38] isaacs: JimBastard: in the npm dir
[21:39] JimBastard: aight hes trying
[21:39] JimBastard: i published a few packages
[21:39] JimBastard: i wanna test them out a bit
[21:39] JimBastard: and ill publish more later i think
[21:40] JimBastard: yo mape 
[21:40] JimBastard: where is BENDER
[21:40] JimBastard: http://npm.mape.me/
[21:41] isaacs: JimBastard: i think it's using gravatar, not github acct pic
[21:41] mape: Yup
[21:41] JimBastard: same thing
[21:41] JimBastard: how do i set my email?
[21:41] mape: And the code gets tired after doing all the redundant ajax stuff
[21:42] mape: JimBastard: Hmm em.. Somewhere in .json ?
[21:42] mape: versionData.author.match(/<([^>]+)>/)[1];
[21:42] isaacs: mape: you know, the "maintainer" field on teh top-level package data has got the email addr of the npm acct.
[21:42] JimBastard: uggggggh
[21:43] isaacs: mape: packageData.maintainers[0].email i think
[21:43] mape: isaacs: Well that is handy
[21:43] JimBastard: so i have to edit my package.jsons ?
[21:43] isaacs: mape: :)
[21:43] isaacs: JimBastard: no, the author field is optional.
[21:43] JimBastard: if i want bender
[21:43] mape: isaacs: But maintainsers is even less used?
[21:43] mape: *maintainers
[21:43] isaacs: mape: the maintainers on the top-level data is set by npm, not in the package.json file
[21:44] mape: Oh
[21:44] JimBastard: i thought author was a name not a email
[21:44] isaacs: it's the maintainer from the pov of who has permission to update this record.
[21:44] mape: How evil, against the will of the contrib!
[21:44] isaacs: JimBastard: it is, bt you can put the email in <>
[21:44] mape: Which all the ones with gravatar have
[21:44] mape: But I'll look at the thingy
[21:44] isaacs: mape: also, it should support the "author":{"name":"Isaac Z. Schlueter", "email" : "i@izs.me", "url":"http://blog.izs.me"} style
[21:45] JimBastard: isaacs: after updating a package.json whats the proper way to update the repo?
[21:45] isaacs: (if you're gonna use author)
[21:45] mape: isaacs: I should clean this up, give you a spec of data needed and perhaps lessen the calls?
[21:45] isaacs: JimBastard: bump the version, republish
[21:45] Yuffster has joined the channel
[21:45] isaacs: mape: i've been meaning to parse out the author/maintainers info like that when it's given as a single string.
[21:45] isaacs: mape: or maybe make it a single string when it's given like that...
[21:45] isaacs: I really like "Name " best, personally
[21:46] Tim_Smart: isaacs: How do you remove something from the registry?
[21:46] JimBastard: npm republish?
[21:46] isaacs: JimBastard: just npm publish
[21:46] JimBastard: k
[21:46] isaacs: Tim_Smart: npm unpublish
[21:46] isaacs: Tim_Smart: npm unpublish pkg version
[21:46] Tim_Smart: isaacs: Yes, but that still leaves some metadata
[21:46] isaacs: Tim_Smart: yeah, and tha'ts not great.
[21:46] JimBastard:     "author": "Marak Squires ", ?
[21:46] JimBastard: isaacs: >?
[21:46] isaacs: JimBastard: sure
[21:47] JimBastard: if i cant get bender im gonna give up forever and write in .NET
[21:47] sechrist: mscdex: O.o the length of the client list never drops in socket -- it seems there's no timeout
[21:47] sechrist: or it doesn't pop it
[21:47] isaacs: Tim_Smart: i'm torn between bothering to fix that, and accepting the fact that it'll be throwaway code, since it's not gonna a problem in the next version of the registry architecture.
[21:47] sechrist: the console is showing the client disconnecting but the array stays the same length
[21:47] sechrist: argh bugs
[21:48] mape: JimBastard: there you go
[21:48] JimBastard: isaacs: npm ! Error: forbidden cannot modify existing version     at IncomingMessage. (/Users/Marak/.node_libraries/.npm/npm/0.1.17/package/lib/utils/registry/request.js:72:45)     at IncomingMessage.emit (events:42:20)     at HTTPParser.onMessageComplete (http:110:23)     at Client.ondata (http:861:22)     at IOWatcher.callback (net:502:31)     at node.js:221:9  
[21:48] Tim_Smart: isaacs: Yeah focus on the next revision
[21:48] isaacs: JimBastard: bump the version or unpublish the version you're trying to publish over.
[21:48] JimBastard: is there a better when then unpublish?
[21:48] mape: isaacs: Seems to work nicely
[21:48] JimBastard: a better way then*
[21:48] isaacs: JimBastard yeah, bump teh version and publish the new one
[21:48] JimBastard: lulz
[21:49] JimBastard: i forgot about versioning
[21:49] JimBastard: i should try that sometime
[21:49] JimBastard: ugh Faker@0.1.0                 @remote Faker@0.1.1                 @remote @tag=latest  lol
[21:49] joshbuddy has joined the channel
[21:50] keyvan has joined the channel
[21:50] isaacs: JimBastard: also, i think lowercasing names is probably a good idea.
[21:50] sechrist: ryah: http://groups.google.com/group/nodejs/browse_thread/thread/ff3e7e772cf44779/429880a42db35a13?lnk=raot
[21:50] sechrist: what's your thoughts on this?
[21:50] JimBastard: yeah isaacs Faker is a bit of a special case
[21:50] pdelgallego has joined the channel
[21:50] JimBastard: i dunno
[21:50] JimBastard: mape: did you hardcode me into there?
[21:50] sechrist: I have to patch node for my use case every time :(
[21:50] mape: JimBastard: nope, used isaacs thingymadoo
[21:50] JimBastard: ohh
[21:50] JimBastard: sweet
[21:51] JimBastard: okay cool
[21:51] mape: Seems npm does some mail magic
[21:51] Tim_Smart: Grr. Whys does socket.io fail to run its own demo
[21:51] JimBastard: hey mape why does it not show anyones watchers but mine ? lol
[21:51] JimBastard: and like hed
[21:51] JimBastard: jed
[21:51] isaacs: well, you see, couch only has database-level permissioning, not document-level.  so to prevent JimBastard from defacing everyone's projects, i have to attach the user info onto the record, and then check wh oyou're logged in as.
[21:51] JimBastard: it seems a lot arent registering
[21:51] mape: JimBastard: because they didn't supply the git repo
[21:52] kersny has joined the channel
[21:52] JimBastard: fail
[21:52] isaacs: turns out, that's really easy and handy to do, and will make it more straightforward to port.
[21:52] mape: isaacs: but you are up to supplying a large jsonblob with all the stuff so there is only one request needed?
[21:53] isaacs: mape: actually, in the next architecture, it won't matter.  you'll just upload the tarball, and it'll read it.  so there's like automatic verification that it's valid, which will prevent all those awful corruption bugs from ever coming back
[21:54] mape: isaacs: What?
[21:54] mape: I meant for the page, fetching json info
[21:54] isaacs: oh, right
[21:54] sechrist: mscdex: nevermind -- I see why the length doesn't change. It nulls the record. I assume that's so it doesn't screw up existing closures and stuff
[21:54] markwubben_ has joined the channel
[21:54] isaacs: mape: so, i hadn't really thought much about how the http API would differ.
[21:55] mscdex: sechrist: yeah, it doesn't remove it
[21:55] mape: isaacs: I guess it might be a good time to look at what is actually needed
[21:55] isaacs: mscdex, sechrist: wouldn't it be better to use pop/unshift/splice to remove it?
[21:55] isaacs: mape: definitely
[21:55] sechrist: dude
[21:55] sechrist: well
[21:56] sechrist: I think I know why it does this
[21:56] sechrist: if there's num references out already
[21:56] sechrist: doing that would shift it to another client
[21:56] sechrist: I mean everything _should_ be referenced
[21:56] isaacs: oic
[21:56] sechrist: but if you use the actual [i]
[21:56] sechrist: you're boned
[21:56] isaacs: so you mean, there's stuff out there that i doing requests[9] or somethign
[21:56] sechrist: I'm not sure if there is
[21:56] sechrist: but I assume that's why it's not splicing
[21:57] sechrist: it's nulling clients[i]
[21:57] isaacs: right, but yeah, then messing with the indexes would be bad.
[21:57] sechrist: I mean with 0 clients it would make sense to clean up the array
[21:57] sechrist: that may be something to add
[21:57] isaacs: ACTION wonders about the memory footprint of an array with a million null values...
[21:57] sechrist: ACTION too
[21:58] isaacs: i'd probably be inclined to modify the indexes, and just say "don't do that"
[21:58] isaacs: to keep the array smaller.
[21:58] sechrist: well cleaning with 0 clients would work, but what if you never have 0 clients
[21:58] sechrist: ehh
[21:58] sechrist: I'm afraid to make it remove
[21:58] isaacs: sechrist: how do you check if you have 0 clients?  you'd have to walk the array every time you nulled something out.
[21:58] isaacs: sechrist: or, nvm, you could just keep a counter.
[21:59] isaacs: sechrist: also, why expose the array directly, anyway?  do you ever need to access more than one?
[21:59] sechrist: ask learnboost
[21:59] sechrist: I don't know
[21:59] isaacs: ACTION doesn't quite know what we're talking about, anyway.
[21:59] sechrist: socket.io
[21:59] isaacs: oh, ok
[21:59] Tim_Smart: sechrist: Can you run the demo fine?
[22:00] sechrist: the chat demo?
[22:00] Tim_Smart: ya
[22:00] sechrist: yeah what was your problem with it
[22:00] Tim_Smart: doesn't connect
[22:00] sechrist: make sure you have the swf  and make sure 843 tcp is open
[22:00] sechrist: 843 is something for flash crossdomain crap
[22:01] mape: oh
[22:01] Tim_Smart: my browser supports normal websockets though
[22:01] mape: that seems like handy info
[22:01] sechrist: O.o
[22:01] sechrist: that should work then
[22:01] sechrist: did the console show anything?
[22:01] mape: Tim_Smart: Sure it doesn't fallback? I think my websocket server fails and then it tries flash
[22:01] sechrist: if not -- firewall?
[22:01] sechrist: chrome/safari use native websockets for me
[22:01] sechrist: << mac here
[22:02] Tim_Smart: lemme check
[22:02] sechrist: i'll say websockets for flash too
[22:02] sechrist: but yeah
[22:02] Tim_Smart: o. It connected this time
[22:02] sechrist: lul
[22:03] Tim_Smart: Hmm, I open another tab, and it doesn't connect
[22:03] mscdex: oh man....
[22:04] sechrist: Tim_Smart: wat
[22:04] mscdex: ACTION cringes
[22:04] sechrist: Tim_Smart: what code are you using
[22:04] Tim_Smart: sechrist: The demo code
[22:04] sechrist: learnboost's head?
[22:04] sechrist: no the repo
[22:04] Tim_Smart: sechrist: Yes
[22:05] sechrist: that crap works
[22:05] sechrist: crosstab
[22:05] sechrist: hmm
[22:05] Tim_Smart: that crap ain't working here
[22:05] sechrist: do you have it running locally or somewhere I can acces?
[22:06] Tim_Smart: locally, but I can DMZ for a little bit
[22:06] sechrist: dmz 843 too
[22:06] Tim_Smart: wow, it takes like 5 minutes to connect?
[22:06] sechrist: more like
[22:06] sechrist: 5ms
[22:06] sechrist: or less
[22:07] Tim_Smart: http://121.79.216.71:8080/chat.html
[22:07] Tim_Smart: For some reason there it connect automagically
[22:07] sunpin has joined the channel
[22:08] sechrist: dude
[22:08] sechrist: wheres your swf
[22:08] sechrist: http://121.79.216.71:8080/client/lib/vendor/web-socket-js/WebSocketMain.swf needs to exist
[22:08] sechrist: firebug
[22:08] Tim_Smart: I has websockets
[22:09] sechrist: works fine for me
[22:09] sechrist: in chrome
[22:09] mscdex: sechrist: it's a submodule that probably wasn't pulled in
[22:09] sechrist: R U SURE
[22:10] sechrist: hacked
[22:10] mscdex: :O
[22:10] Tim_Smart: hacked back
[22:10] Tim_Smart: Ctrl + c noob
[22:13] sechrist: well
[22:13] sechrist: I hacked myself when I hacked you
[22:13] sechrist: since it broadcasted it
[22:13] sechrist: lol @ xss
[22:14] sechrist: I wonder if that's running anywhere public -- the buffer is cached
[22:14] sechrist: when you connect it floods you with a few messages previously sent
[22:15] Tim_Smart: sechrist: Where is the swf hosted?
[22:15] sechrist: erm
[22:16] sechrist: http://dedi.itstrending.com/socketio/lib/vendor/web-socket-js/WebSocketMain.swf
[22:16] sechrist: I wgetted it from somewhere
[22:16] sechrist: screw git submodule mumbo jumbo
[22:16] Tim_Smart: sechrist: I already had submodule inited and updated
[22:22] mape: Tim_Smart: compress on npm, latest is lower version then stable
[22:23] Tim_Smart: OK I'll update it
[22:23] isaacs: mape: that'd just mean that the lastt version uploaded was a lower version number.  totally reasonable state.
[22:23] mape: Ah k
[22:23] mape: Tim_Smart: ^ nm me
[22:28] Tim_Smart: sechrist: Flash fallback in firefox ain't working >.>
[22:30] sechrist: firebug
[22:30] Tim_Smart: its open, why?
[22:30] sechrist: what's the problem then
[22:30] sechrist: is the swf 200?
[22:30] Tim_Smart: yes
[22:31] Tim_Smart: for some reason it got loaded twice though
[22:31] sechrist: 843 open?
[22:31] sechrist: http://localhost:843
[22:31] Tim_Smart: yup
[22:31] sechrist: clear cache + cookies
[22:31] Tim_Smart: cross-domain-policy returned
[22:32] sechrist: restart firefox
[22:32] sechrist: if the swf is loaded, 843 is up, and 8080 is up
[22:32] sechrist: it will function
[22:32] Tim_Smart: but it doesn't
[22:32] Tim_Smart: it registers the connection, and thats it
[22:33] sechrist: yeah the console will show a connection even if the cross policy failed
[22:33] Tim_Smart: it registers as "websocket" though...
[22:33] sechrist: as it should
[22:33] sechrist: did you clear everything in ff and restart it?
[22:33] Tim_Smart: yeah
[22:33] sechrist: O.o
[22:33] marshall_law has joined the channel
[22:34] sechrist: werd
[22:34] joshthecoder has joined the channel
[22:36] Tim_Smart: lol flash isn't in the transports array
[22:36] Tim_Smart: is it supposed to be?
[22:36] sechrist: yardly
[22:37] Tim_Smart: fail demo is fail, doesn't even have flashsocket in the array
[22:37] mape has joined the channel
[22:37] Tim_Smart: then again, it should fallback to something that works
[22:39] Tim_Smart: its using "xhr-multipart", which is what is failing
[22:40] sechrist: yeah xhr-multipart gave me issues because of crossdomain policy
[22:40] sechrist: but then again you shouldn't have that problem if chat.html is served from the same port
[22:41] Tim_Smart: Hmm I could connect when I created a connection in firebug
[22:43] maushu: Wait!
[22:43] maushu: What happened to announcer?!
[22:44] maushu: Nothing in the logs.
[22:44] mscdex: cross-domain xhr-multipart should work
[22:44] maushu: Huh, it's still running.
[22:45] _announcer has joined the channel
[22:45] k23z: sechrist: may I pm you ?
[22:45] mscdex: yay! WB _announcer!
[22:45] sechrist: i'm about to head out
[22:45] sechrist: Tim_Smart is battling socket.io
[22:45] k23z: that's .. quick 
[22:45] sechrist: quick? I've been in here 12 hours
[22:45] mscdex: heh
[22:45] mscdex: 12 hours is nothing in #node.js!
[22:45] sechrist: not idling
[22:45] k23z: Tim_Smart: I heard you are fighting socket.io, do you want to fight it together ? maybe you can be my sidekick, we will defeat it
[22:45] maushu: Weird. It was still running but not connected.
[22:46] Tim_Smart: sechrist: I moved the script tag to the bottom of chat.html, and manually specified the host, and it worked
[22:46] sechrist: HUR
[22:46] k23z: Tim_Smart: srsly, I wanna use socket.io also ..
[22:46] k23z: sechrist: I did not know, when you comin back ?
[22:46] sechrist: after dinner -- which i'm going out for
[22:46] sechrist: not sure
[22:46] mscdex: ok socket.io testing time!
[22:46] sechrist: WOO SOCKET.IO PARTY
[22:47] sechrist: ACTION afk
[22:47] mscdex: ACTION morphs into a interwebz socket
[22:47] stephenjudkins has joined the channel
[22:49] maushu: Man, debuggable doesn't have the logs of when people leave.
[22:49] k23z: socket.io FTW !
[22:50] maushu: mscdex, poke me when announcer leaves or something.
[22:51] Tim_Smart: socket.io success!
[22:51] maushu: It was receiving tweets... just not connected to the channel to tell them.
[22:54] Tim_Smart: k23z: Now that the socket.io blues have been defeated, with a bam and a pow, I can help get your socket.io running
[22:54] Tim_Smart: ... after I take a shower
[22:55] mscdex: pwnt
[22:59] mw has joined the channel
[23:09] JimBastard: people are haters on reddit
[23:09] JimBastard: apparently my software is a "piece of shit"
[23:09] mape: hehe
[23:09] mape: I guess you had an encounter with the internets?
[23:10] JimBastard: i didnt realize it was soo easy to transform browser javascript (poorly) written in 1999 to nodejs
[23:10] JimBastard: i should start asking these guys on reddit for help
[23:10] JimBastard: apparently you can just copy and paste the whole url of the website and it works in node like magic
[23:12] stagas has joined the channel
[23:14] isaacs: JimBastard: link, please?
[23:15] JimBastard: ahahah
[23:15] JimBastard: you dont wanna see
[23:16] mape: http://www.reddit.com/r/programming/comments/cgyn0/asciimo_a_javascript_ascii_art_creating_robot/
[23:16] JimBastard: lol
[23:16] JimBastard: its mostly me just yelling at people
[23:16] JimBastard: and calling them stupid
[23:16] JimBastard: but in all fairness, they are
[23:16] JimBastard: although calling someone out for that on the internet never works
[23:17] Tim_Smart has joined the channel
[23:20] sechrist has joined the channel
[23:23] isaacs: wait, that link doesn't work
[23:24] kersny has joined the channel
[23:24] isaacs: JimBastard: when i hit that link, i just get some error about there not being any tree people
[23:24] JimBastard: ?
[23:24] isaacs: something about no ents
[23:25] JimBastard: http://www.reddit.com/r/programming/comments/cgyn0/asciimo_a_javascript_ascii_art_creating_robot/
[23:25] JimBastard: its there
[23:25] isaacs: yeah, that's what i'm hitting
[23:25] isaacs: JimBastard: https://gist.github.com/bca92b1d04cdda0ec663
[23:26] JimBastard: lol wtf isaacs 
[23:26] JimBastard: ahaha
[23:26] JimBastard: thats not funny
[23:26] isaacs: ACTION hahha
[23:27] isaacs: JimBastard: so, seriously... it'd be cool if you worked imagemagik or gd or something into there, adn then create ascii art out of images.
[23:27] JimBastard: thats the idea
[23:27] JimBastard: i have some code already
[23:27] isaacs: i think there are c libs that do that already
[23:27] isaacs: oh, cool
[23:27] JimBastard: but it needs canvas
[23:28] Tim_Smart: imagemagik command line is fine for starters
[23:28] Tim_Smart: unless there are already bindings out there
[23:28] isaacs: i don't think there are.
[23:28] Tim_Smart: I stand corrected http://github.com/rsms/node-imagemagick
[23:28] isaacs: w00t!  go rsms
[23:28] JimBastard: ive got the code for doing it in JS already
[23:28] JimBastard: but it uses canvas
[23:29] Tim_Smart: (its a wrapper around the cmd version anyway)
[23:29] isaacs: yeah, just does cli
[23:29] jayunit has joined the channel
[23:29] Tim_Smart: isaacs: http://github.com/taggon/node-gd :)
[23:29] JimBastard: how can i get a canvas 
[23:29] JimBastard: tmpvar
[23:29] JimBastard: jsdom?
[23:30] isaacs: neato
[23:30] isaacs: go taggon!
[23:30] Tim_Smart: JimBastard: I don't think tmpvar implemented canvas in jsdom
[23:30] Tim_Smart: thats A LOT of work
[23:30] JimBastard: no u
[23:32] Tim_Smart: http://github.com/rsms/node-imagemagick looks good enough for me
[23:32] Tim_Smart: I shall npmify it
[23:33] JimBastard: you messed up node_mail btw, the main path was wrong according to isaac
[23:33] JimBastard: its not suppose to have the file extension
[23:34] Tim_Smart: Yeah :p
[23:35] steadicat has joined the channel
[23:36] keyvan has joined the channel
[23:38] Tim_Smart: imagemagick is now in the cloud
[23:41] Tim_Smart: isaacs[away]: ping for when you are back.
[23:42] [[zz]] has joined the channel
[23:45] bmizeran_ has joined the channel
[23:45] mscdex: wootage. socket.io be werkin
[23:45] mscdex: WITH cross-domain xhr-multipart
[23:48] Tim_Smart: I shall make socket.io npm friendly
[23:48] Tim_Smart: lawl
[23:49] _announcer: Twitter: "Sunday project of building something w/ node.js turned into just reading the docs; building -> next weekend" -- Jason Nochlin. http://twitter.com/jasonnochlin/status/16653034148
[23:49] mscdex: now to update my fork
[23:52] _announcer: Twitter: "Ask HN: I really don't understand node.js, could someone explain it to me? http://ff.im/mpYjr" -- antest. http://twitter.com/antest/status/16653196260
[23:52] joshbuddy has joined the channel
[23:53] mscdex: bewm
[23:53] jakob has joined the channel
[23:54] steadicat has joined the channel