[00:00] mikeal: this isn't blocking [00:00] mikeal: at least not for read [00:00] isaacs: no, it's just explicit [00:01] mscdex: it'd be neat to have user-contributed "cliff notes" for long ML threads :p [00:01] isaacs: node doesn't let you make stdin or stdout blocking. [00:02] _mythz has joined the channel [00:02] isaacs: mikeal: it'd require an fcntl on stdin, like i just added for child_process [00:02] eggie5: creationix: still getting that same error... is this correct usage? pg=require('./postgres-pure'); conn=new pg.Connection('postgres://user:pass@localhost/my_dev_db'); [00:02] creationix: eggie5: I think so [00:03] eggie5: creationix: ok [00:03] mikeal: i need it in the same process [00:03] mikeal: i don't care too much about child processes [00:03] isaacs: yeah [00:03] tjholowaychuk: ah boo, githubs api to fetch tags are not sorted [00:03] isaacs: i only added it for child_process because processes that aren't node arent usually prepared to be in nonblocking mode if they're talking to a tty [00:04] mikeal: turns out you can't write a couchdb view server without a blocking readline call :) [00:04] isaacs: really? that's kinda weird. [00:04] isaacs: hm... say, it looks like stdin actually IS blocking (or at least, could in theory be) if you pipe a non-fifo, non-socket file into i [00:04] isaacs: t [00:05] isaacs: return !S_ISSOCK(s.st_mode) && !S_ISFIFO(s.st_mode); [00:07] isaacs: mikeal: i don't know if you want to expose fcntl to usercode in node, since that kind of means that you can break out of the nonblocking jail, and do blocking sync http and other stupid things. [00:08] eggie5: creationix: i fixed it.... [00:09] brainproxy: okay, I've got eclipse setup to debug and it can connect to my node script, and I can browser with the project explorer, but I'm getting segmentation faults if i try to do any of the stuff described in the node wiki entry re: eclipse [00:09] brainproxy: any tips? [00:09] spot__: rauchg_: Not sure. It just started working. I didn't cahnge anything (which always worries me) [00:10] rauchg_: hahahaha [00:10] mischievious has joined the channel [00:10] creationix: eggie5: really? [00:11] creationix: eggie5: patch :) ? [00:11] mscdex: spot__: you've got the touch! [00:11] eggie5: creationix: i was just trying to run it from the node console from the lib dir and that seems to break it... [00:11] creationix: interesting [00:12] eggie5: creationix: well now i'll try to run a query... [00:12] spot__: mscdex: And that worries me also. :) [00:12] spot__: rauchg_: I notice opera is not in your test list. Ever get it to work? [00:12] ngw has joined the channel [00:12] rauchg_: i'll test [00:12] rauchg_: i'm actually setting up automated browser testing [00:12] spot__: rauchg_: It's not working for me [00:12] rauchg_: so i won't need to [00:12] ngw: hi * [00:12] spot__: rauchg_: Ahh ok nice [00:13] rauchg_: question [00:13] rauchg_: did anyone write some node thingy to serve the current directory ? [00:13] saikat: rauchg_: what do you use to build socket.io.js from the lib? [00:13] rauchg_: like you do with python's SimpleHTTPServer ? [00:13] rauchg_: saikat: make build, but i always commit the build [00:13] saikat: ok cool [00:15] ngw: I'm trying to use mongoose [00:16] ngw: but from the documentation I'm not able to understand how to "import" my models [00:16] rauchg_: ngw: just require() them [00:16] rauchg_: then you access from db.model('Name') [00:16] ngw: oh, that's all ? [00:16] ngw: cool thanks rauchg_ [00:16] rauchg_: yup [00:17] james20371 has left the channel [00:18] DraX: col [00:21] sh1mmer: mjr_: you around? [00:21] JimBastard has joined the channel [00:21] JimBastard: i just had an interesting talk with this company. let me tell you, node is very much on people's minds [00:21] isaacs: JimBastard: which company? [00:21] isaacs: can you spill? [00:21] JimBastard: everyone get sharp, caus i see lots of node jobs in the future [00:22] aniero: you do? [00:22] creationix: spill? like BP [00:22] aheckmann has joined the channel [00:23] mjr_: sh1mmer: hey [00:23] ryah: mikeal: what do you need blocking readline fore? [00:23] sh1mmer: mjr_: have you had checksum problems with sendto? [00:24] mikeal: so, here's the deal [00:24] sh1mmer: or mikeal too [00:24] mikeal: someone thought it was a good idea to build this API [00:24] mikeal: where you have an iterator for going over rows in your list function [00:24] sh1mmer: wireshark is reporting all of my dns packets with an IP checksum header of 0 [00:24] mikeal: so your list function is like [00:24] mjr_: sh1mmer: yeah, UDP checksums are broken almost everywhere I've looked. [00:24] mjr_: I think most people turn them off. [00:24] keeto has joined the channel [00:24] mikeal: function () { var row = getRow(); while (row) { ….; row = getRow() } } [00:25] mikeal: so, that getRow() call is blocking [00:25] mjr_: Like I get either 0 or bad checksums when I inspect packets sent by like bind or whatever. [00:25] JimBastard: mikeal: t-sql ? lol [00:25] mikeal: and it fuckin blocks on a readline call that has to come from the process handler [00:25] mikeal: i know, it's retarded [00:25] jan247 has joined the channel [00:25] mikeal: it should have been implemented like [00:25] ryah: okay - what's that have to do with node? [00:25] JimBastard: hey mikeal , btw if i didn't mention it. request module ++ [00:26] mikeal: getRows(function (row) {}) [00:26] sh1mmer: mjr_: is it a flag? I was routing around in the node_net.cc but I couldn't see where it's even implemented [00:26] mikeal: but we can't change the external API till 2.0, which is like at least a year out [00:26] mikeal: ryah: because we want to implement the view server in node [00:26] sh1mmer: as far as I could tell it's sendto itself doing it wrong [00:26] mikeal: nothing else in the view server blocks on IO [00:27] mikeal: the view server is only allowed to block on processing but the line protocol and API have this big wart [00:27] mikeal: that you can't implement any other way [00:27] mikeal: anyway, i don't think it's a huge deal to support [00:27] mikeal: it's kind of like blocking file IO [00:28] softdrink has joined the channel [00:28] mikeal: when you're using it there shouldn't really be anything else going on in node anyway [00:28] seeflanigan has joined the channel [00:29] _announcer: Twitter: "@cloudhead nice work on thingler. yet another reason to learn Node.js" -- Mani Tadayon. http://twitter.com/bwsr_sr/status/20346047657 [00:29] saikat: oh also rauchg_ - i forgot to mention in my pull request - i took out a loop (you'll see it in the commit) that looked spurious. i hope i was right [00:29] jsilver: WHAT IS THERE TO FUCKING LEARN LOL [00:29] jsilver: it's an api.html [00:30] jsilver: im so sick o ppl thinkin u gotta learn it like its yr religion or something [00:30] jsilver: go hack [00:30] jsilver: stop writing tweets and blogs about it and just go do it an shit [00:30] mikeal: JimBastard: thanks :) [00:30] jsilver: lol [00:30] rauchg_: saikat: what pull request ? [00:30] saikat: i just sent you one =) [00:30] seeflanigan: anybody know why kiwi isn't being developed anymore? [00:30] saikat: to guille - that's you right? [00:30] mikeal: jsilver: people assume it's as hard as Ruby/Python to pick up [00:30] rauchg_: oh i see [00:31] jsilver: mikeal, yeah [00:31] jsilver: agreed [00:31] mikeal: JimBastard: you know that it supports keep-alive if you set that header and recycle the client object right :) [00:31] ryan_gahl: !tweet @bwsr_sr jsilver says "Just Do It" [00:31] jsilver: totally not the case at all [00:31] jsilver: :D [00:31] jsilver: i find javascript to be easier [00:31] seeflanigan: n/m [00:31] jsilver: even with it's flaws [00:32] jsilver: 1 lamba vs. 4 different kinds of lambdas [00:32] jsilver: lol [00:32] SteveDekorte has joined the channel [00:32] rauchg_: saikat: looks good, i knew the event system needed some love :D [00:32] jsilver: and ruby honestly is a bit confusing [00:32] rauchg_: im gonna add some jasmine tests [00:32] admc has joined the channel [00:32] rauchg_: for the client side as well [00:33] mjr_: sh1mmer: I think there's a flag in the kernel [00:33] x_or: isaacs: Sorry to bug you, after doing "npm install multipart" I see that it requires a file '.npm/multipart/active/main' but the .npm directory is not there. I am reading the docs on github and not sure if I need to manually create .npm directory, or what. [00:33] saikat: yeah that'd be a good idea [00:33] rauchg_: saikat: merged [00:33] saikat: one thing though [00:33] isaacs: x_or: are you quite sure that the .npm folder isn't there? [00:33] sh1mmer: mjr_: in the kernel, really? So it's a mac issues not a node issue? [00:33] mjr_: sh1mmer: sysctl net.inet.udp.checksum [00:33] omarkj has joined the channel [00:33] saikat: that i've been doing for client-side testing [00:33] saikat: because i love expresso so much [00:33] isaacs: x_or: npm won't work *even a little* without that, and it creates it if it's missing. [00:34] saikat: well actually it's not necessary since you will never use socket.io on the backend [00:34] mjr_: sh1mmer: unless I'm confused, and I often am, users shouldn't be computing UDP checksums. [00:34] saikat: cool thanks [00:34] mjr_: sh1mmer: it's been forever since I've seen UDP checksums do anything useful. [00:35] brainproxy: dang, tried a few versions of node, e.g. went back to v0.1.98, but when I try setting a breakpoint with eclipse I get a segmentation fault [00:36] brainproxy: maybe a step I'm missing to use this tool properly? [00:37] eggie5: anybody here using jasmine-nodejs??? [00:38] spot__: rauchg_: congrats on the seed round [00:39] x_or: isaacs: Yes, I just confirmed it was not there, and had to create it. Does the sh script pulled via curl during install create this? [00:39] rauchg_: spot__: thanks [00:39] rauchg_: do we know each other ? [00:39] steadicat has joined the channel [00:39] isaacs: x_or: maybe it's not doing that, but it should be. the newest version (in master) definitely does do this. [00:39] spot__: rauchg_: not to my knowledge [00:39] rauchg_: oh k :D [00:39] spot__: rauchg_: your blog [00:39] isaacs: x_or: but how could it be installing without having that folder? [00:40] x_or: isaacs: I do have the .nvm directory, and it seems to install things into there based on the node version I am currently using with nvm. [00:40] isaacs: x_or: yeah, npm guesses your install loc based on the location of the node executable [00:40] x_or: For example I see in this: ls ~/.nvm/v0.1.102/lib/node/ [00:40] x_or: multipart is in there. [00:41] cardona507 has joined the channel [00:42] dmshann0n has joined the channel [00:43] saikat: rauchg_: sorry for bugging you so much, but one other small nit - I've noticed that socket.io complains unless i do " window.WEB_SOCKET_SWF_LOCATION = "socket.io/WebSocketMain.swf";" in my index.html. this should probably be in the chat example too (unless i'm just doing something wrong) [00:43] dmshann0n: good evening [00:44] rauchg_: saikat: [00:44] rauchg_: the doc says to use io.setPath [00:44] saikat: ohh i see [00:44] x_or: isaacs: Could I symlink to the .npm directory or something from the .nvm directory? [00:44] rauchg_: chat does [00:44] rauchg_: io.setPath('/client/'); [00:45] isaacs: x_or: no, you really want that to be a real folder. [00:45] saikat: my mistake, thanks [00:45] isaacs: x_or: i'll look into it tomorrow. [00:45] x_or: OK, thanks. [00:45] x_or: I'll ping you and check in tomorrow then. [00:47] mbxtr has joined the channel [00:48] isaacs: x_or: kewl [00:49] pengwynn has joined the channel [00:49] x_or: isaacs: Just FYI, running "ln -s ~/.nvm/v0.1.102/lib/node/.npm/ ~/.npm" seems to work for now. [00:49] tpryme has joined the channel [00:49] isaacs: x_or: wait... why is it looking for $HOME/.npm? [00:49] isaacs: that's very wrong [00:50] x_or: Not sure. [00:50] isaacs: x_or: it should just be looking for {prefix}/lib/node/.npm [00:50] JimBastard: seeflanigan: npm is used instead of kiwi [00:50] JimBastard: if no one answered [00:50] isaacs: x_or: can you do me a favor? remove that symlink, run it, and paste the output into a gist or something, and email me. [00:50] isaacs: x_or: because that's not right. i'd like to see exactly what isn't working. [00:50] x_or: OK, will do. [00:51] isaacs: seeflanigan: because tjholowaychuk got bored with it, and started using npm instead. [00:51] isaacs: x_or: thanks [00:52] mbxtr has joined the channel [00:52] x_or: isaacs: wtf, now it is working. I'll post the error I got before, but unsure why now. I don't think I did anything other than make that symlink. [00:52] isaacs: x_or: i usually (when I remember) create a brand new env and install npm before pushing a new release. [00:53] isaacs: so hopefully i'll be able to see this in action soon. 0.1.23 is right around the corner [00:54] x_or: isaacs: http://gist.github.com/509045, but I need to confirm more later. There is nothing in my history other than re-running the install command, but I don't think I tested after than because I did not see anything in the ~/.npm directory. Doh. Probably my bad. [00:54] x_or: isaacs: Thanks, gotta run, will send you more data later if I can nail anything down, but probably user error. [00:54] isaacs: x_or: sure. have fun :) [00:54] sh1m has joined the channel [00:56] robotarmy has joined the channel [00:58] SteveDekorte_ has joined the channel [01:02] rsms has joined the channel [01:03] bradleymeck1 has joined the channel [01:03] _announcer: Twitter: "installing node.js, here goes nothing....." -- Jason Melgoza. http://twitter.com/jasonmelgoza/status/20348298593 [01:03] er1c_ has joined the channel [01:05] aheckmann: !tweet @jasonmelgoza Here comes amazing! [01:05] JimBastard: ahaha lolwut [01:05] JimBastard: i got on the node.js roundup for jsonloops [01:05] ryan_gahl: I think nodejsbot is not running [01:05] aheckmann: awww [01:05] JimBastard: also looks like the guy who wrote the article didnt understand how it works [01:05] bradleymeck1: frankie isnt up [01:06] ryan_gahl: !tweet !tweet !tweet [01:06] ryan_gahl: :( [01:06] aheckmann: haha [01:09] _frankie has joined the channel [01:09] aheckmann: :) [01:09] _frankie has joined the channel [01:10] _announcer: Twitter: "Got me some 'Hello World' using node.js #donefortoday" -- Jason Melgoza. http://twitter.com/jasonmelgoza/status/20348722840 [01:10] ryan_gahl: whoa, 10 minutes and done [01:10] ryan_gahl: first time i installed node, couldn't stop playing [01:10] bradleymeck1: twitter hobagged the first login [01:11] ryan_gahl: oh soooo [01:12] ryan_gahl: !tweet @jasonmelgoza Hello, back at ya! [01:12] ryan_gahl: wait for it... [01:12] ryan_gahl: yay :) - so rewarding [01:13] ryan_gahl: btw bradleymeck1, I love the usage of the fine word "hobagged" [01:14] aheckmann: that's in the dictionary right? [01:15] ryan_gahl: yes, The Oxford Standard ('Merkin Edition) [01:18] [[zzz]] has joined the channel [01:18] fizx has joined the channel [01:20] dannycoates has joined the channel [01:22] [[zzzz]] has joined the channel [01:24] ngw: I'm not able to assign a query result to a variable [01:24] ngw: http://gist.github.com/509073 [01:25] ngw: what am I doing wrong ? [01:25] ngw: (a lot of things for sure :p) [01:25] keeto has joined the channel [01:25] ryan_gahl: 11,00•12,00ngw11,00• ? [01:25] bradleymeck1: wth is that... what module you using? [01:25] JimBastard: ngw: welcome to async programming [01:26] JimBastard: its gonna be a bumpy road [01:26] ngw: sorry, mongoose [01:26] ngw: lol [01:26] JimBastard: you seem to be putting out a value that is being defined in an async callback [01:26] ngw: thanks JimBastard, honestly I'm having a ton of fun [01:26] JimBastard: as sync [01:26] JimBastard: sys.puts( user.first_name ); gives you undefined right? [01:27] JimBastard: or an error? [01:27] ngw: exactly [01:27] JimBastard: yeah [01:27] ngw: undefined [01:27] JimBastard: you gotta realize that you are sending a callback as the last argument [01:27] tilgovi has joined the channel [01:27] JimBastard: and your result gets passed through the callback [01:27] JimBastard: its not sync [01:27] ngw: if inside the function I sys.puts everything is fine [01:27] JimBastard: yep [01:27] JimBastard: like i said [01:27] JimBastard: welcome to async programming [01:28] ngw: ah [01:28] ryan_gahl: var foo = User.find(...).exec().first(function( result ) {...}); gives you the result of the final function call (.first() here) [01:28] ditesh|cassini has joined the channel [01:28] ngw: gotcha [01:28] ngw: because querying the db is sync, right ? [01:28] ryan_gahl: shouldn't be [01:28] ryan_gahl: better not be :) [01:29] aheckmann: it's not [01:29] ryan_gahl: try... [01:29] ryan_gahl: var user; [01:29] JimBastard: ngw: querying the db is an async operation [01:30] JimBastard: you have to wait for it to respond [01:30] jakehow has joined the channel [01:30] ryan_gahl: User.find(...).exec().first(function(result) { user = result.__doc; sys.puts(...) }); [01:31] ryan_gahl: (disregard the var user; line above) [01:32] ryan_gahl: basically, as JimBastard pointed out, welcome to async-land [01:32] aheckmann: Anyone have any recommendations for Fiddler like functionality that handles websockets on Ubuntu? [01:32] beelzabub: hey ryah - you there? [01:32] JimBastard: aheckmann: is ngrep no good? [01:33] aheckmann: JimBastard: i'm looking for recommendations, haven't tried it [01:33] JimBastard: im kinda a huge linus noob [01:33] aheckmann: me too [01:33] JimBastard: http://ngrep.sourceforge.net/ [01:33] aheckmann: i just threw away windows a couple months ago [01:33] aheckmann: thx [01:33] JimBastard: woooot [01:33] JimBastard: bye bye windows [01:33] aheckmann: haha [01:33] aheckmann: have you used it? [01:34] aheckmann: ngrep [01:34] beelzabub: hey ryan_gahl - you there? [01:34] ryan_gahl: I am, but I'm not who you're looking for [01:34] pedro has joined the channel [01:34] ryan_gahl: (probably) [01:35] beelzabub: damn [01:35] beelzabub: looking for the node.js ryan [01:35] JimBastard: aheckmann: i saw someone using it at work the other day to monitoring some outgoing http requests [01:35] knuckolls has joined the channel [01:36] tmpvar_ has joined the channel [01:36] aheckmann: JimBastard: i tried wireshark but meh [01:37] saikat: why do most people do undefined checks using typeof(variable) == "undefined" instead of just variable == undefined? is it to guard against code that uses variables named undefined? [01:37] mikeal has joined the channel [01:37] ryan_gahl: 11,00•12,00saikat11,00• yes [01:38] ryan_gahl: === "undefined" is best of course [01:38] saikat: right [01:38] aheckmann: var undefined = "fail" [01:38] saikat: thanks [01:41] aheckmann: ryan_gahl: did you just say typeof(variable) === "undefined" is better than == "undefined" ? [01:41] ryan_gahl: no?? [01:41] ryan_gahl: ACTION ducks [01:41] aheckmann: haha [01:41] aheckmann: wasn't sure [01:42] inimino: saikat ⋱ It usually doesn't apply since you should know whether your variables exist or not, but it's useful for things like testing for the native JSON object in a browser. [01:43] ryan_gahl: i usually do === for string comparison [01:43] inimino: if (typeof JSON == 'undefined') ... [01:43] aheckmann: yep [01:44] aheckmann: why not == for strings? [01:44] ryan_gahl: but i guess it's only needed for cases where the literal could be parsed as Number or something like that [01:44] ryan_gahl: 2 == "2" [01:44] aheckmann: right [01:44] aheckmann: i'm thinking on typeof() == "string" [01:45] aheckmann: i follow you ryan_gahl [01:45] _mythz has left the channel [01:46] ngw: wonderful, got it [01:46] ngw: thanks to everyone [01:47] JimBastard: ngw: so when you start complaining about getting 3+ nested closures deep, http://github.com/creationix/step [01:47] jimt has joined the channel [01:47] mjr_ has joined the channel [01:48] aheckmann: step +1 [01:48] mikeal: step is awesome and everything [01:48] JimBastard: then once you start complaining that Step isn't powerful enough, http://en.wikipedia.org/wiki/Control_flow [01:48] ngw: http://gist.github.com/509073 [01:48] mikeal: but a much simpler answer to that question is to simple name the function and break it out [01:48] mikeal: simply [01:49] ryan_gahl: heresy [01:49] ngw: is it slightly better ? I know I still didn't wrap my head around the whole thing [01:49] mikeal: step is great when you have a ton of sequential actions [01:49] aheckmann: if else sucks tho [01:49] mikeal: for it's unnecessary for simple cases where the nesting is just getting large [01:49] JimBastard: ngw: thats not gonna work imo [01:49] wattz: hey, does anyone here know how to get node-wef to set dest_cpu value? [01:50] ngw: anyway, I'm using express.js, I'm very familiar with sinatra [01:50] mikeal: but in most cases you'll want to handle errors from different callbacks with different error handlers [01:50] mikeal: so you can't use one generic callback anyway so step isn't helping much [01:50] ngw: JimBastard: why ? [01:50] mikeal: don't get me wrong, i use step, it's great [01:50] mikeal: i just think people need to learn how to program in node [01:51] JimBastard: ngw: because var user = User.find( { first_name : 'Nicholas' } ).exec( ); is async? [01:51] JimBastard: doesnt that take a callback? [01:51] JimBastard: or no? [01:51] mikeal: and dealing with nested callbacks on your own is a hurdle you need to learn how to jump over when you hit it [01:51] JimBastard: mikeal +10 [01:51] aniero: nyrr, TypeError: Object # has no method 'substr' [01:51] aniero: from Object.urlParse, from node's url lib... [01:52] bmizeran_ has joined the channel [01:52] ngw: no, it's not async [01:52] DoubleV has joined the channel [01:52] JimBastard: aniero: dump the object, its not a string [01:52] JimBastard: ngw: ohh? [01:53] JimBastard: is the User object already defined? [01:53] jimt has joined the channel [01:53] JimBastard: i have no idea how the library you are using works [01:53] JimBastard: or its api [01:53] ngw: yes, it is [01:53] ngw: it's a normal model [01:53] ryan_gahl: mongoose's .exec() is sync? who wrote that? [01:53] JimBastard: ryan_gahl: unknown, im checking now [01:54] ryan_gahl: ACTION readies the gallows [01:54] aniero: JimBastard: it's an error coming from inside the url library [01:54] ngw: JimBastard: http://github.com/LearnBoost/mongoose [01:54] micheil: ryan_gahl: a lot of mongoose is "sync" [01:54] aniero: JimBastard: but nm, i'll dig into it and see what it's getting called with [01:54] micheil: or rather, coroutined in a way [01:54] softdrink has joined the channel [01:55] ryan_gahl: coroutined exists not, in js [01:55] ryan_gahl: so, it's sync (no quotes) [01:55] aniero: JimBastard: ahh, it's javascript. need to call my "superclass" with arguments [01:55] ryan_gahl: so, it's Bad [01:55] aniero: the arguments object, that is. [01:55] ngw: actually the code I posted works, but I'd like to understand if what I'm doing is right or not [01:56] JimBastard: aniero: whats a class? [01:56] JimBastard: ngw: its cool man, you are a rails guy, just keep it moving you'll be fine [01:56] JimBastard: :-) [01:57] ryan_gahl: 11,00•12,00ngw11,00• it's right (except you don't need two .first() calls)... but it's wrong... syncronous i/o is not a good foot to start with in node since the whole idea is to do non-blocking i.o [01:57] ryan_gahl: in other words, stop using mongoose [01:57] aniero: JimBastard: right, i know [01:57] JimBastard: ryan_gahl: is that how that works? [01:57] JimBastard: aniero: sorry i misread, missed your middle message [01:58] aniero: JimBastard: ahh. i'mma dig through this 'javascript: the good parts' and see what i should be doing [01:58] aheckmann: i don't think it's sync - where do you see that? [01:58] ngw: ok, cool, bye mongoose [01:58] ryan_gahl: isn't there some non-blocking mongo libs? [01:58] dipser: is addListener deprecated? is the new one: newListener? [01:58] aheckmann: mongoose shouldn't be blocking [01:58] ngw: thank you guys, you are very helpful [01:59] mikeal: dispalt: it's .on instead of addListener [01:59] dipser: hm thx [01:59] aniero: 'this' killed me the other day... http://gist.github.com/506540 [02:00] daniellindsley has joined the channel [02:00] ryan_gahl: ok, my bad, i can see how it could be non-blocking if the actual query is done when you call .first() [02:00] aheckmann: from what i see it uses it's own promise imple [02:01] aheckmann: to handle everything in queues [02:01] meso_ has joined the channel [02:02] ryan_gahl: or if .first and similar delegates the callbacks to internal listeners... yeah ok sorry ngw... spoke too soon about a lib i've not used :( [02:02] ryan_gahl: 11,00•12,00aheckmann11,00• right, good call [02:02] aheckmann: it's just a nicer api for mongo-db-native [02:02] aheckmann: which is all async [02:02] ryan_gahl: ACTION puts the gallows away [02:03] aheckmann: haha [02:03] jamescarr: yeah, google wave reminds me at how much it sucks [02:04] brainproxy: wave is dead!! long live google wave!! [02:04] brainproxy: ;p [02:04] bmizerany has joined the channel [02:07] benburkert has joined the channel [02:09] dipser has joined the channel [02:09] keeto has joined the channel [02:09] dipser: throw new Error('removeListener only takes instances of Function') it is... [02:09] dipser: http://nopaste.info/b94232a908.html on line 128 - 142 [02:15] telotism has joined the channel [02:15] telotism has left the channel [02:18] aheckmann has left the channel [02:19] saikat has joined the channel [02:20] TexasDayLily has joined the channel [02:20] knuckolls has joined the channel [02:20] phiggins has joined the channel [02:21] TexasDayLily: hi [02:22] rauchg_: ryah: 0.1.103 on a clean fedora, make test gives me [02:22] rauchg_: Path: simple/test-http-full-response [02:22] rauchg_: AssertionError: 0 == 3 [02:23] x_or has joined the channel [02:24] TexasDayLily: dipser: hi [02:24] TexasDayLily: dipser: I'm testing the wargamz.mape.me [02:25] dipser: who are you?! [02:26] dipser: have fun testint ^^ [02:26] TexasDayLily: I've never been here before, but I attended a meeting talking about node.js in Dallas [02:26] TexasDayLily: and sockets [02:27] dipser: im just a bloody beginner in node.js [02:27] TexasDayLily: Me too [02:28] dipser: if you have questions ask them someone else, i have no idea of what i am doing here exactly right now.. [02:28] dipser: nothing is working [02:28] paul___ has joined the channel [02:28] TexasDayLily: no problem. I'm just watching the website wargames.mape.me [02:29] dipser: its an great a [02:29] dipser: have a nice watch [02:30] ivan has joined the channel [02:30] chrischris has joined the channel [02:31] TexasDayLily: miche1l: hi [02:32] TexasDayLily: micheil: hi [02:33] benburkert has joined the channel [02:34] dannycoates has left the channel [02:37] aniero: ahh, turns out my problem was having the arguments to sys.inherits backward [02:37] c4milo has joined the channel [02:38] CrabDude has joined the channel [02:38] creationix has joined the channel [02:40] saikat: is there a way in node to stop accepting new connections, finish processing any callbacks on the event loop (sending messages to connected clients as necessary) and then closing? does exit already do this? [02:41] aniero: saikat: close on the server, probably [02:41] mjr_: yeah, just close the server [02:41] aniero: saikat: node's event loop quits when it doesn't have anything left to do (afaik) [02:41] TexasDayLily has left the channel [02:41] ben_alman has joined the channel [02:41] saikat: ok cool, thanks aniero [02:42] [[zz]] has joined the channel [02:51] SteveDekorte has joined the channel [02:51] saikat: so i have this code - http://gist.github.com/509153 . I capture SIGINT and my intention is to exit gracefully (close down the server, finish processing whatever i have left on the event loop, shut down). does process.exit close my process gracefully like this? [02:51] saikat: er, exit my process gracefully* [02:54] mjr_: after you call server.close, don't call process.exit() [02:54] mjr_: it'll exit on its own. [02:54] saikat: if i don't, my sigint just gets caught by my unhandled exception handler [02:54] saikat: and the process does not exit [02:54] saikat: and i just get a bunch of output telling me that connection was closed [02:54] saikat: or rather, connection refused [02:55] ben_alman has joined the channel [02:55] saikat: mjr_: it looks like this: http://gist.github.com/509155 [02:56] saikat: er ignore every other line - i have a sys.puts(JSON.stringify(err)) lurking in there that i forgot to remove [02:57] mjr_: after you call server.close(), any new connections will indeed be refused [02:57] saikat: but then i want my process to also exit [02:57] saikat: but gracefully [02:57] saikat: which is why i had that process.exit [02:57] mjr_: like a swan [02:57] saikat: it does not seem like it is exiting [02:58] mjr_: node will exit as soon as there's nothing else on the event loop [02:58] saikat: i'm pretty sure there is nothing left on the event loop [02:58] mjr_: If there are any otherconnections open, those will keep node running. [02:58] saikat: since i didn't make any actual calls [02:58] saikat: oh i see [02:58] saikat: though i don't believe i have any open - is there an easy way to check if the event loop has stuff left on it? [02:59] saikat: gracefully in my case means that i want to finish the event loop, then exit the process, even if there are clients connected (which there will often be since i'm using websockets/long-polling) [03:00] wattz: ... [03:00] wattz: String::Utf8Value is undefined.. [03:00] wattz: ACTION head hits wall [03:02] wattz: ACTION head hits wall [03:03] brainproxy: hey, you leave that nice wall alone! [03:03] brainproxy: besides, I don't want your germs on it when I'm bashing my noggen against it [03:03] ben_alman has joined the channel [03:03] mjr_: saikat: I dunno if there's any way to see what else is on the event loop [03:04] admc has joined the channel [03:04] mjr_: saikat: what is graceful about just dropping the client connections? Might as well just use the default SIGINT handler then. Shut 'em down. [03:04] saikat: mjr_: i agree, but before i drop the clients, i want to finish the event loop since some of my callbacks send responses to the clients [03:05] sh1mmer has joined the channel [03:05] mjr_: saikat: but you don't know if the clients got them [03:05] mjr_: or how long you'll need to wait for them to get it [03:05] sh1mmer: mjr_: you are right btw [03:05] saikat: i agree [03:05] saikat: but trying to send them at all [03:05] saikat: is better than not [03:05] sh1mmer: udp checksum is correct on ubuntu [03:05] saikat: in general, on a websockets connection [03:05] saikat: i [03:05] mjr_: That said, you could just do nextTick(function() { process.exit(); }) [03:05] saikat: don't know if clients get my messages [03:05] saikat: as far as i know [03:06] mjr_: sh1mmer: so on OSX they are just not computed, even if you have sysctl'ed it so? [03:06] sh1mmer: mjr_: indeed [03:06] mjr_: well, shit [03:06] sh1mmer: yeah seriously. [03:07] sh1mmer: mjr_: but it's also good to know that I'm not sending bogus packets [03:07] mjr_: saikat: if you do nextTick(), then you'll at least make it through your current trip through the event loop. [03:07] saikat: mjr_: so if i understand correctly, after i close my server, i'm insured that no other events are getting added to the event loop, and then nextTick will make sure whatever was left will get processed right? [03:07] mjr_: saikat: and then whatever happens, happens. [03:07] saikat: and then i forcibly do a process.exit [03:08] saikat: to close whatever long-lived clients were connected [03:08] saikat: ensured, not insured* [03:08] mjr_: saikat: doing server.close() just says not to accept any more connections. Each already established connection can make more events show up. [03:08] saikat: ah i see [03:08] saikat: but [03:17] ben_alman has joined the channel [03:18] softdrink1 has joined the channel [03:20] mikeal has joined the channel [03:20] siculars has joined the channel [03:22] ben_alman has joined the channel [03:28] tekky has joined the channel [03:29] ben_alman has joined the channel [03:30] dnolen has joined the channel [03:31] cataska has joined the channel [03:32] tmpvar has joined the channel [03:34] saikat: mjr_: btw, in case you were interested - my solution was simply to keep a var running = true, and then on SIGINT, i set running = false, and in my message handling code, i just don't do anything if running is false [03:34] mjr_: ok, cool [03:39] brickysam26 has joined the channel [03:40] c4milo has joined the channel [03:40] brickysam26: I was wondering if anyone knows why the headers are not being updated on install [03:44] ngw has joined the channel [03:45] cloudhead: brickysam26: what headers? [03:45] ngw: hi again [03:46] ngw: what's your suggestion for a mongodb driver ? [03:46] softdrink has joined the channel [03:48] ryan_gahl: 11,00•12,00ngw11,00• did you catch my final comments... where i rescinded my berating of mongoose? [03:48] ngw: oh, no I didn't [03:49] ryan_gahl: i made an assumption of 'sync-ness' based on your gists... turns out it's probably fine (async API that's sort of masked a bit) [03:49] nuxusr has joined the channel [03:49] nuxusr: what environment do most of you do your c/c++ module developement in? [03:50] cloudhead: vi? [03:50] cloudhead: + valgrind [03:51] mjr_: I use textmate because of my OSX-nes [03:51] ngw: oh, no problem [03:52] ngw: so I'll keep mongoose [03:56] ngw: ok ryan_gahl I've read the logs [03:56] ngw: thank you [03:56] ngw: so when I want to actually make the query I have to call first with a callback right ? [03:57] ngw: and that operation is blocking [03:57] steadicat has joined the channel [03:57] ngw: while my Foo.find is non blocking [03:58] ryan_gahl: well, again, i don't know the api fully, but it looks like either .first() delegates your callback to a listener that fires when exec's async call comes back [03:58] ryan_gahl: no no - if aheckman was correct, basically it non-blocking [03:58] ryan_gahl: I don't know about your Foo.find [03:58] ryan_gahl: didn't see that [03:59] ryan_gahl: so .exec() fires of an async operation (non-blocking)... [03:59] ngw: no I think it's clear [03:59] ngw: exec() is completely not needed [03:59] Tobsn: im going crazy right now with exec() [03:59] ryan_gahl: the .first(callback) wires a listener (i.e. callback) [03:59] Tobsn: d = 'Country: UNITED STATES (US) City: Chicago IP: 123.123.123.13 - US'; - someone tell me to match Chicago and the US [04:00] ryan_gahl: 11,00•12,00ngw11,00• i don't know if exec is needed - haven't looked at the api, just going off your gists [04:00] Tobsn: city = /City: ([a-zA-Z].+[a-zA-Z]+) IP:/.exec(d); returns: "City: Chicago IP:" [04:00] Tobsn: wtf? [04:00] mikeal: i love textmate [04:00] _announcer: Twitter: "diving in to nodejs to see what it can do for me" -- Dao Minh Ngoc. http://twitter.com/niceboomer/status/20359841084 [04:00] mikeal: i'm pretty sure this is the version I'll be using for the next decade tho [04:01] mjr_: yeah, TM2 is never coming out. [04:01] mjr_: Soon someone will make a node-based editor that we'll all switch to. [04:01] ngw: I think the guy hired ciaran walsh to work on it [04:01] ryan_gahl: bespin [04:02] mikeal: maybe text editors will be the new databases [04:02] mikeal: NoEMACS [04:02] mikeal: everyone will write one [04:03] ngw: Emacs is the new operating system [04:03] mjr_: and then have arguments about which one they should choose because they are all the same [04:03] ryan_gahl: i use Word Perfect 91 [04:03] mikeal: and 10gen will write one that corrupts all your text files and be like "you're suppose to run two slave editors on different boxes" [04:03] ngw: lol [04:03] knuckolls has joined the channel [04:04] ngw: let's just hope oracle stays out of it [04:04] mikeal: you won't be a proper enterprise company unless you pay a million a year for Oracle's editor [04:04] mjr_: I still type emacs for quick edits from the command line, and then load up all 40MB of it or whatever. [04:06] mikeal: i use vi for that [04:06] mikeal: same deal tho [04:07] DraX: emacs binary is only 14m [04:07] DraX: :P [04:07] DraX: though it comes with 84m of elisp [04:07] ryan_gahl: but on 64bit machines that's 400M [04:07] ryan_gahl: :P [04:08] DraX: this is a 64bit machine [04:08] DraX: and notebly that 14m is a dumped binary [04:08] DraX: the bootstrap emacs is much smaller [04:09] ryan_gahl: ACTION whacks DraX with a solid block of wood for not seeing my (admittedly lame) joke [04:09] mjr_: I thought I measured it at 40MB RSS, but whatever. [04:09] DraX: damn, i don't have an emacs build tree around [04:09] DraX: but i think tmacs is <1mb [04:09] mjr_: I run textmate on OSX along with Safari and stuff, so I clearly don't care about memory usage. [04:09] mjr_: Not really. [04:09] DraX: well, once you load it it lodas in a lot of elisp in [04:09] DraX: not all of the elisp it had [04:09] DraX: since a lot of that has autoload rules [04:10] DraX: ryan_gahl: i got the joke, just opted to contest any insults to my lord and savior [04:11] DraX: :P [04:11] mikeal: mjr_: hahaha [04:11] ryan_gahl: oh cool, I also use Jesus for text editing [04:11] ryan_gahl: oh wait [04:11] BrianTheCoder has joined the channel [04:11] DraX: i use emacs for irc, IM, email, text editting [04:12] DraX: playing music [04:12] ryan_gahl: ACTION is done with lame humor attempts for at least the next 10 minutes [04:12] mjr_: I used to be emacs guy, and then I sold out and got a Mac because I got sick of fixing my computer all the time. [04:12] DraX: occasionally i even program in it :) [04:13] mjr_: I often fire up emacs just to run gdb on node [04:13] mjr_: the gdb integration is pretty great [04:13] DraX: gud-mode, ftw [04:13] DraX: someone should do a slime-mode for node [04:14] DraX: slime mode would be so much better if i didn't have to write common lisp to use it [04:15] benburkert has joined the channel [04:16] JimBastard has joined the channel [04:17] ryan_gahl: fricken, wtf? http://common-lisp.net/project/slime/images/more-slime.png [04:18] ryan_gahl: lisp is not readable lol [04:19] DraX: that's really not that bad, but it's very `meta' lisp [04:20] _announcer: Twitter: "node_mailer v0.2.0 - send emails from #node.js to your smtp server, simple as cake. http://github.com/marak/node_mailer #nodejs #javascript" -- marak squires. http://twitter.com/maraksquires/status/20361036700 [04:21] DraX: there is a great screencast of live-developing a web app using slime mode on a remote host [04:21] DraX: run swank on the sbcl instance on the server, connect to it over tcp, and just build the entire app live [04:21] DraX: it's pretty awesome [04:22] DraX: http://www.cl-user.net/asp/Dtov/sdataQIv9-SnuOsUpDQ3PQRpX8yBX8yBXnMq=/sdataQu3F$sSHnB== that one [04:23] DraX: i think [04:23] lachlanhardy has joined the channel [04:28] astrolin has joined the channel [04:33] SamuraiJack has joined the channel [04:34] cardona507 has joined the channel [04:34] mscdex: node.js rules! [04:34] cardona507: +1 [04:34] cardona507: node.js FTW [04:34] mscdex: yarly [04:35] dgathright has joined the channel [04:36] ryan_gahl: 11,00•12,00mscdex11,00• I see your setInterval timer went off again [04:36] mscdex: well i'd hope so, otherwise that'd mean there's a bug in the setInterval implementation [04:36] ryan_gahl: :) [04:37] JimBastard: everybody stop [04:37] JimBastard: its node time [04:38] mscdex: node way [04:38] cardona507: :) [04:39] ryan_gahl: I <3 flying toasters [04:41] tmpvar: creationix, added a package.json to conductor [04:42] tmpvar: so its now published in npm :) [04:42] mscdex: ryan_gahl: what about flying toast? [04:42] creationix: :) [04:42] mscdex: ryan_gahl: http://www.youtube.com/watch?v=j5cCOpjClIQ [04:43] ryan_gahl: but can flying toast send email with javascript? [04:43] _announcer: Twitter: "#reddit node_mailer - a simple way to send emails from node.js to an smtp server: submitted by JimBastard ... http://bit.ly/boGjJS #rulez" -- REDDITSPAMMOR. http://twitter.com/REDDITSPAMMOR/status/20362386865 [04:44] aglemann has joined the channel [04:44] aglemann has left the channel [04:44] benburkert has joined the channel [04:45] mscdex: ryan_gahl: give JimBastard some time and it'll happen [04:45] littlebir has joined the channel [04:46] JimBastard: mscdex: whats up? [04:46] littlebir: How do you handle sessions with Express or node.js? [04:46] benburkert has joined the channel [04:46] derferman has joined the channel [04:46] JimBastard: littlebir: with javascript [04:46] derferman has left the channel [04:46] ryan_gahl: 11,00•12,00littlebir11,00• check out Connect [04:46] JimBastard: http://github.com/senchalabs/connect [04:47] JimBastard: if someone can get me the api to talk to the toaster im all over it [04:47] ryan_gahl: oooh, like an X10 enabled appliance? [04:49] ryan_gahl: who was working on home automation via node? [04:49] ryan_gahl: "your toast is ready" [04:50] mscdex: can i use node.js to control applicances via X10 that in turn control the computer node.js is running on? [04:50] mscdex: :-D [04:50] [[zz]] has joined the channel [04:50] mscdex: the circle is complete! [04:51] jesusabdullah: X10? [04:51] mscdex: http://en.wikipedia.org/wiki/X10_Wireless_Technology [04:51] jesusabdullah: Wasn't that like a POS webcam that was being marketed as a way to catch your neighbor suntanning in the backyard? [04:52] jesusabdullah: HAHA YES [04:52] mscdex: and http://en.wikipedia.org/wiki/X10_(industry_standard) [04:53] mscdex: i used to have some of those power line adapters shown at the latter link [04:53] jesusabdullah: Huh [04:53] jesusabdullah: That actually sounds kinda cool [04:53] jesusabdullah: despite the skeevy ads [04:55] littlebir: How come express doesn't have session handling if it's built off of connect? [04:55] littlebir: built on* [04:55] littlebir: just not in there yet? [04:55] royi has joined the channel [04:57] royi has left the channel [04:58] ryan_gahl: AFAIK, Express just recently got ported to Connect - and I can't speak to it's handling of sessions because i've not used Express at all [04:59] mischievious has joined the channel [04:59] mischievious has joined the channel [04:59] tjgillies has joined the channel [05:00] saikat has joined the channel [05:00] jakehow has joined the channel [05:02] Bzzza has joined the channel [05:02] jamescarr: littlebir, express has session handling [05:02] jamescarr: but you need to configure it to work [05:02] jamescarr: you have to enable sessions, much like PHP's session_start() [05:03] jamescarr: (but not as shitty) [05:03] hdon has joined the channel [05:05] polotek has joined the channel [05:06] rednul has joined the channel [05:06] creationix: it's connect that has sessions [05:06] creationix: express just uses the connect session [05:07] b_erb has joined the channel [05:10] [[zz]] has joined the channel [05:11] hansek has joined the channel [05:11] dgathright has joined the channel [05:11] JimBastard: http://jobs.github.com/positions/c97c8d2e-a04f-11df-8c60-be468719ed86 [05:11] JimBastard: lol [05:12] jesusabdullah: yobs they say?? [05:12] JimBastard: ohh its private nm [05:13] polotek: yeah I was wondering if I was missing something [05:13] polotek: is it a node job? [05:13] jesusabdullah: Sounds fun :) [05:13] JimBastard: ninja training [05:13] jesusabdullah: I'll have to try brushing up my resume [05:13] jesusabdullah: XD [05:13] jesusabdullah: and by that, [05:13] jesusabdullah: I mean, "make some more templates" [05:13] JimBastard: github = resume [05:14] polotek: word. I hope github starts doing more stuff like this to leverage their influence [05:15] JimBastard: OHHH SHIIIIIT [05:15] JimBastard: http://github.com/languages [05:15] JimBastard: JAVASCRIPT WENT UP 1% AND RUBY WENT DOWN [05:15] JimBastard: WHAT NOW [05:15] jesusabdullah: JimBastard: I'm supposedly an engineer! Engineers fucking love resumes [05:15] _announcer: Twitter: "@mountain you might like this: http://howtonode.org/deploying-node-with-spark #nodejs" -- Bruce Wang. http://twitter.com/number5/status/20364139786 [05:15] JimBastard: ruby is down from 19% [05:15] jesusabdullah: They also get mass boners from high GPAs [05:15] JimBastard: i did my part [05:15] polotek: JimBastard: I give it 18 months and we'll be firmly in the lead [05:16] JimBastard: polotek: 3 months and we winning [05:16] derferman_ has joined the channel [05:16] jesusabdullah: oooh shit 1% apart [05:16] keeto has joined the channel [05:16] JimBastard: + whenever they recrunch [05:16] polotek: JimBastard: you better get to work then homie [05:16] JimBastard: fuuuuckkkk [05:16] marshall_law has joined the channel [05:16] JimBastard: lol [05:16] jesusabdullah: Coulda sworn JS was like #5 last I checked :/ [05:17] jesusabdullah: Guess I was thinking pythons) [05:17] polotek: Yeah I think js has always been pretty high. [05:17] polotek: plugins for js libs like jquery and mootools [05:17] jesusabdullah: right [05:18] polotek: plus all the js code that ends up people's web projects counts [05:18] jesusabdullah: Yeah, true [05:18] mtodd has joined the channel [05:18] jesusabdullah: ooh, I should add link data to my resume [05:18] polotek: I wish perl would just die already [05:18] jesusabdullah: perl will rise again [05:19] jesusabdullah: fbofw [05:19] jesusabdullah: perl6 anyway [05:19] polotek: don't hold your breath [05:19] jesusabdullah: Funny thing is, it really does seem to be dying [05:19] jesusabdullah: which is almost sad [05:19] polotek: Not that perl doesn't have some cool stuff [05:19] jesusabdullah: not that I have any nostalgia (never learned it) but, I mean, it had its heyday y'know? [05:19] polotek: It's just such a pita to get good at [05:19] polotek: who needs the aggravation [05:20] amerine has joined the channel [05:20] jesusabdullah: A lotta hackers rocked perl [05:20] jesusabdullah: and I can't help but feel like, just maybe, I missed something [05:20] mscdex: we need a network monitor system like nagios but written with node! [05:21] polotek: I missed a lot of stuff. Perl I do not regret. [05:21] mscdex: must.....resist......coding.....one.... [05:21] polotek: Didn't really get into C until node [05:21] jetienne has joined the channel [05:21] polotek: mscdex: don't fight the urge [05:21] jesusabdullah: mscdex: I think the stackvm guys might be interested in something like that [05:22] mscdex: the problem is i have too many projects going on at once [05:22] mscdex: bleh [05:22] jesusabdullah: Yeah :/ [05:22] JimBastard: shiiiittt [05:22] jesusabdullah: node is getting in the way of me working :/ [05:22] JimBastard: i lost count years ago [05:22] mscdex: i need to finish my imap lib [05:22] mscdex: and i hate reading long rfcs [05:23] jesusabdullah: THOUGH! I think I might FINALLY have the matlab stuff out from under me [05:24] polotek: JimBastard: some of us are still forthing at the mouth for hook.io [05:24] polotek: that's your killer app man. you need to drop it already [05:25] JimBastard: polotek: close! [05:25] JimBastard: im getting closer [05:25] JimBastard: we are launching the hosting company very soon [05:25] mscdex: drop it like a double rainbow [05:25] JimBastard: once i can spawn instances like woah, its double hook.io time [05:25] JimBastard: everyone gets their own hook server [05:25] JimBastard: (if they want one) [05:26] JimBastard: ive been keeping my eye out, there are a few people who have entered the market already [05:26] JimBastard: i dont know anyone who is profitable yet though [05:26] JimBastard: (for doing pusher app like stuff) [05:28] jesusabdullah: webhooks, right? [05:30] jamescarr: high GPas [05:30] jamescarr: hahaha [05:30] jesusabdullah: engineers, jamescarr [05:30] jesusabdullah: engineers [05:30] jamescarr: companies that hire based on GPAs are pretty useless [05:31] jesusabdullah: engineers live in a completely different world from software types, I believe [05:31] jamescarr: not really [05:31] jesusabdullah: I think GPA is relatively meaningless personally [05:31] jesusabdullah: but for some reason every PE I've talked to is nuts about it [05:31] jesusabdullah: :/ [05:32] jamescarr: jesusabdullah, then you are interviewing at the wrong companies [05:32] jamescarr: any manager worth his salt know that real world experience, natural talent, etc trump a high GPA [05:32] ryan_gahl: GSDPA is better [05:33] ryan_gahl: getting shit done point average [05:33] jamescarr: 70% of the time, all a high GPA indicates is that someone was good at showing up and doing what theyr'e told [05:33] jamescarr: which makes them perfect for the average corporate factory job [05:33] ryan_gahl: IRC points are good too [05:34] jimt has joined the channel [05:34] ryan_gahl: 11,00•12,00jamescarr11,00• for a college kid, there's not a whole lot to base a decision on [05:34] matt_c_ has joined the channel [05:34] amerine: GSDPA with an IRC bonus ha! [05:34] polotek: gpas aren't worthless. they're just given too much weight [05:34] ryan_gahl: other than in depth aptitude tests for the job [05:35] astrolin has joined the channel [05:35] polotek: there are lots of things that can speak to your efficacy in a position [05:35] jamescarr: ryan_gahl, for a college kid, I'd pair in with him on a small software problem [05:35] polotek: hard work to excel in a challenging program at a good university is just one of them [05:35] polotek: and it shouldn't be the bar for everyone. [05:35] jamescarr: if he does good and has the indicators that he can learn quickly, he's in [05:35] polotek: plus it loses it's effectiveness if the program/university is shitty [05:35] ryan_gahl: 11,00•12,00jamescarr11,00• right, but just saying GPA probably has some weight (as a barometer though rather than thermometer) [05:36] jetienne: you dont learn computer in school [05:36] jamescarr: ryan_gahl, eh, in my experience GPA has never held its weight [05:36] jamescarr: I've worked with guys who had 4.0 GPAs that were of your usual bargain basement variety developers [05:36] jetienne: if they ask for GPA, ask for a raise this mean the job gonna hard [05:37] jetienne: hard=be hard [05:37] jamescarr: one of the brightest developers I worked with never even went to college [05:37] ryan_gahl: 11,00•12,00jamescarr11,00• don't get me wrong, I think college as a whole is a waste (joined military myself, got a hell of a lot better education that way) [05:37] tpryme has joined the channel [05:38] ryan_gahl: (granted, i got into the nuclear power program, but point being on my resume it shows I was doing stuff while others were going to frat parties) [05:38] mikeal: what is that library for sandboxes node [05:38] mikeal: it creates a subprocess and a context and all that good stuff [05:38] benburkert has joined the channel [05:39] jesusabdullah: I think realistically GPA is of low weight, but some people really like the idea of distilling someone's value into a number or a collection of numbers [05:39] jesusabdullah: and check marks [05:40] jesusabdullah: which is what a resume does [05:40] ryan_gahl: and those are not people you want to work for [05:40] jesusabdullah: Well no [05:40] mikeal: most of the good developers i know are drop outs :) [05:40] jesusabdullah: but I gotta pay off loans somehow [05:40] ryan_gahl: sure, nothing wrong with a stepping stone job [05:40] amerine: vicious cycle [05:40] jesusabdullah: also, most corps hire HR people, which aren't really going to be your Actual Employers [05:40] jesusabdullah: amerine: Only if you let it be [05:40] jesusabdullah: ACTION & [05:41] jamescarr: jesusabdullah, good companies dont hire through HR [05:41] mikeal: we only hire people with open source code [05:41] jamescarr: when an HR person asks me for number of years of experience, I get the hint [05:41] mikeal: we just won't hire someone who we can't see all the work they've done [05:41] mikeal: it's too risky [05:41] jamescarr: they've ran out of ideas and are playing a game of "guess what number i'm thinking" [05:41] mikeal: especially for engineering hires [05:42] mikeal: but we do the same for sales and marketing, only people from open source [05:42] ryan_gahl: 11,00•12,00mikeal11,00• company? [05:42] jamescarr: mikeal, really??? [05:42] SubStack: worse, companies that are bad at hiring will have bad hires and will be bad places to work as a result [05:42] mikeal: we don't care about school, or GPA, or anything [05:42] SubStack: it's a vicious cycle [05:42] mikeal: we don't even look [05:42] mikeal: couch.io [05:42] mikeal: we're hiring too :) [05:42] ryan_gahl: oh nice [05:42] ryan_gahl: remote? [05:42] mikeal: http://www.couch.io/jobs [05:42] jamescarr: mikeal, reminds me of the last time I was travelling, met a sales rep for JBoss [05:42] mikeal: we have one dude in thailand, two in berlin, one in portugal [05:43] ryan_gahl: love your job descriptions [05:43] shreekavi has joined the channel [05:43] mikeal: you should see our titles [05:43] ryan_gahl: Database Internals Engineer: "you are a weird guy..." [05:43] mikeal: http://www.couch.io/about [05:44] ryan_gahl: LOL "Vice President of Pastries and Automating Stuff" [05:44] ryan_gahl: you guys rock [05:44] ryan_gahl: how's business? [05:44] jamescarr: mikeal, I've been out of the loop for some tiem I guess... I thought Damien worked for IBM? [05:44] SubStack: fuck yeah automated pastries [05:44] ryan_gahl: X10 pastries [05:44] mikeal: he started this company in December [05:45] mikeal: we're doing quite well [05:45] mikeal: our VC are very happy [05:45] ryan_gahl: http://www.weebls-stuff.com/wab/pastry/ [05:45] jamescarr: cool [05:45] mikeal: we're not even raising yet and everyone wants to throw money at our next rond [05:46] JimBastard: ahahaha [05:46] ryan_gahl: fuckin hate it when people are always trying to throw money at me when i'm not even raising [05:46] JimBastard: im totally go for dev manager but im too busy for that [05:47] jetienne: mikeal: CouchDB's default view server uses Mozilla's Spidermonkey Javscript library which is written in C <- is it still the case [05:47] mikeal: yes [05:47] mjr_: just until mikeal can rewrite it in node [05:47] mikeal: JimBastard: you can't be my boss :) [05:47] mikeal: i won't allow it [05:47] mikeal: actually, i don't know if that person would be my boss [05:48] jetienne: mikeal: you are founder [05:48] jetienne: ? [05:48] mikeal: mjr_: it requires a blocking readline() call [05:48] mikeal: jetienne: i'm the first employee [05:48] mjr_: yeah, I saw that, but surely there's a way to work around that in a node-ish way. [05:48] mikeal: and i write code but i also do a lot of evangelism and other stuff [05:48] mikeal: so it's unclear if i would be under the engineering manager [05:48] mikeal: i think part of what i do would be, i don't think we'll have a strict heirarchy [05:49] mikeal: i think the purpose of the position is to stay on top of all the stuff we write and make sure it doesn't fall on the floor [05:49] mikeal: mjr_: there really isn't [05:49] mikeal: you would have to change the API [05:49] mikeal: and that would break every list function people have written for their applications [05:49] mjr_: maybe you could wrap it somehow like a coffescript or something [05:50] mjr_: so existing list functions still work, but inside of node they end up doing something else. [05:50] mjr_: Anyway, I don't know what I'm talking about. I just discovered builtin reduce functions today, so I'm behind the couchdb curve. [05:51] mjr_: But I'm going to couchcamp, so that ought to reset it. [05:52] mikeal: no dude, really [05:52] peutetre has joined the channel [05:52] mikeal: you just can't [05:52] mikeal: you need something along the lines of Promise.wait() in order to implement it [05:52] _announcer: Twitter: "I just tried to install python on my embedded OpenBSD box so I could build node.js and perl dumped core." -- Dustin Sallings. http://twitter.com/dlsspy/status/20365992745 [05:52] mikeal: because the javascript has to stop in-line until the next readline call finishes [05:52] amerine: node doesn't work everywhere. [05:52] mikeal: it's just aweful [05:53] mikeal: a blocking readline call wouldn't be the end of the world [05:53] mikeal: if you're doing blocking readline you probably aren't doing anything else at the same time anyway [05:53] mikeal: it's like blocking file IO [05:53] mjr_: I guess we still have other filesystem sync operations [05:53] mikeal: sometimes it's just way easier or even necessary and the perf hit is fine under that condition [05:54] mjr_: in that there is actually no perf hit for this use case [05:54] jesusabdullah: I agree spiritually that an idea company, and really, the sort of people I would want to work for, won't have the hiring practices of a boring, stuffy HR office. However I do feel like they're a reality, and a common one. If I blew off every company that was big enough to hire through HR, well, that'd be a lotta company [05:54] jesusabdullah: I guess that's all I'm saying [05:54] polotek: mikeal: you can just do it right? if it's for couch specifically and you fully understand the implications [05:54] mikeal: i don't have time to write a cross-platform blocking readline binding in C++ for v8 [05:55] mikeal: if i did have time, it'd already be written [05:55] polotek: jesusabdullah: I hear you. The cool companies need to form an exclusive club and post a list [05:55] jesusabdullah: polotek: and I wouldn't be invited. Not cool enough. XD [05:55] mikeal: i'm hoping isaacs does it when he does the other stdio work [05:55] jesusabdullah: Maybe I just need to do something Actually Cool first [05:55] mikeal: mjr_: i only figured out about the builtin reduce a few weeks ago :) [05:55] jetienne has joined the channel [05:56] mikeal: that flew under the radar [05:56] mikeal: that's why i blogged about it [05:56] polotek: jesusabdullah: no the companies are cool [05:56] polotek: so that we know who they are we can actively pursue employment there [05:57] polotek: if we get rejected that's on us [05:57] polotek: gotta step up our game [05:57] Blink7 has joined the channel [05:57] pkrumins: anyone expert on npm? [05:57] polotek: But identifying the awesome opportunities is what's hard right now [05:57] jesusabdullah: hmm [05:57] jesusabdullah: That's true [05:57] jesusabdullah: Oh, if only I was cut out for not-corporate :( [05:58] pkrumins: when i do `npm install package` and it depends on `foo` and `bar`, npm installs `foo@version`, `bar@version`. But the `package` can't recognize @version crap [05:58] pkrumins: and it says foo was not found and bar was not found [05:58] jesusabdullah: Weird :S [05:58] jesusabdullah: Can you require('foo')? [05:59] jesusabdullah: or require('bar')? [05:59] kriskowal_ has joined the channel [05:59] pkrumins: nope [05:59] jesusabdullah: but foo and bar are supposedly installed? [05:59] pkrumins: yep! [05:59] jesusabdullah: What if you reinstall them separately? [05:59] jesusabdullah: <_> [05:59] pkrumins: -_- [06:00] polotek: pkrumins: it sounds like the dependencies aren't activated [06:00] jesusabdullah: Hey, I ain't no expert :( [06:00] polotek: try npm activate foo@version [06:00] polotek: that will allow you to do require('foo') [06:00] polotek: because npm can manage multiple versions [06:00] polotek: one of them has to be "active" to drop the version requirement [06:01] pkrumins: trying [06:01] tpryme: mape: Was playing around with your node-profile tool [06:01] jesusabdullah: hmm [06:01] mape: tpryme: Got it working? [06:02] tpryme: mape: I had to make a few changes to get it to profile a long-running process like a connect app [06:02] tpryme: mape: Specifically, [06:02] mape: Really? I used it last night with an express app [06:02] pkrumins: polotek: that worked [06:02] pkrumins: but a new trouble [06:02] jesusabdullah: I should give tech writing a shot [06:02] jesusabdullah: Seems like something I could be good at [06:02] tpryme: mape: hold on lemme send you a gist of my diff file [06:03] mape: tpryme: what failed when you were using the original code? Couldn't you just start it, and after a while do ctrl+c and have it profile? [06:04] tpryme: mape: No, it would give me some error [06:04] SubStack: jesusabdullah: build more robots [06:04] mape: tpryme: The python script? [06:04] _announcer: Twitter: "Said the suspect? node.js 0.1.103 released http://plurk.com/p/6r0rvy" [zh-TW] -- Hsu Ping Feng. http://twitter.com/fillano/status/20366566404 [06:04] tpryme: mape: http://gist.github.com/509316 [06:05] tpryme: mape: Lemme try to get the exact error for you [06:05] tpryme: mape: 1 sec [06:05] mape: Awsome [06:06] jesusabdullah: SubStack: But the connectspam! >_< [06:06] slaskis has joined the channel [06:06] bpot has joined the channel [06:06] jesusabdullah: SubStack: Threw node on modzer0. There's a new promblem I gotta track down now though :S [06:07] jesusabdullah: SubStack: Like, it wasn't there before! Really! [06:07] polotek: jesusabdullah: I think I would be really good at tech writing too [06:08] polotek: but any job I took would have to keep a healthy portion of code writing [06:08] SubStack: pkrumins: I meant the other kind of robots but irc ones are fun too! [06:08] mape: tpryme: also yours save the output to a file instead of stdout? [06:09] tpryme: mape: Yeah, wanted to browse it in a file, cuz the output of mine was long [06:09] jesusabdullah: polotek: If I wanted to I could easily volunteer to work with documentation, but the fact that I'm not, I think, suggests that maybe it's not my gig [06:09] tpryme: mape: Could probably incorporate that as an option [06:09] mape: yeah, do -o file.txt or something [06:09] jesusabdullah: The problem is that I don't want to learn about something *just* for the sake of writing about how it works [06:10] tpryme: mape: Actually, here's an error I get now and then in both versions [06:10] tpryme: mape: http://gist.github.com/509322 [06:11] pkrumins: SubStack: you meant to send the message to jesusabdullah! [06:11] tpryme: mape: Like 50% of the time, I get errors thrown while parsing the file [06:11] tpryme: mape: Haven't been able to figure out why [06:11] hippondo` has joined the channel [06:11] mape: tpryme: yeah that has nothing to do with my code though [06:12] mape: it does the same if you do it manually [06:12] tpryme: mape: Do you ever experience similar errors when running it? [06:12] mape: Think it has to do with it shutting down unexpectantly [06:12] tpryme: mape: Other than that minor hiccup on my machine, the output's great [06:12] mape: Not the newline, but the list out of bounds error [06:13] jesusabdullah: SubStack: Not robots! BACKSTREET CHOPPERS [06:13] jesusabdullah: VROOM VROOM [06:13] mape: But yeah, like I said it is the same if you do it manually, not sure how to fix that [06:13] SubStack: pkrumins: >_< [06:13] mape: The docs on the profiler is kinda poor [06:13] mape: Just a howto more or less [06:17] mape: Even deciphering the profile results seem like a mystery [06:19] jan247 has joined the channel [06:20] amerine has joined the channel [06:23] tpryme: mjr_: Weren't you looking for a binary search c++ addon for node the other day? [06:23] mape: tpryme: what system were you running the new code on? [06:23] tpryme: mape: On ubuntu lte [06:23] joshbuddy has joined the channel [06:23] kriskowal has joined the channel [06:24] mape: k [06:25] mokys has joined the channel [06:26] tpryme: mjr_: or was that someone else? [06:27] pufuwozu has joined the channel [06:28] polotek: jesusabdullah: I love writing about how things work [06:28] polotek: it affirms my understanding of it [06:29] polotek: and starts debate that serves to increase my understanding of it [06:29] polotek: but it has to be combined with real experience [06:29] polotek: hence my wanting to also be able to write significant code [06:32] huyhong has joined the channel [06:32] polotek: mape: I agree the profiler is an enigma [06:32] polotek: someone who knows should write a tutorial about it [06:32] mape: yeah [06:34] mokys has joined the channel [06:36] ph^ has joined the channel [06:38] silentrob has joined the channel [06:40] _announcer: Twitter: "@ Tricipta hehe .. Issue ngebongkar ketauan time, because it can run the ga node.js in heroku, so in a local: D" [id] -- Fares Farhan. http://twitter.com/ffarhanh/status/20368222340 [06:43] _announcer: Twitter: "nodejs + coffeescript is so sweet, no sugar required #coffeescript" -- Ryan Greenhall. http://twitter.com/ryangreenhall/status/20368334651 [06:45] SubStack: ick, sweet coffee [06:46] dmshann0n has joined the channel [06:46] _announcer: Twitter: "Installing node.js again to test my qx oo script. It's already working in Rihno. :)" -- Martin Wittemann. http://twitter.com/wittemann/status/20368515787 [06:48] wilmoore has joined the channel [06:51] mikeal: why the hell does the querystring.stringify make true values 1? [06:52] kriskowal has joined the channel [06:54] reid: true = "true" ? [06:54] micheil has joined the channel [06:54] deepthawtz has joined the channel [06:55] reid: well: true != "true" && true == 1 [06:55] reid: eh, [06:55] reid: i'm sleepy and wrong. [06:55] reid: more like false != "false" [06:56] reid: but false == 0 [06:57] tahu has joined the channel [06:58] reid: sleep invoked by pid 0 [06:58] reid has left the channel [07:03] dgathright has joined the channel [07:03] mikeal: querystring.stringify("key":true) == "key=1" [07:03] mikeal: that's not right [07:04] mikeal: fictorial isn't around [07:10] _announcer: Twitter: "Digging into node.js ... Server-Side Javascript on the Google V8 Engine sounds fun :)" -- Julien Vignali. http://twitter.com/nashfive/status/20369493184 [07:11] tocho-san has joined the channel [07:14] cardona507 has joined the channel [07:17] shockie has joined the channel [07:21] FransWillem has joined the channel [07:21] kriskowal has joined the channel [07:23] kreyman: anyone had problems building node on openbsd? [07:25] _announcer: Twitter: "Aha ~ NodeJS Rights ~ just too simple secondary development of LBS than in the past also cool ~" [zh-CN] -- Kristy Swan. http://twitter.com/LonelySwan/status/20370172978 [07:26] _announcer: Twitter: "I promised myself never to touch the JavaScript. Then came node.js .... # Nodejs" [fr] -- Pierre-Loic Doulcet. http://twitter.com/hexapode/status/20370213554 [07:27] ph^ has joined the channel [07:28] pufuwozu has joined the channel [07:29] virtuo has joined the channel [07:30] kevm_ has joined the channel [07:33] tocho-san has joined the channel [07:36] tahu has joined the channel [07:38] polotek: kreyman: lots of people have [07:38] polotek: I'm not the guy to help [07:38] polotek: but there are guys [07:38] creationix has joined the channel [07:38] polotek: try the mailing list [07:38] kreyman: ok [07:38] kreyman: thanks [07:38] polotek: word [07:40] _announcer: Twitter: "No access two IRC? Weblurk node.js Wed freenode -> http://northpole.sg/3Z (socket.io fun) # node.js" [no] -- Kenny Shen. http://twitter.com/kenny_shen/status/20370755043 [07:40] teemow has joined the channel [07:41] polotek has left the channel [07:42] joshbuddy has joined the channel [07:45] voxpelli has joined the channel [07:45] Tim_Smart has joined the channel [07:48] pdelgallego has joined the channel [07:51] javajunky has joined the channel [07:53] maartenm has joined the channel [07:54] maartenm: what's a good template engine to use with node.js ? [07:54] maartenm: I feel awkward building html with it [07:54] maartenm: also is node.js fast enough at static resources? [07:56] jetienne: maartenm: look at connect or express [07:56] jetienne: maartenm: nodejs is a "javascript on server", this is not like rails or other. [07:56] javajunky: maartenm: connect running express my friend, connect will serve the static resources as fast as hell, and express will give you a nice standard way of serving up templated content. [07:57] maartenm: ok [07:57] jetienne: javajunky: connect use sendfile? [07:57] maartenm: I only built node.js yesterday [07:57] maartenm: still not sure how to use it [07:57] maartenm: as a full server stack or as the dynamic component in something else [07:57] maartenm: I'll check out connect/express combo [07:57] maartenm: first I heard of it.. [07:58] javajunky: jetienne: not sure, sendfile would have to be active built into node, if it is, then it will do. [07:58] javajunky: maartenm: no one is quite sure yet, the recommended route is as a dynamic component, but I know a lot of us are using as a full server side stack. [07:58] jetienne: http://blog.kadirpekel.com/2010/07/28/meryl-a-thin-web-layer-for-nodejs/ [07:59] maartenm: broken link on express github btw, to Connect: http://github.com/extjs/Connect [08:00] jetienne: maartenm: this is the cache, extjs=senchalabs [08:00] maartenm: yes.. so Conenct is js too? [08:00] jetienne: http://github.com/senchalabs/connect [08:00] maartenm: and has fast enough IO? [08:01] jetienne: maartenm: nodejs is js using v8 engine (the same as chrome one) [08:01] jetienne: the io depends on your disk more than the js [08:02] tyfighter has joined the channel [08:02] maartenm: yeah well I have horrible experiences with static resources in Rails.. [08:02] maartenm: and for that matter, in Erlang too [08:02] jetienne: static files should likely be handled by another server [08:02] maartenm: but I'll check it out.. node is indeed fast, just thought it odd that the static IO component isn't hard [08:05] TomY has joined the channel [08:06] siculars has joined the channel [08:06] MrTopf has joined the channel [08:06] FransWillem has joined the channel [08:14] FransWillem: test [08:14] maartenm: pass [08:15] FransWillem: heh [08:15] FransWillem: morning [08:15] grahamalot has joined the channel [08:17] maartenm: jetienne: anything Meryl is that express/connect isn't? [08:17] pufuwozu has joined the channel [08:17] jetienne: no idea [08:18] micheil: meryl? [08:18] maartenm: btw where is the licensing information for node.js + related? [08:18] maartenm: is it MIT? can't find it [08:19] micheil: hmm.. [08:19] jetienne: nodejs is mit yes [08:19] jetienne: http://blog.kadirpekel.com/2010/07/28/meryl-a-thin-web-layer-for-nodejs/ <- micheil a new one [08:19] micheil: http://github.com/ry/node/blob/master/LICENSE [08:19] micheil: okay [08:19] maartenm: ah ok was looking at website [08:21] Bzzza has joined the channel [08:21] micheil: hmm.. jetienne I think I prefer express' syntax, personally. [08:21] micheil: it just looks cleaner compare to declaring method+url in just a string [08:23] maartenm: yeah strange decision [08:23] polotek has joined the channel [08:23] polotek has left the channel [08:26] dgathright has joined the channel [08:26] Bzzza has left the channel [08:27] Bzzza has joined the channel [08:29] kriskowal has joined the channel [08:29] lejoe has joined the channel [08:29] wilmoore has joined the channel [08:34] femto has joined the channel [08:35] _announcer: Twitter: "node.js evolve too. ww take v0.1.103 is released" [ja] -- KOBA789(こば). http://twitter.com/KOBA789/status/20373004212 [08:36] dgathright has joined the channel [08:38] slaskis has joined the channel [08:41] FransWillem: Anyone know how to create a new Event object in IE ? [08:43] maartenm: createEventObject iirc [08:43] maartenm: and instead of "dispatch", IE speaks of fire [08:45] FransWillem: bah :/ [08:45] robinduckett has joined the channel [08:45] maartenm: so obsessed with performance you don't want to use jquery? [08:46] _announcer: Twitter: "K http://chat.nodejs.org/ with Japanese" [ja] -- ww24@たけ. http://twitter.com/ww24/status/20373427143 [08:47] _announcer: Twitter: "More and more of my CouchDB view functions are unit tested with NodeJS. Not sure if that's good or bad." -- Jason Smith. http://twitter.com/_jhs/status/20373472260 [08:47] FransWillem: maartenm: Nah, implementing an object that should mimic the WebSocket API as closely as possible :) [08:49] mAritz has joined the channel [08:51] ako has joined the channel [08:56] SamuraiJack has joined the channel [08:57] markwubben has joined the channel [08:59] xla has joined the channel [09:00] jan247 has joined the channel [09:04] _announcer: Twitter: "Rewriting Manila (card game) engine into node.js. Clients share parts of AI with server. node.js is perfect for it! #nodejs" -- Maarten Mortier. http://twitter.com/maartengm/status/20374183420 [09:05] MattJ has joined the channel [09:07] maartenm: damn I can't think of a word.. you know in some games you have this 'room' you join with other people before commencing a game [09:07] maartenm: what's that called again? I'm looking for a js api that handles that stuff but can't think of the term [09:08] SubStack: staging aera? [09:08] SubStack: lobby? [09:09] maartenm: lobby! [09:09] maartenm: thanks [09:11] stride: :-D [09:12] Byron has joined the channel [09:13] DoNaLd` has joined the channel [09:15] mAritz: oh! oh! oh! *puts up hand as high as possible* [09:15] mAritz: i've got a word problem as well. [09:16] keeto has joined the channel [09:17] maartenm: yeah> [09:17] mAritz: since delete is a keyword, i had to name my method to delete a property in a db "remove". now i also have a method "add" that adds a relation to another object. and now i need one that removes the relation... remove2? removeRelation? killFriend? any better ideas? :D [09:17] maartenm: ? [09:17] maartenm: is it a parent relationship? [09:17] maartenm: you could do orphanize [09:18] mAritz: it can be either a parent or a child or a sibling [09:18] maartenm: there's a term for that.. [09:18] mAritz: family? slayfamily? [09:18] mAritz: divorce? [09:18] _announcer: Twitter: "Very pleased with some #node.js benchmarks we ran today. Also pleased that we've found an extra month for our plan. #fb" -- Gareth Jones. http://twitter.com/nomiddlename/status/20374796701 [09:19] maartenm: maybe "release" [09:19] maartenm: but there's an actual comp sci terminology for that operation [09:19] mAritz: okay, and what would that be? :) [09:19] maartenm: well I can't think of it either [09:19] maartenm: "unlink" sounds ok [09:20] maartenm: and "add" => "link" [09:20] mAritz: oh, that's neat. i'd have to rename add to link, but that seems very reasonable. [09:20] mAritz: yep :) [09:20] mAritz: thanks a lot. [09:20] mAritz: now: would i ever need named relations? i fear so :( [09:21] maartenm: it depends on your mood I guess.. if you go the java way you can camel-case methods starting with "remove" to infinity.. [09:22] SubStack: hooray, dnode 0.2 out [09:22] maartenm: if it's js I'd just make "unlink" smart enough to deal with text as well [09:22] SubStack: more tests, small protocol change [09:22] proppy has joined the channel [09:23] DoNaLd`: SubStack: some link to dnode 0.2 changelog ? [09:23] blackdog_ has joined the channel [09:23] mAritz: right now my code is completely agnostic of the kind of relationship two objects have. but if for example a blog entry could have n authors and n editors, which are all user objects and would be in the same relation pool, which obviously could be a problem in certain cases... hm... change it right now or whenever i need it? :P [09:23] SubStack: DoNaLd`: well the commits are at http://github.com/substack/dnode/compare/394a9cb719...ef4eda45d4 [09:24] SubStack: I actually need to fix one thing probably [09:24] SubStack: forgot about the web side of it >_< [09:24] DoNaLd`: SubStack: ok ..thnx [09:25] mAritz: oh, "unlink" is perfect. the named relations stuff is unrelated (haha) to that problem [09:25] SubStack: DoNaLd`: the only thing that changed in the interface is that now references in the obj part of DNode(obj) aren't automatically wrapped in a function [09:26] rnewson has joined the channel [09:27] SubStack: and some edge cases with function references so you can use removeListener correctly now [09:28] SubStack: I need some unit tests for the browser code. I always forget about it. [09:29] DoNaLd`: :) [09:30] _announcer: Twitter: "#redis #nodejs #croatia http://brukator.com/live/ lets you peek into chat.net.hr in real time, anonymously..." -- PSD u HTML. http://twitter.com/psd_u_html/status/20375286782 [09:31] ewdafa has joined the channel [09:36] tpryme: What 3rd party modules can help to hot load your node code in development? [09:39] maushu has joined the channel [09:42] omarkj: tpryme: Like, dynamically swap out code without restarting ? [09:43] tpryme: omarkj: Yeah, without manually restarting [09:43] tpryme: omarkj: Like in rails [09:43] omarkj: I'm not a rails user, but I see where you're going. [09:43] omarkj: This could help you: http://github.com/shimondoodkin/nodejs-autorestart [09:44] romainhuet has joined the channel [09:44] markwubben has joined the channel [09:45] micheil: tpryme: have a look on http://wiki.github.com/ry/node/module [09:45] micheil: erm [09:45] micheil: http://wiki.github.com/ry/node/modules [09:46] tpryme: omarkj: Thanks [09:50] FransWillem: Did anyone ever successfully implement multipart/x-mixed-replace with Node.js ? [10:04] maartenm: is there a free place to deploy node.js projects onto? [10:05] Roelven: Herok is rolling out a beta program for this [10:05] Roelven: Heroku* [10:05] omarkj: Mh, you can deploy to Herok. [10:05] hellp has joined the channel [10:05] omarkj: u [10:05] Roelven: heh :) [10:05] omarkj: That's what you get for having a weird name. [10:06] maartenm: ok, nice..d din't know heroku could host node [10:06] Roelven: http://blog.heroku.com/archives/2010/4/28/node_js_support_experimental/ yeah they're trying it out [10:07] MrTopf has joined the channel [10:07] omarkj: It's very new. [10:07] omarkj: And given how much node.js is changing I don't know how reliable it is. [10:07] MrTopf: hi [10:08] omarkj: Hey there! [10:12] [[zz]] has joined the channel [10:16] maartenm has joined the channel [10:17] maartenm: heroku is pretty sweet I'm sure they know what they're doing [10:17] maartenm: I sent them a mail [10:18] bradleymeck_ has joined the channel [10:20] omarkj: maartenm: Cool. [10:27] mAritz: SubStack: your dnode example for bidirectional communication confuses the hell out of me. [10:27] mAritz: maybe make the function/variable names a bit more descriptive? [10:28] SubStack: how would I make that more descriptive? [10:28] SubStack: it's pretty abstract [10:29] mAritz: xfxfffx= [10:29] mAritz: ? [10:29] mAritz: oh, and n [10:30] SubStack: oh I guess I could turn f into reply or some such [10:30] SubStack: or result [10:30] mAritz: just a tiny suggestion though. i'm sure their are more important things to do [10:30] mAritz: *there [10:43] mAritz: you're all internautes! EAT THAT [10:46] _alex: it tastes like cinnamon [10:48] jan247 has joined the channel [10:49] ryan[WIN]: anyone familiar with jquery .text() [10:49] mape: sure? [10:49] ryan[WIN]: can i make it preserve a newline thing or nay [10:49] mape: think it does yeah [10:50] ryan[WIN]: cuz i'm doing a .text("lol \n"); [10:50] ryan[WIN]: er [10:50] ryan[WIN]: cuz i'm doing a .text("lol \nlol"); [10:50] ryan[WIN]: and it's all on one line unless i'm a retard [10:51] stride: it doesn't specify newline behaviour in the .text docs [10:51] ryan[WIN]: yeah [10:51] SubStack: mAritz: new bidirectional example up since I was fixing those anyhow [10:51] SubStack: it actually does something useful [10:52] mape: it does contain the newlines if you do jQuery('div').text('test \n again \n test'); console.log(jQuery('div').text()); [10:52] voxpelli has joined the channel [10:52] ryan[WIN]: mape yeah it contains the newlines buti t doesn't render that way [10:52] mape: but firebug doesn't show the newlines in the HTML pane [10:53] mscdex: too many lols [10:53] ryan[WIN]: how do i intermingle because i don't want to have to do a bunch of divs or write my own filter [10:53] mape: ryan[WIN]: does if you put it into a
[10:53] ryan[WIN]: TRUE
[10:53] ryan[WIN]: totally forgot about that
[10:53] ryan[WIN]: :D
[10:53] mape: or just do white-space: pre; in the css
[11:00] ryan[WIN]: yeah i did that with jquery .css() lul
[11:01] ryan[WIN]: http://pilot.ryanbroomfield.com:8030/icorn.html
[11:02] ryan[WIN]: very preliminary work on a netplay game
[11:03] SubStack: too many ryans!
[11:03] SubStack: :p
[11:04] _alex: you need cool internet names
[11:04] _alex: MASTERHACKER88
[11:04] SubStack: indeed
[11:05] ryan[WIN]: anyway it's a dumb node/nginx demo running off my poor eee
[11:05] ryan[WIN]: it won't let you log in as the same name from a different ip
[11:05] ryan[WIN]: once you've logged in
[11:06] ryan[WIN]: i'm making it so there aren't any user accounts for this game
[11:06] ryan[WIN]: you just have to pick a name and stay on the same ip during the game
[11:06] ryan[WIN]: at the end of the game the ip list is going to be purged
[11:08] femtoo has left the channel
[11:10] fermion has joined the channel
[11:18] shreekavi has left the channel
[11:25] captain_morgan has joined the channel
[11:27] _announcer: Twitter: "node.js + illumos + cloud dtrace = joyent kicking ass and taking names. wow." -- James Governor. http://twitter.com/monkchips/status/20380562647
[11:27] Viriix has joined the channel
[11:27] blowery has joined the channel
[11:29] TomY has joined the channel
[11:29] blackdog_ has joined the channel
[11:30] slaskis has joined the channel
[11:33] romainhuet has joined the channel
[11:33] wilmoore has joined the channel
[11:33] geojeff_zzz has joined the channel
[11:35] ryan[WIN]: alright guys here's a quicky
[11:35] ryan[WIN]: i have nginx proxying to nodejs
[11:35] ryan[WIN]: req.connection.remoteAddress always shows as 127.0.0.1 because it receives the thing from nginx
[11:35] ryan[WIN]: anyone got any workarounds?
[11:36] pkrumins: look into the headers luke
[11:37] lejoe has left the channel
[11:38] jamescarr has joined the channel
[11:44] ben_alman has joined the channel
[11:44] ryan[WIN]: FOUND it
[11:44] ryan[WIN]: x-real-ip
[11:44] ryan[WIN]: <3
[11:44] zemanel has joined the channel
[11:46] mischief has joined the channel
[11:46] jsilver_ has joined the channel
[11:47] ryan[WIN]: ta da
[11:47] ryan[WIN]: it works now
[11:48] ryan[WIN]: i can't log in as ryanWIN
[11:48] ryan[WIN]: because someone else already has 
[11:48] ryan[WIN]: i is fail
[11:48] ryan[WIN]: and my ip filtering is working as expected
[11:50] robinduckett:  look into the headers luke < this is the best.
[11:50] ryan[WIN]: yeah i just sys.inspect'd req.headers
[11:51] ryan[WIN]: since you can only get to my node from nginx
[11:51] ryan[WIN]: i can just assume it's going to have an nginx proxy header
[12:00] keeto has joined the channel
[12:01] d0k has joined the channel
[12:03] kreyman: e
[12:03] mscdex: i think haproxy uses a different header
[12:04] rsms has joined the channel
[12:08] _announcer: Twitter: "Drinking minestrone cup-a-soup; working on my node.js finger server of WIN & AWESOME" -- Lindsay Evans. http://twitter.com/lindsayevans/status/20382804483
[12:12] c4milo has joined the channel
[12:12] _announcer: Twitter: "@cramforce dude. 100% yes. We talking just Node.js, or across Rhino and such too?" -- ell.io. http://twitter.com/elliottcable/status/20383007694
[12:12] _CrabDude has joined the channel
[12:25] kriszyp has joined the channel
[12:27] [[zzz]] has joined the channel
[12:32] mrduncan has joined the channel
[12:33] Blink7 has joined the channel
[12:40] jetienne has joined the channel
[12:41] NuLLBiT has joined the channel
[12:43] rsms has joined the channel
[12:44] jetienne has joined the channel
[12:52] _announcer: Twitter: ""One can view node.js as being to Joyent was Java was to Sun: transforming it into a true systems company"  http://monk.ly/a8ZPMi" -- James Governor. http://twitter.com/monkchips/status/20385439783
[12:54] pengwynn has joined the channel
[12:58] charlesjolley- has joined the channel
[13:00] donspaulding has joined the channel
[13:03] rsms_ has joined the channel
[13:11] elliottkember has joined the channel
[13:12] ben_alman has joined the channel
[13:12] jherdman has joined the channel
[13:14] knuckolls has joined the channel
[13:17] loincloth has joined the channel
[13:19] jakehow has joined the channel
[13:19] JimBastard has joined the channel
[13:23] ben_alman has joined the channel
[13:25] rsms has joined the channel
[13:25] loincloth has joined the channel
[13:28] hpoydar has joined the channel
[13:29] JimBastard has joined the channel
[13:33] mtodd has joined the channel
[13:35] zapnap has joined the channel
[13:37] rsms_ has joined the channel
[13:38] romainhuet has joined the channel
[13:38] geojeff_zzz has joined the channel
[13:38] _announcer: Twitter: "oh dear, the world has finally noticed node.js - prepare for the media onslaught" -- Alec Muffett. http://twitter.com/alecmuffett/status/20388376373
[13:38] alecmuffett: wow, that's automatic
[13:39] FransWillem: Hmmm, I'm only just beginning to grasp that the only way to keep JS code maintainable is to split everything into subparts :/
[13:39] FransWillem: Anyone else use tricks like that ?
[13:41] jetienne: FransWillem: what do you mean by subparts?
[13:44] FransWillem: jetienne: Well, I'm writing an object for XMLHttpRequest multipart communication. Instead of managing the XMLHttpRequests manually, I have a class MultipartPuller with ondata and onclose callbacks for the incoming data, and a simpleHttpRequest(...,callback) function that wrap the XMLHttpRequest crap.
[13:45] dnolen has joined the channel
[13:45] JimBastard: jesus my js conf video is out
[13:45] JimBastard: our internet is fucked today at work i cant stream it
[13:45] JimBastard: http://jsconf.blip.tv/file/3881880/
[13:45] FransWillem: e.g. wrap complicated bits of code into classes/functions with simpler syntax
[13:46] jetienne: FransWillem: oh, if i understand you, i call that "proper layering" :)
[13:46] jetienne: FransWillem: aka hide complexity behind simple access
[13:46] FransWillem: jetienne: I call it breaking tasks down into simpler tasks :p
[13:47] FransWillem: Btw, what do you guys use for in-code documentation ?
[13:47] FransWillem: is dox any good ?
[13:48] jetienne: FransWillem: i use jsdoc, just to "go with the flow"
[13:48] jetienne: FransWillem: i used doxigen with c++ and it was cool
[13:49] Blink7_ has joined the channel
[13:49] romainhuet has joined the channel
[13:49] geojeff_zzz has joined the channel
[13:52] matt_c has joined the channel
[13:55] bryanl has joined the channel
[13:56] pgriess has joined the channel
[13:56] mattvermaak has joined the channel
[13:57] jamescarr: arrrr
[13:57] quirkey has joined the channel
[13:59] FransWillem: Bleh, can't get JSDoc to work :/
[14:00] WarBot has joined the channel
[14:00] bryanl: how are you managing paths with ivy?  i hesitate adding project/ivy/bin to my path.  what if i move somewhere else or have multiple ivy projects?
[14:02] jeffreyt has joined the channel
[14:06] timmywil has joined the channel
[14:11] jamescarr: ...
[14:11] _announcer: Twitter: "my bot kicks your bot's ass. :P http://northpole.sg/3Z #node.js" -- Kenny Shen. http://twitter.com/kenny_shen/status/20390582371
[14:11] jamescarr: BlobReader doesn't exist in chrome?
[14:12] gf3 has joined the channel
[14:12] jetienne: .
[14:13] jamescarr: nope... neither does FileReader
[14:13] jamescarr: phooey
[14:14] ceej has joined the channel
[14:14] omarkj: FransWillem: Please let me know when you figure JSDoc out, I still haven't mastered it.
[14:14] omarkj: :)
[14:15] _announcer: Twitter: "why did August issue of JSMag talk about server side js and not cover node.js? #wtf #jsmag" -- Kenny Shen. http://twitter.com/kenny_shen/status/20390821245
[14:16] ElVox has joined the channel
[14:16] jamescarr: for real??
[14:16] jamescarr: imho, Node.JS is the biggest thing going for serverside js 
[14:16] kreyman: indeed
[14:16] jamescarr: not that I'm naive either... I've done stuff with rhino and jaxer, even embedded rhino in JEE web apps
[14:17] mAritz: java -> instant fail :P
[14:17] ElVox: i love the 5 page java dump rhino spits out when you mistype a variable name...
[14:17] joshbuddy has joined the channel
[14:19] matt_c has joined the channel
[14:19] hansek has joined the channel
[14:19] jamescarr: ElVox, eh, you come to understand them. you can shorten it and most likely see the error on the first line of the stacktrace...
[14:19] joshbuddy_ has joined the channel
[14:20] webben has joined the channel
[14:20] jamescarr: the long stacktrace comes in handy if the javascript is executed from within the servlet context
[14:20] jamescarr: but yeah, still sucks ;)
[14:20] ElVox: jamescarr: I agree. But the first time you see it; it really comes as a surprise. v8 has much nicer error messages.
[14:21] jetienne: about java, is there a js compiler to run on java vm ?
[14:21] omarkj: Yup.
[14:21] jamescarr: yes
[14:21] jetienne: any names to suggest?
[14:21] jamescarr: jdk 6 has it built in as part of it's scripting engine I believe
[14:21] omarkj: http://www.mozilla.org/rhino/
[14:21] jamescarr: but it uses rhino
[14:22] charlesjolley- has joined the channel
[14:22] jetienne: omarkj: this is a interpreter in java, js is not compiled in java bytecode. no M
[14:22] jetienne: ?
[14:23] mjijackson has joined the channel
[14:23] omarkj: Ah.
[14:23] omarkj: That's true.
[14:24] omarkj: I don't know if you can compile JS down to Java Bytecode.
[14:24] jamescarr: jetienne, mind taking that up? :)
[14:24] jetienne: jamescarr: no thx .-
[14:24] omarkj: What about JavaScript to CLR? 
[14:24] jamescarr: omarkj, actually, you can probably compile anything down to bytecode if you wanted
[14:25] jamescarr: you'd have to write the compiler though
[14:25] jamescarr: like scalac
[14:25] omarkj: jamescarr: That's true, if you really really want to.
[14:25] philippbosch has joined the channel
[14:25] jamescarr: I think some bytecode "compilers" really generate java source classes and compiles those
[14:26] omarkj: That's interesting. Do you know which ones ?
[14:26] jamescarr: I know scala includes some tool that converts scala to java classes 
[14:26] jamescarr: so you can see what the generated code looks like
[14:26] omarkj: Hm, ok.
[14:27] omarkj: Have you used Scala?
[14:27] jamescarr: yes
[14:27] _announcer: Twitter: "#javascript eventing with nodeJS, pretty cool" -- yomi okanlawon. http://twitter.com/yommie/status/20391680514
[14:27] jamescarr: its one of my favorite hybrid functional/oo languages
[14:29] matt_c has joined the channel
[14:29] omarkj: Okay. I'll have to take a look at it I think.
[14:29] davidsklar has joined the channel
[14:30] _mythz has joined the channel
[14:31] knuckolls has joined the channel
[14:31] ajpiano has joined the channel
[14:32] Tasser has joined the channel
[14:32] Tasser: just wondering - is there something like a UI framework for node?
[14:32] kriszyp_ has joined the channel
[14:32] aniero: what do you mean by UI framework?
[14:33] aniero: there's a ton of frameworks for making web apps, http://wiki.github.com/ry/node/modules#web-frameworks
[14:33] aniero: and a ton of templating libraries too
[14:33] Tasser: non-html UI
[14:34] omarkj: Ncurses. :)
[14:34] jesusabdullah: so, like, gtk bindings?
[14:34] Tasser: or an own
[14:34] jesusabdullah: There *are* ncurses bindings
[14:35] omarkj: Yub, there are.
[14:36] wilmoore has joined the channel
[14:36] Tasser: just wondering - what do you guys think about coffeescript?
[14:36] omarkj: I don't get it.
[14:37] aniero: i've only glanced at it
[14:37] jetienne: in my opinion, javascript syntax is not horrible enougth to justify another one
[14:38] jetienne: dont forget that if you write your code with that, and they stop the project, your code will be dead
[14:38] aniero: that's not a good reason not to use it
[14:39] aniero: "if they stop the project", it's open source...
[14:39] jetienne: likelyhood of javascript going down is clearly less than coffescript
[14:39] jetienne: aniero: it is. but so what ? you will maintain it ?
[14:39] jetienne: aniero: linux kernel and gcc are opensource too :)
[14:39] _announcer: Twitter: "using my netbook as a server - running node.js on my 1004he using pubuntu on windows with slirp" -- zz85. http://twitter.com/zz85/status/20392499476
[14:39] aniero: just consider it another dependency for your application
[14:40] jetienne: aniero: one you cant replace tho
[14:40] aniero: a better reason to not use it is that it's yet another thing to learn before coming onboard with your project...
[14:40] jesusabdullah: Tasser: I think it's kinda fun, and tbh I'm a fan of "the whitespace thing" so that's pretty big with me.
[14:41] Tasser: jesusabdullah, agreed on the whitespace part. thing I miss in ruby.
[14:41] jetienne: jesusabdullah: you practice python for how long ?
[14:41] jesusabdullah: Tasser: However, there is the fact that, in the end, it's still pretty much javascript.
[14:41] softdrink has joined the channel
[14:41] jesusabdullah: jetienne: Umm, almost two years now
[14:42] Tasser: jesusabdullah, and that's good
[14:42] jesusabdullah: But yeah, I'm gonna try writing something worthwhile in coffee and see how I feel
[14:42] jesusabdullah: Already rewrote the basic dnode example to coffee. Looks good
[14:42] gf3: meh
[14:43] gf3: Coffee is pretty, but it's still JS
[14:43] jesusabdullah: Yeah, it's good that it's javascript on some level, but otoh it doesn't really give you an ultra-compelling reason to switch features-wise
[14:43] maushu has joined the channel
[14:43] jesusabdullah: past a bit of sugar
[14:44] jetienne: and js syntax is not that horrible 
[14:44] jesusabdullah: Yeah, for sure.
[14:44] dmshann0n has joined the channel
[14:45] gf3: if coffee were it's own discrete language I'd be more interested
[14:45] kriszyp_ has joined the channel
[14:46] jetienne: gf3: have you tried ruby? it has a nice syntax and good libs
[14:46] jetienne: doesnt run in browser tho, so you still have to know js :)
[14:46] Tasser: jesusabdullah, well, I like a bit better snytax :-)
[14:46] Tasser: jetienne, well, rails offers rjs *duck*
[14:46] gf3: jetienne: yes I have developed with ruby for years
[14:47] omarkj: What's wrong with good'ol JavaScript?
[14:47] omarkj: I dno, don't like language religion debates. :)
[14:48] Tasser: omarkj, coffee is just the good parts of JS digged out
[14:48] omarkj: Hmkay.
[14:48] gf3: eh not really
[14:48] Tasser: I think JS is quite ok, but for some 'features' someone has to burn in hell
[14:49] Tasser: or heaven, for that matter.
[14:49] steadicat has joined the channel
[14:49] jetienne: the bad parts of js are not the syntaxm in my opinion
[14:49] Tasser: semicolon insertion?
[14:49] jetienne: this is all the glitches
[14:49] Tasser: just kick them at all.
[14:49] Yuffster has joined the channel
[14:50] robb1e has joined the channel
[14:50] Tasser: afaik livescript was lisp-style first... would be nice ;-)
[14:51] omarkj: Well, Scheme influenced it a lot.
[14:54] _figital has joined the channel
[14:56] _figital has joined the channel
[14:57] wattz: anyone have a good simple example of using C++ to write an async method for node? :D
[14:57] pkrumins: sure
[14:57] pkrumins: http://github.com/pkrumins/node-async
[14:57] wattz: thanx man
[14:58] wattz: decided to my this mysql node driver async ready from the start
[14:58] wattz: seems easier than going back and adding it in
[14:59] pkrumins: wattz: just pushed an update
[14:59] wattz: ok cool
[14:59] wattz: thanx
[14:59] pkrumins: you're welcome
[15:00] dylang has joined the channel
[15:00] voxpelli has joined the channel
[15:00] wattz: pkrumins: following you as well :D
[15:00] wattz: Im Wess so you don't think im crazy
[15:01] voxpelli has joined the channel
[15:01] robinduckett: http://www.thingsididlastnight.com/
[15:01] pkrumins: wattz: sweet, +1 :)
[15:01] pkrumins: wattz: crazy is the best btw.
[15:02] wattz: haha
[15:02] wattz: ACTION twitches
[15:02] pkrumins: hey sweet lord
[15:02] pkrumins: you're my 2^8th follower!
[15:02] wattz: nice
[15:03] wattz: Im small potatoes though
[15:03] wattz: ;)
[15:03] loinclot_ has joined the channel
[15:03] pkrumins: following you cause you're special
[15:04] pkrumins: (in 2^8th sense) 
[15:04] wattz: lol
[15:05] uli2 has joined the channel
[15:06] ashleydev has joined the channel
[15:06] hansek has joined the channel
[15:07] hippondog has joined the channel
[15:11] _announcer: Twitter: "If you run #nodejs through #nginx proxy and want to gzip the nodejs output set /gzip_proxied/ to any in nginx conf (http://bit.ly/9ojBPu)" -- Andris Reinman. http://twitter.com/andris9/status/20394734073
[15:13] _announcer: Twitter: "Oh yeah, if your #nodejs output is something else than text/html then you need to update /gzip_types/ too." -- Andris Reinman. http://twitter.com/andris9/status/20394848024
[15:13] isaacs has joined the channel
[15:14] ph^ has joined the channel
[15:15] daniellindsley has joined the channel
[15:15] jakehow has joined the channel
[15:17] ryan_gahl has joined the channel
[15:19] tjsingleton has joined the channel
[15:19] omarkj: Is eval() is really expensive in node?
[15:21] _announcer: Twitter: "What is your preferred testing lib for nodejs? Same suggestion for someone preferring rspec in ruby?" -- TJ Singleton. http://twitter.com/tjsingleton/status/20395367045
[15:22] maartenm has joined the channel
[15:22] ryan_gahl: ok, I feel stupid.. not sure best way to get list of files _and_ directories in a given directory
[15:22] matt_c has joined the channel
[15:22] robb1e_ has joined the channel
[15:22] omarkj: fs.readdir(__dirname, function(err, files) {
[15:23] ryan_gahl: .readdir has no directory info for subdirs
[15:23] maartenm: I want to keep node.kjs running while I change the scripts.. is there an elegant way for this?
[15:23] ElVox: i am pretty sure eval() is relatively expensive in v8.
[15:23] robb1e_ has joined the channel
[15:23] omarkj: ryan_gahl: I get directories?
[15:23] omarkj: No, period at the end there.
[15:23] ryan_gahl: hmm
[15:23] jetienne has joined the channel
[15:23] ryan_gahl: i only get files
[15:24] ryan_gahl: i must be doing it wrong
[15:24] ryan_gahl: heh
[15:24] omarkj: But not subdirectories, then you got to go into each one and so on.
[15:24] tjholowaychuk has joined the channel
[15:24] ryan_gahl: when I sys.puts each item in the files array... no directories
[15:24] ryan_gahl: (and a dir does exist)
[15:26] omarkj: Are you running v0.1.102?
[15:26] ryan_gahl: UGH... ok scratch that noise, bad reading... the dir is in the list
[15:26] ryan_gahl: :)
[15:26] ryan_gahl: tired
[15:26] omarkj: Ok, cool.
[15:26] omarkj: Go to sleep!
[15:26] ryan_gahl: just woke up :)
[15:27] omarkj: Fair enough.
[15:28] FransWillem: Wow, libraries like Step and Do make Node development so much nicer :)
[15:30] maartenm: http://romeda.org/blog/2010/01/hot-code-loading-in-nodejs.html
[15:30] maartenm: ok.. no more elegant way than this?
[15:30] ElVox_ has joined the channel
[15:31] samdk has joined the channel
[15:33] nefD: huh.. yeah, ive been wondering about reloading modules, myself.. something like this would be great, but im hesitant to apply patches to node
[15:34] mikeal has joined the channel
[15:34] donspaulding has joined the channel
[15:34] dnolen has joined the channel
[15:37] ryan_gahl: oh man... just realized since .readdir only give an array of strings, i then need to loop and sys.stat each on to grok whether it's a file or dir :(
[15:38] Tasser: ryan_gahl, a dir is a file ;-)
[15:38] ryan_gahl: meh
[15:38] ryan_gahl: you know what i mean
[15:38] Tasser: :-P
[15:38] ryan_gahl: Tosser :P
[15:39] ryan_gahl: ACTION gets into pub brawl stance
[15:39] Tasser: ryan_gahl,
[15:39] ryan_gahl: this must have been discussed in the past but why doesn't .readdir give an array of sys.Stats objects?
[15:40] jelveh has joined the channel
[15:40] ryan_gahl: overhead I assume?
[15:40] Tasser: probably.
[15:40] steadicat has joined the channel
[15:41] cardona507 has joined the channel
[15:42] _announcer: Twitter: "Can anyone give me information on the adoption in Italy of nodejs #?" [it] -- Nicola Orritos. http://twitter.com/nicola_orritos/status/20396799576
[15:42] ryan_gahl: hmm, but what about a wildcard path into fs.stat or lstat
[15:42] ryan_gahl: nope, not array return
[15:43] omarkj: ryan_gahl: Node.js has a method to check if a file is a directory.
[15:43] ryan_gahl: right, if you have the fs.Stats object
[15:43] omarkj: Mm, good point.
[15:43] ryan_gahl: just looking for a 1-call way to get an array of stats objects
[15:43] Tasser: is there no map? :-)
[15:43] amerine has joined the channel
[15:44] _announcer: Twitter: "making simple game lobby system for Manila tonight in node.js + websockets. screw html4 browsers." -- Maarten Mortier. http://twitter.com/maartengm/status/20396948068
[15:44] ryan_gahl: no map
[15:44] amerine: s/map/nap/
[15:45] _announcer: Twitter: "My node.js module -- node-png -- is now fully asynchronous! http://github.com/pkrumins/node-png" -- Peteris Krumins. http://twitter.com/pkrumins/status/20397014027
[15:45] pkrumins: huhu
[15:45] maartenm: pkrumins: cool
[15:45] maartenm: I'm going to use that for distributed fractal rendering :)
[15:46] pkrumins: now got to make node-gif, node-jpeg and node-video async
[15:46] pkrumins: maartenm: sweet
[15:46] pkrumins: maartenm: ping me with the results then
[15:46] pkrumins: with pics
[15:46] Tasser: and tits?
[15:46] maartenm: ok I'll save your nick
[15:46] jesusabdullah: fractal tits.
[15:46] maartenm: cannot promise tits
[15:46] maartenm: actually I ocne rendered a buddhabrot
[15:46] maartenm: and due to some freak 64-bit floating point error it had tits on deep resolutions
[15:47] jesusabdullah: huh
[15:47] pkrumins: fractal size C tits
[15:47] loincloth has joined the channel
[15:48] pkrumins: http://sprott.physics.wisc.edu/fractals/collect/2004/040301Natural_Tits2.jpg
[15:48] pkrumins: someone did it!
[15:48] maartenm: heh
[15:48] maartenm: I found my buddha with tits
[15:48] maartenm: what's a good place to upload images to?
[15:49] Tasser: postimage.org
[15:49] Tasser: omploader.org
[15:49] mape: When doing an update in mongodb I shouldn't be getting publicates right?
[15:49] ElVox_: Anyone with a free moment? http://enigma.stackulator.com/cosketch/cosketch.htm   Help me test a persistant multi-user canvas experiement (it needs websockets so is chrome/safari/nightly only). I want to see how many brush-strokes I can store in memory before nodejs asplodes.
[15:50] nefD: ElVox_: Loaded it up.. should i just go ape shit with the brush/pencil tools?
[15:50] ElVox_: sure...if you want...but other will see your ape-shitting :D
[15:50] maartenm: ElVox_: it's not chrome friendly
[15:50] kreyman: why do i see process.EventEmitter.call(this) vs events.EventEmitter.. is there a good reason for using process?
[15:50] nefD: "Wrong url scheme for WebSocket http://enigma.stackulator.com/cosketch/undefined" in chrome dev channel
[15:51] maartenm: pkrumins: tits: [url=http://www.postimage.org/image.php?v=Ts5Hz3S][img]http://s2.postimage.org/5Hz3S.jpg[/img][/url]
[15:51] ElVox_: woops try that agaain
[15:51] maartenm: well, sort of tits.. on a deeper level the borders got thicker and more tit-like but I can't fidn that image anymore
[15:52] phiggins has joined the channel
[15:52] chrischris has joined the channel
[15:53] jesusabdullah: Faint!
[15:53] daniellindsley: Anyone know if, when using ``fs.open`` with a callback, if the file descriptor is automatically closed when the callback exists?
[15:53] daniellindsley: DOUBLE IF
[15:54] pkrumins: maartenm: mysterious tits
[15:54] maartenm: pkrumins: yeah..
[15:54] mikeal has joined the channel
[15:54] maartenm: I never resolved how they ocurred
[15:54] maartenm: only happened on octocore mac
[15:55] pkrumins: the great tits - http://www.sxc.hu/pic/m/m/mi/michel01/886870_great_tit.jpg
[15:55] pkrumins: (nsfw)
[15:55] maartenm: nice
[15:55] jesusabdullah: and here I was hoping it really WAS nws
[15:55] maartenm: the left one's a little bigger than the other
[15:55] pkrumins: maartenm: true
[15:55] pkrumins: jesusabdullah: ^_^
[15:55] NuLLBiT has joined the channel
[15:56] Tasser: pkrumins, where's the nsfw?
[15:56] maartenm: ElVox_: ok, working now
[15:57] maartenm: although I think I'm pure client now and serve rhas died :)
[15:57] maartenm: ah, no
[15:57] ElVox_: nefD: thanks! you generated over 15k brush strokes then maartenm obliterated evertything with his 30k+ so far :D
[15:58] maartenm: well I used to be a software tester
[15:58] maartenm: sorry :)
[15:58] nefD: lol
[16:00] ElVox_: 80k brush strokes currently being served
[16:00] maartenm: yeah just refreshing is a good enough test now
[16:00] maartenm: are you storing them somewhere or just from memory?
[16:01] sh1mmer has joined the channel
[16:01] pgriess has joined the channel
[16:02] _announcer: Twitter: "http://blogs.msdn.com/b/jeffva/archive/2010/04/14/node-js-bindings-for-rxjs.aspx ooh nice power combo :D" -- James Tryand. http://twitter.com/monkeyonahill/status/20398191523
[16:02] b_erb has joined the channel
[16:02] creationix has joined the channel
[16:03] ElVox_: just memory...they are in a BIH. The grand plan is to have a huge vitual canvas and pull up the strokes by tile. Kind of like a google-maps but for a huge (like a 1m x 1m pixel) multi-user canvas
[16:03] technoweenie has joined the channel
[16:03] maartenm: ok, cool
[16:03] creationix: ohh, large tilemap
[16:03] creationix: I made one of those recently
[16:03] dmcquay has joined the channel
[16:04] maartenm: if you get rid of the eraser button
[16:04] maartenm: you can significantly optimize the client
[16:04] maartenm: by using images of the canvas as intermediaries
[16:04] tmpvar has joined the channel
[16:05] maartenm: and even without getting rid of the eraser button
[16:05] maartenm: by just makin git paint white instead
[16:06] nefD: hah! the playback that occurs after reloading the page is nutso
[16:06] ElVox_: I am going to leave this up until it crashes :D
[16:07] Viriix: in the module system, the exports variable is just a free var, so i can pass that variable to another module from within that module and it would carry all the methods with it right?
[16:07] nefD: probably a good idea.. looks like it might take a wee bit before it topples
[16:07] ElVox_: ACTION goes to have some more coffee.
[16:07] ElVox_: thanks again guys
[16:09] hansek has joined the channel
[16:09] jchris has joined the channel
[16:09] nefD: hmm.. at first i thought it was lagging, but now i think its dropping some of my strokes
[16:09] nefD: moving the mouse pretty quick though
[16:10] creationix: Viriix: sure
[16:10] nefD: ElVox_: Oh yeah, its starting to bog down
[16:11] tmpvar: nefD, how many concurrent users?
[16:11] ElVox_: there is a built-in rate limiter on the client-side. (i didn't make the client; i stole it) but node hasn't complained at all - 202k brush strokes
[16:11] creationix: tmpvar: you response looks a lot nicer than mine ;)
[16:11] nefD: tmpvar: No idea, cant tell on the client end
[16:11] streampunk has joined the channel
[16:11] tmpvar: creationix, my response?
[16:12] creationix: event emitter thread
[16:12] omarkj: Ooh! RxJS binders.
[16:12] nefD: moving the mose slowly, 1.5 or 2 times a second, 1 out of 3 strokes arent producing any result for me
[16:13] markwubben has joined the channel
[16:13] rwaldron_ has joined the channel
[16:13] tmpvar: creationix, I didn't respond to that :/
[16:13] maushu: Anyone knows if its possible to boot a laptop/netbook without opening it? (The power button is inside.) Something like booting from usb or something.
[16:13] tmpvar: you are talking about Brian Mitchell's response, im guessing
[16:13] creationix: tmpvar: oh, right, that's binary42, sorry about that
[16:13] tmpvar: :)
[16:14] tmpvar: no love.. haha
[16:14] creationix: I still get usernames mixed with real names sometimes
[16:14] creationix: I guess I should read the email address next to the name
[16:14] streampunk: creationix: I missed what you said.
[16:14] nefD: ElVox_: Is your mem usage growing pretty linearly?
[16:14] streampunk: ACTION is binary42
[16:15] tmpvar: dude, im not sure I like the handle drifting, heh
[16:15] creationix: streampunk: I just said your response on the ML looks more polished than mine
[16:15] streampunk: heheh. :P
[16:15] streampunk: tmpvar: I avoid distraction pretty well but I've been using this one a lot more.
[16:15] mscdex: maushu: you can boot to usb on most newer laptops
[16:15] maushu: mscdex: How? Using a keyboard with a power button?
[16:15] ElVox_: nefD: tbh, i don't know how to check memory usage in linux...
[16:15] ElVox_: ACTION fumbles around
[16:16] nefD: free -m usually works
[16:16] creationix: elvox htop is the overkill way to do it ;)
[16:16] streampunk: creationix: Ah. I have thought about it a lot I guess. I think leveraging EventEmitter is probably the hardest roadblock for newbies.
[16:16] mscdex: maushu: yeah, you'd have to power it on somehow ;-)
[16:16] maushu: I will use my mind!
[16:16] creationix: streampunk: if I get to talk at jsconf it will be about eventemitters, callbacks, promises, and that whole mess
[16:17] creationix: probably some conductor too (tmpvar)
[16:17] streampunk: creationix: awesome. There are some really neat tools to be used with events.
[16:17] tmpvar: creationix, nice
[16:17] tmpvar: I'm working as fast as I can .. lol
[16:17] _announcer: Twitter: "Oh! We have Rx.js for node.js! http://bit.ly/8XMyYB" -- Ómar Kjartan Yasin. http://twitter.com/omarkj/status/20399258056
[16:17] streampunk: I do wish there were more FSM libs in JS... I guess I'll end up writing one at some point.
[16:17] ryan_gahl: 11,00•12,00creationix11,00• you have any helpers for traversing directories? I want .readdir to give me an array of fs.Stats object instead of strings :(
[16:17] tmpvar: should have a prototype for next weeks nyc.js
[16:18] streampunk: tmpvar: Looking forward to it.
[16:18] creationix: ryan_gahl: I might have something in a project of mine
[16:18] creationix: but nothing packaged and pretty
[16:18] creationix: when is the meeting next week streampunk?
[16:18] lejoe has joined the channel
[16:19] streampunk: 12th.
[16:19] ryan_gahl: ok, so what does the collective think about an option to get an array of fs.Stats objects from .readdir?
[16:19] creationix: we're having an awesome node meetup in Palo Alto Tuesday night
[16:19] streampunk: Always second thurs. =D
[16:19] spaceman has joined the channel
[16:19] creationix: ryan_gahl: from node itself?
[16:19] ryan_gahl: yes
[16:19] tjholowaychuk: creationix: my gf wants to come visit cali lol shes going to get her passport tomorrow so in a few weeks after she gets that we will probably come chill
[16:19] creationix: I don't think it belongs there
[16:19] ryan_gahl: a patch proposal
[16:19] ElVox_: nefD: thanks for the tip. Iit might actually be bogging down because I am getting close to the 256mb i (stupidly) set for the virtual machine. I should probably try this test on a 1gb machine. Still, it is supporting over 350k brush strokes at interactive rates...
[16:19] creationix: tjholowaychuk: sweet!
[16:20] tjholowaychuk: hackathon!
[16:20] nefD: ElVox_: Not bad!
[16:20] creationix: ryan_gahl: though I do think fs.readFile should expose the stat result it uses internally
[16:20] ryan_gahl: 11,00•12,00creationix11,00• so the user _should_ have to get an array of strings, loop, fs.stat each one?
[16:20] gf3: tmpvar: re: your comment on PHP.js, why is modifying host objects in node bad?
[16:20] creationix: ryan_gahl: correct
[16:20] ryan_gahl: 11,00•12,00creationix11,00• crap
[16:20] creationix: with step this is pretty trivial is userland code
[16:20] creationix: readdir has nothing to do with stat
[16:20] creationix: fs.readFile on the other hand is already statting the file
[16:21] creationix: and often when using fs.readFile you want the stat data too and it's silly to call it twice
[16:21] ryan_gahl: but I want an array in 1 call that gives me everything i need to grok files vs dirs
[16:21] tmpvar: gf3, its just generally bad practice
[16:21] creationix: ryan_gahl: sure, write a utility for it
[16:21] ryan_gahl: 11,00•12,00creationix11,00• sure, but it seems silly that i can't do it in core
[16:22] creationix: ryan_gahl: well, you can ask
[16:22] ryan_gahl: not a fan of the anti-robust API mentality
[16:22] creationix: but it will likely get rejected
[16:22] ryan_gahl: 11,00•12,00creationix11,00• yep
[16:22] alecmuffett has joined the channel
[16:22] creationix: ryan_gahl: start a layer on top of node with me
[16:22] creationix: part of a distribution
[16:22] qFox has joined the channel
[16:22] ryan_gahl: I'm in
[16:22] gf3: tmpvar: I think it was, when it was an issue (shitty DOM implementations, crappy VMs) but it makes sense now with node/v8, and it's the way things are meant to be done in JS
[16:23] ryan_gahl: I have this repo started..
[16:23] creationix: ryah has asked that I don't mess with prototypes, but general utilities should be fine
[16:23] ryan_gahl: http://github.com/ryedin/node-core-enhancements
[16:23] ryan_gahl: 11,00•12,00creationix11,00• where's your project around this?
[16:24] ryan_gahl: (and yes, I plan to refactor that events stuff to a proper module)
[16:24] creationix: just my ivy districution
[16:24] ryan_gahl: oh ivy is a distro
[16:24] creationix: ryan_gahl: I love your description
[16:24] ryan_gahl: lol
[16:24] creationix: "that is rejected from inclusion in core but that have high general usability"
[16:25] ryan_gahl: heh
[16:25] jpld has joined the channel
[16:25] ryan_gahl: I just have spidey-sense that much of my ideas for core will be rejected
[16:25] creationix: I can certainly see where having readdir return stat objects would be incredibly useful
[16:26] creationix: I think node just needs a clear line of what's included and what's not
[16:26] ElVox_: ok guys, node has been hitting the swap hard for a few minutes so I have to kill this and give it more memory for the next test.
[16:26] creationix: I think the readstream stuff is a bit high level
[16:26] creationix: and fs.readFile and fs.writeFile
[16:26] creationix: though those are the ones I use the most
[16:26] ryan_gahl: ok, so shall I fork Ivy and integrate my ideas on top of that?
[16:27] creationix: ryan_gahl: if you want
[16:27] creationix: ivy is a ready to go package
[16:27] creationix: just include whatever modules you want pre-included as submodules
[16:27] ryan_gahl: sure, but fs.readFile is 1 file...
[16:27] sudoer has joined the channel
[16:28] creationix: yes, but have you see the fs.readFile code
[16:28] creationix: it does a LOT
[16:28] creationix: (and if it's the version I wrote, has a tiny race condition too)
[16:29] jesusabdullah: vroom vroom!
[16:29] mscdex: WARBOT DIED
[16:29] Blink7 has joined the channel
[16:29] mscdex: ahhhhh
[16:29] silentrob has joined the channel
[16:29] mscdex: jay and silentrob!
[16:29] mscdex: :-D
[16:29] ryan_gahl: hmm, ok, but not seeing exactly what you're saying... fs.readFile is robust, therefore wholesale directory info should live in userland?
[16:29] ryan_gahl: (I know that's not what you're saying)
[16:30] creationix: I'm saying that fs.readFile should be in the same place as stat enables readdir
[16:30] creationix: so either it should be removed or your idea should be included
[16:30] jamescarr: heh... had no idea the html5 file api let you read in files
[16:30] creationix: because they are about the same level of abstraction
[16:30] dgathright has joined the channel
[16:31] creationix: for a long time I've pushed for higher-level abstractions in node and many of my proposals made it in
[16:31] creationix: but now I'm not sure they belong there
[16:31] ryan_gahl: lucky you :)
[16:32] creationix: if new stuff is rejected, old stuff should be removed
[16:32] creationix: the api needs to be consistent
[16:32] creationix: if node wants to be lean, mean, and minimal, then that's fine
[16:32] tjholowaychuk: some stuff is silly, like the console formatting
[16:32] tyfighter has joined the channel
[16:33] creationix: tjholowaychuk: yeah, that's been biting me lately
[16:33] creationix: mobile safari doesn't have any of that
[16:33] tjholowaychuk: creationix: I dont use any of it because of that / it will probably be removed
[16:33] tjholowaychuk: but im diggin the console global in general
[16:33] creationix: sure
[16:34] ryan_gahl: I just don't get why something like "optionally give an array of fs.Stats objects instead of strings for .readdir" wouldn't be accepted... :(
[16:34] tjholowaychuk: id rather it be like the browsers where it applies all args to stdout in our case
[16:34] tjholowaychuk: instead of the formatting
[16:34] creationix: browsers do both
[16:34] creationix: well, most
[16:35] creationix: ryan_gahl: go for it
[16:35] tjholowaychuk: weird, so they do!
[16:35] creationix: tjholowaychuk: yeah, I didn't know either
[16:35] tjholowaychuk: kinda
[16:35] astrolin_ has joined the channel
[16:35] ryan_gahl: it seems like the right level of abstraction to be adding to fill out the API... no?
[16:35] tjholowaychuk: interesting
[16:36] siculars has joined the channel
[16:36] creationix: ryan_gahl: yes and no
[16:36] creationix: it complicates the api
[16:37] creationix: I'm not a fan of lots of options
[16:37] creationix: especially when they aren't required, just make it easier to use
[16:37] ryan_gahl: .bulkStat() then?
[16:37] creationix: no, that's not any better
[16:37] FransWillem: Hmm
[16:37] ryan_gahl: or... add to ivy :)
[16:37] creationix: ryan_gahl: I encourage people to fork ivy and make their own versions
[16:38] creationix: it's all based on submodules so it's super easy to customize
[16:38] streampunk has joined the channel
[16:38] FransWillem: how about we think about proper asynchronous function standardization first? First we had promises, then callback(err,...), there's also some with callbacks without err, etc. None of those are perfect if you ask me, why not focus on that before writing shitloads of layers and modules :p?
[16:38] ryan_gahl: do you keep ivy religiously up to date with node ?
[16:38] creationix: ryan_gahl: yep
[16:39] creationix: FransWillem: we did, the standard is fn(arg1, arg2, ..., cb) where cb(err, result)
[16:39] creationix: ryan_gahl: I run four live sites using ivy
[16:40] creationix: FransWillem: where is callback without err?
[16:40] brianmario has joined the channel
[16:40] creationix: I've not seen that in node
[16:40] ryan_gahl: what core enhancements exist in ivy?
[16:40] ryan_gahl: if any
[16:40] creationix: ryan_gahl: nothing yet, just incuded modules
[16:40] creationix: my node builds are vanilla
[16:41] ryan_gahl: so it's just node + a bunch of modules you find useful
[16:42] FransWillem: creationix: All over modules, don't remember seeing it in node though :/
[16:42] creationix: ryan_gahl: correct, but the modules are already in the require paths
[16:42] creationix: FransWillem: then I'd file tickets with the module authors, it's wrong
[16:42] creationix: FransWillem: but, yes, when promises were removed the standard was set
[16:42] timmywil has joined the channel
[16:42] creationix: ryan_gahl: how about a hook in node to make stuff like this easy?
[16:43] creationix: say node requires the module "node" if it exists and mixes it's exports into global
[16:43] creationix: so then you just need to make a module called node in your local environment and it's "built-in"
[16:43] creationix: without patching node itself
[16:43] ryan_gahl: so add /ivy/bin to PATH and then all submodules I add are automoatically available in require path
[16:43] creationix: yep
[16:44] wattz: wrting a C++ parser isn't going to be fun :(
[16:44] creationix: we made node portable, it looks for libraries relative to the binary
[16:44] creationix: ivy/bin doesn't even need to be in your $PATH
[16:44] ryan_gahl: then i "ivy app.js" instead of "node app.js"
[16:44] creationix: that just makes it easier to start node
[16:44] creationix: no, it's still "node"
[16:44] marshall_law has joined the channel
[16:45] creationix: ryan_gahl: but you could rename it ivy in your version
[16:45] ryan_gahl: ah, need to run setup.sh
[16:45] benburkert has joined the channel
[16:45] ryan_gahl: ok, gtg, bbiab - will dig in more later
[16:45] ryan_gahl: thx
[16:45] cardona507 has joined the channel
[16:46] _announcer: Twitter: "I see that out to the nodejs ไง: D." [th] -- llun:/næt/ not /lʊn/. http://twitter.com/llun/status/20401235723
[16:46] creationix: ryan_gahl: setup.sh is to download ivy, if you checked it out already you don't need that
[16:46] creationix: just relink
[16:46] creationix: or update.sh
[16:46] creationix: ryah: ping
[16:47] tjholowaychuk:  isaacs: reminder :) 
[16:47] creationix: hmm, issacs is offline it seems
[16:48] tjholowaychuk: noOoOoO
[16:48] tjholowaychuk: lol
[16:48] creationix: tjholowaychuk: what do you think about my "node" hook module?
[16:48] tjholowaychuk: creationix: where/
[16:48] tjholowaychuk: ?
[16:49] Astro: I wish node used readline... :[o]
[16:49] feroz_ has joined the channel
[16:49] creationix: Astro: we all do, but readline is GPL
[16:49] creationix: though I think node should allow using readline via some configure parameter
[16:49] creationix: for people who are fine with gpl
[16:50] creationix: or is that possible
[16:50] tjholowaychuk: creationix: whats this node hook thing
[16:50] creationix: tjholowaychuk: my idea for "node" is a patch to node
[16:50] tjholowaychuk: k? lol
[16:50] creationix: so in node's startup have something like (global.mixin(require('node'))
[16:51] creationix: assuming mixin existed
[16:51] creationix: and wrap that in try..catch
[16:51] cloudhead has joined the channel
[16:51] creationix: so then I can modify my local node by creating a "node" module in my require paths
[16:51] isaacs has joined the channel
[16:51] creationix: and people can customize node easily without patching node
[16:52] creationix: it would make it easy to make standalone apps too
[16:52] creationix: with the node binary included
[16:52] tjholowaychuk: yeah might be nice to have something auto-required like that
[16:52] creationix: just rename node to something else
[16:52] tjholowaychuk: or ~/.node_libraries/index.js or something
[16:52] tjholowaychuk: i dunno
[16:52] creationix: and put a "node" module relative to it
[16:52] tjholowaychuk: I "patch" node quite a bit, just pull in sys and add printf n crap
[16:52] tjholowaychuk: but that requires the manual require
[16:52] creationix: right, but not hard-coded to .node_libraries
[16:52] creationix: exactely
[16:53] Astro: creationix: is there no BSD libreadline?
[16:53] mattly has joined the channel
[16:53] mscdex: li breadline
[16:53] rauchg_ has joined the channel
[16:53] mscdex: :p
[16:53] creationix: Astro: there is editline, but for some reason it wasn't used
[16:53] creationix: the recommended way is to use rlwrap
[16:54] creationix: but that seems silly, you're still using gpl software, just it's not tied to node directly
[16:54] creationix: and then later on node tried to roll it's own readline into the repl
[16:54] creationix: and that's pretty horrible
[16:55] wattz: pkrumins: you around?
[16:56] aurynn: libedit is the BSD readline equiv.
[16:57] creationix: aurynn: do you know libedit?
[16:57] aurynn: unfortunately, no
[16:58] creationix: I would love something like staticly linked to node
[16:58] jamescarr: heh.. it's all fun and games until you come across a file with a 3.000 line procedural method in it ;)
[16:58] creationix: though only if it's readline compat from the user's perspective
[16:58] creationix: tjholowaychuk: so I think I'll make a generic patch for node then
[16:58] creationix: tjholowaychuk: any chance it will get accepted?
[16:59] tjholowaychuk: creationix: not sure, id prefer node -r foo.js then you could just wrap
[16:59] tjholowaychuk: I started that way back but never finished
[17:00] creationix: well, then you need a wrapper and a subshell
[17:00] creationix: this will be a lot cleaner for custom apps
[17:00] mscdex has joined the channel
[17:00] tjholowaychuk: would definitely help to boot some of our stuff
[17:00] Egbert9e9 has joined the channel
[17:01] creationix: well, it should be a small patch, I can maintain it for ivy if anything
[17:01] tjholowaychuk: for sure
[17:01] feydr has joined the channel
[17:02] WALoeIII has joined the channel
[17:03] mjr_ has joined the channel
[17:04] jamescarr: heh... I keep switching between languages
[17:05] jamescarr: then get befuddled when (function() { "foo"})() returns nothing
[17:05] jamescarr: :)
[17:05] jelveh: I'm having trouble writing to a socket server via node
[17:05] jelveh: I'm using createConnection and a write on that
[17:05] jamescarr: granted, the array extras methods would be nice if return wasnt required in js like it isnt in scala
[17:05] femtoo has joined the channel
[17:06] jelveh: I'm getting a stream not writable
[17:06] jelveh: it should be though
[17:06] jelveh: any ideas?
[17:06] jamescarr: [1,2,3,4].filter(function(x){ x % 2 == 0})
[17:06] creationix: jeffreyt: socket client?
[17:06] mscdex: lol tab
[17:06] creationix: anybody know where "require" is defined?
[17:06] lejoe has joined the channel
[17:06] wattz: v8 docs ftl.
[17:07] tjholowaychuk: creationix: module.js
[17:07] tjholowaychuk: creationix: it is re-defined per module to enclose the parent
[17:07] mscdex: jamescarr: what about [1,2,3,4].filter(function(x){ return x % 2 == 0}) ? :p
[17:07] deepthawtz has joined the channel
[17:07] creationix: tjholowaychuk: it's not module.require, know what it's called?
[17:08] mscdex: jelveh: is the 'connect' event firing?
[17:08] jamescarr: mscdex, yeah, the scala equivalent is List(1,2,3,4).filter(_ % 2 == 0)
[17:08] hansek has joined the channel
[17:08] lejoe has left the channel
[17:08] jelveh: mscdex: ahh already know what the problem is
[17:08] tjholowaychuk: creationix: there are a bunch but loadModule() is the main i think
[17:08] mscdex: okie
[17:08] tjholowaychuk: i dont think it is exported though
[17:08] tjholowaychuk: not sure
[17:08] jelveh: keep forgetting that I need to put my code into the connect callback
[17:08] jelveh: d'ok
[17:08] jelveh: d'oh
[17:09] mscdex: hehe
[17:09] bpot has joined the channel
[17:09] sh1mmer has joined the channel
[17:09] creationix: tjholowaychuk: that looks like it, thanks
[17:09] creationix: not sure what parent does though
[17:09] mAritz: SubStack: good job on the example. :)
[17:09] creationix: looks like it's just used for cache stuff
[17:09] benburkert has joined the channel
[17:10] tjholowaychuk: yup and i think for resolving relative requires too
[17:10] mape: tjholowaychuk: think the new ejs is broken, can't do for loops with it, reverted to the older one and that one worked fine
[17:10] ruf has joined the channel
[17:11] tjholowaychuk: mape: durr~
[17:11] jamescarr: doh... reverse engineering an XML based API through ruby
[17:11] tjholowaychuk: durr!
[17:11] tjholowaychuk: lol
[17:11] jeffreyt: creationix.... socket client?
[17:11] mscdex: lol
[17:11] tjholowaychuk: mape: i need more testssss, i will try and patch that soon
[17:11] matclayton has joined the channel
[17:11] mape: np, the old one works fine for now :)
[17:12] silentrob_ has joined the channel
[17:12] zomgbie has joined the channel
[17:12] raim0_ has joined the channel
[17:13] rednul has joined the channel
[17:14] creationix: jeffreyt: nevermind
[17:14] creationix: not sure what I was asking
[17:16] ollie has joined the channel
[17:17] creationix: tjholowaychuk: well, my idea was simple, but implementing it seems harder than expected
[17:17] tjholowaychuk: hmm
[17:18] creationix: ok, so module only exports requireNative and runMain
[17:20] jamescarr: hmmm... is it possible to do  HTTP basic authentication with the http.Client?
[17:20] jamescarr: (not finding it in the documentation)
[17:20] creationix: jamescarr: it's not built in I'm pretty sure
[17:20] creationix: but I think there is a connect module or two that implements it
[17:20] zemanel: jamescarr, tried the http://user:pass@server.com url format?
[17:21] creationix: oh, client, neverming, ignore me
[17:21] creationix: *nevermind
[17:21] mape: tjholowaychuk: btw might be a good idea to add a quick note about how to fetch POST variables using express (connect bodyDecoder) in the docs
[17:21] tjholowaychuk: mape: there is nothing?
[17:21] jamescarr: zemanel, ill try that
[17:21] jamescarr: thanks
[17:22] mscdex: jamescarr: also see here: http://en.wikipedia.org/wiki/Basic_access_authentication
[17:22] mape: tjholowaychuk: at least not in the guide that I can find
[17:22] jan247 has joined the channel
[17:22] tjholowaychuk: mape: ah, boo, will do
[17:24] saikat has joined the channel
[17:25] tjholowaychuk: mape: I just pushed two iteration tests, work fine
[17:25] mape: tjholowaychuk: 1sec
[17:26] aheckmann has joined the channel
[17:27] mape: tjholowaychuk: hmm yeah, now it does, I was getting a "unexpected token return"/function something
[17:28] tjholowaychuk: mape: weiird, you can always pass debug: true to see  the function it creates too BTW
[17:28] mape: Guess I just messed something up then
[17:29] CIA-77: node: 03Felix Geisendörfer 07master * rffbbc46 10/ src/node.js : 
[17:29] CIA-77: node: Support inspecting objects with console.log
[17:29] CIA-77: node: If the first parameter passed into console.log() is not a string, all
[17:29] CIA-77: node: parameters will be printed as formated by sys.inspect. This change
[17:29] CIA-77: node: also affects console.info and console.warn. - http://bit.ly/aEKsDv
[17:29] mape: neato
[17:33] voxpelli has joined the channel
[17:37] jamescarr: hmmm.. where is base64Encode exposed from now?
[17:37] jamescarr: I thought it was exposed through the crypto module?
[17:37] mscdex: buffer iirc
[17:37] mape: buffer
[17:37] JimBastard has joined the channel
[17:37] mscdex: dubba rainbow
[17:37] JimBastard: reporting in from pivotal labs today. internet fail at our normal office
[17:37] JimBastard: :p
[17:37] mscdex: ok, so single rainbow
[17:38] JimBastard: tuple rainbow
[17:38] jamescarr: JimBastard, oh, you work at Pivotal?
[17:38] JimBastard: naah, we are just visiting for the day
[17:38] tjholowaychuk: tell them PT is brutal without a mouse
[17:38] tjholowaychuk: lol
[17:38] tjholowaychuk: hate it
[17:39] JimBastard: lol tjholowaychuk , complaining about PT at PL is not a good idea
[17:39] tjholowaychuk: :D haha
[17:39] JimBastard: we host the nyc.js meetup here too, its a decent spot
[17:39] ryah: creationix: pong
[17:39] JimBastard: im pretty amped about my jsconf vidya http://blip.tv/file/3881880/
[17:39] JimBastard: came out way better then i thought it would
[17:40] creationix: ryah: I have an idea to make building custom node apps possible without patching and recompiling node
[17:40] JimBastard: creationix: that sounds awesome, i was thinking about that earlier today actually
[17:40] JimBastard: i have no idea how it could be pulled off though
[17:40] creationix: by custom apps, I mean standalone directories with a node binary embedded
[17:40] ryah: creationix: ok?
[17:40] creationix: renamed to something else and with a non-default startup script
[17:41] creationix: ryah: I'm working on a initial patch, but the general idea is to look for a special module at startup
[17:41] creationix: maybe call it "node" or "startup"
[17:41] tjholowaychuk: boot?
[17:41] creationix: and if it exists in the require paths, load it
[17:41] deepthawtz: state of i18n in node.js?
[17:41] creationix: and if it has a "main" function on it's exports run that instead of node's main
[17:42] creationix: ryah: I have an initial patch, it's working, but surely needs some tweaking
[17:42] creationix: would you like to see it 
[17:42] creationix: I'm not sure I want to send it to the whole mailing list
[17:42] streampunk: JimBastard: isn't pivotal pretty crowded already? I've got space in SoHo if you want a desk.
[17:42] JimBastard: streampunk: lurker
[17:42] jamescarr: perhaps I'm missing something? Buffer('some string').toString('base64') doesnt yeild the same result as perl's MIME:Base64 encode_base64
[17:42] ryah: creationix: i think we should discuss more deeply
[17:43] streampunk: JimBastard: guilty and proud.
[17:43] ryah: creationix: i got to go now
[17:43] mscdex: ACTION shakes a fist at perl
[17:43] JimBastard: woah toString('base64') works?
[17:43] creationix: ryah: ok, I'll send an email
[17:43] creationix: to you
[17:43] ryah: creationix: but i know, for example pquerna is interested in this too
[17:43] ryah: i am too
[17:43] creationix: ok, I'll cc the core group
[17:43] JimBastard: streampunk: its not too crowed here, our internet died so me and p diddy and helmet and company relocated here for the day
[17:43] jesusabdullah: "Very...descriptive description!"
[17:43] jesusabdullah: Awesome
[17:44] jamescarr: nvm
[17:44] x_or has joined the channel
[17:44] admc has joined the channel
[17:44] FransWillem has joined the channel
[17:45] FransWillem: Hey
[17:45] quirkey has joined the channel
[17:45] streampunk: JimBastard: Cool. Must be the fulton st. of beekman building construction again. They love chopping up fiber from when I lived there.
[17:45] silentrob has joined the channel
[17:45] JimBastard: streampunk: i hear it was a building that burnt down, took out the connection on both sides
[17:45] JimBastard: been down for 24+ hours 
[17:46] JimBastard: we bought a bunch of those mifi things
[17:46] streampunk: Ouch. Well, if you're out of space still tomorrow, I've got space for a few here that I'm sure would be welcome to crash.
[17:46] JimBastard: but they arent fast enough to stream 2pac or do cap deploys
[17:46] JimBastard: cool cool thanks
[17:46] CIA-77: node: 03cloudhead 07master * rfe3e419 10/ (lib/querystring.js test/simple/test-querystring.js): querystring.parse: handle undefined value properly - http://bit.ly/91PCTC
[17:48] dgathright has joined the channel
[17:48] jesusabdullah: JimBastard: You got banned from github?
[17:48] JimBastard: jesusabdullah: hell ya
[17:48] pkrumins: wattz, i'm around.
[17:48] JimBastard: i got banned from most places at least once
[17:48] FransWillem: JimBastard: How? Why :S?
[17:48] JimBastard: name any major website
[17:48] jesusabdullah: I didn't know you COULD be banned from github
[17:48] jpld has joined the channel
[17:48] JimBastard: ohh yeah
[17:48] JimBastard: i have the copy and paste firebug script to run that will get you banned
[17:48] JimBastard: technoweenie will yell at me though, so ima chill on that
[17:49] JimBastard: let me see if i can dig up the screen shot i took
[17:49] jesusabdullah: Huh!
[17:49] technoweenie: uh yea its not hard to get banned
[17:49] jesusabdullah: I can't say I've ever tried though <_<
[17:49] technoweenie: JimBastard: and for the record, i wont yell at you. 
[17:50] jesusabdullah: He'll type at you in capital letters
[17:50] technoweenie: nope not even that
[17:50] technoweenie: click ban button, go on with life
[17:50] technoweenie: JimBastard: also, nice ascii art :)
[17:50] JimBastard: technoweenie: i was being poetic 
[17:50] FransWillem: copy and paste firebug script ?
[17:50] jesusabdullah: CAPITAL LETTERS
[17:50] JimBastard: technoweenie: :-) you like my job post?
[17:50] JimBastard: http://i.imgur.com/irL01.png
[17:50] JimBastard: jesusabdullah + FransWillem  ^^^
[17:50] jesusabdullah: ahahahaha
[17:51] jesusabdullah: That's amazing
[17:51] technoweenie: someone told JimBastard about a bug w/ watching repos, so he exploited it
[17:51] jesusabdullah: I can see why they got uppity though
[17:51] JimBastard: for the record abusing github is not cool
[17:51] streampunk: What you really need now is a REST API for getting banned. POST /banme
[17:51] JimBastard: technoweenie: i still dont think thats a bug
[17:51] streampunk: JimBastard: But getting lots of followers is }}:-)
[17:51] jesusabdullah: But guys! github's not /b/!
[17:52] claudiu__ has joined the channel
[17:52] JimBastard: really though, dont fuck with github
[17:52] mattly has joined the channel
[17:52] technoweenie: it wasnt that big of a deal though.  it didnt really affect the site
[17:52] technoweenie: people do shit all the time that does affect the site :/
[17:53] JimBastard: i figured it would trigger the cascading email issue though
[17:53] JimBastard: sending out (O)n2 emails
[17:53] JimBastard: or something
[17:53] JimBastard: and yeah, the whole thing was like 2 hours and fairly uneventful
[17:53] technoweenie: yea but the ad was sweet
[17:54] streampunk: If it ran long prob... but they are running rails not node for that so I doubt email would be the bottleneck. ;-)
[17:54] technoweenie: streampunk: git and the db are teh bottleneck.  rails is awesome
[17:54] streampunk: technoweenie: For email sending? I'm just thinking STMP servers serve faster than rails dispatches.
[17:54] _announcer: Twitter: "Today, another C++ binding for #NodeJS: http://github.com/astro/node-stringprep" -- Astro. http://twitter.com/astro1138/status/20405634523
[17:54] technoweenie: it takes a lot more memory and a few more servers to run, but otherwise it's very productive for developers
[17:54] technoweenie: rails doesnt do smtp
[17:55] technoweenie: it pushes that to an smtp server
[17:55] hansek has joined the channel
[17:55] technoweenie: our emails are queued in resque i believe anyway.  not a big deal.  
[17:55] jesusabdullah: github does use rails?
[17:55] streampunk: technoweenie: I know rails well. Yeah. That's what I'm saying. Rails would push slower than the SMTP server would pick up.
[17:55] jesusabdullah: I knew ruby was big there :/
[17:55] _announcer: Twitter: "Check out my node.js v0.2.0 of me for MySQL: Sequelize http://bit.ly/bngiLd" [ga] -- Sascha Depold. http://twitter.com/sdepold/status/20405695599
[17:55] technoweenie: jesusabdullah: oh yea def
[17:55] technoweenie: well most of it is rails
[17:55] jesusabdullah: Huh!
[17:56] ngw has joined the channel
[17:56] streampunk: :-) It works. I'm not a fan of rails but certainly not an enemy.
[17:56] JimBastard: streampunk: you do rails work? i might have a contracting gig
[17:56] jesusabdullah: I haven't used it, so I don't really have a strong opinion
[17:56] JimBastard: my friend wanted to build this website for her blog
[17:56] technoweenie: its awesome for that boring cms/crud type shit
[17:57] JimBastard: ;-)
[17:57] jesusabdullah: I just know that SubStack hates on it pretty hard
[17:57] streampunk: JimBastard: :-P You know I do but I don't advertise it since I'd rather not.
[17:57] sveimac has joined the channel
[17:57] technoweenie: jesusabdullah: there are lots of ways to build web apps, and lots of types of apps to build.  if your app matches what rails is good at, it's great.  
[17:57] technoweenie: but like any framework -- if you have to fight the framework then it sucks. find something else
[17:57] jesusabdullah: I use jekyll for my blog <_<
[17:58] amerine: technoweenie: +1
[17:58] jesusabdullah: technoweenie: I like that. Well-said.
[17:58] technoweenie: its great that there's sinatra, or node.js, or lift, whatever.  use whatever you're most productive in
[17:58] JimBastard: rails is great if you dont mind living in DHH's box
[17:59] amerine: oh god. 
[17:59] technoweenie: tbh we're looking at splitting out a lot of rails crap out of github into other stuff.  most of it is read-only from git repos and stuff
[17:59] jesusabdullah: huh
[18:00] wattz: yay, segfault!
[18:00] jesusabdullah: ^5
[18:00] zapnap has joined the channel
[18:00] ngw: rails 3 seems more Yehudaland than DHHland :)
[18:01] ngw: actually my next startup will be rails 3 + node.js
[18:01] wattz: now THAT isa  very good thing
[18:01] technoweenie: when yehuda joined the core team, they came to realize that the rails/merb goals went well together
[18:01] ngw: I really like rails 3 to be honest
[18:01] technoweenie: i'm so glad they merged the two.  it could have gone really badly
[18:02] wattz: can't say I am or have ever really buy a rails/merb guy
[18:02] technoweenie: i just remember when phpnuke was the rage, and there were like 5 different forks because of small philosophical differences
[18:02] slaskis has joined the channel
[18:02] ngw: definitely
[18:02] wattz: i wish they would stop bloating django though
[18:02] wattz: it just seems to get bigger and bigger
[18:02] ngw: only thing I don't really like is the new routing syntax
[18:03] ngw: and I'm quite sure there will be some plugin / gem mess when they will release it
[18:03] jesusabdullah: Still haven't tried django
[18:03] jesusabdullah: idk, for some reason the really big frameworks kinda scare me off
[18:03] voodootikigod_ has joined the channel
[18:03] ngw: for example you can't write specs that use subdomains
[18:03] jesusabdullah: Maybe it just sounds like a lot to learn?
[18:04] amerine: I like the new route syntax, the match :to lines are wall less to type. 
[18:04] amerine: s/wall/way
[18:04] wattz: you guys play with django at all, the routing is why i chose it
[18:05] wattz: choiced it!
[18:05] jesusabdullah: hah!
[18:05] matclayton has left the channel
[18:05] knuckolls has joined the channel
[18:05] amerine: wattz: are you talking about the urlpatterns stuff?
[18:06] _announcer: Twitter: "I got node.js to work but no luck with Express #nodedotjs" -- Jason Melgoza. http://twitter.com/jasonmelgoza/status/20406328476
[18:06] rauchg_: technoweenie: haha phpnuke 
[18:06] rauchg_: that was so awful
[18:06] rauchg_: feels like forever ago
[18:06] wattz: amerine: yeah
[18:06] jesusabdullah: I've never actually heard of phpnuke
[18:06] technoweenie: old cms type thing
[18:07] wattz: jesusabdullah: how old are you?
[18:07] technoweenie: kind of like drupal i think?  
[18:07] rauchg_: based on boxes/blocks 
[18:07] EyePulp has joined the channel
[18:07] technoweenie: or slashdot 
[18:07] JimBastard: ahhh no frankie
[18:07] technoweenie: haha that was ages ago
[18:07] amerine: wattz: the only thing I fucking love about django is 'get_object_or_404'
[18:07] eggie5 has joined the channel
[18:07] rauchg_: technoweenie: drupal is much more flexible 
[18:07] rauchg_: nuke was unhackable
[18:07] mizerydearia has joined the channel
[18:07] wattz: amerine: yeah, nice shortcuts
[18:07] JimBastard: i remember winnuke, does that count
[18:07] eggie5: what's a good testing framework for node.js????
[18:07] wattz: amerine: the forms rocked too once you adjusted to the approach
[18:07] JimBastard: eggie5: VOWSSSSSS
[18:07] JimBastard: eggie5: http://vowsjs.org
[18:07] technoweenie: eggie5: vows or expresso
[18:07] wattz: geez.... i must be old
[18:08] tjholowaychuk: eggie5: expresso :D
[18:08] wattz: phpnuke seems like yesterday
[18:08] jesusabdullah: hah
[18:08] jesusabdullah: How old are you?
[18:08] wattz: 30
[18:08] eggie5: JimBastard: wow so fast
[18:08] jesusabdullah: Ah
[18:08] technoweenie: wattz: me too, ha
[18:08] jesusabdullah: I'm only 23
[18:08] jesusabdullah: just a kid!
[18:08] wattz: haha
[18:08] technoweenie: thats right, you were just a whiny baby back then
[18:08] javajunky has joined the channel
[18:08] jesusabdullah: Indeed!
[18:08] rauchg_: yeah
[18:08] technoweenie: i was using phpnuke in the 70s
[18:08] wattz: aye
[18:08] JimBastard: eggie5: whats fast?
[18:08] rauchg_: some of us just spent our childhood in front of the computer :P
[18:09] stride: phpnuke? please.. :D
[18:09] wattz: man Im on the fence as to why you would want a db layer for node to be async (other than insert, i guess)
[18:09] jesusabdullah: I did too! Just didn't have innernets
[18:09] tjholowaychuk: rauchg_: dialup is where its at man
[18:09] tjholowaychuk: lol
[18:09] eggie5: JimBastard: response time - vows looks nice... i was messing w/ jasmine and don't like it....
[18:09] mattly: vows++
[18:09] wattz: technoweenie: we were running Web 1.0beta back then
[18:09] technoweenie: i'm kidding, i was in nam
[18:09] FransWillem: wattz: DBs are slooow, in the time you'd be waiting for a SELECT to return, Node could be doing a whole load of things instead.
[18:09] JimBastard: lol eggie5 im at the place where they wrote jasmine right now
[18:09] stride: wattz: because node can do other stuff while your DBMS is working
[18:09] eggie5: JimBastard: where?
[18:10] ngw: phpnuke was a security problem that had the side effect of serving content from time to time
[18:10] stride: (I guess)
[18:10] JimBastard: eggie5: pivotal
[18:10] wattz: I get that... but server side...
[18:10] jesusabdullah: When was phpnuke around?
[18:10] eggie5: JimBastard: ah they seem smart I'll try it....
[18:10] JimBastard: but yeah, vows is pretty sweet. im literally using it right now
[18:10] wattz: you want results to pass to your template.
[18:10] wattz: for instances
[18:10] JimBastard: eggie5: USE VOWS
[18:10] jesusabdullah: Like, years-wise?
[18:10] JimBastard: eggie5: NOT jasmine
[18:10] wattz: you can't render a template without results
[18:10] ngw: 2000/2001
[18:10] amerine: nah ubb.cgi was a security problem that sometimes served content. 
[18:10] stride: wattz: so? pass it in the I'm-done callback :)
[18:10] jesusabdullah: Hmm
[18:10] ngw: don't remember honestly
[18:10] eggie5: JimBastard: haha... i shall
[18:10] rauchg_: does anyone remember these http://upload.wikimedia.org/wikipedia/commons/d/db/US_Robotics_56K_Modem_Front.JPG
[18:10] wattz: stride: what else would you do?
[18:10] jesusabdullah: I was in middle school!
[18:10] wattz: I can see that being true on client side
[18:10] streampunk: JimBastard: E2.0 is using node?
[18:11] technoweenie: ATDT
[18:11] JimBastard: eggie5: while you are at it go here and here. http//github.com/marak and http://github.com/cloudhead
[18:11] JimBastard: streampunk: no
[18:11] technoweenie: AT&F&C1&D2
[18:11] JimBastard: im working on some api wrappers for something else
[18:11] wattz: rauchg_: i still have one... called an iphone.
[18:11] JimBastard: http://github.com/marak
[18:11] streampunk: rauchg_: What? I'm using it right now with my wicked 3d interface in grand central... while wearing roller blades.
[18:11] jesusabdullah: That was when I heard about this new-fangled "linux" thing but the school was the only place in like 30 miles that had the tubes necessary to attempt an iso download
[18:11] tjholowaychuk: ahaha
[18:11] joshbuddy has joined the channel
[18:11] wattz: I mean im writing this db driver with an async option
[18:11] jelveh has joined the channel
[18:12] wattz: but it's just kind of a grey area to me
[18:12] kriskowal has joined the channel
[18:12] wattz: client-side, async makes a bunch of sense
[18:12] JimBastard: streampunk rolls around with a mac mini in his backpack and he vnc's into it from his ipad. he's bad ass, watch out
[18:12] jesusabdullah: I asked a teacher about downloading Red Hat (didn't know much about the different distros then, just picked one), and she wrote "red hot lennox" in her notebook
[18:12] amerine: Do I remember them? I have a stack http://skitch.com/amerine/dxau6/2010-08-05-11.11.11
[18:12] wattz: server-side somethings it does (like an insert), but other than that it would seem I need the data to form my response
[18:12] jamescarr: jesusabdullah, reminds me of back in the day in high school.. I had to have a disc of slackware mailed to me
[18:12] streampunk: JimBastard: It works though!
[18:12] jesusabdullah: That's awesome
[18:13] jamescarr: it was the best $3 I spent though
[18:13] wattz: ACTION puts amerine on his 'worry about' list
[18:13] FransWillem: Hmm, discussion, is it OK for long-polling servers to use two connections? (e.g. one for polling, another for pushing, instead of combining the two)
[18:13] jamescarr: $4 or $5, cant remember
[18:13] JimBastard: ohh yeah, when i was your age, i had to give my friends GTA2 and starcraft spanned across 40 some odd floppy disks
[18:13] amerine: wattz: I'm the IT director for newspaper. All our stuff is old.
[18:13] wattz: FransWillem: i do that
[18:13] jesusabdullah: When I used slackware, it was on a used Pentium MMX craptop, and I was working in the middle nowhere
[18:13] JimBastard: each
[18:13] rauchg_: ACTION puts amerine on his `worry about` list
[18:13] jesusabdullah: Had an ethernet cable running to my little cabin
[18:14] wattz: amerine: ahh
[18:14] amerine: Here are the computers the AP uses to send us Stories. http://skitch.com/amerine/dxaw8/img-2087
[18:14] jesusabdullah: could only run ratpoison as a wm
[18:14] jesusabdullah: It was pretty awesome
[18:14] JimBastard: rauchg_: am i on that list?
[18:14] wattz: ahh, Slackware on my Packard Bell 486 WITH TURBO
[18:14] JimBastard: :-D
[18:14] jesusabdullah: Aww yeah
[18:14] jamescarr: wattz, Packard Bells were crap
[18:14] wattz: were?
[18:14] rauchg_: JimBastard: you're off-charts
[18:14] jamescarr: that was my second computer :)
[18:14] stride: JimBastard: those lists are delivered with your name on it ;)
[18:14] jacoblyles has joined the channel
[18:14] JimBastard: hee hee
[18:14] jamescarr: 486DX with 4mb of ram
[18:14] mscdex: 56k? gosh, i feel old
[18:14] jamescarr: :)
[18:14] mscdex: :p
[18:14] wattz: I have to contribute all my success and career as a programmer to my Commodore64 and 128
[18:14] jesusabdullah: I have a sense of nostalgia for packard bell POSs as well
[18:15] jesusabdullah: cause I grew up on them :(
[18:15] jesusabdullah: I think our first innernets were 28k
[18:15] jesusabdullah: and we were a little late on the bandwagon
[18:15] dannycoates has joined the channel
[18:15] mscdex: bbs ftw
[18:15] stride: jesusabdullah: have you had a chance to try the irclib retryCount stuff?
[18:15] wattz: learned C at 8 on a Commodore by copying and fiddling with the code examples in the manual :D
[18:15] jesusabdullah: I didn't have any luck with it, stride
[18:16] wattz: still have the Commodore 128
[18:16] wattz: works too
[18:16] jesusabdullah: I sold an Atari 1040st not too long ago
[18:16] mscdex: i still have my 2 Amiga A500s and 1 A1000 :-D
[18:16] jesusabdullah: sans-monitor, thirty bucks
[18:16] stride: jesusabdullah: not? strange.. I think the only event the lib doesn't process is the general error handler for the tcp stream
[18:16] wattz: ACTION now wants to go home and play Pitfall on it now..
[18:16] jesusabdullah: wanted to use it for chiptunes
[18:16] creationix: wattz: that's amazing
[18:16] programble has joined the channel
[18:16] wattz: creationix: it was more mimicing than anything then
[18:16] rsms has joined the channel
[18:16] creationix: I had like 5 of them, but they always broke the day after the 1yr warrenty ran out
[18:16] jesusabdullah: stride: Yeah, definitely weird
[18:16] wattz: creationix: lol
[18:16] jesusabdullah: stride: Are we using the same lib? <_<
[18:16] creationix: (hence why I had 5)
[18:17] jesusabdullah: stride: We are, right?
[18:17] wattz: creationix: wow
[18:17] stride: ACTION still has a orange/black display 386 for playing QBasic Nibbles & Gorrilaz :>
[18:17] wattz: creationix: they didn't like you :(
[18:17] stride: jesusabdullah: yeah, think we checked that
[18:17] jesusabdullah: Yeah
[18:17] jesusabdullah: thought so!
[18:17] creationix: 386, that's where I really learned to program
[18:17] wattz: then my next fav computer was my Ti-85 (once i wrote zShell with a few friends)
[18:17] creationix: I did qbasic on a 386 for about 8 years solid
[18:17] jesusabdullah: I had gorillas on my old computer but couldn't figure out programming
[18:17] ngw: is Vows better than JSpec ?
[18:17] tjholowaychuk: creationix: your scooter is badass haha
[18:17] jesusabdullah: was too young mebbs
[18:18] tjholowaychuk: ngw: yes
[18:18] ngw: it's async so it should be quicker
[18:18] creationix: tjholowaychuk: yes, I love it
[18:18] tjholowaychuk: jspec is discontinuedddd
[18:18] ngw: ok
[18:18] ngw: oh !
[18:18] creationix: and I finally payed it off too
[18:18] jelveh has joined the channel
[18:18] jesusabdullah: Plus, vows has that outrageous color scheme on their web page
[18:18] ngw: thanks guys
[18:18] jesusabdullah: Can't go wrong!
[18:18] tjholowaychuk: ngw: but jspec supported browsers as well, vows is optimized for node
[18:18] tjholowaychuk: creationix: how much was it?
[18:18] rauchg_: it'd be nice to be able to mark projects in github
[18:18] rauchg_: as discontinued
[18:18] rauchg_: or `superseded by`
[18:18] JimBastard: rauchg_: ive been over this before
[18:18] creationix: tjholowaychuk: about 8K
[18:19] jesusabdullah: I think I saw someone blog about that the other day
[18:19] tjholowaychuk: oh wow
[18:19] JimBastard: rauchg_: they thinking about adding something like that
[18:19] creationix: very expensive for a scooter, but it's cheaper than getting second car
[18:19] bradleymeck_ has joined the channel
[18:19] tjholowaychuk: true true
[18:19] deepthawtz: jesusabdullah: gorillas on your computer?
[18:19] jamescarr: bah!
[18:19] jesusabdullah: Yeah!
[18:19] tjholowaychuk: ive never seen one with two front wheels
[18:19] creationix: and I get to park in the nice lots
[18:19] JimBastard: rauchg_: there are a few issues about this on their support forums too
[18:19] wattz: now to think how to handle results..
[18:19] jamescarr: I think I'm going to skip braintree support for now
[18:19] jamescarr: move on and add a documented payment gateway
[18:19] jesusabdullah: Oh, have you guys seen Al Swiegart's python gorillas clone?
[18:19] stride: hmm, did someone release a new shiny webdemo or why is the room so full today? :)
[18:19] x_or: I'm having a weird issue with node and jQuery when I do a get request.  I am sending back JSON, but wondering if I am perhaps not closing the connection properly.  My callback in the $.get() method never gets executed, though I can view-source on the same URI and see what I expect.  Would my callback not be executed if the connection is kept alive perhaps?
[18:20] JimBastard: x_or: you gotta isolate and determine if its jQuery or node failing
[18:20] JimBastard: x_or: also what is your JS skill level, are you trying to do a cross-domain request?
[18:20] x_or: Nope, all of this is on the same domain.
[18:20] JimBastard: what does console say?
[18:21] x_or: If I run inside the Firebug console, I see the net request succeed, can view the content as I expect.
[18:21] x_or: But, my callback never gets called.  $.get( '/uploads/status', function(data) { alert( "Hi" ); } );
[18:21] JimBastard: so you prob have a jquery bug
[18:21] x_or: This never runs.
[18:21] x_or: Yeah, but putting that inside another web page works fine.
[18:21] kuya: connect guys... if i really want "global" middleware do i have to use several servers?
[18:21] creationix: tjholowaychuk: yeah, that's why it costs so much, but it gives so much more traction and braking power
[18:21] JimBastard: x_or: "putting that inside another web page" wtf does that mean
[18:21] kuya: ACTION thinks he's missing something 
[18:22] x_or: JimBastard:  If I take the same jQuery code and put inside a HTML served locally, I see the alert.
[18:22] tjholowaychuk: creationix: i believe it, looks like you could go offroading with that thing
[18:22] x_or: If I run the get request against my node server, it does not return properly.
[18:22] tjholowaychuk: I built a dune buggy when i was younger
[18:22] creationix: tjholowaychuk: not hardly, but it's great in the city
[18:22] tjholowaychuk: fun shit
[18:22] creationix: tjholowaychuk: btw, when do you plan on visiting?
[18:22] JimBastard: x_or: you just said you saw the net response in firebug right
[18:22] x_or: Yes.
[18:22] JimBastard: x_or: check the headers of the resp
[18:22] tjholowaychuk: creationix: its not set in stone yet but decently soon im thinkingk
[18:23] JimBastard: something must be borked
[18:23] rauchg_: tjholowaychuk: 
[18:23] tjholowaychuk: creationix: jsut trying to sort some stupid stuff here out
[18:23] JimBastard: you might have to specify Content-Type in jQuery or node or something
[18:23] tjholowaychuk: rauchg_: what up
[18:23] JimBastard: it should just work
[18:23] rauchg_: don't be a lil b* and come to the next node meetup
[18:23] dannycoates has joined the channel
[18:23] rauchg_: next tuesday 
[18:23] creationix: tjholowaychuk: cool, just let me know
[18:23] tjholowaychuk: will do
[18:23] x_or: Hmm, connection is keep alive, but...
[18:23] x_or: content type is application/json.
[18:23] tjholowaychuk: rauchg_: haha :p we shall see
[18:23] x_or: Neither $.getJSON nor $.get works.
[18:24] creationix: rauchg_: I already tried, it's a long drive and an expensive flight
[18:24] rauchg_: you'll make a surprise appearance ?
[18:24] x_or: Though Firebug does parse into JSON properly.
[18:24] creationix: we have pgriess at least :)
[18:24] x_or: JimBastard:  MIME type looks proper, anything else I should look for?
[18:24] volve has joined the channel
[18:25] _announcer: Twitter: "here is a little talk i gave at #jsconf this year. http://blip.tv/file/3881880/ #javascript #node.js #nodejs about my hook.io project" -- marak squires. http://twitter.com/maraksquires/status/20407481086
[18:25] dylang: tjholowaychuk: i'm having trouble overriding the layout in express 1.0.rc.  is res.render('view', { layout: 'alternatelayout/crazylayout.ejs', locals: { } }); not correct?
[18:25] JimBastard: wow that parsed fucking fast
[18:25] creationix: rauchg_: my app still hates socket.io on IPad
[18:25] omarkj: I know that the $.getJSON in jQuery fails silently. Which is great.
[18:25] rauchg_: creationix: im gonna debug the s* out of ipad this weekend
[18:26] creationix: good
[18:26] rauchg_: my goals for this weekend 
[18:26] rauchg_: are 
[18:26] tjholowaychuk: dylang: hmm i think that should be fine, i know absolute paths work, like __dirname + '/foo/mylayout.ejs'
[18:26] creationix: rauchg_: want the code to my game? in case I don't release it by then
[18:26] tjholowaychuk: dylang: that *should* work though, if not confirm
[18:26] x_or: Is there a way to force keep alive off with a node connection?  creationix, tjholowaychuk, I am using connect, perhaps a middleware piece is keeping my connection alive which is messing with jQuery response callback?  Just speculating...
[18:26] dylang: tjholowaychuk: i tried that too.
[18:26] rauchg_: jasmine for the client side, more expresso, ipad, client side disconnection detection and possibly disconnection signals 
[18:27] tjholowaychuk: dylang: hold up
[18:27] creationix: x_or: no, we don't touch keepalive
[18:27] dylang: tjholowaychuk: i'm putting junk in for layout and it's still using 'layout.ejs' from the views directory.
[18:27] creationix: it's all node
[18:27] x_or: OK, great, thanks.
[18:27] tjholowaychuk: dylang: my tests use both layouts/foo.jade and __dirname + '/fixtures/layouts/foo.jade' for alternates
[18:27] tjholowaychuk: dylang: so they should both work
[18:28] tjholowaychuk: dylang: aka your example should be fine
[18:28] x_or: I see in the headers of my request that keep-alive is true.  How do I turn this off?  I see .setNoDelay() inside the stream type, but is this a base class of HTTPServer, hmmm, more research needed.
[18:29] dylang: tjholowaychuk: this SHOULD produce an error, but i'm getting the default layout: res.render('jobs.ejs', { layout: 'wtf', locals: {  } });
[18:29] tjholowaychuk: dylang: let me test it one sec
[18:30] maushu has joined the channel
[18:30] slaskis has joined the channel
[18:31] x_or: Do I manually set keep-alive, or does node have convenience methods for this?  I don't see anything in the docs other than class stream, but this is obviously not a base class for http response.
[18:31] tjholowaychuk: dylang: im just getting an empty string, might be a bug there
[18:32] eggie5: did npmjs.org used to be a bad website or somethng....
[18:32] eggie5: for some reason my work blocks it...
[18:32] creationix: x_or: I think it's automatic
[18:32] JimBastard: eggie5: lol
[18:32] eggie5: as HIGH RISK
[18:32] creationix: x_or: set by the client
[18:32] JimBastard: eggie5: time to get a new job
[18:32] JimBastard: eggie5: or make friends with your sysadmin
[18:32] creationix: x_or: like when I'm testing with ab (apache bench) I set the keepalive with the -k flag
[18:32] eggie5: JimBastard: well I emailed them.......
[18:32] creationix: and node honors it
[18:33] JimBastard: isaacs: did you see what eggie5 said
[18:33] eggie5: JimBastard: now i have to install vows w/o npm.. blah
[18:33] x_or: creationix:  Oh, really?  So, somewhere in my app the browser is using keep-alive, interesting.  Wonder what triggers that.
[18:33] JimBastard: eggie5: why
[18:33] kuya: creationix: tjholowaychuk : what do i need to run connect tests?
[18:33] tjholowaychuk: kuya: git submodule update --init && make test should be enough
[18:33] eggie5: JimBastard: work blocks npmjs.org trffic
[18:33] JimBastard: curl http://npmjs.org/install.sh | sh
[18:33] JimBastard: all traffic?
[18:34] kuya: tjholowaychuk: thanks
[18:34] dylang: tjholowaychuk: shall i log a bug in github?
[18:34] stride: x_or: there is some shouldKeepAlive stuff in the http module, don't know if there is some public property / similar to override that
[18:34] jesusabdullah: eggie5: Your work doesn't use a whitelist does it?
[18:34] tjholowaychuk: dylang: nope i got it
[18:34] JimBastard: eggie5: if anything, open up a bug on github so isaacs at least knows
[18:34] JimBastard: name of the blocking software you use would be good too
[18:34] kuya: tjholowaychuk: are they meant to pass? 
[18:34] eggie5: JimBastard: http://gist.github.com/510166
[18:34] JimBastard: if npm is on a blacklist it needs to go
[18:35] x_or: stride, creationix:  I think I am barking up the wrong tree anyway, not sure keep-alive is the issue.  Just cannot get a $.get request to call my callback.  So strange.  
[18:35] dylang: tjholowaychuk: awesome thanks.  getting npm install express ready.
[18:35] kuya: tjholowaychuk: Failures: 12
[18:35] JimBastard: you work at qualcom ? 
[18:35] stride: x_or: didn't catch the beginning of the discussion, does your jQuery call receive anything at all?
[18:35] JimBastard: or do they do your network
[18:35] creationix: x_or: yeah keepalive is a tcp level thing
[18:35] tjholowaychuk: kuya: hmm yeah they should
[18:36] creationix: hmm, maybe http too, but you still get discrete request and responses
[18:36] stride: creationix: http too, isn't it? at least 1.1 has a header for it
[18:36] ewdafa has joined the channel
[18:36] creationix: stride: right, I corrected myself
[18:36] tjholowaychuk: kuya: k wait i just pulled from master and i get failures too
[18:36] tjholowaychuk: kuya: blame tim! lol jk
[18:36] kuya: tjholowaychuk: not sure if its just my ... ok good :)
[18:36] stride: creationix: right, enter was closer than ^W :)
[18:36] eggie5: JimBastard: who's isaacs? a vows maintainer???
[18:36] tjholowaychuk: kuya: I will take a look at what has changed lately
[18:37] creationix: but still, it doesn't affect the behavior, just makes it faster
[18:37] x_or: creationix, stride:  Yeah, I have a simple jQuery call:  $.get( '/uploads/status', function( data ) { alert( "Hi" ); } );.  I never see the alert, this code works on another web page, but not when I run it against my node app.  Unsure why.  I see the request in Firebug, parsed JSON correctly, everything.  Callback is never fired.
[18:37] stride: yeah
[18:37] _announcer: Twitter: "Demystifying events in node.js http://post.ly/qPM6" -- Kenny Shen. http://twitter.com/kenny_shen/status/20408148941
[18:37] creationix: x_or: most likely your node code has a broken callback chain and never closes the connection
[18:37] creationix: it's an easy mistake in node
[18:37] jesusabdullah: eggie5: Where do you work, ooc?
[18:37] jesusabdullah: I want to avoid that place!
[18:38] JimBastard: eggie5: hes the npm maintainer 
[18:38] JimBastard: eggie5: you could get npm from github too
[18:38] JimBastard: http://github.com/isaacs/npm
[18:39] x_or: creationix:  I basically call res.writeHead( 200, { "Content-type" : "application/json" } ); res.end( "{ 'hi' : 'you' } " );  Am I missing something there?
[18:39] JimBastard: x_or: you gotta isolate
[18:39] eggie5: JimBastard: ahh good idea... but I still think it'll do calls to npmjs.org that'll be blocked....
[18:39] phiggins has joined the channel
[18:39] creationix: x_or: no, that fine as long as you're sure that code is getting run
[18:39] JimBastard: i dont think $.get() defaults to app/json at all
[18:39] eggie5: jesusabdullah: qualcomm
[18:39] JimBastard: you might have to explicity set the content type
[18:39] creationix: x_or: put a console.debug after the res.end
[18:39] jesusabdullah: Huh!
[18:40] x_or: I hit the URL within Firefox view-source:http://localhost:3000/uploads/status (same as $.get call) and I see it fine there.
[18:40] x_or: I'll try that.
[18:40] jesusabdullah: eggie5: My girlfriend said qualcomm has some pretty snazzy color e-ink technology--you know anything about that?
[18:40] creationix: x_or: jquery might also be treating the response as an error and not call your success handler
[18:40] JimBastard: x_or: thats not the same
[18:40] creationix: try using the full ajax api instead of the simple get helper
[18:40] JimBastard: yeah, what creationix said
[18:40] JimBastard: use $.ajax
[18:40] JimBastard: and explicitly set all your vars
[18:40] stride: JimBastard: .get can handle json based on mime type according to documentation
[18:41] x_or: JimBastard, creationix:  I will.  
[18:41] JimBastard: i dont know anything about jquery
[18:41] x_or: I have tried $.getJSON as well.
[18:41] creationix: x_or: yeah, it should work, but it's not
[18:41] creationix: so something we're assuming isn't right
[18:41] x_or: Really, thanks for your help guys.
[18:41] JimBastard: x_or: post a gist with the request response from firebug and one from curl
[18:41] stride: x_or: http://api.jquery.com/ajaxError/ can you check if this is fired?
[18:41] JimBastard: and compare
[18:41] eggie5: jesusabdullah: you  mean like screen technology? yeah it's called mirasol - really cool - an lcd that is clear and colorfull in full daylight
[18:41] tjholowaychuk: dylang: layout exceptions seem to get lost in limbo, I will have that patched after lunch hopefully
[18:42] x_or: stride:  Excellent idea.
[18:42] jesusabdullah: eggie5: Sounds right!
[18:42] aglemann has joined the channel
[18:44] dylang: tjholowaychuk: awesome, thanks.
[18:47] femtooo has joined the channel
[18:48] x_or: stride:  You win a prize, JSON parse error.  Weird, Firebug likes the JSON, but not jQuery I guess.
[18:48] aglemann has left the channel
[18:49] creationix: x_or: is it JSON or javascript?
[18:49] creationix: JSON is a lot stricter
[18:49] creationix: expecially JSON.parse
[18:50] creationix: {name:"foo"} is valid JS but not JSON
[18:50] jesusabdullah: It's not?
[18:50] x_or: I am sending back JSON from node.  If I use $.getJSON with { 'foo' : 'bar' } no dice.  But { "foo" : "bar" } works.  I cannot use single quotes.  New to me, I just dropped a level in JS-foo.
[18:50] creationix: jesusabdullah: http://json.org/
[18:50] x_or: creationix:  Yep, that was basically my problems.
[18:51] creationix: in JSON all keys are strings and all strings have to use double quotes
[18:51] x_or: Now I know and knowing is half the battle.
[18:51] creationix: :)
[18:51] x_or: JimBastard, creationix, stride:  Thanks so much for helping me, I was getting lost in frustration.
[18:51] creationix: we're here to help
[18:51] tjholowaychuk: just think to yourself, what is the most annoying way i could write a js object, and that is json
[18:51] tjholowaychuk: lol
[18:52] x_or: creationix:  Hey, I would like to write an article on how to use rails and node together inside a project for howtonode.org if you'd like me to.
[18:52] creationix: x_or: that would be great
[18:52] creationix: I've been meaning to write one, but I'm not a rails guy
[18:52] creationix: just be warned I'm picky with articles
[18:52] creationix: keep it as short as and clear as possible
[18:52] kuya: jslint.com ftw :)
[18:52] x_or: No problem, I've got no ego around it.  I will draft something up and if you like it, great.
[18:53] creationix: x_or: that would be awesome
[18:53] x_or: creationix:  I'm in the middle of three massive projects right now, but that all clears up on Sunday, so in a week or two.  I'll put it on my calendar and get back to you then.
[18:54] creationix: hah, ok
[18:54] tjholowaychuk: ah fuck
[18:54] tjholowaychuk: got damnit
[18:57] _announcer: Twitter: "Will be off for 15+ days (holidays). Priorities after I come back: #nodejs #tapestry5 and #wooki . Yay \o/" -- Robin Komiwes. http://twitter.com/robinkomiwes/status/20409302813
[18:57] creationix: !tweet @robinkomiwes Awesome priorities!
[18:58] tahu has joined the channel
[18:59] paul____ has joined the channel
[19:00] davidwalsh has joined the channel
[19:01] isaacs: eggie5: looks like qualcom is blocking npmjs.org
[19:01] hansek has joined the channel
[19:01] ElVox_: 925k brush strokes in 850mb...hmmm
[19:01] mikeal has joined the channel
[19:02] eggie5: isaacs: true... no idea why... it says High Risk
[19:02] tjholowaychuk: ACTION lunch
[19:02] isaacs: eggie5: maybe because i'ts a .sh file?
[19:02] isaacs: eggie5: you could also just download the code from github and run "make"
[19:03] eggie5: isaacs: well even iff I do install npm when I go to use it isn't it going to call out to npmjs.org??
[19:04] eggie5: creationix: do you know if your postgres-pure lib works on node v0.1.102??
[19:04] jamescarr: how can I capture Error: ECONNRESET, Connection reset by peer? I put a try/catch around the http.client call but it doesnt catch it
[19:04] creationix: eggie5: it should
[19:05] creationix: I'm using it on heroku now (v0.1.101 I think)
[19:06] _announcer: Twitter: ""Company: Joyent" http://github.com/ry - now, say node.js hosting asap please" [fil] -- Robert Brook. http://twitter.com/robertbrook/status/20409814944
[19:06] eggie5: creationix: it's still giving me errors: http://gist.github.com/510212
[19:06] hellp has joined the channel
[19:06] creationix: eggie5: ahh, something is throwing an exception and I'm not catching it
[19:06] FransWillem: Hmmmm, some thinking, if I do setTimeout, then do a lot of calculations (meanwhile the timeout will have triggered), and then do a clearTimeout, will the timeout still trigger because it was already on the event list ?
[19:07] jamescarr: sneaky
[19:07] creationix: eggie5: or rather I'm not listening for the "error" event
[19:07] jamescarr: that api feels odd.
[19:07] creationix: and so node throws an exception when there is an "error" event
[19:07] jamescarr: request.socket.on('error', fn)
[19:07] creationix: eggie5: add a listener for "error" to see what the exception is
[19:08] eggie5: creationix: ok....
[19:08] eggie5: i'll trhow it in postgres-pure.js
[19:08] creationix: yep
[19:09] JimBastard has joined the channel
[19:09] creationix: addListener('error', function (err) { throw err; })
[19:09] creationix: then you'll get the real exception
[19:09] creationix: not sure why node hides the original exception
[19:11] eggie5: creationix: http://gist.github.com/510212
[19:11] creationix: ahh, someone saw that error yesterday, it wasn't you was it?
[19:12] eggie5: creationix: i was talking about some diff the other day i think
[19:13] eggie5: creationix: well - i've been staring at it forever and i'm stumped... any ideas?
[19:13] creationix: no, but I think I'm about to dig in
[19:13] eggie5: creationix: please! I'll look at it more too and let you know (after lunch!)
[19:14] streampunk: ACTION sighs... GC can suck.
[19:14] jesusabdullah: gc?
[19:14] jesusabdullah: gamecube?!
[19:14] joshbuddy has joined the channel
[19:14] streampunk: garbage collection
[19:14] jesusabdullah: Dawg my gamecube rocks :(
[19:14] jesusabdullah: orite
[19:14] creationix: eggie5: yes, it was you the other day, and not the exact error
[19:14] jesusabdullah: Yeah
[19:14] streampunk: gamecube will always rock. Still have mine. ;-)
[19:14] creationix: I'll work on it
[19:15] streampunk: This app spends 40% in GC. Working on reducing heap trashing right now but it's lots and lots of code.
[19:16] teemow has joined the channel
[19:16] aglemann has joined the channel
[19:16] pquerna: ah crap
[19:16] pquerna: i forgot
[19:17] pquerna: next tuesday is the cassandra summit
[19:18] stepheneb has joined the channel
[19:20] wattz: now to think how to handle results..
[19:20] wattz: oops
[19:20] jamescarr: so if you wmit an error and there's no listener, it just throws an exception out somewhere?
[19:20] bronson has joined the channel
[19:24] ericclemmons has joined the channel
[19:25] jakehow has joined the channel
[19:25] _announcer: Twitter: "@jdub I'm looking at your node.js packages and I notice that the package renames "node" to "nodejs".  Why?" -- Bryan Forbes. http://twitter.com/BryanForbes/status/20410953059
[19:28] x_or has joined the channel
[19:28] javajunky has joined the channel
[19:31] FransWillem: Is there a new process.inherit or sys.inherit somewhere ?
[19:32] wattz: hey, if i have a Localblah = Object::New()... how do you release it after you are done?
[19:32] wattz: delete(), release()?
[19:34] _announcer: Twitter: "@lessallan Wasn't Joyent behind Node.js?" -- Chris Coyier. http://twitter.com/chriscoyier/status/20411419163
[19:34] FransWillem: wattz: Best is to put a handlescope at the top of your function and use Handle instead,
[19:35] wattz: details?
[19:36] FransWillem: http://bespin.cz/~ondras/html/classv8_1_1HandleScope.html
[19:36] bradleymeck_: Dispose()
[19:36] bradleymeck_: oh if its in a scope ya
[19:37] FransWillem: wattz: http://code.google.com/apis/v8/get_started.html
[19:37] FransWillem: wattz: Err, sorry, this one is more helpful: http://code.google.com/apis/v8/embed.html
[19:37] FransWillem: wattz: Read that embedders guide (it's not a very long read), and most things should become clear
[19:37] bradleymeck_: franz there is a sys.inherit
[19:38] bradleymeck_: destructors on externals are painful though imho
[19:38] FransWillem: bradleymeck_: Yeah, just found out it still exists, thought it had disappeared as it was no longer in the docs
[19:39] maushu has joined the channel
[19:42] jacoblyles has joined the channel
[19:43] _announcer: Twitter: "Distribution outs of the Bar! Hetilapnál bathtub-Find the newsstands on Fridays! http://barikad.hu/node/58237" [hu] -- Jobbik (Vas megye). http://twitter.com/jobbikvas/status/20411913633
[19:46] ashleydev has joined the channel
[19:47] brapse: ryan_gahl: are the slides from your google tech talk available online somewhere?
[19:47] ryan_gahl: 11,00•12,00brapse11,00• not me
[19:47] ryan_gahl: ryah
[19:47] ryan_gahl: I'm "The Other Ryan *ahl"
[19:47] brapse: ryan_gahl: tab completion fail. sorrya bout that
[19:48] ryan_gahl: np
[19:48] brapse: ryah: are the slides from your google tech talk available online somewhere?
[19:48] ryan_gahl: lol
[19:49] dylang has joined the channel
[19:49] ryan_gahl: will the real Ryan Dahl please stand up
[19:49] jamescarr: dammit
[19:49] konobi: i've done a little bit of javascript once or twice... can I be a knockout judge!?!??!
[19:49] konobi: =0P
[19:49] jamescarr: looks like my latest changes for authorize.net didnt get pushed out
[19:50] dylang has joined the channel
[19:52] tjholowaychuk has joined the channel
[19:54] tmpvar has joined the channel
[19:55] jamescarr: cloudhead, hey you there?
[19:55] shajith has joined the channel
[19:55] dylang: tjholowaychuk: i found one of my problems by spitting out the error:  i was calling a layout that relied on partials.  it looks in the current app's partial directory, not the one relative to the layout.  i guess that's fine, but now i need a real workaround to my problem.
[19:56] jamescarr: I dont want to use fn(err, result) style callbacks but vows tries to coerce me into it
[19:56] tjholowaychuk: dylang: hm yeah its never relative to the layout
[19:56] jamescarr: so all of my examples are in the form function(result, ignore)
[19:56] tjholowaychuk: dylang: i did find a bug in connect though
[19:57] _announcer: Twitter: "I really need to check out node.js. Where do I start?" -- Mikael Deurell. http://twitter.com/deurell/status/20412705434
[19:58] bradleymeck_: you are passing results as errors?
[19:58] jamescarr: no
[19:58] jamescarr: my callbacks only have one param
[19:58] jamescarr: because they're added as event listeners
[19:58] huyhong has left the channel
[19:58] jamescarr: it doesnt make sense for them to have errors passed to them, because 'error' is the specific error event
[19:59] bradleymeck_: but could future extensions of that throw errors?
[19:59] jamescarr: so on('success', function(err, result) {}) seems kind of senseless
[19:59] jamescarr: (success isn't the only result however)
[19:59] dylang: tjholowaychuk: so what i really want is a parent app that is responsible for the overall site layout, and child apps that are responsible for the content of their section of the page.  the child app layouts are just their chrome.  so i think i need the parent app's router to call out to the child apps, the child apps to pass the render results back as a callback - but i'm not sure how to tie the parent and child apps together.
[20:00] bradleymeck_: mmm the err is really nice cause it is forwards compatible even if a bit odd though
[20:00] tjholowaychuk: dylang: that is not really the scope of express though, but anything to aid in making it more flexible i am fine with
[20:00] tjholowaychuk: dylang: I have a similar problem with one of my problems but I proxy res.render() to let sub-apps use the parent app layout
[20:00] tjholowaychuk: but still serve their own views
[20:01] jamescarr: bradleymeck_, how??? if they want to handle the error, they'll listen to the error event. Why would I want to fire a success or declined event with an error?
[20:01] dylang: tjholowaychuk: that seems to be what i'm left with.  seems messy.
[20:01] tjholowaychuk: dylang: it is somewhat messy i guess, but its a very specific task
[20:01] tjholowaychuk: that express really has nothing to do with
[20:01] bradleymeck_: jamescarr if a module inside of yours throws?
[20:02] tjholowaychuk: dylang: you could maybe use the new "view options" setting to point layout to the absolute path
[20:02] dylang: tjholowaychuk: that doesn't fix the problem that layout has partials
[20:03] bradleymeck_: perhaps the throw is the success condition for the test
[20:03] dylang: tjholowaychuk: and requires locals that the child app isn't aware of (like site navigation)
[20:03] jamescarr: bradleymeck_, in that case, I still wouldnt want to fire a success event :)
[20:04] bradleymeck_: well what about interruptible parsers that use throw? it might not be needed by you but i can keep listing reasons
[20:04] JimBastard: fraannkkkieeee
[20:04] JimBastard: i wanna twat at people
[20:04] JimBastard: :p
[20:04] bradleymeck_: blah, home inets is down
[20:05] JimBastard: we are almost ready to push the new version of nodejitsu
[20:05] JimBastard: once we get that live i can take over hosting if that helps
[20:06] bradleymeck_: sure, might do one last rewrite before that to get liveedit on him
[20:06] jamescarr: bradleymeck_, eh, I suppose you have a point
[20:06] JimBastard: liveeditt?
[20:06] JimBastard: you mean updates without reboot?
[20:06] bradleymeck_: in place diff swaps of source, yea
[20:07] jamescarr: wait a second... not really
[20:07] JimBastard: well, we can actually do that with the broodmother api
[20:07] JimBastard: you can just do an update command
[20:07] JimBastard: that will pull from git and restart process
[20:07] jamescarr: in the case where I parse xml to verify the transaction's success, if an error is thrown before hand I emit an error event
[20:07] jamescarr: so my other events wont have an error attached
[20:08] bradleymeck_: jamescarr, a functional recursive decent parser can maintain state on a stream using throw, its on newsgroup a while back
[20:09] bradleymeck_: jim, that would work too, are you supporting .node files?
[20:11] derferman has joined the channel
[20:11] JimBastard: bradleymeck_: i dont know what a .node file is
[20:11] bradleymeck_: the c++ addon files
[20:11] JimBastard: but if someone wants it, we support it
[20:11] JimBastard: link?
[20:12] bradleymeck_: i just want overload to let me do some stuff w/o leaking, http://nodejs.org/api.html at bottom
[20:15] ajpi has joined the channel
[20:16] bradleymeck_: does v8 Wrap/Unwrap handle destructors?
[20:17] x_or has joined the channel
[20:17] FransWillem: bradleymeck_: No
[20:18] bradleymeck_: bleh, have to extend object makes me a sad panda
[20:20] bradleymeck_: are you sure? in process.cc they never use destructor or free on the map that is an internalfield
[20:21] tilgovi has joined the channel
[20:22] FransWillem: Hmm, I'm pretty sure you need weak references to be able to call destructores when an object is GC'd
[20:24] ElVox has joined the channel
[20:24] _announcer: Twitter: "@alanb meet @alecmuffett - connection is shared interest in node.js" -- Jim Anning. http://twitter.com/JimAnning/status/20414223164
[20:24] bradleymeck_: yea, but there was the off chance that wrapping it would automagically cause it to get deleted on gc, guess not, needs to be more docs on that
[20:29] ryan_gahl: anyone have experience with aiCache?
[20:29] stagas has joined the channel
[20:29] ngw: weird
[20:29] aglemann has joined the channel
[20:29] ngw: all the output I'm able to have from jade is not indented
[20:29] aglemann has left the channel
[20:31] loinclot_ has joined the channel
[20:31] elliottkember has joined the channel
[20:32] tjholowaychuk: ngw: I want to add a pretty option
[20:32] tjholowaychuk: eventually
[20:32] wattz: scripting languages have ruined me for " vs '
[20:33] zemanel has joined the channel
[20:33] ericclemmons: wattz: What do you prefer?  " or '?
[20:33] knuckolls has joined the channel
[20:33] wattz: ericclemmons: whatever my finger hits
[20:33] wattz: lol
[20:33] chrischris has joined the channel
[20:33] JimBastard:    is pretty good but    is kinda weak sauce because of    when you are trying to    
[20:33] wattz: but in C/C++ " and ' are very different
[20:34] ryan_gahl has left the channel
[20:34] wattz: http://imgur.com/cTRb7
[20:34] bradleymeck_: i prefer ', dont need shift
[20:34] aho: i use ' and my rationale is the same as google's
[20:35] mape: more often you do '""' then "''"
[20:35] JimBastard: `
[20:35] aho: '
...
" [20:35] aho: *' [20:35] aho: :> [20:35] eggie5 has joined the channel [20:35] wattz: going to write my own lang to use :) (: instead of ' or " [20:36] JimBastard: backtick would prob be better as a separator , as you wouldnt ever have to think about escaping " or ' [20:36] JimBastard: although insane [20:36] ericclemmons has joined the channel [20:36] wattz: ... [20:36] JimBastard: im just saying [20:36] wattz: Local results..... scope.Close(results); returns a function :P [20:37] aho: http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml [20:37] technoweenie: :)hello:) [20:37] ericclemmons: For some reason, I just think key: "Some Value" looks prettier. That, and I've been bitten by 'I can't type a syntactically correct string!' because of those apostrophies [20:37] technoweenie: (: hello :) [20:38] JimBastard: ( hello ) [20:38] JimBastard: crap [20:38] JimBastard: we invented lisp [20:38] technoweenie: its happy lisp though [20:38] technoweenie: ): goodbye :( [20:39] elliottkember: I've always wanted one that was like [20:39] elliottkember: hey, computer: [20:39] elliottkember: could you please print the user's name? [20:39] elliottkember: thanks. [20:40] wattz: yay. bus error. [20:40] wattz: best errors evar. [20:40] bradleymeck_: you know what, we should use : in front of single words, thats much better than strings, and lets make them not equal to eachother [20:41] ryan_gahl has joined the channel [20:41] knuckolls has joined the channel [20:41] tyfighter has joined the channel [20:43] daniellindsley has joined the channel [20:43] eggie5: creationix: any findings? [20:43] creationix: eggie5: no got sidetracked by 10 different things [20:43] creationix: sorry [20:44] eggie5: creationix: haha it's ok - i'll look more... [20:44] creationix: though I did add it to my environment [20:44] wattz: my async syntax: [20:44] wattz: http://pastie.org/1078258 [20:44] wattz: suggestions? [20:45] wattz: my sync syntax: http://pastie.org/1078243 [20:45] technoweenie: db.connect('localhost', 'root', '', 'test', 3306), function [20:45] technoweenie: looks invalid? [20:46] technoweenie: does connect return a function that takes a callback [20:46] wattz: typeo [20:46] technoweenie: or is that the last arg [20:46] devinus: wattz: i'd do like node does [20:46] wattz: so [20:46] devinus: callback signature: function (conn, err) [20:46] wattz: db.connect(......., function(connection) { }); [20:46] devinus: instead of conn.error() [20:46] technoweenie: isnt err first [20:46] wattz: devinus: nice idea [20:47] devinus: technoweenie: is it? that would be dumb [20:47] ryan_gahl: 11,00•12,00wattz11,00• sry, was logged out, can't be bothered to look through the logs... can you share the repo url? [20:47] devinus: especially if u just wanted to ignore err [20:47] devinus: eg function (conn/* ignore error */) [20:47] wattz: ryan_gahl: repo url for what? [20:47] ryan_gahl: cargo [20:47] ryan_gahl: just want to see what it is [20:47] wattz: ryan_gahl: it's not on a github/google code yet [20:47] technoweenie: fs.readFile('/etc/passwd', function (err, data) { [20:47] ryan_gahl: ah ok [20:47] wattz: ryan_gahl: sync/async mysql driver [20:47] devinus: ew [20:47] ryan_gahl: gotcha [20:48] devinus: technoweenie: you know what i'm sayin tho? [20:48] ryan_gahl: mysql... meh :) [20:48] technoweenie: it keeps the position of 'err' consistent. its always the first. you can always add more to the callback later w/o changing the position of err [20:48] wattz: starting with mysql [20:48] wattz: then pg [20:48] wattz: and sqlite [20:48] devinus: what if you just wanted to ignore err is what im sayin [20:48] ryan_gahl: wattz, SQL... meh :) [20:48] technoweenie: devinus: i see what you're saying, do you see what i'm saying? heh [20:48] wattz: new Cargo({async:true, engine:'mysql'}); [20:48] devinus: i do, i like consistency [20:48] technoweenie: drawbacks on both sides [20:49] devinus: consistency is great, which is why node should change :P [20:49] wattz: ryan_gahl: sometimes it's what you have to work with [20:49] ryan_gahl: i know... still meh [20:49] wattz: and the the noSQL node libraries look cool already [20:50] ryan_gahl: document/hypermedia dbs are the future (and The Future Is Now) [20:50] wattz: lol [20:50] DoNaLd`: :) [20:50] wattz: ACTION ads a spot to his bullshit bingo card [20:50] ryan_gahl: lol [20:50] wattz: just need one more place... [20:50] wattz: s/ads/adds [20:51] technoweenie: wattz: seems like client libs emit 'connect' events rather than having connect methods [20:51] technoweenie: well, there are many ways you can do it [20:51] wattz: well im still on the fence a bit though [20:51] technoweenie: i also personally like methods that return anonymous functions that take a callback [20:52] ryan_gahl: FWIW, I like that model in your gist, but would expect transactional support built in to that envelope [20:52] technoweenie: db.connect('localhost', 'root', '', 'test', 3306, function() { }) => db.connect('localhost', null, null, null, null, function() { }) [20:52] wattz: was thinking of writing a basic driver then using js/node to wrap it up for async [20:52] wattz: technoweenie: once you connect [20:52] technoweenie: db.connect('localhost', 'root', '', 'test', 3306)(function() { }) => db.connect('localhost')(function() { }) [20:52] wattz: you can just use db.connect(function() {}); [20:53] wattz: want to add a check to let you short hand switch dbs too [20:54] wattz: db.connect({db: 'otherdb'}, function() { } ); [20:56] wattz: Bus error. [20:56] wattz: ACTION head hits desk [20:56] technoweenie: wattz: http://github.com/technoweenie/riak-js/blob/coffee/src/protobuf.coffee my riak driver [20:58] rauchg__ has joined the channel [20:59] _announcer: Twitter: "Speaking tonight at 7pm about node.js and CouchDB at socal.js http://meetup.com/u/8Qj" -- Mikeal. http://twitter.com/mikeal/status/20416149126 [21:01] wattz: holy mac crash [21:01] wattz: coffee script... so weird [21:01] wattz: like objective-j [21:02] wattz: why wrap a language [21:02] slaskis has joined the channel [21:02] mattly has joined the channel [21:02] wattz: technoweenie: this looks cool [21:02] technoweenie: i wrap js because js' syntax blows :) [21:02] wattz: opinion! [21:02] wattz: :D [21:03] wattz: it's much better than... php. [21:03] wattz: -_- [21:03] technoweenie: sure, once this crap is more 'stable' it'll be released w/ js code so you wont need coffee script to run it [21:03] wattz: writing C++ for js/v8 is fun [21:03] gf3: NO NO U [21:04] bradleymeck_: c++ is not fun, ever, objective-jsython! [21:04] wattz: haha [21:04] wattz: <3 C++ and objective-C [21:04] creationix: C is fun though [21:04] wattz: C is [21:05] tjholowaychuk: C actually makes sense lol [21:05] tjholowaychuk: c++ is.. interesting [21:05] bradleymeck_: or do what those ppl did and wrap rhino in php [21:05] wattz: my fav languages, in order: C/C++ Objective-C, Javascript, Python [21:05] bradleymeck_: obj-c confuses and angers me [21:05] wattz: bradleymeck_: smalltalk is neat, and you will understand objc a bit more [21:06] ryan_gahl: mine.. Javascript, English [21:06] gf3: fuck english [21:06] gf3: that shit is the worst [21:06] wattz: yeah [21:06] wattz: haha [21:06] wattz: best lang evar.... lolcode. [21:07] gf3: just above brainfuck [21:07] bradleymeck_: i understand obj-c just the design decisions of the language confuse me, whenever i write it i tend to end up writing 3 function signatures for any class member [21:07] bradleymeck_: the blocks are nice though [21:08] qschzt has joined the channel [21:09] shajith has joined the channel [21:09] zemanel has joined the channel [21:12] wattz: friend of mine wrote a web framework in brainfuck :P [21:12] wattz: so who is going to write mod_node for apache :D [21:12] wattz: lol [21:13] romainhuet_ has joined the channel [21:13] bradleymeck_: i wrote a compile time compiler for brainfuck in D lol [21:13] wattz: haha [21:13] wattz: D [21:13] bradleymeck_: there is a v8cgi already [21:13] wattz: wow haven't heard that talked about in a while [21:13] wattz: bradleymeck_: you write it, or the guy that did in here? [21:14] bradleymeck_: i loved the concepts in D but the Walter Bright reliance for a compiler hurt when he changed the language itself soo much [21:14] bradleymeck_: write D? no [21:15] bradleymeck_: write on copy / compile time evaluation / templating inheritence / slices, all built in, /nom [21:15] wattz: I do not [21:15] wattz: oh, I mean the guy who wrote v8cgi [21:15] bradleymeck_: i didnt [21:15] wattz: have you looked at it? [21:15] wattz: .. [21:16] bradleymeck_: a lil, dont like cgi [21:16] unices has joined the channel [21:17] wattz: i was thinking of writing a straight apache mod for v8 [21:17] wattz: then found node, and throw that behind nginx [21:17] bmizerany has joined the channel [21:17] wattz: some static serving [21:17] wattz: call it a day [21:18] wattz: woot, fetchObjects works. [21:18] wattz: took the async stuff out, revisit once all the basics are in [21:19] unices: Hi I'd like to use apns-node (http://github.com/jpoz/apns-node), but it bails out on me with crypto:3617 if (cred.key) c.context.setKey(cred.key); during a call to crypto.createCredentials(). I'm using node v.0.1.102. Any ideas? [21:19] wink has joined the channel [21:19] wattz: do people use just fetchArray? [21:19] wattz: i have never used mysql_fetch_array [21:20] stagas has joined the channel [21:21] wink: can i get some help understanding some of node's scoping? here is my pastebin with my issue at the bottom: http://pastebin.com/BhPSChbn [21:22] nex3 has joined the channel [21:22] nex3: tjholowaychuk: Ping [21:23] bradleymeck_: unices mmm seems that it hasnt been updated in a bit, prolly a breaking change occured? [21:23] brianleroux has joined the channel [21:23] tjholowaychuk: nex3: whatup [21:24] nex3: So I'm playing with express [21:24] nex3: And I've run into an annoyance [21:24] tjholowaychuk: nex3: ? aight lol let me know [21:24] nex3: I'm running some async stuff in my request, as one is wont to do in node [21:25] nex3: And somewhere along the line, it throws an error [21:25] bradleymeck_: wink, that seems fine scoping wise [21:25] nex3: But by this point, the app.get() has long since exited [21:25] nex3: And the error isn't caught or handled by express [21:25] nex3: And so my server comes crashing down [21:25] unices: bradleymeck_: Where could I possibly find some sample code on how to use crypto.createCredentials() with the current node version? [21:25] tjholowaychuk: nex3: whats the case? how can i reproduce this [21:26] wink: bradleymeck_: any idea why the manual call to the function behaves like you'd expect yet the setinterval call to the function seems to fail? the setinterval calls the fuuu sys.puts, but the .count callback never occurs? [21:26] mikeal has joined the channel [21:26] tjholowaychuk: nex3: most things are caught in express/connect and handled [21:27] gf3: *hollaback [21:27] gf3: callback is deprecated [21:27] bradleymeck_: unices you can use the default, but if you want to make your own pem you gotta make it manually, dont have any ref on how to set it up besides the api docs [21:27] nex3: tjholowaychuk: http://gist.github.com/510404 [21:27] tjholowaychuk: nex3: ill check it out in a minute [21:28] phiggins: gf3: i actually made up a patch at one point s//'ing callback with hollaback [21:28] bradleymeck_: wink im betting the error is killing the event loop before the interval even hits [21:28] wink: bradleymeck_: what error? i dont receive one :< [21:28] wink: fuuuu [21:28] wink: 150705 unread messages [21:28] wink: fuuuu [21:28] wink: it will output fuuu indefinitely [21:28] gf3: phiggins: excellent, did it make it in? [21:28] javajunky: *sob* why does twittter *always* die just as I'm testing something on its api [21:28] wink: and the first call suceeds [21:28] wattz: phiggins: you hush! [21:29] unices: bradleymeck_: ok I'll experiment some more, thx. [21:29] phiggins: gf3: no, no one actually opened a ticket to reference so it went stale [21:29] bradleymeck_: then its something in node-mongodb, anybody more exp than me help? [21:29] phiggins: also i didn't actually look to see if I broke anything, and the unit tests stopped working [21:29] wattz: bradleymeck_: i have no idea about that driver :P [21:29] gf3: phiggins: shit, well I'll get on that [21:30] bradleymeck_: javajunky because twitter is like a cheerleader, shes pretty but not the most reliable or steadfast when talking to nerds [21:30] wink: its orlandov's driver, i was hoping he'd chime in :D [21:30] wink: but the strange thing is i can manually call that function all day and it works [21:31] wink: its only when it gets called via setInterval that it fails [21:32] bradleymeck_: he might be doing something in c++ land that does poorly w/ timeouts [21:33] wink: seems that way, i moved the require/instantiation of mongo inside the callback and it works fine :< [21:33] jamescarr: question... I have attached an event handler on 'data' and 'end' events of a response.. I checked the response code and it's 200... [21:34] jamescarr: but the data event never fires [21:34] jamescarr: it happens intermittently [21:35] gf3: phiggins: where the fuck is the dojo bugtracker!? [21:35] siculars has joined the channel [21:37] ryah: brapse: http://nodejs.org/tech_talk_july.pdf [21:40] tjholowaychuk: nex3: thats not really an express thing, that will happen with anything async, you need to wrap with try/catch and pass next(err) [21:40] tjholowaychuk: nex3: or take approriate action to handle it [21:40] tjholowaychuk: nex3: (req, res, next) [21:41] drudge: ryah: loved the video of the talk, especially the dns parts :P [21:42] nex3: tjholowaychuk: That's what I was afraid of :-/ [21:42] tjholowaychuk: nex3: you will run into that all over node though, not just express :p [21:42] nex3: Yaaaay [21:44] phiggins: gf3: bugs.dtk [21:45] phiggins: i'll just have to close it as wontfix/patcheswelcome :P [21:46] creationix: eggie5: http://gist.github.com/510432 [21:46] creationix: works for me [21:46] creationix: sorry I'm not more help [21:47] creationix: I just realized that my async api is wrong [21:47] creationix: the driver should route errors to the async callbacks [21:47] stagas has joined the channel [21:48] gf3_ has joined the channel [21:48] maxsilver has joined the channel [21:49] jamescarr: tjholowaychuk, does express have a mechanism to easily mock objects that fire events? [21:49] jamescarr: like expect(foo.doSomething()).andFire('data', {f:1}) [21:49] gf3_: jspec? [21:49] jamescarr: *expresso [21:49] jamescarr: I meant ;) [21:49] tjholowaychuk: jamescarr: nope, but probably easy to roll your own [21:50] jamescarr: yeah, I just may have too... been hand rolling them [21:50] tjholowaychuk: I dont mock anymore [21:50] mikeal has joined the channel [21:51] jamescarr: yeah, I always have my bouts of going back and forth between test doubles and no test doubles [21:51] eggie5: 1212121121212121211212 [21:51] jamescarr: sometimes they're essential :) [21:51] tjholowaychuk: yeah sometimes you have no choice [21:51] jamescarr: but I mostly just use stubs, not mocks [21:51] eggie5: i love yu alex jamescarr [21:51] eggie5: ] [21:52] jamescarr: I'd rather verify the behavior of something, rather than saying I passed this string to this method ;) [21:53] eggie5: sorry somebody connected their keyboard via bluetooth to my mac and starting typing...... [21:53] marshall_law has joined the channel [21:53] eggie5: that I love you stuff.... [21:54] jamescarr: :) [21:55] jamescarr: thats awesome [21:55] jan247 has joined the channel [21:55] creationix: eggie5: sure they did ;) [21:55] bradleymeck_: there an example around of doing jsonrpc in connect w/ session? [21:56] tjholowaychuk: bradleymeck_: hm not with sessions no but there is a jsonrpc example [21:56] tjholowaychuk: which should probably be its own repo lol [21:57] bradleymeck_: yea, i got the jsonrpc, just having trouble passing some session data to it [21:57] bradleymeck_: dont wanna use a global /cry [21:57] eggie5: creationix: serious! but I have a question. I saw your example you sent me.... Your using npm right? [21:57] tjholowaychuk: i forget what the api is ill look [21:57] creationix: eggie5: nope [21:58] eggie5: creationix: what does this mean than? require('postgres-pure') [21:58] eggie5: creationix: i though you had to do './postgres-pure' [21:58] creationix: I have postgres-pure installed in my node environment [21:58] tjholowaychuk: bradleymeck_: I dpnt think I expose the req obj anywhere [21:58] bradleymeck_: nope [21:58] creationix: npm isn't the only way to install stuff [21:58] eggie5: creationix: how'd you do that? [21:58] bradleymeck_: just going to wrap it in a closure func [21:59] creationix: eggie5: I use Ivy, but it can be as simple as making a symlink from ~/.node_libraries/postgres-pure.js to the real file [21:59] FransWillem: bradleymeck_: You should probably create a seperate exposed object for each connection [21:59] creationix: npm just handles all that for you [21:59] bradleymeck_: im using sessions to allow object sharing though [21:59] creationix: eggie5: type "require.paths" in a node interactive session [21:59] eggie5: creationix: ahh i saw that node_libraries dir in my home dir... not sure what it was... still learning node. [21:59] bradleymeck_: as well as permissions [22:00] creationix: eggie5: that's the search path for installed libraries [22:00] tjholowaychuk: bradleymeck_: the api is somewhat stateless right now, maybe this.req or something [22:00] tjholowaychuk: bradleymeck_: hmmm [22:00] bradleymeck_: im just going to contruct a new obj per request for now since that will work, but its balls for perf [22:00] eggie5: creationix: what other postgres-pure files do you have symlinked? just postgres-pure??? [22:01] eggie5: postgres-pure.js? [22:01] tjholowaychuk: bradleymeck_: could potentially have the same signature with (req, res blah blah) but that messes with arbitrary arguments [22:01] creationix: eggie5: actually that file is packaged bad [22:01] tjholowaychuk: bradleymeck_: let me know if you have suggestions [22:01] creationix: you have to symlink all four js files if you do it that way [22:01] bradleymeck_: thinking [22:01] creationix: maybe the npm package is bad [22:02] creationix: how did postgres-js get in npm? [22:02] creationix: oh, it's not, nevermind [22:03] creationix: eggie5: so yeah, just copy all our files relative to your app and use a relative require [22:03] creationix: that should work [22:03] eggie5: creationix: anyways... I was able to get the lib working... I had to comment out any conn.emit funciton calls... i just replaced w/ console.log... [22:03] eggie5: creationix: ok [22:03] maushu: "Globalize the Buffer object"? Hmmm. [22:04] tmpvar: i like it [22:04] creationix: eggie5: strange [22:04] bradleymeck_: jsonrpc should always be the endpoint i would think so next could be exchanged for an object? mmm not ideal..., [22:04] creationix: maushu: it's a basic data type like Number or Array [22:04] creationix: makes sense [22:04] maushu: Madness. [22:05] tjholowaychuk: bradleymeck_: id prefer not to complicate the signatures. we could remove the ability to have arbitrary arity, and have callback as the last param [22:05] maushu: mscdex, has the openssl bug been fixed? [22:06] tjholowaychuk: bradleymeck_: actually yeah that would be fine, this() is lame [22:06] eggie5: creationix: i don't get it.... [22:06] tjholowaychuk: bradleymeck_: but as far as req, res go im not sure [22:06] creationix: eggie5: what's that? [22:06] eggie5: creationix: what's wrong w/ emit in the way i'm running the lib... [22:06] jbrantly has joined the channel [22:06] bradleymeck_: tj ive really wanted the this variable to be rebound for all requests to a new obj to be messed w/ [22:07] eggie5: creationix: i had to replace any emit call w/ console.log [22:07] bradleymeck_: ive found messing w/ req/res to be a bit odd [22:07] creationix: eggie5: no clue, it works for me, which emit is triggering the error? [22:07] tjholowaychuk: bradleymeck_: for all middleware? or are you just talking about jsonrpc [22:08] bradleymeck_: all of it, just a single this variable that stays linked to a single dictionary down all routing trees [22:08] eggie5: creationix: line 333 in ErrorResponse [22:08] pkrumins: not sure why Buffer was globalized [22:09] creationix: eggie5: oh, then postgres is giving you an error [22:09] eggie5: creationix: yeah [22:09] creationix: what does your log say? [22:09] pkrumins: so why was Buffer globalized? [22:09] SubStack: if anything, buffer should be (module.exports = Buffer)'d [22:09] eggie5: creationix: incomplete startup packet [22:09] SubStack: same with EventEmitter [22:09] bradleymeck_: probably because it is a type and it is used in almost all stream ops? [22:09] creationix: eggie5: that sucks [22:09] pkrumins: SubStack: exactly. [22:10] creationix: eggie5: what node version and what postgres version? [22:10] tjholowaychuk: bradleymeck_: hm.. im not against that but im kinda meh about it [22:10] tjholowaychuk: bradleymeck_: but id like to fix up jsonrpc [22:11] mikeal: isaacs: is there a simple way to pass a string to the underlying require code [22:11] eggie5: creationix: node: 0.1.102 pg: 8.4.4 [22:11] creationix: eggie5: not sure why you are getting incomplete packets, but I know what's causing the emit issue [22:11] creationix: node changed a while back where you need to listen for error events or it will throw [22:12] eggie5: creationix: well I undersatnd the pg incomplete packets issue... i don't get the pg-pure errors though.... [22:12] creationix: ideally I fix my api to pass the error to the query that triggered it [22:12] bradleymeck_: well my only true argument for a universal this dictionary is that it takes the logic of arbitrary / custom data storage of the req and res and can make sense for sub protocols where a.) they dont care about req/res b.) are streaming (the this can be saved across data events if streaming is ever in connect). [22:12] eggie5: creationix: oh ok [22:12] creationix: currently all errors get routed to a central place and then emitted on the db object itself [22:13] creationix: so you need to addListener('error', function (err) {}) on the connection object [22:13] eggie5: creationix: at first i wasn't looking at my db logs and thought it was purely a postgres-pure issue so i was really confsued [22:13] creationix: though if my protocol is wrong that's my fault too [22:13] creationix: is should work with that postgres version [22:13] eggie5: creationix: well at least we know now [22:13] jacoblyles has joined the channel [22:13] creationix: I'll see if I can fix the api to act sane [22:14] creationix: the default node error for uncaught error events is less than helpful [22:14] eggie5: creationix: hah ok [22:14] tjholowaychuk: bradleymeck_: yeah makes sense, it would be nice for intercommunication between middleware if they do interact like you mention [22:14] creationix: the reason it was done that way is because the postgres protoctol is async and event based [22:14] creationix: I just get error messages [22:14] tjholowaychuk: bradleymeck_: right now it should just be in context of the layer itself, which is somewhat useless [22:14] creationix: they aren't in response to particular queries [22:14] tjholowaychuk: bradleymeck_: however that brings more "magic" into the picture [22:15] bradleymeck_: magic is bad yea :/ [22:15] creationix: eggie5: but maybe there is some sort of ID in there so I can link them back up [22:15] tjholowaychuk: bradleymeck_: personally I think req is fine, if its nothing important just do req.__foo or whatever [22:15] eggie5: creationix: no idea... i don't know the node API well enough yet [22:16] nex3: tjholowaychuk: http://gist.github.com/510489 [22:17] nex3: That's not printing "In the error handler" [22:17] nex3: It seems like it should [22:17] nex3: But it's not [22:17] tjholowaychuk: one sec [22:17] tjholowaychuk: ill fork it [22:18] joshbuddy has joined the channel [22:18] joshbuddy has joined the channel [22:18] ngw: how do I have logging in express.js ? [22:18] ngw: I have http://gist.github.com/510493 but it doesn't seem to work [22:18] creationix: eggie5: nah, it's not a node thing, it's a postgres protocol thing [22:19] uli2: Can I rely on node to use for a production site with high traffic? I want to start using it. As of now, all I know is that you run it with `node app.js` and hope that it won't crash. What do you think? [22:19] tjholowaychuk: next3: its just semantics, this works http://gist.github.com/510491 [22:19] ryan_gahl: 11,00•12,00ngw11,00• it outputs to stdout by default [22:19] eggie5: creationix: so youre running it on heroku too? [22:19] creationix: eggie5: yep [22:19] nex3: tjholowaychuk: So the error handler has to come *after* the requests? [22:19] eggie5: creationix: i've been waiting FOREVER for that invite.... [22:19] aurynn: eggie5, I'll be releasing an improved postgres-pure sooner or later. :) [22:20] tjholowaychuk: nex3: yup its all in order, as you define things they get stacked [22:20] eggie5: aurynn: oh you forked it??? [22:20] creationix: aurynn: will you push your changes back? [22:20] tjholowaychuk: next3: may not be ideal, id be open to changing that [22:20] aurynn: eggie5, yes [22:20] tjholowaychuk: ngw: one sec [22:20] aurynn: creationix, when they work, I shall :) [22:20] creationix: aurynn: I'm don't mind sharing the project [22:20] nex3: tjholowaychuk: For the error handler in particular, it seems like it should work anywhere [22:20] aurynn: creationix, I'm at "compiles", not "does anything useful" [22:20] aurynn: :) [22:20] tjholowaychuk: nex3: ya i can agree with that, you can define several however and they are applied in order, to handle 404s etc [22:20] nex3: Since it's not part of the standard in-and-out of the request cycle unless you hit an error [22:21] creationix: aurynn: maybe I shouldn't refactor it then [22:21] nex3: tjholowaychuk: It makes sense that the order you define the errors matters [22:21] tjholowaychuk: nex3: but we could change their precedence vs the route handlers, so that you could define these in configure blocks [22:21] nex3: But I should be able to write my error handler above my request handlers [22:21] maushu: 2Hmm [22:21] nex3: Yeah [22:21] nex3: That would be nic,e [22:21] tjholowaychuk: nex3: i agree [22:21] nex3: */, [22:21] aurynn: creationix, I don't mind pushing my changes up, but it's definitely non-functional right now. [22:21] bradleymeck_: whats the way to check if a net.stream is secure? [22:22] tjholowaychuk: ngw: that should work [22:22] tjholowaychuk: ngw: from what i can see [22:22] creationix: aurynn: you're just implementing more of the protocol right? or are you changes more involved? [22:22] x_or has joined the channel [22:22] tjholowaychuk: ngw: all you need is app.use(connect.logger()) [22:22] tjholowaychuk: ngw: or the format like you specified [22:22] ngw: tjholowaychuk: and should it log on the console ? [22:22] ryan_gahl: yes [22:22] tjholowaychuk: ngw: yup [22:22] ngw: because nothing is happening [22:22] ngw: weird [22:22] ryan_gahl: heh, are you making requests? [22:23] Dmitry has joined the channel [22:23] aurynn: creationix, I'm implementing prepared queries right now. It refactors some of how you were handling the connection queue [22:23] tjholowaychuk: ngw: put it at the top [22:23] tjholowaychuk: order matters [22:23] ryan_gahl: 11,00•12,00tjholowaychuk11,00• good to know [22:23] ryan_gahl: ...hmm [22:23] creationix: aurynn: would it be hard to match up error messages with the queries that triggered them? [22:23] creationix: I don't remember if there is some sort of ID to link the two [22:23] ryan_gahl: PITA if that's the case though... is that documented? [22:23] creationix: I just remember it's all async and disconnected [22:24] ryan_gahl: (well i suppose the nature of the middleware... if it never reaches that layer...) [22:24] uli2: Can I rely on node to use for a production site with high traffic? I want to start using it. As of now, all I know is that you run it with `node app.js` and hope that it won't crash. What do you think? [22:24] tjholowaychuk: yup lol [22:24] aurynn: creationix, there's no ID, but that's the problem I was running into. Messages basically need to hold the connection until they have a RFQ response (which we can check for error state). [22:24] tjholowaychuk: thats just the nature of things, people need to realize that the order defines precedence, which is great for flexibility [22:24] aurynn: creationix, so a multi-stage message like a prepare requires locking the connection while it sorts itself out [22:25] ryan_gahl: 11,00•12,00tjholowaychuk11,00• a higher level "pre-config" framework might have logging: true config switch.... [22:25] creationix: aurynn: yuck, so no parallel queries [22:25] aurynn: creationix, yeah. :\ [22:25] creationix: without a connection queue [22:25] creationix: darn you postgres! [22:25] tjholowaychuk: ryan_gahl: you could say that about lots of middleware [22:25] ryan_gahl: actually, 'tis the sort of framework i'm working on [22:25] aurynn: I was looking at setting up a connection pool in the driver [22:25] ryan_gahl: right [22:25] tjholowaychuk: ryan_gahl: even with express i dont want to force things on people [22:25] aurynn: once I have prepared statements working [22:25] creationix: aurynn: yeah, I guess that's not too bad [22:26] unices: I'm trying to use ssl sockets with node.js but node complains about a TypeError: Bad Parameter when calling cryptoCredentials. Am trying to run the fairly recent example at http://www.silassewell.com/blog/2010/06/03/node-js-https-ssl-server-example/ Any help is appreciated. [22:26] ryan_gahl: 11,00•12,00tjholowaychuk11,00• making things easier to turn on/off/configure != forcing things on ppl :) [22:26] tjholowaychuk: ryan_gahl: ah forsure, but connect.logger() is not hard? [22:27] ryan_gahl: no, but knowing it should go first may not be obvious [22:27] ryan_gahl: app.init({logging: true}) is easier [22:27] ryan_gahl: just an example [22:27] creationix: ryan_gahl: have you seen Connect.createApp() ? [22:27] tjholowaychuk: yeah but then you cant pass options to it [22:27] tjholowaychuk: gahh lol createApp needs to die [22:27] ryan_gahl: 11,00•12,00tjholowaychuk11,00• "just an example" [22:28] tjholowaychuk: :D [22:28] creationix: tjholowaychuk: sure you can [22:28] creationix: well with createApp you can [22:28] tjholowaychuk: nono that was in regards to the logging: true thing [22:28] creationix: tjholowaychuk: yeah, I figured that out [22:28] ryan_gahl: in my model it's more like {loggin: {enabled: true, format: "blah"...}} [22:28] ryan_gahl: etc.. [22:28] ryan_gahl: logging* [22:29] slaskis has joined the channel [22:29] creationix: looks like connect v0.0.1 [22:30] ryan_gahl: it's more like Connect (latest) with a level of pre-rolling certain things with abstracted configuration, and also allowing custom middleware the normal Connect way [22:30] ryan_gahl: like you know... a distro :) [22:32] creationix: eggie5: yeah, there is no easy to link the error with the query, aurynn is right, there is no ID [22:32] creationix: eggie5: I won't be refactoring it any time soon [22:32] ryan_gahl: it's also like this: http://www.youtube.com/watch?v=Q_xVXQCrPxQ [22:32] Tobsn has joined the channel [22:33] eggie5: creationix: ok [22:36] ngw: well, it works if I pass it to createServer, but not in the app.configure [22:36] drudge: that song is catchy [22:37] drudge: borsch! [22:37] tjholowaychuk: ngw: interesting, i will take a look [22:37] ryan_gahl: ACTION takes no responsibility for song stuck in head for two weeks syndrome [22:37] ngw: want me to open you a ticket ? [22:37] Gruni has joined the channel [22:37] tjholowaychuk: ngw: not quite yet [22:38] ngw: k [22:38] ngw: let me know if you need it [22:39] tjholowaychuk: ngw: http://gist.github.com/510522 [22:39] tjholowaychuk: works just fine for me [22:40] creationix: tjholowaychuk: idea: put the connect autoloaders on the express object so people don't have to require connect too? [22:41] tjholowaychuk: creationix: ya that might be good, always kindof a PITA [22:41] creationix: tjholowaychuk: and maybe put .connectVersion on there too [22:41] ajpiano has joined the channel [22:42] tjholowaychuk: creationix: maybe we should bundle them up on one property so i can just do module.exports = connect.middleware; then go from there with my shit [22:42] stagas has joined the channel [22:43] teemow has joined the channel [22:43] creationix: tjholowaychuk: sure as long as they are still on the root object in connect too [22:43] tjholowaychuk: yup [22:44] ngw: tjholowaychuk: still the same [22:44] ngw: 1.0.0beta and 0.2.1 [22:44] tjholowaychuk: ngw update connect [22:44] tjholowaychuk: oh and express lol your on the first beta [22:45] tjholowaychuk: rauchg_: wtf it wont let me talk to you it says your not connected lol [22:45] NuLLBiT has joined the channel [22:45] [[zz]] has joined the channel [22:46] matt_c has joined the channel [22:46] keeto has joined the channel [22:46] khug1 has joined the channel [22:50] ben_alman has joined the channel [22:52] _announcer: Twitter: "Node Roundup 2 is out! http://bit.ly/bVIXgC #nodejs" -- Tim Hastings. http://twitter.com/timhastings/status/20418099996 [22:53] unices has joined the channel [22:53] romainhuet has joined the channel [22:54] eggie5: quick node question: I have a mammal object that i want to use - it seems I can't just call require on it... see: http://gist.github.com/510545 [22:55] eggie5: do i have to use the Modules scheme w/ exports??? [22:55] _announcer: Twitter: "My Step library got featured on dailyjs http://bit.ly/bVIXgC #nodejs" -- Tim Caswell. http://twitter.com/creationix/status/20418289192 [22:56] zomgbie has joined the channel [22:56] bradleymeck_: does connect automagically force the session cookies onto res.writeHead(code,headers)? [22:56] creationix: eggie5: sure in mammal.js put "module.exports = Mammal" [22:56] creationix: after Mammal is defined of course [22:57] creationix: bradleymeck_: I believe so [22:57] tjholowaychuk: creationix: nice suggestion with the re-exporting, i think that will look nice express.logger() etc [22:57] tjholowaychuk: provides some encapsulation, hopefully wont confuse people [22:57] creationix: :) [22:57] tjholowaychuk: "but im using express middleware not connect!" i can see it already [22:58] creationix: just say "it's the same!" [22:58] creationix: I mean rails "metal" is just rack [22:58] creationix: just sounds cooler [22:58] tjholowaychuk: you should see the mailing list, the same questions come up soooo many times lol and most of them are documented already [22:58] tjholowaychuk: its brutal [22:59] creationix: tjholowaychuk: you should start selling screencasts on a nice pink and black themed site [22:59] ryan_gahl: 11,00•12,00tjholowaychuk11,00• how come express doesn't support sessions if connect does :) [22:59] creationix: so people can peep your code [22:59] creationix: ;) [22:59] mcarter has joined the channel [23:00] khug1 has left the channel [23:00] tjholowaychuk: haha [23:00] dmcquay has joined the channel [23:00] tjholowaychuk: ryan_gahl: it does [23:00] tjholowaychuk: ryan_gahl: it supports everything connect supports lol so not sure what you mean [23:00] creationix: ryan_gahl: :) ~= ;) [23:01] ryan_gahl: ACTION couldn't have been more sarcastic if he tried :) [23:01] tjholowaychuk: so lost lol [23:01] creationix: tjholowaychuk: ok, I think I'll try to clean up index.js and move stuff to middlewares [23:01] ryan_gahl: ha, i was playing along with what you and creationix were saying [23:01] creationix: I'll even not bake them in just for you [23:02] tjholowaychuk: creationix: sounds good :D thanks man [23:02] ryan_gahl: also, someone asked that exact question in here yesterday [23:02] ryan_gahl: sooo... yeah [23:02] stagas has joined the channel [23:02] tjholowaychuk: about sessions? [23:02] ryan_gahl: yup [23:02] creationix: tjholowaychuk: though the Server, Date, and X-Powered-By stuff really belongs in core [23:02] tjholowaychuk: im mostly ok with that, just the version stuff weirds me out [23:02] creationix: tjholowaychuk: there is an option to disable the versions [23:02] tjholowaychuk: like with drupal back in the day, i never updated sites ever lol so its like "hey come hack me" [23:03] creationix: it's just not documented [23:03] nex3: So, here's a tangentially-related question [23:03] nex3: I want to store a bunch of simple JSON documents, indexed by strings [23:04] nex3: I want to be able to iterate over all of them quickly [23:04] nex3: And, perhaps most importantly, I want a nice node API for doing so [23:04] nex3: Any suggestions? [23:04] tjholowaychuk: nStore? [23:04] tjholowaychuk: or just an object [23:04] tjholowaychuk: lol [23:04] tjholowaychuk: depends what your needs are [23:05] eggie5: creationix: so at the bottom of the mammal.js file? [23:05] creationix: eggie5: that's where I usually put it [23:05] nex3: tjholowaychuk: At the moment, my needs are not very strict [23:06] nex3: Basically ease of use trumps most everything else [23:06] tjholowaychuk: nex3: if you need persistence then nStore but if not then just chuck it in an object [23:06] creationix: nex3: nStore for sure [23:06] creationix: if you want persistence [23:06] creationix: nex3: {} if you don't [23:06] FransWillem: nex3: Redis would work fine too, you could store the documents in doc:(number), then have a list docs where you iterate through with LPOPRPUSH doc doc till you hit the same id :) [23:06] nex3: Definitely want persistence [23:07] creationix: nex3: nStore is new and not battle tested though [23:07] nex3: FransWillem: You're using jargon I don't understand, which suggests that nstore wins for ease-of-use ;) [23:07] creationix: but it's pretty solid and very easy [23:07] nex3: creationix: Not a problem at the moment [23:08] nex3: I'm building a pretty tiny server, I can always switch it out later if it becomes an issue [23:08] nex3: All right, I'll go with nstore [23:08] nex3: Thanks folks :) [23:08] creationix: nex3: for Example if you store documents that JSON.stringify to more than 1024*1024 bytes then it will corrupt stuff [23:08] nex3: That's a little scary [23:09] ryan_gahl: capital Example [23:09] malkomalko has joined the channel [23:09] nex3: I doubt I will, but... huh [23:09] creationix: nex3: but single documents, not the entire database [23:09] creationix: so if a single value is larger than a meg, you're in trouble [23:09] FransWillem: nex3: Yeah, for redis you'd need to read the doc ;) [23:09] malkomalko: tjholowaychuk: you around by chance? [23:09] ryan_gahl: always couchDB, mongoDB, etc too [23:09] mikeal has joined the channel [23:09] tjholowaychuk: malkomalko: yup [23:10] nex3: I'll cross that bridge when I come to it [23:10] malkomalko: just want your opinion on something really quickly [23:10] malkomalko: https://gist.github.com/7a13d18a05ec5104eb54 [23:10] malkomalko: is that bad form? [23:10] creationix: nex3: let me know how it goes [23:10] creationix: nStore is by far the easiest I know of [23:10] malkomalko: note the readFileSync [23:11] tjholowaychuk: malkomalko: id do it a bit different, one sec ill write an example [23:11] creationix: malkomalko: yes that's bad [23:11] creationix: it will kill your performance [23:11] malkomalko: I know, but I can't come up with a better way [23:11] malkomalko: :) [23:11] ryan_gahl: 11,00•12,00malkomalko11,00• if that's per request... NONONO [23:11] tjholowaychuk: malkomalko: give me a bit lol just patching some docs [23:11] malkomalko: no problemo [23:11] ryan_gahl: if it's during app startup, no worries [23:11] creationix: tjholowaychuk: this is why we need async enabled helpers [23:11] malkomalko: yah creationix [23:11] malkomalko: it's just a little confusing [23:11] tjholowaychuk: creationix: just needs to be written different thats all [23:12] tjholowaychuk: no need for IO here [23:12] creationix: tjholowaychuk: sure you can pre-compute it, but that's more code [23:12] malkomalko: renderFile returns after the helper returns [23:12] isaacs: eggie5: hey, just got back [23:12] malkomalko: jade.renderFile that is [23:12] eggie5: isaacs: didn't know you left! [23:12] ryan_gahl: 11,00•12,00malkomalko11,00• asyn or no, don't do template stuff per request [23:12] tjholowaychuk: creationix: no its just different ill fork that in a minute [23:13] isaacs: eggie5: so, i wonder if your ISP is going to block registry.npmjs.org, or just npmjs.org [23:13] eggie5: isaacs: i'll check [23:13] malkomalko: ryan_gahl: I get it that yes, but if you want to output html via a helper, it's either you build up the string, or use a template to build the html output right? [23:13] eggie5: isaacs: it's blocked too [23:13] eggie5: isaacs: but I opened a ticket to unblock it... should be a few days.... [23:13] isaacs: eggie5: that's weird. [23:14] isaacs: eggie5: if it helps, you should tell our IT people that i'm personally offended. [23:14] isaacs: *you [23:14] isaacs: *your [23:14] ryan_gahl: use a template, but either a) pre-compile all app templates so per-request it's just fetched from memory... or at a minmum only compute each template once (first request) and then cache [23:14] eggie5: isaacs: haha [23:14] tjholowaychuk: ryan_gahl: that is what happens [23:14] tjholowaychuk: its never compiled more than once in production [23:14] eggie5: isaacs: have you owned that domain for a long time??? Maybe in the past it was like a porn site or something.... [23:14] ryan_gahl: 11,00•12,00tjholowaychuk11,00• good then :) [23:15] malkomalko: even in my case where your template is passing locals? [23:15] malkomalko: it's not the same thing rendered every time [23:15] malkomalko: in the case of a flash_messages helper [23:15] quirkey has joined the channel [23:16] isaacs: eggie5: i'm pretty sure i was its first. [23:16] tjholowaychuk: malkomalko: easy fix, im just working on some docs right now [23:16] isaacs: eggie5: but we could MAKE it a porn domain.... that'd be a great way to fund npm development. [23:16] malkomalko: I'm not rushing you :) [23:16] ryan_gahl: IMHO in that case it's better to do templating on the client and just fetch the data - but probably a bit draconian (i.e. i'm sure your app most likely will perform ok) [23:16] dnolen has joined the channel [23:17] malkomalko: yah, it's just more for my knowledge with how view helpers work in express [23:17] malkomalko: it's the last thing I'm trying to grasp fully [23:17] ryan_gahl: ACTION will try to allow the express dudes answer the express questions from now on [23:18] tjholowaychuk: :p [23:18] malkomalko: haha [23:18] malkomalko: I have to bounce out of work right now, will be on later.. perhaps you can just fork my gist whenever you get a chance.. and again, no rush, thanks! [23:19] malkomalko: I'm blowing up our app and rebuilding the whole thing on express/connect/mongo [23:19] malkomalko: loving it so far [23:19] tjholowaychuk: cool man, just finished those docs so i will whip up an example and stick it in express ./examples [23:19] malkomalko: schweet [23:19] brapse has joined the channel [23:19] ryan_gahl: 11,00•12,00mscdex11,00• now's your cue [23:20] malkomalko: lata [23:20] ewdafa has joined the channel [23:20] lachlanhardy has joined the channel [23:23] creationix: isaacs: is there a way to check the exception object in assert.throws() ? [23:23] isaacs: creationix: not that i know of. [23:23] joemccann has joined the channel [23:23] isaacs: creationix: but you can do try { doSomething() } catch (ex) { assert.whatever... } [23:23] tjholowaychuk: assert.throws sucks [23:23] tjholowaychuk: its brutallll [23:24] creationix: try..catch it is [23:26] creationix: isaacs: got it [23:29] creationix: isaacs: I'm going to rewrite my hook patch to integrate your ideas [23:29] isaacs: creationix: rad [23:29] isaacs: creationix: i'd maybe wait to get feedback from pquerna/ryah first. [23:30] creationix: I figure if I write enough real code the argument will be more substantial and less abstrat [23:30] isaacs: creationix: they're way smarter than me. [23:30] creationix: besides I need this for ivy even if node doesn't want it [23:30] _announcer: Twitter: "must... work... on... couchDB + node.js... web framework... of wonder (and double rainbows)..." -- RyanGahl. http://twitter.com/RyanGahl/status/20420603479 [23:30] isaacs: creationix: sure. worst case, you jsut use your fork. [23:30] creationix: I'd rather not fork is possible [23:30] creationix: *if [23:31] creationix: a lot of people want the feature [23:31] volve has joined the channel [23:31] isaacs: creationix: sure. it'd be really handy [23:32] isaacs: creationix: every time someone said "why doesn't node do this or that" we could be like "here's how" [23:32] creationix: and it would get rid of a LOT of bikeshedding [23:32] isaacs: ACTION is a HUGE proponent of user freedom [23:32] creationix: people could prototype ideas in their own environment and after something becomes proven and popular node could adopt it [23:32] _announcer: Twitter: "Lecture on the node.js ignite http://twitpic.com/2bxq75 # oxenterails" [pt] -- Daniel A A Mascena. http://twitter.com/danielmascena/status/20420761245 [23:33] _announcer: Twitter: "@raywatts Little experience w/ server platforms outside of Apache, experimental http://nodejs.org. Language-wise, switched from PHP to Ruby." -- Chris Basham. http://twitter.com/chrisbasham/status/20420807266 [23:34] ryan_gahl: 11,00•12,00creationix11,00• btw, planning to play with ivy tonight to see how i like the workflow [23:36] creationix: ryan_gahl: cool [23:36] creationix: ryan_gahl: btw ivy will get my experimental hook patch later today [23:37] creationix: so you can play with it [23:37] ryan_gahl: and that would be how you propose loading in things like my custom eventEmitter? (right now I'm just requiring it at the top level) [23:38] creationix: ryan_gahl: you will be able to do ANYTHING [23:38] creationix: and bundle it all in your ivy fork [23:38] creationix: with zero new patched to node [23:38] creationix: (except the one I'm doing) [23:38] ryan_gahl: well i mean, i do that now with node [23:38] FransWillem: what on earth is a hook patch ? [23:39] creationix: just an ability to override the node init script through an external js file [23:39] FransWillem: Sounds like a horrible plan :p [23:39] FransWillem: Anyway [23:39] FransWillem: bedtime for me [23:39] FransWillem: have fun :p [23:39] ryan_gahl: but yeah, would welcome a bit of convenience [23:40] creationix: ryan_gahl: I'm using it in ivy now to change require.paths [23:40] creationix: so ivy modules won't need to be symlinked anymore [23:40] creationix: just mkdir and touch foo.js and you're done [23:40] ryan_gahl: I never symlink, just a maintenance nightmare in my mind [23:40] creationix: no ./utils/relink.sh no npm link no nvm linllib [23:40] mcarter has joined the channel [23:41] ryan_gahl: hmm [23:41] creationix: right, with my custom script, git submodules ARE the proper place to put stuff [23:41] creationix: not some hidden lib folder [23:41] ngw: guys, I'm not able to make npm work [23:41] jherdman has joined the channel [23:41] ryan_gahl: is require("/path/to/embedded/lib/folder/module") so bad? [23:41] ryan_gahl: well.. less convenient [23:41] creationix: ryan_gahl: yes [23:41] ngw: it saves libraries in .node_libraries, but after the app doesn't find a single module [23:42] ryan_gahl: so here's a question then... what about where i have 2 apps, each with different versions of libXYZ [23:42] creationix: ngw: isaacs can help, but are you using relative or global paths? [23:42] creationix: ryan_gahl: then my structure won't help [23:42] ryan_gahl: heh [23:42] ryan_gahl: ok [23:42] creationix: but I plan on having an ivy environment per app [23:43] stagas has joined the channel [23:43] creationix: and the chances of the same app needing two versions at the same time are slimmer [23:43] creationix: and even in that case, you can write code to get around it [23:43] ryan_gahl: welll... not in development [23:43] ngw: I've looked inside the exported paths and everything looked fine to me [23:43] creationix: ivy is just a template, a starting point [23:43] creationix: ryan_gahl: but npm handles those edge cases quite nicely [23:44] creationix: you could make a npm enabled ivy [23:44] ryan_gahl: i'm not down with the npm way either [23:44] ryan[WIN]: sha na na [23:44] ryan_gahl: i'm vanilla git guy [23:44] ngw: maybe I'm doing something wrong [23:44] ngw: do I have to require npm like with kiwi ? [23:44] tjholowaychuk: no [23:44] creationix: ryan_gahl: well, since it's all local and embedded then relative links should always work for you [23:44] tjholowaychuk: ngw: you dont have to no [23:45] ryan_gahl: my problem is I almost always want to be able to edit a lib if I see something i think it's missing (or is buggy) etc [23:45] creationix: ryan_gahl: sure, relative links are plain, simple and will always work [23:45] creationix: but not all third part code will use them [23:46] creationix: so if foo requires bazv1 and bar requires bazv2 then you're screwed [23:46] mikeal has joined the channel [23:46] creationix: you have to do what npm does and mess with require paths before and after calling require on "foo" and "bar" [23:47] creationix: but you can do that too [23:47] isaacs: ngw: nope [23:47] quirkey has joined the channel [23:47] isaacs: sorry, missed a bit of that conversation about np [23:47] isaacs: npm [23:48] ngw: weird [23:49] creationix: ryan_gahl: ^ [23:49] ngw: no it didn't even install npm in my path, even if the installation log says it did [23:49] ngw: not even .npmrc [23:49] isaacs: ngw: where's node located? ie, go into the repl, type "process.execPath" [23:50] ryan_gahl: right, but everything being in such flux, and me not fearing hacking on other people's libs to "fix" them up for my purposes (or bugfixes)... I rarely care to be tied to a canonical/"released" version... i want raw unadulterated in-line branch-edit-patch-merge-update ability where possible (usually) [23:50] ngw: '/usr/local/bin/node' [23:50] isaacs: ryan_gahl: you know that npm link will just grab the contents, right? or you could do npm install --root $PWD/deps to put it into the "deps" folder. [23:51] isaacs: ryan_gahl: also, with npm, you could include your dependencies locally, as a submodule or whatever, and just use it to publish the release versions of *your* kit [23:51] isaacs: ngw: did you get any errors when you installed npm? please gist. [23:52] freshtonic has joined the channel [23:52] ryan_gahl: yeah, i think of npm as more of a deploy time tool, and i'm not there yet with any of my projects :) [23:52] _announcer: Twitter: "気になる。 http://www.infoq.com/articles/nodejs-frameworks" -- よしだゆうや. http://twitter.com/yuya_lush/status/20422086634 [23:52] isaacs: creationix: hey, i just realized, ENOENT actually *isn't* the right error sometimes now. [23:53] ryan_gahl: (or an "install this app and not dev on it" tool... also not there) [23:53] isaacs: creationix: someitmes you want err.errno to be EISDIR [23:53] creationix: isaacs: hmm [23:53] ngw: isaacs: http://gist.github.com/510599 [23:53] isaacs: ryan_gahl: my goal is to eventually support a remote install command. [23:53] creationix: though in the case of require, isn't ENOENT more descriptive? [23:53] ryan_gahl: bbiab guys, dinner time [23:53] isaacs: ryan_gahl: so you could use npm to deploy stuff, and say that you require this or that version of connect, or whatever. [23:54] isaacs: creationix: descriptive is not valuable when it's not describing the truth ;) [23:54] micheil: isaacs: I still think it should support multiple repos at once [23:54] jimt has joined the channel [23:55] creationix: isaacs: how is it not the truth, you asked for a module and no module by that name exists? [23:55] creationix: maybe, parhaps there was a directory in one of the places that module might have been [23:55] creationix: but the module is nto a directory [23:55] creationix: it's "not fount" [23:55] creationix: *found [23:56] fod has joined the channel [23:57] isaacs: creationix: well, the error is actually EISDIR - you're trying to load a module which isn't a module, but a directory. [23:57] isaacs: i suppose dir names are valid if there's an index in there... [23:57] creationix: isaacs: that's my point, a module isn't a directory [23:57] creationix: it doesn't map to a single path [23:57] isaacs: ok, fine. honestly, it's like the minorest of nits. i think i stopped caring 4 messages ago. [23:57] isaacs: ;P [23:58] creationix: lol [23:58] isaacs: ngw: that's weird... you tried this just now? what version of node? [23:58] ngw: yes, just now [23:58] ngw: v0.1.102 [23:58] ngw: should I update ? [23:59] isaacs: ngw: hm.... yeah, that should work. [23:59] ngw: k [23:59] isaacs: ngw: the weird thing is that about half of the log messages you should see aren't showing up. [23:59] isaacs: oh, ngw! hey, yeah, something's borked. [23:59] isaacs: derp [23:59] isaacs: ngw: get the code, and "make uninstall", and then "make" [23:59] isaacs: ngw: and gist that if it fails.