[00:00] isaacs: ngw: or, make uninstall install-stable [00:00] dnolen has joined the channel [00:02] isaacs: creationix: yeah, send to the list, with my blessing. [00:03] ngw: still nothing isaacs [00:03] ngw: crazy [00:03] isaacs: ngw: gist? [00:03] ngw: I'm on 103 [00:03] ngw: exactly the same of before [00:03] malkomalko has joined the channel [00:04] isaacs: ngw: i mean, gist the output from the "make uninstall" and the "make" [00:05] isaacs: ngw: it won't be the same as before, i promise. [00:05] ngw: oh, of node ? [00:05] isaacs: nono, of npm [00:05] isaacs: get the npm code, make uninstall install-stable [00:06] ngw: oh ok [00:10] ngw: ok isaacs, with the source it works :) [00:10] ngw: thanks a lot [00:10] isaacs: ngw: no problem. wonder why that didn't work originally. [00:11] creationix: isaacs I just thought of a great compromise in the asi debate [00:11] isaacs: oh? "don't use semicolons"? [00:11] creationix: make a version of jslint that only complains if you neglect to put a semi before a line starting with ( or [ [00:11] creationix: but allow you to put it anywhere [00:12] creationix: even at the end of the line before [00:12] creationix: so people using both styles are kept safe [00:12] isaacs: creationix: what about someVeryLongFunctionName\n\t(arg, arg, arg) [00:12] ngw: oh, and logging works ! [00:12] ngw: :p [00:12] creationix: isaacs: don't do that [00:12] sztanphet has joined the channel [00:12] isaacs: creationix: i do that a lot. [00:12] creationix: isaacs: you probably wouldn't use the lint tool anyway [00:12] jimt has joined the channel [00:13] ngw: isaacs, I might have messed up between kiwi, npm, git, other noob idiocies [00:13] creationix: people with semis first can see it visually [00:13] isaacs: creationix: http://github.com/isaacs/npm/blob/master/lib/link.js#L30-31 [00:13] creationix: isaacs: and besides, you can probably make the lint tool smart enough for that use case [00:14] creationix: oh, I see, not defining the function, calling it [00:14] isaacs: creationix: the thing i've found is that npm-style is very easy to explain in text to humans, and very easy to visually scan, but very tricky to express programmatically [00:14] creationix: well, you always indent then right? [00:14] isaacs: yes. [00:14] isaacs: i suppose it could see if the indent-level goes up [00:14] creationix: then you're fine [00:14] teemow has joined the channel [00:15] creationix: anyway, just an idea [00:15] isaacs: yeah, not too shabby. [00:15] creationix: I don't have time to write the linter [00:15] isaacs: me neither. [00:15] isaacs: that's another issue. [00:15] creationix: lol [00:15] _announcer: Twitter: "Sharethrough is looking for an awesome engineer: Ruby on Rails, MongoDB, node.js - know someone? http://bit.ly/9QsvfA" -- Billy Shipp. http://twitter.com/billyshipp/status/20423670692 [00:16] creationix has left the channel [00:16] eggie5: the node programming paradigm confused me.... [00:18] isaacs: confused him a lot, i gues... [00:19] SubStack: node makes far too much sense to my haskell-addled brain [00:19] astrolin has joined the channel [00:20] jamescarr: thats awesome [00:20] evilhackerdude: is there a decent ~/.npmrc i can use so that packages are installed in my homedir rather than nodes lib dir? i think the problem is node doesnt find them at first [00:21] evilhackerdude: my main problem is that every node update via homebrew basically kills npm and all my packages [00:21] isaacs: evilhackerdude: quit using homebrew. keep one git pull at ry/master, and use nave for release versions. [00:21] isaacs: evilhackerdude: i mean, quit using homebrew for node/npm [00:22] kevm_ has joined the channel [00:22] SubStack: isaacs: also that rebuild thing I made an issue for [00:22] isaacs: SubStack: yeah? [00:23] jimt has joined the channel [00:23] SubStack: I mean to say that part of evilhackerdude's complaint would be solved by such a feature. [00:23] isaacs: oh... well.. not reallyt [00:24] SubStack: k [00:24] isaacs: actually, nave would be the same kind of problem [00:24] isaacs: the issue is that every time you update node, it puts npm in a different place, and makes all the symlinks no longer point to a valid location. [00:24] isaacs: because npm doesn't take into account that you may be putting the node executable somewhere outside of the $PATH, or that it might be called via a shell script into some wonky weird place. [00:25] isaacs: npm@0.1.23 will have some better tools for something like homebrew to take advantage of, though [00:25] evilhackerdude: what exactly? looking forward to solve that problem [00:25] softdrink has joined the channel [00:26] evilhackerdude: env vars? [00:29] mikeal1 has joined the channel [00:36] isaacs: evilhackerdude: yeah, env vars, and cascading configs. [00:36] evilhackerdude: nice [00:36] isaacs: evilhackerdude: so, it'll go: cli, env, userconfig (~/.npmrc), global config (prefix/etc/npmrc), defaults (builtin) [00:36] evilhackerdude: sounds perfect [00:36] evilhackerdude: really looking forward [00:36] zapnap has joined the channel [00:36] isaacs: what's more, you can do: npm --userconfig /some/path dosomething [00:37] isaacs: or npm_config_globalconfig=/some/other/path npm dosomething [00:37] isaacs: SUPER handy for testing npm itself. [00:37] isaacs: i totally fell in love with the feature before it was even working right. [00:38] evilhackerdude: :) so there'll be NPM_ROOT and NPM_BINROOT? [00:38] evilhackerdude: and nave will set those depending on the node version being selected [00:39] evilhackerdude: clearly i'm only rephrasing what rvm does [00:40] isaacs: evilhackerdude: sorta. [00:40] isaacs: evilhackerdude: but it's npm_config_root [00:40] isaacs: and case-insensitive [00:41] isaacs: since i'm the only one in the world that likes lower-case env vars :) [00:41] evilhackerdude: ah, didn't realize that was an env var in your prveious message - sorry [00:41] evilhackerdude: haha, that's fine [00:41] isaacs: yeah, in sh, if you do: FOO=bar echo "$FOO" [00:41] isaacs: it sets the env var for that one command. [00:42] isaacs: you can use that with node, for instance: NODE_PATH=$PWD node foo.js [00:42] evilhackerdude: right [00:42] evilhackerdude: awesome, loving it [00:43] ngw: how are normally deployed node apps ? [00:43] evilhackerdude: no more tears after i update node/coffee-script to realize i just packages and npm, too ;) [00:43] ngw: like, behind nginx [00:43] ngw: ? [00:44] ngw: I've seen a capistrano script in hummingbird [00:44] evilhackerdude: i think putting nginx in front of node is the recommended thing to do [00:44] ngw: and node under monit ? [00:44] evilhackerdude: you mean to monitor node with monit? [00:45] admc has joined the channel [00:46] isaacs: ngw: i think there's an article about that on howtonode.org [00:48] _announcer: Twitter: "Has anyone written a kick-ass Web app framework built ground-up around heavy Ajax/client-side interactivity, offline storage, maybe node.js?" -- David Feldman. http://twitter.com/dfeldman/status/20425912249 [00:50] zomgbie has joined the channel [00:50] cardona507 has joined the channel [00:51] isaacs: if you ever find yourself needing to sort a bunch of versions in bash, here's a neat trick: [00:51] isaacs: sort -k 1,1n -k 2,2n -k 3,3n -t . [00:53] joshbuddy_ has joined the channel [00:54] joshbuddy_ has joined the channel [00:54] ehaas has joined the channel [00:57] ehaas: is there a reason that http client drops every set-cookie header after the first? [00:58] ehaas: i notice that some headers get concatenated with a comma in the presence of duplicates but set-cookie isn't one of them so you only get the first one [00:58] isaacs: ehaas: i think you can set headers using an array of arrays, too [00:58] isaacs: ehaas: that might have gone away, though [00:59] ehaas: not for sending cookies [00:59] ehaas: i send a client request, server replies with a number of 'set-cookie' headers, but i can only get the first one [01:00] isaacs: oh, ok [01:00] isaacs: yeah, that sucks a lot [01:00] ehaas: in lib/http.js it seems like set-cookie just needs to be added to the list of concaten-able headers [01:01] isaacs: ehaas: make the change, test it out, git format-patch ry/master, email the patch file to the list and to ry@tinyclouds.org [01:01] Bruker_ has joined the channel [01:01] ehaas: cool [01:01] ehaas: will do [01:01] isaacs: add a test, too. there's a bunch for http-server/client in test/simple/ [01:01] isaacs: expect an asplosion of bikeshedding. [01:01] ehaas: ok [01:01] ehaas: hah [01:02] isaacs: *everyone* has an opinion about headers and cookies. [01:02] isaacs: actually, i think this is a case where joining with a comma actually isn't valid, for some weird reason. [01:02] isaacs: long ago, i'd explored providing an actual array for multiple headers of the same name, but it was lost to the winds of time. [01:03] ehaas: rfc2109 seems to allow it [01:03] pquerna: well, its why repersenting headers as a dict/object is wrong [01:03] pquerna: it needs to be ana rray [01:03] ehaas: section 4.2.2 [01:03] pquerna: but it is a pain for users of the interface [01:03] isaacs: AND SO THE BIKESHEDDING BEGINS!!! [01:03] ehaas: lol [01:03] pquerna: sorry, just fullfilling the role of an http dude who like blue bikesheds best. [01:03] isaacs: pquerna: i think an object is ok, but the value should be an array. [01:03] isaacs: pquerna: i know, i know. node needs more like you. [01:04] pquerna: isaacs: well, right, but then you are passing on complexity to the consumer of the interface... [01:04] isaacs: 7. [01:04] pquerna: :) [01:04] isaacs: 7 more. [01:04] isaacs: 8 would be too many, i think. [01:04] isaacs: pquerna: that was the issue last time, too. no one wants to have to do [0] every time. [01:05] isaacs: pquerna: my argument was that an array of strings will toString properly if you cast it anyway. [01:05] konobi: anyone who does web development should know how this stuff works at the protocol level [01:05] pquerna: but they don't [01:05] pquerna: they like php and rails [01:06] pquerna: and thats the way it is [01:06] Bruker_: if you're in the middle of a discussion, ignore this, but I'm looking at the source code, and trying to figure out where the handler for incoming connections is. There seems to be a linked list of connection sockets, but where does it come from? :) [01:06] isaacs: pquerna: an array of tuples (whether [[key,val],[key,val]] or [{key:val}, {key:val}]) is putting even more complexity on the user. [01:06] isaacs: pquerna: lookups get hard. [01:06] pquerna: yes, its why the http client needs to be split into two or more apis [01:06] brianmario has joined the channel [01:06] pquerna: low level let me know everything, repersent it as tuples [01:06] pquerna: and high level i'm a dude who wants a response [01:07] pquerna: and the pooling all goes up high probally too [01:07] pquerna: but anyways [01:07] isaacs: i like how the high level api gets the hip teenager slang. [01:07] Tobsn: isaacs, you fixed your nodejs thing? :P [01:07] isaacs: Tobsn: which one? [01:07] tekky has joined the channel [01:07] Tobsn: the core [01:07] Tobsn: so its fast [01:07] Tobsn: :D [01:07] steadicat has joined the channel [01:08] konobi: headers.add('set-cookie')... var cookies = headers.get('set-cookie'); cookies = cookies instanceof Array ? cookies[0] : cookies; [01:08] isaacs: Tobsn: i have no idea what you're talking about. [01:08] Tobsn: #lighttpd [01:08] guybrush: isaacs, can u tell me a usecase where nave is better as nvm? as far as I understand subshells its just another childprocess like any other process - isnt it? [01:08] Tobsn: was just a joke [01:08] konobi: always specifying [0] at the end actually saves you code [01:08] isaacs: Tobsn: oh, that, right :) [01:08] guybrush: *than [01:08] isaacs: guybrush: you don't have to put nave in your bash profile. [01:09] isaacs: guybrush: so you can do "npm install nave" and then start using it. [01:09] isaacs: guybrush: also, i <3 subshells. they're neato. [01:09] guybrush: ah ok, nice [01:09] guybrush: with subshells its possible to do stuff in parallel? [01:09] ehaas: well for now i'm just going to do the comma-concatenation thing...let me know what you guys decide [01:09] isaacs: guybrush: well, i mean, not especially. [01:10] isaacs: ehaas: go nuts on that. send to the list, and it'll spark some talk. at the very least, that'd be a workaround for you for the moment. [01:10] ehaas: yep [01:10] isaacs: konobi: i agree. if it's an array *always*, then you can also just pretend it's a string, and it'll do the right thing m ost of the time. [01:11] konobi: yar [01:11] isaacs: konobi: so you could just do var cookies = headers["set-cookie"]; console.log(cookies) [01:11] isaacs: konobi: but yeah, just making it always an array would be lovely [01:12] isaacs: konobi: the issue there is that some http headers *can't* be repeated. but even then, you could just always reset it to [val] rather than doing .push [01:12] robotarmy has joined the channel [01:12] konobi: i also don't think you should play down to teh dummies either... but that's just me [01:12] isaacs: konobi: i agree with that statement so hard it hurt a little. [01:13] konobi: well, all http _can_ be repeated... some things will just take the first instance of that header, others will take the last one... it's unspecified behaviour really [01:13] isaacs: konobi: right, exactly [01:13] isaacs: konobi: the client can repeat them. but "semantically" some of them only SHOULD respect the first or last [01:13] isaacs: that whole "loose in what you accept" rule is HARD. [01:14] manveru: you think it's a good rule? [01:15] isaacs: manveru: yeah, definitely. [01:15] isaacs: it's just difficult. [01:15] manveru: heh [01:21] wilmoore has joined the channel [01:24] ruf has joined the channel [01:26] skampler has joined the channel [01:28] n3v3le has joined the channel [01:30] mjr_ has joined the channel [01:31] softdrink has joined the channel [01:33] _announcer: Twitter: "Node.js night." -- Chirag Davé. http://twitter.com/ChiragRules/status/20429093037 [01:36] fod has joined the channel [01:36] sh1mmer has joined the channel [01:36] dannycoates has joined the channel [01:39] mikeal has joined the channel [01:40] jwcooper has joined the channel [01:41] _announcer: Twitter: "Blog post: my baby 42-lin "Twitter-style" web app, written in Node.JS, Connect, Mongoose (MongoDB) and Underscore: http://bit.ly/aqvV50" -- Ivar Vong. http://twitter.com/ivong/status/20429644746 [01:41] ehaas: isaacs: patch sent [01:43] tmpvar has joined the channel [01:43] tmpvar: JimBastard, yo [01:46] jan247 has joined the channel [01:50] _announcer: Twitter: "gm, my GraphicsMagick library for node is featured on dailyjs! http://bit.ly/bVIXgC #nodejs" -- Aaron Heckmann. http://twitter.com/aaronheckmann/status/20430331686 [01:51] Tim_Smart has joined the channel [01:54] mscdex: so why does __dirname not work in the repl? :s [02:00] sztanphet has joined the channel [02:00] dipser_ has joined the channel [02:01] meso_ has joined the channel [02:03] ehaas: mscdex: you probably want process.cwd() [02:04] malkomalko: I just ran into that as well mscdex [02:05] davidwalsh has joined the channel [02:07] pgriess has joined the channel [02:09] isaacs has joined the channel [02:10] malkomalko has joined the channel [02:13] ditesh|cassini has joined the channel [02:17] quirkey has joined the channel [02:18] x_or has joined the channel [02:18] charlesjolley- has joined the channel [02:25] _announcer: Twitter: "@kenny_shen good post. You should contribute a copy to also be posted on http://howtonode.org. #nodejs" -- Marco Rogers. http://twitter.com/polotek/status/20432853072 [02:30] mikeal has joined the channel [02:39] jchris1 has joined the channel [02:40] _announcer: Twitter: "Writing some node.js for 8th Light U." -- Eric Smith. http://twitter.com/paytonrules/status/20433916197 [02:42] _announcer: Twitter: "Watching a presentation on couchdb and node.js" -- Josh Nielsen. http://twitter.com/joshontheweb/status/20434077863 [02:43] _announcer: Twitter: "Starting off hearing about CouchDB + node.js at Socal.js from @mikeal" -- Ron Evans. http://twitter.com/deadprogram/status/20434163198 [02:49] maxsilver has joined the channel [02:49] mattly has joined the channel [02:49] quirkey has joined the channel [02:55] isaacs: wtf, bash [02:58] isaacs: can anyone tell me why this is? http://gist.github.com/510764 [03:00] maxsilver has joined the channel [03:00] dnolen has joined the channel [03:03] ehaas: isaacs: the pipe is launching a subshell [03:03] isaacs: ehaas: so... it inherits, but doesn't export back up? [03:03] joshbuddy has joined the channel [03:07] ehaas: i don't think it inherits [03:07] isaacs: ehaas: no, it totally does. [03:07] guybrush: isaacs: im currently reading http://wiki.bash-hackers.org/scripting/processtree - which explains exactly that behavior [03:07] isaacs: ehaas: i can set i to something else [03:08] ehaas: ah you're right it does [03:08] x_or has joined the channel [03:09] ehaas: but yea, no exporting back up [03:10] isaacs: laaaaaame [03:10] isaacs: the guys in #bash are very helpful. [03:10] isaacs: pointed me to this: http://mywiki.wooledge.org/BashFAQ/024 [03:10] isaacs: apparently ksh does this right [03:10] guybrush: #bash is (very) nice [03:13] PyroPeter has joined the channel [03:15] _announcer: Twitter: "@paytonrules hello from node.js!" -- Colin Jones. http://twitter.com/trptcolin/status/20436555757 [03:19] zapnap has joined the channel [03:20] sh1mmer has joined the channel [03:20] mjijackson has joined the channel [03:22] knuckolls has joined the channel [03:22] fod has joined the channel [03:24] _announcer: Twitter: "@jethrocarr It would need to be node.js to scale but a more efficient server could be written later." -- Matthew Holloway. http://twitter.com/hollowaynz/status/20437211644 [03:24] quirkey has joined the channel [03:33] knuckolls has joined the channel [03:33] mattly has joined the channel [03:33] mattly has joined the channel [03:36] tpryme has joined the channel [03:38] skampler has joined the channel [03:41] derferman has joined the channel [03:42] derferman has joined the channel [03:50] x_or has joined the channel [03:57] mattly has joined the channel [04:04] dnolen has joined the channel [04:07] twoism has joined the channel [04:14] teemow has joined the channel [04:16] _announcer: Twitter: "nave 0.0.5 released. ls-remote, help, and usemain commands. #nodejs http://github.com/isaacs/nave /thanks @tjholowaychuk" -- Ⓘⓢⓐⓐⓒ. http://twitter.com/izs/status/20440563693 [04:16] donspaulding has joined the channel [04:20] jakehow has joined the channel [04:28] bpot has joined the channel [04:31] isaacs: dude... "nave use latest" [04:32] isaacs: this is handy [04:32] mape: for? [04:34] hij1nx has joined the channel [04:35] joshbuddy has joined the channel [04:35] matt_c has joined the channel [04:36] bmizerany has joined the channel [04:43] qFox has joined the channel [04:43] isaacs: mape: just released a new nave. you can use "latest" as a version string to get the latest node release. [04:43] isaacs: don't know why i ddint' do this WAY earlier. [04:44] mape: like a npm install node@latest kinda deal? [04:44] isaacs: also, tj convinced me to add a "usemain" command to install it in your default root [04:44] isaacs: mape: yeah, sorta :) except npm can't install node [04:44] mape: yeaj [04:44] mape: *h [04:46] _announcer: Twitter: "heatmap using html5 with node.js http://www.coffeepowered.net/2010/08/03/click-mapping-with-html5-and-node-js/# nice!" -- Roman Pickl. http://twitter.com/RomPic/status/20442334594 [04:54] ngw has joined the channel [04:57] ngw: hi * [04:58] isaacs: ello [05:00] twoism has joined the channel [05:00] isaacs has joined the channel [05:06] skampler has joined the channel [05:06] hansek has joined the channel [05:08] ajpiano has joined the channel [05:11] sztanpet has joined the channel [05:12] ngw: I'm looking at vows, I still have to try (I will tomorrow), but I don't see any example about checking the content of an html file with a regexp or something like that [05:13] silentrob has joined the channel [05:13] mattly has joined the channel [05:14] malkomalko has joined the channel [05:18] hansek has joined the channel [05:18] jchris has joined the channel [05:18] ngw: ok, found [05:19] ngw: seems very cool [05:20] _announcer: Twitter: "@trptcolin Are you tweeting exclusively from your node.js app now?" -- Eric Smith. http://twitter.com/paytonrules/status/20444227459 [05:21] amerine has joined the channel [05:21] sveisvei has joined the channel [05:29] lejoe has joined the channel [05:30] deepthawtz has joined the channel [05:47] _announcer: Twitter: "playing around with node.js and couchdb + cradle. Liking it" -- rbreve. http://twitter.com/rbreve/status/20445595071 [05:48] shreekavi has joined the channel [05:53] tyfighter has joined the channel [05:57] ryah: hi [06:01] unices has joined the channel [06:05] hober has joined the channel [06:06] joshbuddy has joined the channel [06:06] mape: Welcome to node.js [06:06] mape: May I take your order? [06:08] SubStack: I would like 3 nested continutions with a side of even loop please. [06:08] mape: Sorry we are out of those, may I offer a fruity loop instead? [06:09] SubStack: that sounds too syntactically sugary for my tastes [06:09] mape: But it is low on bloat [06:09] mape: It is good for you! [06:10] jesusabdullah: hah [06:12] jesusabdullah: I'm not so hot at fruity loops myself [06:12] jesusabdullah: Not musically inclined enough [06:15] zemanel has joined the channel [06:21] mscdex: jesusabdullah: oonts oonts oonts oonts [06:23] _announcer: Twitter: "good video on Node JS http://www.yuiblog.com/blog/2010/05/20/video-dahl/" [de] -- Rakesh Aggarwal. http://twitter.com/rakeshag/status/20447335884 [06:23] mape: mscdex: untz untz untz [06:24] [[zzz]] has joined the channel [06:24] WALoeIII has joined the channel [06:24] jan247 has joined the channel [06:26] keeto has joined the channel [06:26] jkreeftmeijer has joined the channel [06:27] javajunky has joined the channel [06:30] tahu has joined the channel [06:31] zemanel has joined the channel [06:32] siculars has joined the channel [06:33] _announcer: Twitter: "Loving nodejs. Hating lack of user docs. API docs are nice but you can't stop there. Took forever to learn how to install a module globally." -- Michael Mathews. http://twitter.com/micmath/status/20447823957 [06:36] benburkert has joined the channel [06:36] SamuraiJack has joined the channel [06:36] SubStack: install a module globally? [06:37] SubStack: that should be hard to do and hidden [06:37] SubStack: to keep people from doing it [06:37] SubStack: oh wait, unless he means package installation >_< [06:40] _announcer: Twitter: "BTW, Nodejs Package Manager is one way to do it. http://j.mp/cU7Bcm" [fil] -- Michael Mathews. http://twitter.com/micmath/status/20448130045 [06:41] mscdex: !tweet @micmath irc.freenode.net #Node.js for any questions/problems :-) [06:41] mscdex: ha [06:41] mscdex: timing [06:41] ryah: need better docs. yes [06:43] SubStack: illustrated [06:46] ryah: what's this calle: [06:46] ryah: [a,b]= [1,2]; [06:46] mape: swapping? [06:46] SubStack: pattern matching? [06:46] SubStack: list assignment? [06:46] ryah: multile assignment [06:47] mape: oh nm [06:47] ryah: ? [06:48] ryah: Destructuring assignment, i think [06:48] SubStack: depends on the language I think [06:49] cloudhead has joined the channel [06:49] SubStack: rhino can do that I think [06:50] SubStack: or not rhino, but whatever moz uses [06:50] cloudhead: is there a way to know what the current request object was, when an uncaughtException event is captured? [06:50] cloudhead: I can't seem to find a solution [06:51] cloudhead: I'm creating a listener on uncaughtException on each request, and removing them when the request ends, but when there's an error, they all fire, and there's no way to know which belongs to which [06:56] mscdex: PHP has something like that with list() [06:56] steadicat has joined the channel [06:56] mscdex: list(foo, bar) = array('fooval', 'barval'); [06:57] slaskis has joined the channel [06:59] SubStack: mscdex: but still, that doesn't mean the idea is entirely worthless [06:59] Gruni has joined the channel [07:00] mscdex: huh? i was just mentioning that :S [07:01] teemow has joined the channel [07:01] SubStack: ACTION was making a subtle jab at php, implying that anything todo with it is hopeless [07:03] mscdex: meh [07:03] sooli has left the channel [07:03] jetienne has joined the channel [07:05] jetienne: hi [07:06] peutetre has joined the channel [07:09] lejoe has joined the channel [07:12] ph^ has joined the channel [07:12] [[zzz]] has joined the channel [07:13] twoism has joined the channel [07:16] mscdex: hola [07:16] voxpelli has joined the channel [07:16] jpld has joined the channel [07:16] _announcer: Twitter: "Node.js http://nodejs.org/ package manager http://npmjs.org/ mmm, tasty # javascript" [fi] -- Peter Edwards. http://twitter.com/drakpete/status/20449741268 [07:19] Gruni has joined the channel [07:20] sechrist has joined the channel [07:22] marshall_law has joined the channel [07:23] sveimac has joined the channel [07:23] benburkert has joined the channel [07:24] gwoo has joined the channel [07:25] TomY has joined the channel [07:27] jetienne: anybody on ubuntu willing to test my nodejs .deb package ? it works during my tests on fresh installed VM... but i would prefere at least another tester before publishing [07:30] keeto has joined the channel [07:30] shockie has joined the channel [07:30] shockie has left the channel [07:31] marshall_law has joined the channel [07:33] marshall_law has joined the channel [07:33] shreekavi: jetienne: I can try out [07:34] jetienne: shreekavi: http://blog.jetienne.com/2010/08/nodejs-deb-package-on-ubuntu-repository.html [07:34] shreekavi: ok [07:36] FransWillem has joined the channel [07:36] shreekavi: jetienne: Works like a charm [07:36] shreekavi: no issues as such [07:37] jetienne: shreekavi: cool, thanks [07:37] shreekavi: it upgraded my nodejs v101 source install to v103 [07:38] pquerna: ryah: http://matt-welsh.blogspot.com/2010/07/retrospective-on-seda.html [07:40] pdelgallego has joined the channel [07:41] shreekavi has joined the channel [07:43] marshall_law has joined the channel [07:43] DoNaLd`: tam je aj video [07:45] javajunky has joined the channel [07:48] unices has joined the channel [07:49] sechrist has joined the channel [07:56] rnewson has joined the channel [07:56] rnewson has joined the channel [07:57] virtuo has joined the channel [07:59] paulwe has joined the channel [08:01] lejoe has left the channel [08:05] sh1mmer has joined the channel [08:08] _announcer: Twitter: "Interesting stuff at http://nodejs.org/" -- Maurizio Turatti. http://twitter.com/mkj6/status/20451933175 [08:08] _announcer: Twitter: "@w3avenue node.js simple, self-refreshing templates nTPL http://tinyurl.com/253w8pv @indutny please RT" -- Fedor Indutny. http://twitter.com/indutny/status/20451942118 [08:11] FransWillem has joined the channel [08:11] amerine has joined the channel [08:16] b_erb has joined the channel [08:22] _announcer: Twitter: "Looking at http://nodejs.org/ as a simple way to write scalable applications" -- Maurizio Turatti. http://twitter.com/mkj6/status/20452545571 [08:28] _announcer: Twitter: "@rauchg thanks for the RT. P.S. I liked node.dbslayer.js well enough to fork it :-) http://github.com/rentzsch/node.dbslayer.js" -- rentzsch. http://twitter.com/rentzsch/status/20452786368 [08:28] robb1e has joined the channel [08:31] _announcer: Twitter: "Big Link "Node.js, is this the next big thing?" by cfelde http://dzone.com/qeHf" -- DZone. http://twitter.com/DZone/status/20452904492 [08:31] marshall_law has joined the channel [08:32] marshall_law has joined the channel [08:33] zemanel has joined the channel [08:34] hellp has joined the channel [08:38] rnewson has joined the channel [08:39] rnewson has joined the channel [08:42] robb1e has joined the channel [08:48] astrolin has joined the channel [08:49] mAritz has joined the channel [08:49] ako has joined the channel [08:52] zomgbie has joined the channel [08:55] dipser has joined the channel [08:55] tahu has joined the channel [08:58] shockie has joined the channel [08:59] n3v3le has joined the channel [08:59] shockie: hello, question is there a oauth server middleware module for connect available? [09:01] marshall_law_ has joined the channel [09:01] ewdafa has joined the channel [09:02] robb1e has joined the channel [09:05] slaskis has joined the channel [09:06] omarkj has joined the channel [09:06] beanie___ has joined the channel [09:06] beanie___ has joined the channel [09:07] jetienne: shockie: dunno any, but github got 2 oauth stuff. [09:07] jetienne: http://github.com/mediacoder/node-oauth [09:07] jetienne: http://github.com/ciaranj/node-oauth [09:07] javajunky: shockie: not sure, I did some oauth client middleware, there was an oauth producer for express, not sure if it was ported. [09:08] javajunky: yeah node-oauth is mine [09:08] javajunky: http://github.com/ciaranj/connect-auth integrates it as oauth clients. [09:08] javajunky: oauth servers are a PITA because you need persistence, and there's no real common solution atm [09:09] jetienne: javajunky: connect got dependancies on their keyval stuff ? maybe this could be used [09:10] elliottkember has joined the channel [09:10] javajunky: jetienne: oh yeah I'm sure it could be, I'd be happy to help someone create an oauth provider around my node-oauth stuff I guess, but the need for an oauth server is much less than the client I guess. [09:11] marshall_law has joined the channel [09:11] _announcer: Twitter: "http://ping.fm/VIi3H Node.js deb package on ubuntu repository" -- Jerome Etienne. http://twitter.com/jerome_etienne/status/20454595505 [09:11] PyroPeter has joined the channel [09:12] maushu has joined the channel [09:12] omarkj: Hey good day. [09:13] jetienne: javajunky: true true [09:13] shockie: well i'm willing to build a connect middleware [09:14] femtoo has joined the channel [09:14] shockie: i think i'm not the only one who needs a oauth server:) [09:14] _announcer: Twitter: "@nprasanna Check this, Node.js: JavaScript on the Server http://goo.gl/FADH" -- Rajasankar. http://twitter.com/rajasankar/status/20454747672 [09:15] marshall_law_ has joined the channel [09:16] shockie: save the data in memory and write back to a log (like redis does) [09:16] javajunky: shockie: oh no, thats true, but there are a *lot* more people who just want to talk to existing oauth producers.. the strength of oauth lies in trust, i.e. are people going to trust that your server is well behaved etc. … not saying it won't be, just that that is where the strength of oauth lies. [09:17] shockie: sure, true twitter is a good provider but what if you don't trust 'twitter' , like internal apps for companies [09:17] shockie: then it's a handy if a oauth server middleware is available [09:17] jetienne: shockie: go, oauth + nstore. nstore is from sencha too, so easier for connect to depends on it [09:17] _announcer: Twitter: "[Almondbread] http://bit.ly/b9WVCs Marc Rummel - Super fast node.js" [de] -- Jörg W Mittag. http://twitter.com/jwmittag/status/20454896764 [09:18] marshall_law has joined the channel [09:18] javajunky: shockie: http://github.com/christkv/node-express-oauth-plugin [09:18] javajunky: is what I was referring to previously.. might be a good starting place. [09:19] javajunky: *obviously* I'd suggest working with my node-oauth as your backing code because I"m biased, but your mileage may vary [09:19] jetienne: code sharing is good to make it robust [09:19] shockie: ah ok:) thx:) [09:20] shockie: it's time to give something back to the internet:) [09:20] javajunky: jetienne: yeah definitely, more eyes is better [09:21] mscdex: sounds like something a zombie might say [09:21] jetienne: :) [09:21] javajunky: ;) [09:24] tahu has joined the channel [09:26] unices: I'm trying to use a ssl client connection with node v.0.1.103 and crypto.createCredentials() errs with TypeError: Bad parameter. Any ideas? [09:26] jetienne: pquerna: once we talked about compiling a whole project in a single exe, to ease deployment. have you looked at ndistro ? it seems close [09:27] tahu has joined the channel [09:27] zomgbie has joined the channel [09:27] mscdex: unices: well, what argument did you give it? ;-) [09:28] tahu1 has joined the channel [09:29] unices: mscdex: a hash with the keys: key, ca and cert. the values for each were a pem loaded via fs.readFileSync, that contains the private key and the cert [09:29] mscdex: unices: what exactly are you setting as the values for those hash keys? [09:30] mscdex: unices: you may need to .toString() the result from readFileSync is what i'm getting at [09:30] jetienne: http://www.silassewell.com/blog/2010/06/03/node-js-https-ssl-server-example/ <- i got it from a search [09:30] unices: jetienne: that does not work for me for it also bails out with the TypeError [09:31] jetienne: unices: oh [09:31] jetienne: unices: and it worked with previous version ? [09:31] unices: mscdex: var mycert fs.readFileSync('cert.pem'); crypto.createCredentials({ca:mycert, key:mycert, cert:mycert}); [09:32] unices: jetienne: I'm new to node.js and have not tried with a previous version [09:32] mscdex: why are you setting your key, cert, and ca to the same thing? [09:33] mscdex: unices: try mycert.toString() [09:33] mscdex: for those values [09:33] mscdex: a buffer is being returned since you didn't explicity specify an encoding when you read the file [09:33] unices: mscdex: the cert contains both the key and the cert [09:34] jetienne: unices: ? key != cet [09:34] jetienne: cert = signed public key [09:34] jetienne: key = private key [09:34] unices: jetienne: I know, but a pem file may contain a private key and a certificate [09:35] markwubben has joined the channel [09:35] unices: mscdex: toString() seems to work, will try with setting the encoding directly [09:37] marshall_law has joined the channel [09:37] mscdex: ACTION shakes a fist at checkinstall and rpmbuild [09:39] marshall_law_ has joined the channel [09:39] jetienne: http://www.silassewell.com/blog/2010/06/03/node-js-https-ssl-server-example/ this one fails for me too. [09:39] jetienne: TypeError: Bad parameter [09:39] jetienne: at Object.createCredentials (crypto:3617:27) [09:40] mscdex: jetienne: toString() ;-) [09:41] mscdex: jetienne: or specify an encoding in readFileSync [09:42] jetienne: mscdex: it did the job :) [09:44] jetienne: unices: http://gist.github.com/511109 the fixed version working for me [09:44] unices_ has joined the channel [09:45] jetienne: ok i was ultra late :) [09:47] hellp has joined the channel [09:50] unices: mscdex: It works. Thank you very much for your help! [09:51] mscdex: unices: no problem [09:51] unices: jetienne: With toString() added to the readFileSync() calls the sampe at http://www.silassewell.com/blog/2010/06/03/node-js-https-ssl-server-example/ works [09:52] jetienne: unices: even with key: cert? [09:52] unices: mscdex: have been banging my head over it last night, so I do appreciate you helping me to relieve my headache ;) [09:53] unices: jetienne: Yes [09:58] marshall_law has joined the channel [09:59] marshall_law has joined the channel [10:17] trochala has joined the channel [10:18] astrolin has joined the channel [10:20] aho has joined the channel [10:22] tyler-bounce has joined the channel [10:23] zemanel has joined the channel [10:25] robinduckett has joined the channel [10:29] MattJ has joined the channel [10:32] shimondoodkin has joined the channel [10:36] fermion has joined the channel [10:37] _announcer: Twitter: "Doing some Node.JS Twitter streaming. Fun times!" -- Elliott Kember. http://twitter.com/elliottkember/status/20458357532 [10:38] shimondoodkin: is anybody knows an example of how to call a web service or a pool of webservice calls? [10:38] mscdex: man, this is driving me up a wall. i can build rpms just fine when usind sudo, but running the same script through upstart results in an error about not finding %_topdir [10:39] mscdex: s/usind/using [10:39] shimondoodkin: mscdex: is it for me? [10:40] mscdex: huh? [10:40] shimondoodkin: did you said "man, this is driving me up a wall. i can build rpms just fine when usind sudo, but running the same script through upstart results in an error about not finding %_topdir" to me? [10:40] tjgillies has joined the channel [10:41] mscdex: no, just venting :/ [10:42] shimondoodkin: http://github.com/shimondoodkin/nodejs-autorestart - this one works for me [10:43] shimondoodkin: i have a newer version ill update now [10:46] mscdex: i mean, upstart works fine, it's just rpmbuild being stupid [10:46] mscdex: and building debs works fine [10:46] shimondoodkin: maybe you neeed to do cd %topdir [10:47] marshall_law has joined the channel [10:47] shimondoodkin: ahh or define it [10:48] shimondoodkin: http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=%25_topdir [10:51] marshall_law has joined the channel [10:53] marshall_law has joined the channel [10:58] shimondoodkin has joined the channel [11:03] shimondoodkin: mscdex: you might do it in a bash script sometimes it helps [11:03] omarkj has joined the channel [11:04] charlesjolley- has joined the channel [11:05] marshall_law has joined the channel [11:07] marshall_law_ has joined the channel [11:11] marshall_law has joined the channel [11:11] b_erb has joined the channel [11:17] mscdex: finally. rpms and debs of node are now autogenerated [11:17] b_erb: haha: http://sonspring.com/journal/javascript-inception [11:20] shimondoodkin: how to call a web service [11:20] Blink7_ has joined the channel [11:20] mape: with node? [11:20] shimondoodkin: yes the http client staff [11:20] b_erb: what is it? soap via http? [11:21] shimondoodkin: i think soap [11:22] shimondoodkin: it posts xml [11:23] shimondoodkin: is ther a node program that already does that? [11:23] b_erb: shimondoodkin: doing what? create clients out of WSDL? [11:23] shimondoodkin: yes [11:23] shimondoodkin: no [11:23] shimondoodkin: post tha exml wait for responce [11:24] shimondoodkin: * post the xml [11:24] b_erb: i thought you are acting as a client [11:24] shimondoodkin: yes as a client [11:24] b_erb: you could use on of the xml libraries [11:25] shimondoodkin: ok i probably need it [11:26] shimondoodkin: does an xml library has an http client for that? [11:26] b_erb: that are two different things [11:26] b_erb: you should use the xml lib for creating the entity [11:26] b_erb: that you post the entity with the http client [11:27] shimondoodkin: i am looking for an example to do the http client post [11:28] b_erb: http://nodejs.org/api.html#http-client-183 [11:29] b_erb: then use request.write() to add your xml stuff [11:29] d0k has joined the channel [11:30] rsms has joined the channel [11:30] rsms has joined the channel [11:31] shimondoodkin: ok [11:31] shimondoodkin: thanks [11:40] Gruni has joined the channel [11:47] fermion has joined the channel [11:50] blackdog_ has joined the channel [11:52] rednul has joined the channel [11:54] jetienne: mscdex: copier :) [11:54] mscdex: eh? [11:55] marshall_law_ has joined the channel [11:55] jetienne: mscdex: or maybe im just paranoid :) did you get the idea to release the precompiled versions after reading my nodejs on ubuntu repo email ? [11:55] mscdex: no? [11:55] mscdex: oh that [11:55] jetienne: so im paranoid :) [11:56] marshall_law_ has joined the channel [11:56] mscdex: i've had nodebuilder for awhile now, look at the original post date for the thread i started :p [11:56] rednul has joined the channel [11:56] mscdex: i just don't have a proper repo set up [11:57] jetienne: mscdex: oh this is me the copier then :) [11:57] jetienne: mscdex: in my case i needed this because i release some of my tools in nodejs on ubuntu10.04 [11:57] mscdex: maybe somewhere down the road i'll have a real repo [11:57] jetienne: and nodejs isnt yet on ubuntu 10.04 [11:58] stride: you're using ubuntu on your servers? :) [11:58] jetienne: i do [11:58] mscdex: jetienne: nodejs is in debian's repo, but they can't keep them as up to date as i do automatically ;-) [11:59] mscdex: stride: yeah [11:59] jetienne: it will be in the next ubuntu too. i asked them to put that on current version as backport... but they dont move fast [12:00] stride: jetienne: we're running CentOS/RHEL mostly, compared to their repos ubuntu always feels like it's lightyears ahead [12:01] ryan[WIN]: http://pilot.ryanbroomfield.com:8030/icorn.html [12:01] ryan[WIN]: can someone log into that and type a few things then close the browser [12:01] marshall_law has joined the channel [12:01] mscdex: i used to build and package node manually, but nodebuilder polls github every 5 minutes for new commits and automatically builds and packages for me [12:01] jetienne: stride: yep they dont have the same goal. rh is about enterprise and stability. ubuntu has to handle desktop too [12:02] mscdex: so whenever i need to update, i can just dpkg -i the latest commit [12:02] mscdex: :> [12:02] stride: ryan[WIN]: closed [12:02] ryan[WIN]: sweet thanks [12:02] stride: ryan[WIN]: chrome on a windows box btw if that matters [12:02] ryan[WIN]: nah [12:02] ryan[WIN]: i'm just testing my node thingy [12:03] stride: jetienne: I know but sometimes it just gives me a headache :) [12:05] marshall_law has joined the channel [12:06] mscdex: stride: yeah i agree [12:07] rednul has joined the channel [12:16] ben_alman has joined the channel [12:16] kevm_ has joined the channel [12:20] _announcer: Twitter: "How NodeJS saved my web application - rfw.posterous.com: http://rfw.posterous.com/how-nodejs-saved-my-web-application http://bit.ly/aVhplw" -- Matthew Hammond. http://twitter.com/emptyhammond/status/20463857793 [12:20] CarbonicMan has joined the channel [12:21] bryanl has joined the channel [12:26] dnolen has joined the channel [12:26] rsms_ has joined the channel [12:27] aheckmann has joined the channel [12:28] romainhuet has joined the channel [12:32] kriszyp has joined the channel [12:38] fermion has joined the channel [12:40] _announcer: Twitter: "@sniiffit @brianritchie sounds like a project to build using websockets, and node.js" -- sweemeng. http://twitter.com/sweemeng/status/20465146791 [12:42] dnolen has joined the channel [12:45] jan247 has joined the channel [12:46] hellp has joined the channel [12:58] rsms has joined the channel [13:00] Sudhirj has joined the channel [13:00] _announcer: Twitter: "Experimenting with Node.js - Jeff Kreeftmeijer: http://bit.ly/cDTMyE <- ask some friends to visit the site at the same time" -- Hernan Garcia. http://twitter.com/theprogrammer/status/20466494499 [13:01] pgriess has joined the channel [13:01] FransWillem: Anyone here ? [13:02] _announcer: Twitter: "Thinking of moving my blog to Wheat (http://github.com/creationix/wheat) as I love the concept. Just need a node.js host..?" -- Steve Mason. http://twitter.com/spmason/status/20466597913 [13:04] pengwynn has joined the channel [13:07] mw_ has joined the channel [13:08] kevm_: Looks like no. I just like to lurk. [13:11] _announcer: Twitter: "My node.js node-gif module -- http://bit.ly/bvAkmH -- can now do Animated GIFs. Check out this gifcast: http://i.imgur.com/FALEa.gif" -- Peteris Krumins. http://twitter.com/pkrumins/status/20467226445 [13:11] _announcer: Twitter: "events to the max http://github.com/sustainablecode/ringo-evented/blob/master/examples/stupid.js (it's ringo, looks like node) /v @polgfred" -- simon oberhammer. http://twitter.com/oberhamsi/status/20467227750 [13:12] bpot has joined the channel [13:12] jherdman has joined the channel [13:14] stride: FransWillem: yeah, what's up? :) [13:16] FransWillem: Want some input on a module I'm working on, up for that ? [13:16] stride: sure [13:17] stride: I'll do pretty much everything that keeps me away from my thesis for a few minutes these days, you should see my kitchen.. cleaner than ever ;) [13:17] FransWillem: Basically a WebSocket (and other) server API, [13:17] FransWillem: I figured it has a "request" event like http.Server [13:17] FransWillem: which gets a request and response [13:17] FransWillem: request being a WebSocketRequest, with all properties of http.ServerRequest, and an extra protocol property [13:18] FransWillem: and a WebSocketResponse, which should allow to either respond as HTTP, or to accept it as a socket [13:18] paul___ has joined the channel [13:18] FransWillem: My current implementation is that WebSocketResponse implements the Stream interface, closed by default [13:19] FransWillem: With all http.ServerResponse properties too [13:19] FransWillem: Then if you call writeHead, it'll turn into writeOnly, and allow you to write HTTP data [13:19] FransWillem: but if instead you call .accept, it'll accept the WebSocket Upgrade request, and it'll turn into a full-fledged net.Stream implementation [13:20] FransWillem: (first turns into .readystate="opening", then fires "connect", then readystate="open") [13:20] chrischris has joined the channel [13:21] FransWillem: Does that sound ok, or should it be more like you call respondHttp on the responseObject to get a http.ServerResponse to do HTTP data, or you call respondSocket and you get a Stream object back ? [13:22] wattz: Good morning! [13:22] stride: sounds fine for me but I like the low-level nature of most node modules, I figure that, for someone new, it migth sound a little hard to understand at first [13:22] stride: but nothing that a few good examples wouldn't fix :) [13:22] stride: morning wattz [13:22] wattz: hey, anyone embed node (C++) in their app, make node related calls? [13:22] wattz: yo stride how you liven? [13:23] wattz: thinking of publishing my mysql (blocking, I KNOW...) driver for node [13:23] stride: except of a pile of scientific papers next to me, everything fine, you? :) [13:23] wattz: before i start thinking of ways to make it async [13:23] wattz: stride: coding my brains off [13:23] davidsklar has joined the channel [13:24] FransWillem: stride: Yeah, my goal is to keep it as close to low-level Node as possible, tbut I'm not sure if a frankenstein-interface-mix between net.Stream and http.ServerResponse is adequate :/ [13:24] stride: FransWillem: are there mixed use-cases where you want to support http and stream in one implementation? [13:24] stride: FransWillem: the regular http module does that mix, too, so what? :) [13:24] stride: FransWillem: at least it encapsulates the stream, too [13:25] FransWillem: stride: Basically, if you do not wish to accept a WebSocket connection, I figured it's nicest to send a simple HTTP 400 or HTTP 500 reply, seeing as the orginal connection request was HTTP too. At least it's nicer than accepting the connection and immediatly closing it [13:26] wattz: im thinking of building an application server in C++ and wanted to embed node and use it's underpinnings [13:26] stride: FransWillem: yeah, sounds reasonable. for that use-case I'd think a function that turns your stream into a http response would be adequate. if your main use-case is still raw tcp you'd bloat up your API for a few error responses imho [13:26] jetienne has joined the channel [13:27] BryanWB has joined the channel [13:27] ctp has joined the channel [13:27] volve has joined the channel [13:28] maushu: FransWillem: Using a 500 makes more sense. [13:29] dylang has joined the channel [13:29] stride: FransWillem: okay, that sounded confusing, my point is, you might not want the full HTTP stack (parser, response wrapper, ...) everytime you get a connection when all you want to do is answering with an error message in case the client's websocket request begins with {method} {url} {protocol} [13:29] maushu: Since the error is from the server side, not client side. [13:30] maushu: Someday I will use 402. [13:30] stride: 501 would be most appropriate I guess [13:30] _announcer: Twitter: "Nodeload replaces the ruby git archive download server #nodejs http://digs.by/9xfZwW" -- Sam Shull. http://twitter.com/samshull/status/20468587838 [13:30] FransWillem: stride: A websocket connection request will first have to pass through the http.Server, which in turn spits it out with an "upgrade" event, so I won't have to do any parsing. All I'd do is implement an interface which looks and feels like a http.ServerResponse :) [13:32] _announcer: Twitter: "dreamt about two hot gingers oil wrestling last night… one with node.js, the other lighttpd… ah Cancun, sharpies, and Tequila" -- Use My Computer. http://twitter.com/usemycomputer/status/20468754080 [13:35] stride: FransWillem: oh, sorry for the misunderstanding :) in which event are you currently making the stream/http determination? in your websocket request event? [13:37] FransWillem: stride: in the request you get a WebSocketResponse object. If you call .writeHead on that, it'll look and behave like a http.ServerResponse, if you call .accept on it, it'll look and behave like a net.Stream (as if you had just gotten it from a net.Server "connection" event) and it'll turn read/writeable after the "connect" even [13:37] FransWillem: t [13:39] RedMike has joined the channel [13:39] BryanWB: can anybody tell me what the main difference b/w createServer and createApp calls in connect? [13:39] BryanWB: is createApp just createServer w/ default settings? [13:39] BryanWB: ah, i found the code comments [13:40] micheil has joined the channel [13:40] stride: FransWillem: only thing that comes to my mind is the state when using writeHead (for accept() that sounds fine). writeHead is expected to write something, while the thing you're writing into is still closed (if I understood you correctly) [13:40] mscdex: FransWillem: fyi, websocket requests are not HTTP, even though they may look like it [13:41] RedMike has left the channel [13:41] FransWillem: mscdex: Yes, but declining a WebSocket upgrade request should be done with a HTTP response, right ? [13:42] ben_alman has joined the channel [13:44] knuckolls has joined the channel [13:46] stride: just reading the ws specs.. var socket = new WebSocket('ws://game.example.com:12010/updates'); if you have a second clear my mind please: how is the "/updates" part sent to the server? [13:46] FransWillem: stride: GET [13:46] FransWillem: It's just a GET request with a few headers to tell the server that it should upgrade to a websocket connection [13:47] FransWillem: http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76#section-1.3 [13:49] stride: ahh :) didn't know that, sorry. in that case your implementation sounds very reasonable imho [13:49] cce: ACTION is curious -- does websocket let you know if a user navigates away from a webpage or clicks cancel button? [13:50] FransWillem: cce: Connection is just closed [13:50] mape: FransWillem: so what is your crazy idea of an implementation? [13:50] davidwalsh has joined the channel [13:51] cce: FransWillem: ok, so you have to rely upon tcp timeout? so websocket doesn't help with this? [13:51] mape: socket.io but more cuddly to node? [13:51] FransWillem: cce: WebSocket after the initial handshake is pretty much the same as a TCP connection, which is just closed gracefully once the browser leaves the page. [13:51] rudebwoy has joined the channel [13:51] mape: FransWillem: It doesn't on Firefox4 beta :/ [13:51] FransWillem: mape: Yes, pretty much, and on the client-side more cuddly to the WebSocket API [13:52] stride: handleUnload is called by the browsers before they close anything, isn't it? you could try sending a quit-msg there I guess [13:52] mape: Firefox4 just bails [13:52] steadicat has joined the channel [13:52] charlenopires has joined the channel [13:52] stride: how rude :) [13:52] cce: ACTION thinks the inability to signal a closed connection is a serious problem for webservers, hence epoll over poll, etc. [13:52] FransWillem: mape: Do you mean it doesn't send the WebSocket draft74 end packet (FF packet with length 0), or does it just completely abandon the TCP connection? [13:53] FransWillem: mape: I find it highly unlickely that they wouldn't just call close on the socket :/ [13:53] mape: FransWillem: Well I don't know the inner workings, but using micheils implementation the Firefox4 beta doesn't emit disconnect when closing [13:53] mape: When everyone else does [13:54] FransWillem: mape: Does Firefox4 beta even implement WebSocket ? or are you using some kind of fallback layer that fakes the websocket API ? [13:54] mape: FransWillem: No it is native in FF4 beta [13:54] mape: you should try/test it out :) [13:54] zapnap has joined the channel [13:54] mape: And report back if I'm wrong [13:54] mape: But that is my experience at least [13:55] FransWillem: Meh, not sure, but I'd signal that as a bug tbh :/ [13:55] stride: ACTION just realized that he is way behind on websockets.. have to try doing something with them next week [13:55] mape: stride: I'm working on a pretty cool analytics tool/user testing thingy using webkit [13:56] dylang: has anyone seen a script that will copy modules from .npm to your project for pushing to servers that don't have npm or shell access like heroku ? [13:56] mape: Like a real time screencast of the user using the site but remote, and broadcasted [13:56] mape: So site owners can get a list of all their current users (with websocket support) and open a session to see exactly what the user is doing [13:56] stride: mape: great idea, that sounds awesome [13:57] mape: Pretty simple, like 400 lines of code serverside [13:57] stride: that multiple mouse demo with a live-heatmap view for site owners would be nice for analytics imho :) [13:57] mape: opens a popup, shows the mouse cursor, resizes the popup based on user window size, shows clicks and scroll [13:57] mape: issues are triggering actions on the viewers side [13:58] stride: mape: so it's monitoring one user at a time? [13:58] mape: stride: well the server is broadcasting all [13:58] stride: ah ok [13:58] mape: but it only sends info back to the ones being viewed [13:58] matt_c has joined the channel [13:58] mape: so 100 users send data to the server that is dumped, but if I enter a session with a user that is broadcasted [13:59] mape: so hopefully it scales pretty ok [13:59] hpoydar has joined the channel [13:59] mape: has some checkes for public/private keys that might slow it down but don't think it will be to bad (so only authorized users can view users based on a specific sites script inclusion) [14:00] mape: But yeah, the issues are still user specific stuff, since my implementation just iframes the url the user is on it borks if the logged in user has different content [14:00] mape: or if the browser rendering is all off, since the cursor is just sending an offset from the top left corner [14:01] stride: sounds great to do usability testing [14:01] mape: Yeah, that is the idea, expensive to do inhouse user testing, better to just use the actual users [14:01] wattz: anyone know a C++ project that embeds node? [14:01] stride: are you using websockets directly / socket.io / DNode with socket.io? [14:02] mape: stride: Right now just micheils websocket server, and no fallback, want the clientside script to be really really light, so the only thing the owner of the site has to do is include the script and forget about it [14:02] mape: And I'm using my asset manager so everything that doesn't support websockets just get an empty file [14:03] stride: ah ok [14:03] mape: So you are only getting like 20-30% of the user base that has support but that should be enough if you have a decent site with enough traffic [14:03] mape: and since firefox will implement it it should scale over time [14:03] mape: not sure about ie9 though [14:04] mape: So I guess it messes the tests up a little, you won't be able to test the IE6 users without making their experience horrid [14:04] hij1nx has joined the channel [14:04] mape: doing an xhr req for each mouse move will kill them [14:05] wattz: so all node really is, is an event/epoll manager, that loads js to do everything else ( oh and socket/thread handling) [14:05] wink- has joined the channel [14:06] FransWillem: wattz: That plus a high performance http parser, a DNS library, and a solid set of JS standard libraries [14:06] mape: wattz: it does what js does, and some extra things to make that ever nicer [14:06] _announcer: Twitter: "http://bit.ly/cuaP8W nodejs and mongo seems a perfect match" -- Ifnu Bima. http://twitter.com/ifnubima/status/20471362811 [14:06] wattz: FransWillem: but that all looks to be written in JJS [14:06] wattz: JS [14:06] mape: Plus it has a really nice community [14:06] FransWillem: wattz: http parser + dns library have quite a bit of C++ code too [14:06] wattz: mape: oh, don't get me wrong, I love node man [14:06] wattz: writing a bunch of addons for it [14:07] wattz: but i was looking to see if it was embeddable in a C++ program [14:07] mape: wattz: Hehe no worrys, just felt it needs to be mentioned, hard to find a community that is as chill as the node.js one :) [14:07] loincloth has joined the channel [14:07] wattz: mape: until you tell them your mysql driver is blocking as of right now ;) [14:07] wattz: lol [14:08] _announcer: Twitter: "#Node.js is this the next big thing? - http://bit.ly/cr6nJN <- cool :)" -- Marko E P. Acosta. http://twitter.com/mark_xDDD/status/20471500020 [14:08] mape: Well it is still young, and why use mySql anyway.. ;) [14:08] daniellindsley has joined the channel [14:08] wattz: mape: why not? [14:08] wattz: ACTION lights the fuse. [14:08] jetienne: anybody saw ryah on the channle recently ? [14:09] mape: wattz: It aint a buzz word, so you can't use it [14:09] wattz: mape: haha [14:09] mape: Those are the rules of physics, obey them [14:09] wattz: honestly i like couch too, but mysql has never given me any problems :P [14:10] jetienne: wattz: v8 is made to be ultra easy to embed in c++, so node may be [14:10] wattz: jetienne: yeah, except the modules are written in js so it's not just a matter of include the lib and header [14:10] jetienne: wattz: additionnaly a project who did v8 in ruby just released a node in ruby, you may look at it [14:10] jetienne: trying to remember the name [14:11] davidwalsh has joined the channel [14:11] wattz: jetienne: well im thinking of writing a nice web only application server in C++ [14:11] jetienne: http://github.com/cowboyd/therubyracer those guys [14:11] gf3 has joined the channel [14:11] mscdex: yuck :P [14:11] wattz: Node is really well written and love to flex on it [14:11] wattz: mscdex: specific uses man.. specific needs.. [14:12] mscdex: heh... i guess... [14:12] wattz: don't heh me young man! [14:13] wattz: what Im doing though, is writing all the C++ i need for this project using node so perhaps i can swing that we only use node [14:14] wattz: mscdex: you don't think a nice "Tomcat" for js would be nice? [14:14] wattz: lol [14:15] _announcer: Twitter: "@trptcolin you've got a node.js app for twitter? Can I help test? I'm exiled to Windows land and need a decent client! Tweetdeck blows..." -- Scott Pfister. http://twitter.com/goneflyin/status/20472024021 [14:17] tahu has joined the channel [14:18] _announcer: Twitter: "LakTEK – Real-time Collaborative Editing with Web Sockets, Node.js & Redis - http://goo.gl/V9by" -- Peter Hoffmann. http://twitter.com/peterhoffmann/status/20472267218 [14:20] timmywil has joined the channel [14:23] FransWillem: Ok, everyone, how ugly is this: http://pastebin.com/5PinuVpn ? [14:24] ajpiano has joined the channel [14:24] bpot has joined the channel [14:24] mape: FransWillem: shouldn't use delete [14:24] FransWillem: mape: Why not ? [14:25] FransWillem: mape: And is that honestly the most hackish and ugly you could find in there :p? [14:25] mape: Cuss everyone says so, not really sure why though... Supposetly that throws v8 into slow mode [14:26] mape: Doubt it would cause crazy performance decrease though [14:26] _announcer: Twitter: "Thingler - A really simplified collaborative todo list written entirely in JavaScript using node.js and... http://tumblr.com/xm5f3hf6y" -- Leon Weidauer. http://twitter.com/techpriester/status/20472877362 [14:26] mape: And isn't callee going away? [14:26] FransWillem: Well, for now, I'd rather make sure that the constructor of http.ServerResponse has a clean slate to work on. [14:26] softdrink has joined the channel [14:26] FransWillem: why should it ? arguments.callee is independent from the object or the prototype. [14:27] mape: guess it will work though, unless you throw "use strict" in there [14:28] podman has joined the channel [14:28] mape: FransWillem: Access to arguments.caller and arguments.callee now throw an exception. Thus any anonymous functions that you want to reference will need to be named [14:28] mape: in ecmascript 5 strict mode [14:28] FransWillem: ...? wtf? why did they remove that?! [14:29] mape: It is slow? [14:29] mape: Using arguments has always been slow [14:29] mape: Guess they just don't enjoy it [14:31] bradleymeck_ has joined the channel [14:31] bradleymeck_: which db would you guys recommend for full text searching (do any of the key/value stores even have that)? [14:31] FransWillem: Hmm, could probably remove that check, seeing as it removes all own properties and changes the prototype [14:31] FransWillem: but still [14:32] FransWillem: guess if (this.writeHead===WebSocketResponse.prototype.writeHead) { would be better [14:32] FransWillem: although not as foolproof [14:34] dnolen has joined the channel [14:34] streampunk has joined the channel [14:35] wattz: decisions decisions [14:36] ditesh|cassini has joined the channel [14:36] FransWillem: Hmmm [14:36] mscdex: mape: where did you see that? [14:36] FransWillem: I could also do return http.ServerResponse.prototype.writeHead() instead of this.writeHead which would completely elevate the problem :p [14:36] mape: mscdex: what? [14:37] mscdex: about arguments.callee throwing an exception [14:37] mape: http://www.google.se/search?source=hp&q=ecmascript%20strict%20mode%20callee [14:37] mscdex: oh, strict mode [14:38] mape: jup [14:39] mscdex: wow... strict mode also doesn't let you define new variables when using eval [14:39] jakehow has joined the channel [14:39] mape: mscdex: ever used eval to define new variables? [14:40] cloudhead has joined the channel [14:40] mscdex: i don't use eval, but i could see where it might be useful [14:40] mape: like? [14:40] mape: (not being an ass, want to know) [14:41] FransWillem: http://webreflection.blogspot.com/2009/05/ecmascript-5-do-not-remove.html :) [14:41] mape: Only thing I've seen using eval in a long time is ejs using eval [14:41] mape: FransWillem: Start a web petition, those seem to work? ;) [14:42] mape: With standard bodies it seems either you are a part of them or you follow their rules, sadly [14:42] mape: Just look at how shitty css is [14:43] mape: But yeah, isn't the arguments.callee thingy based on the fact that using arguments at all is slow? [14:43] knuckolls has joined the channel [14:44] maushu: mape: less? [14:44] mape: maushu: wha? [14:44] maushu: http://lesscss.org/ [14:45] mape: maushu: yeah? [14:45] rwaldron_ has joined the channel [14:46] knuckolls has joined the channel [14:47] mape: maushu: what is the question/idea/thought? [14:47] maushu: No idea. [14:47] mape: Then I agree [14:47] maushu: You said css is shitty, I think. [14:47] mape: Oh yeah [14:47] maushu: Then I was "of course it is shitty, here try less". [14:47] mape: less isn't css [14:48] wattz: things like less, haml all don't make sense to me [14:48] mape: maushu: How do I center a dynamic height div in a container box with less in the y axis? [14:48] maushu: Then I linked to less and you replied with "wha?" probably wondering what the hell I was talking about. [14:48] wattz: you put one more element of processing in your cycle [14:48] maushu: You asked then what was the thought about it and I had no idea. [14:48] jetienne: lets talk about this for 30min... it worths it :) [14:49] mape: wattz: ie not css? [14:49] wattz: yeah [14:49] wattz: and not html [14:49] mape: So yeah, css sucks [14:49] wattz: why use haml? [14:49] wattz: just because it "looks" better or what? [14:49] maushu: You agreed to my reasoning and I affirmed that css was shitty and you agreed to my reasoning. [14:49] wattz: Im not downing them, don't get me wrong [14:49] wattz: I just don't get it is all [14:49] jetienne: wattz: the algo is simple: the syntax is clearer so easier to write [14:49] wattz: jetienne: but you have to learn it [14:50] maushu: Then I replied that then- then- then- Error: stack overflow. [14:50] jetienne: wattz: yep, it is only a matter of priority in your work [14:50] mape: maushu: Ah I thought you meant less would solve the issues of css [14:50] wattz: i have been doing web dev (among other things) for so long that html/css are just second nature [14:50] jetienne: wattz: some put "clear syntax" higher than other [14:50] mape: wattz: Well it isn't, still, how do you center somthing on the y-axis that is dynamic? [14:50] maushu: mape: It should solve plenty of them. Specially vars and organization. [14:50] wattz:
:D [14:50] wattz: hahaha [14:51] wattz: ACTION is kidding [14:51] wattz: mape: for say a div? [14:51] mape: And why did on earth did they not default to box-sizing [14:51] jetienne: sugar syntax for html or js i dont get [14:51] mape: wattz: does it matter? [14:51] jetienne: but i get it for css [14:51] wattz: mape: depends on the designer [14:51] mape: maushu: Well vars and organization isn't the issue [14:51] wattz: for me at least [14:51] Sudhirj has joined the channel [14:51] wattz: doesn't css3 support vars? [14:52] mape: wattz: Not at all, a generic image that is dynamic in height withing a div container [14:52] maushu: I think its the implementation. I wonder how difficult it would be to implement a vertical-align on every block? [14:52] ceej has joined the channel [14:52] FransWillem: Btw, does anyone know of a way to call a constructor with variable list arguments ?, e.g. Buffer.apply(...,[]); ? [14:52] mape: the whole calc thing might solve it but it won't be used since IE shit is still in the pipeline [14:52] wattz: mape: jetienne: the clear syntax makes sense [14:52] wattz: mape: i guess [14:52] wattz: mape: maybe i just need to try it out one day [14:52] mape: wattz: is the current default box model more clear then using box-sizing? [14:53] mape: For me it is only causing issues [14:53] wattz: lol, is that a trick question or just a loaded one [14:53] jetienne: wattz: you have to learn it, and you are in trouble if the maintainer of the compiler stop [14:53] MrNibbles: hey guys [14:53] jetienne: wattz: so i dont use them either :) [14:53] wattz: jetienne: ahh [14:53] marshall_law has left the channel [14:53] MrNibbles: could you check out my js1k demo? [14:53] MrNibbles: http://www.webnibbles.co.uk/dropbox/ [14:53] MrNibbles: let me know if its really jerky on your box [14:54] mape: wattz: What? The box-sizing one? How is that a trick question? [14:54] wattz: to mean it seems like 'writing a templating language for php' [14:54] MrNibbles: click to randomise [14:54] wattz: when php is a templating language. [14:54] wattz: mape: im just pulling your chain [14:54] MrNibbles: p.s works best in safari/chrome [14:54] jetienne: MrNibbles: very slow on my netbook/chrome [14:54] wattz: mape: just avoiding the rabbit hole, lol [14:54] MrNibbles: jetienne: :( [14:54] jetienne: MrNibbles: make it faster. reduce resolution or something [14:55] MrNibbles: its not really designed for people with netbooks :P [14:55] bjartek has joined the channel [14:55] shimondoodkin: maushu: is there such thing in javascript ? [14:55] shimondoodkin: less [14:55] jbrantly: MrNibbles: it's pretty slow for me too (not a netbook, 3 year old laptop) [14:55] MrNibbles: jetienne: thanks for the heads up though :) [14:55] mape: wattz: Yeah, so width: 100%; padding: 20px; should be impossible right? [14:55] jetienne: MrNibbles: well it will be slow anyway, because 1 web page is using only 1 processor [14:56] wattz: mape: aye, because that would increase the width over the 100% [14:56] wattz: shou.d [14:56] MrNibbles: jbrantly: what browser? [14:56] jbrantly: MrNibbles: chrome [14:56] MrNibbles: do you have safari? [14:56] jbrantly: yea [14:56] jetienne: MrNibbles: make it run at 20fps on your box [14:56] jetienne: MrNibbles: no matter the resolution [14:56] MrNibbles: jetienne: its running at 130fps on mine :S [14:56] mape: wattz: well have you ever used it in that sence? or do you just want the element to be 100% and have 20px padding within that? [14:57] jetienne: MrNibbles: ah [14:57] wattz: i rarely use 100% [14:57] wattz: tbh [14:57] MrNibbles: jbrantly: any better in safari? [14:57] MrNibbles: if not im going to dump the resolution down a bit [14:57] wattz: and i will admit css/html isn't my strongest, i just do it to try to get through it as fast as possible [14:57] wattz: lol [14:58] jbrantly: MrNibbles: better. rough guesses are 1-2 fps in chrome, 5-6 fps in safari [14:58] MrNibbles: ouch, what spec is your machine? [14:58] nefD: i use tables for any sizing [14:58] nefD: and the blink tag for important stuff [14:58] jetienne: MrNibbles: so you need to multiple by 4 the default speed :) [14:58] Gruni has joined the channel [14:58] MrNibbles: jetienne: yep :S [14:59] MrNibbles: glad i asked you guys before i submitted it now! [14:59] mape: nefD: you should use marquee on the body to add some spice [14:59] jbrantly: AMD dual core, although I think it's running stepped down right now [14:59] nefD: mape: ooooh, good call! [14:59] MrNibbles: oh your on windows? [14:59] jbrantly: MrNibbles: yes [14:59] MrNibbles: ok, i might check with a few others to see if its some weird windows issue [15:00] MrNibbles: jetienne: are you on windows too? [15:00] nefD: MrNibbles: what are we looking at? im on linux if you want a third set of results for comparison [15:00] MrNibbles: nefD: http://www.webnibbles.co.uk/dropbox/ [15:00] MrNibbles: nefD: click to randomise [15:01] MrNibbles: hows the performance? [15:01] jbrantly: MrNibbles: you should add an fps counter so people arent guessing :) [15:01] Yuffster has joined the channel [15:01] MrNibbles: jbrantly: that is a damn good idea :P [15:02] nefD: MrNibbles: chrome 6.0.4.472.22 dev, ubuntu 10.04, dual core 2.8ghz, averaging about 4-5 fps [15:03] nefD: cpu usage is not at 100% like i would have suspected, though [15:03] MrNibbles: damn, somethings wrong here [15:03] wattz: i need to find a good embeddable webserver, don't feel like writing a thread manager and request handler [15:03] MrNibbles: its >100fps on my box [15:03] nefD: floating around 90% though [15:03] shockie has left the channel [15:03] jbrantly: MrNibbles: hardware acceleration? [15:04] MrNibbles: jbrantly: shouldnt be, not under chrome anyway [15:04] MrNibbles: im on os x [15:04] MrNibbles: i do have 8core 3.2ghz though... [15:04] jpld has joined the channel [15:04] mape: If only IE9 forced update and had a chrome frame kinda deal for IE6 [15:04] nefD: ran a profile on the script in chrome, but the results are probably what you would expect anyway [15:04] mape: No intranet breakage and still had users update [15:05] mape: and somehow infest those xp pirates with ie6 to update [15:06] MrNibbles: ok, update 1: http://www.webnibbles.co.uk/dropbox/ [15:06] MrNibbles: removed an implied eval (cant believe i missed that!) [15:06] MrNibbles: and dropped the res down [15:06] MrNibbles: any faster guys? [15:07] nefD: MrNibbles: almost twice as fast for me.. 8-10 fps maybe? would be nice to have some kind of fps counter :) [15:07] jbrantly: same [15:07] jetienne: MrNibbles: make 4 time less pixels [15:07] MrNibbles: haha [15:07] jbrantly: it's "usable" at this point for me in safari [15:07] MrNibbles: good start though, thank you everyone for your help [15:08] MrNibbles: i might hack an fps counter in there [15:08] MrNibbles: it will impact performance annoyingly [15:08] nefD: dont make a constantly updating one [15:08] jbrantly: ^ [15:08] jetienne: MrNibbles: Do you use a lib behind? [15:08] nefD: maybe act on a keypress or click or something, then update an fps display [15:08] MrNibbles: jetienne: no, its 860bytes compressed :) [15:09] ajpiano has joined the channel [15:09] fod has joined the channel [15:11] jetienne: :) [15:11] daniellindsley has joined the channel [15:11] jbrantly: MrNibbles: unless I'm missing something, you draw on a timeout of at least 40 ms. Meaning a max fps of 25 [15:12] MrNibbles: jbrantly: you can do var ti=0 in console [15:12] MrNibbles: to remove the limit [15:12] jbrantly: MrNibbles: ah ok :) just wondering how you got your crazy fps [15:12] MrNibbles: :) [15:12] MrNibbles: without a timeout things get a bit hairy :S [15:13] jbrantly: sure [15:13] _announcer: Twitter: "like @ryah said in his Node.js presentation, (paraphrased) "be careful creating abstractions, you might have to use them."" -- Jonas Galvez. http://twitter.com/galvez/status/20476296266 [15:13] MrNibbles: jbrantly: actually, can you try that in console [15:13] voxpelli has left the channel [15:13] MrNibbles: let me know how much better the performance is [15:13] MrNibbles: sorry, if your busy just ignore me :P [15:14] jbrantly: no change [15:14] MrNibbles: good, thats what i thought :) [15:14] jchris has joined the channel [15:14] SamuraiJack_ has joined the channel [15:15] charlenopires has joined the channel [15:16] sechrist has joined the channel [15:19] ashleydev has joined the channel [15:21] bradleymeck_: mape, arguments is not slow, it is always declared in the c++ side, always :P, and using eval, i cant compile myself a new function by generating the source at compile time, makes me a sad panda [15:22] mape: bradleymeck_: huh? c++ ? I thought this was the js side? [15:22] bradleymeck_: the js side just maps a name to a pointer to the c++ arguments object in virtually all js engines (jscript cough*) [15:23] bradleymeck_: jscript is painful doing almost anything soo i ignore it however [15:23] hansek has joined the channel [15:23] ashleydev_ has joined the channel [15:23] alecmuffett has joined the channel [15:24] bradleymeck_: on a side note strict mode breaks jade [15:24] khug has joined the channel [15:24] mape: Well how does that have any bearing to those using pure js? [15:24] mape: And well, strict mode doesn't break anything [15:24] mape: unless you throw it into strict mode [15:26] bradleymeck_: strict mode makes it sound like it is taking out faulty features, and as for pure js, eval is historic, arguments.caller is useful, and that functions can force strict mode on other functions seems wrong [15:26] bradleymeck_: ACTION also sometimes uses eval [15:26] bradleymeck_: all those are pure js? [15:28] mape: bradleymeck_: well since the parent scope is always the one enforcing it how is it wrong? [15:28] mape: Make sure those kids aren't running crazy [15:28] mape: If they are grown up, let them [15:29] mape: But if you are a grand parent trying to force grown ups to do certain things, then either find better children or accept it [15:30] bradleymeck_: how many corporate ppl will want "strict" mode adherence, even if you know what you are doing? also how many kids are going nuts w/ arguments or eval? i havent seen almost anyone use eval that either is completely new to js or is using it w/ purpose [15:30] bradleymeck_: i dont want to be forced to act like a baby because joe smoe says eval is scary [15:31] mape: bradleymeck_: Then don't use strict :) [15:31] mape: Want a crazy party? [15:31] bradleymeck_: i have to if i write a lib [15:31] mape: Or want a strict one? [15:31] bradleymeck_: how many ppl will bitch at me about my lib not being strict if i want it to be used? [15:31] mape: Then just state this is a crazy party module [15:32] nefD: did someone say.. crazy party?! [15:32] bradleymeck_: i can emulate eval, thats ok, but arguments.caller?! [15:32] _announcer: Twitter: "@kuvos nTPL: node.js fast and self-refreshing template system http://ur.ly/j05Y RT Please!" -- Fedor Indutny. http://twitter.com/indutny/status/20477753621 [15:32] FransWillem: Is there a quick way to see if the total length of an array of strings is more than 10, without actually looping through all elements if (for example) the first two are already more than 10 ? [15:32] FransWillem: something like .reduce ? [15:33] bradleymeck_: mape, mainly i just dont want what i know is going to happen. ppl are going to complain about non-strict modules, and rather than js allowing you to check if a func is strict compliant they made an entire mode [15:34] mape: bradleymeck_: For sure, deal with it. [15:34] bradleymeck_: FransWillem Array.prototype.every [15:34] bradleymeck_: i will deal w/ it but i will bitch [15:34] mape: bradleymeck_: Thems are teh rules of teh internetz [15:34] mape: But standards usually pick up [15:35] bradleymeck_: standards sometimes hurt me, like css :(, and the fact that ecmascript has almost no opponents to their ruling body doesnt make them always thinks well [15:36] bronson has joined the channel [15:36] bradleymeck_: i argue w/ them a lot, they tend to just say thems the rules as well, without listening to alternative solutions or commenting on them [15:36] nefD: dont hate the playa, hate the game [15:37] bradleymeck_: i do hate the game, but the player wont play w/ anything but himself [15:37] _announcer: Twitter: "I was not aware that #nodejs wasn't #commonjs compliant http://hns.github.com/2010/07/30/modules.html" -- Matthew Taylor. http://twitter.com/rhyolight/status/20478075098 [15:37] nefD: hahahaha [15:37] bradleymeck_: its not that im against a "pure" subset, im against a Mode [15:37] nefD: if only that player would quit playing with himself, he might get something done [15:38] mape: bradleymeck_: like I said, css is shit, and standard bodies are funny. Either you are in them, or you follow them [15:38] mape: Of you go crazy and do a parser and make things as good as they can [15:38] bradleymeck_: or you go off and are ignored ;p [15:38] jetienne: websocket is possible on google appengine? [15:38] mape: And with things like css that is like shit.... [15:38] bradleymeck_: i make things, not parsers since i wont beat their speed, jetienne, no [15:39] mape: bradleymeck_: parsers can be fast enough, if you cache [15:39] mape: but it still won't fix things that deeply shitty in the lang [15:39] mape: expressions in css is awsome [15:39] bradleymeck_: the lexing, hell yea, the code gen, hells bells [15:39] jetienne: bradleymeck_: ? [15:39] mape: unless they are implemented like a crack whore [15:39] bradleymeck_: the deadline on appengine doesnt let you [15:40] jetienne: bradleymeck_: ok [15:40] mape: deadline? [15:40] bradleymeck_: deadline for requests, after given time requests must end depending on what occurs [15:40] mape: timeout? [15:41] bradleymeck_: nope, app engine will kill it before then [15:41] jetienne: socket.io is supposed to fallback on seomthing sensible in this case, correct ? [15:41] bradleymeck_: you can even be streaming out data when it does it :( [15:42] robinduckett: @jetienne flash [15:42] bradleymeck_: i have no clue jetienne, the problem is more your server will kill the stream than the client holding onto it, could have really short long polls [15:42] robinduckett: sensible [15:43] bradleymeck_: id suggest a second server honestly to push/pull data to gae if you can [15:43] tjholowaychuk has joined the channel [15:43] jetienne: ko [15:44] jetienne: ok [15:44] jakehow has joined the channel [15:45] [[zz]] has joined the channel [15:51] khug has joined the channel [15:59] joshbuddy has joined the channel [16:00] _announcer: Twitter: "@polotek Do you have any thoughts on #nodejs vs #ringojs? I guess if you're on the JVM, ringo is the best SSJS option for CommonJS, eh?" -- Matthew Taylor. http://twitter.com/rhyolight/status/20479775446 [16:02] keeto has joined the channel [16:04] _announcer: Twitter: "@rhyolight They are very different. #nodejs is raw and needs a framework on top. #ringojs is full stack and stable." -- Marco Rogers. http://twitter.com/polotek/status/20480083604 [16:05] _announcer: Twitter: "@rhyolight Plus #nodejs is all about non-blocking io. everywhere, not just the request level. It lends itself to certain use cases." -- Marco Rogers. http://twitter.com/polotek/status/20480138527 [16:08] hij1nx has joined the channel [16:08] sechrist: is pkgbackup the only good cydia restore thing? [16:08] _announcer: Twitter: "Writing async code on top of libeio and exposing it as evented io by node.js feels good man. #node.js" -- Bill Casarin. http://twitter.com/jb55/status/20480359854 [16:08] JimBastard has joined the channel [16:09] sechrist: err [16:09] sechrist: wrong chan [16:10] jetienne: weird dialect [16:10] jetienne: http://cydia.saurik.com/package/com.pragmatixconsulting.packagebackup got its origin! [16:11] hij1nx_ has joined the channel [16:11] sooli has joined the channel [16:11] sooli: Hi All [16:11] JimBastard: stupid fucking contractors getting me sick [16:11] JimBastard: sup sooli [16:12] sooli: I'm playing with the TCP server [16:12] sooli: But I have a strange behavior [16:12] JimBastard: yeah i have the same problem, minus the tcp server part [16:12] JimBastard: whats the issue? [16:12] sooli: well; my client is well connected [16:13] sooli: but wen I do a tcp.write("something") [16:13] sooli: I have a 4s delay [16:13] JimBastard: gist? [16:13] sooli: I'm using Titanium Titanium.Network.TCPSocket [16:13] JimBastard: can you isolate that the issue is with node? [16:13] sooli: node.js for the server [16:13] sooli: Titanium.Network.TCPSocket for the client [16:14] JimBastard: i'd suggest setting up a simple client using another node script [16:14] JimBastard: yo hij1nx perfect timing [16:15] JimBastard: but yeah sooli , i'd setup a simple script to test the connection [16:15] JimBastard: then i'd gist your code here [16:15] nefD: wait, jimbastard, wtf are you doing helping people? [16:15] nefD: i feel like i dont even know you anymore [16:15] JimBastard: nefD: i help people all the time [16:15] nefD: LIES [16:16] nefD: L135 [16:16] JimBastard: i do, you are just not here all the time [16:16] sooli: JimBastard: http://pastie.org/1079880 [16:16] JimBastard: you know im the most active person in the room [16:16] JimBastard: http://stats.nodejs.se/ [16:16] JimBastard: also, can anyone explain this, http://github.com/aungkyawsan53 [16:16] nefD: im just joshin' ya <3 <3 ---^--{@ [16:17] JimBastard: why did that guy join github 3 minutes ago to comment on my commit? [16:17] JimBastard: and say aaaaaaaa [16:17] JimBastard: yeah sooli i have no idea what Titanium.Network.createTCPSocket("localhost", 8124); is [16:17] stagas_ has joined the channel [16:18] sooli: it's a Appcelerator application [16:18] sooli: but I will try something else [16:18] JimBastard: sooli: i'd isolate the problem first [16:19] JimBastard: also hij1nx might be able to help you if he appears / has time. he committed a bunch to the titanium project [16:20] [[zz]] has joined the channel [16:20] jesusabdullah: What's the Titanium project? [16:21] sooli: jesusabdullah: http://www.appcelerator.com/ [16:21] charlenopires has joined the channel [16:21] jesusabdullah: thx bro! [16:21] jesusabdullah: :v [16:21] sooli: this allow you to create webapps for Desktop but mobile devices too [16:21] matt_c has joined the channel [16:22] sooli: but the Titanium.Network.TCPSocket don't seems to work well [16:22] jesusabdullah: MOBILE?! >:O [16:22] jesusabdullah: ACTION pooh-poos iphones because he doesn't have one [16:22] sooli: http://pastie.org/1079880 << here my node.js basic server [16:23] sooli: then I do : tcp = Titanium.Network.createTCPSocket("localhost", 8124); tcp.connect(); [16:23] sooli: then tcp.write("something") [16:23] BrianTheCoder has joined the channel [16:23] sooli: my node.js display "something" after few seconds [16:24] sooli: if the I do cp.write("something2") [16:24] JimBastard: sooli: for the third time, you have to isolate the issue [16:24] JimBastard: create a basic tcp socket server / client without titanium [16:24] sooli: my node;js server display me "2" after few seconds [16:24] sooli: weird [16:24] tjholowaychuk: creationix: you here? [16:25] creation1x: sup tjholowaychuk [16:25] creation1x: ACTION sees what i did there [16:25] tjholowaychuk: did this fjakobs guy sign the cla? did you see those patches? [16:26] eggie5 has joined the channel [16:27] dmcquay has joined the channel [16:28] bradleymeck_: in dojo is there just a vertical list widget? im not seeing one in the docs, closest i can see is doing it myself w/ appends [16:29] JimBastard: phiggins: [16:29] eggie5: good morning [16:29] tjholowaychuk: creationix: how goes the game [16:30] phiggins: JimBastard: [16:30] JimBastard: in dojo is there just a vertical list widget? im not seeing one in the docs, closest i can see is doing it myself w/ appends [16:31] sooli: ok It's the Titanium TCPSocket who just sucks [16:32] JimBastard: there you go [16:32] JimBastard: now go yell at them [16:32] twoism has joined the channel [16:32] sooli: :) [16:33] joshbuddy_ has joined the channel [16:33] MrNibbles: whaye [16:33] MrNibbles: think im ready to submit this :) [16:33] MrNibbles: http://www.webnibbles.co.uk/dropbox/ [16:33] MrNibbles: click it to randomise! [16:35] jesusabdullah: MrNibbles: How'd you do that? :o [16:35] MrNibbles: its based on some c i found a while back, although its very different now! [16:36] jesusabdullah: Oh, so that's canvas [16:36] MrNibbles: yeah [16:36] dgathright has joined the channel [16:36] jesusabdullah: I didn't know you could bust out the rasters like that [16:36] jamescarr: cool stuff [16:36] jesusabdullah: Yeah, way awesome [16:36] slaskis has joined the channel [16:36] jesusabdullah: I thought it was a gif at first [16:36] jesusabdullah: You might be able to get some speed like that, if you can stream a gif [16:36] jetienne: MrNibbles: find a normal box and look at it. then decide. this is my advice. i think you need to see what most people will see. most people have computers significantly slower than yours :) [16:36] bradleymeck_: if rasters are done right, they can be fast [16:37] bradleymeck_: im on a 2 year old comp and its going fine in chrome [16:37] jesusabdullah: Well, this computer is a netbook [16:37] jesusabdullah: so almost all client-side rendering of ANY sort is sketchy [16:37] jamescarr: bradleymeck_, heh, I'm on a 4 year old computer and its running fine [16:38] jetienne: http://www.chromeexperiments.com/ jesusabdullah look at that, they do fine [16:38] bradleymeck_: stretch it to fullscreen w/ css inspector! [16:38] jesusabdullah: Holy shit, the sketchpad actually works [16:38] jesusabdullah: like, really well [16:38] jesusabdullah: that's BA [16:39] MrNibbles: jetienne: thanks, your right, but the peopole testing have decent spec machines :) [16:39] MrNibbles: so im going to leave it at this [16:39] MrNibbles: i would have to sacrifice a lot if i was going to get it running a lot better [16:40] bradleymeck_: stretching to 100% height/width shows slowdown from the scaling [16:40] jchris has joined the channel [16:42] jesusabdullah: A "turbo" button for your browser could be useful [16:44] silentrob has joined the channel [16:44] astrolin has joined the channel [16:47] Rixius has joined the channel [16:47] brianleroux has joined the channel [16:47] Rixius: anyone know about a YUI compressor or YUI compressor like module for node? [16:49] aho: jsmin would work [16:49] aho: it's available as c#, java, js, perl, python... whatever [16:49] aho: it's the least effective minifier out there though [16:51] bradleymeck_: i tend to just throw things at the closure compiler's restful api and cache them [16:55] Rixius: ok thanks for the tips. [16:55] amerine has joined the channel [16:56] twoism has joined the channel [16:56] ceej has joined the channel [16:57] mattly has joined the channel [16:58] romainhuet has joined the channel [16:58] dipser: hi i am trying to serve a json object to one or all clients after it got changed from someone (through button-clicks e.g.), is there an easy way or a tutorial to learn from? [16:58] deepthawtz has joined the channel [16:59] cardona507 has joined the channel [17:00] Rixius: look up long polling or WEb Sockets [17:00] dipser: i want to "push" the json object... dont know how [17:01] Rixius: dipser: web sockets are great for modern browsers, gives a socket feel, but Long Polling works all around. [17:01] dipser: yes i have a long polling, but how can i react to it in node.js? [17:02] dipser: i tried to modify a script, but it wont work, how i want to [17:03] dipser: i do a longpoll to /stream an check if the pathname is /stream. so now i can deliver a json object if it is changed [17:03] dipser: what to do if it is not? [17:03] mjr_ has joined the channel [17:03] _announcer: Twitter: "8LU @jsuchy on node.js 2/3: testing - LIVE at http://bambuser.com/v/936352" -- Doug Bradbury. http://twitter.com/dougbradbury/status/20484189805 [17:03] Rixius: you wait on the request untill the object has been fired. you can use the Event Emitter http://nodejs.org/api.html#eventemitter-13 to handle waiting untill it's been changed and firing when it is [17:04] astrolin has joined the channel [17:04] technoweenie has joined the channel [17:06] knuckolls has joined the channel [17:07] jan247 has joined the channel [17:07] dipser: Rixius: tried that: http://nopaste.info/914a4df386.html [17:07] dipser: could you take a look at it? pls [17:08] rauchg_ has joined the channel [17:10] Rixius: dipser: i assume you're grabbing http, and url higher in the script? [17:10] dgathright has joined the channel [17:11] _announcer: Twitter: "@strangeloop_stl if possible, I'd LOVE to flex my node.js+couchdb muscles for it ;)" -- jamescarr. http://twitter.com/jamescarr/status/20484710661 [17:11] dipser: yes no error - http://nopaste.info/723e060cd9.html [17:12] tyfighter has joined the channel [17:13] bradleymeck_: rixius i know socket.io has a flash and longpolling fallback [17:14] Rixius: dipser maybe you should look into socket.io then [17:15] Rixius: bradleymeck_: I haven't had a chance to look into socket.io yet >.> [17:15] bradleymeck_: i just say that cause longpolling has some drawbacks :/ and flash has a slow startup [17:16] dipser: Rixius: i will look out for it - thx [17:16] MrTopf has joined the channel [17:16] rsms has joined the channel [17:17] jakehow has joined the channel [17:17] qFox has joined the channel [17:17] dipser: i just thought it would be better not to use websocket [17:18] dipser: if i want to reach some more ppl [17:18] dipser: and flash... urgs [17:19] jesusabdullah: socket.io! [17:20] eggie5 has joined the channel [17:20] caolanm has joined the channel [17:21] Blink7 has joined the channel [17:22] megan has joined the channel [17:23] megan: hi friends [17:23] WALoeIII has joined the channel [17:23] silentrob: Hi Megan [17:23] megan: hi silentrob [17:23] megan: do you use express? :) [17:23] silentrob: nope [17:23] hij1nx: JimBastard: whats up bastard ===) [17:23] megan: ejs? [17:24] silentrob: yes [17:24] Rixius has left the channel [17:24] megan: mines keeps trying to parse a file called layout.ejs o_O [17:24] mAritz: megan: express uses layout files [17:24] tjholowaychuk: megan: thats the view engine in express.. [17:25] ashleydev: megan it assumes you have a template for your header & footer type thing [17:25] ashleydev: but you can turn it off [17:25] megan: ohya? [17:25] tjholowaychuk: megan: if you dont want to use layouts ever (or infrequently) set app.set('view options', { layout: false }); [17:25] tjholowaychuk: which can be further overridden at the render() level as well [17:25] _frankie has joined the channel [17:25] ashleydev: express FTW [17:25] megan: hey thanks! I had a file called layout.css, so I was really confused [17:26] tjholowaychuk: layout.css?? [17:26] tjholowaychuk: hm [17:26] megan: yeah, and I thought it was trying to load that or something [17:26] tjholowaychuk: nope [17:26] ashleydev: megan: if you see how a default express project works (by just typing `express default`) then you'll see how the layouts work [17:26] megan: Thanks Ashley [17:26] ashleydev: megan search for 'body' [17:27] megan: type it in where? [17:27] tjholowaychuk: i should probably add some options for the app generation [17:27] tjholowaychuk: megan: in the terminal, $ express foo [17:27] ashleydev: megan how did you get express? [17:27] tjholowaychuk: will create an app at ./foo [17:27] megan: npm [17:27] rauchg_: how did you get npm ? [17:27] ashleydev: then you should have `express` in your path [17:27] megan: compiled from source [17:27] ashleydev: do you? [17:27] tjholowaychuk: so $ express foo && cd foo && node app.js [17:27] rauchg_: how did you get the source? [17:27] ashleydev: :P [17:27] megan: wget [17:27] _announcer: Twitter: "More upbeat thought. Much non-work fun to be had with various v8 based tools http://github.com/philogb/v8-gl and http://nodejs.org/" -- stuntprogrammer. http://twitter.com/stuntprogrammer/status/20485800895 [17:28] megan: ;D [17:28] rauchg_: story checks out. [17:28] megan: lol [17:28] rauchg_: haha [17:28] rauchg_: :P [17:28] ashleydev: did you find the express script? [17:28] megan: yeah, so I can copy that and have a project template? [17:28] ashleydev: no [17:28] ashleydev: run it [17:28] ashleydev: and give it the name of your project [17:29] ashleydev: `express ` [17:29] megan: ohhh. it made all those files in my folder [17:29] ashleydev: yes [17:29] ashleydev: now you can run app.js [17:29] megan: I didn't even realize it made a mess [17:29] tjholowaychuk: lol [17:29] ashleydev: and you can search for body under there and see how templating works [17:29] megan: this is good stuff [17:29] ashleydev: ok afk... [17:30] ashleydev: have fun [17:30] twoism has joined the channel [17:30] mattly has joined the channel [17:30] rauchg_: tjholowaychuk: fully agree with your bodydecoder comments [17:30] megan: so................... now to figure out how the routing works [17:30] pengwynn has joined the channel [17:30] rauchg_: if we do buffering there, we pretty much give no power to routes to access the streams [17:31] tjholowaychuk: yeah exactly [17:31] rauchg_: and that's the best thing about node right there :P [17:31] tjholowaychuk: I had some wine in me, well a lot but pretty sure it made sense lol [17:31] skampler has joined the channel [17:31] gf3 has joined the channel [17:31] zemanel has joined the channel [17:31] sveisvei: tjholowaychuk: Do you know if anyone has started a "admin"-module for express? [17:32] femtoo has joined the channel [17:32] nefD: autocompletion popups in vim = rad [17:32] sveisvei: tjholowaychuk: or you have plans for it :P [17:32] tjholowaychuk: sveisvei: not sure, I dont think anything open source [17:32] astrolin has joined the channel [17:32] tjholowaychuk: perhaps [17:32] tjholowaychuk: lol [17:35] saikat has joined the channel [17:36] ryah: tjholowaychuk: can you rebase your patches [17:36] ryah: they're not applying cleanly [17:37] megan: ugh, it's still trying to load layout.ejs. There's no stopping this thing [17:38] bradleymeck_: is there a way to hook onto http server a callback when http parsing fails and you get the buffered stream (if it is buffered) (make it act like a net.Server on error?) [17:39] tjholowaychuk: ryah: will do, i think felix snuck one in there first [17:39] tjholowaychuk: megan: and you have app.set('view options', { layout: false }) ? [17:40] megan: correct [17:40] tjholowaychuk: megan: hm, let me verify, I have that tested but I will double check [17:41] megan: it seems like pastebin is extra slow today [17:41] megan: http://pastebin.com/eP1Szspg [17:41] megan: .com works [17:42] megan: is this part of express or ejs? [17:43] paul___ has joined the channel [17:43] pgriess has joined the channel [17:43] tjholowaychuk: megan: express. im just fixing some node patches but i will get to you right away [17:43] megan: that's so kewl :D [17:44] megan: take that Microsoft [17:47] grahamalot has joined the channel [17:47] tk: great, water heater is busted/dying [17:48] davidc_ has joined the channel [17:48] davidc_: Ahh hey all ;) [17:48] b_erb has joined the channel [17:48] tjholowaychuk: ryah: should be ok now i think http://github.com/visionmedia/node/commits/console [17:48] davidc_: Is there a way to load an external script from within a node? [17:48] davidc_: say like I'd do with