[00:00] bgould: gonsfx: http://bgould.org/gonsfx.js
[00:01] samsonjs has joined the channel
[00:02] eydaimon has joined the channel
[00:02] eydaimon has joined the channel
[00:02] varioust has joined the channel
[00:04] eydaimon: mscdex: I got d/c after my last msg which was
[00:04] eydaimon: the current setup is using apache+unicorn actually, because nginx had connection issues. I'm exploring if changing the stack will solve the problem :/
[00:04] xiagox has joined the channel
[00:05] mscdex: eydaimon: are you calling res.end() ?
[00:06] gonsfx: bgould: heh, thanks a lot. just finished mine - essentially the same http://pastebin.com/8Qgckf0j
[00:07] shaunau has joined the channel
[00:07] samsonjs: chjj: it works because [].sort is a generic function: https://javascriptweblog.wordpress.com/2010/12/22/delegation-vs-inheritance-in-javascript/
[00:07] samsonjs: chjj: just found out about them the other day, they are pretty cool
[00:08] samsonjs: especially using array fns on strings and vice versa
[00:08] eydaimon: mscdex: yes
[00:09] jakehow has joined the channel
[00:12] edude03 has joined the channel
[00:12] Country has joined the channel
[00:13] xiagox has joined the channel
[00:14] neshaug has joined the channel
[00:15] Country has joined the channel
[00:17] MikhX has joined the channel
[00:19] bgould has left the channel
[00:23] Visualiza has joined the channel
[00:27] [[zz]] has joined the channel
[00:27] sonnym has joined the channel
[00:29] rfay has joined the channel
[00:30] sechrist has joined the channel
[00:34] dnyy has joined the channel
[00:35] dnyy1 has joined the channel
[00:36] stepheneb has joined the channel
[00:36] shiawuen has joined the channel
[00:37] w3dot0 has joined the channel
[00:37] stagas: http://stagas.com/circles.html
[00:38] sub_pop has joined the channel
[00:39] dnyy2 has joined the channel
[00:40] dnyy3 has joined the channel
[00:41] perezd has joined the channel
[00:41] roidrage has joined the channel
[00:41] vikstrous has joined the channel
[00:42] balaa_ has joined the channel
[00:42] Darshan-NowJS has joined the channel
[00:43] dnyy has joined the channel
[00:43] etaty has left the channel
[00:43] dnyy1 has joined the channel
[00:43] quackslike: stagas: yeah, nothing happened for me on that page.
[00:43] bstimmerman has joined the channel
[00:43] onre has joined the channel
[00:44] phiggins has joined the channel
[00:45] quackslike: stagas: ok, now i get some circles, not sure what this is all about..
[00:46] benatkin has joined the channel
[00:47] mikegerwitz has joined the channel
[00:47] edude03 has joined the channel
[00:48] stagas: quackslike: it syncs the physics state of any object with built in client prediction so everyone sees the same at the same time
[00:48] stagas: quackslike: that's why I did the 4 frames to show to show the latency
[00:48] Nexxy: rofl @ jimbastard's rap... oh wow
[00:48] vikstrous has joined the channel
[00:48] quackslike: stagas: i see
[00:49] stagas: quackslike: so the other frames from the one you move are a trip away, still the objects sync in time
[00:49] quackslike: stagas:sounds pretty clever
[00:52] MikhX has joined the channel
[00:52] dnyy2 has joined the channel
[00:53] joahua has joined the channel
[00:54] demastrie has joined the channel
[00:55] sub_pop has joined the channel
[01:00] jacobolus has joined the channel
[01:03] bradleymeck has joined the channel
[01:06] fljitovak has joined the channel
[01:06] dnyy3 has joined the channel
[01:08] dnyy4 has joined the channel
[01:10] bretts has joined the channel
[01:10] jaket has joined the channel
[01:10] [[zz]] has joined the channel
[01:14] demastrie has left the channel
[01:14] jacter has joined the channel
[01:15] Nexxy: ryah, favorite color of bucket?
[01:16] nickbaugh has joined the channel
[01:19] towski has joined the channel
[01:21] hkjels: Is there a way of passing an object with mongoose model?
[01:22] hkjels: If I define a new scema, that schema wil get it's own id and be presented as an array
[01:24] hkjels: Object is not valid offcourse
[01:26] ExsysTech has joined the channel
[01:26] vikstrous: hey guys, what mongodb driver should i use for nodejs?
[01:26] vikstrous: i really can't figure out why any of them is better than the others
[01:26] justinTNT has joined the channel
[01:26] nickbaugh: mongoose is cool
[01:27] vikstrous: apparently these are my options: http://www.mongodb.org/display/DOCS/node.JS
[01:27] nickbaugh: take a look at express-mvc-boilerplate
[01:27] vikstrous: ok
[01:27] vikstrous: well i'll be using express, so i guess i should use whatever works best with it
[01:28] hkjels: So, stringify will not work properly either
[01:29] vikstrous: wow express-mvc-boilerplate is really cool
[01:30] zkirill has joined the channel
[01:30] tarrant has joined the channel
[01:31] bgould has joined the channel
[01:31] TheLifelessOne has joined the channel
[01:32] TheLifelessOne: Hi, can Node.js natively encode/decode JSON?
[01:33] bgould: sure... JSON.parse()/stringify()
[01:33] TheLifelessOne: So just like in the browser. Awesome, thanks.
[01:33] balaa has joined the channel
[01:33] tarrant: Hey I'm teaching myself both node.js and Javascript together. Any suggestions on some code to read/look over?
[01:34] nickbaugh: tarrant: look at learnboost work, substack, ryah, github search for nodejs
[01:35] mattpat has joined the channel
[01:36] mattpat: Hey all, I'm looking to embed Node into an app on OS X (just binaries, not some crazy run-loop integration mumbo-jumbo) and I was wondering if anyone had any experience with a) any compiler/configure settings I should use, and b) which files need to go with the package
[01:37] ExsysTech has joined the channel
[01:37] sstephenson: mattpat: i do that with http://pow.cx/ - since node's binary only depends on openssl (which is present on os x) you can just include the binary itself
[01:38] max_dev has joined the channel
[01:38] sstephenson: you will want to compile it as 32-bit if you want it to run on core duo macs though
[01:38] mattpat: sstephenson: So is it really as simple as looking at what files `make install` installs, and grabbing 'em?
[01:38] m64253 has joined the channel
[01:38] sstephenson: you really only need the node executable
[01:39] mattpat: Everything else is statically linked then? Wow. What a wonderful world in which we live.
[01:39] sstephenson: yeah, the stdlib is compiled in
[01:39] sstephenson: and you can ship your npm dependencies in a node_modules directory
[01:40] TheLifelessOne: Is it possible to split an application across several files?
[01:41] mattpat: sstephenson: Perfect
[01:41] mattpat: TheLifelessOne: You can do that by separating each component into its own module, and then loading them with `require()`
[01:41] TheLifelessOne: Alright
[01:42] TheLifelessOne: Now is there anything special I need to do, like file scoping?
[01:42] kriszyp has joined the channel
[01:42] mattpat: Yup, the `exports` object controls what gets exposed; any properties of exports get exposed to your module's local variable after requiring
[01:42] TheLifelessOne: Alright
[01:42] mattpat: So if you have a function called doSomething that you want to expose, you would just say exports.doSomething = doSomething;
[01:43] TheLifelessOne: Okay
[01:43] mattpat: And then when someone did var moddy = require('./moddy.js');, you could then call moddy.doSomething()
[01:43] TheLifelessOne: Now what if I export a whole object?
[01:43] TheLifelessOne: With properties and method associated with it
[01:43] mattpat: You can assign anything you'd like to exports and it should "just work"
[01:43] TheLifelessOne: Okay
[01:43] TheLifelessOne: Thanks. :)
[01:45] mattpat: By the way, sstephenson, Pow is pretty nifty if I do say so myself
[01:46] sstephenson: thanks!
[01:47] mattpat: What magic do you do to make .dev work? Is that Node acting as a DNS server?
[01:47] savant has joined the channel
[01:47] savant has left the channel
[01:48] sstephenson: yes, there's a built-in DNS server on port 20560
[01:48] mattpat: Do you have to modify system configuration to make it consult your DNS server?
[01:48] sstephenson: the installer writes a file to /etc/resolver/dev that tells os x's resolver to use our server for .dev lookups
[01:49] sstephenson: `man 5 resolver` has more info
[01:50] mattpat: Beautiful. That's just fantastic.
[01:53] brownies has joined the channel
[01:56] sechrist: wait did somebody just say there's a node-based dns server?
[01:56] sechrist: or am I missing something
[01:58] sstephenson: sechrist: https://github.com/skampler/ndns
[01:59] sechrist: ooooh shiny
[02:00] sechrist: I've wanted one of these for awhile but from what i've heard about DNS it's hard to implement properly
[02:00] sechrist: so I just avoided trying -- like trying to implement my own crypto
[02:00] sstephenson: i'm only using a small part of it
[02:00] Aria: DNS isn't THAT hard.
[02:00] sechrist: Aria: go on
[02:00] Aria: It's just a very specific sort of encoding to fit the data in the packets.
[02:00] Aria: So you have to think about the decoding and encoding a bit.
[02:00] sechrist: ASN.1 also scares me btw
[02:00] Aria: But not rocket science.
[02:00] sstephenson: http://pow.cx/docs/dns_server.html
[02:01] sechrist: ah ok
[02:01] sechrist: this will be nice for development environments at work
[02:01] sechrist: we're using dnsmasq and it's kludgy
[02:01] neoesque has joined the channel
[02:01] Aria: I must say, I have a soft spot for powerdns.
[02:01] sstephenson: yep, my first version of this used dnsmasq too
[02:01] sechrist: well kludgier than something node that I can hack up
[02:01] mattpat: +1 to that. Also, +1 to that documentation you framework, I don't think I've ever seen an attractive one
[02:02] sechrist: Aria: powerdns as in the service or a piece of software?
[02:03] Aria: As in the software.
[02:03] Aria: (It is, however, tied to that service, and runs the entire .org zone.)
[02:04] sechrist: the entire .org tld is ran by it?
[02:04] sechrist: ok I trust it
[02:04] Aria: Yep.
[02:04] Aria: That's what I said.
[02:04] sechrist: however most of my dns needs are hacky things that don't need a lot of fancyness.. like development environments
[02:04] sechrist: I'm not running an ISP :)
[02:05] jacter1 has joined the channel
[02:05] Aria: Hehe.
[02:05] Aria: It has an SQL-backed mode and an LDAP-backed mode that is both performant and easy to hack with.
[02:05] Aria: And THAT is why I love it.
[02:05] sechrist: ldap? interesting
[02:06] temp01 has joined the channel
[02:06] galaxywatcher has joined the channel
[02:06] Aria: Yeah.
[02:08] Darshan-NowJS has joined the channel
[02:09] azeroth_ has joined the channel
[02:13] Phaaze has joined the channel
[02:15] sechrist: Does anybody know how to force a cache purge on a specific s3 object?
[02:15] sechrist: I found some secret way to do it awhile back and can't find it again
[02:15] Charuru: hey guys
[02:16] Charuru: isn't there a host that offers relatively high RAM?
[02:17] gazumps has joined the channel
[02:17] jtsnow has joined the channel
[02:19] __tosh has joined the channel
[02:21] sh1mmer has joined the channel
[02:31] gtLabs has joined the channel
[02:32] dyer has joined the channel
[02:32] dyer has joined the channel
[02:32] ChrisBuchholz: godnat
[02:32] SubStack: pow https://github.com/substack/node-freestyle
[02:33] SubStack: now back to those nodeconf slides
[02:33] demastrie has joined the channel
[02:33] demastrie has left the channel
[02:37] MatthewMueller has joined the channel
[02:38] raidfive has joined the channel
[02:39] jonaslund: *phew*
[02:39] jonaslund: ACTION finished a 48 hour game :)
[02:40] MatthewMueller: Hey guys, I've been playing around with the "exec" command and for the life of me I can't get anything to work.. even something as simple as exec("mkdir ./test", function(err) { if (err) console.log err }); will not work. Is there something I'm missing?
[02:44] mike5w3c has joined the channel
[02:46] Tidwell: MatthewMueller: dumb question, but you are doing: var exec = require('child_process').exec; right?
[02:50] michaelrice has joined the channel
[02:54] seivan has joined the channel
[02:54] mscdex: MatthewMueller: what error are you getting?
[02:58] vikstrous has joined the channel
[03:00] jtsnow has joined the channel
[03:00] MatthewMueller: @Tidwell, yes I am. No worries. I thought I might be asking a dumb question. I think I'm getting somewhere. The problem is I'm not seeing any errors from stdout or err
[03:05] Tidwell: MatthewMueller: well, mkdir doesn't echo anything on stdout on success IIRC - I've been messing with exec today as well and been having to go with 'no output assume success :\'
[03:06] Tidwell: MatthewMueller: have you tried something like ps -A or anything guarenteed to get something on stdout
[03:07] mscdex: MatthewMueller: how are you checking stdout and stderr ?
[03:08] MatthewMueller: @mscdex: through the call back function.
[03:08] eee_c has joined the channel
[03:08] MatthewMueller: @Tidwell: I'll try that thanks. Yah I wish there was a better way to check output
[03:09] mscdex: exec('mkdir ./test', callback) works fine for me
[03:09] pandeiro has joined the channel
[03:09] mscdex: are you expecting an error or ?
[03:10] Viper-72 has joined the channel
[03:11] galaxywatcher has joined the channel
[03:14] sugardave has joined the channel
[03:15] fr0stbyte: where is the core URL module located?
[03:15] TheLifelessOne has left the channel
[03:16] MatthewMueller: @mscdex: I was expecting it to work haha. I think I messed something up though, I'm working on fixing it - I'll let you know. Thanks!
[03:16] MatthewMueller has left the channel
[03:17] chrisdickinson has joined the channel
[03:17] zmack has joined the channel
[03:18] gazumps has joined the channel
[03:28] mscdex: fr0stbyte: lib/url.js ?
[03:29] fakewaffle has joined the channel
[03:29] fr0stbyte: mscdex: I was wondering if they were somewhere on the filesystem ie /usr/local/lib/node/ or otherwise
[03:29] mscdex: no, the core modules are compiled into the node binary
[03:29] fr0stbyte: ok thank you
[03:29] fakewaffle: hello
[03:31] samsonjs has joined the channel
[03:31] mscdex: fakewaffle: yo
[03:32] fakewaffle: mscdex: hey :)
[03:32] sh1mmer has joined the channel
[03:32] __sorin__ has joined the channel
[03:32] mscdex: fakewaffle: making more pie? ;)
[03:33] fakewaffle: mscdex: haha, yeah been working on it
[03:33] cwang has joined the channel
[03:33] fakewaffle: setting up config files and testing out mysql with it
[03:34] vikstrous has joined the channel
[03:38] xiagox has joined the channel
[03:39] brettgoulder has joined the channel
[03:39] Opaque has joined the channel
[03:40] chapel: http://www.reddit.com/r/node/comments/h1m2o/i_am_ryan_dahl_creator_of_nodejs_ama/ << cool that ryah is doing that, though I feel like if I had a question I could just ask him directly :P
[03:41] fangel has joined the channel
[03:42] w3dot0 has joined the channel
[03:42] superjudge has joined the channel
[03:43] sivy has joined the channel
[03:46] solarch has joined the channel
[03:50] neorab has joined the channel
[03:51] fakewaffle: chapel: thanks for that link
[03:52] Venom_X has joined the channel
[03:52] djktno has joined the channel
[03:56] temp01 has joined the channel
[03:56] bradleymeck has joined the channel
[03:57] zkirill has joined the channel
[03:58] michaelrice has joined the channel
[03:59] TheLifelessOne has joined the channel
[03:59] MikhX has joined the channel
[04:00] meso_ has joined the channel
[04:00] vikstrous: is it just me or is there a much simpler way of doing this? http://stackoverflow.com/questions/3601080/how-do-i-pass-content-from-a-template-to-a-layout-in-express
[04:00] ion- has joined the channel
[04:00] vikstrous: i just set a variable inside the template and then used it in the layout and it was available...
[04:02] meso_ has joined the channel
[04:05] towski has joined the channel
[04:05] solarch has left the channel
[04:05] F1LT3R has joined the channel
[04:07] vikstrous: wow i don't think i understand the scope of variables in templates... i'm really confused
[04:08] Nexxy: vikstrous, join the club!
[04:08] xiagox has joined the channel
[04:08] Nexxy: what templating engine are yuo using?
[04:09] Wa has joined the channel
[04:12] vikstrous: Nexxy: jade
[04:15] Nexxy: ohh
[04:15] vikstrous: When I set a variable in a template and then i use it in the layout, it's available, then when i open another page which doesn't set the variable, the variable still has the old value...
[04:15] Nexxy: perplexing!
[04:15] newy_ has joined the channel
[04:15] mscdex: ACTION shakes a fist at templating engines!
[04:15] Nexxy: I'm still attempting to wrap my head around the scope of these new-fangled template system
[04:15] vikstrous: so i'm wondering what would happen if too many people hit different pages at the same time if i used this to set the titles...
[04:15] Nexxy: unfortunately my head isn't as pliable as it used to be ;<
[04:15] vikstrous: heh
[04:15] Nexxy: vikstrous, are you using express?
[04:15] vikstrous: yeah
[04:15] Nexxy: omg Wa!
[04:15] Nexxy: <3
[04:15] nodelog has joined the channel
[04:15] mscdex: he had negative beers
[04:18] fakewaffle: ah, like i tried giving myself the other day?
[04:18] Nexxy: not a he ;\
[04:18] Nexxy: I forget who stole my beer though
[04:18] Nexxy: it was wholly uncalled for
[04:18] Nexxy: probably mscdex
[04:18] fakewaffle: a femail that uses node? http://danawesome.netau.net/images/Emotions/32.png
[04:18] fakewaffle: female* sheesh, i cant type
[04:18] Nexxy: I didn't say that!
[04:18] fakewaffle: dvorak has fucked me up a little
[04:29] fakewaffle: http://danawesome.netau.net/images/2%20Panel/gasp.png
[04:29] Nexxy: that image will forever remind me of inglip
[04:29] Nexxy: ;\
[10:18] nodelog has joined the channel
[10:19] onre_ has joined the channel
[10:20] wilken has joined the channel
[10:24] onre_ has joined the channel
[10:28] nodelog has joined the channel
[10:28] unomi has joined the channel
[10:29] onre_ has joined the channel
[10:33] cryptix has joined the channel
[10:33] cryptix has left the channel
[10:35] onre_ has joined the channel
[10:35] zomgbie has joined the channel
[10:40] onre_ has joined the channel
[10:42] etaty has joined the channel
[10:44] Gruni has joined the channel
[10:44] Tom-Tomaso has joined the channel
[10:44] fawek has joined the channel
[10:46] onre_ has joined the channel
[10:51] stepheneb has joined the channel
[10:52] onre has joined the channel
[10:54] RusAlex has joined the channel
[10:54] tmedema: Is there an obvious mistake in this gist? I am trying to pipe a mp3 song to a request within an Express http server: https://gist.github.com/951434
[10:55] tmedema: I am getting errors like "server client error: Error: ECONNRESET, Connection reset by peer" and "server client error: Error: EPIPE, Broken pipe"
[10:56] pyrotechnick2: that's not an express server
[10:56] Sephi-Chan: What can i use to base64 encode string with Node ?
[10:57] tmedema: pyrotechnick2: ehm, not in that actual file no -- the server parameter is the express server.
[10:57] tmedema: this is just a simple abstraction module handling this particural route
[10:58] fyskij has joined the channel
[10:59] pkrumins has joined the channel
[10:59] pkrumins: what's going down!
[11:00] superjudge has joined the channel
[11:01] jacter has joined the channel
[11:02] jetienne: Ian_Corne: uploading 0.4.7 for natty... will test and keep you updated
[11:03] ph^ has joined the channel
[11:03] Ian_Corne: ok thanks :)
[11:04] ian-london has left the channel
[11:04] ph^ has joined the channel
[11:05] `3rdEden: Sephi-Chan: Buffers
[11:05] mnbvasd: v8: Buffer("abcString").toString('base64');
[11:05] mnbvasd: v8: Buffer("abcString").toString('base64');
[11:05] v8bot: mnbvasd: ReferenceError: Buffer is not defined
[11:05] mnbvasd: hm
[11:05] `3rdEden: Buffers is a node thing
[11:05] `3rdEden: not V8 related
[11:05] mnbvasd: ah, fair point
[11:06] matjas has joined the channel
[11:06] mnbvasd: Buffer('YWJjU3RyaW5n','base64').toString('utf8');
[11:06] pkrumins has left the channel
[11:07] onre_ has joined the channel
[11:09] Sephi-Chan: `3rdEden: Great thank you ! :)
[11:09] sendark has joined the channel
[11:10] jacobolus has joined the channel
[11:12] fairwinds has joined the channel
[11:13] onre_ has joined the channel
[11:13] littke has joined the channel
[11:14] stonebra_ has joined the channel
[11:16] tmedema: new gist, same problem.. https://gist.github.com/951463 - anyone has experience with streaming audio to the browser?
[11:18] Tom-Tomaso has joined the channel
[11:18] vandenoever has left the channel
[11:18] Mrfloyd has joined the channel
[11:19] onre_ has joined the channel
[11:20] okuryu has joined the channel
[11:22] eb4890 has joined the channel
[11:25] Tom-Tomaso has joined the channel
[11:26] F1LT3R has joined the channel
[11:30] eldios_ has joined the channel
[11:33] Metapony has joined the channel
[11:35] herbySk has joined the channel
[11:35] markwubben has joined the channel
[11:46] tiagoa has joined the channel
[11:49] matjas has joined the channel
[11:49] slaskis: tmedema: no, but i've wanted to play with it. what's the problem you get?
[11:50] stonebranch has joined the channel
[11:52] pyrotechnick2 has left the channel
[11:52] beawesomeinstead has joined the channel
[11:52] beawesomeinstead has joined the channel
[11:56] Xano has joined the channel
[11:56] jacter has joined the channel
[11:59] TomY has joined the channel
[12:03] nyholt_ has joined the channel
[12:04] shiawuen has joined the channel
[12:05] saschagehlich has joined the channel
[12:11] jeedey has joined the channel
[12:13] Spion_ has joined the channel
[12:13] rfay_afk has joined the channel
[12:13] stagas: tmedema: maybe just set a content-type and skip the rest headers
[12:15] jacter has joined the channel
[12:17] tiagoa has joined the channel
[12:18] neoesque has joined the channel
[12:18] jacter1 has joined the channel
[12:21] jeedey: for very simple code that requires more 'do this, return immediate result' in node.js, is it better to use blocking code or still drive it as events somehow?
[12:21] dyer has joined the channel
[12:21] dyer has joined the channel
[12:21] Poetro has joined the channel
[12:21] stagas: jeedey: if it's not i/o and it's going to finish fast then block
[12:22] fyskij has joined the channel
[12:23] jeedey: its socket i/o, but the socket is supposed to just report if connection is successful or not (port monitoring)
[12:23] Charuru has joined the channel
[12:24] stagas: jeedey: example?
[12:25] jeedey: stagas, it literally uses connect to a host/port and the function (say portCheck()) should just ret true or false depending on success or failure, which should not wait around
[12:25] RusAlex has joined the channel
[12:27] stagas: jeedey: if it returns then use it like that
[12:28] beawesomeinstead has joined the channel
[12:28] jeedey: stagas, any examples on the best way to do it? doesnt have to be for net, just any function thats similar
[12:29] stagas: jeedey: what do you mean? blocking functions return, async callback
[12:29] jeedey: i mean on using net blocking, or do you still have to listen for connect and error
[12:31] pietern has joined the channel
[12:33] stagas: jeedey: whatever works
[12:33] stagas: :)
[12:33] jeedey: thanks stagas, looking forward to my first Node project
[12:34] Tom-Tomaso has joined the channel
[12:40] margle has joined the channel
[12:40] jacter has joined the channel
[12:43] sunblush has joined the channel
[12:43] sunblush has joined the channel
[12:43] azeroth____ has joined the channel
[12:49] jscheel has joined the channel
[12:49] jscheel has joined the channel
[12:50] FireFly|n900 has joined the channel
[12:51] jetienne: https://launchpad.net/~jerome-etienne/+archive/neoip/+buildjob/2518670 natty nodejs deb will be built in 23h ... ubuntu just released 11.04 and got no cpu to spare :)
[12:51] fyskij: mv /bin/laden /dev/null
[12:52] jetienne: stagas: hey have you seen campfire http://yfrog.com/hsjghbp or night fall http://yfrog.com/h2nc5jp ? i start to really love 3D :)
[12:54] blueadept has joined the channel
[12:55] stagas: jetienne: shit nice!
[12:55] davidsklar has joined the channel
[12:56] jetienne: :)
[12:56] stephank has joined the channel
[12:57] christkv has joined the channel
[12:57] stagas: jetienne: where can I play these?
[12:57] christkv has joined the channel
[12:57] jetienne: stagas: on my computer only :( the issue is that my deployment isnt smooth
[12:58] demastrie has joined the channel
[12:58] demastrie has left the channel
[12:58] jetienne: stagas: so to publish a version cost me 2-3h, so i dont publish often
[12:58] jetienne: this is a mistake. i need to fix this
[12:58] joahua has joined the channel
[12:58] planetic: Do vs. async?
[12:58] gavin_huang has joined the channel
[12:59] FireFly has joined the channel
[12:59] jetienne: same issue with http://buddymaze.com the version on my box is much better than the one deployed :(
[13:00] jetienne: come play at http://stagas.com/circles.html :)
[13:01] industrial: lol nice :)
[13:01] stagas: jetienne: it's a little buggy with rapid movements
[13:02] jetienne: it is cool, we are here to test :)
[13:02] stagas: jetienne: and it's cpu intensive the single page is smoother http://stagas.com:8555/
[13:02] m00p has joined the channel
[13:02] max_dev has joined the channel
[13:03] jetienne: stagas: what makes me small or big ?
[13:03] eldios_: ACTION is sad cause is uber-firewalled and cannot contact non-stardard ports :P
[13:03] stagas: jetienne: hash of the sessionid
[13:03] stagas: jetienne: like the color
[13:04] jetienne: stagas: hmm what about who ever got the most speed during the contact get the points ?
[13:04] liar has joined the channel
[13:05] jetienne: and players got strongers with more points ?
[13:05] stagas: jetienne: haha yeah
[13:05] hellp has joined the channel
[13:05] strmpnk has joined the channel
[13:05] jetienne: i reload until i got a big one :)
[13:06] tiagoa has joined the channel
[13:11] fermion has joined the channel
[13:12] avalanche123 has joined the channel
[13:12] amacleod has joined the channel
[13:12] JulioBarros has joined the channel
[13:13] themiddleman_itv has joined the channel
[13:14] dyer has joined the channel
[13:14] themiddleman has joined the channel
[13:15] tilgovi has joined the channel
[13:15] mdaisuke has joined the channel
[13:16] Ori_P has joined the channel
[13:17] sirkitree has joined the channel
[13:18] nyholt has joined the channel
[13:21] jano has joined the channel
[13:24] MacDiva has joined the channel
[13:25] eventi has joined the channel
[13:27] dnolen has joined the channel
[13:28] postwait has joined the channel
[13:30] stepheneb has joined the channel
[13:31] mynyml has joined the channel
[13:31] mynyml_ has joined the channel
[13:34] tilgovi_ has joined the channel
[13:36] cbibler_ has joined the channel
[13:37] swaj: wow. I have to say I'm pretty appalled by the trademark nonsense from Joyent
[13:37] zubairov has left the channel
[13:37] swaj: seems less about protecting node and more about preventing competition.
[13:37] tilgovi has joined the channel
[13:38] wink_: competition from what?
[13:38] swaj: other companies starting a node host
[13:38] swaj: "Any sort of use in commerce, such as promoting a Platform-as-a-Service or professional services offering by using the Node.js mark, does require a written license agreement."
[13:39] carsonm: swaj: Nothing keeps someone from just not using the name.
[13:39] wink_: you can still do it, you just cant name your company "node.js hosting inc"
[13:39] wink_: without a license*
[13:39] swaj: oh yes, that's a great idea. I'm starting a hosting company.. we host "javascript stuff"
[13:40] wink_: you can say you host node, you cant use node in your name
[13:40] wink_: at least thats how ryah was explaining it last week
[13:40] s1985 has joined the channel
[13:40] carsonm: I don't think you can say you "host node" without a TM
[13:40] swaj: exactly.
[13:41] carsonm: Any mention of it would need the TM, but I still don't think that matters.
[13:41] swaj: the way that's worded, I can't advertise myself as a hosting platform for node.js without getting a license from Joyent, which is ludicrous
[13:41] eldios_: meh.. same feeling I had when I saw it.. anyway I said at that time I was almost feeling it in the air that things like this were coming
[13:41] wink_: swaj: i think you're making a mountain out of a mole hill :p
[13:42] marcello3d: swaj: doesn't mean you have to pay for a license
[13:42] swaj: wink_: then there's the fact that Joyent and modify and revoke licenses at any time.
[13:42] swaj: and = can*
[13:42] DennisRasmussen has joined the channel
[13:42] carsonm: The name is just the name, the tech is still the what matters.
[13:43] mscdex: node.js rules!
[13:43] swaj: I have a lot of respect for ryah, but I'm very fearful of node's future :(
[13:43] Sembiance: mscdex: sure does :)
[13:43] mscdex: swaj: joyent != skynet
[13:43] swaj: not yet
[13:43] wink_: haha
[13:43] chjj: i think node will be fine, im worried about javascripts future
[13:43] marcello3d: node.js having commercial backing is a good thing
[13:43] Sembiance: swaj: can't you just fork node.js and then do whatever you want with it? :)
[13:43] wink_: i for one welcome our async overlords
[13:44] tobiassjosten has joined the channel
[13:44] carsonm: Sembiance: you don't even need to fork it, just don't use the name.
[13:44] baudehlo: swaj: it's exactly the same as the Apache trademark situation. You just can't name your product "The Node.js Frobnozzle"
[13:44] mscdex: i think javascript will be fine, im worried about crockford's future
[13:44] thomblake has joined the channel
[13:44] swaj: baudehlo: not according to the wording.
[13:44] eldios: crockford's future will be fine, im worried about giant rainbow robot unicorn's future
[13:44] s1985: i for one look forward to the future of node.js
[13:45] colinclark has joined the channel
[13:45] mscdex: i for one look forward to back to the future
[13:45] s1985: the licensing thing ultimately won't matter a big deal.
[13:45] baudehlo: swaj: the wording is taken from the Apache trademark.
[13:45] eldios: I for one look forward to my back's future
[13:45] swaj: baudehlo: I can't market myself as a node hosting provider without a license from Joyent.
[13:45] willwhite has joined the channel
[13:45] swaj: with the current wording.
[13:46] timmywil has joined the channel
[13:46] baudehlo: I'm pretty sure you can.
[13:46] Visualiza has joined the channel
[13:46] marcello3d: swaj: where does it say that?
[13:46] swaj: "Any sort of use in commerce, such as promoting a Platform-as-a-Service or professional services offering by using the Node.js mark, does require a written license agreement."
[13:46] swaj: I'm pretty sure that says I can't.
[13:47] marcello3d: read the nominative use section
[13:47] carsonm: swaj: Marketing yourself as a node.js host is like marketing yourself as a Apache host.
[13:47] swaj: no it's not. Apache is a webserver, Node.js is a platform.
[13:47] s1985: i dont really care or have any respect for hosting providers who overload their servers
[13:47] s1985: to them, node.js is just an excuse
[13:47] s1985: to further overload servers
[13:48] marcello3d: swaj: you can say "JSHOST: a javascript hosting service." "you can use node.js on our servers"
[13:48] s1985: and sacrifice performance which is everything that makes node.js great in the first place
[13:48] s1985: it will become the next php
[13:48] swaj: marcello3d: no, I can't. Not according to the line I just pasted.
[13:48] nerdfunk has joined the channel
[13:48] s1985: if hosting providers get their filthy hands into it
[13:48] marcello3d: read the nominative section
[13:48] jesusabdullah: ACTION rolls his eyes.
[13:48] nerdfunk has left the channel
[13:48] baudehlo: swaj: yes but you're pasting a very small section.
[13:48] jesusabdullah: Good morning y'all
[13:48] marcello3d: "Nominative uses are uses that refer to a mark in a factual manner, using only so much of
[13:48] marcello3d: the mark as is necessary and doing nothing to imply sponsorship or endorsement by the
[13:48] marcello3d: trademark holder"
[13:49] s1985: okay lawyer, lol
[13:49] s1985: i can'tbelieve everyone is making such a big deal about it
[13:49] hunterloftis has joined the channel
[13:49] baudehlo: they aren't.
[13:49] baudehlo: swaj is :)
[13:49] s1985: oh, they are
[13:49] swaj: I'm not the only one
[13:49] marcello3d: I'm guessing you can probably even have a tagline, "we host your node.js projects" and fall under nominative use
[13:49] carsonm: The easiest thing to do is just not use the name at all. It really doesn't matter, if people want to host with you then they will know what you are using.
[13:50] chjj: i dont see anything wrong with that sentence
[13:50] mscdex: lawyer.js!
[13:50] marcello3d: swaj: just email them and ask
[13:50] swaj: you can't even tell people your project is written in node without a disclaimer in your readme:
[13:50] swaj: "In order to help clarify that you are the source of the module (and so that we don.t get support requests for your code, or vice versa) you should add the following disclaimer, or one with similar legal effect, in an appropriate location: .Node.js is an official trademark of Joyent. This [module, event, etc.] is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.. Appropriate locations could include your web
[13:50] s1985: faptothefuture.js
[13:51] marcello3d: swaj: I doubt that'll happen :)
[13:51] mscdex: swaj: note how it doesn't say that's required
[13:51] s1985: maybe i should go join #lawyer-talk
[13:51] mscdex: maybe i should go back to bed
[13:51] swaj: no, but if Joyent decides they don't like you or your project, they can happily demand you remove any references to Node or face legal action.
[13:52] s1985: i'd like to go to bed
[13:52] marcello3d: trademark law is funky. they basically just have to prove that they're protecting the trademark, or else they'll lose it.
[13:52] mscdex: swaj: right, and alienate their developer community
[13:52] s1985: but mongodb-native has kept me awake for almost 24 hours now
[13:52] drudge: making a mountain out of a mole hill
[13:52] marcello3d: s1985: github.com/marcello3d/node-mongolian :D
[13:52] markwubben has joined the channel
[13:52] swaj: we'll see
[13:52] s1985: im sorry i can't trust a lawyer lol
[13:53] mscdex: i can't trust my alarm clock
[13:53] swaj: like the one that wrote that trademark policy?
[13:53] s1985: "WARNING! The API is super experimental, and will be adding, removing, and changing the API regularly. Use at your own risk" thanks but no thanks :)
[13:53] s1985: good luck with it though
[13:53] s1985: i think mongoose is a piece of crap
[13:53] marcello3d: s1985: node.js should have the same disclaimer
[13:54] mscdex: super experimental is better than ultra experimental
[13:54] s1985: sure, except node.js has a pretty big following now
[13:54] s1985: and from my experiences it has been quite stable
[13:54] marcello3d: same with mongolian db :)
[13:54] marcello3d: but I don't want anyone whining
[13:54] s1985: more stable then python which is where i came from lol
[13:55] sgentle has joined the channel
[13:55] s1985: lol, sure, i've got it bookmarked i'll keep an eye on it
[13:55] jtrudeau has joined the channel
[13:55] s1985: for now i prefer to use the bare minimum amount of dependencies
[13:55] s1985: for obvious reasons
[13:55] matjas_ has joined the channel
[13:56] Mrfloyd has joined the channel
[13:57] edude03 has joined the channel
[13:58] rchavik has joined the channel
[13:59] arianrock has joined the channel
[13:59] arianrock: if anyone has issues with byte orders in node, I wrote a little neat module to overcome those problems :3
[13:59] arianrock: http://pastebin.com/SvzR1MAY
[14:03] timmywil has joined the channel
[14:03] arianrock has left the channel
[14:03] awenkhh has joined the channel
[14:04] fumanchu182 has joined the channel
[14:04] Zeta has joined the channel
[14:05] marcello3d: I out.
[14:05] Zeta has left the channel
[14:05] marcello3d: have a good day
[14:06] chjj: https://github.com/joyent/node/commit/9812e31e8ba43be9c50d07f83cbf459427a5d877
[14:06] chjj: that commit
[14:06] chjj: is win
[14:08] Opaque has joined the channel
[14:08] brolin has joined the channel
[14:09] s1985: i wouldnt know what that means im just a lowly web developer
[14:09] unomi has joined the channel
[14:13] s1985 has left the channel
[14:13] piscisaureus has joined the channel
[14:17] littke has joined the channel
[14:18] baudehlo: chjj: hah. I *just* implemented that in Haraka.
[14:18] iFire has joined the channel
[14:18] baudehlo: ffs :)
[14:20] Sembiance: chjj: what do you find 'win' about that commit?
[14:21] baudehlo: Sembiance: well it means you can do network strings easily.
[14:21] __tosh has joined the channel
[14:23] davidwalsh has joined the channel
[14:24] brettgoulder has joined the channel
[14:24] kkaefer: are there any instructions on setting up a private npm registry?
[14:24] kkaefer: apart from the npm documentation which mainly just states that it's possible
[14:25] andrewgertig has joined the channel
[14:25] kkaefer: I'm specifically referring to server/database configuration for user authentication
[14:25] thalll has joined the channel
[14:25] Tidwell has joined the channel
[14:26] brianc has joined the channel
[14:27] tmedema: slaskis: http://groups.google.com/group/nodejs/browse_thread/thread/a7d6b5251af25810
[14:27] wdperson has joined the channel
[14:27] tmedema: stagas: tried that, didn't help
[14:27] BillyBreen has joined the channel
[14:30] Know1edge has joined the channel
[14:31] christkv has joined the channel
[14:32] taf2: https://github.com/taf2/fork.node -> now it's a forking server... very similar to unicorn for rails...
[14:32] taf2: still working on adding health checks from master to child process
[14:33] taf2: but to use it is very easy... tiamat -s your_app.js
[14:33] fakewaffle has joined the channel
[14:33] taf2: and the configuration is pretty cool too: https://github.com/taf2/fork.node/blob/master/config.js
[14:33] than1 has joined the channel
[14:33] pquerna has joined the channel
[14:34] charlesjolley- has joined the channel
[14:34] mike5w3c_ has joined the channel
[14:35] timmywil has joined the channel
[14:35] jakehow has joined the channel
[14:36] beawesomeinstead has joined the channel
[14:36] CoinOpeBoy has joined the channel
[14:37] planetic has left the channel
[14:37] qbert has joined the channel
[14:37] baudehlo: taf2: how does it compare to cluster?
[14:37] taf2: i haven't looked at cluster
[14:37] taf2: i'll look now
[14:38] taf2: i didn't see anything else that used fork... the one i saw was fugue and it used spawn, that can work but using fork and execve keeps tiamat simpler
[14:40] baudehlo: as a library user I don't really care though.
[14:40] baudehlo: I just want it to work :)
[14:40] taf2: yep, i hear you
[14:40] taf2: tiamat can daemonize it self can cluster?
[14:41] taf2: so, like i don't need to depend on upstart
[14:41] [AD]Turbo: I installed node 0.4.7 + npm 1.0, and then installed some basic modules (e.g. npm -g install connect); now from my code i use var connect = require('connect') but I get an error that connect is not found; where am I wrong?
[14:42] [AD]Turbo: i checked, the -g option installed modules in the "global" prefix/directory (/usr/local/lib/node_modules)
[14:42] [AD]Turbo: so i connot understand why my require instruction raises a Error: Cannot find module 'connect' :(
[14:43] DJazz has joined the channel
[14:43] McMAGIC--Copy has joined the channel
[14:43] baudehlo: taf2: no it can't, because that requires a compiled extension since node has no fork or setsid built-in
[14:43] tyler-iphone: i think i point that im gonna make at my talk is that sequential != synchronous
[14:44] tyler-iphone: s,i point, a point
[14:44] DJazz: anyone know a good (working) canvas implemetation in node?
[14:44] taf2: baudehlo, yeah, that's what i've added with tiamat
[14:44] taf2: so i guess that's the difference
[14:44] baudehlo: *nod*
[14:44] taf2: also, mine is rough around the edges, this is a few days of hacking
[14:45] taf2: going to use this for an analytics app
[14:45] baudehlo: I'm just daemonizing by running under screen right now :)
[14:45] beriberikix has joined the channel
[14:45] baudehlo: but in the future I'll run under runit.
[14:46] taf2: yeah, that's the thing - i notice all node apps are doing things like that in production... i don't know i want it to daemonize itself :)
[14:46] baudehlo: well runit/daemontools is a good option.
[14:47] baudehlo: just "different" to the common init.d style option
[14:49] eresair has joined the channel
[14:50] DJazz: anyone?
[14:50] sub_pop has joined the channel
[14:50] stagas has joined the channel
[14:51] pquerna: we use runit too.
[14:53] Tom-Tomaso has joined the channel
[14:53] joecritch has joined the channel
[14:54] joecritch: hi
[14:54] mnbvasd: ACTION coughs at: http://nodejs.org/docs/v0.4.7/api/child_processes.html#child_process.spawn
[14:54] mnbvasd: is it wrong to spawn a new process in the background to daemonise your node process?
[14:55] Know1edge has joined the channel
[14:55] joecritch: Does anyone know why NPM now installs packages relatively? How do i enable a cli-based package, e.g. nodester-cli ?
[14:55] bradleymeck has joined the channel
[14:55] Charuru: how do i get socket.io to use only xhr-multipart?
[14:56] baudehlo: DJazz: https://github.com/learnboost/node-canvas
[14:56] `3rdEden: Charuru: disable the other transports?
[14:56] `3rdEden: you can add a transports option in the constructor
[14:57] avalanche123 has joined the channel
[14:57] Charuru: new io.Socket(null, { port: 80, transports: ['xhr-multipart']});
[14:57] Charuru: like this right?
[14:57] Charuru: somehow that's not working for me
[14:58] Charuru: 2 May 10:57:58 - Initializing client with transport "websocket"
[14:58] Charuru: :S
[14:58] slaskis: joecritch: npm 1.0?
[14:59] jetienne: Charuru: try with remember : false
[14:59] joecritch: slaskis: yep, 1.0.1rcFINAL
[14:59] chapel: joecritch: do npm install package -g
[14:59] jetienne: Charuru: there is a flag not to store paste resultin cookie
[14:59] `3rdEden: Charuru remove your cookies
[14:59] jetienne: chapel: it is int he chat
[14:59] Charuru: ok thanks
[14:59] `3rdEden: also, set the same transport restrictions for your server ;)
[14:59] slaskis: joecritch: yeah, new feature is the local install by default, to install a global package use `npm install X -g`
[14:59] chapel: what jetienne ?
[15:00] jetienne: https://github.com/LearnBoost/Socket.IO-node/blob/master/example/chat.html#L33
[15:00] themiddleman_itv has joined the channel
[15:00] joecritch: chapel + slaskis: thank you!
[15:00] `3rdEden: but than again, why on earth would you want to use xhr-multipart by default Charuru
[15:00] `3rdEden: instead of websockets
[15:00] jetienne: var socket = new io.Socket(null, {port: 8080, rememberTransport: false}); Charuru this flag
[15:00] Schmallon has joined the channel
[15:00] brianc1 has joined the channel
[15:00] slaskis: joecritch: any time :)
[15:00] Charuru: just testing some stuff
[15:00] Charuru: jetienne: thanks
[15:00] jetienne: chapel: my bad this was for Charuru
[15:00] chapel: no worries
[15:01] `3rdEden: kaay
[15:01] jshsu has left the channel
[15:02] Opaque has joined the channel
[15:02] max_dev has joined the channel
[15:03] deedubs has joined the channel
[15:03] F1LT3R has joined the channel
[15:03] Charuru: ok with websockets disabled, i can't connect at all
[15:04] eee_c has joined the channel
[15:04] Charuru: it works when i turn websockets on
[15:04] `3rdEden: your not using firefox
[15:04] Charuru: doesn't work when i remove websockets from transport array
[15:04] Charuru: using chrome yeah
[15:04] `3rdEden: multipart is firefox only
[15:04] Charuru: oh
[15:04] `3rdEden: so, thats why it doesn't work
[15:04] Charuru: what fallback should i try with chrome
[15:04] `3rdEden: xhr-polling
[15:04] Charuru: ok thanks
[15:04] `3rdEden: jsonp-polling
[15:04] `3rdEden: ^ works in all browsers
[15:06] febits has joined the channel
[15:08] irena has joined the channel
[15:09] nickbaugh has joined the channel
[15:10] bartt has joined the channel
[15:11] jetienne: flash socket is cool too
[15:11] jetienne: and this is the good one for firefox
[15:11] brianm has joined the channel
[15:11] brianm has joined the channel
[15:12] tyler-iphone: anyone know how to embed html into keynote?
[15:12] jtsnow has joined the channel
[15:12] eldios: installing linux I suppose
[15:13] etaty: how to do this with jade ? var1 constantWord var2
[15:13] eldios: also sidenote: creating groups&users via CLI on MacOSX sucks as a turbo 1GW vacuum cleaner powerred by a jet-engine
[15:15] deedubs: tyler-iphone: http://hints.macworld.com/article.php?story=20091104002118164
[15:15] tyler-iphone: deedubs: muchos mahalos
[15:15] mnbvasd: eldios: you could have used a more graphic metaphore, like "like a crackwhore needing a fix" ?
[15:16] pHcF has joined the channel
[15:18] pyrony has joined the channel
[15:19] eldios: @_@
[15:19] softdrink has joined the channel
[15:22] prudhvi has joined the channel
[15:23] ilya has joined the channel
[15:24] iFire has joined the channel
[15:24] pcardune has joined the channel
[15:25] kmiyashiro has joined the channel
[15:27] d0k has joined the channel
[15:27] tobiassjosten has joined the channel
[15:28] colinclark has joined the channel
[15:29] tyler-iphone: oh woah, hackerne.ws points to hacker news
[15:29] DJazz: how much data can I send on a socket in one packet?
[15:29] dguttman has joined the channel
[15:30] pquerna: DJazz: you mean, the MTU?
[15:30] EyePulp has joined the channel
[15:31] tyler-iphone: if you use something like zeromq you don't have to worry about stuff like that
[15:32] DJazz: yeah
[15:32] pquerna: if you use tcp you don't need to worry about stuff like that :)
[15:32] Venom_X has joined the channel
[15:32] ceej has joined the channel
[15:33] tyler-iphone: actually on tcp a lot of services defaultly truncate anything over 1500 bytes
[15:33] pquerna: huh?
[15:33] tyler-iphone: windows for example
[15:33] DJazz: i want to send the toDataURL() from node.js over a websocket to client
[15:34] DJazz: chunk it, or send all?
[15:34] dmcquay has joined the channel
[15:34] xiagox has joined the channel
[15:34] DJazz: the image is 3000x3000
[15:34] ukev has joined the channel
[15:35] pcardune_ has joined the channel
[15:35] tyler-iphone: i would prolly chunk it
[15:35] icebox has joined the channel
[15:35] piscisaureus has joined the channel
[15:35] joshontheweb has joined the channel
[15:36] tyler-iphone: oh nice, if you copy/paste a gist, it preserves formatting in keynote
[15:37] hdon- has joined the channel
[15:38] jzacsh has joined the channel
[15:38] jzacsh has joined the channel
[15:39] shadow66142000 has joined the channel
[15:39] jasong_at_apache has joined the channel
[15:39] briznad has joined the channel
[15:39] DJazz: what is a good chunk size to preserve speed and not let it get cut?
[15:40] shadow66142000: I'm using express and ejs as the templating engine. How do I do a simple include using ejs?
[15:40] qbert: DJazz, the sliding window ? http://en.wikipedia.org/wiki/Sliding_window_protocol
[15:40] qbert has left the channel
[15:40] qbert has joined the channel
[15:41] stepheneb has joined the channel
[15:41] rummik has left the channel
[15:41] tyler-iphone: i think express sets a chunk size automatically iirc
[15:43] sub_pop has joined the channel
[15:43] bene has joined the channel
[15:44] Tidwell: anyone know of a package for interacting with nvm without having to resort to calling exec()?
[15:45] Tidwell: ahh nevermind, looks like nvm installs one automatically
[15:45] tjholowaychuk has joined the channel
[15:46] gmci has joined the channel
[15:46] Jonasbn_ has joined the channel
[15:46] brettgoulder has joined the channel
[15:47] a|i has joined the channel
[15:47] a|i has joined the channel
[15:47] a|i: can anyone make any sense of this capsule thing? https://github.com/andyet/capsule
[15:47] a|i: not sure how the capsule classes should be included in the browser side.
[15:48] teemow has joined the channel
[15:48] boaz has joined the channel
[15:48] a|i: the worst libs are the ones with no sample.
[15:48] adnam: a|i: there is an example there, they set exports = window on the client side and then do exports.AppModel = Capsule.Model.extend({
[15:49] unomi has joined the channel
[15:49] unomi has joined the channel
[15:49] Tidwell: a|i: there is a client-side example down at the bottom too with var app = window.app = new AppModel(),
[15:49] a|i: adnam: is that a _working_ example? all I see is it should 'something liek this' or 'something like that'.
[15:50] rworth has joined the channel
[15:50] a|i: Tidwell: what I don't understand is that, are the models defined inthe client side or the server side?
[15:50] adnam: both
[15:50] a|i: both?!
[15:51] adnam: "Build your models file. You'll want something like this at the top to make it possible to use on the server and in the browser:"
[15:51] a|i: I thought the whole point of capsule was to share backbone models.
[15:51] Guest672 has left the channel
[15:51] adnam: you share the code, right?
[15:51] mike5w3c has joined the channel
[15:52] a|i: adnam: well that's my question, how do you share the code?
[15:52] Tidwell: a|i: you are "sharing" a single file that generates the objects, but (i assume) there is an instance of it on the client and an instance on the server. If you want something more like single-instance shared between client-server there are packages for that too
[15:52] adnam: require it in node and include it like you usually do in the browser
[15:53] adnam: and then capsules job is syncing the actual data between client and server
[15:53] adnam: ... from the looks of it at least, i haven't used capsule
[15:53] tiagoa: http://jquery.org/meeting/
[15:54] sonnym has joined the channel
[15:54] DJazz has left the channel
[15:54] dyer has joined the channel
[15:54] a|i: Tidwell, adnam : does the server sends the code to the client or what?
[15:55] adnam: i doubt it sends the code, although that's definitely possible if you don't use closures
[15:55] a|i: adnam: so how doe sthe client get the code?
[15:55] adnam: you just include it like regular client side code
[15:56] a|i: include what?!
[15:56] Tidwell: a|i: I'm haven't looked into capsule specifically... but there are a lot of different ways to "share" between the client and server. Depends if you mean "same codebase can run client/server" or "access to server's variables from the client"
[15:56] context: ...
[15:56] Adman65 has joined the channel
[15:56] context: a|i: the same way you include any other javascript code in your web pages
[15:56] Tidwell: a|i:
[15:56] adnam: a|i: it seems like you think it would introduce duplication if you include the code on both the backend and frontend, but that only duplicates it in memory, so that's not a problem
[15:57] Yuffster_work has joined the channel
[15:57] zakabird has joined the channel
[15:57] Tidwell: context: lol
[15:57] a|i: does node server the code to be included in the clientside?
[15:58] context: a|i: maybe you should learn basic browser html/js first
[15:59] a|i: context: maybe you should read the questions before typing psudo answers.
[16:00] joshontheweb has joined the channel
[16:01] tiagoa has joined the channel
[16:01] context: a|i: /anything/ can serve the code. proxy node through apache and nginx. have apache serve 1/3 of the js, nginx 1/3 and node 1/3
[16:02] context: have a seperate asset server running lighty to serve some more
[16:02] a|i: context: seriously, it's not about how to serve a js file. the questions is, what is the workflow in capsule? https://github.com/andyet/capsule
[16:03] shadow66142000 has joined the channel
[16:04] eml_ has joined the channel
[16:05] newy_ has joined the channel
[16:05] pcardune has joined the channel
[16:05] Tidwell: a|i: it looks like capsule isn't really doing any work for you except defining setters/getters on top of the regular backbone package. It looks like it expects you to actually implement the interface between the server/client yourself (in the example given he uses socket.io). I've never used it before, so that may not be 100% correct, just from what the examples say - thats what it looks like
[16:05] JimBastard has joined the channel
[16:06] JimBastard: reporting in at jsconf
[16:06] root__ has joined the channel
[16:06] Bj_o_rn has joined the channel
[16:06] pcardune_ has joined the channel
[16:07] tiemonster has joined the channel
[16:07] broofa has joined the channel
[16:08] seivan has joined the channel
[16:08] tempo has joined the channel
[16:08] Tidwell: a|i: Looked at the code - it basically is just a set of setter/getters that work from client->server over socket.io. In some cases the socket.io logic is written for you, in some cases it isnt - Its really hard to tell
[16:08] TomY has joined the channel
[16:08] a|i: Tidwell: thanks, at least this confirms it's not just me.
[16:09] steph021 has joined the channel
[16:09] context: "Capsule presents and experimental approach to building real-time web apps that re-uses the exact same models on the server as what you serve in a script tag in the html of your app."
[16:09] chrislorenz has joined the channel
[16:09] a|i: Tidwell: any other packages which could inegrate backbone models to node?
[16:09] context: http://andyet.net/blog/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/
[16:10] a|i: context: I guess the very same model files on the node server should be served as js static files by node server.
[16:10] context: that'd be correct. i dont see how you'd do it differently
[16:10] piscisaureus has joined the channel
[16:10] a|i: that could inject security problems.
[16:10] context: uhh
[16:10] context: your model code should be fairly stupid if you're going about it this way
[16:10] m00p has joined the channel
[16:11] a|i: how would you bring authentications into these models?
[16:11] a|i: if some attribs are supposed to be only accessible to certain users, the whole logic will be exposed to the client side too.
[16:12] admc1 has joined the channel
[16:12] adnam: abstract superclass and specialize for each platform perhaps?
[16:12] a|i: but capsule will share the same model to the client.
[16:13] context: a|i: there are multiple ways to handle that
[16:13] context: split out user/profile models, specifically drop password/salt from being sent to client, dont transfer the user model at all...
[16:13] Tidwell: a|i: simplest I could see is: if (exports) { var stuffOnlyOnServerThatDealsWithAuth = require('auth') }
[16:13] context: a|i: im sure you can share the same model without capsule.
[16:14] Tidwell: context: yep, its simple as hell to just do if(exports) and put the file in a served directory and tada
[16:15] a|i: Tidwell: how would that hide the business logic code from the client?
[16:15] slloyd has joined the channel
[16:16] Tidwell: exports won't exist on the client side... and even if it did, require probably wont exist, and even if THAT did, just don't put the required file in a servable directory
[16:17] jesusabdullah: Unless you use something like browserify to get cho'self a require, etc.
[16:18] Tidwell: a|i: your server will be able to include the server-only file, and the client will just ignore it. The point of this isn't to share the same INSTANCE of the result of running that file, just to share the same actual "physical" file between the server and the client
[16:19] a|i: Tidwell: I see.
[16:19] eml_ has joined the channel
[16:20] a|i: in this case, do we have to forget about optimisations like: minifying the js files, caching them, serving them from cdns and so on?
[16:21] aberry has joined the channel
[16:21] Tidwell: a|i: nothings really stopping you from doing any of those things
[16:22] hybsch has joined the channel
[16:22] pyrony has joined the channel
[16:22] a|i: Tidwell: but the output js files, are now sort of dynamic?
[16:24] gazumps has joined the channel
[16:25] Tidwell: a|i: here - http://pastebin.com/7PdULf0t
[16:25] Tidwell: a|i: here - very very basic example of sharing a sharedClass between the client and server, making serverMethod only available to the server, but sharedMethod available on both
[16:25] Tidwell: a|i: prolly syntax errors in there, as its just pseudo-code
[16:26] Tidwell: a|i: you can see how we would still be able to minify sharedFile.js
[16:26] a|i: Tidwell: thanks, this is clear now.
[16:26] matjas has joined the channel
[16:26] rauchg has joined the channel
[16:27] Tidwell: a|i: no problem
[16:27] a|i: Tidwell: are there packages for node to cache the serving static files, or something like nginx is required in the front?
[16:27] amerine has joined the channel
[16:27] broofa has joined the channel
[16:28] Tidwell: a|i: check out http://search.npmjs.org/ - looks like there are a few
[16:28] towski has joined the channel
[16:29] Tidwell: a|i: at least one that talks directly to memcache
[16:29] context: tidwell: server only would still exist on the client htough wouldn't it
[16:29] a|i: Tidwell: yep.
[16:29] Tidwell: context: if you use an inline function, yea the code will be there, but if you do something like require('a file that only teh server can see') you're in the clear
[16:30] harth has joined the channel
[16:31] Tidwell: context: not saying its a *good* idea to do this. I tend to only use this for exposing everything in a file (for example change-password complexity validation - I want to validate client side before sending to the server, but still need to validate it after its sent - and the logic can be exposed there with no harm)
[16:32] jgv has joined the channel
[16:32] gazumps has joined the channel
[16:33] djktno has joined the channel
[16:33] context: tidwell: makes sense
[16:33] dshaw_ has joined the channel
[16:33] pcardune has joined the channel
[16:34] matjas_ has joined the channel
[16:34] ArtistConk has joined the channel
[16:35] stonebranch has joined the channel
[16:35] matjas__ has joined the channel
[16:36] davidpadbury has joined the channel
[16:36] puffpio has joined the channel
[16:37] matjas___ has joined the channel
[16:40] rfay has joined the channel
[16:41] olauzon has joined the channel
[16:44] tyler-iphone: anyone know how to zoom in/out in keynote in presentation mode?
[16:44] bretts has joined the channel
[16:44] Casperin has joined the channel
[16:45] davidpadbury: Can't you just use the typical CTRL+Scroll?
[16:45] pandeiro has joined the channel
[16:46] nickbaugh has joined the channel
[16:46] davidpadbury: oh - no you can't.
[16:46] visnup has joined the channel
[16:47] matjas_ has joined the channel
[16:47] steffkes has joined the channel
[16:48] tiagoa_ has joined the channel
[16:48] matjas has joined the channel
[16:50] zylo has joined the channel
[16:51] MikhX has joined the channel
[16:52] throughnothing has joined the channel
[16:52] iigrat has joined the channel
[16:53] matjas_ has joined the channel
[16:53] cwang has joined the channel
[16:55] brianloveswords has joined the channel
[16:55] rauchg has joined the channel
[16:59] dguttman has joined the channel
[16:59] fangel has joined the channel
[16:59] piscisaureus has joined the channel
[17:00] aroop has joined the channel
[17:00] awenkhh has joined the channel
[17:00] Ori_P has joined the channel
[17:01] bretts_ has joined the channel
[17:02] zcopley has joined the channel
[17:03] GasbaKid has joined the channel
[17:04] tim_smart has joined the channel
[17:06] mattly has joined the channel
[17:06] springmeyer has joined the channel
[17:07] nadirvardar has joined the channel
[17:07] newy has joined the channel
[17:10] broofa has joined the channel
[17:10] GasbaKid has joined the channel
[17:10] mraleph has joined the channel
[17:11] baudehlo: tjholowaychuk: ping
[17:11] tjholowaychuk: yo
[17:11] trotter has joined the channel
[17:11] V1 has joined the channel
[17:11] baudehlo: hey, when I have Haraka running under cluster I end up with a lot of remaining open FIFO pipes. I assume that's the connection between the master and workers?
[17:12] jacobolus has joined the channel
[17:12] ph^ has joined the channel
[17:14] mattly has joined the channel
[17:14] tim_smart has joined the channel
[17:14] bretts has joined the channel
[17:14] matjas_ has joined the channel
[17:14] EyePulp has joined the channel
[17:14] hunterloftis has joined the channel
[17:14] temp01 has joined the channel
[17:14] jimmyz2 has joined the channel
[17:14] random123 has joined the channel
[17:14] Hamms has joined the channel
[17:14] er1c_ has joined the channel
[17:14] pig_ has joined the channel
[17:14] levi501d has joined the channel
[17:14] pekim_ has joined the channel
[17:14] mape has joined the channel
[17:14] pastak_ has joined the channel
[17:14] nefD has joined the channel
[17:14] zpao has joined the channel
[17:14] apoc has joined the channel
[17:14] grncdr has joined the channel
[17:14] cm has joined the channel
[17:14] ryah has joined the channel
[17:14] Shao has joined the channel
[17:14] ehd has joined the channel
[17:14] up_the_irons has joined the channel
[17:14] ben_alman has joined the channel
[17:14] shajith has joined the channel
[17:14] metadaddy has joined the channel
[17:14] inarru has joined the channel
[17:14] marlun has joined the channel
[17:14] jakeskik has joined the channel
[17:14] jperras has joined the channel
[17:14] chapel has joined the channel
[17:14] augustl has joined the channel
[17:14] ekes has joined the channel
[17:15] tjholowaychuk: baudehlo: yeah, do you get those after something specific like SIGKILL?
[17:15] sstephenson_ has joined the channel
[17:15] mrkurt_ has joined the channel
[17:15] baudehlo: nope, they just seem to be sitting around.
[17:15] tjholowaychuk: I should be cleaning them up on SIGQUIT etc
[17:15] tjholowaychuk: hmm
[17:15] baudehlo: and not open on the master, just the workers.
[17:15] sirkitree has joined the channel
[17:15] tjholowaychuk: might not be unlinking them
[17:15] littke has joined the channel
[17:15] ryanj has joined the channel
[17:15] liar has joined the channel
[17:15] zeade has joined the channel
[17:15] baudehlo: and then I run out of file descriptors after 1000 of them.
[17:15] abrahamwilliams has joined the channel
[17:15] baudehlo: I don't think I'm doing anything wrong.
[17:17] tjholowaychuk: baudehlo: yeah I do call close() so node should be unlinking them
[17:17] Xano has joined the channel
[17:17] baudehlo: why don't you unlink them after open()?
[17:17] perezd has joined the channel
[17:17] Country has joined the channel
[17:18] MaSch: :-/ i installes a module with npm, all files are where i expect them to be and everything looks like every other package. But i have to use require('pattern/lib/pattern') instead of require('pattern') to include it. By other packages node automaticly uses the lib/$package file if i do a require('package');
[17:18] tjholowaychuk: baudehlo: ultimately it shouldnt matter
[17:18] tjholowaychuk: if they were being removed properly
[17:18] bartt has joined the channel
[17:18] jeff_horton has joined the channel
[17:19] baudehlo: well anyway it's not unlinking that's the problem. They are still open.
[17:19] rworth_ has joined the channel
[17:20] EvanCarroll: There needs to be a designation in examples where the code comes from
[17:20] coreb has joined the channel
[17:20] jtsnow has joined the channel
[17:21] beriberikix_ has joined the channel
[17:22] strmpnk has joined the channel
[17:22] nadirvar_ has joined the channel
[17:23] Aikar: MaSch: the author of that package has not configured it correctly
[17:23] EvanCarroll: I wonder how bad it would break things if you took a character not likely to apear in a filename, like '#' and reserved it for documenting in the require call.
[17:23] gonsfx has joined the channel
[17:23] Aikar: MaSch: edit package.json and add a "main" property to the correct file
[17:23] EvanCarroll: require('foo#npm') require('foo#gh:evancarroll')
[17:24] EvanCarroll: then you could extend it to be sure you're running with the right version, or just keep it as a form of documentation for laymen so they don't have to search or wonder when they encounter your code
[17:24] Aikar: EvanCarroll: or use traditional docblock comments and /** @var foo **/ var foo = require('foo'); :P
[17:24] nadirvardar has joined the channel
[17:24] MaSch: Aikar: okay, thanks i'll try it. I wonder why someone like creationix does such a "failure"
[17:24] http402 has joined the channel
[17:24] eldios has joined the channel
[17:25] Aikar: MaSch: maybe its old module hes not updated for 4.x yet
[17:25] EvanCarroll: Aikar: be harder to make that useful though.
[17:25] MaSch: Aikar: thats possible
[17:25] Aikar: EvanCarroll: why? its the pretty standard way of documenting stuff
[17:25] arpegius has joined the channel
[17:25] JojoTheBoss has joined the channel
[17:26] EvanCarroll: Aikar: no one does it, not easy to enforce a dockbock standard, not easy to get at comments or tie them to the specific require call.
[17:26] Aikar: professional developers do it :P
[17:26] baudehlo: tjholowaychuk: is it because I call end() instead of destroy() ?
[17:26] EvanCarroll: if you define professional developers to exclude those that don't... sure...
[17:26] Aikar: but your right js land is a bit more unnormal due to js being such a flex language
[17:26] tjholowaychuk: baudehlo: end() on what?
[17:26] deedubs: EvanCarroll: and you think it'll be easier to have them mangle their requires?
[17:26] estrathmeyer has joined the channel
[17:27] baudehlo: on the socket
[17:27] EvanCarroll: deedubs: yes., or to add a second arg to requires.
[17:27] Aikar: there being no standard casses etc to document
[17:27] tjholowaychuk: cluster *should* be managing those
[17:27] tjholowaychuk: when it restarts or shuts down
[17:27] tjholowaychuk: it close()es the local IPC sock
[17:27] djazz has joined the channel
[17:27] EvanCarroll: deedubs: either one of those can be enforced with a "strict" mode on "requires" quite easily.
[17:27] baudehlo: nono it's the FD that is passed to the worker that isn't being closed.
[17:27] nadirvar_ has joined the channel
[17:27] baudehlo: for some reason.
[17:28] estrathmeyer has left the channel
[17:28] tjholowaychuk: one sec
[17:28] EvanCarroll: NODE_ENV=developerment # throw a warning if it isn't there.
[17:28] Aikar: documenting by use of data being passed to a function call is a bad idea
[17:28] tjholowaychuk: ill check
[17:28] stride: developerment++
[17:28] v8bot: stride has given a beer to developerment. developerment now has 1 beers.
[17:28] baudehlo: lemme see if I can replicate locally too.
[17:28] Aikar: waste of memory, waste of cpu
[17:28] EvanCarroll: Aikar: that's a huge part of meta-programming.
[17:28] christkv has joined the channel
[17:29] tim_smart: bear++
[17:29] v8bot: tim_smart has given a beer to bear. bear now has 1 beers.
[17:29] kriszyp has joined the channel
[17:29] Aikar: comments/documentation belongs in comments, not in the code
[17:29] beriberikix_: is there a good article on EventEmitters?
[17:29] deedubs: here here
[17:29] EvanCarroll: it isn't a comment block, unless you define it as such.
[17:29] EvanCarroll: It's a hint to require() where it can the code from, and in lack of such fucntionality where *I* can get the code from.
[17:30] tjholowaychuk: baudehlo: I thnk you are right
[17:30] tjholowaychuk: baudehlo: in Master#start() for the worker I establish the connection
[17:30] tjholowaychuk: but I dont clean up
[17:30] Aikar: oh your talking about something comppletely different than what i thought you were talking about
[17:30] zeade: hrm if i've set up a simple static file server (which appears to be working), what am i missing where etc
[17:40] Corren has joined the channel
[17:40] trotter has joined the channel
[17:40] tjholowaychuk: baudehlo: after killing a few workers and restarting master a few times I still seem to have the same number of pipes
[17:41] pifantastic has joined the channel
[17:42] sh1m has joined the channel
[17:42] TomY has joined the channel
[17:43] tjholowaychuk: baudehlo: but like you said that could just be osx
[17:43] tjholowaychuk: I dont think I end() worker.sock anywhere
[17:44] djcoin has joined the channel
[17:44] broofa has joined the channel
[17:45] rworth has joined the channel
[17:46] dies_el has joined the channel
[17:47] bretts_ has joined the channel
[17:47] rfay has joined the channel
[17:48] techwraith has joined the channel
[17:51] unter_cover: node 0.6
[17:51] cbibler_ has joined the channel
[17:51] stephank has joined the channel
[17:52] Corren_ has joined the channel
[17:55] beejeebus has joined the channel
[17:55] rfay has joined the channel
[17:56] mw_ has joined the channel
[17:57] sleeplessinc has joined the channel
[18:01] EvanCarroll: Aikar: what provides moduels/dep?
[18:01] BinaryMuse has joined the channel
[18:01] boaz has joined the channel
[18:01] tarrant has joined the channel
[18:01] sh1mmer has joined the channel
[18:02] rfay has joined the channel
[18:02] baudehlo: tjholowaychuk: yeah I think that was it. Wasn't closing both ends of my pipe to qmail-queue.
[18:02] tjholowaychuk: baudehlo: ah
[18:02] brianloveswords has joined the channel
[18:02] stepheneb_ has joined the channel
[18:03] baudehlo: fixed in 88b4ee3
[18:03] baudehlo: I'll keep a check on it, but I think it's OK now.
[18:04] sivy has joined the channel
[18:04] orospakr: how do I specify to node to print debug information? it's an argument or env var, I think.
[18:04] orospakr: I've forgotten it. :(
[18:05] jacobolus has joined the channel
[18:05] arpegius has joined the channel
[18:06] orospakr: oh right, I have to use node_g.
[18:06] kenbolton has joined the channel
[18:07] broofa has joined the channel
[18:07] mscdex: orospakr: NODE_DEBUG
[18:07] mscdex: env var
[18:08] thalll has joined the channel
[18:11] devrim: hey guys this line started to be problematic
[18:11] devrim: express = require 'express@2.2.2'
[18:11] devrim: would u know why?
[18:11] jesusabdullah: That's coffeescript right?
[18:11] devrim: (it's not about express.. every module with version denoted)
[18:11] devrim: yes
[18:11] jesusabdullah: hmm
[18:11] jesusabdullah: What error do you get?
[18:11] deedubs: devrim: Did you just update npm/
[18:11] devrim: yes
[18:11] deedubs: :)
[18:12] devrim: is that why deedubs?
[18:12] devrim: http://d.pr/nV4C
[18:12] stepheneb has joined the channel
[18:13] jgv has joined the channel
[18:13] eric_f has joined the channel
[18:13] eric_f has left the channel
[18:13] devrim: so what is the mitigation ?
[18:14] devrim: if express.version is not 2.2.2 then throw error and process.exit() i guess
[18:14] sechrist has joined the channel
[18:14] devrim: there is one thing about this whole node community nobody cares about regression
[18:15] devrim: just push changes and break everyones code
[18:15] maushu has joined the channel
[18:15] devrim: not a big deal
[18:15] tjholowaychuk: devrim ? what's the issue?
[18:15] tjholowaychuk: we do care lol
[18:15] tjholowaychuk: bugs are bugs
[18:15] devrim: come on :)
[18:15] devrim: you're the fronrunner of no-regression movement :)
[18:16] drudge: tj cares!
[18:16] tauren has joined the channel
[18:16] devrim: right use express for a few versions in a row
[18:16] devrim: :)
[18:16] devrim: the issue is we were able to enforce certain version of the module
[18:16] devrim: npm seems to have deprecated that
[18:16] tjholowaychuk: hm
[18:17] drudge: it hasn't
[18:17] tjholowaychuk: should still work fine
[18:17] devrim: http://d.pr/nV4C
[18:17] drudge: npm encourages you to put your modules in node_modules and bundle with your app
[18:17] jakehow has joined the channel
[18:18] tjholowaychuk: yeah
[18:18] devrim: actually that's the way to go then..
[18:18] devrim: this becomes a real issue on firing up multiple servers with one install script
[18:18] drudge: the old npm way of requesting versions and creating shims wasn't maintainable and encouraged poor practice
[18:19] devrim: can u point me a documentation that i can learn more about including npm_modules in my codebase ?
[18:19] unter_cover: GOD CLASS
[18:20] BillyBreen1 has joined the channel
[18:20] unter_cover: ES ARE PAINFULL
[18:20] drudge: not much to learn really, in npm 1.0+ if you do npm install express
[18:20] drudge: if installs to ./node_modules/express
[18:20] drudge: and ./node_modules is automatically in your require path
[18:20] devrim: i have npm 1.0.3
[18:21] devrim: oh right
[18:21] devrim: so they are here on my cwd
[18:21] Casperin has left the channel
[18:21] devrim: alright
[18:21] devrim: thx drudge
[18:21] dshaw_ has joined the channel
[18:22] zubairov has joined the channel
[18:22] drudge: devrim: to install modules globally ("the old way") you use -g
[18:23] isaacs has joined the channel
[18:23] Tobias| has joined the channel
[18:23] zubairov has left the channel
[18:23] drudge: although 1.0 uses a $PREFIX/lib/node_modules now iirc
[18:23] devrim: im sorry not to be positive about this issue (sorry tj) i just think that when there are changes like this - node modules can also be friendly about them, and not throw errors for previously working functionality
[18:24] isaacs: drudge++
[18:24] v8bot: isaacs has given a beer to drudge. drudge now has 1 beers.
[18:24] devrim: for example isaacs, u can log an error "this is not the way you enforce version, please use X,Y,Z"
[18:24] devrim: "this has changed since npm version 1.x"
[18:24] cloudhead has joined the channel
[18:24] drudge: devrim: i don't think any of us disagree, that is why isaacs has taken steps to encourage bundling modules properly
[18:25] devrim: i know but i want to see the encouragement on error messages too
[18:25] isaacs: devrim: what's your question? sorry, i just got in here.
[18:25] devrim: we just found out after hours of sysadmining npm doesn't allow express = require 'express@2.2.2' kind of statements
[18:26] devrim: on v1.0x
[18:26] devrim: this used to work fine
[18:27] isaacs: devrim: that is correct. that functionality was never supported, and every time i saw it, i told people not to use it.
[18:27] devrim: and i was saying that when these kind of changes are made to node modules it'd be AWESOME if u give a friendly error
[18:27] devrim: "please dont use it like that, it's not supported"
[18:27] devrim: in the terminal
[18:27] isaacs: devrim: there's no module named "express@2.2.2". node doesn't know what that is.
[18:27] GasbaKid has joined the channel
[18:27] isaacs: it would involve adding code to node-core for htat.
[18:27] devrim: it used to know
[18:27] isaacs: yeah, cuz there used to be a file named that :)
[18:27] devrim: but u got my point right? -)
[18:27] drudge: i didn't know, isaac used dirty things to make it "know" :P
[18:27] Prism has joined the channel
[18:27] drudge: it*
[18:27] isaacs: devrim: sure, but i'm saying, that was always an internal implementation detail
[18:28] devrim: right, u'r saying npm doesnt have control over how require works..
[18:28] jeremyselier has joined the channel
[18:29] aaronblohowiak has joined the channel
[18:29] devrim: isaacs btw thanks for that "nobody" fix the other day - it works great
[18:29] isaacs: right
[18:30] aaronblohowiak: neither require.extensions nor require.registerExtension are documented in http://nodejs.org/docs/v0.4.7/api/all.html what is the right way to do what i want to do =)
[18:31] boaz has joined the channel
[18:32] tim_smart: aaronblohowiak: require.extensions
[18:32] aaronblohowiak: tim_smart: thanks.
[18:33] rfay has joined the channel
[18:33] isaacs: aaronblohowiak: > require.registerExtension()
[18:33] isaacs: Error: require.registerExtension() removed. Use require.extensions instead.
[18:33] isaacs: aaronblohowiak: who needs docs when you've got a repl?
[18:33] BillyBreen has joined the channel
[18:33] aaronblohowiak: isaacs: repl doesn't tell us what is "public" API
[18:34] tilgovi has joined the channel
[18:34] zubairov has joined the channel
[18:35] tim_smart: require.extensions['.awesome'] = function (module, filename) { var content = readFile(filename); module.exports = comile(content); };
[18:35] tim_smart: aaronblohowiak: ^
[18:35] aaronblohowiak: SubStack: you should change browserify to use require.extensions instead of the one-off hack for coffee
[18:35] aaronblohowiak: tim_smart: thanks!
[18:36] tim_smart: aaronblohowiak: I use coffee in production, except I compile before running.
[18:36] arpegius has joined the channel
[18:37] aaronblohowiak: tim_smart: how do you mean?
[18:37] yozgrahame has joined the channel
[18:37] hdon- has joined the channel
[18:37] pt_tr has joined the channel
[18:38] SubStack: aaronblohowiak: I'll read about them!
[18:38] SubStack: nifty idea
[18:38] aaronblohowiak: SubStack: there isn't a place to read about it other than the last 5 minutes of scrollback (that i can find!)
[18:39] dustylane has joined the channel
[18:39] tim_smart: aaronblohowiak: I.e. https://github.com/Tim-Smart/gista
[18:39] AAA_awright: aaronblohowiak: Just read the Javascript source to see how it loads modules
[18:39] zubairov has left the channel
[18:39] broofa has joined the channel
[18:39] tim_smart: I `cake build` before each deploy.
[18:39] AAA_awright: It's not very complex at all
[18:40] aaronblohowiak: tim_smart: ah, cool.
[18:41] jamesarosen has joined the channel
[18:41] aaronblohowiak: AAA_awright: :P I appreciate that, it is just a little scary to use stuff not in the public API. I will check out the source.
[18:41] aaronblohowiak: thnks
[18:41] mattly has joined the channel
[18:42] pifantastic has joined the channel
[18:43] V1 has joined the channel
[18:43] Tidwell: isaacs: quick question - I had asked about a npm remote-management tool the other day, and started implementing one (so far it just supports ls/install/uninstall/registry/-v, with a slick UI) But with the change in npm 1.0 to no longer default installs to -g, is there a way to get all installed packages (both -g and all local), without having to traverse to each local folder (maybe by grep node_modules, haven't thought that out) and
[18:43] davidpadbury has joined the channel
[18:43] admc1 has joined the channel
[18:44] timmywil has joined the channel
[18:45] rworth has joined the channel
[18:47] Phaaze has joined the channel
[18:47] zeade has joined the channel
[18:50] jscheel: tjholowaychuk: ping
[18:50] woltage has left the channel
[18:51] mike5w3c has joined the channel
[18:51] dguttman_ has joined the channel
[18:52] jscheel: oops, actually, I think I know, nevermind ;)
[18:52] tjholowaychuk: jscheel: hey
[18:52] tjholowaychuk: haha
[18:52] tjholowaychuk: k
[18:52] jscheel: tjholowaychuk: was thinking about route middleware when splitting out routes to individual files
[18:52] jscheel: but it's easy
[18:53] tjholowaychuk: ah
[18:53] tjholowaychuk: yeah
[18:53] jscheel: duh, nothing's different except referencing functions
[18:53] tjholowaychuk: easy, just pass around the app or require() in the functions
[18:53] jscheel: instead of anon funcs
[18:53] jscheel: :P
[18:53] jscheel: my app.js was getting a bit too much
[18:53] tahu has joined the channel
[18:54] a|i: is there a package like jammit fo rails in node? something that combines + minifies a lst of js files, automatically, when using eg express?
[18:54] dgathright has joined the channel
[18:54] jscheel: a|i: I think that used to be in connect, but was taken out of core
[18:55] a|i: jscheel: where is it now?
[18:55] tjholowaychuk: nah that was never in core
[18:55] tjholowaychuk: mape has one
[18:55] tjholowaychuk: called connect-asset-manager or something
[18:55] drudge: yeah
[18:55] jscheel: ah, well, listen to tjholowaychuk since he wrote it :)
[18:55] jscheel: oh, I'm thinking of staticGzip
[18:55] drudge: this is the one https://github.com/mape/connect-assetmanager
[18:56] a|i: thank you very much good sir.
[18:56] insin has joined the channel
[18:56] matjas has joined the channel
[18:56] mc_greeny has joined the channel
[18:56] sh1mmer has joined the channel
[18:57] Country has joined the channel
[18:58] rpflo has joined the channel
[19:01] davidwalsh has joined the channel
[19:01] Tobias|| has joined the channel
[19:02] m64253 has joined the channel
[19:02] prettyrobots has joined the channel
[19:02] tim_smart: a|i: I also made one called node-asset
[19:03] a|i: tim_smart: is it this one? https://github.com/TrueCar/node-asset-server
[19:03] tim_smart: Tim-Smart/node-asset
[19:04] arpegius has joined the channel
[19:04] a|i: tim_smart: so it uses google closure compiler? what does connect-assetmanager use for minifying?
[19:04] tim_smart: Not sure
[19:05] tim_smart: Yeah mine uses GCC for Ecmascript and YUI for CSS
[19:05] drudge: node-asset-server gets point deductions for using rvm
[19:05] pifantastic has joined the channel
[19:06] tim_smart: GCC being Google Closure Compiler
[19:06] tim_smart: Not the GNU compiler
[19:06] pifantastic has joined the channel
[19:07] pifantastic has joined the channel
[19:08] a|i: tim_smart: any examples for node-asset?
[19:09] charlesjolley- has joined the channel
[19:10] ChrisBuchholz has joined the channel
[19:10] dies_el has joined the channel
[19:10] brianc1: tim_smart: your node project depends on ruby. :(
[19:10] tim_smart: brianc1: Mine doesn't :/
[19:11] tim_smart: TrueCar's does
[19:11] brianc1: tim_smart: whoops!
[19:11] brianc1: tim_smart: I no can read
[19:13] a|i: tim_smart: does node-asset work on the fly? any sample code hwo to use it with express/connect?
[19:13] zomgbie_ has joined the channel
[19:13] mnbvasd: what's gcc?
[19:13] cloudhead has joined the channel
[19:14] tim_smart: a|i: It compiles everything when you call serve()
[19:14] aaronblohowiak: tim_smart: how do you like your node-parallel after using it for a while?
[19:14] tim_smart: aaronblohowiak: Its cool. Gets the job done
[19:14] aaronblohowiak: tim_smart: cool.
[19:14] cha0s has joined the channel
[19:14] cha0s has joined the channel
[19:15] dies_el has joined the channel
[19:17] a|i: tim_smart: does it compile everything always, or only if there is a change? if not, how to use it in production?
[19:18] EvanCarroll: anyone have an opinion on nodules?
[19:19] aaronblohowiak: EvanCarroll: should be looked at by a dermatologist
[19:20] EvanCarroll: I assume nodules is some skin condition i'm unaware of too
[19:20] EvanCarroll: but I'm referring to the module system nodules
[19:20] suckerpunch has joined the channel
[19:20] pifantastic has joined the channel
[19:20] tim_smart: a|i: You can set it to re-compile on file change, or just call serve() each time you want the assets recompiled.
[19:20] GasbaKid has joined the channel
[19:21] norviller has joined the channel
[19:21] Sephi-Chan: How can i avoid http to throw an error (and quit) when it fails sending a request ?
[19:21] EvanCarroll: https://github.com/kriszyp/nodules
[19:21] aaronblohowiak: EvanCarroll: it is not as popular s just using npm
[19:21] aaronblohowiak: EvanCarroll: CommonJS is dead.
[19:21] jonmumm has joined the channel
[19:22] tim_smart: https://gist.github.com/66f0f293d518b488655e¶
[19:22] tim_smart: https://gist.github.com/66f0f293d518b488655e
[19:22] tim_smart: a|i: ^
[19:23] a|i: tim_smart: thanks!
[19:23] EvanCarroll: I think I like that idea better though =(
[19:23] EvanCarroll: that's unfortuante
[19:23] kevwil has joined the channel
[19:23] samsonjs has joined the channel
[19:24] beriberikix has joined the channel
[19:24] path[l] has joined the channel
[19:25] brianc has joined the channel
[19:25] tim_smart: a|i: So: new Package(output_file, ['file.js', 'and.js', 'directories/'], options);
[19:25] jakehow has joined the channel
[19:26] a|i: tim_smart: yep, what's a good solution to detect the production env and serve only once?
[19:26] meder: can anyone recommend something that'll allow me to control a browser and invoke js in a browser through node?
[19:26] meder: like fire up an instance of command line chrome or fx
[19:26] tim_smart: a|i: Set a enviroment variable?
[19:27] beriberikix: @meder I'm guessing you control the JS you want to fire?
[19:27] tim_smart: if (process.env.MYAPP_ENV === 'dev') { ... }
[19:27] aaronblohowiak: meder: sodajs
[19:28] tim_smart: a|i: If in development env, set the watch option to true to continually build the assets.
[19:29] EvanCarroll: why did common.js fail compaired to npm?
[19:29] tmedema has joined the channel
[19:29] tmedema: Anyone who got audio stream from node.js to browser working ?
[19:29] tmedema: I'm getting a connection reset by peer error anytime I try to make my browser stream a file from the server
[19:30] meder: aaronblohowiak: mm interesting, thz
[19:30] max_dev has joined the channel
[19:32] christkv has joined the channel
[19:33] Me1000 has joined the channel
[19:34] m64253 has joined the channel
[19:34] arpegius has joined the channel
[19:35] meder: aaronblohowiak: does this work on a non-gui os?
[19:35] superjudge has joined the channel
[19:35] meder: shell debian, for example?
[19:35] meder: i get setTimeout(5000): ERROR Job is not in progress
[19:35] norviller has joined the channel
[19:38] broofa has joined the channel
[19:38] matthijs_ has joined the channel
[19:39] patcito has joined the channel
[19:42] Intel_iX has joined the channel
[19:42] saua has joined the channel
[19:43] Aikar: wat
[19:43] Aikar: mt
[19:43] dgathright has joined the channel
[19:44] katspaugh has joined the channel
[19:44] EvanCarroll: aaronblohowiak: isn't npm's package.json in commonjs format?
[19:44] rworth has joined the channel
[19:45] zubairov has joined the channel
[19:46] rfay has joined the channel
[19:47] tjholowaychuk: npm 1.x seems to install devDependencies on a regular $ npm install
[19:47] mrkurt has joined the channel
[19:47] tjholowaychuk: or maybe it's smart and knows im in the project's dir
[19:47] broofa has joined the channel
[19:47] sstephenson has joined the channel
[19:48] stagas: in npm why isn't bin working in some cases? isaacs?
[19:48] isaacs has joined the channel
[19:48] eee_c has joined the channel
[19:48] stagas: it works when I install in my local enviroment but doesn't work anywhere else. can anyone check if this works? npm install nodie
[19:48] Aikar: tjholowaychuk: yeah isaacs did something bout if you npm install in the dir to install deps w/o -dev
[19:48] stagas: then 'nodie'
[19:49] Rixius has joined the channel
[19:49] tjholowaychuk: Aikar: ah ok cool, as long as that's what is going on im happy
[19:49] isaacs: stagas: Global: for cli apps in the $PATH. local": for require()
[19:49] isaacs: stagas: npm install nodie -g
[19:49] isaacs: stagas: npm help folders
[19:49] stagas: isaacs: I'm doing -g but still doesn't work
[19:49] isaacs: stagas: $ nodie
[19:49] isaacs: env: node\r: No such file or directory
[19:49] Rixius_ has joined the channel
[19:49] Rixius_ has joined the channel
[19:49] isaacs: stagas: WINDOWS LINE ENDINGS DIE IN A FIRE/
[19:50] tjholowaychuk: weird
[19:50] tjholowaychuk: Error: EAFNOSUPPORT, Address family not supported by protocol family
[19:50] tjholowaychuk: from npm
[19:50] drudge: gross
[19:50] Dreamer3: ok
[19:50] xeodox has joined the channel
[19:51] stagas: isaacs: it worked! :)
[19:51] stagas: isaacs: thought I had default notepad++ to unix endings
[19:51] tjholowaychuk: "redis@0.6.0 (redis@0.6.0) invalid extraneous"
[19:51] tjholowaychuk: why is it invalid :(
[19:51] tjholowaychuk: lol
[19:51] tjholowaychuk: oh it's there twice wtf
[19:52] sonnym has joined the channel
[19:52] ExsysTech has joined the channel
[19:54] LowValueTarget has joined the channel
[19:54] themiddleman_itv has joined the channel
[19:54] dgathright has joined the channel
[19:55] stagas: isaacs: the 3-N deployment: nohup nodie node :P
[19:55] tim_smart has joined the channel
[19:55] liquidproof has joined the channel
[19:56] sugardave has joined the channel
[19:56] unter_cover: never create a thread to handle a single connection. That is rule # 456743 .. Yeah, that rule!
[19:57] tyler-iphone: is there a feed discovery module for node?
[19:57] tyler-iphone: don't see one on modules wiki
[19:57] Schmallon has joined the channel
[19:58] dies_el has joined the channel
[19:58] pifantastic has joined the channel
[19:59] iigrat has joined the channel
[20:00] nickbaugh: i think i will make screencasts on the node basics -.-
[20:00] asdfsafdsa: how do u guys get into the "coding zone"?
[20:00] nickbaugh: mountain dew
[20:00] nickbaugh: samba
[20:01] nickbaugh: asdfsafdsa: how do you make a joke
[20:01] nickbaugh: stagas: hey mate ^^
[20:01] bingomanatee: how does bind work in node.js?
[20:01] prettyrobots: Why can't I install to /opt/lib/node using NPM?
[20:01] prettyrobots: I added root = /opt/lib/node to my .npmrc.
[20:01] jagbar has joined the channel
[20:01] prettyrobots: And I own /opt/*
[20:01] prettyrobots: I didn't get the memo.
[20:02] rohit_nsit08 has joined the channel
[20:02] rohit_nsit08: hello #node
[20:02] rohit_nsit08: can someone pls tellme about the use of exports in javascript and nodejs
[20:03] stagas: nickbaugh: hey
[20:03] nickbaugh: rohit_nsit08: http://stackoverflow.com/questions/5311334/what-is-the-purpose-of-nodejs-module-exports-and-how-do-you-use-it
[20:04] nickbaugh: rohit_nsit08: also a chapter on it here: http://visionmedia.github.com/masteringnode/book.html
[20:04] rohit_nsit08: nickbaugh: already seen that, I am looking for some documentation actually
[20:05] arpegius has joined the channel
[20:05] bretts has joined the channel
[20:05] rohit_nsit08: what exactly is a module ?
[20:05] rohit_nsit08: brw
[20:05] pHcF has joined the channel
[20:05] rohit_nsit08: btw*
[20:05] rohit_nsit08: is it like class or something
[20:05] shaper_pmp has joined the channel
[20:05] harth has joined the channel
[20:06] mikl has joined the channel
[20:06] mikl has joined the channel
[20:06] Aikar: rohit_nsit08: it modulates things
[20:06] brianloveswords has joined the channel
[20:06] kersny has joined the channel
[20:06] rohit_nsit08: for example when i use cafe = require(path of js file); what exactly get stored in cafe variable here?
[20:06] prettyrobots: Found the memo. Please ignore the above question. Problem solved. KTHXBAI.
[20:07] Tidwell: rohit_nsit08: not really. by adding methods/properties to exports in your module they are exposed when you do require('path')
[20:07] Aikar: rohit_nsit08: what ever the value of 'module.exports' is
[20:07] Aikar: is what cafe contains
[20:07] Aikar: if cafe.js has 'module.exports = {foo:1, bar: 2, baz: };
[20:07] rohit_nsit08: Aiker: hmm.. I'm getting the concept now
[20:07] Aikar: then var x = require('./cafe'); x will have x.foo, x.bar, x.baz
[20:08] kkaefer: with connect's static() middleware, is it possible to expose a directory in a subdirectory on that server instead of the root?
[20:08] tjholowaychuk: kkaefer: yes
[20:09] tjholowaychuk: app.use("/public", connect.static(path))
[20:09] mape: anyone hacked up a live feed from twitter #jsconf?
[20:09] shaper_pmp: Hi all - does anyone have a good introduction to node.js concurrency? The event-driven nature is great for avoiding concurrency problems *within* a thread, but supposing you'd like to use more than one core of your CPU? Is it planned that node will somehow itself handle multithreading in the future, or will it be up to us to implement mutexes and/or otherwise ensure our code is thread-safe?
[20:09] kkaefer: oh!
[20:09] blueadept: with mongoose, do you have to create an embedded document for an object if it is going to have multiple fields?
[20:09] kkaefer: thanks, tjholowaychuk
[20:09] rohit_nsit08: Aiker:thanks
[20:09] tjholowaychuk: kkaefer: np
[20:09] kkaefer: forgot about the path option for .use()
[20:09] mape: shaper_pmp: look at cluster
[20:09] shaper_pmp: Thanks mape - will do.
[20:09] Sephi-Chan: I try to send POST request with data inside and… i can't
[20:10] Sephi-Chan: There are extra things in the received body
[20:10] techwraith: blueadept: You don't have to, but you can
[20:10] techwraith: (if I'm understanding your question correctly)
[20:10] mattmcmanus has joined the channel
[20:11] kriszyp has joined the channel
[20:13] shaper_pmp: Mape: Thanks, but I'm not sure cluster answers my question - it seems to be a way to manage/admin multiple node threads, rather than a way to manage concurrency and the issues (like resource access) that it raises in my code, no?
[20:14] blueadept: techwraith: here's what i have, http://pastie.org/private/kqclf0nflad7zokuvsoala
[20:14] BrianRice-mb has joined the channel
[20:14] techwraith: Yeah, that should work
[20:14] SubStack: shaper_pmp: processes are a perfectly fine way to manage concurrency
[20:14] blueadept: what am i doing wrong in the very top schema definition?
[20:14] mape: shaper_pmp: no threads, cluster managers multiple instances, which scale over cores
[20:14] blueadept: techwraith: the top one dones't work, says 'Unexpected token : '
[20:15] blueadept: the bottom one works, but i dont need to make a separate doc for every array object.
[20:15] techwraith: blueadept: just do photos: []
[20:15] shaper_pmp: So does that mean nothing is shared between the node processes (ie, there *are* no concurrency issues because it's impossible to share state)?
[20:15] techwraith: and then save the photo object to the array
[20:16] rohit_nsit08 has joined the channel
[20:16] blueadept: oh, i see
[20:16] techwraith: *push
[20:16] rohit_nsit08: Aiker: I'm looking at this https://github.com/zaach/cafe/blob/master/examples/function-decl.js pls see if it conforms to that
[20:16] techwraith: no need to model it out
[20:16] blueadept: right, you dont have to define every field in that object then? i just pushes it out
[20:16] blueadept: cool
[20:16] rohit_nsit08: Aiker: the line cafe = require("../lib/cafe"), loads the cafe module according to me
[20:17] liar has joined the channel
[20:17] rohit_nsit08: Aikar:and cafe.js contains exports.js = require("./js");
[20:17] shaper_pmp: Substack: thanks - do I understand, then, that multiple node processes means none of them can share state "internally"?
[20:18] shaper_pmp: Substack: i.e., any state-sharing has to be via sockets or through a DB or something similar?
[20:19] shaper_pmp: Substack: no shared memory or variables or similar?
[20:19] mscdex: 0xDEADCAFEBABEBEEF
[20:19] wink_ has joined the channel
[20:19] ExsysHost has joined the channel
[20:19] mscdex: shaper_pmp: that's right
[20:20] admc1 has joined the channel
[20:20] shaper_pmp: Aaaaah. Thanks, mscdex. That explains why I wasn't finding much on my googling for node.js and concurrency. Now I know what to look for. Many thanks, Substack, mape and mscdex. ;-)
[20:21] rworth has joined the channel
[20:21] blueadept: techwraith: would you happen to know a model isn't required for array objects?
[20:21] blueadept: why*
[20:21] blueadept: just wondering
[20:22] techwraith: A model is always optional - for any object
[20:22] techwraith: Only "first level" objects need to be defined
[20:22] SubStack: shaper_pmp: also http://github.com/substack/dnode
[20:22] boaz has joined the channel
[20:22] SubStack: good for tying together processes
[20:23] shaper_pmp: Substack: Awesome - thanks again.
[20:23] fermion has joined the channel
[20:23] techwraith: blueadept: it's a little silly, but that's how it is :)
[20:23] blueadept: so attaching a document set to any subfield array is not feasible then?
[20:23] blueadept: like for instance if i wanted to create a comment document attached to each photo array object
[20:24] boaz has joined the channel
[20:25] techwraith: Nope, that won't work
[20:25] techwraith: you'll have to do that with embedded docs
[20:25] katspaugh has left the channel
[20:26] dshaw_ has joined the channel
[20:27] broofa has joined the channel
[20:27] blueadept: i see, ok, cool, thanks!
[20:27] Venom_X_ has joined the channel
[20:28] cloudhea1 has joined the channel
[20:30] zeade has joined the channel
[20:31] themiddleman_itv has joined the channel
[20:31] Sephi-Chan: Someone understand why i have these extra field in the body of the HTTP request (sent with Node) http://pastebin.com/raw.php?i=3xETFm8L
[20:31] Sephi-Chan: extra lines*
[20:31] sirkitree has joined the channel
[20:31] mscdex: Sephi-Chan: what modules are you using?
[20:31] Marak has joined the channel
[20:31] Sephi-Chan: http :x
[20:31] mscdex: Sephi-Chan: gist your code
[20:32] Bonuspunkt: http://my.opera.com/emoller/blog/2011/05/01/javascript-performance D:
[20:32] isaacs has joined the channel
[20:32] Sephi-Chan: k
[20:33] tilgovi has joined the channel
[20:33] Sephi-Chan: mscdex: https://gist.github.com/952298
[20:33] mscdex: Sephi-Chan: what version of node are you using?
[20:33] KirinDave has joined the channel
[20:34] Sephi-Chan: 0.4.7
[20:34] mscdex: ok, well the first thing you should probably do is use http.request() instead of http.createClient
[20:34] Sephi-Chan: But with that i can't set an error handler on the http client
[20:35] mscdex: yes you can
[20:35] Sephi-Chan: And it make my app crash if the remote server is unreachable :/
[20:35] Sephi-Chan: How ?
[20:35] techwraith: signed cloudfront URLs are a bitch.
[20:35] mscdex: var req = http.request(options, callback); req.on('error', errcallback);
[20:35] tjholowaychuk: techwraith: cloudfront everything is a bitch
[20:35] tjholowaychuk: haha
[20:35] Sephi-Chan: Hm this way :/
[20:36] Sephi-Chan: I try
[20:36] techwraith: ACTION wants to shoot whoever came up with the aws APIs
[20:36] mhausenblas has joined the channel
[20:36] devinus has joined the channel
[20:36] tjholowaychuk: techwraith: agreed
[20:36] devinus: is there a node branch using the latest v8?
[20:36] KirinDave: techwraith: Having problems with the authentication stuff?
[20:36] tbranyen: tjholowaychuk: met one of you learnboost guise at jsconf
[20:36] tjholowaychuk: techwraith: we might move to a different CDN im not happy with cloudfront at all
[20:36] mscdex: Sephi-Chan: also, you're not sending the headers you've defined
[20:36] tjholowaychuk: tbranyen: ah nice nice aaron or guillermo?
[20:37] wink_: Bonuspunkt: thats an interesting article, i wonder what'll come of it
[20:37] tbranyen: guillermo i think
[20:37] tbranyen: googling
[20:37] techwraith: seriously, 12 steps to upload a file, create an ephemeral url, and then stream the thing down?
[20:37] wink_: wheres mraleph to enlighten us :p
[20:37] techwraith: KirinDave: Yep, their auth sucks
[20:37] tbranyen: tjholowaychuk: was aaron :)
[20:37] tobiassjosten has joined the channel
[20:37] tjholowaychuk: ah :)
[20:37] tjholowaychuk: cool
[20:37] KirinDave: techwraith: Specifically generating the hash?
[20:37] tbranyen: he was hanging out with isaacs
[20:38] isaacs: what in the what now?
[20:38] KirinDave: techwraith: I'm surprised someone hasn't already written code to do that. You probably don't need to do it from scratch.
[20:38] isaacs: ACTION is in the track B room
[20:38] techwraith: KirinDave: Nah, the hash is easy, there are just way too many moving parts for this API
[20:38] tbranyen: isaacs: ah i'm in track a this time
[20:38] Sephi-Chan: mscdex: :/
[20:38] isaacs: kewl :)
[20:38] TomY has joined the channel
[20:38] tbranyen: some good talks in track b tho
[20:38] emerleite has joined the channel
[20:38] tbranyen: i missed the batman.js one :(
[20:39] KirinDave: So what was the sexist issue at jsconf?
[20:39] tjholowaychuk: anyone know if vids will be up shortly after? or is there anything live?
[20:39] KirinDave: I saw several tweets
[20:39] techwraith: policy files, permissions, secrets, keys, expiration times, key pairs, signatures, and expected headers, BLECH
[20:39] emerleite: Is there a live stream at jsconf?
[20:39] tbranyen: KirinDave: they kept talking about sweaty dudes, which i took massive offense to
[20:39] mraleph: wink_: what's the question?
[20:39] techwraith: KirinDave: yeah, tjholowaychuk wrote knox, which helps a lot
[20:40] techwraith: but making things secure is another matter
[20:40] mscdex: Sephi-Chan: one sec
[20:40] wink_: mraleph: http://my.opera.com/emoller/blog/2011/05/01/javascript-performance
[20:40] mraleph: wink_: ah. it easy. don't use strings where you should use buffers or arrays.
[20:40] mscdex: Sephi-Chan: try something like this: https://gist.github.com/952312
[20:40] Sephi-Chan: mscdex: Perfect, uour proprosition works well
[20:41] Sephi-Chan: mscdex: https://gist.github.com/952298
[20:41] mraleph: wink_: string in V8 is basically in two modes: one is optimized for concatenation one is optimized for indexing (constring vs. flattened string)
[20:41] arpegius has joined the channel
[20:41] broofa has joined the channel
[20:42] mscdex: Sephi-Chan: yep, and you can use .end(body) instead to save a step
[20:42] mraleph: wink_: he's code causes V8 to constantly switch between two representations which causes quite poor perf
[20:42] Sephi-Chan: Perfect, thanks :)
[20:42] mraleph: wink_: O(n^2) I think
[20:42] Sephi-Chan: This is quite weird behaviour no ?
[20:43] wink_: mraleph: gotcha, do you know enough of the *monkey internals to know what they've done to make that perform so much differently?
[20:43] zzak has joined the channel
[20:43] zzak has joined the channel
[20:43] mscdex: Sephi-Chan: what's that? you mean you're still seeing the problem or ?
[20:43] Sephi-Chan: No, no, it's fix thanks to your advices ;)
[20:43] Sephi-Chan: But the old API creating a "bad" body
[20:43] mscdex: ah
[20:43] mraleph: wink_: I don't think they use cons-strings though I can be completely sure. I can dig through their code base though
[20:44] mscdex: Sephi-Chan: yeah http.createClient is deprecated
[20:44] xeodox has left the channel
[20:44] wink_: mraleph: eh, its more just random curiousity on my part than anything else, i would've never guessed the different engines would behave so differently
[20:44] test117523 has joined the channel
[20:44] mscdex: Sephi-Chan: i haven't used it since 0.2.x
[20:44] fyskij has joined the channel
[20:44] Sephi-Chan: Uh uh
[20:45] saikat has joined the channel
[20:45] mraleph: wink_: every engine has it's own pecularities
[20:45] Sephi-Chan: I'm confused i'm new to Node (i'm used to Ruby/Rails) and i use the net to help me but… sometime it's not very up to date :-
[20:46] wink_: sure, this highlights one of them
[20:46] mraleph: wink_: and of course it's possible to tweak or flatenning heuristics to hit the case. but really people sure just use _proper_ data structures.
[20:46] mraleph: s/sure/should/
[20:47] cm: How do I generate a random string in node.js?
[20:47] chjj: Math.random().toString(32);
[20:47] wink_: absolutely, is there documentation that highlights those things though? without knowing the internals of the vm (of which i know none), it'd be a little boggling if i were porting some c lib and ran into that
[20:48] mscdex: Sephi-Chan: yeah, there are a lot of outdated node articles out there, mainly because node is moving so fast yet
[20:48] cm: chjj: Thanks
[20:48] chjj: np
[20:48] mraleph: wink_: no I don't think there is any documentation
[20:48] Sephi-Chan: mscdex: Hm, headers are not sent :/
[20:48] nibblebot has joined the channel
[20:48] mraleph: wink_: btw SM uses ropes as well. probably they just do not flatten them on access like we do
[20:49] mscdex: Sephi-Chan: are you sure? how are you checking?
[20:49] dmcquay has joined the channel
[20:49] wink_: mraleph: so just for kicks, given these tests: http://jsperf.com/backreference-copy what would be the proper way to optimize it to run well in v8?
[20:50] djazz: http://djazz.mine.nu/apps/Collabdraw/ "made with love from node.js!"
[20:50] kryptom has joined the channel
[20:50] Sephi-Chan: Oops my mistake, not restarted my server since i changed headers block
[20:51] Rixius has joined the channel
[20:51] mscdex: Sephi-Chan: :)
[20:52] mynyml has joined the channel
[20:53] mscdex: djazz: took a long time to load the existing drawings
[20:53] wilken has joined the channel
[20:53] djazz: ofc, toDataURL is slow
[20:53] mscdex: :S
[20:54] mraleph: wink_: http://jsperf.com/concat-join-read-from-dest/2
[20:54] SubStack has joined the channel
[20:54] djazz: mscdex, im using node-canvas
[20:54] qbert has joined the channel
[20:54] mraleph: wink_: or better yet use some buffer like object e.g. Uint8Array
[20:54] mscdex: yes! i think this new version of chrome doesn't have graphical glitches anymore :-D
[20:54] mscdex: s/chrome/chromium
[20:55] wink_: mraleph: holy hell, the join version runs quick in chrome, but its nowhere near as fast as the original version in ff4
[20:55] hackband has joined the channel
[20:56] mrchess has joined the channel
[20:56] wink_: it would seem an algorithm that needed some speed would have to support different versions for different vms
[20:56] wink_: if it were to encounter this issue
[20:57] chrisdickinson: question: does NPM no longer create a symlinked-together directory to put on path?
[20:57] Lagnus has joined the channel
[20:57] mjr_ has joined the channel
[20:58] m64253 has joined the channel
[20:59] mraleph: wink_: Uint8Array version should be even faster
[20:59] mraleph: wink_: though I don't known how to convert Uint8Array into string fast
[20:59] Bonuspunkt: well that answerd my question :)
[20:59] mrchess: does anyone have any recommendations on how to stress test your node.js app? i'm trying to simulate several thousand people simultaniously connected to make sure i can handle it but don't know what to use, and opening 1000 browsers is kind of silly.
[20:59] wink_: mrchess: ab?
[20:59] samsonjs has joined the channel
[20:59] Bonuspunkt: mraleph++ wink_++
[20:59] davidpadbury has joined the channel
[21:00] CoinOpeBoy has joined the channel
[21:00] chrisdickinson: mrchess: also try siege
[21:00] wink_: Bonuspunkt: yeah mraleph is the man
[21:00] mape: mrchess: node? siege?
[21:00] wink_: im pretty sure he's just an advanced AI
[21:00] mrchess: wink_: my app is breaking, when like 1000 peopel connect to it at once so i'm trying to recreate the scenario on my local machine
[21:00] wink_: mrchess: yeah, look into ab (assuming your app is http based?)
[21:01] mrchess: yeah http based
[21:01] mrchess: cool i'l hcecko ut ab and siege thanks
[21:01] broofa has joined the channel
[21:02] wink_: np, it should help you fuzz those kinds of things out real quick
[21:02] AntelopeSalad: pity there's no way to run ab without apache installed, or is there?
[21:02] Melkor has joined the channel
[21:03] GasbaKid has joined the channel
[21:03] mrchess: do you know if you can simulate tcp connections with ab or siege?
[21:04] tjholowaychuk: AntelopeSalad: yeah there is
[21:04] tjholowaychuk: there is a stand-alone ab
[21:04] tjholowaychuk: AntelopeSalad: http://code.google.com/p/apachebench-standalone/
[21:04] tim_smart has joined the channel
[21:05] AntelopeSalad: nice, time to install that
[21:05] mrchess: are you guys talking about this "joe dog" siege?
[21:05] mraleph: oh it is so hard to find something in SM sources…
[21:06] mraleph: I guess I need to checkout and ack through them.
[21:06] dgathright has joined the channel
[21:07] fyskij has joined the channel
[21:07] mnemonic: hi
[21:08] jeremyselier has joined the channel
[21:08] max_dev has joined the channel
[21:09] mnemonic: i am not very happy with the new 'npm 1.0' behaviour (needs -g to install globaly, 'npm install' no longer verbose)
[21:09] isaacs: mnemonic: npm config set loglevel info
[21:09] mape: http://jsconf.mape.me/ is anyone wants a simple live feed from jsconf
[21:09] techwraith: thanks mape
[21:09] mscdex: mape: no video feed? :p
[21:09] mape: techwraith: np
[21:09] mape: mscdex: hehe, if only...
[21:10] mscdex: hopefully there'll be a nodeconf video feed.... that would be awesome
[21:10] mnemonic: isaacs> do you also implemented a switch or it is only changeable with 'npm config set loglevel info' ?
[21:10] mape: Doubt they would loose any attendees even if they had live video
[21:10] isaacs: mnemonic: -d for info, -dd for verbose, -ddd for silly
[21:10] isaacs: mnemonic: -s for silent
[21:10] techwraith: lol, silly
[21:10] isaacs: techwraith: it's silly!!
[21:11] isaacs: mnemonic: the default is "warn"
[21:11] techwraith: What does it log?
[21:11] isaacs: techwraith: everything
[21:11] stagas: mape: cool
[21:11] isaacs: techwraith: dumps objects out repeatedly, etc.
[21:11] techwraith: every tick?
[21:11] techwraith: lol
[21:11] mape: stagas: they just started tweet about http://almost.at/#jsconf when I was done :P But that site seems .. bloated to some degree
[21:12] arpegius has joined the channel
[21:12] techwraith: mape: Where's the retweet and reply buttons?
[21:12] isaacs: process.nextTick(function SILLY () { console.error("OMG!!") ; process.nextTick(SILLY) })
[21:12] mape: techwraith: in your twitter-client?
[21:12] mnemonic: isaacs> 'npm config set global true' ==> is my friend :)
[21:12] isaacs: mnemonic: that's kinda gross.
[21:12] techwraith: mape: Makes sense I guess, I just thought it would be cool to do it all in stream :P
[21:13] isaacs: mnemonic: you still want to require() stuff, right?
[21:13] mnemonic: yes
[21:13] mape: techwraith: hmh yeah, well I just threw it together to get a simple feed, if I find something I want to respond to I'll just use the good ole desktop-client
[21:14] micro`_ has joined the channel
[21:14] vipaca has joined the channel
[21:15] AAA_awright_ has joined the channel
[21:15] stagas: mape: open source!
[21:15] stagas: :D
[21:15] mape: hehe, not worth it :P
[21:16] stagas: we want to add features :P
[21:16] djazz has left the channel
[21:16] techwraith: Use this and roll your own: https://github.com/polotek/evented-twitter
[21:16] techwraith: stagas: ^
[21:16] nail_ has joined the channel
[21:17] boaz has joined the channel
[21:17] mape: yeah it is pretty much just express+socket.io+twitter-node
[21:17] techwraith: (actually, that's an old version, guess he hasn't pushed his seach stuff yet)
[21:17] mape: should take 20min to get something better going
[21:17] fostah has joined the channel
[21:17] ryanfitz has joined the channel
[21:17] boaz has joined the channel
[21:18] eydaimon has joined the channel
[21:18] eydaimon has joined the channel
[21:19] qbert_ has joined the channel
[21:19] dguttman has joined the channel
[21:19] micro`_ has joined the channel
[21:20] rohit_nsit08 has joined the channel
[21:22] fostah: Can anyone tell me what the best solution/module is for setting up a http server that can serve images and possibly js files. I wrote the hello world server and it looks like it just needs some more handlers to handle the other http requests properly.
[21:22] no-gooder has joined the channel
[21:22] no-gooder: hey guys
[21:22] gkatsev: fostah: take a look at node-static for serving static files.
[21:23] techwraith: fostah: node-static, or connect will help you there :)
[21:23] fostah: awesome thanks for the help
[21:23] fostah: ive heard of connect
[21:23] tjholowaychuk: fostah: connect's has more features, range support etc
[21:23] no-gooder: here is my question (a few lines of code) : http://jsfiddle.net/2NDmU/
[21:23] fostah: ok cool, ill check them both out
[21:23] fostah: thanks!
[21:23] mnemonic: isaacs> i have set /etc/npmrc with "global = true", packages are correctly installed in /lib/node_modules but the downloaded package remains in $HOME/.npm///package.tgz is is possible to install it globally instead?
[21:24] isaacs: mnemonic: it IS installed globally. ~/.npm is a cache.
[21:24] isaacs: mnemonic: srsly, read `npm help folders`
[21:24] pHcF has joined the channel
[21:24] fakewaffle has joined the channel
[21:24] isaacs: all your questions are answered in there.
[21:24] fakewaffle: hi
[21:25] mscdex: pie guy!
[21:25] techwraith: no-gooder: I usually send data up like this: data: {cc: "John"}
[21:25] fakewaffle: :)
[21:25] techwraith: Not sure if that helps
[21:25] fakewaffle: is there really a difference between using .on() and callbacks?
[21:25] rworth has joined the channel
[21:25] techwraith: no-gooder: also, make sure you're using bodyParser() with the app
[21:26] willwhite has joined the channel
[21:26] techwraith: app.configure(function(){
[21:26] techwraith: app.use(express.methodOverride());
[21:26] techwraith: app.use(express.bodyParser());
[21:26] techwraith: app.use(app.router);
[21:26] techwraith: });
[21:26] techwraith: sorry guys, meant to paste the link: http://expressjs.com/guide.html
[21:26] KirinDave: Kudos to Ryan Dahl for being nice enough to ignore my poor choice of words earlier today.
[21:26] KirinDave: I gotta publicly give him credit for that.
[21:27] techwraith: KirinDave: what happened?
[21:27] KirinDave: techwraith: He said some wrong and/or confusing things in his reddit thread
[21:27] techwraith: ah
[21:27] KirinDave: And I was in a bad mood so I was meaner about it than I should have been on hackernews.
[21:27] mraleph: wink_: btw. on my machine using Array in V8 is as fast as string in Firefox
[21:27] zzak: whats reddit?
[21:27] mscdex: fakewaffle: yeah, events are generally used for things that may happen more than once, whereas a callback is called exactly once
[21:28] wink_: mraleph: interesting, is array in ff on par as well?
[21:28] fakewaffle: so, for file reads that may happen a lot, and db calls, use events?
[21:28] mraleph: wink_: let me start firefox… my laptop is puffing smoke every time I do that
[21:29] wink_: haha, that'll happen
[21:29] mscdex: fakewaffle: not sure what you mean
[21:30] no-gooder: techwraith, i have forgotten "app.configure(function()... " :S. now it works :) thanks
[21:30] techwraith: np
[21:30] mraleph: wink_: seems that array is slightly faster in firefox. 5-6ms vs. 8-10ms in Chrome
[21:31] zomgbie has joined the channel
[21:31] mraleph: ah I now why
[21:31] wink_: well it seems using an array is the right way to go then
[21:31] fakewaffle: mscdex: ahh, nvm, i'm just generally confused, running on 4 hours of sleep
[21:31] Sephi-Chan: How do you run node server in production ?
[21:31] Sephi-Chan: as deamon
[21:31] mraleph: Crankshaft does not play well with growing arrays.
[21:31] devinus has left the channel
[21:32] mscdex: Sephi-Chan: there are several node modules out there that let you handle daemonizing. otherwise if you're on ubuntu, you can use upstart (that's what i use)
[21:33] mraleph: o! I can get 5-6 ms in Chrome is a wrap the code in closure… hehe
[21:33] wink_: safari's problems seem to be much more nefarious than v8's string coercion
[21:33] wink_: apparently safari is swapping on those tests O_o
[21:34] mscdex: Sephi-Chan: if you want to go the node module route, cluster may be one to look at
[21:34] gwm__ has joined the channel
[21:35] mscdex: Sephi-Chan: there are several on the modules list here: https://github.com/joyent/node/wiki/modules
[21:35] brownies has joined the channel
[21:35] vish-_ has joined the channel
[21:35] mscdex: fakewaffle: heh... well you can see how callbacks and events are used for files in node core and for db stuff you can look at node-mysql for example
[21:35] Sephi-Chan: I use Debian for prod
[21:35] EvilPacket has joined the channel
[21:36] zomgbie has joined the channel
[21:36] fakewaffle: mscdex: thanks :)
[21:36] mscdex: iirc node-mysql uses events for emitting each row
[21:36] Sephi-Chan: Im' on the cluster github (https://github.com/LearnBoost/cluster) but i dont see the point ^^'
[21:37] gmanika has joined the channel
[21:37] tjholowaychuk: Sephi-Chan: the point is to run your application using multiple processes :p
[21:38] Sephi-Chan: i'm looking at the screencast ^^
[21:38] saschagehlich has joined the channel
[21:38] Prism has joined the channel
[21:39] dshaw_ has joined the channel
[21:40] awenkhh has joined the channel
[21:40] mikeal has joined the channel
[21:40] jmoyers has joined the channel
[21:40] beriberikix has joined the channel
[21:42] arpegius has joined the channel
[21:43] dspree: Duostack (platform as a service) is in public beta now... for anyone who wants to deploy online. no invites, coupons, etc. http://news.ycombinator.com/item?id=2507874
[21:43] Sephi-Chan: Hm… Cluster do the listen stuff but there is already one since my app uses express
[21:43] boaz has joined the channel
[21:44] pampelmuse has joined the channel
[21:44] mbrevoort has joined the channel
[21:45] markwubben has joined the channel
[21:46] bradleymeck: congrats duostack
[21:46] dspree: thanks
[21:46] Me1000 has joined the channel
[21:46] eml_ has joined the channel
[21:47] boaz has joined the channel
[21:47] strmpnk has joined the channel
[21:48] kersny has joined the channel
[21:48] zzak: dspree: grats :)
[21:49] broofa has joined the channel
[21:49] Tidwell has left the channel
[21:50] rpflo has joined the channel
[21:50] cloudhead has joined the channel
[21:50] dshaw: Just met heckmann
[21:50] beejeebus has joined the channel
[21:51] techwraith: :)
[21:51] techwraith: Awesome
[21:51] dshaw: techwraith: When do you get in?
[21:51] Know1edge has joined the channel
[21:51] techwraith: Tomorrow around 3pm
[21:51] techwraith: Not going to jsconf, just nodeconf
[21:51] dshaw: techwraith: coming to the parties though, right?
[21:52] techwraith: Yeah, I'll be there for the yammer after party :)
[21:52] dshaw: techwraith: great.
[21:52] dshaw: tjholowaychuk: You coming?
[21:52] techwraith: Nope, tjholowaychuk doesn't exist
[21:52] tjholowaychuk: nah im staying here
[21:52] tjholowaychuk: haha
[21:53] dshaw: :(
[21:53] kevliu has joined the channel
[21:53] tjholowaychuk: would have liked to but i have way to much going on lately
[21:53] kevliu: hey all!
[21:55] dshaw: tjholowaychuk: You'll have to setup BCJS and invite everybody up there then.
[21:55] tjholowaychuk: haha
[21:55] tjholowaychuk: yeah we have nothing up here really
[21:55] isaacs has joined the channel
[21:55] tjholowaychuk: would be way easier for me to get to though coming to the US is a PITA
[21:56] zzak: ACTION read that as BJCS
[21:56] mape: tjholowaychuk: now that osama is dead it should be easier no?
[21:56] mscdex: tjholowaychuk: maybe you can convince the authorities at the border to be async in their checks
[21:56] tyler-iphone: has anyone gotten chainsaw to work in coffeescript?
[21:56] tjholowaychuk: haha
[21:56] tjholowaychuk: i wish
[21:57] tjholowaychuk: the US will always be paranoid
[21:57] mape: and free
[21:57] tjholowaychuk: and waste tons of money on airport security
[21:57] tyler-iphone: what is 'free'?
[21:58] tyler-iphone: that has to be the most ambigous term ever
[21:58] mape: tyler-iphone: freedom fries
[21:58] tyler-iphone: ambiguous*
[21:58] mape: things like that
[22:01] admc has joined the channel
[22:02] blackwhite_ has joined the channel
[22:03] darkos has joined the channel
[22:06] CIA-72: node: 03Ryan Dahl 07v0.4 * r75a0cf9 10/ (4 files in 2 dirs):
[22:06] CIA-72: node: cleartextstream.destroy() should destroy socket.
[22:06] CIA-72: node: This fixes a critical bug see in MJR's production. Very difficult to build a
[22:06] CIA-72: node: test case. Sometimes HTTPS server gets sockets that are hanging in a
[22:06] CIA-72: node: half-duplex state. - http://bit.ly/lCed0v
[22:06] blackwhite_ has joined the channel
[22:07] sugardave has joined the channel
[22:08] quirkey has joined the channel
[22:08] bene has joined the channel
[22:09] sonnym has joined the channel
[22:10] mjr_: hooray for r75a0cf9
[22:12] secoif has joined the channel
[22:12] amiller has joined the channel
[22:12] amiller has left the channel
[22:15] bsstoner has joined the channel
[22:15] onar has joined the channel
[22:17] zakabird has joined the channel
[22:17] darkos: i'm using node_mailer, and having issues sending e-mails using the sample, using exim from prompt and the mails send fine, there's no errors thrown either but no e-mail gets sent, any ideas?
[22:17] brownies has joined the channel
[22:20] mrchess: is it possible to simply disallow half-duplex states on node.js in some config setting?
[22:20] mrchess: just saw the new checkin
[22:20] jonmumm has joined the channel
[22:20] tjholowaychuk: mrchess: i believe that is the default behavior
[22:21] mrchess: oh it by default disallows half-duplex?
[22:21] mrchess: i see
[22:22] tjholowaychuk: oh sorry i thought you said allow
[22:22] aho has joined the channel
[22:22] mscdex: darkos: have you tried other smtp client modules? like emailjs?
[22:22] mrchess: yeah i had a half-duplex problem with my implemntation a while ago but never figued out how to solve it
[22:22] tjholowaychuk: mscdex: allowHalfOpen defaults to false
[22:23] tjholowaychuk: mrchess ^
[22:23] mscdex: wha
[22:23] mscdex: :)
[22:23] darkos: mscdex: hadn't come across that one, I'll give it a shot
[22:23] mrchess: yeah hmm. i swear i tried setting that to false but still ran into half-open states, *shrug*
[22:23] tjholowaychuk: mrchess: but http.js defaults it to true
[22:24] eydaimon has joined the channel
[22:24] eydaimon has joined the channel
[22:24] mrchess: ah i see
[22:24] Lorentz has joined the channel
[22:25] a|i has joined the channel
[22:25] a|i has joined the channel
[22:27] rworth has joined the channel
[22:30] hdon- has joined the channel
[22:31] ExsysTech has joined the channel
[22:31] darkos: mscdex: emailjs works ok so I guess I'll stick with that, thanks
[22:32] aaronlevy has joined the channel
[22:33] BinaryMuse[afk] has joined the channel
[22:33] ExsysTech has joined the channel
[22:34] bsstoner has joined the channel
[22:35] Xano has joined the channel
[22:37] mbrevoort has joined the channel
[22:37] etaty: how to do this in js ? "stringwithéà" to "stringwithea"
[22:38] techwraith: etaty: It's a long and arduous process if you're doing it by hand with .replace(), but there is probably a module out there somewhere that will help.
[22:38] jetienne: etaty: rails for a function for that, with the name of this function you can search the matching on in js
[22:38] brianloveswords has joined the channel
[22:38] jetienne: etaty: slugify
[22:39] mrchess has left the channel
[22:39] THDBASED has joined the channel
[22:39] walkah: hrm. anyone know why npm 1.0.3 would be significantly slower on mac os than linux ?
[22:39] Nexxy has joined the channel
[22:39] Nexxy has joined the channel
[22:40] jetienne: etaty: find a slugify which support i18n
[22:40] THDBASED: Hi, I have a question about a web application I am creating: RUBY - (REST) - Nodejs - MongoDB. Is this a good combination? Efficient?
[22:40] techwraith: What are you using the ruby side for?
[22:40] tjholowaychuk: THDBASED: why bother with ruby?
[22:40] perezd has joined the channel
[22:40] THDBASED: MVC framework
[22:41] THDBASED: creating the view
[22:41] meso has joined the channel
[22:41] techwraith: http://expressjs.com
[22:41] aaronlevy: Is it possible to specify the DNS server node will use for dns.lookup/resolve?
[22:41] THDBASED: So using RR is not neccesary you think?
[22:41] techwraith: Not really
[22:41] THDBASED: But it wouldn't hurt by using it?
[22:42] techwraith: More moving parts == harder to pin down errors
[22:42] techwraith: but yeah, there's no harm in it, it'll just cause headaches if you have to constantly switch languages :)
[22:42] THDBASED: So you would suggest to just use pure javascript on the client side?
[22:43] tjholowaychuk: i would suggest js over ruby any day
[22:43] techwraith: THDBASED: No, use express and build out your mvc stuff in that
[22:43] techwraith: So yeah, I guess that's "pure" js
[22:43] THDBASED: interesting, I never worked with expressjs
[22:43] tjholowaychuk: even though node is young i find the libraries are better too
[22:43] techwraith: THDBASED: It rocks
[22:44] tjholowaychuk: the ruby stdlib is full of crap code
[22:44] THDBASED: Thanks! I will take a look at it
[22:44] Nexxy: well *someone's* rather opinionated!
[22:44] Nexxy: ACTION agrees whole-heartedly.
[22:44] techwraith: I was gonna say Nexxy- and you aren't ;)
[22:44] coreb: there might be some slight bias
[22:44] techwraith: I know I am :)
[22:44] Nexxy: techwraith, I am not!
[22:44] THDBASED: I didn't open up the box of pandora now did I? :)
[22:45] Nexxy: although I hear if you're a truly SERIOUS developer
[22:45] Nexxy: python is the only real choice.
[22:45] tim_smart: THDBASED: Your in the Node channel...
[22:45] techwraith: ew
[22:45] tim_smart: *You're
[22:45] techwraith: Nexxy, I see your point though
[22:46] techwraith: should definitely try not to become like the python guys
[22:46] Nexxy: i mean yesterday I found out
[22:46] Nexxy: you're not even allowed to "lol" in the python channel
[22:46] techwraith: :(
[22:46] Nexxy: that's sum srs bsns
[22:46] THDBASED: Anyone here worked with the Nodejs - Mongodb combo?
[22:46] THDBASED: good combo?
[22:46] THDBASED: problems?
[22:46] Nexxy: yus
[22:46] tim_smart: What about "laugh out loud". Is that concise enough for the python channel
[22:47] Nexxy: the only problem I foresee is how spoiled you will become
[22:47] THDBASED: :)
[22:47] Nexxy: you'll start scoffing @ people that still use PHP
[22:47] THDBASED: I am already doing that now, by using Ruby :)
[22:47] Nexxy: okay put it this way
[22:48] Nexxy: use node + mongo and no one will be scoffing @ you behind your back whilst you're scoffing @ php devs
[22:48] techwraith: lol
[22:48] Nexxy: ;3
[22:48] THDBASED: great!
[22:48] THDBASED: you think nodejs - mongodb is mature enough to use in a production intensif environment?
[22:49] Nexxy: well it's sure better than restarting apache every 10 requests
[22:49] techwraith: I know of at least two startups that are using that same stack
[22:49] rworth has joined the channel
[22:49] techwraith: they seem to be doing just fine
[22:49] THDBASED: gotcha
[22:49] techwraith: Check out storify and learnboost
[22:49] THDBASED: indead I bumped into them the other day, seams to work fine
[22:50] Nexxy: I find it to be rather seamless, myself
[22:50] techwraith: lol
[22:50] THDBASED: what about security?
[22:51] tarrant has joined the channel
[22:51] techwraith: depends on what you mean by security...
[22:51] boaz has joined the channel
[22:52] THDBASED: well not military grade or anything like that but just secure enough
[22:52] techwraith: If implemented well, it can be as secure as you'd like
[22:52] techwraith: but there are some things to keep in mind
[22:52] THDBASED: like?
[22:52] techwraith: (keep mongo behind your firewall, etc.)
[22:52] THDBASED: k
[22:53] THDBASED: was definatly planning not to make mongo accesible directly
[22:54] THDBASED: SSL would do it?
[22:54] Nexxy: lol that's what sony thought too
[22:54] techwraith: lol
[22:54] THDBASED: :)
[22:54] maushu has joined the channel
[22:54] techwraith: Don't worry too much about security to get your mvp up
[22:55] techwraith: get something working, then see if you can poke any holes in it
[22:55] THDBASED: k
[22:55] THDBASED: thanks
[22:55] techwraith: No problem
[22:55] sendark has joined the channel
[22:56] THDBASED: doc seams rather limited on expressjs?
[22:56] techwraith: It doesn't do a whole lot for you, just routing and templates really
[22:56] AntelopeSalad: the examples on github are quite good
[22:56] jonmumm has joined the channel
[22:57] techwraith: AntelopeSalad++
[22:57] v8bot: techwraith has given a beer to AntelopeSalad. AntelopeSalad now has 1 beers.
[22:57] EvilPacket has joined the channel
[22:57] tjholowaychuk: THDBASED: yeah it's similar to sinatra
[22:57] tjholowaychuk: helpers, views, config stuff like that
[22:57] kersny has joined the channel
[22:59] THDBASED: IS it worth exploring all this new stuff? Ruby seams awfully tempting now :)
[22:59] binarypie has joined the channel
[22:59] Nexxy: yes.
[22:59] tjholowaychuk: THDBASED: I would say yeah, I used to like ruby and used it a lot
[22:59] tjholowaychuk: and now i hate it
[22:59] tjholowaychuk: :D
[23:00] tjholowaychuk: s/hate/dislike/
[23:00] jenkinSear has joined the channel
[23:01] coreb: tjholowaychuk: why the sudden dislike
[23:01] a|i has joined the channel
[23:01] a|i has joined the channel
[23:01] tjholowaychuk: i've disliked it for a while now
[23:02] tjholowaychuk: 2 years or so
[23:02] tjholowaychuk: i think its a lousy language
[23:02] tjholowaychuk: generally a lousy community
[23:03] coreb: don't know about ruby/ror, but python's good
[23:03] tjholowaychuk: io is inventive IMO, ruby not so much
[23:05] THDBASED: well I went trough a long path before thinking about using nodejs, I started with java - mongoDB :)
[23:05] dguttman has joined the channel
[23:05] dguttman has joined the channel
[23:05] lnemo has joined the channel
[23:05] mikey_p: THDBASED: mongoose is worth looking into, http://mongoosejs.com/
[23:06] ezl has joined the channel
[23:06] THDBASED: Is it a module which sits on top of nodejs?
[23:08] cleanah has joined the channel
[23:08] mikey_p: yes
[23:08] THDBASED: what would that add? Make the nodejs - mongodb easier?
[23:08] THDBASED: *connection
[23:09] mikey_p: yes, if you read through the sample code it provides an object document mapper for mongo, somewhat simpler code than reading/writing directly to mongo
[23:09] mikey_p: https://twitter.com/#!/mikey_p/status/65190892050456577
[23:09] chrislorenz has joined the channel
[23:10] tonymilne has joined the channel
[23:10] THDBASED: great thanks!
[23:11] caike has joined the channel
[23:11] coreb: why java though, the new cobol
[23:11] jetienne has left the channel
[23:12] THDBASED: I am a (mostly) java dev, by day :)
[23:12] mscdex: ACTION shakes a fist at java
[23:13] chjj: node ninja by late afternoon?
[23:13] THDBASED: that's the plan :)
[23:14] coreb: java's literally and figuratively going nowhere
[23:14] chjj: hehe
[23:14] zzak: metaphorically too
[23:14] ExsysTech has joined the channel
[23:14] chjj: poor java :(
[23:15] coreb: it won't evolve, and it will stay for a long, long time
[23:15] THDBASED: Could be but there is still the possibility to make a lot of money by knowing it :)
[23:15] coreb: yes, as with cobol
[23:15] xeodox has joined the channel
[23:15] coreb: but that's many years from now
[23:16] xeodox: How do I make .forEach call a function after it has finished all the loops?
[23:16] xeodox: messages.forEach(function(message){ process messages } ) ...
[23:16] chjj: are you making async calls within the iterations?
[23:16] xeodox: Yes, but I want to block everything
[23:16] bsstoner has left the channel
[23:17] chjj: what?
[23:17] xeodox: chjj: Yes, I am making an aync call inside each forEach
[23:17] emerleite has joined the channel
[23:17] chjj: ok, so you want a parallel loop?
[23:17] xeodox: no idea what that means
[23:17] tjholowaychuk has joined the channel
[23:18] chjj: a parallel loop starts all async calls in parallel, one iteration wont wait on a call before going to the next
[23:18] chjj: the calls may complete out of order
[23:18] chjj: or you could use a serial loop
[23:18] broofa has joined the channel
[23:18] xeodox: paralell loop = the forEach all gets executed "whenever". right?
[23:18] chjj: wherein the callback of some async call will invoke the next iteration of the loop
[23:19] xeodox: chjj: Yes, I want the serial
[23:19] xeodox: chjj: by default it is paralel, right?
[23:19] polotek has joined the channel
[23:19] chjj: you dont want to use forEach then
[23:19] brownies has joined the channel
[23:19] chjj: if you want a serial loop
[23:19] polotek: anybody know why I wouldn't be getting a v8.log file when running the profiler?
[23:20] tonymilne: xeodox: do you want to pastie some code, and I can help you out?
[23:20] azeroth____ has joined the channel
[23:21] xeodox: wait, thinking about this stuff
[23:21] whozman has joined the channel
[23:21] bretts_ has joined the channel
[23:22] chjj: (function loop(i, done) { var a = arr[i]; if (!a) return done(); someasyncfunc(function() { loop(++i, done); }); })(function() { console.log('done'); });
[23:22] chjj: thats a quick and dirty way
[23:22] chjj: to write a serial loop
[23:23] chjj: arr is the array or whatever youll be traversiing through
[23:23] xeodox: chjj: I just want a function to be called after the forEach is all completed.
[23:23] vikstrous has joined the channel
[23:23] chjj: ok, thats a parallel loop
[23:24] xeodox: how do I implement that?
[23:24] techwraith: chjj, xeodox: You want to wait for all the callbacks to be done first though, right?
[23:24] chjj: var i = 0, l = arr.length; arr.forEach(function(v) { console.log(v); if (++i === l) done(); });
[23:24] chjj: thats a parallel loop
[23:24] chjj: er
[23:24] chjj: sorry
[23:24] xeodox: I want everything inside the forEach to be done, and then after all the forEach'es are done...then call a function to render the template
[23:25] chjj: var i = 0, l = arr.length; arr.forEach(function(v) { console.log(v); async(function() { if (++i === l) done(); }); });
[23:25] chjj: put that check
[23:25] chjj: in your callback
[23:25] dgathright has joined the channel
[23:25] chjj: so once it reaches the end of the iterations, it invokes your "done" function
[23:25] mjr_ has joined the channel
[23:25] xeodox: chjj: that's a silly hack.
[23:25] xeodox: using a counter!!!??
[23:25] chjj: thats how parallel loops are done
[23:25] chjj: lol
[23:25] tjholowaychuk: i like --pending || done()
[23:26] techwraith: could do it with promises too
[23:26] jmoyers: or use a library like async
[23:26] xeodox: tjholowaychuk: can you explain that? I dont know what "-- pending" means
[23:26] techwraith: +1 for async
[23:26] Bwen has joined the channel
[23:26] chjj: ive been writing all my async loops by hand lately, its kind of fun
[23:26] xeodox: jmoyers: npm install what?
[23:26] techwraith: https://github.com/caolan/async
[23:26] jmoyers: https://github.com/caolan/async
[23:26] techwraith: :)
[23:26] jmoyers: hehe
[23:27] jmoyers: and its npm install async
[23:27] xeodox: So, I put the forEach inside async.parallel , right?
[23:27] xeodox: the whole forEach block
[23:27] jmoyers: xeodox: --pending is a counter, when it reaches 0, done is executed via ||
[23:27] chjj: yeah, tj, thats probably a more concise way to do it
[23:28] xeodox: chjj: Can you rewrite your snipplet of code with the --pending way?
[23:28] tjholowaychuk: just iterate and ++pending
[23:28] tjholowaychuk: then in a callback have the --pending || done()
[23:28] norviller has joined the channel
[23:28] chjj: var pending = arr.length; arr.forEach(function() { process.nextTick(function() { --pending || done(); }); });
[23:29] chjj: something like that
[23:29] tjholowaychuk: yup
[23:29] jmoyers: xeodox: https://github.com/caolan/async#forEach i would use forEach if you're looking to execute a piece of code after 2+ functions with callbacks return
[23:29] xeodox: thanks guys
[23:29] xeodox: i'll play with it and see if it works
[23:29] no-gooder has joined the channel
[23:29] jmoyers: you can also use something like 'auto' with a function dependency map -- super cool concept, actually
[23:30] jmoyers: for more complicated barrier type alogrithms
[23:30] chjj: async loops do seem kind of hacky when you first start using them
[23:30] chjj: you get used to it though
[23:30] chjj: theres a certain amount of elegance in it
[23:32] xeodox: sometimes it feels like node.js is one big hack
[23:32] xeodox: lol
[23:32] xeodox: For example...for my site, I have to run 10 queries before I render the template
[23:33] xeodox: so i have to nest everythning
[23:33] tyler-iphone: nodejs module i just made for simple rss/atom discovery https://github.com/tjgillies/discovery
[23:33] aho: wordpress does like... >100
[23:33] rook2pawn has joined the channel
[23:33] chjj: wordpress isnt a good standard to judge projects by
[23:33] aho: you don't necessarily have to nest everything
[23:33] xeodox: query.find( { query.find{ query.find
[23:33] xeodox: finally, render template
[23:34] xeodox: Each query depends on the previous query lol
[23:34] techwraith: xeodox: Sounds like you might want to re-think your db architecture :)
[23:34] aho: Tom Hughes-Croucher — How to Stop Writing Spaghetti Code http://developer.yahoo.com/yui/theater/video.php?v=yuiconf2010-croucher
[23:34] chjj: yeah, 10 queries seems a bit rough
[23:34] xeodox: not 10...
[23:34] xeodox: maybe like, 4-5
[23:34] xeodox: nested
[23:35] kmwallio has joined the channel
[23:35] quirkey has joined the channel
[23:36] avalanche123 has joined the channel
[23:36] jsninja has joined the channel
[23:37] justinhjohnson has joined the channel
[23:38] jsninja has left the channel
[23:38] samsonjs has joined the channel
[23:38] mjr_ has joined the channel
[23:39] jmoyers: xeodox: that seems a little hairy. if you're using a document database like mongo, i would guess those should probably be subdocuments
[23:40] dshaw_ has joined the channel
[23:40] xeodox: jmoyers: Yes they are
[23:40] jmoyers: xeodox: if you're using a relational database like mysql, you can probably make those into joins?
[23:40] a2800276 has joined the channel
[23:41] superstructor has joined the channel
[23:42] xeodox: Well, I have to query 5 "collections" before I render the template
[23:43] xeodox: (on the user's dashboard, there are 5 "things" to display. Their friends, their messages, their notifications, their posts, etc...)
[23:43] xeodox: so that's already 5 nests
[23:43] xeodox: before I can even render the template
[23:45] isaacs has joined the channel
[23:45] tyler-iphone: how do i get http.request to follow redirects? i don't see anything in the docs
[23:47] blueadept: has does one access a mongodb object if it is labled as [Circular] ?
[23:47] blueadept: has*how
[23:47] benw_ has joined the channel
[23:48] AntelopeSalad: is there a way i can trick node to run something in synch using a bit of code that's meant to act a-synch?
[23:49] tyler-iphone: if you need to 'trick' it to do sync you're prolly doing it wrong
[23:49] benw_: AntelopeSalad: Run it in a child process?
[23:49] AntelopeSalad: tyler: probably, i'm still new to js and working with node in general
[23:50] benw_: AntelopeSalad, yeah, don't do it.
[23:50] AntelopeSalad: but basically i need something to happen before other stuff happens
[23:50] AntelopeSalad: the use case is, imagine you're on a page and it asks you to fill out a form
[23:50] AntelopeSalad: obviously you'll want to validate the user input (let's say it's to create a new user)
[23:51] AntelopeSalad: so you would want to check if a user exists before you write the new upcoming user to the db and act accordingly, right?
[23:51] benw_: AntelopeSalad: The thing that should happen second goes in the callback from the thing that happens first.
[23:51] zylo has joined the channel
[23:52] benw_: AntelopeSalad: The result of the first thing is passed as an argument to the callback.
[23:52] AntelopeSalad: right, that's kind of what i'm doing already ben (before i render a template in express, i first query my db and inside of the callback from the db query is where i render my template)
[23:53] benw_: AntelopeSalad: Great, sounds like you're doing it right.
[23:53] AntelopeSalad: hmm instead of explaining this, it might be better just to paste the code
[23:53] benw_: What's the problem?
[23:53] AntelopeSalad: it's only a few lines (if you ignore my comments lol)
[23:54] tyler-iphone: is there a way to follow 301/302 in node? or do i have to do that myself?
[23:54] JojoBoss has joined the channel
[23:55] tyler-iphone: oh
[23:55] tyler-iphone: just re-found https://github.com/mikeal/request
[23:55] tyler-iphone: n/m
[23:56] AntelopeSalad: here take a look at this (lines 15-21 and line 30 specifically): http://pastebin.com/CvuJG5Td
[23:56] AntelopeSalad: go easy on me too, this is literally my first try at doing something in node after being a hackjob php/mysql web dev
[23:56] Spion__ has joined the channel
[23:57] techwraith: AntelopeSalad: everything that comes after couchdb.run() should go inside it's callback :)
[23:58] AntelopeSalad: tech: take a look at line 30 though, how would i get everything past last 42 to know what i did to vUsername.error?
[23:58] AntelopeSalad: *last = line
[23:58] Wa has joined the channel
[23:58] wdperson_ has joined the channel
[23:59] benw_: AntelopeSalad: Move lines 20 and 21 down to the bottom of the function.
[23:59] benw_: Sorry, mostly line 21.
[23:59] techwraith: yeah, don't move 20
[23:59] charlesjolley-_ has joined the channel
[23:59] AntelopeSalad: wow sick, and that's the totally standard way of doing things?