[00:00] Anti-X: why is it called ui then [00:01] aho: yahoo user interface lib shizzle [00:01] aho: it just happens to work on the server side too [00:01] aho: <: [00:02] rcy has joined the channel [00:03] Anti-X: i had a look at their cookies code a few days ago, and i can't believe how abstracted everything is.. [00:03] Anti-X: i think they had 5 different functions just to parse the input of the function and set the cookie [00:03] ehaas has joined the channel [00:03] JimBastard has joined the channel [00:09] _announcer: Twitter: "OH: "My solution to this bug might be to just rewrite C in node.js"" -- Joe Damato. http://twitter.com/joedamato/status/24710009986 [00:09] gf3_ has joined the channel [00:10] Anti-X: yeah do that [00:10] jacquesc has left the channel [00:11] bmizerany has joined the channel [00:12] _announcer: Twitter: "watching @davglass talking about yui3 and node.js is like watching a kid explaining you it's favorite toy - it's just so much fun :-)" -- Dirk Ginader. http://twitter.com/ginader/status/24710226541 [00:19] ChrisPart has joined the channel [00:22] tk has joined the channel [00:23] creationix: does node's http client not like chunked encoding? [00:23] creationix: I'm getting chunk delimeters in my data events [00:24] _announcer: Twitter: "Just saw @davglass present YUI on node.js. Y.one('#mind').set('blown', true);" -- Brett Stimmerman. http://twitter.com/bretts/status/24711105700 [00:24] mjr_: creationix: it loves chunked encoding [00:25] creationix: my content starts with 4020\n and then ends with \n0 [00:25] creationix: the chunk stuff should be in the data event right? [00:25] creationix: or do I have to manually parse that out? [00:25] pquerna: is the server not sending the right trasnfer encoding? [00:25] mjr_: You should never see the chunk delimeters [00:26] creationix: hmm, let me check the server (I'm writing a custom reverse proxy) [00:26] mjr_: Something is broken if they are visible to you at all [00:26] creationix: Content-Length:242 Vary:Accept-Encoding [00:26] creationix: http://www.sencha.com/ [00:26] pquerna: yeah, you need more [00:27] pquerna: Transfer-Encoding: chunked [00:27] Anti-X: you don't set content-length if it's chunked [00:27] Anti-X: i think [00:27] pquerna: if it has chunks, without the T-E, it will assume that the next 242 bytes after the headers is your entire body [00:27] pquerna: you can [00:27] pquerna: but its not needed [00:27] creationix: hmm, web inspector seems to lie, time for curl [00:27] Anti-X: well then you'd need to know how many chunks too [00:27] Anti-X: and include delimiters [00:27] Anti-X: etc [00:28] pquerna: actually i lied [00:28] creationix: ok, curl says there is "Transfer-Encoding: chunked" [00:28] pquerna: yeah [00:28] davidwalsh has joined the channel [00:28] pquerna: okay, then node should work [00:28] mjr_: If you see content-length, then it's NOT chunked, right? [00:28] ben_alman has joined the channel [00:29] creationix: mjr_: as far as I know [00:29] creationix: ok, so the server seems right [00:29] creationix: (it's stock apache 2.2 with php, nothing special) [00:29] Anti-X: i did not get chunked from sencha.com now [00:29] lachlanhardy has joined the channel [00:29] creationix: Anti-X: you need the www [00:29] Anti-X: i have it [00:30] pquerna: with `curl -i -vvv http://www.sencha.com/` i get chunked [00:30] pquerna: are you doing somehting else? [00:31] Anti-X: oh i just got the head [00:31] Anti-X: that explains it [00:31] pquerna: heads have no body => no t-e [00:31] benburkert has joined the channel [00:32] creationix: so is it a node bug if my http client get's bad body chunks? [00:32] Tim_Smart: creationix: Hmm your server gives different headers in a HEAD request than it would with a GET [00:32] Tim_Smart: not good... [00:32] CIA-77: node: 03Paul Querna 07master * rc8f9728 10/ (6 files in 4 dirs): [00:32] CIA-77: node: Move dns.isIP to net.isIP [00:32] CIA-77: node: Add tests and docs. - http://bit.ly/c3LpGx [00:32] CIA-77: node: 03Paul Querna 07master * r5a00d9d 10/ src/node.cc : [00:32] CIA-77: node: Use the Apple recommended way of detecting OSX Versions [00:32] CIA-77: node: to enable KQueue, rather than deciding based on the compiler version. - http://bit.ly/borsgD [00:33] Anti-X: i agree [00:33] creationix: Tim_Smart: take it up with php [00:33] Anti-X: technically it should return the exact same headers [00:33] creationix: I doubt we're doing any custom logic there [00:33] creationix: anyway, the point is that my node reverse proxy is getting bad data [00:33] Lerchmo has joined the channel [00:33] pquerna: MR FIELDING DISAGREES [00:34] pquerna: http://www.mail-archive.com/dev@httpd.apache.org/msg29709.html [00:34] Anti-X: well then we are forced to mudwrestle him [00:34] m7d has left the channel [00:35] isaacs: orlandov: hey, you around? [00:35] _announcer: Twitter: "Installing node.js through homebrew isn't working, since it messes with npm libraries directories... going through the old way..." -- Cássio Marques. http://twitter.com/cassiomarques/status/24711939321 [00:35] bpadalino: who is mr fielding ? [00:35] isaacs: orlandov: seems like the sqlite you published to npm's registry has a .lock-wscript with your $HOME in it. [00:35] isaacs: orlandov: makes breaking happen. [00:36] rnewson has joined the channel [00:36] bpadalino: oh, he wrote http [00:36] Anti-X: did he? [00:36] pquerna: heh [00:37] [[zz]] has joined the channel [00:37] Anti-X: _one of_ the principal authors [00:37] Anti-X: was HEAD even part of "0.9"? [00:37] Anti-X: if not then he has no say! [00:37] Anti-X: :P [00:38] bstimmerman has joined the channel [00:38] pquerna: he also did that thing called 'rest' [00:38] pquerna: wrote you konw, like, that paper. [00:38] Anti-X: pff [00:39] sstephenson has joined the channel [00:39] ryah: ACTION hates http [00:40] ryah: can't we try again? [00:40] pquerna: don't worry, waka will fix it all. [00:40] pquerna: http://en.wikipedia.org/wiki/Waka_(protocol) [00:40] pquerna: need to badger roy about it again. [00:40] Anti-X: rest wasn't inventing anything, it was merely describing how things were in practice, sort of [00:41] creationix: binary huh [00:41] creationix: that's cool [00:41] pquerna: unfortunately, spdy will prolly win. [00:41] pquerna: which means ssl by default [00:41] pquerna: and good bye caching [00:41] creationix: are these things easy enough to implement that we can do it just for fun [00:41] bpadalino: they get rid of the vowels going over the wire ? [00:41] bpadalino: and reinsert them on the client side? [00:41] Anti-X: that guy keeps reinventing the wheel doesn't he? [00:42] creationix: I'm guessing not if ssl is involved [00:42] JimBastard: waka waka waka [00:42] pquerna: http://www.chromium.org/spdy/spdy-protocol [00:43] techwraith has joined the channel [00:43] Anti-X: who needs caching when power is cheap [00:43] v8bot has joined the channel [00:43] techwraith: Anyone know if node-mongodb-native can drop collections? and if so, how? [00:44] bpadalino: i think you have to query for your collection, then set them all to null then save [00:45] Anti-X: lol @ nosql backwardsness [00:45] bpadalino: but i'm new here .. so probably wrong [00:45] bpadalino: :( [00:46] jchris has joined the channel [00:46] maushu: techwraith, there is a specific function for that. [00:47] techwraith: mashu: remember what it is or should I look through the source? [00:47] maushu: If I did remember I would tell you. [00:47] maushu: I wonder if native implemented functions like the mongodb shell. [00:48] bpadalino: ah, i was wrong again [00:48] Anti-X: that's an incomplete sentence! [00:50] maushu: Anti-X, I accidentally the sentence! [00:50] maushu has left the channel [00:50] maushu has joined the channel [00:50] Anti-X: ok, i completely [00:51] Anti-X: it occasionally everybody [00:51] dnolen has joined the channel [00:52] maushu: What kind of madness is this? Is Candlejack on the loos- [00:52] Wandrewvious has joined the channel [00:52] Lerchmo has joined the channel [00:54] hij1nx has joined the channel [00:54] _announcer: Twitter: "@joshprice I like using jade with nodejs, so much so that I was considering porting it over (but this guy has done it already)" -- Carl Woodward. http://twitter.com/cjwoodward/status/24713386126 [00:56] Anti-X: lol [00:56] Anti-X: Newfags often end with a "-". This is bullshit because CandleJack wouldn't give you enough ti [00:57] Anti-X: anyhoo enough off topic [00:57] creationix has joined the channel [00:58] ncursestest has joined the channel [00:58] maushu: Anti-X, quite the reverse. Since we are veterans we have enough time to fight back. [00:58] onar has joined the channel [00:59] Anti-X: you know it's coming so you insert a dash and wait? [00:59] maushu: Pretty much. ._. [01:00] noahcampbell_ has joined the channel [01:01] _announcer: Twitter: "I wonder if it's possible to use websockets to automatically push code updates to the front end (and apply them without a refresh). #nodejs?" -- Daniel Erickson. http://twitter.com/TechWraith/status/24713864623 [01:03] ph^: heh, what else would be the point of web sockets [01:03] _announcer: Twitter: "@pgriess hey peter will you be at berkeley to judge the hackathon? my friend is doing some nodejs stuff :)" -- David Trejo. http://twitter.com/ddtrejo/status/24714077790 [01:04] gwoo has joined the channel [01:04] gwoo has joined the channel [01:05] rkieffer has left the channel [01:05] _announcer: Twitter: "I'd love a #nodejs app that would stream changes that I make to my JS and CSS files to the browser and apply them as I type." -- Daniel Erickson. http://twitter.com/TechWraith/status/24714186980 [01:06] zith_: am i supposed to be able to do this: echo "require('sys').puts('blah');" | node? [01:06] Dasleah has joined the channel [01:06] jakehow has joined the channel [01:07] Lerchmo has joined the channel [01:07] pquerna: zith_: no [01:08] zith_: that explains why it didnt work then ;) [01:08] prettyrobots has joined the channel [01:08] micheil has joined the channel [01:10] saikat: rauchg_: ignore whatever i said earlier, it was my mistake [01:10] zith_: i'm glad i can code scripts just like shellscripts and execute them that way though [01:10] jchris has joined the channel [01:10] zith_: (by putting #!/usr/local/bin/node on the first line of the script, that is) [01:10] mscdex has joined the channel [01:12] pquerna: ryah: accept a patch that would take -c or -e to node binary, and execute the string as the program? [01:13] mscdex: who here is a osx kernel panic debug guru? :-D [01:13] blowery_zzz has joined the channel [01:14] Anti-X: http://www.index-site.com/kernelpanic.html [01:15] zith_: does facebook use long polling for their chat? [01:16] mscdex: bleh.. maybe the built-in terminal app on osx just sucks [01:16] mscdex: i don't understand why ncurses causes a kernel panic on two of three of my tests [01:16] bsstoner has joined the channel [01:16] mscdex: all three work fine on linux [01:17] JimBastard: zith_: last i checked [01:17] bpadalino: ouch, ncurses causes a kernel panic? that sounds terrible [01:17] Anti-X: zith_, i tried looking through the code to see how they did the notification sound, but it's friggin impossible to find anything in there! [01:17] JimBastard: zith_: there was like a 5 page write up on how it works [01:17] mscdex: bpadalino: on osx it does, in some cases [01:17] mscdex: which i don't understand [01:17] zith_: i dont even have a facebook account actually [01:17] zith_: but it works pretty well, right? [01:18] rcy has joined the channel [01:18] Anti-X: i would assume they use long polling (or even websockets) seeing as erlang is pretty bad at storing data for long periods of time [01:18] zith_: mscdex: kernel panics means the kernel has bugs [01:18] mscdex: osx is a bug [01:18] bpadalino: ouch :( [01:18] Anti-X: kernel panic could mean a driver malfunction too [01:18] Anti-X: in osx [01:18] zith_: ah, this is true [01:18] mscdex: well, this is cupertino-provided kernel [01:19] mscdex: and like i said, one of the tests works just fine, but the others cause it to crash [01:19] zith_: Anti-X: dont know why ncurses specifically would use any fancy kernel module though :) [01:19] mscdex: using the same node addon [01:20] mscdex: and one of the nonworking tests isn't very different in terms of addon usage in comparison to the working test [01:20] sechrist: is there a way to get a memory profile of a node app? I want to know why the hell my memory usage goes nuts [01:21] mscdex: guess i have to install a debug kernel [01:22] zith_: how many people in here would kill me if i created a flashgame with a node backend? [01:23] Anti-X: none [01:23] Anti-X: i doubt anyone know where you live [01:23] danielzilla has joined the channel [01:24] _announcer: Twitter: "what's a hip node.js framework these days? geddy?" -- Christopher Bennage. http://twitter.com/bennage/status/24715701527 [01:24] zith_: i hear the government has a device that kills people over irc [01:25] ooooPsss: I saw a post in the mailing list today, pretty pertinent. Which frameworks are active and being used in production? [01:26] pgriess has joined the channel [01:26] Anti-X: framework me here and framework me there.. doesn't anybody write stuff properly anymore? [01:27] _announcer: Twitter: "@teamxlink will kai have an update this year?Based on the node.js update?" -- Edutrl. http://twitter.com/Edutrl/status/24715969301 [01:27] galaxywatcher has joined the channel [01:27] mikeal: Anti-X: preach it [01:27] zith_: not since 2003, Anti-X [01:27] _announcer: Twitter: "luckily I think I'm not going to have to do my presentation on node.js #ecovision" -- Kevin Isom. http://twitter.com/kev_nz/status/24716000543 [01:28] vacuoustruth has joined the channel [01:28] Anti-X: well then i guess i still live in 2003 [01:29] zith_: :) [01:30] gthb has joined the channel [01:30] mikew3c_ has joined the channel [01:32] eazyigz has joined the channel [01:35] creationix: hey, can I get the total number of bytes sent and received by a node http client [01:35] creationix: (including headers) [01:35] creationix: ? [01:35] bpadalino: ooh, good question [01:36] prettyrobots has left the channel [01:37] Lerchmo has joined the channel [01:37] sirevanhaas has joined the channel [01:37] Tim_Smart: creationix: Over-ride the underlying connection.write? [01:37] creationix: that might work [01:37] creationix: does the http stuff actually call it? [01:37] Tim_Smart: Yeah. [01:38] creationix: good idea [01:38] creationix: I need to meter traffic on my proxy [01:38] Tim_Smart: Well, at least I think so - the HTTP layer is implement on top of net.js [01:38] Tim_Smart: Except for the parser... [01:40] kaichen has joined the channel [01:41] Anti-X: also remember there are bytes in the tcp/ip headers [01:41] bpadalino: so many bytes [01:41] Anti-X: if you wanna be thorough [01:42] Anti-X: also tcp keep alive packets [01:43] Anti-X: long poll long enough, they will matter :p [01:45] Tim_Smart: I just think http bytes will suffice ;) [01:45] ryah: creationix: what are you looking for? [01:45] creationix: I want the total number of bytes sent and received in an http client [01:46] creationix: the total bandwidth used [01:47] Tim_Smart: ryah: Heh. See the thread in the mailing list about ecma's 31-bit integers and ReadStream? [01:47] onar_ has joined the channel [01:47] Tim_Smart: creationix: Oh in that case, TCP/IP packets in their entirety will matter. [01:48] Anti-X: see? i win [01:48] Anti-X: ACTION winnar [01:48] Anti-X: creationix, if it's a standalone machine you could possibly use the network card driver to get statistics [01:48] Anti-X: :P [01:49] ryah: Tim_Smart: yeah [01:49] Tim_Smart: ryah: >.<. Make a second integer over 2gb :p [01:49] ryah: but ReadStream should work [01:49] ryah: just shouldn't use an offset [01:49] Tim_Smart: Hmm. [01:49] ryah: ACTION fixes it [01:50] ivong has joined the channel [01:50] ryah: man [01:51] ryah: the old version of fs.read is still in the docs? [01:51] ryah: wtf [01:51] Tim_Smart: Is it even still supported? [01:51] konobi: gotta love denormalized documentation [01:51] gf3_ has joined the channel [01:52] ryah: Tim_Smart: it is [01:52] CIA-77: node: 03Ryan Dahl 07master * r6da0593 10/ doc/api.markdown : Remove old versions of fs.read and fs.write from docs - http://bit.ly/cjtDl5 [01:52] Tim_Smart: You should kill them and watch the chaos. [01:52] konobi: or is it all jsdoc? [01:53] ryah: konobi: it's all markdown [01:54] ryah: one big file even: http://github.com/ry/node/blob/6da0593162dbc861d32c83b38e083dbfd2df870d/doc/api.markdown [01:54] matt_c has joined the channel [01:54] bpadalino: holy big file [01:54] Tim_Smart: js> Number.MAX_VALUE [01:54] gbot2: Tim_Smart: 1.7976931348623157e+308 [01:55] Tim_Smart: ^--- larger than 2gb [01:55] ryah: :) [01:55] ryah: that's a big number [01:55] ryah: js> 2^64 [01:55] gbot2: ryah: 66 [01:55] ryah: .. [01:55] ryah: js> Math.exp(2,64) [01:55] gbot2: ryah: 7.38905609893065 [01:55] ryah: whatever.. [01:55] zith_: heh [01:55] Tim_Smart: js> Math.pow(2, 64) [01:55] gbot2: Tim_Smart: 18446744073709552000 [01:55] ryah: thank you [01:56] Tim_Smart: js> Math.pow(2, 64) < Number.MAX_VALUE [01:56] gbot2: Tim_Smart: true [01:56] Tim_Smart: 'nuff said. [01:56] bpadalino: cute, the 64^2 dealie [01:56] bpadalino: amusing at least [01:58] ryah: Tim_Smart: it loses percision [01:58] Tim_Smart: Ah right. [01:58] Tim_Smart: Makes sense. [01:59] ryah: but - we don't need to specify an offset to read from a file [01:59] zith_: is the author of jsdom in here? [01:59] Anti-X: js> Number.MAX_VALUE - Math.pow(2,64) [01:59] gbot2: Anti-X: 1.7976931348623157e+308 [01:59] hij1nx has left the channel [01:59] Tim_Smart: js> var n = Math.pow(2, 64); [n, n + 1] [01:59] gbot2: Tim_Smart: [18446744073709552000,18446744073709552000] [01:59] Tim_Smart: Yeah same number. [02:00] Tim_Smart: js> var n = Math.pow(2, 64); [n, n + 100] [02:00] gbot2: Tim_Smart: [18446744073709552000,18446744073709552000] [02:00] Tim_Smart: js> var n = Math.pow(2, 64); [n, n + 1000] [02:00] gbot2: Tim_Smart: [18446744073709552000,18446744073709552000] [02:00] Tim_Smart: Heh. [02:00] Anti-X: keep going [02:00] Tim_Smart: js> var n = Math.pow(2, 64); [n, n + 10000] [02:00] gbot2: Tim_Smart: [18446744073709552000,18446744073709560000] [02:00] Anti-X: woo [02:00] Tim_Smart: Very un-precise [02:01] bpadalino: lots of dynamic range, not great precision :( [02:01] Anti-X: just goes to show, don't program a space shuttle using node [02:01] Tim_Smart: :p [02:01] dipser_ has joined the channel [02:01] polotek has joined the channel [02:02] creationix: js> Math.log(Number.MAX_VALUE) / Math.log(2) [02:02] gbot2: creationix: 1024 [02:02] creationix: 2^1024 [02:02] creationix: not bat [02:02] creationix: *bad [02:02] Anti-X: well aren't you a clever one [02:02] creationix: but I'll bet it's only 64 bit precision [02:03] bpadalino: less than that [02:03] Tim_Smart: 31-bit apparently [02:03] creationix: true, IEEE float [02:03] polotek: ACTION needs to learn some math [02:03] bpadalino: ieee 754 in all its glory [02:03] peutetre has joined the channel [02:03] Tim_Smart: s/glory/fail/ [02:03] sechrist: Is there an efficient way to go about debugging memory problems with node apps? [02:03] zith_: http://github.com/tmpvar/jsdom/blob/49e0e37155a761b9e7cf10430117d3130dfc116d/lib/jsdom.js#L52 <- is this guaranteed to always call the callback function at some point, or is the onload function only called once, and we hope the readyState is 'complete'? [02:04] CIA-77: node: 03Ryan Dahl 07master * rbbbcd1f 10/ (3 files in 2 dirs): Safe constructors for fs.ReadStream and fs.WriteStream - http://bit.ly/cOou7l [02:04] creationix: sechrist: effecient + debug memory problems === false [02:04] sechrist: I meant like a method to do it [02:04] sechrist: node is like a black box to me [02:04] sechrist: I have no idea what is going on [02:04] creationix: sorry, I'm not much help. There is the V8 profiler [02:05] creationix: and dtrace on osx [02:05] sechrist: like a memory profile of objects or something [02:05] ryah: sechrist: there is a way to take heap snapshots via the debugger interface [02:05] creationix: and process.memusage or something like that [02:05] sechrist: yeah dtruss just shows me io, and the v8 profiler is for calls and cpu usage iirc [02:05] creationix: heap snapshots, nice [02:05] sechrist: oh nice [02:05] sechrist: I think what's happening is a huge call stack recursion but I don't know [02:06] creationix: hey, easy question, how do you share cookies between subdomains? [02:06] Anti-X: output a flag to console and see if it prints forever [02:06] creationix: wildcard domain or something right? [02:06] dicon has joined the channel [02:06] polotek: creationix: domain = .foo.com [02:06] polotek: in your client-side js [02:06] bradleymeck1 has joined the channel [02:07] creationix: this is for connect [02:07] bradleymeck1: hola [02:07] creationix: time to dig through tj's session code [02:07] creationix: ACTION digs [02:07] mjr_ has joined the channel [02:07] dgathright has joined the channel [02:08] creationix: looks like he's never setting the domain [02:08] _announcer: Twitter: "Was very impressed with some of the things fellow Charlotians are doing with #nodejs and HTML5/Canvas. @cltjs" -- John Allen. http://twitter.com/jallen7usa/status/24719456444 [02:08] ryah: sechrist: there is also the ability to log allocs [02:08] polotek: creationix: that's what I would expect. whoever can reach the app can get cookies :) [02:08] ryah: sechrist: checkout deps/v8/tools/process-heap-prof.py [02:09] ryah: sechrist: there isn't any toolage around the snapshot stuff yet [02:09] ryah: but it's there... [02:09] ryah: you just have to speak json .. [02:09] creationix: polotek: right, but in this case the default makes each subdomain it's own session [02:09] creationix: I want then shared [02:09] Eber has joined the channel [02:09] Tim_Smart: {message: "Apparently node-inspector has heap snapshots on the way"} [02:09] ryah: hp2ps can make things like this: http://book.realworldhaskell.org/read/figs/ch25-heap-hy.png [02:09] polotek: creationix: oh I see. is it actually hashed by the domain? [02:09] ryah: Tim_Smart: does it? [02:10] ryah: the chrome one does, i don't think danny has gotten there [02:10] creationix: yeah, if you don't specify, each subdomain gets it's own cookie [02:10] Tim_Smart: ryah: I personally couldn't get it to work, but it is similar to webkits heap thingy. [02:10] sechrist: ryah: thanks [02:11] prettyrobots has joined the channel [02:11] prettyrobots: How do you do modules internal to a module? [02:11] franksvalli has joined the channel [02:11] sechrist: hmm [02:11] prettyrobots: Or how do create classes that are internal to a module and not exposed to the outside world... [02:11] prettyrobots: ...except when you're testing. [02:11] sechrist: well if all of the information is dumped via json, a graphical tool to sort the stuff sounds like the next logical step [02:11] bpadalino: pretty colors [02:11] siculars has joined the channel [02:12] polotek: creationix: I'm not sure how you would specify when you want to reduce the domain specificity [02:12] polotek: where would you specify that in an app? [02:12] Tim_Smart: prettyrobots: Just don't export them. [02:12] prettyrobots: bpadalino: Some *me* the pretty colors. [02:12] sechrist: I mean with all of these damn modules coming out it's kind of hard to know where to begin for tracking down memory problems [02:12] creationix: polotek: as an option to the session [02:12] prettyrobots: Missed the link. I just arrived. [02:12] bpadalino: http://book.realworldhaskell.org/read/figs/ch25-heap-hy.png [02:12] _announcer: Twitter: "upgraded to the Adium beta and started joining IRC chatrooms for yui and node.js... feels like I'm back in the 90's on AOL" -- David Calhoun. http://twitter.com/franksvalli/status/24719836895 [02:12] polotek: creationix: haven't messed with sessions in connect much [02:12] polotek: but yeah [02:13] prettyrobots: Thank you. [02:13] bpadalino: enjoy [02:13] prettyrobots: Anyway, here's how I'd done internal modules that I could debug: [02:13] creationix: hmm, npm link fail [02:13] prettyrobots: http://github.com/bigeasy/node-ec2/tree/master/lib/ [02:14] polotek: so once you reduce the domain in connect, it will start retrieving the same session for all subdomains? [02:14] prettyrobots: So when I run tests, I use "__internal/request.js" [02:14] _announcer: Twitter: "@antirez In case you are interested, I made another redis client for node.js: http://bit.ly/dtTkz3" -- Matt Ranney. http://twitter.com/mranney/status/24719956084 [02:14] polotek: prettyrobots: weren't you asking about libxmljs recently? [02:14] prettyrobots: Yes. Worked very well. [02:14] prettyrobots: I used libxmljs in my node-ec2 project. [02:15] polotek: cool, it's my lib so if you have problems, submit tickets and I'll take a look [02:15] prettyrobots: I'm trying to get it cleaned up for an annoucement. [02:15] prettyrobots: polotek: Oh, well, yours is the only lib that does namespaces at all that I found. [02:15] Yuffster_work has joined the channel [02:15] prettyrobots: That's right. github.com/polotek . Nice library. [02:16] polotek: prettyrobots: thanks [02:16] prettyrobots: Wish it could expose the XSD. That would make it easier to convert Amazon Query API XML to JSON with greater confidence. But, XSD is probably a big ugly problem. (It always was.) [02:17] prettyrobots: I guess, if it was in the cards, but XSD is such an ugly monster, and I managed to convert correctly by guessing. (I need to blog about this, I guess.) [02:18] polotek: prettyrobots: it's built on top of libxml2 [02:18] polotek: so it can do pretty much anything [02:19] polotek: it depends on how much time I have to hack on it [02:19] polotek: unfortunately it usually depends on what I need :) [02:19] polotek: or when people submit tickets [02:20] zith_: what's that function to print out objects and arrays in a nice way? [02:20] mjr_: zith_: sys.inspect [02:20] mjr_: zith_: or 'npm install eyes" is even nicer [02:21] polotek: zith_: also console.log will do it [02:21] polotek: if you don't use the format string [02:22] zith_: thanks guys [02:22] creationix: does anyone know why my browser refuses to send cookies back [02:22] creationix: I'm giving it [02:22] creationix: Set-Cookie: connect.sid=di72bena6c.LYr9Z41J1HDXD6fECORAnA; path=/; httpOnly; expires=Fri, 17 Sep 2010 06:18:21 GMT; domain=.appstore5.com [02:22] creationix: and it says it's storing the cookie [02:23] polotek: creationix: can you read it in the client? [02:23] creationix: it's http only, but web inspector says it's there [02:23] creationix: all I changed was add the domain part at the end [02:23] prettyrobots: polotek: With that in mind, I would probably not want to spend the time to submit a patch for my current application. [02:24] polotek: creationix: can you kill the httponly for testing? [02:24] creationix: sure [02:24] prettyrobots: And people will probably say that validation should only be available in production. [02:24] prettyrobots: isaacs: [02:25] prettyrobots: Does npm have the concept of a private module? [02:25] mikeal has joined the channel [02:25] polotek: prettyrobots: anything that has the potential to crap out should be available in your dev environment ;) [02:26] bradleymeck1: prettyrobots, only if you make your own registry, so basically no [02:26] zith_: wow.. eyes made my computer go completely bonkers [02:26] zith_: 100% cpuload [02:26] bradleymeck1: s/make/host/ [02:27] prettyrobots: bradleymeck1: How do you expose a class to testing that should not be exposed as part of the API? [02:27] davidpaulyoung has joined the channel [02:27] bradleymeck1: im not sure i understand [02:27] prettyrobots: Or is your API what you say your API is and you don't worry about it? [02:27] prettyrobots: Yeah. I'm thinking in Java. [02:27] Anti-X: you test your api, and if that does what it's supposed to then the test passes [02:27] creationix: polotek: ok, how do I read cookies from js [02:27] Anti-X: what it does internally is what you figure out how to pass the test [02:28] creationix: still busted though [02:28] prettyrobots: I'm getting the impression that I'm making too big of a deal of encapsulation for JavaScript. [02:28] polotek: prettyrobots: yep, just test the public api thoroughly [02:28] polotek: internal implementation can change [02:28] bradleymeck1: you should only need to test going into and out of your implementation [02:28] prettyrobots: Oh, but it helps. [02:28] prettyrobots: For node-ec2... [02:28] polotek: creationix: document.cookie [02:28] prettyrobots: ... I recreated a RepsonseParser. [02:28] creationix: ahh, thanks [02:28] prettyrobots: And tested that as a unit. [02:28] Tim_Smart: prettyrobots: The only api that is exposed to modules is from the file that is required [02:28] prettyrobots: But it is not public. [02:29] bradleymeck1: if you need to test your internals it should probably be something that isnt internal [02:29] prettyrobots: So... [02:29] creationix: polotek: yep, it's there, but not sent to the server [02:29] prettyrobots: Okay. But, this is was just an obvious hunk. Turning the XML into JSON and trying out dozens of examples from the Amazon API. [02:29] Tim_Smart: prettyrobots: If you require() a module inside a module, the only way it will leak through is if you: module.exports = require('./submodule') [02:29] polotek: creationix: if it's in document.cookie that means it came from the server. and that generally means it'll be sent back [02:30] polotek: creationix: so that points to a problem with node/connect reading it once the domain has been reduced [02:30] creationix: hmm, seems if I set it from the top level domain, then it preserves [02:30] creationix: but not if they first visit a subdomain [02:30] prettyrobots: Tim_Smart: I put my private modules in "lib/__internal" [02:30] bradleymeck1: prettyrobots and why must it be hidden? is it not reusable? is it relying on specific implementation details that you dont want to expose? [02:30] creationix: polotek: no, it's a browser thing [02:30] creationix: it's never sending the cookie back in some cases [02:30] prettyrobots: It isn't really public. [02:30] hb_ has joined the channel [02:30] creationix: (or rather my misunderstanding of how browsers should work) [02:30] creationix: I'm sure chrome is right [02:31] Tim_Smart: prettyrobots: Why __internal, that is just confusion for collaborators. [02:31] prettyrobots: But, I understand the attitude. In Java land there is a lot of fetishism around encapsulation. People say that things "violate encapsulation". [02:31] prettyrobots: Okay. First, thank you for talking with me about this. I really want to deprogram myself. [02:31] Tim_Smart: prettyrobots: CommonJS modules don't leak. [02:32] hassox has joined the channel [02:32] Tim_Smart: Unless you assign to global, then everything is encapsulated. [02:32] prettyrobots: So, I'm not trolling. I'm trying to learn the Node.js way. I basically, want my code to look familiar to someone in Node.js. Just noting, because I'm pushing back. [02:32] polotek: creationix: select isn't broken [02:32] prettyrobots: I'm pushing back just to understand the reasoning. [02:32] polotek: unless other selects work properly [02:32] prettyrobots: Aplogia over. [02:32] polotek: did you check other browsers? [02:32] creationix: polotek: select? [02:33] jashkenas has left the channel [02:33] prettyrobots: Tim_Smart: Yes. So here... [02:33] prettyrobots: http://github.com/bigeasy/node-ec2/tree/master/lib/ [02:33] prettyrobots: I have ec2.js which uses the request.js and response.js. [02:33] polotek: creationix: http://pragprog.com/the-pragmatic-programmer/extracts/tips [02:33] polotek: look for "select isn't broken" [02:33] prettyrobots: Those are not public, because they are not really part of the API. [02:33] prettyrobots: But, I wanted to thourougly unit test the response.js as step one. [02:34] Tim_Smart: prettyrobots: OK I would rename ec2.js to index.js and place it in the repo root, so people can git clone your repo straight into .node_libraries etc. [02:34] _announcer: Twitter: "If I wasn't so time constrained, I would have designed part of "Am I Upgraded Yet?" with Node.JS. Maybe I can add it in somewhere still..." -- Ryan LeFevre. http://twitter.com/MeltingIce/status/24721666004 [02:34] prettyrobots: http://github.com/bigeasy/node-ec2/blob/master/vows/response-test.js [02:34] polotek: creationix: I thought it was a fairly common trope. I've been using it for years [02:34] creationix: polotek: well, if it's broken, then ALL the browsers are broken [02:34] prettyrobots: Oh... [02:34] Tim_Smart: prettyrobots: Then move the contents of __internal into lib/ [02:34] prettyrobots: So, if I do that, then only what index.js exposes is exposed. [02:34] creationix: It sounds like some security setting [02:34] polotek: creationix: I've definitely used domain = .foo.com manytimes [02:34] prettyrobots: And little helper fields are ignored? [02:34] Tim_Smart: prettyrobots: Yeah. [02:35] prettyrobots: That's sweet. [02:35] prettyrobots: That is exactly what I was expecting. [02:35] creationix: if I visit foo.domain.com and try to set a .domain.com cookie, it won't stick [02:35] _announcer: Twitter: "sodajs = Selenium + nodejs; sodajs + saucelabs = Cloud based Selenium testing solution. Nice!" -- Michael Lim. http://twitter.com/mikelim/status/24721752623 [02:35] creationix: but if I visit domain.com and try to set .domain.com it will stick and even get sent to foo.domain.com requests [02:35] Tim_Smart: prettyrobots: You will have to change your requires of couse (to point to './lib/request' etc) [02:35] polotek: creationix: are you resetting the domain first? [02:35] creationix: I'm always sending .domain.com as the cookie domain [02:36] polotek: creationix: no I mean in the client-side js [02:36] polotek: domain = .domain.com; [02:36] creationix: no, I'm not doing anything browser side [02:36] creationix: this is all server side [02:36] polotek: domain = ".domain.com"; [02:36] prettyrobots: Tim_Smart: That was the idea. A Vows test knows where the unit components are relative to itself. [02:36] polotek: creationix: I'm saying you need to, to tell the browser that you explicitly want to reduce the domain [02:36] Tim_Smart: prettyrobots: Yeah so each module has its own container. The only way to get something out is through the exports. [02:36] polotek: creationix: otherwise subdomains will not do it [02:37] prettyrobots: Time_Smart: http://github.com/felixge/node-mysql/blob/master/lib/mysql/index.js [02:37] prettyrobots: Duh! [02:37] polotek: "not do it" = won't send reduced domain cookies back to the server [02:37] creationix: polotek: ok, so what do I do in the browser, it's an http only cookie [02:37] gsmcwhirter has joined the channel [02:37] creationix: it needs to be http only for security reasons [02:37] prettyrobots: Tim_Smart: Okay. So this node-mysql example. It basically does exacatly what I was trying to do but the right way. [02:37] prettyrobots: Right? [02:37] polotek: creationix: don't have a lot of experience with http only [02:38] polotek: but you almost certainly still need to reset the domain in your js [02:38] Tim_Smart: prettyrobots: I would suggest you have index.js in the repo root thought, so you can git clone directly to your require.paths [02:38] creationix: polotek: anyway I don't think it's a big deal, people will be authenticating at my main domain [02:38] creationix: once they visit that domain the cookie will be good [02:38] Tim_Smart: prettyrobots: Yeah, index.js is looked for when you try require() a directory. [02:38] prettyrobots: Tim_Smart: You mean git submodules? [02:39] ysinopsys has joined the channel [02:39] prettyrobots: Tim_Smart: You wouldn't happen to have an example of that particular layout? A project like that? [02:39] Tim_Smart: prettyrobots: submodules, and git clone. (E.g. git clone repo_url ~/.node_libraries/library_name [02:39] prettyrobots: Ah. [02:39] prettyrobots: Okay. [02:39] prettyrobots: I see. [02:44] Tim_Smart: ryah: http://groups.google.com/group/nodejs-dev/browse_thread/thread/3485764999709c3a <-- Danny has heap snapshots semi-working [02:45] SingAlong has joined the channel [02:45] SingAlong: any node.js hosts here? [02:45] JimBastard: yo [02:45] JimBastard: sup SingAlong ? [02:45] SingAlong: JimBastard: Hi (forgot about you) [02:45] SingAlong: JimBastard: nodejshost.com right? [02:46] JimBastard: www.nodejitsu.com [02:46] hayeah has joined the channel [02:46] SingAlong: JimBastard: thank you! (remember now) [02:46] SingAlong: JimBastard: signedup [02:47] JimBastard: cool cool [02:47] JimBastard: things coming very soon [02:47] SingAlong: JimBastard: there's a small bug on the signup form. the label doesnt disappear when i click to enter my email [02:47] SingAlong: JimBastard: you have any private beta? [02:48] JimBastard: SingAlong: what label [02:48] _announcer: Twitter: "@joemccann I want to write a #nodejs based dev server that polls github for changes and updates the client side without a refresh." -- Daniel Erickson. http://twitter.com/TechWraith/status/24722785044 [02:48] JimBastard: weve been running private beta since april [02:48] SingAlong: JimBastard: "enter your emial" [02:48] SingAlong: *email [02:48] JimBastard: thats wierd, thanks [02:49] JimBastard: ill fix it [02:49] zith_: JimBastard: how come the hacker news people hate you so much? [02:50] prettyrobots has joined the channel [02:50] SingAlong: JimBastard: firefox latest stable 3.6.9 (not sure about the last 9 tho) [02:50] SingAlong: ya its ff 3.6.9 [02:50] hayeah has joined the channel [02:50] zith_: JimBastard: or maybe that's not you [02:50] zith_: never mind. [02:51] JimBastard: zith_: fuck HN [02:51] SingAlong: JimBastard: whats wrong with HN? (except the new crowd) [02:52] JimBastard: its prime has passed [02:52] bradleymeck1: jimbastard wanna learn something to break all JS consoles that let you eval in lines? [02:52] jimmybaker has joined the channel [02:52] JimBastard: now its a PR machine for ycomb. i dont want to be getting my startup news from a source whose primary goal is to promote its own startups [02:52] SingAlong: JimBastard: agree! should have been invite-only :P [02:53] JimBastard: bradleymeck1: sure [02:53] jesusabdullah: idk, the startup news doesn't interest me that much [02:53] bradleymeck1: set eval=1 on your page, breaks opera,ff,chrome,safari,ie. (also breaks setInterval/timeout that use strings) [02:53] jesusabdullah: It's more the actual "hacking" stuff [02:54] SingAlong: same here. i love the unusual howto stuff or tricks that a lot of people share [02:54] JimBastard: im starting up my unsocial bookmarking site sometime next year [02:54] bradleymeck1: where you can only downrate? [02:54] jesusabdullah: unsocial bookmarking? [02:54] JimBastard: the rules are pretty complex [02:54] JimBastard: if you create an account you get banned for 3 months [02:54] SingAlong: JimBastard: I got fed of using delicious and now use my own simple static bookmark site :) setup with my jekyll blog [02:54] JimBastard: ive got a google doc floating around on it [02:55] SingAlong: JimBastard: akash.im/resources.html some weird stuff tho. [02:55] sechrist: I'm noticing significant memory problems when I'm accessing stuff over HTTPS with http.client [02:55] sechrist: is there a known problem as of 0.2.1? [02:55] stagas: are there template engines that work on both browser and node? [02:55] JimBastard: sechrist: yes [02:55] JimBastard: sechrist: ssl is kinda borked [02:55] sechrist: That explains 100% of my problem [02:55] sechrist: damnit [02:56] JimBastard: we actually shell out to curl for certain mission critical things [02:56] SingAlong: didnt someone write and push some socket stuff last week? [02:56] dicon has joined the channel [02:56] sechrist: I've been hunting for a red herring memory leak [02:56] sechrist: when it was node all long [02:56] Anti-X: JimBastard, you need to have the ability to receive messages from "friends", but then no way at all to respond to them, or even contact them back... forever. [02:56] dicon has joined the channel [02:57] langworthy has joined the channel [02:57] Anti-X: and also delete them from your friends list if they ever message you [02:57] jesusabdullah: Find us the google doc jimb [02:58] JimBastard: trade secrets! [02:58] JimBastard: its complex though [02:58] Anti-X: jimbo [02:58] sechrist: JimBastard: Do you know the specific problem with https? [02:58] JimBastard: sechrist: no [02:58] sechrist: Like this just totally fucked my day up :| [02:58] JimBastard: maybe OpenSSL [02:59] sechrist: O.o [02:59] JimBastard: dunno how its hooked into node [02:59] JimBastard: i think ryah said ssl stuff in the next couple of months [02:59] sechrist: aigh, ok [03:01] sechrist: JimBastard: are you like wrapping curl and having some sort of events emitting based out stdout or something? That's not a solution I want to use but it looks like I have to [03:01] sechrist: or just scrap node [03:01] JimBastard: ill show you [03:01] _announcer: Twitter: "#tutorial node.js + sproutcore message relay server; well explained http://www.svarovsky-tomas.com/nodejs-sproutcore.html" -- i_chris_jacob. http://twitter.com/i_chris_jacob/status/24723897444 [03:02] JimBastard: sechrist: http://github.com/nodejitsu/node-cloudservers/blob/master/lib/cloudservers/utils.js#L129 [03:02] _announcer: Twitter: "NodeJS 用 IDE "Nodify ":... http://bit.ly/aB8PZh - MOON POISON" [da] -- Takapyonuoʎdɐʞɐʇ. http://twitter.com/Takapyon/status/24723954928 [03:02] bradleymeck1: with and function are the only 2 scope making statements ya? [03:02] sechrist: http://github.com/ry/node/issuesearch?state=open&q=https#issue/221 *cries* [03:02] snowinferno has joined the channel [03:02] snowinferno: is there a facility to shell execute a command? [03:03] jakehow has joined the channel [03:03] JimBastard: snowinferno: yeah, child process [03:03] JimBastard: its in the docs [03:03] snowinferno: JimBastard: i was looking at the docs but didnt see an obvious answer [03:04] JimBastard: snowinferno: http://nodejs.org/api.html [03:04] Tim_Smart: snowinferno: http://nodejs.org/api.html#child_process-exec-96 [03:04] dicon has joined the channel [03:04] JimBastard: http://nodejs.org/api.html#child-processes-89 [03:04] Tim_Smart: It doesn't exactly use shell (sh), but you can always run `sh ...` [03:05] zith_: i've never seen BDD before now [03:05] zith_: is it really iseful? [03:05] snowinferno: Tim_Smart: I was thinking of taking the hello world a step further by executing php code [03:06] _announcer: Twitter: "NodeJS 用 IDE "Nodify" - MOON POISON - http://bit.ly/dBWiKj" [da] -- arnote_news. http://twitter.com/arnoteNews/status/24724300064 [03:06] snowinferno: or rather fetching a php file, sending it through php to get the end-output to send [03:06] _announcer: Twitter: "NodeJS for IDE "Nodify": Nodify a JavaScript-party open source software. Recently, the server-side JavaScript framework NodeJS hot. Number of software, libraries have been developed ... http://bit.ly/d9EGCC" [ja] -- pon7. http://twitter.com/Pon7/status/24724371266 [03:06] _announcer: Twitter: "RSS: NodeJS for IDE "Nodify": Nodify a JavaScript-party open source software. Recently, the server-side JavaScript framework NodeJS hot. Many software libraries ... http://bit.ly/dugKSk" [ja] -- Toshifumi Kanamaru. http://twitter.com/Canamal/status/24724371346 [03:07] _announcer: Twitter: "[IT] NodeJS 用 IDE "Nodify" http://dlvr.it/5P6tS" [da] -- 書記ちゃん. http://twitter.com/roland_808/status/24724396693 [03:08] Tim_Smart: snowinferno: The is always http://github.com/felixge/node-ugly , but yes you could execute a php file with child_process. [03:09] creationix has joined the channel [03:10] snowinferno: Tim_Smart: interesting hack but not quite what i was thinking of trying. I was thinking of trying to make a web server that could serve up php as well as html [03:10] Tim_Smart: Oh so just send the file contents? [03:10] Tim_Smart: (static file serving?) [03:11] snowinferno: Tim_Smart: sort of, but if it were to get a php file it should send it through the php interpreter and send the output back [03:11] Tim_Smart: Right so just child_process.spawn('php', [filename]); [03:11] snowinferno: yup [03:11] Tim_Smart: Then pump it to the http response. [03:12] snowinferno: you got it, it seems like node is the best ssjs library available for this experiment [03:13] Tim_Smart: sys.pump(child.stdout, response); [03:13] Tim_Smart: Done. [03:14] polotek: dammit I hate C [03:14] snowinferno: heh i'm looking into how to invoke node on the server side, I haven't played with v8 yet [03:14] Tim_Smart: polotek: Personally C > C++ [03:15] polotek: Tim_Smart: oh sorry, I hate C less than C++ [03:15] polotek: but right now the thing that is pissing me off is shared by both [03:15] Tim_Smart: Ah. [03:15] bradleymeck1: mmm? [03:16] polotek: actually it's the C++ and v8 environment [03:16] polotek: if you're doing to do memory management that's one thing [03:16] polotek: if you're gonna have a garbage collector that's another [03:16] polotek: but have them both together and you are screwed [03:17] bpadalino: ref and unref issues ? [03:17] polotek: because the GC will take your mem right out from under you [03:17] snowinferno: polotek: valgrind? [03:17] polotek: and your pointers will be none the wiser [03:17] polotek: snowinferno: valgrind can find memory leaks, that's fine [03:17] polotek: but I'm getting segfaults from memory that has been collected [03:18] polotek: gotta use gdb [03:18] bpadalino: i was getting that once .. [03:18] polotek: but with the v8 garbage collector it's not as simple as finding where the segfault is [03:18] bpadalino: but i was unref()-ing the object before i was actually done with it [03:18] polotek: you also have to find when/where the GC took away the allocation [03:18] zapnap has joined the channel [03:18] snowinferno: polotek: ahh, I have yet to actually learn valgrind, i'm probably high-end beginner with gdb [03:19] polotek: snowinferno: yeah I've had better luck with valgrind actually [03:19] polotek: gdb is okay, but with node/v8 most of the time when I try to inspect local variables, it can't find them [03:20] zith_: did you build with debug symbols? [03:21] _announcer: Twitter: "Isn't process.title supposed to change the process name when running 'ps' in linux? #nodejs" -- Elliott Carlson. http://twitter.com/elliottcarlson/status/24725550941 [03:22] polotek: zith_: I'm definitely still deficient with that type of knowledge [03:23] polotek: I'm using node_g [03:23] polotek: so node symbols are fine [03:23] polotek: I think it's mostly libxml2 symbols that it's missing [03:23] polotek: but i've tried a few different things with no luck [03:23] polotek: also probably made worse by the fact that everything is loaded dynamically [03:23] AAA_awright: Are there any libraries to parse Javascript source for function calls and meta-comments? [03:24] AAA_awright: I would like to automate out API documentation from meta-comments [03:24] zith_: i dont know much about using gdb as a normal debugger [03:24] sugardave has joined the channel [03:24] zith_: i've almost only used it for reverse engineering binaries [03:26] silentrob has joined the channel [03:27] polotek: Is there a way to keep a reference to a js object in C++ space *only* [03:27] polotek: as in not surfaced in js anywhere, but it won't get GCed [03:27] matschaffer has joined the channel [03:28] pquerna: polotek: yes [03:28] pquerna: polotek: http://github.com/pquerna/node-archive/blob/master/src/archive_bindings.cc#L179 [03:29] polotek: pquerna: yeah that's where I was heading [03:29] polotek: but I didn't want to have to go there [03:29] polotek: this is for libxmljs [03:30] Anti-X: !tweet @elliottcarlson process.title doesn't change what 'ps' displays, since 'ps' never shows a process name, only the command used to run it [03:30] polotek: and for various reasons, it's difficult to keep the nodes and document from getting GCed [03:30] polotek: because they don't reference each other directly [03:30] pquerna: polotek: well, you need create a Persistent around the object you want to keep around [03:30] zith_: Anti-X: actually, i was surprised to see ps listed real process names for me now [03:30] Anti-X: i can't get it to do it [03:30] Anti-X: wtf [03:30] pquerna: it won't be GCed until you dispose of it [03:30] zith_: at least when doing "ps -uzith" [03:31] polotek: pquerna: I'm using node_object_wap, I know all about persistent handles [03:31] polotek: the problem is I don't want to have to ref the document for every single node inside of it [03:31] pquerna: okay [03:31] polotek: I'm not doing that now [03:31] polotek: I let the objects die and just rebuild them when needed [03:31] polotek: but that means if you don't keep a reference to your document [03:31] polotek: it will get collected [03:31] polotek: even if you have a reference to some child node [03:32] zith_: i guess he could hack node.cc to change argv[0] to the string he wants though [03:32] polotek: cause as I said, they aren't referenced directly, cause of the way libxml2 is set up [03:33] ako has joined the channel [03:36] allengeorge has joined the channel [03:37] noahcampbell has joined the channel [03:37] benburkert has joined the channel [03:38] prettyrobots has joined the channel [03:43] ryah: someone should do a wireshark console program [03:43] ryah: a debugger type thing [03:44] ryah: obviously it should be done in c though. [03:45] ryah: i'm just typng it here because this window is open [03:46] polotek: ryah: how's the dtrace stuff going? [03:47] snowinferno: anybody know if v8 is 32-bit only? [03:47] ryah: snowinferno: it's not [03:47] bradleymeck1: anything im missing in http://nodejsbot.blogspot.com/2010/09/javascript-primer.html ? this, closure, scope, reference v value, prototypes [03:47] ryah: polotek: eh - fixing up some other stuff first [03:47] bradleymeck1: snowinferno for now, i think so [03:47] Anti-X: i don't think lazyweb works with js programmers, who are quite lazy to begin with [03:48] snowinferno: bradleymeck1: that's what i was afraid of, i was trying to compile it and got a complaint about not having stubs-32.h [03:48] bradleymeck1: anti-x : lazy or efficient? [03:48] Anti-X: same difference [03:48] bradleymeck1: lol [03:51] snowinferno: so how secure is js on the server side? [03:51] CIA-77: node: 03Ryan Dahl 07master * r42eb5a6 10/ (lib/repl.js src/node.js): Simplify REPL - http://bit.ly/bD1nyY [03:51] bradleymeck1: define secure. Its as secure as any other language. [03:51] ryah: snowinferno: node almost certainly has exploitable holes [03:51] Anti-X: what do you mean? you think cookies are coming to giev u viruses? [03:52] snowinferno: Anti-X: more looking for an idea of how exploitable it might be [03:52] bradleymeck1: ACTION has a server with diabetes [03:52] bradleymeck1: snowinferno, dont run code your client sends to you [03:52] bradleymeck1: and test your apis. thats about the same as with anything [03:53] snowinferno: bradleymeck1: that's what i figured, i have a friend that is a systems engineer that thinks js is incredibly vulnerable on the server side [03:54] bradleymeck1: same as anything else, ask him how it is different [03:54] Eber: where is alcuadrado?!? [03:55] jellymonster has joined the channel [03:56] bradleymeck1: im pretty sure if i gave my c program the ability to run arbitrary code it would be around the same as giving js ppl eval i guess, or ran the python interpretter on something i was given, or the java jit, or the... [03:56] Anti-X: or curl .. | sh [03:56] Anti-X: :p [03:57] bradleymeck1: mmm mm good [03:57] Anti-X: sudo even [03:59] Eber: bradleymeck1: would you review an article for me if that isn't ask too much? [04:01] bradleymeck1: sure but im tired so dont expect much [04:04] jellymonster has joined the channel [04:04] bradleymeck1: 314 forks of node! *PI Dance* [04:04] Tim_Smart: Oh wow. :tabe scp://... <3 [04:05] joeshaw has joined the channel [04:05] Anti-X: 314 isn't pi [04:05] ryah: Tim_Smart: ? [04:05] Tim_Smart: ryah: Editing remote files with a local vim [04:06] bradleymeck1: 314 is close enough for me, i celebrate twice daily! [04:06] Anti-X: you may mean 3.14, which still isn't pi, it's pi rounded to the nearest second decimal [04:06] snowinferno: hmmm i'm sure it's been done but i think i'll make a js irc bot with node :) [04:06] Anti-X: but whatever [04:06] Anti-X: who's counting [04:06] Tim_Smart: ryah: E.g. :tabe scp://node@timsmart.no.de//home/node/.npmrc [04:07] Me1000 has joined the channel [04:07] bradleymeck1: snowinferno npm install irc [04:07] snowinferno: npm install? [04:07] Anti-X: snowinferno, we have one already, _announcer [04:07] Tim_Smart: ryah: I'm probably late to the party... [04:07] Anti-X: and probably v8bot [04:07] ryah: Tim_Smart: neat.. [04:07] ChrisPart has joined the channel [04:08] snowinferno: Anti-X: yeah but its a good challenge to test my knowledge [04:08] Anti-X: ofc [04:08] satori_: bradleymeck1: small typo in the section on closures code sample. missed a { [04:08] snowinferno: ofc? [04:09] bradleymeck1: and _frankie for !tweet out [04:10] iwasbiggs has joined the channel [04:11] CIA-77: node: 03Ryan Dahl 07master * rd2de8ba 10/ (lib/readline.js lib/repl.js): ^c to get out of '...' in REPL - http://bit.ly/dh84ko [04:12] jellymonster has joined the channel [04:13] Anti-X: ofc - of course [04:13] Anti-X: sif - as if [04:14] jacobolus has joined the channel [04:16] eisd: snowinferno: you can just fork v8bot [04:16] ryah: that latest change makes the repl a lot more usable [04:16] bradleymeck1: /cheer [04:17] bradleymeck1: can we spawn multiple repls now without fear? [04:17] dgathright has joined the channel [04:17] ryah: you can now ^c out of "..." [04:17] Tim_Smart: ryah: Yay. I kept on interrupting repl due to human error :p [04:18] Tim_Smart: Then I have to re-declare everything and such... [04:18] Tim_Smart: s/have/had/ [04:20] pedrobelo has joined the channel [04:21] ryah: ryan@mac1234:~/projects/node% ./node [04:21] ryah: > function hello (a, b) { [04:21] ryah: ... return a + b; [04:21] ryah: ... } [04:21] ryah: > hello(1,2) [04:21] ryah: 3 [04:22] ryah: ^-- so much more friendly [04:22] ryah: i guess it's the same, but knowing i can ^c out seems really nice [04:22] _announcer: Twitter: "I am looking at: Comet with node.js and V8 http://fl5.me/6hjqg5" [zh-CN] -- 叶冬开 AlvinYe. http://twitter.com/alvin2ye/status/24729675122 [04:23] mikew3c has joined the channel [04:24] pedrobelo has joined the channel [04:24] pedrobelo has joined the channel [04:24] _announcer: Twitter: "@ Npm fnando're using to manage packages in Node.js? Unable to install so as not to need to use sudo to install things?" [pt] -- Cássio Marques. http://twitter.com/cassiomarques/status/24729809234 [04:25] jellymonster has joined the channel [04:26] bradleymeck1 has left the channel [04:26] _announcer: Twitter: "watching https://peepcode.com/products/nodejs-i" -- Matthew Rudy Jacobs. http://twitter.com/matthewrudy/status/24729909978 [04:26] snowinferno: can i run node directly within v8 or does it have to be done through a C/C++ wrapper? [04:27] ryah: snowinferno: ? [04:28] snowinferno: ryah: it's my first time trying to use node and I haven't seen anything on the site on how to get started using it [04:30] ryah: snowinferno: http://nodejs.org/#build [04:30] snowinferno: ryah: yeah, already did make and make install [04:30] Eber: Is it right to say that prototype is an object that represents the object's instance? [04:31] polotek has left the channel [04:31] snowinferno: Eber: I don't think so, you can change a prototype and it affects all instances, including those already instanciated [04:32] Eber: snowinferno: uhm, true... I can't seem to define what prototypes are... :( [04:32] eisd: snowinferno: just go to commandline, type "node" and press enter [04:33] snowinferno: eisd: thanks, i assume ^c to get out of node? [04:33] eisd: yes [04:33] snowinferno: I thought it was something that was run through a js engine like v8 [04:33] eisd: v8 is the JS engine [04:33] v8bot: eisd: "SyntaxError: Unexpected identifier" [04:34] snowinferno: ahh didn't know node came with v8 [04:34] mikew3c: v8: sys.puts("foo"); [04:34] v8bot: mikew3c: "ReferenceError: sys is not defined" [04:34] eisd: v8: Math.random() [04:34] v8bot: eisd: 0.2619484660681337 [04:35] eisd: mikew3c: sandboxed [04:35] mikew3c: I see [04:35] eisd: v8: while(true); [04:35] v8bot: eisd: Error: Timeout [04:35] satori_: hehe [04:35] CIA-77: node: 03Ryan Dahl 07master * r431e430 10/ (66 files in 10 dirs): Upgrade V8 to 2.4.4 - http://bit.ly/aSlFnt [04:36] mikew3c: v8: Date.parse("2001-02-27T01:35:16.5+09:00"); [04:36] v8bot: mikew3c: 983205316005 [04:36] Tim_Smart: ryah: Ooo. Doesn't 2.4.4 fix some bug with the debugger? [04:36] mikew3c: v8: Date.parse("2001-02-27T01:35:16+09:00"); [04:36] v8bot: mikew3c: NaN [04:36] mikew3c: v8: Date.parse("2001-02-27T01:35:16.005+09:00"); [04:36] v8bot: mikew3c: 983205316005 [04:36] mikew3c: v8: Date.parse("2001-02-27T01:35:16.5+09:00"); [04:36] v8bot: mikew3c: 983205316005 [04:37] visnup has joined the channel [04:37] SubStack: ryah: there's tshark @ earlier [04:38] hb_ has joined the channel [04:38] SubStack: I don't even know how to use the gui version anymore [04:38] pquerna: "Add heap snapshots to JSON format to API." [04:38] jesusabdullah: gui of what? [04:39] SubStack: jesusabdullah: to wireshark [04:39] SubStack: also node bindings would rock [04:39] jesusabdullah: Oh, that thing [04:39] SubStack: instead of their ridiculous protocol decoders [04:39] jesusabdullah: Haven't done anything like that before [04:39] SubStack: ACTION took an intrustion detection class one time [04:39] SubStack: learned to use tshark so well [04:39] jesusabdullah: I see [04:40] jesusabdullah: Interesting :D [04:40] SubStack: everybody else was using wireshark though [04:40] SubStack: but education is what you make of it like that [04:41] jesusabdullah: Indeed [04:42] jesusabdullah: Man I can't wait to finally get some traction on my thesis [04:42] jesusabdullah: Make me feel more like I'm gonna eventually get out of here [04:46] mjr_: SubStack: You can do protocol decoding in node with node_pcap, although it is nowhere near as thorough as wireshark. [04:47] SubStack: mjr_: with stream reassembly or whatever that process is called? [04:47] mjr_: Oh yes [04:47] SubStack: neat [04:47] mjr_: I built a simple TCP engine in JavaScript [04:47] mjr_: Super basic, but it does reassemble TCP segments. [04:48] mjr_: http://github.com/mranney/node_pcap [04:49] mikew3c: is there a way to have node tell me what version of v8 it is built against [04:51] gsmcwhirter: mikew3c, process.versions.v8 ? [04:51] pquerna: process.versions.v8 [04:51] pquerna: so slow. [04:51] mikew3c: gsmcwhirter, pquerna - thankx [04:52] _announcer: Twitter: "Javascript: MOONGIFT: NodeJS for IDE "Nodify" Open Source Software / Free Software Daily Information: http://www.moongift.jp/2010/09/nodify/" [ja] -- bsiyo. http://twitter.com/bsiyo/status/24731405137 [04:53] jesusabdullah: moongift? Heh [04:53] _announcer: Twitter: "Soda a Selenium RC client for Node.js http://icio.us/2c2nh4" -- Jacky. http://twitter.com/jackysee/status/24731463308 [04:53] AAA_awright: Translated it looks like [04:53] ajpiano has joined the channel [04:53] snowinferno: do i have to save the file descriptor from fs.open to an external variable from the callback? [04:53] pquerna: http://github.com/past/nodify [04:54] pquerna: looks like thats what they are talking to [04:54] jesusabdullah: NODE JS! NUMBA ONE! [04:54] onar_ has joined the channel [04:54] jesusabdullah: Sorry, I've been watching Japanese game shows [04:54] jesusabdullah: or, my girlfriend has [04:54] jesusabdullah: I've been subjected to them [04:55] jesusabdullah: "Pro Sportsman Number One" [04:55] jesusabdullah: is the name of the particular show [04:55] jesusabdullah: All their events have english names [04:56] jesusabdullah: and they announce the winner in English: NUMBA ONE [04:57] galaxywatcher has joined the channel [04:57] devongovett has joined the channel [05:02] bmizerany has joined the channel [05:03] silentrob has joined the channel [05:08] gigabo has joined the channel [05:10] jellymonster has joined the channel [05:12] nroot7 has joined the channel [05:12] _announcer: Twitter: "there really is something that is just fun about server-side javascript with #couchdb and #nodejs" -- kalley. http://twitter.com/kalley/status/24732488252 [05:13] nroot7: Anyone using prgmr for node hosting here ? [05:13] nroot7: How long is their waiting time to get an account ? [05:15] kaichen has joined the channel [05:17] gf3 has joined the channel [05:17] jesusabdullah: prgmr? Never heard of it actually [05:18] ChrisPartridge: there are plenty of other fish in the xen game nroot7 [05:18] bpot has joined the channel [05:20] nroot7: Can you suggest some chrisPartridge, I am interested in prgmr because right now I just have hobby/learning projects and their hosting is very cheap [05:20] pquerna: i used prgmr. [05:20] pquerna: *still use. [05:20] mjr_: gah, why is the V8 profiler so worthless? [05:20] pquerna: an ec2 micro instance is a good place to start nroot7 [05:20] pquerna: no waiting time, turn it off when you are done [05:22] _announcer: Twitter: "Yay! @konobi posted about our plans for the Smart Platform. http://bit.ly/a5F5ja Short version: We're rewriting it with #nodejs." -- Jim Pick. http://twitter.com/jimpick/status/24732997208 [05:22] CIA-77: node: 03Ryan Dahl 07master * r3def66a 10/ TODO : Add items to TODO - http://bit.ly/9pNbcX [05:23] ryah: mjr_: what do you mean? [05:23] jakehow has joined the channel [05:23] mjr_: So my node process is at 100% CPU and I want to know how to makeit faster. node --prof tells me this: [05:24] mjr_: http://gist.github.com/583766 [05:24] mjr_: LazyCompile: node.js:1 [05:24] pquerna: "chain of buffers" [05:24] pquerna: ACTION wants to go to chains of buffers for streams really :-/ [05:25] _announcer: Twitter: "Sort of sad to see the perl version go away - it was pretty. But if it can contribute to the #nodejs community, it's worth it." -- Jim Pick. http://twitter.com/jimpick/status/24733163667 [05:27] jellymonster has joined the channel [05:27] mjr_: ryah: you know what doesn't seem to suck though? OSX Instruments: http://skitch.com/mranney/darxn/instruments [05:27] mjr_: v8:internal::Builtin_ArrayShift() [05:27] v8bot: mjr_: "SyntaxError: Unexpected token :" [05:28] mjr_: boom [05:28] pquerna: instruments++ [05:28] v8bot: pquerna has given a beer to instruments. instruments now has 1 beers. [05:29] pquerna: it'll be hot once dtrace probes are in node :) [05:29] ryah: dtrace [05:29] mjr_: instruments will enjoy that post-increment beer. [05:29] mjr_: How do I use dtrace to get that same answer as instruments? [05:29] ryah: have you guys used mdb? [05:29] _announcer: Twitter: "Oh, and if you want to work on the new #nodejs Smart Platform, Joyent is still hiring!" -- Jim Pick. http://twitter.com/jimpick/status/24733355928 [05:29] pquerna: instruments is dtrace [05:29] pquerna: underneath [05:29] pquerna: its just a pretty UI with graphs around dtrace [05:29] pquerna: (for the most part) [05:29] mjr_: pquerna: are you sure? Instruments also can CPU sample iOS apps, and I didn't think they did DTrace for ARM. [05:29] jesusabdullah: instruments? [05:30] jesusabdullah: Interesting [05:30] pquerna: DTrace has not been ported to iOS, so it is not possible to create a custom instrument for devices running iOS. [05:30] mjr_: jesusabdullah: click that skitch link above [05:30] pquerna: mjr_: right, some of the things it does are just cpu samplers [05:30] mjr_: But CPU Sampler works on iOS. I use it all the time. [05:30] pquerna: mjr_: but some of the other things it does are dtrace [05:30] mjr_: ohhh [05:31] mjr_: Right,all of those other IO watchers and stuff [05:31] amuck has joined the channel [05:31] mjr_: I wondered how they did those. [05:31] jesusabdullah: Looks nice [05:32] zomgbie has joined the channel [05:32] pquerna: can soeone write a puppet replacement in node.js that doesn't leak memory [05:32] mjr_: This is hilarious. I'm trying to tighten up my redis client and see where the bottlenecks are. I fired off 100,000 commands, and the slowest thing is V* shift. [05:33] mikeal: hahaha [05:33] mjr_: v8 shift. Why? Because I have a simple Array as a command queue that uses queue.shift() to get the next element. All the time goes there. [05:33] v8bot: mjr_: "SyntaxError: Unexpected identifier" [05:33] mjr_: so lame [05:33] mikeal: did creationix post something to fix that [05:33] mjr_: But only because of artificial benchmark conditions mostly. [05:34] mikeal: he had some kind of array like thing that didn't have that perf issue [05:34] mjr_: Yeah, node uses it for nextTick() queues [05:34] _announcer: Twitter: "SODA, Node.js & selenium integration. http://icio.us/2c2nh4" -- Celestino Güemes. http://twitter.com/tguemes/status/24733597827 [05:34] jesusabdullah: ACTION doesn't remember what puppet is [05:34] creationix: shift is bad [05:34] creationix: mjr_: not anymore [05:34] mjr_: oh? [05:35] mjr_: creationix: do you have a pointer to your queue replacement? [05:35] creationix: well, for node's queue, I just replaced it with a for loop [05:36] sudoer has joined the channel [05:36] mjr_: I guess I could use an Object and justkeep track of the start and end. [05:37] mikeal: i shift super slow because arrays aren't real arrays? [05:37] mjr_: it has to renumber all of the elements [05:37] mikeal: right, because it's not a real array :) [05:37] mjr_: So if you have 100,000 items in an array, and then you shift(), it renumbers all 99,999 of them [05:37] mikeal: it's an object with numeric keys [05:37] mikeal: but it can have spaces between the keys [05:37] mikeal: which is like, crazy town [05:38] creationix: mjr_: there are a few "solutions" [05:38] mikeal: arrays in other languages don't have this issue [05:38] jellymonster has joined the channel [05:38] mjr_: computers are hard [05:38] JimBastard: pquerna: im about to release a piece of that tonight [05:38] JimBastard: a small piece [05:38] creationix: for a work queue where you'll eventually shift all it, a flipping queue works great [05:38] pquerna: great, i hate puppet so much. [05:39] creationix: mjr_: http://github.com/creationix/pattern/blob/master/lib/pattern/queue.js [05:39] mjr_: creationix: I'll eventually shift all of it, but I need to keep adding to it while still shifting. [05:39] Tim_Smart: creationix: Can't you instead continually push, and just set elements to undefined? [05:39] creationix: no need to set undefined [05:40] ryah: is it always this busy at 10:40p ? [05:40] creationix: with the flipping queue, you read off one half while pushing to the other half [05:40] Tim_Smart: creationix: Well for memory usage? [05:40] _announcer: Twitter: "Let's play later Innovation: NodeJS for IDE "Nodify" «MOONGIFT: http://bit.ly/ag2VBS" [ja] -- 小林照幸. http://twitter.com/koba_ninkigumi/status/24733878317 [05:40] mjr_: and I can only take the elements out one at a time unfortunately. [05:40] jesusabdullah: I found an interesting sort of queue when I was looking [05:40] creationix: Tim_Smart: I gues so [05:40] jesusabdullah: It didn't shift until the queue had more empty slots than full ones [05:40] Tim_Smart: creationix: OK. Well have you got an example of implementation? [05:40] creationix: Tim_Smart: http://github.com/creationix/pattern/blob/master/lib/pattern/queue.js [05:40] Tim_Smart: ryah: 5:40pm here. It isn't 10:40 for everyone :p [05:41] mjr_: creationix: lemme drop yours in and see what happens. [05:41] creationix: you'll probably want to modify it to use normal constructors [05:41] Nohryb has joined the channel [05:42] Athox has joined the channel [05:42] mjr_: oh yeah, hm. [05:42] hassox has joined the channel [05:42] Tim_Smart: creationix: Maybe you could just have a setInterval resetting the queue every now and again. [05:42] creationix: well, for work queues, this works great [05:42] Tim_Smart: (slice + reset offset) [05:43] creationix: slice is just as expensive as shift, just not needed as often [05:43] SamuraiJack has joined the channel [05:43] _announcer: Twitter: "He also runs NodeJS I want ... / MOONGIFT: NodeJS for IDE "Nodify" Open Source Software / Free Software Daily Information http://htn.to/qZoZMr" [ja] -- まっは. http://twitter.com/mach3ss/status/24734050224 [05:43] Tim_Smart: Oh I guess length === offset is fine [05:43] _announcer: Twitter: "@davglass I think your nodejs instance just bit the dust" -- Ryan Kennedy. http://twitter.com/rckenned/status/24734063153 [05:44] _announcer: Twitter: "pushState + node.js on the Server Side http://ff.im/-qJDlm" -- Devlin Dunsmore. http://twitter.com/devlind/status/24734115854 [05:45] creationix: there was one fast shift I saw and spliced when the offset was at half [05:45] mjr_: creationix: wow, shit() took 30 seconds, and your Queue takes 3.2 seconds. [05:45] creationix: :) [05:45] Tim_Smart: lol shit() [05:46] ph^ has joined the channel [05:46] mjr_: freudian_slip() [05:47] creationix: mjr_: try it for larger queues, it really makes a difference then [05:47] mikeal: this is kind of hilarious to watch [05:47] hassox_ has joined the channel [05:47] mikeal: or maybe it's the amaro i'm drinking [05:47] mjr_: creationix: I modified it thusly. Mind if I stick that into my redis lib? [05:47] mjr_: https://gist.github.com/624376dae5206d220d72 [05:48] creationix: mjr_: looks good [05:48] hb_ has joined the channel [05:48] creationix: but notice that .length is quite expensive [05:49] creationix: it's better to just shift till it returns undefined [05:49] creationix: in fact it's that last shift that empties the array and lets the references go free [05:49] mikeal: can you rely on that? [05:49] mikeal: cause you can do like [05:49] creationix: as long as there is no undefined in your queue [05:49] mikeal: var x = [1,2,undefined,4] [05:49] silentrob has joined the channel [05:49] mikeal: and that's a length = 4 array [05:50] mikeal: same thing happens if you do [05:50] mikeal: delete arr[3] [05:50] creationix: mikeal: but why would you put undefined in a work queue [05:50] creationix: it's not a general purpose array [05:50] mjr_: Yeah, I don't need array semantics, just queue semantics. [05:50] Tim_Smart: Because that is what noobs do. [05:50] kjeldahl_ has joined the channel [05:50] mjr_: JavaScript Arrays are all kinds of quirky. [05:50] creationix: but Tim_Smart's idea to set items to undefined when you shift them will help free references a little sooner [05:50] mikeal: i'm worried about messing that up [05:51] mikeal: sending the return value of a function in to the work queue [05:51] muk_mb has joined the channel [05:51] creationix: mikeal: in fact you can refuse to push is the value is undefined [05:51] Tim_Smart: I might quickly play with something... [05:51] mikeal: but the function didn't return anything so it's undefined and now that kills the work queue in the middle [05:51] muk_mb: hey you guys [05:51] muk_mb: how many simultaneous long-polling requests do you think a node could take on before it was a problem? [05:51] muk_mb: 10,000? 100,000? [05:52] creationix: somewhere around that [05:52] mikeal: how many open file handlers do you have? [05:52] creationix: muk_mb: depends on your code [05:52] creationix: and os settings [05:52] mikeal: ulimit -n [05:52] JimBastard: 4k ! [05:52] mikeal: this due i was talking to today said his default MacPro setting was 30K [05:52] mikeal: i was like "woah" [05:53] mikeal: Solaris is 256 [05:53] mjr_: Check out my awesome CPU utiliaation now: http://skitch.com/mranney/dar1e/instruments [05:53] mikeal: makes me wanna punch a baby [05:53] JimBastard: 512 here [05:53] muk_mb: ulimit -n gives me "256" on my macbook pro [05:53] mikeal: that's not enough :) [05:53] mjr_: muk_mb: I can do 60K on my 3 year old MacBook. I'm sure newer machines would be better. [05:54] mjr_: It all depends on how often you want to send data to the connections and how large the data is. [05:54] muk_mb: is that how many I have open now? or how many I -can- have open? [05:54] mikeal: open concurrently [05:54] creationix: muk_mb: it's a limit [05:54] mikeal: a socket is just a fancy file handler, so you need to up the ulimit [05:55] muk_mb: why's mine 256 on the latest macbook pro then? hmm [05:55] mikeal: no idea [05:55] mikeal: ulimit -n 4096 [05:55] mikeal: that's safe and more than 4K [05:55] creationix: muk_mb: that's the default, mine is the same [05:55] muk_mb: creationix: oh ok [05:56] peutetre has joined the channel [05:57] Tim_Smart: creationix: What about something like https://gist.github.com/94f3cf3a9a5063cb67bc [05:57] dgathright has joined the channel [05:58] creationix: Tim_Smart: if your queue never reaches zero length you'll never reset the array [05:59] creationix: Tim_Smart: also setting the length to 0 on the array if much faster than replacing it with a new array [05:59] Tim_Smart: creationix: Ah k. [05:59] creationix: especially if your queue is emptied often [05:59] mjr_: If you guys want to keep making this faster, I'll happily accept improvements. :) [05:59] creationix: Tim_Smart: but setting the value to undefined helps a lot [05:59] Tim_Smart: That is why I was thinking a setInterval that does a slice and resets everything [06:00] Tim_Smart: But I'm not sure. [06:00] jellymonster has joined the channel [06:00] creationix: With my rotating queue, you're guranteed to eventually hit the marker point [06:00] creationix: and then just reuse the same two arrays over and over [06:01] junya has joined the channel [06:01] ryah: ACTION wonders where process.kill should go [06:01] creationix: ryah: what does it kill? [06:01] Tim_Smart: To jail. Killing is bad. [06:01] mjr_: Tim_Smart: that Object.defineProperty sets a global property length, no? [06:01] kjeldahl_ has joined the channel [06:02] Tim_Smart: mjr_: Refresh :p [06:02] creationix: Tim_Smart: why do you want length enumerable? [06:02] brianmario has joined the channel [06:02] Tim_Smart: creationix: Not sure. Because I felt like it? [06:03] creationix: it's not enumerable on normal arrays [06:03] creationix: just in case someone for..in loops over the object [06:03] Tim_Smart: Fine >.> [06:04] creationix: Tim_Smart: just remove the enumerable and writable definitions. The defaults are what you want [06:05] ajpiano has joined the channel [06:06] ajpiano has joined the channel [06:06] ryah: creationix: processes [06:06] hassox_: hey lads [06:06] ryah: getting constants out of process is annoying [06:06] ryah: hassox_: hey [06:07] hassox_: how goes the refactor? [06:07] ryah: not refactoring [06:07] Tim_Smart: ryah: Where are constants moving to? [06:08] ryah: Tim_Smart: require('constants') [06:08] Tim_Smart: Ah cool. [06:08] hassox_: oh... I thought you guys were shifting things about in core node [06:08] Tim_Smart: process always did seems a little bloated. [06:08] pquerna: hodgepodge. [06:09] Tim_Smart: creationix: OK I have cleaned it up a little. [06:09] Tim_Smart: js> new Array(5); [06:09] gbot2: Tim_Smart: [] [06:09] Tim_Smart: js> new Array(6).lengt [06:09] gbot2: Tim_Smart: undefined [06:09] ryah: js> Buffer(10) [06:09] gbot2: ryah: Error: ReferenceError: Buffer is not defined [06:09] Tim_Smart: js> new Array(6).length [06:09] gbot2: Tim_Smart: 6 [06:09] eisd: v8: new Array(5) [06:09] v8bot: eisd: [undefined, undefined, undefined, undefined, undefined] [06:09] ryah: js> require('buffer').Buffer(10) [06:09] gbot2: ryah: Error: ReferenceError: require is not defined [06:10] ryah: lame [06:10] eisd: v8bot is node/v8, gbot2 is spidermonkey [06:10] Tim_Smart: ryah: Plain js :/ [06:10] creationix: Tim_Smart: nice, I'm working on one that is closer to a real array [06:10] Tim_Smart: v8: require [06:10] v8bot: Tim_Smart: "ReferenceError: require is not defined" [06:10] ryah: v8bot: Buffer(10) [06:10] v8bot: ryah: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [06:10] ryah: v8: Buffer(10) [06:10] v8bot: ryah: "ReferenceError: Buffer is not defined" [06:10] Tim_Smart: creationix: Yeah I was thinking just inherit from Array [06:10] eisd: ryah: both bots are sandboxed though :P so no buffer, sys, etc [06:10] ryah: v8: require('buffer').Buffer(10) [06:10] v8bot: ryah: "ReferenceError: require is not defined" [06:10] Tim_Smart: creationix: But that won't work... [06:11] creationix: Tim_Smart: why not? [06:11] Tim_Smart: creationix: [] assessors will always be out.. [06:11] creationix: Tim_Smart: true, but just don't use those on work queues [06:11] creationix: only shift and push make sense there [06:12] Tim_Smart: creationix: Yeah but that will also break all the other array native methods. [06:12] creationix: my goal is to create less objects [06:12] creationix: make the queue be the same as the array [06:12] creationix: just don't use it as an array [06:14] ryah: constants being in process is really old [06:14] ryah: back when tehre was a node namespace [06:15] ryah: pre-module system [06:15] Tim_Smart: Wow lighthouse issues take over a day to trim out deleted sub-domains. [06:17] mikeal has joined the channel [06:17] mjr_: Hey, somehow my redis client is faster than the included redis-benchmark program, written in C [06:17] CIA-77: node: 03Ryan Dahl 07master * r6eca948 10/ (6 files in 3 dirs): Move constants out of process object - http://bit.ly/c6FVXA [06:17] CIA-77: node: 03Ryan Dahl 07master * r6680c7f 10/ TODO : Add TODO item - http://bit.ly/9Bvubq [06:17] Tim_Smart: mjr_: Hmm... [06:18] eisd: ACTION wishes V8 would implement E4X [06:19] ryah: ACTION points eisd to the door [06:19] creationix: lol [06:19] eisd: ryah: :( [06:19] Tim_Smart: E4X is somewhat weird. [06:19] jchris: is it a known issue that sometimes dns lookups can be wonky? [06:19] eisd: E4X is standard. I see no reason why Google hasn't implemented it [06:20] creationix: we're already got a native data format, it's called JSON [06:20] ryah: jchris: hm - no? [06:20] ryah: jchris: well, depends [06:20] mjr_: I'd say it's fair that sometime DNS is strange. [06:20] jchris: as in, I have a tight loop doing work against couchdb, and I get crashes with eaddrinuse when I call it localhost, but not when i call it 127.0.0.1 [06:20] jchris: and… nevermind [06:20] mjr_: jchris: that may be the ivp6 version of "localhost" [06:21] creationix: eisd: are you working with templating [06:21] jchris: got it with 127.0.0.1, just took longer to happen [06:21] Tim_Smart: ryah: echo "module.exports = process.binding('constants');" > lib/constants.js? [06:21] jchris: http://friendpaste.com/5veDP7A3o9ybmzQfT05CJd [06:21] ryah: oh i forgot to add it [06:21] jchris: this is the error [06:22] abiraja has joined the channel [06:23] CIA-77: node: 03Ryan Dahl 07master * r31f8fa2 10/ (src/node.cc lib/constants.js): Add require('constants') - http://bit.ly/9wuzzD [06:23] jchris: i'm iterating through all the docs in the database with a recursive function that pops from an array of their ids, then passes the array to itself again via the callback after the doc has been transformed [06:23] eisd: creationix: nope [06:23] keeto has joined the channel [06:23] jchris: using the setTimeout 0 trick to avoid too much recursion [06:24] jchris: i'm sure there's a better way but this works as long as couch is slow enough, when I speed up couch, the eaddrinuse errors start to happen with dns in the trace [06:25] creationix: jchris: process.nextTick is better than setTimeout(fn, 0) [06:25] jchris: thanks [06:25] jchris: although that shouldn't effect the dns lookups (or should it?) [06:25] dgathright has joined the channel [06:26] creationix: jchris: no, that will make it faster [06:26] Tim_Smart: creationix: Do you think the nextTick queue needs updating? [06:26] Tim_Smart: To something like we are playing with? [06:26] creationix: Tim_Smart: no, nextTick is a simple case [06:26] Tim_Smart: Ah right. [06:27] creationix: it's not a queue [06:27] creationix: it consumes all the contents in a single sync tick [06:27] Tim_Smart: :) [06:28] creationix: jchris: what are you trying to do? [06:28] satori_ has joined the channel [06:28] jchris: prefix the ids of all the docs in my db [06:28] ryah: the only problem with nextTick is that it's not actually the next tick :) [06:28] ryah: but i like the name [06:29] ryah: it should just be "soon" [06:29] ryah: process.soon(function () { } ) [06:29] jchris: its pretty self explanatory for someone who doesn't wanna know what's happening underneath [06:29] creationix: jchris: if your recursion involves any async functions you don't have to worry about stack overflows [06:29] creationix: true events always start on a clean stack [06:29] jellymonster has joined the channel [06:30] jchris: hmm, well I was getting that thing where node is just gone [06:30] jchris: and I changed it to set time out, now it runs :) [06:30] creationix: jchris: got a gist? [06:30] jchris: except when it gets the eaddrinuse error [06:31] smcq has joined the channel [06:31] creationix: maybe you're running out of ports [06:31] creationix: you're not pooling connections are you? [06:31] jchris: it's a 1 time migration script so it's not pretty http://friendpaste.com/7Scne3Qb8tkm97EeiTrzhW [06:32] sixtus42 has joined the channel [06:38] Tim_Smart: Urgh why do I have to sudo for silly expresso [06:38] jchris: sudo make me some coffee? [06:39] muk_mb: Is there a better method than long-polling to get realtime data to a client of your website? (iphone app, desktop, app, stuff like that) [06:39] creationix: jchris: which couch client is that? [06:39] smcq has joined the channel [06:39] jchris: felixge's [06:39] herbySk has joined the channel [06:39] jchris: I tried yours when I started this project but it was missing something that had [06:39] jchris: now of course this is missing things too... [06:40] creationix: jchris: you know the couch http api right? [06:40] jchris: I've heard of it :0 [06:40] creationix: mikeal has a good http client pool and an easier to use http client [06:40] mjr_: jchris: it uses this new thing called JSON, which you should really check out. [06:40] creationix: jchris: thought so :P [06:40] _announcer: Twitter: "Perhaps I Teru Kano node.js excited? Teru Kano missed chance?" [ja] -- Tsuyoshi Akase. http://twitter.com/akase244/status/24736751385 [06:40] jchris: I tried just using request, but I much prefer a client api [06:41] creationix: jchris: well, it looks like the library you're using doesn't have connection polling and is using up all the ports [06:41] grEvenX has joined the channel [06:41] jchris: i'd end up writing one if I didn't have one, as there is lots of keeping track of passwords etc to be done [06:41] creationix: *pooling [06:41] creationix: I see [06:41] grEvenX: hi [06:42] jchris: I'd like something that has the same api as jquery.couch.js, so I can reuse my browser code [06:42] jchris: except I prefer the function(er, doc){} style to the sucess and error callbacks [06:43] jchris: although having a default error callback in the jquery.couch.js library is kinda nice [06:43] jchris: alert(error) :) [06:43] creationix: yeah [06:43] grEvenX: I'm currently researching how to build a scalable "streaming" API that should be connectable from desktop clients and browsers [06:44] creationix: jchris: have you used Step yet? [06:45] neytema has joined the channel [06:45] jchris: ooh that looks kinda neat [06:45] beawesomeinstead has joined the channel [06:45] beawesomeinstead has joined the channel [06:46] jchris: i tend to wanna get a litte messy with keeping some state in closures around the next callback, tough [06:46] jchris: though [06:46] grEvenX: I guess node.js works very from a browser client, but is there any libraries for C#, Cocoa, c/c++ etc ? [06:46] jchris: grEvenX: you're just gonna end up writing a wire protocol, so my advice is push json over the wire and parse it in the native language of the clients [06:46] creationix: jchris: is there a reason you want to rename them one at a time? [06:47] jchris: creationix: I had just opened a callback series for each one in parallel, but 100k sockets at once wouldn't probably work [06:47] creationix: now we're talking [06:48] jchris: the couch logs were all GET over and over, no PUTs [06:48] jchris: so I decided it'd be better to serialize it [06:48] jchris: now the script is done, so I can get back to working on my app :) [06:48] jchris: but it's good to learn here from people who are actually good at node [06:48] grEvenX: jchris: I think I will need to read up a little on Node.js and test some examples then... I haven't looked much at it yet. [06:49] _announcer: Twitter: "Realllllly want to start playing with long polling and node.js a little. But time has fled and I have no way to retrieve it." -- Matthew. http://twitter.com/thismat/status/24737135989 [06:49] the_giver2 has joined the channel [06:49] creationix: jchris: cool, let me know if you need more help [06:50] creationix: ACTION should really get some sleep [06:50] creationix: early morning meeting at work [06:50] jchris: laters [06:50] creationix: grEvenX: good luck, node is fun [06:50] creationix: 'night everyone [06:50] grEvenX: creationix: thanks :) [06:50] creationix: grEvenX: howtonode.org if you haven't discovered it yet ;) [06:51] the_giver2: hi, when i have something like response.on('data', function(stuff) { //get data } [06:51] grEvenX: I have taken a good look at Cometd so far, but I haven't found many libraries implementing the Bayeux protocol [06:51] the_giver2: how do i "break off" out of that [06:51] the_giver2: when i ahve the data that came in [06:51] the_giver2: i'm having a hard time understanding this [06:51] visnup has joined the channel [06:51] the_giver2: i'm doing a unit test... and i'm expecting to get certain data but sometime the wrong function gets called [06:52] the_giver2: or this unit test gets called multiple times [06:55] gf3 has joined the channel [06:56] mr_daniel has joined the channel [07:01] CIA-77: node: 03Ryan Dahl 07master * rf8ce848 10/ (src/node.cc src/node.js): Remove process.global - http://bit.ly/c807OC [07:01] mies has joined the channel [07:03] _announcer: Twitter: "@davglass's demo site of NodeJS w/ YUI3 & ExpressJS. Take a minute, way more than meets the eye: http://bit.ly/cvTapA" -- Nate Koechley. http://twitter.com/natekoechley/status/24737783290 [07:05] smcq has joined the channel [07:07] mbrochh has joined the channel [07:07] mbrochh has joined the channel [07:07] adambeynon has joined the channel [07:08] delapouite has joined the channel [07:09] devkorcvince has joined the channel [07:10] devkorcvince: Hello does expressjs has an IRC channel? [07:10] voxpelli has joined the channel [07:11] devkorcvince: Is it safe to pass app function on multiple module on expressjs? [07:12] muk_mb: is there something like Resque for Node? [07:12] jellymonster has joined the channel [07:12] muk_mb: oh hey, there is [07:13] konobi: node-worker? [07:13] mikeal has joined the channel [07:14] virtuo has joined the channel [07:15] _announcer: Twitter: "@MossyBlog I don't mind JavaScript at all - got many good concepts. Node.js is an example of how well it works with async server code" -- Jonas Follesø. http://twitter.com/follesoe/status/24738301257 [07:15] ryah: i suppose we need a release tomorrow. [07:15] ryah: meh [07:15] ivanfi has joined the channel [07:16] _announcer: Twitter: "Had a good chat with @creationix on the Node.js IRC channel" -- J Chris Anderson. http://twitter.com/jchris/status/24738374115 [07:16] CIA-77: node: 03Ryan Dahl 07master * r5a801d6 10/ src/node.cc : Finally remove process.unloop - http://bit.ly/dhN9gT [07:16] CIA-77: node: 03Ryan Dahl 07master * r01b3418 10/ (lib/dgram.js lib/dns.js lib/net.js src/node.cc src/node.js): Move IOWatcher and Timer to process.binding - http://bit.ly/dAHL7a [07:17] smcq has joined the channel [07:18] path[l] has joined the channel [07:19] saikat: ryah: 0.3? [07:19] devkorcvince: Some one using socket.io-node and Titanium TCPSocket I need a mentor hehehe [07:20] smcq has joined the channel [07:21] ryah: saikat: not yet [07:21] Tim_Smart: 0.2.2 :p [07:22] ryah: % git blame -- src/node.js | grep evalcx | head -1 [07:22] ryah: 7a72885e (Herbert Vojčík 2010-04-28 22:51:16 +0200 31) var evalcxMsg; [07:22] ryah: gr [07:22] ryah: why did i allow this... [07:22] ryah: oh wait there a deprecation message [07:23] CIA-77: node: 03Ryan Dahl 07master * r9628e28 10/ (src/node.js test/simple/test-eval-cx.js): Remove process.evalcx - http://bit.ly/depK6k [07:24] onar_ has joined the channel [07:25] smcq has joined the channel [07:25] ryah: % git diff @{yesterday} --shortstat -- src lib [07:25] ryah: 15 files changed, 368 insertions(+), 441 deletions(-) [07:25] ryah: :) [07:26] saikat: heh nice [07:26] Tim_Smart: Deletions are king. [07:26] mjr_: more deletions than insertions. [07:27] shockie has joined the channel [07:27] mjr_: ryah: I have a performance issue that maybe needs some dtrace love. [07:27] devkorcvince: who wants to teach me node for free hehehe [07:27] Tim_Smart: Heh that reminds me of when I removed socket.io from a project: http://github.com/Tim-Smart/nodudio/commit/c70129ba5da0a8159c5f41706ea1753d2a0cf665 [07:27] mjr_: Both instruments and --prof are worthless [07:27] Tim_Smart: <3 HTML5 [07:27] zomgbie has joined the channel [07:28] ryah: mjr_: what is that? [07:28] saikat: mjr_: tried node-profiler? [07:28] jellymonster has joined the channel [07:28] saikat: http://github.com/bnoordhuis/node-profiler [07:29] mjr_: Trying to figure out why my redis thing is so slow parsing large responses. [07:29] saikat: (i haven't, so i don't actually know much about it other than it seems cool) [07:29] ryah: mjr_: hm [07:29] Tim_Smart: Hmm Google really needs to add localstorage support to offline gmail [07:29] mjr_: It's getting 40KB buffers back from the socket, and taking way longer to grind through them than I think it should. Anyway, profiler and instruments just say, "v8::invoke" or something. [07:30] ryah: mjr_: what happens if you increase the size of the pool in lib/net.js ? [07:31] mjr_: ryah: same. [07:31] mjr_: Anyway, I just want to know where the time is going. [07:31] Tim_Smart: Have you got a copy of the profile on gist? [07:31] mjr_: Maybe there's something I'm doing that's dumb, or maybe this is something in node. There's no obvious way to tell. [07:32] mikew3c_ has joined the channel [07:33] mjr_: Tim_Smart: lemme re-run the tick-processor. It grinds a lot. [07:33] eisd has left the channel [07:34] mjr_: http://gist.github.com/583880 [07:34] smcq has joined the channel [07:35] Ezku_ has joined the channel [07:35] Tim_Smart: Heh are you running this on latest master with fast buffers? [07:36] pquerna: vfprintf? logging? [07:36] Tim_Smart: Seems buffer.copy is taking up a lot. [07:36] Tim_Smart: pquerna: Yeah for some reason it is always high in v8 profiles... [07:36] Tim_Smart: s/v8/node/ [07:36] mjr_: Here's what instruments says: http://skitch.com/mranney/dar4d/instruments [07:37] mjr_: So node is at 100% CPU while this is running [07:37] visnup has joined the channel [07:38] Tim_Smart: mjr_: What version of node is this with? [07:38] mjr_: I'd certainly expect lots of time to go into RedisReplyParser.execute(). That's what it should be doing. [07:38] mjr_: head as of a few minutes ago [07:38] visnup has joined the channel [07:38] Tim_Smart: mjr_: OK. Try putting Buffer.poolSize = 1024 * 1024 * 1; at the top of the file. [07:39] mjr_: I upped it to 2X a minute ago [07:39] mjr_: I'll try that. [07:39] ryah: Tim_Smart: net.js has its own pool [07:39] Tim_Smart: ryah: Yeah true. [07:39] ryah: so it's generally not affected [07:39] ryah: effected? [07:39] ryah: ACTION hates english [07:39] Tim_Smart: meh. [07:40] visnup has left the channel [07:40] Tim_Smart: ryah: But considering buffer.copy is taking up a lot of time... [07:40] visnup has joined the channel [07:41] pquerna: 2.%? [07:41] mjr_: yeah, the numbers don't add up [07:41] mjr_: They never do with th eoutput of tick-processor [07:42] rauchg_ has joined the channel [07:42] langworthy has joined the channel [07:42] digitalspaghetti: English is literally the worst language in the world [07:42] mjr_: I don't actually think it is buffer.copy taking the time. If I comment out that line, it doesn't go any faster. [07:42] Tim_Smart: What is _si_cache_add_item :/ [07:43] herbySk: ryah: If you removed all deprecation warnings, how will you eventually know, which API is deprecated (and when do you remove it altogether)? [07:43] jellymonster has joined the channel [07:43] Tim_Smart: Apple api. [07:43] digitalspaghetti: wel should all learn Lojban instead [07:43] SubStack: digitalspaghetti: not from what I've heard from people who speak a lot of languages [07:44] SubStack: english doesn't have many conjugations and they tend to be super regular [07:44] derferman has joined the channel [07:44] SubStack: plus, no gendered nouns [07:44] ryah: mjr_: are you doing setEncoding somehwere? [07:45] digitalspaghetti: oh yea, there is all that stuff we don't have to worry about [07:45] mjr_: not that I know of. I do end up calling toString on the buffer though [07:45] Tim_Smart: ryah: http://github.com/mranney/node_redis/blob/master/index.js [07:45] Tim_Smart: http://github.com/mranney/node_redis/blob/master/index.js#L20 is where all the traffic comes in [07:46] mjr_: actually, I lied. If you comment out line 149, the buffer.copy, then it goes 2X faster. [07:46] mjr_: The buffer is a meager 3 bytes long. [07:47] Tim_Smart: Line 145 on master [07:47] admc has joined the channel [07:47] ryah: a 3 byte copy is slow? [07:47] mjr_: yeah, seems so [07:47] _announcer: Twitter: "413.49 webrick runs request / sec. 5389.67 Nodejs runs request / sec. ho ho ho!" [it] -- Calvin Chan. http://twitter.com/calvintychan/status/24739717214 [07:47] mjr_: this is faster: https://gist.github.com/08932247081d17650381 [07:48] ryah: ugh [07:48] mjr_: I don't get it [07:48] mjr_: 3 lousy bytes [07:48] romanb has joined the channel [07:48] ryah: that sucks [07:49] ryah: maybe we should try Buffer#copy in js [07:49] Tim_Smart: It is something in the C++ that is doing it. [07:49] tobiassjosten has joined the channel [07:49] mjr_: But doesn't it go down into C++ land when you handle the [] ? [07:50] mjr_: Here I'm making 3 trips down, and that's faster than 1 trip. [07:50] mjr_: ACTION boggles [07:50] ryah: [] is special [07:50] TomY has joined the channel [07:50] Tim_Smart: I don't think it is the memmove, as that would show up in the profile. [07:50] ryah: no, it must be the c++ function call... [07:51] ryah: which is really painful [07:51] pdelgallego has joined the channel [07:51] mjr_: I guess I can just emit slices from a large chunk, and then this shouldn't matter. [07:52] rtomayko has joined the channel [07:52] mjr_: It's just a bunch of logic I was hoping to not figure out. [07:52] ryah: it'd be nice to have a js implementation of copy - jst a for loop [07:52] ryah: see what the difference is [07:52] ryah: do 10000 3 byte copies [07:53] Tim_Smart: I bet it would be good for small stuff, but for large data it would be miserable. [07:53] ryah: for nothing more than to understand the perf of making a c++ call [07:54] mjr_: So the [] operator is handled by V8 in some good way that doesn't involve a call into your C++? [07:54] mjr_: Like you told V8 where to put the data? [07:54] ryah: mjr_: right [07:54] mjr_: And it handles mapping the get/set requests [07:54] mjr_: Badass. [07:54] mjr_: Well, hmm. [07:54] mjr_: I can't believe we are once again finding that things are faster to do in JavaScript than in C++. [07:55] mjr_: What is the world coming to? [07:55] ryah: well - i guess better than the other way around [07:55] ryah: but i don't want that function call interface to be slow [07:55] kaichen has joined the channel [07:55] Tim_Smart: mjr_: Well we don't know yet, unless you already benched it :p [07:55] Tim_Smart: (For loop vs copy) [07:56] mjr_: I can tell you that individually copying 3 bytes per that last gist makes my parser go 2X faster. [07:56] mjr_: vs. calling buffer.copy() [07:56] ryah: i'm guess the js stuff gets crazy optimized [07:56] Tim_Smart: Ah right. [07:56] ryah: loop unrolling and shit [07:56] mjr_: Lemme cook up a little test, and then I desperately need sleep. [07:57] devkorcvince has joined the channel [07:58] MikhX has joined the channel [07:58] jellymonster has joined the channel [07:59] Tim_Smart: http://www.google.com/codesearch/p?hl=en#W9JxUuHYyMg/trunk/src/api.cc&q=SetIndexedPropertiesToPixelData%20package:http://v8%5C.googlecode%5C.com&l=2684 [07:59] Tim_Smart: ryah: ^-- how is that different to SetIndexedPropertiesToPixelData? [07:59] mauriez has joined the channel [08:00] ryah: Tim_Smart: you can set the type [08:00] _announcer: Twitter: "@calvintychan - Stop everything and watch this Hummingbird demo right now (realtime analytics w/ node.js): http://bit.ly/bFBuFT" -- Steve Baker. http://twitter.com/sbaker/status/24740270334 [08:03] ahc has joined the channel [08:04] aubergine has joined the channel [08:04] Tim_Smart: ryah: How does GetIndexed... compare to an object wrap? [08:05] Tim_Smart: Oh nevermind. [08:05] devkorcvince has joined the channel [08:07] CIA-77: node: 03Ryan Dahl 07master * r776754c 10/ (4 files in 2 dirs): Remove process._byteLength - http://bit.ly/bZYjNz [08:09] herbySk: ryah: did I manage to prove you wrong (relating nextTick speed penalty, you wanted me to)? [08:10] DoNaLd`: all: exist somewhere this ircbot application for annoucing commits from GIT repo ? [08:10] gbot2: DoNaLd`: spidermonkey: Error: SyntaxError: missing ; before statement: exist somewhere this ircbot application for annoucing commits from GIT repo ? ......^ [08:10] DoNaLd`: exist somewhere this ircbot application for annoucing commits from GIT repo ? [08:10] ryah: herbySk: sure [08:10] ryah: herbySk: but in email - i ned to sleep now [08:11] ryah: DoNaLd`: yes, the channel is filled with bots [08:11] ryah: as you can see [08:11] herbySk: ryah: ok :-) [08:11] DoNaLd`: ryah: so where are sources of this bot ? :) [08:12] mjr_: ryah: so it looks like the breakeven point is about 18 bytes for buffer.copy() [08:13] Tim_Smart: DoNaLd`: There are multiple ways to make a IRC bot. [08:13] devkorcvince: help connecting Appcelerator Titanium TCPSocket on socket.io-node [08:13] DoNaLd`: Tim_Smart: i need only one :) [08:13] Tim_Smart: mjr_: Patch :) if (length < 20) return copy_with_js(); [08:14] mjr_: That sounds insane, but I think it would work. [08:14] jellymonster has joined the channel [08:15] mjr_: Oh wait, that's the cheating way byte assigning a Number value. If you do a byte by byte copy, then you break even at around 11 bytes [08:16] herbySk: Tim_Smart: node could even (lazily, not to touch startup speed) test both possibilities and adjust the threshold :-) [08:16] smcq has joined the channel [08:19] smcq has joined the channel [08:20] _announcer: Twitter: "@jlozinski will have to give rails another look. Currently investigating node.js. Very nifty." -- Nick Payne. http://twitter.com/makeusabrew/status/24741081829 [08:20] Tim_Smart: DoNaLd`: http://github.com/gf3/Jerk http://github.com/Tim-Smart/node-ircbot-framework etc [08:22] Tim_Smart: mjr_: Have you benched against other redis libs yet? [08:22] mjr_: Tim_Smart: I haven't, but I'm planning on doing that soon. [08:22] mjr_: It'd be interesting to see the difference. [08:23] Tim_Smart: mjr_: Ah cool. I will be working on a ORM soon with a redis backend. Haven't decided on a redis library yet, and I'll go with whatever is fastest. [08:24] mjr_: Tim_Smart, ryah: http://github.com/mranney/node_redis/blob/master/buffer_bench.js [08:24] killfill has joined the channel [08:24] gf3 has joined the channel [08:25] mischief has left the channel [08:25] mjr_: So my parser grinds through the data a byte at a time. I thought that would be pretty fast, but I think the cost of accessing a single byte is significant. [08:25] _announcer: Twitter: "Twitter: Learning Server-Side JavaScript with Node.js | Nettuts+: http://bit.ly/aJhBVC" -- fury. http://twitter.com/__fury/status/24741294145 [08:25] _announcer: Twitter: "Anyone's knows of an #ActiveDirectory module for #nodejs ?" -- nicoclavier. http://twitter.com/nicoclavier/status/24741300220 [08:27] mjr_: results of buffer_bench.js: http://gist.github.com/583922 [08:28] daglees has joined the channel [08:28] daglees has joined the channel [08:28] spetrea has joined the channel [08:28] smcq has joined the channel [08:28] aubergine_ has joined the channel [08:30] genbit has joined the channel [08:33] smcq has joined the channel [08:33] overra has joined the channel [08:34] _announcer: Twitter: "Spiffy new @peepcode screencast: Meet @nodejs: https://peepcode.com/products/nodejs-i" -- Ⓙohannes Ⓕahrenkrug. http://twitter.com/jfahrenkrug/status/24741661515 [08:34] ivong has joined the channel [08:34] elliottkember has joined the channel [08:35] gthb has joined the channel [08:36] JimBastard has joined the channel [08:38] saikat: just deployed a socket.io feature into production after quite a bit of dev. that feels pretty good. [08:38] smcq has joined the channel [08:41] _announcer: Twitter: "@mvalente FYI node.js is not just SSJS. It's the reactor pattern, and that's more than 3 years old" -- Pedro Teixeira. http://twitter.com/pedrogteixeira/status/24741993159 [08:43] jellymonster has joined the channel [08:44] devkorcvince: saikat, have you tried socket.io on titanium? [08:44] saikat: no, sorry [08:47] Tim_Smart: mjr_: Have you tried parsing the incoming data in C land? [08:48] mjr_: Tim_Smart: no, but I'm sure it'd be very fast [08:48] mjr_: My node code runs as fast as the included redis-benchmark [08:48] nroot7: I am trying to install npm on a fresh ec2 and its failing with "ENOENT: No such file or directory error" [08:48] mjr_: except when it gets to this large multibulk reply thing. [08:48] nroot7: I am same setup at home laptop and it works fine [08:48] mjr_: Then I get crushed by all of these small responses. [08:49] mjr_: Tim_Smart: BTW, I just figured out that Buffer.toString() on small Buffers is really slow as well. [08:49] Tim_Smart: hmm yeah. [08:49] Tim_Smart: I think calling into C++ is the culprit again. [08:49] mjr_: Tim_Smart: it's faster to make strings manually with str += String.fromCharCode(buf[i]); [08:49] mjr_: ! [08:49] mjr_: For strings 11 bytes or less [08:50] Tim_Smart: mjr_: How big are the incoming packets usually? [08:50] mjr_: Something is really hurting us in there. [08:50] MikhX has joined the channel [08:50] mjr_: The calls to parser.execute() end up being with 40KB Buffers. [08:50] freeall has joined the channel [08:50] mjr_: Which sounds ideal. [08:50] Tim_Smart: mjr_: Maybe we should profile something that makes pure c++ buffer calls. [08:51] Tim_Smart: (Try) to see where the bottleneck is. [08:51] mjr_: But I think I get crushed by all of the individual byte accesses, buffer.copy() and buffer.toString(). [08:51] mjr_: I'll try this on Linux so I can put oprofile on it. [08:51] jellymonster has joined the channel [08:51] Tim_Smart: mjr_: Yeah maybe be a little bit smarter and do chunks at a time. [08:51] jetienne has joined the channel [08:52] Nohryb has joined the channel [08:53] mjr_: Parsing the redis protocol pretty much means breaking out things into potentially tiny chunks. [08:54] mjr_: Or rather, it potentially means that for things like lrange 0 100 [08:54] _announcer: Twitter: "Understanding node.js » Debuggable Ltd: http://goo.gl/uT9V #javascript" -- saumya. http://twitter.com/saumya/status/24742547191 [08:55] mjr_: So I get a 3X speed improvement by replacing buffer.copy() with a JS copy for buffers 11 or less. [08:59] Tim_Smart: Nice. [09:00] jellymonster has joined the channel [09:00] gthb has joined the channel [09:01] tekky has joined the channel [09:01] mjr_: Yeah, something's not right here. These buffer calls shouldn't be this expensive. [09:03] mjr_: I'm within 2X of the pure C benchmark for this though after these insane optimizations, so I guess that's respectable. [09:04] devkorcvince: Is what I'm doing right? I'm using express and passing app function on multiple modules? [09:04] twilliams has joined the channel [09:05] xla has joined the channel [09:06] Tim_Smart: mjr_: http://gist.github.com/583953 [09:07] Tim_Smart: Builtin_FastHandleApiCall looks interesting... [09:07] mjr_: That profile is way more useful than the ones I get [09:07] mjr_: I wonder if those individual byte accesses with [] don't show up in a friendly way [09:08] Tim_Smart: I'm not accessing at all in that way... [09:08] mjr_: yeah, I'm wondering if that's why your profile shows reasonable info [09:08] jellymonster has joined the channel [09:09] _announcer: Twitter: "I've been bugging @sdepold but in a good way - Sequelize (MySQL ORM for #nodejs) just keeps getting better and better! http://ow.ly/2FFM4" -- Tane Piper. http://twitter.com/tanepiper/status/24743183610 [09:09] smcq has joined the channel [09:10] _announcer: Twitter: "Node.js For My Tiny Ruby Brain: Keeping Promises | techno weenie: http://bit.ly/culUBX" -- junichi_y. http://twitter.com/junysb3/status/24743235615 [09:10] Tim_Smart: mjr_: http://www.google.com/codesearch/p?hl=en#W9JxUuHYyMg/trunk/src/builtins.cc&q=FastHandleApiCall%20package:http://v8%5C.googlecode%5C.com&sa=N&cd=2&ct=rc&l=1026 [09:11] wao has joined the channel [09:11] Tim_Smart: I think that is the bottleneck. [09:13] mjr_: Tim_Smart: I gotta get to bed like 2 hours ago. [09:13] jetienne: for any streamie forkers, we just created a mailling list http://groups.google.com/group/streamie [09:13] jetienne: Tim_Smart: you are involved in node-twitter no ? what about this oauth ? :) [09:13] Tim_Smart: mjr_: OK talk later. [09:13] Tim_Smart: jetienne: twitter-node yeah. [09:14] jetienne: Tim_Smart: and oauth ? :) [09:14] path[l] has joined the channel [09:14] Tim_Smart: technoweenie owns the repo though. [09:14] Tim_Smart: I don't have an oauth lib. [09:14] jetienne: i dont want to implement stream on by own [09:14] jetienne: Tim_Smart: i use one with success. let me find it [09:14] Tim_Smart: jetienne: Yeah I know which one I would use. [09:15] smcq has joined the channel [09:15] jetienne: Tim_Smart: so it is more about "no time ot integrate" ? [09:15] Tim_Smart: Oh, oauth for twitter-node? Yeah I got other things to do first. [09:15] jimmy203 has joined the channel [09:16] Tim_Smart: I'm looking at using this one http://github.com/ciaranj/node-oauth [09:16] jimmy203: mape nodejs.se needs a bump [09:17] _announcer: Twitter: "@mvalente SSJS + great API + implementation for non-blocking calls + using the reactor pattern = node.js" -- Pedro Teixeira. http://twitter.com/pedrogteixeira/status/24743557844 [09:18] _announcer: Twitter: "@ponnappa Well ehat I heard also is that Sprout has changed a log.So have you tried Node.js or ExtJS ??" -- Arjun Ghosh. http://twitter.com/arjunghosh/status/24743588663 [09:19] jetienne: Tim_Smart: it is the one i use [09:19] _announcer: Twitter: "and node.js also as cheerful as it turns)" [ru] -- Jintwo. http://twitter.com/Jintwo/status/24743639037 [09:21] DoNaLd`: Tim_Smart: do ou can send me link to some functional irc bot announcer for git repos ? [09:21] Tim_Smart: Not sure I know of one, DoNaLd` [09:21] Tim_Smart: Github has their own IRC bot from memory. [09:22] Tim_Smart: This channels uses CIA [09:22] jetienne: DoNaLd`: this is in the admin event [09:22] Tim_Smart: s/channels/channel/ [09:23] jetienne: DoNaLd`: google "github notification irc" you will find it [09:25] DoNaLd`: of course, I asked the google .. also .. but I have not found anything useable [09:26] _announcer: Twitter: "node.js reverse proxy in writing - diaries alcohol Hatena branch http://htn.to/6m7BVi" [ja] -- Kurain. http://twitter.com/kurain/status/24743955123 [09:26] Tim_Smart: DoNaLd`: http://support.github.com/discussions/issues-issues/80-setting-up-cia-with-github [09:27] Tim_Smart: http://cia.vc/ [09:28] jellymonster has joined the channel [09:29] jetienne: is cia better than github on this ? [09:30] adambeynon has joined the channel [09:31] devkorcvince has joined the channel [09:31] Tim_Smart: jetienne: Not too sure. Github bot maybe better, but I have never used it. [09:31] jetienne: Tim_Smart: ok [09:33] _announcer: Twitter: "Ajaxian » pushState + node.js on the Server Side http://tinyurl.com/39c3eba" -- Daijiro SUENAGA. http://twitter.com/dsuenaga/status/24744241837 [09:33] Tim_Smart: DoNaLd`: http://ubuntuone.com/p/GQ5/ <--- Under 'Admin' settings for each repository. [09:33] rnewson has joined the channel [09:34] DoNaLd`: Tim_Smart: wow [09:36] gthb has joined the channel [09:37] smcq has joined the channel [09:38] rauchg_ has joined the channel [09:40] isaacs has joined the channel [09:41] _announcer: Twitter: "Still waiting for a Node.js beta invite from @heroku :(" -- Alistair Holt. http://twitter.com/alistairholt/status/24744619486 [09:42] Throlkim has joined the channel [09:42] bsstoner has joined the channel [09:43] jellymonster has joined the channel [09:48] omarkj has joined the channel [09:49] aliem has joined the channel [09:49] _announcer: Twitter: "node.js is blowing my mind right now. Grokking functional concurrency and relating it to ancient Greek conceptions of eternity even more so." -- Benjamin Goering. http://twitter.com/bengo/status/24744969347 [09:50] blaines has joined the channel [09:51] _announcer: Twitter: "During break time peeps node.js Innovation Miyo had heard about # nodejs" [ja] -- マツカワトモヒロ(SE). http://twitter.com/tomo_matsukawa/status/24745037095 [09:51] _announcer: Twitter: "@arjunghosh I didn't understand the context in which you asked about node.js (I havent done more than 'Hello World' with it) Please clarify?" -- Sidu Ponnappa. http://twitter.com/ponnappa/status/24745057372 [09:53] devkorcvince has joined the channel [09:54] devkorcvince: /msg NickServ identify google-work [09:55] jetienne: :) spoted in squatting [09:59] devkorcvince: I cant make it work :( using Titanium TCPSocket on socket.io-node :( [10:00] _announcer: Twitter: "Well hello Node.js WebOS is like a farewell JavaVM http://d.hatena.ne.jp/vwxyz/20100910/1284121010 # nodejsjp" [ja] -- マツカワトモヒロ(SE). http://twitter.com/tomo_matsukawa/status/24745478611 [10:03] _announcer: Twitter: "Finally I've a reason(project) to use Google V8 + Node.js." -- Nuno Mariz. http://twitter.com/nmariz/status/24745581839 [10:04] harryv has joined the channel [10:04] stagas has joined the channel [10:05] _announcer: Twitter: "Exiting, I'm going to turn on real time user following through with #node.js and http://speedo.no.de/ online in about 2 hours" -- Arnout Kazemier. http://twitter.com/3rdEden/status/24745687105 [10:08] altamic has joined the channel [10:09] V1 has joined the channel [10:13] jellymonster has joined the channel [10:14] bsstoner has left the channel [10:15] _announcer: Twitter: "Have been procrastinating on oauth with node.js. Time to tackle it." -- Alex Dong. http://twitter.com/alexdong/status/24746131365 [10:16] _announcer: Twitter: "Ok, solved my Heisenbug -> blog post: #nodejs - Dealing with uncaught exceptions: http://bit.ly/8YcAfJ" -- Felix Geisendörfer. http://twitter.com/felixge/status/24746175877 [10:20] _announcer: Twitter: "How come there aren't any node.js ebooks out there? #nodejs" -- Ashutosh Nilkanth. http://twitter.com/VoidMonk/status/24746380020 [10:21] smcq has joined the channel [10:21] MrNibblesFreenod has joined the channel [10:21] _announcer: Twitter: "@ VoidMonk nodejs ebook "mastering node" http://visionmedia.github.com/masteringnode/" [pl] -- Jerome Etienne. http://twitter.com/jerome_etienne/status/24746436118 [10:25] gf3 has joined the channel [10:26] up has left the channel [10:28] smcq has joined the channel [10:28] _announcer: Twitter: "soda, a selenium wrapper for node.js http://github.com/LearnBoost/soda" -- Richard Layte. http://twitter.com/codeToNowhere/status/24746758544 [10:28] SingAlong: node says there's no configure method in Express [10:30] jellymonster has joined the channel [10:30] TobiasFar has joined the channel [10:35] allengeorge has joined the channel [10:37] ooooPsss has joined the channel [10:40] SingAlong: does joyent still allow signups on no.de? [10:40] adambeynon has joined the channel [10:42] smcq has joined the channel [10:46] omarkj_ has joined the channel [10:47] smcq has joined the channel [10:47] stagas has joined the channel [10:48] voxpelli: SingAlong: did they ever? wasn't it just open for the nodeknockout competition? [10:49] SingAlong: voxpelli: just noticed someone saying in announcer bot that he updated his site. (subdomain at no.de) [10:49] SingAlong: which is why i got excited and asked about it :) [10:49] Gruni has joined the channel [10:49] jetienne: likely a nodeko contestant [10:49] voxpelli: SingAlong: think it's one of the nodeknockout apps :) [10:50] SingAlong: sendFile isnt defined in express.js? it says no when I use res.sendFile() [10:50] SingAlong: having a hard time using express. been trying to serve static files for a looong time. [10:54] omarkj: Has anyone tried out SmartPlatform? [10:55] V1: no.de is basically the smartPlatform right [10:57] omarkj: Hmkay. [10:57] omarkj: Loads of buzz because of it now, was wondering. [10:58] shimondoodkin has joined the channel [10:58] fermion has joined the channel [10:59] herbySk has joined the channel [11:00] digitalsanctum has joined the channel [11:02] shimondoodkin: http://github.com/shimondoodkin/node-inflow [11:02] smcq has joined the channel [11:03] shimondoodkin: any ideas / feedback? [11:04] jetienne: shimondoodkin: feedback: i read the README and i have no idea what it does [11:05] jetienne: shimondoodkin: you could improve the description by making it more clear maybe, btw you have no single line description [11:05] jetienne: ACTION is trying to use github pull requests... but im no good [11:05] gf3 has joined the channel [11:07] shimondoodkin: jetienne: i'll add a decription line [11:07] mheld has joined the channel [11:07] smcq has joined the channel [11:10] _announcer: Twitter: "Buffer Node.js seems Strings in Erlang: list of integers. Protip # # fikdik" [pt] -- gleicon. http://twitter.com/gleicon/status/24748795172 [11:10] sideshowcoder has joined the channel [11:11] zorzar has joined the channel [11:14] jellymonster has joined the channel [11:15] shimondoodkin: A next generation async control-flow library, with a shared object for called functions and debugging made easy. [11:17] shimondoodkin: jetienne:waht are you trying to do? [11:18] shimondoodkin: jetienne:what are you trying to do? [11:18] jetienne: shimondoodkin: feedback: make simple description. not used car saleman speech :) [11:19] shimondoodkin: am i such used car saleman ? :) LOL [11:19] shimondoodkin: :D [11:20] wakawaka has joined the channel [11:21] shimondoodkin: iam learning marketing for long time , it just flows from me unintentionly [11:22] jetienne: shimondoodkin: so you know the usual reaction from the audience. "this msg is clearly not straigh-forward... the emiter may try to hide something.. dont trust him" :) [11:23] jetienne: your audience is coders, rational to the point people. take it into account:) [11:25] jetienne: github pull needs to be planned [11:25] jetienne: practice [11:27] shimondoodkin: jetienne:ahh about your pull thing: i think you do first: git remote add NAME_OF_ACCOUNT http://git_url then you do: git pull NAME_OF_ACCOUNT then you do: git merge NAME_OF_ACCOUNT/master [11:29] jetienne: shimondoodkin: in my case this is more about pull request. i modified a project... and did like 3 distincts modifications... without a pull request... i am not sure how to orginize the pull requests [11:30] jetienne: maybe i should complete each of the modification and then worry for the pull requests... and be better at orginisation later [11:30] shimondoodkin: jetienne: 1st backup the project folder and try [11:31] ivanfi has joined the channel [11:31] jetienne: good advice :) i already remvoed modification by messing up with git [11:31] _announcer: Twitter: "@garrytan thoughts on Node.js? present and future." -- Paul Pereira. http://twitter.com/paulith/status/24749931609 [11:34] stagas: shimondoodkin: too many chains is a bit hard to read [11:34] daglees__ has joined the channel [11:34] daglees__ has joined the channel [11:38] shimondoodkin: stagas: what do you mean please [11:38] shimondoodkin: i think the problem in the descritpion of my project is titels of paragrtaphs [11:38] stagas: app.libs.inflow.flow or this.shared.res.writeHead [11:39] okuryu has joined the channel [11:40] stagas: that's what I mean [11:40] shimondoodkin: any idea how to do it better? [11:40] shimondoodkin: http://piratepad.net/SCnNJhjL1j [11:41] stagas: I like the idea though [11:41] shimondoodkin: jetienne: thanks [11:41] shimondoodkin: stagas: thanks [11:42] _announcer: Twitter: "Fedora: Lubomir Rintel: Node.js submitted for Fedora: http-parser - HTTP request/response parser for C libei... http://bit.ly/92gMu2" -- Zuissi. http://twitter.com/zuissi/status/24750518373 [11:42] stagas: with would be handy here :) [11:43] _announcer: Twitter: "Just wrote an introduction blog about node-build a build tool for #nodejs http://ow.ly/2FIHx , #nodebuild" -- rslijp. http://twitter.com/rslijp/status/24750597150 [11:43] stagas: would this work? with this.shared res.writeHead(..), res.end() [11:43] trochala has joined the channel [11:44] shimondoodkin: yes sure [11:44] shimondoodkin: i am not sure if it is a good convetion to spread [11:45] stagas: fab uses it [11:45] shimondoodkin: ok [11:47] abiraja has joined the channel [11:51] nerdEd has joined the channel [11:51] mtodd has joined the channel [11:54] hellp has joined the channel [11:56] christophsturm has joined the channel [11:58] aliem has joined the channel [11:59] jetienne: streamie plugins make it nice but hard to understand [12:00] shimondoodkin: jetienne: is it for me? [12:00] jetienne: nope :) this is a rant against myself :) [12:00] jetienne: im trying to reprocess an already processed tweet... and this is clearly not written for that in a first place. [12:00] shimondoodkin: why cinical we are human here... :) [12:01] jetienne: so i need to understand the original intention with the normal bugs+lack of docs and then to modify it :) [12:01] jetienne: yep [12:02] jetienne: im stuck on this for more than 10h [12:03] devkorcvince has joined the channel [12:04] kuatto has joined the channel [12:08] MattJ has joined the channel [12:09] nerdEd has joined the channel [12:10] Anti-X has joined the channel [12:16] delapouite has joined the channel [12:17] gthb has joined the channel [12:19] ooooPsss: when you do "npm install soda", where does it install soda? [12:20] wao: /usr/local/bin ? [12:20] wao: or, soda is module? [12:20] digitalspaghetti: /usr/local/libs/.node/libs or somewhere like that [12:21] larsvegas has joined the channel [12:21] digitalspaghetti: yea, /usr/local/lib/node/ [12:22] ooooPsss: ok [12:22] ooooPsss: but if you want to run the example, you have to clone the code [12:22] stride has joined the channel [12:22] ooooPsss: or you can do that with the npm installation? [12:22] digitalspaghetti: well, you can just take out any ../ [12:22] digitalspaghetti: just to soda = require('soda') [12:22] sonnym has joined the channel [12:23] digitalspaghetti: instead of soad = require('../path/to/lib') [12:23] ooooPsss: ok, ty [12:24] stagas: full source is downloaded at /usr/local/lib/node/.npm///package [12:24] stagas: examples and everything [12:24] mikew3c_ has joined the channel [12:25] stagas: the packages in /usr/local/lib/node are index.js files that link to the lib [12:25] ooooPsss: ok, nice! [12:26] ooooPsss: the soda article got so many points on HN [12:26] ooooPsss: node.js is on fire there [12:26] c4milo has joined the channel [12:30] _announcer: Twitter: "SodaJS, functional web testing in NodeJS - http://bit.ly/bkf0wT" -- Bin-Blog. http://twitter.com/BinBlog/status/24753479592 [12:31] stagas: this is cool [12:32] stagas: someone should write a catch all actions when a user visits your page, and export soda code so you can play it back [12:34] kaichen has joined the channel [12:37] spetrea: is forEach implemented in node.js ? [12:37] spetrea: how about reduce/map/filter ? [12:37] stagas: yeap all of these [12:37] digitalspaghetti: forEach yes [12:38] spetrea: is there some popular functional code library if this stuff is not in core ? [12:38] digitalspaghetti: didn't know about m/r/f [12:38] spetrea: stagas: I cannot see it in the node.js/docs/api.html .. :( [12:38] tahu has joined the channel [12:38] digitalspaghetti: spetrea: the docs aren't fully up to date, but they are there :) [12:39] d0k has joined the channel [12:40] spetrea: digitalspaghetti: maybe there's some docs in some other place describing this stuff ? [12:40] spetrea: or is this like CommonJS ? [12:40] tav has joined the channel [12:40] eazyigz has joined the channel [12:41] trotter has joined the channel [12:41] digitalspaghetti: not sure, i remember seeing a wiki page somewhere with some stuff not documented [12:41] digitalspaghetti: like .isArray [12:41] matschaffer has joined the channel [12:43] stagas: http://github.com/ry/node/wiki/ECMA-5-Mozilla-Features-Implemented-in-V8 [12:44] digitalspaghetti: thats the one [12:44] _announcer: Twitter: "Ecma 5 mozilla features implemented in v8 - #nodejs http://ow.ly/2FKlp" -- Tane Piper. http://twitter.com/tanepiper/status/24754425452 [12:44] digitalspaghetti: tweeted it :) [12:45] nornagon has joined the channel [12:45] V1: overra: Thanks for the feedback so far :) [12:45] nornagon: I'm implementing a server for a protocol which has unterminated packets [12:46] V1: overra: There are still a few bugs here and there. For example, i lost the mouse cursor on my own site :9 [12:46] nornagon: e.g. | packet type | strlen 1 | str 1 | strlen 2 | str 2 | [12:46] nornagon: but sometimes read() only returns half a packet [12:46] overra: V1: yeah i wasn't able to follow myself from page to page, it breaks on the first try [12:47] crohr has joined the channel [12:47] nornagon: i want to write functions that look vaguely like: function parsePacket() { var id = stream.readByte(); var str1 = stream.readString(); var str2 = stream.readString(); ... } [12:47] nornagon: and have it 'block' whenever it runs out of data [12:47] nornagon: is there already a library which does this sort of thing? [12:48] rnewson has joined the channel [12:49] singalong has joined the channel [12:50] hassox has joined the channel [12:50] overra: V1: I'm happy to help in any way :) i had thought about something like this years ago, glad to see someone working on it [12:50] singalong: can someone point me to a nice doc/post on writing documentation for javascript? [12:50] _announcer: Twitter: "Server-side JavaScript http://nodejs.org/" -- George Dumitrescu. http://twitter.com/geodro/status/24754830720 [12:50] singalong: overra: what app is the talk about? [12:51] overra: V1: have you thought about a mobile version? [12:51] devkorcvince has joined the channel [12:51] overra: singalong: http://speedo.no.de [12:51] singalong: overra: ah i did check that one earlier today. awesome to see live heat maps :D [12:52] singalong: i can already see lots of uses for that [12:52] jetienne: overra: favicon initplugins: clean up + use of overa picture (no more canvas) http://github.com/jeromeetienne/streamie/commit/e198c3063708bcc7aa3a6531b2d73a79f8be8fb6 [12:53] singalong: can someone point me to a nice doc/post on writing documentation for javascript? [12:53] jetienne: overra: for streamie irc, i think sqatting here may be cool. i know express people are doing it too [12:53] jetienne: overra: what do you think ? [12:54] overra: jetienne: rather than #streamieorg ? [12:55] jetienne: overra: yep. mainly because streamie community is not large right now, and because doing it here raise attention to the project. which is part in nodejs [12:55] V1: overra: mobile (touch) is definitely something that I'm going to support soon [12:55] jetienne: overra: cramforce doesnt care as he isnt much of a irc user [12:56] overra: jetienne: fine with me, i don't like being in a lot of rooms [12:56] V1: overra: It depends on the connection speed, if you get a update of the new page. But it should be "synced" when a new event is received on the server [12:56] jetienne: ok deal then [12:58] _announcer: Twitter: "jsgi seems like a better long-term platform compared to connect http://tinyurl.com/398c2ke <- jsgi/connect benchmarks #nodejs" -- Justin Marney. http://twitter.com/vigemarn/status/24755363961 [12:58] overra: V1: when i followed myself, sometimes the cursor wouldn't show, but it would show the circles when i clicked. anytime i navigated to another page, the follower would go to the page, but the bar disappears and stops functioning [13:00] _announcer: Twitter: "using irc and interested in @streamieorg ? come talk with us in #node.js on freenode, we like @streamieorg too :)" -- Jerome Etienne. http://twitter.com/jerome_etienne/status/24755525248 [13:01] ntelford has joined the channel [13:03] V1: overra: That is indeed a bug, does you browser accept cookies? [13:03] V1: overra: As for the cursor bug, I have no clue why that is happening :! [13:03] V1: I have been trying to solve that for a while now but no clue [13:04] overra: V1: it better [13:04] overra: lol [13:04] V1: What browser where you using btw? [13:04] overra: chrome osx [13:04] V1: hmz, same [13:04] overra: 6.0.472.59 [13:04] V1: Thanks anyways, will do moar digging [13:04] V1: 7.0.528.0 (59769) [13:05] V1: Will check out the "regular" version than :P [13:05] pgriess has joined the channel [13:05] overra: let me check it out on my nightly [13:06] overra: V1: btw by auto-scroll to the top, i mean, after entering the konami code, you've scrolled down a little, would be nice to either avoid scrolling down during the konami code process or automatically scroll back to the top [13:07] overra: i'm super lazy and don't like scroll [13:07] V1: overra: It's rather hard to check IF users are typing a konami code. [13:07] ooooPsss: is there a rubygems.org for node? [13:07] V1: And if you are lazy you are going to like: http://speedo.no.de/#speedoRealtimeLogin [13:08] V1: instant hash login :) [13:08] overra: V1: good point, so a nice 500ms or less sliding upwards motion would be nice [13:08] overra: :o [13:08] ooooPsss: V1: are you going to lunch that as a paid service? [13:09] overra: mmm lunch [13:09] V1: ooooPsss: At this point, no, because my hosting is free :p [13:09] ooooPsss: sorry, launch [13:09] ysinopsys has joined the channel [13:09] overra: sorry ooooPsss :) [13:09] ooooPsss: np ;) [13:09] _announcer: Twitter: "@jfahrenkrug New peepcode on node.js is great, watched it last week" -- paulcrawford. http://twitter.com/paulcrawford/status/24756190404 [13:09] V1: but probably at some point in time I might need to do so, just to pay the server costs [13:09] V1: but i wanted it to be a free alternative to some existing solutions [13:10] ooooPsss: ok! you're hosting on no.de from joyent [13:10] overra: the url is so short, it's almost hidden heh [13:11] V1: ooooPsss: yeah [13:11] V1: also overra The konami code is configurable, so you can just change it to double esc key or double space or what ever you want :) [13:13] webr3 has joined the channel [13:13] ntelford has joined the channel [13:13] overra: V1: ah, i've just been testing it out. didn't even look for that [13:14] V1: overra: It's not documented yet :9 I just pushed the whole chabang live documentation will come when its up and running rock solid [13:15] badboy_ has joined the channel [13:16] ooooPsss: guys, tell me something, there isn't anything wrong if I compare "rubygem" with "npm" ? [13:16] V1: nope [13:16] matjas has joined the channel [13:16] jashkenas has joined the channel [13:17] V1: gems are just modules or packages just like the modules in npm [13:17] overra: V1: awesome. will there be an authorized access option to prevent any user from using it? [13:17] ooooPsss: and rubygems.org are the creators of "gems" [13:17] jashkenas: bradleymeck: around? [13:17] V1: overra: In the "dashboard" you can restrict usage to IP addresses [13:17] overra: nice [13:18] kriszyp has joined the channel [13:19] davidsklar has joined the channel [13:20] abiraja has joined the channel [13:20] ehaas has joined the channel [13:21] ben_alman has joined the channel [13:23] spetrea: stagas: thanks ! [13:23] _announcer: Twitter: "Recently, node.js using the web framework, but it seems that coming out, WSGI, and like the Rack web server I / F's not necessary? You think. I wish I were there." [ja] -- kazuya kawaguchi. http://twitter.com/kazu_pon/status/24757218048 [13:23] digitalspaghetti: @nodemodules on twitter is influenced by @rubygems :) [13:24] jherdman has joined the channel [13:26] singalong has joined the channel [13:29] nerdEd has joined the channel [13:30] mikew3c_ has joined the channel [13:31] digitalsanctum has joined the channel [13:35] emmanueloga has joined the channel [13:35] noahcampbell has joined the channel [13:39] jellymonster has joined the channel [13:42] dnolen has joined the channel [13:44] spetrea: I just added myself to Node.js users list in the wiki [13:44] spetrea: I thinks this is quite a great achievement [13:44] spetrea: I've never seen in any opensource project this before(except for consultants list/mailing list for some other stuff) [13:45] ooooPsss: link? [13:46] trotter has joined the channel [13:46] spetrea: http://github.com/ry/node/wiki/Node-Users [13:48] abiraja has joined the channel [13:51] _announcer: Twitter: "Just pushed and deployed the first jQuery Address sample that runs on node.js and express: http://bit.ly/9WRbBB" -- Asual. http://twitter.com/asual/status/24759460836 [13:51] stiang has joined the channel [13:52] Akufen has joined the channel [13:52] Akufen has joined the channel [13:52] softdrink has joined the channel [13:55] nefD: woohoo! added myself to the users list.. im famous! [13:55] stiang: i've tried putting a http.createClient().request() inside a try/catch block to gracefully fail when the server is down, but the entire program still fails with an ECONNREFUSED error. how can i handle this in my program instead? [13:56] spetrea: nefD: you sure are :) [13:57] maushu has joined the channel [13:59] harryv: so I have some callback that returns chunks of data as buffer. I need to append each chunk to the previous so I get the full response at some point. right now I'm just buffering them in a string, and making a new buffer from that string at the end. any better solutions? [13:59] digitalspaghetti: harryv: not that i know, but i;d be interested to find out if there is [13:59] matt_c has joined the channel [14:01] malkomalko has joined the channel [14:04] _announcer: Twitter: "jsTerm: ANSI-capable telnet terminal built. Tech: HTML5, Javascript, Websocket, and Node.js http://bit.ly/dj2CrK Code http://bit.ly/dylM2o" -- henrikbennetsen. http://twitter.com/henrikbennetsen/status/24760530182 [14:06] mdg has joined the channel [14:07] malkomalko: Trying to deal with a legacy postgres database... any suggestions on the best sql/postgres libraries out there? [14:07] mdg: malkomalko: what do you mean legacy [14:08] malkomalko: just forget I said that word :D [14:08] malkomalko: just looking for opinions on any postgres drivers to work with node basically [14:08] mdg: I think the de facto one is ..... [14:09] wink_: ryah's [14:09] mdg: yea find link fail <--- [14:10] malkomalko: this little guy right here? http://github.com/ry/node_postgres [14:10] wink_: http://github.com/ry/node_postgres.git [14:10] _announcer: Twitter: "Link: Selenium RC client for node.js: Soda is a Selenium RC client for Node.js, enabling developers to write automat... http://sodajs.com/" -- J-P Stacey. http://twitter.com/jpstacey/status/24761008993 [14:10] wink_: that'd be the one [14:10] wink_: but dont worry about that little guy [14:12] jakehow has joined the channel [14:13] _announcer: Twitter: "HTML5 Canvas + WebSocket + Node.js recent and Telnet "jsTerm" the source of the github. http://ow.ly/2FNPQ" [ja] -- koichik. http://twitter.com/koichik/status/24761311317 [14:14] TomY has joined the channel [14:14] jashkenas has left the channel [14:14] jetienne has joined the channel [14:15] wattz: gewd morn [14:16] TobiasFar has joined the channel [14:17] karboh has joined the channel [14:18] romanb_ has joined the channel [14:18] devongovett has joined the channel [14:18] davidwalsh has joined the channel [14:19] _announcer: Twitter: "ーー to (*^^*) QT @ koichik: HTML5 Canvas + WebSocket + Node.js recent and Telnet "jsTerm" the source of the github. http://ow.ly/2FNPQ" [ja] -- 亜希. http://twitter.com/akiaki_/status/24761760614 [14:20] LFabien has joined the channel [14:20] _announcer: Twitter: "hmm, npm for node.js'es installer appears to have broken some time in the past few hours" -- Jason Gill. http://twitter.com/iota/status/24761880393 [14:20] matjas has joined the channel [14:21] mauriez has left the channel [14:21] wavded has joined the channel [14:24] LowValueTarget has joined the channel [14:24] siculars has joined the channel [14:24] singalong has joined the channel [14:26] maushu: npm broke? Again? [14:26] maushu: Someone grab the torches and pitchforks. [14:27] matjas_ has joined the channel [14:29] robinduckett has joined the channel [14:29] robinduckett: isaacs: around? [14:32] _announcer: Twitter: "Na is also passionate node.js stone. How do I install I, have not ..." [ja] -- altnight. http://twitter.com/altnight/status/24762860867 [14:33] V1 has joined the channel [14:35] maushu: Most people are at work or sleeping. [14:35] maushu: Ann never sleeps. [14:36] robinduckett: Ann? [14:36] bradleymeck: jashkenas: pong [14:36] maushu: As announcer's creator I decided that from now on announcer shall be called Ann and be female. [14:36] V1: Sleep is for the weak [14:36] V1: Is ann hot? [14:37] maushu: I have no idea. [14:37] TomY has joined the channel [14:37] V1: :( [14:37] maushu: What the heck. Ann is now hot. [14:37] matt_c has joined the channel [14:37] maushu: Woah, this super power is amazing. [14:38] maushu: No wonder god has so much fun. [14:38] robinduckett: haha [14:39] robinduckett: Can I vote that Ann be a redhead with a slightly scottish accent? [14:39] robinduckett: maushu: this might interest you [14:39] maushu: Sure. What the hell. [14:39] robinduckett: http://github.com/haxd/scriptable-node-irc-bot [14:40] maushu: She also has two sisters. They are triplets. [14:40] robinduckett: identical triplets [14:41] maushu: Yup. [14:41] maushu: I wonder... [14:41] Ann has joined the channel [14:42] maushu: Drat. It's already registered. [14:42] leitgebj has joined the channel [14:43] daniellindsley has joined the channel [14:44] robinduckett: what? [14:44] iotaion9 has joined the channel [14:45] pengwynn has joined the channel [14:46] Yuffster has joined the channel [14:46] iotaion9: hello noders... is anyone else having problems installing npm today? i installed it in multiple places yesterday without issue, but today when I try to "make install" (even with code cloned from github, and also with the install.sh), I'm getting an error: ENOENT, No such file or directory '/home/gillno5/lib/node/.npm/.cache/npm/0.2.0/package.tgz' [14:47] iotaion9: saw that someone else reported the issue on github in last few hours and wondering if npm install is just broken for (most) everyone [14:47] harryv: can anybody tell me how to install http://github.com/ncb000gt/merlin ? [14:48] evanpro has joined the channel [14:54] shockie: npm install merlin? [14:55] harryv: not in registry :) [14:55] harryv: I'm trying to figure out that wscript. [14:55] dnolen has joined the channel [14:55] gigabo has joined the channel [14:57] gf3 has joined the channel [14:57] _announcer: Twitter: "A node.js Developers have?" [ru] -- timopheym. http://twitter.com/timopheym/status/24765049923 [15:00] shockie: harryv: waf configure build [15:00] leitgebj has joined the channel [15:01] _announcer: Twitter: "NodeJS for package management "npm ":... http://bit.ly/bAHOeJ - MOONGIFT" [ja] -- Takapyonuoʎdɐʞɐʇ. http://twitter.com/Takapyon/status/24765400945 [15:02] iotaion9: has anyone been able to install npm today successfully? [15:02] harryv: shockie: thanks. [15:02] ivong has joined the channel [15:02] _announcer: Twitter: "NodeJS for package management "npm": npm JavaScript open-source software is made. Server-side JavaScript is becoming an attractive choice in NodeJS. Whether this kind of popular this framework frameworks ... http://bit.ly/bEYTSQ" [ja] -- pon7. http://twitter.com/Pon7/status/24765485413 [15:02] _announcer: Twitter: "RSS: NodeJS for package management "npm": npm a JavaScript-party open source software. Server-side JavaScript is becoming an attractive choice in NodeJS. Whether this kind of popular this framework ... http://bit.ly/av3TKd" [ja] -- Toshifumi Kanamaru. http://twitter.com/Canamal/status/24765485468 [15:02] tj has joined the channel [15:04] matt_c has joined the channel [15:05] Me1000 has joined the channel [15:06] _announcer: Twitter: "NodeJS for package management "npm" - MOONGIFT - http://bit.ly/ajYIbQ" [ja] -- arnote_news. http://twitter.com/arnoteNews/status/24765790611 [15:06] HAITI has joined the channel [15:06] markwubben has joined the channel [15:07] gigabo: Newbie question: My httpd request handler gets called twice for every browser page load. What is the purpose of the second callback? [15:07] _announcer: Twitter: "[IT] NodeJS package manager for "npm" http://dlvr.it/5QkZ6" [ja] -- 書記ちゃん. http://twitter.com/roland_808/status/24765893614 [15:07] loinclot_ has joined the channel [15:07] jtsnow has joined the channel [15:07] robinduckett: giabo: sure it's not favicon.ico being called? :P [15:07] _announcer: Twitter: "Time to see what all the hype is about, snagged the node.js screencast from @peepcode" -- Patrick Muldoon. http://twitter.com/d00n/status/24765934341 [15:07] nefD: hehe yeah, the favicon request confused be for a good half hour or so when i was setting up my first express app :P [15:08] aheckmann has joined the channel [15:08] tjholowaychuk: there is a favicon() middleware now [15:08] tjholowaychuk: defaults to connect's little weird logo thing, or you can supply a path [15:08] robinduckett: tjholowaychuk: i have forseen the death of node.js [15:08] gigabo: robinduckett: Ah, that must be it. Thanks :) [15:08] tjholowaychuk: but if you put that above logger() it wont be in the log output which is sometimes kinda nice [15:08] tjholowaychuk: at least for dev [15:09] robinduckett: tjholowaychuk: and it comes in the form of a specific favicon middleware. [15:09] tjholowaychuk: robinduckett: haha :p [15:09] robinduckett: lol [15:11] _announcer: Twitter: "http://bit.ly/cmrlmp (proposed #js std for #method_missing) implemented for @nodejs -> http://github.com/brickysam26/node-proxy #sweet" -- Hagen Overdick. http://twitter.com/sixtus42/status/24766290761 [15:12] _announcer: Twitter: "Telnet terminal built using HTML5 Canvas/WebSocket/Node.js http://dlvr.it/5Ql2n" -- Tech & Friki Stuff. http://twitter.com/FrikiFeeds/status/24766320161 [15:12] jakehow has joined the channel [15:17] larsvegas has joined the channel [15:18] gsmcwhirter has joined the channel [15:19] Nohryb has joined the channel [15:20] marshall_law has joined the channel [15:21] Eber has joined the channel [15:23] dantalizing_ has joined the channel [15:23] dantalizing_ has joined the channel [15:23] dgathright has joined the channel [15:24] altamic has joined the channel [15:26] steadicat has joined the channel [15:27] bradleymeck: !tweet @sixtus42 proxies can be used for many things, but they cannot fully emulate method_missing in v8 currently, due to lack of knowing if it is an invocation of a property, it can only test if the property returned already exists and provide a method missing function [15:27] Ori_P has joined the channel [15:29] femtoo has joined the channel [15:29] ncb000gt has joined the channel [15:29] ivanfi has left the channel [15:30] tahu has joined the channel [15:30] dicon has joined the channel [15:30] benburkert has joined the channel [15:31] noahcampbell has joined the channel [15:31] marshall_law_ has joined the channel [15:33] matjas has joined the channel [15:33] singalong has joined the channel [15:34] _announcer: Twitter: "Package Management "NodeJS for package management" npm "- MOONGIFT" http://is.gd/ffc1y" [ja] -- azu. http://twitter.com/azu_re/status/24768237348 [15:35] tahu1 has joined the channel [15:35] _announcer: Twitter: "@albertonaranjo that's done using CrazyEgg, Reinvigorate or roll your own with Node.js :)" -- Fabio. http://twitter.com/toxinide/status/24768335553 [15:36] EyePulp has joined the channel [15:36] prettyrobots has joined the channel [15:38] _announcer: Twitter: "looks like the cat is out of the bag. Yahoo! is preparing to relaunch email. I've used it and it is FAST. Lots of #node.js & #accessibility" -- ted_drake. http://twitter.com/ted_drake/status/24768574871 [15:39] sixtus42 has joined the channel [15:39] matschaffer has joined the channel [15:39] viktors: ACTION is watching node.js screencast from peepcode - nice! [15:40] _announcer: Twitter: "@McJeff Does server-side Javascript count as "new language"? If so, Node.js is a fun thing." -- Calvin Spealman. http://twitter.com/ironfroggy/status/24768741127 [15:40] dmcquay has joined the channel [15:41] evanpro has joined the channel [15:42] sixtus42: bradleymeck: regarding method_missing, what do you mean by "lack of knowing if it is an invocation of a property" ? [15:42] bradleymeck: i mean if i do o.x() , i cant know x is being executed when it is retrieved [15:42] sixtus42: bradleymeck: besides, I don't want to implement method_missing, I just tried to squeeze a hint into 140 chars [15:42] wereHamster: npm build is complaining: arg[0] directory does not contain a wscript file, even though the directory contains the wscript file [15:43] wereHamster: I'm using 'npm build /path/to/directory/with/wscript' [15:43] sixtus42: bradleymeck: so? you can return a closure which calls the correct parameters on method_missing, if you decide to execute it [15:43] mheld has joined the channel [15:44] bradleymeck: but what if x is really an object? [15:44] sixtus42: bradleymeck: well, the proxy should have have a reference to the obj it is proxying, i.e. the handler is already a closure [15:45] maushu: wereHamster: It's possible that it is looking for the wscript file in the cwd. For some reason. [15:45] bradleymeck: yep, but o.x() if o.x generates {foo:"bar"} wont hit method missing [15:45] bradleymeck: cause you dont know its about to be invoked [15:45] harryv: anybody used merlin= [15:45] _announcer: Twitter: "My bitchin' new LAMP stack: Smart OS, Hiawatha, Firebird, Node.js and Geddy. QUESTION AUTHORITY" -- Josh Gibbs. http://twitter.com/eponym/status/24769199657 [15:46] sixtus42: bradleymeck: but ask me in a week or so, I am just exploring new ways to do DSLs in JS to making async access APIs look nice [15:46] bradleymeck: k [15:46] creationix has joined the channel [15:46] dicon has joined the channel [15:46] bradleymeck: i made node-overload so im pretty interested if you can make it work [15:46] wereHamster: maushu: I'm inside the directory alreayd [15:47] tjholowaychuk: if we had the proxy stuff it would be easy to do what soda does [15:47] tjholowaychuk: all over [15:47] tjholowaychuk: without being costly [15:47] bradleymeck: yea [15:47] daniellindsley has joined the channel [15:48] tjholowaychuk: which would be nice IMO. I like having the choice to handle any possible exception in the same manor with a single callback [15:48] tjholowaychuk: which is what I normally need anyways [15:51] sixtus42: bradleymeck: have to take a closer look. But I parsed your point about Proxy -> it's property-missing, not method-missing, so yes, you are right. [15:52] sixtus42: bradleymeck: node-overload is basically your API on top of Proxy? [15:53] bradleymeck: nope, it is a separate proxy implementation and other things [15:54] _announcer: Twitter: "Node.js and scaling in the small vs scaling in the large al3x.net/2010/07/27/node.html" -- David Daniel Hofmann. http://twitter.com/hofmanndavid/status/24769950054 [15:54] bradleymeck: it needs some cleanup though, havent touched it in a while [15:54] daglees has joined the channel [15:56] CrabDude has joined the channel [15:59] daniellindsley has left the channel [15:59] _announcer: Twitter: "@hanssonlarsson You can just drop hashlib, and call crypto directly: http://nodejs.org/api.html#crypto-240" -- Tane Piper. http://twitter.com/tanepiper/status/24770418356 [15:59] pengwynn has joined the channel [15:59] sixtus42: bradleymeck: EphemeronTable is cool, although I would have groked it much faster if you call it a WeakHashMap ;-) [16:00] bradleymeck: WeakMap is in there [16:00] away01 has joined the channel [16:00] bradleymeck: its not exactly a weakmap per ecma ppl so its gonna stay called that [16:01] lakin has joined the channel [16:02] digitalspaghetti: oh? Yahoo! is using node.js in Yahoo mail? [16:02] bradleymeck: yep [16:03] pengwynn_ has joined the channel [16:03] sudoer has joined the channel [16:04] silentrob has joined the channel [16:06] sixtus42: bradleymeck: I wasn't even aware that ecma is working on weakmap ;-) [16:06] bradleymeck: yep, we tend to argue about it a lot [16:06] maushu: http://code.google.com/p/xee/source/browse/trunk/XeePhotoshopLoader.m?spec=svn28&r=11#107 [16:08] bradleymeck: maushu <3 it, and same is true for all adobe stuff XD [16:09] maushu: I can include OpenXML there. [16:09] maushu: I've seen hell and its name is OpenXML. [16:10] _announcer: Twitter: "@carlodemarchis Playing with #nodejs on one #EC2 server and 21599 simulated users through #websockets for #realtime #web (we're under a sec)" -- Diego Caravana. http://twitter.com/dcaravana/status/24771325896 [16:10] Nohryb has joined the channel [16:11] maushu: Sweet! Chrome 7 will have webgl turned on by default! [16:11] jpld has joined the channel [16:13] stephank` has joined the channel [16:13] delapouite has joined the channel [16:13] gerred has joined the channel [16:15] bradleymeck: nice [16:15] ben_alman has joined the channel [16:16] boaz has joined the channel [16:16] benburkert has joined the channel [16:18] mheld has left the channel [16:19] hukash has joined the channel [16:20] qFox has joined the channel [16:21] galaxywatcher has joined the channel [16:25] ajpiano has joined the channel [16:29] kaichen has joined the channel [16:30] jbenesch has joined the channel [16:30] jashkenas has joined the channel [16:31] bpot has joined the channel [16:31] figital has joined the channel [16:31] _announcer: Twitter: "[B!] MOONGIFT: »v8 engine in JavaScript Web Server" node.js ": Daily Open Source Information http://www.moongift.jp/2009/11/node_js/" [ja] -- Takeshi Yabe. http://twitter.com/tyabe/status/24773151154 [16:33] _announcer: Twitter: "[B!] MOONGIFT: »node.js Web frameworks like Sinatra with" Express ": Introduction to Open Source Daily http://www.moongift.jp/2010/02/express/" [ja] -- Takeshi Yabe. http://twitter.com/tyabe/status/24773266707 [16:33] _announcer: Twitter: "[B!] MOONGIFT: NodeJS for package management "npm" Open Source Software / Free Software Daily Information http://www.moongift.jp/2010/09/npm/" [ja] -- Takeshi Yabe. http://twitter.com/tyabe/status/24773304087 [16:34] dgathright has joined the channel [16:36] delapouite has joined the channel [16:37] _announcer: Twitter: "Articles http://howtonode.org/ node.js super interesting, and that I am novatísimo." [es] -- Albert Llop. http://twitter.com/mrsimo/status/24773615352 [16:40] ncb000gt: harryv: hey, just saw your issues. I'll take a look at them as soon as I can tho I don't have a mac so hopefully either Polotek or thegreatape can have a look. I'll mention it to them least. Also, per usual, if you do fix it before I get to it, patches are welcome. :) [16:40] singalong has joined the channel [16:41] harryv: ncb000gt: cool. I don't have any c++-fu, but I'm trying some various options. [16:43] harryv: merlin looks good otherwise. [16:43] TooTallNate has joined the channel [16:44] prettyrobots has joined the channel [16:45] nolan_d has joined the channel [16:45] freeformz has joined the channel [16:47] mjr_ has joined the channel [16:47] harryv: ncb000gt: what version of graphicsmagick are you using? [16:48] _announcer: Twitter: "@buzzedword How well do you understand node.js /scoping rules for javascript? I have an 11 line test case I don't understand." -- uberbrady. http://twitter.com/uberbrady/status/24774544891 [16:49] ncb000gt: harryv: 1.3.5 I didnt' use the GM-config because on my home machine it didn't exist heh [16:49] ncb000gt: harryv: but it seems to be here on my laptop so I'll go ahead and make that change and then just use a one off for my home machine (or fix the problem on my home machine) [16:50] bradleymeck: !tweet @uberbrady (variables scope and closure sections) http://nodejsbot.blogspot.com/2010/09/javascript-primer.html [16:51] ncb000gt: harryv: that said, I've been using all of the pieces in an test app we built when doing nodeknockout. I'll probably bring that over to merlin. [16:52] hayeah has joined the channel [16:52] ncb000gt: we didn't have any segfaults with the lib, but i have been the only user/porter since moving from IM to GM. [16:52] nerdEd has joined the channel [16:54] _CrabDude has joined the channel [17:01] onar_ has joined the channel [17:02] benburkert has joined the channel [17:02] _announcer: Twitter: "... Functional Python or Node.js. :)" [ru] -- resurtm. http://twitter.com/resurtm/status/24775669117 [17:03] devongovett has joined the channel [17:04] softdrink has joined the channel [17:05] singalong: woot! i finally wrote my first web framework (ah its very lightweight and n00b) [17:05] khug has joined the channel [17:05] khug has left the channel [17:06] Eber: singalong: share it with us [17:07] singalong: Eber: one sec. i'll put up a gist. i was about to push it to github repo [17:08] singalong: Eber: http://gist.github.com/584558 has a sample server and the module file too. [17:09] softdrink has joined the channel [17:09] matjas has joined the channel [17:09] jakehow has joined the channel [17:09] heycarsten has joined the channel [17:09] Eber: singalong: cool :) I'll check it out! [17:09] tjholowaychu has joined the channel [17:10] singalong: Eber: it's too n00by. so please do correct me if I'm wrong or if anything can be done better. (i dont think the method to detect regex-based paths is right) [17:10] prettyrobots: Off topic. [17:10] prettyrobots: I got a job offer through GitHub. [17:10] prettyrobots: So, I updated my profile to make myself less desirable. [17:10] prettyrobots: But, where do they show this stupid bio? [17:10] Eber: singalong: I'm also a real noob :P But I'll let you know if I have any suggestions :) [17:11] prettyrobots: http://github.com/bigeasy [17:11] prettyrobots: Oh, there is #github. I'll go ask there. [17:13] malkomalko has joined the channel [17:14] jesusabdullah: You got a job offer? How is that bad? [17:14] altamic_ has joined the channel [17:15] trotter has joined the channel [17:15] Eber: singalong: It looks really cool :) Congrats ;) [17:16] fermion has joined the channel [17:16] singalong: Eber: thanks! :) [17:16] onar__ has joined the channel [17:16] cognominal: is there a jquery lib purged from the clien specific suff? [17:16] singalong: took 6hrs. Worth the experience [17:17] singalong: cognominal: most of it is client specific except a few helpers like each(). [17:17] rwaldron has joined the channel [17:17] singalong: cognominal: I've been wanting to do it myself for sometime. those prototypes come handy. [17:17] c4milo: prettyrobots: I'm unemployed [17:17] c4milo: :) [17:17] sprout has joined the channel [17:18] cognominal: singalong, indeed I was thinking of iterators like each [17:18] c4milo: prettyrobots: forward the offering to me :P [17:18] singalong: c4milo: :) [17:18] singalong: cognominal: I'll do it this weekend for sure. Or atleast write my own helpers that are similar to jquery [17:18] dmcquay has joined the channel [17:19] prettyrobots: c4milo: Oh, but the offer has a legal threat at the bottom that said I was supposed to keep this email safely gaurded on behalf of the sender. [17:19] prettyrobots: So, of course, I must comply. [17:19] cognominal: singalong, keep me posted. I am too new to (serious) javascript to do it myself [17:19] prettyrobots: jesusabdullah: I get a lot of penis enlargement pill offers too. How are those bad? [17:19] c4milo: prettyrobots: ok, forward my contact info github.com/c4milo :P [17:20] jesusabdullah: Sounds pretty awesome to me! I could always use a large penis ;) [17:20] singalong: cognominal: i'm suddenly in love with javascript. Amateur tho. learnt a few handy tricks in the past few weeks. [17:20] jesusabdullah: s/large/larger/ [17:20] aliem_ has joined the channel [17:20] prettyrobots: jesusabdullah: I'll forward the offers to you. There are a lot. It would probably easiest to just mail you a hard drive. [17:21] _announcer: Twitter: "NodeJS presented at Google's — http://goo.gl/FADH — a bit slow, but interesting nevertheless" -- François Pinard. http://twitter.com/icule/status/24777095415 [17:21] pengwynn has joined the channel [17:23] _announcer: Twitter: "Really looking forward to the #nodejs 'EventSource' branch http://github.com/ry/node/tree/eventsource ... 'throw arguments[1];' is painful" -- Nodejitsu. http://twitter.com/nodejitsu/status/24777277438 [17:23] prettyrobots: c4milo: I'm kidding. [17:23] _announcer: Twitter: "Interesting tip: developing JavaScript outside the browser, using the console in Terminal Node.js ~ http://bit.ly/de2ho2" [pt] -- levycarneiro. http://twitter.com/levycarneiro/status/24777293129 [17:23] prettyrobots: I mean, I don't care about corporate email disclaimers. [17:23] c4milo: prettyrobots: I know :) [17:23] jesusabdullah: prettyrobots: Haha :D [17:23] prettyrobots: Okay. [17:23] prettyrobots: Whew. [17:24] carsten has joined the channel [17:24] prettyrobots: I sent this back to them... [17:24] mattly has joined the channel [17:24] brianmario has joined the channel [17:24] prettyrobots: http://blogometer.com/post/rules-of-engagement/ [17:25] jesusabdullah: Maybe not knowing ruby/rails is a GOOD thing for me [17:25] dmcquay has joined the channel [17:25] prettyrobots: I don't know why recuiters put me in such a bad mood. [17:25] malkomalko: has anyone used ry's postgres package before? It seems like I can't get anything working if I try to connect to a database with a username/password [17:25] prettyrobots: Maybe it is the thought of leaving New Orleans for North Carolina. [17:25] mjr_: tjholowaychu: pretty amazing difference in speed on that redis test, eh? [17:25] _announcer: Twitter: "Running a bit late this morning. Too bad too, I'm looking forward to work today. Analytics in #nodejs!" -- Daniel Erickson. http://twitter.com/TechWraith/status/24777464944 [17:25] prettyrobots: Oh, and CoffeeScript is amazing. [17:26] tjholowaychu: mjr_: yeah wow, great job really clean implementation too [17:26] jesusabdullah: Out of the fire and into the frying pan, huh prettyrobots? [17:26] jesusabdullah: Or maybe [17:26] jesusabdullah: out of the toilet and into the shower drain [17:26] jesusabdullah: :S [17:26] mjr_: tjholowaychu: I think I just made it even a little faster since last night for small responses. [17:26] tjholowaychu: mjr_: just releasing 0.1.0 of connect-redis, wicked stuff [17:26] mjr_: tjholowaychu: large responses are still not as fast as I'd like. [17:26] prettyrobots: You did not just say that about New Orleans? [17:27] mjr_: tjholowaychu: But I'm faster than redis-benchmark for a number of things. :) [17:27] jesusabdullah: >:O [17:27] tjholowaychu: I only benched set "foo" + n "bar" [17:27] tjholowaychu: but hey [17:27] jesusabdullah: I have to admit, I've never been [17:27] jesusabdullah: but it doesn't sound like my kinda town [17:27] prettyrobots: This will be noted on your permanent record. [17:27] tjholowaychu: mjr_: nice :D [17:27] jesusabdullah: I think I might be a Yankee :( [17:27] _announcer: Twitter: "connect-redis 0.1.0 released! it is now backed by Matt Ranney's node_redis client - http://bit.ly/aRi8yH #nodejs" -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/24777625775 [17:28] mjr_: boom [17:28] ryah: exciting :) [17:28] tjholowaychu: bam [17:29] tjholowaychu: redis is the sex of protocols [17:29] prettyrobots: mjr_: What is faster than redis? [17:29] mjr_: tjholowaychu: I want to get some better performance numbers, but I just can't get fictorial's working on recent nodes. [17:29] ryah: tjholowaychu: hm - not sure what that means, but okay :) [17:29] tjholowaychu: haha :D [17:29] jesusabdullah: Oh God, just scared myself D: Thought I missed an appointment! <_> [17:29] dmcquay has joined the channel [17:30] mjr_: prettyrobots: the sound of one hand clapping? [17:30] webr3: anybody stuck redis on a box with hyperio cards yet btw? should give effectively 500GB+ 'as fast as ram' redis dbs [17:30] webr3: wrong room! [17:31] prettyrobots: mjr_: You said: But I'm faster than redis-benchmark for a number of things. [17:31] mjr_: heh [17:31] jesusabdullah: hyperio? [17:31] prettyrobots: I'm wondering what that's about. [17:31] mjr_: yeah, it's something about the way that test works vs the way my test works. [17:31] jesusabdullah: That sounds pretty sweet webr3 [17:31] jesusabdullah: vroom vroom! [17:31] mjr_: The included redis-benchmark launches 50 connections in parallel, but then doesn't pipeline requests [17:31] mjr_: Mine just has one connection, and pipelines all 10,000 of them. [17:32] webr3: ACTION gets link - maybe i typod [17:32] loinclo__ has joined the channel [17:32] webr3: DOH! [17:32] webr3: fusion-io [17:32] webr3: http://www.amazon.com/Fusion-io-ioXtreme-80GB/dp/B002S6CRGY/ref=wl_it_dp_o?ie=UTF8&coliid=IG3BG2BHIRXCI&colid=2NZ1Z45V2H42V [17:33] mjr_: And on small responses, my node-based lib is faster than the C one, but probably because it's more efficient for node to handle larger reads from a single socket than to multiplex. [17:33] webr3: Read speeds of over 700 MB/s and Write speeds of up to 280 MB/s (much faster than ssd) basically flashmemory on a pci-express card [17:33] benburkert has joined the channel [17:33] Eber: tjholowaychu: hey, you are from vision media, aren't you? [17:33] mjr_: But on more complex responses, the C one is quite a bit faster because they can scan through their bucket of bytes more efficiently than I can with the Buffer interface. [17:34] tjholowaychu: Eber: thats my github account name yeah, the "company" has not really existed for a long time lol [17:34] webr3: ACTION ooohs at: http://www.amazon.com/Fusion-320GB-ioXtreme-Fusion-io/dp/B003YAR0GU/ref=sr_1_3?s=electronics&ie=UTF8&qid=1284744825&sr=1-3 [17:34] dshaw has joined the channel [17:34] evilhackerdude: has anyone used riak-js for anything? [17:35] hukash has joined the channel [17:35] dshaw: tjholowaychu: I'm curious why you chose to back Connect Redis with node_redis and not rapid? [17:36] tjholowaychu: dshaw: oh I will [17:36] aubergine has joined the channel [17:36] tjholowaychu: just need some time [17:36] tjholowaychu: havent been able to touch rapid for a while [17:36] dshaw: cool [17:36] mikeal has joined the channel [17:36] Eber: tjholowaychu: ow, right... I thought I saw some kind of magazine someone named vision[something] was selling... I wish I could find it again... It's not you by any changes, is it? [17:37] tjholowaychu: Eber: yeah. one sec [17:37] tjholowaychu: Eber: http://www.dev-mag.com/2010/02/18/advanced-javascript/ [17:37] Eber: tjholowaychu: YES :) Cool... I'll buy it ;) Thanks! [17:37] pengwynn_ has joined the channel [17:37] tjholowaychu: cheers! [17:38] LFabien has joined the channel [17:38] LFabien has left the channel [17:38] technoweenie has joined the channel [17:38] bmavity has joined the channel [17:38] LFabien has joined the channel [17:39] malkomalko: hmm [17:39] Viriix has joined the channel [17:40] Eber: tjholowaychu: what exactly do I use to read tgz file formats? [17:40] tjholowaychu: Eber: its a tarball containing everything [17:40] Eber: tjholowaychu: oh! [17:41] c4milo has joined the channel [17:41] sh1mmer has joined the channel [17:41] Eber: tjholowaychu: done! thanks man ;) [17:42] tjholowaychu: np [17:42] MikhX has joined the channel [17:42] jamesvuong has joined the channel [17:44] jamesvuong has left the channel [17:47] dsboulder has joined the channel [17:47] dsboulder has left the channel [17:48] hellp has joined the channel [17:49] silentrob has joined the channel [17:51] noahcampbell has joined the channel [17:52] visnup has joined the channel [17:52] ehaas has joined the channel [17:52] onar_ has joined the channel [17:53] vnguyen has joined the channel [17:54] CIA-77: node: 03Ryan Dahl 07eventsource * r53406cd 10/ (lib/fs.js src/node_stat_watcher.cc src/node_stat_watcher.h): StatWatcher to use EventSource (+7 more commits...) - http://bit.ly/dijhFI [17:56] Mikeee has joined the channel [17:57] Mikeee: g'evening [17:58] qFox has joined the channel [17:58] snowinferno has joined the channel [17:58] isaacs: oh, man, 6eca948 broke npm for everyone. [17:59] dshaw: yikes [17:59] Mikeee: I'm trying to work out how to make remote shared objects on my node server, where the server creates a basic object and clients can subscribe to it [17:59] Mikeee: but it only sends out properties that have changed on the updates [18:00] sudoer has joined the channel [18:00] Mikeee: cant think of a clever way to do it :/ [18:00] V1 has joined the channel [18:00] _announcer: Twitter: "2011: Async tracing. # Node.js" [pl] -- Joe McCann. http://twitter.com/joemccann/status/24779982128 [18:01] Mikeee: properties changing is fine, but if the object had, say, an array in it [18:01] Mikeee: i dont want to send out the entire array every time it changes :/ [18:01] Mikeee: maybe I need a SharedArray object too [18:01] Mikeee: ugh [18:02] steadicat has joined the channel [18:03] snowinferno: What kind of information does console.log output? I read some information from a file and tried to console.log it and got something that looked like < 62 ... 0a >. When i used sys.puts with the same informatino it gave me the text that was actually in the file [18:03] lakin has joined the channel [18:03] Nietecht has joined the channel [18:03] beawesomeinstead: hi [18:03] beawesomeinstead: 2+2=? [18:03] Nietecht: 4? [18:03] Mikeee: 7 [18:03] jesusabdullah: snowinferno: If it's not a string, it'll show a shorthand representation of the data. It looks like it's a buffer [18:04] jesusabdullah: snowinferno: sys.puts is probably doing a string conversion [18:04] langworthy has joined the channel [18:04] jesusabdullah: by buffer I think I mean stream [18:04] jesusabdullah: ANYWAY [18:04] snowinferno: jesusabdullah: and the 62...0a are the hex representations of the characters? [18:04] jesusabdullah: Or, hex representations of the memory address or some bs [18:04] jakehow has joined the channel [18:04] jesusabdullah: Can you gist what you're doing? [18:05] _announcer: Twitter: "we are hiring! rails + mongodb + node.js. http://sharethrough.com/careers/ #gogaruco #sharethrough" -- George. http://twitter.com/georgeblazer/status/24780324546 [18:05] snowinferno: jesusabdullah: experimenting :) was looking at trying to make a web server like app in js and it was one of my first attempts at a file read with Node [18:05] jesusabdullah: How do you mash rails and node together, anyway? [18:06] jesusabdullah: I guess my thinking, snowinferno, is that I never really had to do any conversions with file reading [18:06] snowinferno: jesusabdullah: i just wanted to see what node was getting back from the file read and thought console.log would be the way to do it [18:06] jesusabdullah: console.log(sys.inspect(x)) [18:07] jesusabdullah: Try that [18:07] jesusabdullah: :D [18:07] evilhackerdude: maybe set the right encoding first? [18:07] Mikeee: http://www.youtube.com/watch?v=0bomkgXeDkE <-- aha awesome. [18:08] jesusabdullah: I know for me, though, fs.readFile(filename, function (err, data) { console.log(data); }); has done well enough for me in the past [18:08] jesusabdullah: I actually json'd the data, but, u noe [18:08] snowinferno: jesusabdullah: thats pertty much exactly what i did [18:08] jesusabdullah: *shrug* [18:08] jesusabdullah: huh [18:08] _announcer: Twitter: "Progressive Enhancement in pure JavaScript http://is.gd/ffnXu #yui3 #nodejs @davglass" -- Christian Heilmann. http://twitter.com/codepo8/status/24780562389 [18:08] jesusabdullah: snowinferno: try data.toString('utf-8') [18:09] jesusabdullah: I had to explicitly do that conversion in another context [18:09] jesusabdullah: with a readable stream [18:09] snowinferno: jesusabdullah: I'll give it a try :) right now i'm just working within node itself instead of writing script files for node to execute [18:09] evilhackerdude: Mikeee: i like node.js [18:09] jesusabdullah: Oh nelly [18:09] jesusabdullah: I'd do that, except that the repl quits if you hit an error [18:09] evilhackerdude: evilhackerdude: i'm a 25 years subscriber to socket.io [18:10] loinclot_ has joined the channel [18:10] jesusabdullah: whereas most good interactive environments error but keep running with whatever you had before the command [18:10] Mikeee: evilhackerdude: me too [18:10] evilhackerdude: ooops. [18:10] snowinferno: jesusabdullah: it's kind of annoying but i'd rather have it quit so i start off with a fresh environment than a potentially corrupt one from the error :) [18:10] evilhackerdude: Mikeee: if you do eventmachine you can hit the fastforward button because i dont do eventmachine and i dont like people who do eventmachine [18:10] jesusabdullah: I get tired of entering, var sys=require('sys'); over and over [18:10] fizx has joined the channel [18:10] jesusabdullah: So I like to write my commands in a .js file and just run that [18:10] jesusabdullah: :) [18:11] Mikeee: evilhackerdude: I like cheese too tbh [18:11] EyePulp: mmm... cheese [18:11] evilhackerdude: this video has to be stopped. [18:11] snowinferno: jesusabdullah: good point :) [18:11] jesusabdullah: Actually, the node repl is getting better n' better [18:11] jesusabdullah: When I started using it, delete didn't work [18:11] jesusabdullah: wasn't too long ago actually [18:11] jesusabdullah: maybe 2 months? [18:12] _announcer: Twitter: "I wish expressjs used jsgi instead of connect #nodejs" -- Justin Marney. http://twitter.com/vigemarn/status/24780828431 [18:13] technoweenie: jesusabdullah: we mash rails and node just fine [18:14] jesusabdullah: technoweenie: I'm not saying it's impossible or anything--I just have no concept is all [18:14] technoweenie: i dont think node is really appropriate for CMS type web shit. the frameworks are just too low level right now. let rails (or whatever) handle that boring crap, and let node do all the network servicey stuff [18:14] c4milo: technoweenie: what you mean with low level ? [18:14] jesusabdullah: I've never used rails [18:14] jesusabdullah: Don't even really know ruby [18:14] loinclot_ has joined the channel [18:15] LFabien has joined the channel [18:15] mies has joined the channel [18:15] jesusabdullah: c4milo: Have you used rails? [18:15] beawesomeinstead: hiii node [18:15] c4milo: jesusabdullah: yes [18:15] beawesomeinstead: i heart you [18:15] beawesomeinstead: c4milo, hiiii [18:15] c4milo: beawesomeinstead: ? [18:15] technoweenie: c4milo: right now, the web frameworks are more like rack or sinatra [18:15] beawesomeinstead: c4milo, i'm drunk and i want to commit [18:15] beawesomeinstead: I LIKE TO COMMIT [18:15] c4milo: beawesomeinstead: what ? [18:16] tjholowaychu: really does not want rails for node [18:16] beawesomeinstead: c4milo, WE WENT OVER THIS. EXPANDTAB. [18:16] rcy has joined the channel [18:16] jesusabdullah: haha [18:16] beawesomeinstead: hah [18:16] evilhackerdude: tjholowaychu: i think it's not going to happen. all the major commiters are trying to do something different from rails [18:16] tyfighter has joined the channel [18:16] beawesomeinstead: my coworkers got me drunk [18:16] jesusabdullah: I think it'd be okay if there was a "rails for node," but I don't think a lot of people would use it [18:16] beawesomeinstead: THIS IS THE FIRST TIME EVAH [18:17] technoweenie: evilhackerdude: geddy is a rails for node [18:17] beawesomeinstead: shit i'm even stupider than i thought [18:17] c4milo: beawesomeinstead: who are your coworkers [18:17] steadicat has joined the channel [18:17] beawesomeinstead: c4milo, they are rails devs [18:17] beawesomeinstead: so am i [18:17] c4milo: beawesomeinstead: I will kick their asses [18:17] beawesomeinstead: i do code for living [18:17] visnup: I think people would use it if it were really rails for node, meaning as complete as rails tries to be. [18:17] jesusabdullah: substack keeps talking about making a dnode-based framework. I like giving him shit by saying that it'll get billed as "the rails of node" [18:17] vnguyen has joined the channel [18:17] beawesomeinstead: SHIT YEAHTHE PARTY DOESN;t T STOP UNTILL EVERYONE'S PREGNANT [18:18] jesusabdullah: which is always funny because he hates rails [18:18] beawesomeinstead: sorry for caps [18:18] beawesomeinstead: i know it's not about nodejs [18:18] jesusabdullah: Dawg I'm not even afraid of caps [18:18] jesusabdullah: http://twitter.com/loudbot [18:18] evilhackerdude: technoweenie: point taken. wrong way imho. much rather looking forward to awesome client apps built in js which use APIs exposed by node [18:18] Eber: tjholowaychu: so how is the dev mag going for you? [18:18] jesusabdullah: this is my favorite bot ever [18:18] beawesomeinstead: i did presentation on node recently [18:18] beawesomeinstead: technoweenie, hyey dawg [18:18] beawesomeinstead: technoweenie, you rock there [18:18] techwraith has joined the channel [18:18] tjholowaychu: Eber: I havent written anymore (hense the shitty site haha), but good, I think I am around 800 sales now [18:19] jesusabdullah: Part of me thinks I should try rails out, if only so I can say I've done it [18:19] jesusabdullah: Make some kinda restful bs with it [18:19] jesusabdullah: I want a nice service for doing property lookups with [18:19] jesusabdullah: Like steam tables [18:19] technoweenie: rails is pretty rad for what it is. but if you have strong opinions about building web services you'll hate it [18:19] the_giver2 has joined the channel [18:19] techwraith: Hmmm, anyone know if there's a way to install older versions of node for testing purposes? [18:19] c4milo: specifically I don't know what can I do with rails that I can´t do with nodejs as well [18:20] Eber: tjholowaychu: awesome :) it really looks like a very valuable resource! looking forward to read it! [18:20] jesusabdullah: c4milo: I hear the structure's good because you can hand it to someone else and they'll know what's up [18:20] jesusabdullah: :v [18:20] beawesomeinstead: :-P [18:20] tjholowaychu: c4milo: you can use plugin generates to shove shit all over your app in a messy way [18:20] jesusabdullah: Anyways: g2g [18:20] evilhackerdude: technoweenie: what do you mean? [18:20] c4milo: tjholowaychu: ahah I hate code generators haha [18:20] jesusabdullah: When I get back, I expect to see discussion on how people use rails and node together [18:20] jesusabdullah: How people MARRY them [18:20] jesusabdullah: instead of which is moar betters [18:21] jesusabdullah: >:| [18:21] EyePulp: they live together in sin. [18:21] technoweenie: easy, some requests to to rails, some go to node [18:21] jesusabdullah: Indeed [18:21] jesusabdullah: but which one's on top? :v [18:21] tjholowaychuk: c4milo: oh me too. I know they were (are finished?) some sort of module system [18:21] technoweenie: nginx [18:21] tjholowaychuk: so that it is not such a clusterfuck [18:22] V1: mape: The real time following is live, still some issues and there but you can toy with it :p [18:22] technoweenie: tjholowaychuk: the opposite angle is then you have a crazy complex module system to learn [18:23] technoweenie: the rails code generation is just something to get you started. geddy has code generation. [18:23] c4milo: i g2g [18:23] technoweenie: but again, if your opinions differ from rails, you'll hate it [18:23] c4milo: In ruby there are people who abuse of metaprogramming. I don't like that [18:23] technoweenie: in js there are too [18:24] technoweenie: theres good code and bad code [18:24] c4milo: in JS it doesn't matter, the VM is fast :) [18:24] c4milo: :P [18:24] visnup: my concern is that so far I've yet to build anything too complicated in sinatra [18:24] visnup: so I worry that it'll be hard to build anything too complicated in node [18:24] visnup: as far as websites go [18:25] technoweenie: c4milo: sure... but most of the time in web requests is spent in the db, rendering templates, and serving frontend assets [18:25] technoweenie: not metaprogramming [18:26] maushu has joined the channel [18:27] c4milo: rails promotes tie the business logic with the framework, I don't like that. You should write all your business logic in modules, if you don't want rails anymore, you should be able to change the framework without rewrite your business logic0 [18:27] loinclot_: something something too much magic something something doesn't scale amirite? [18:28] technoweenie: c4milo: yea thats a good point [18:28] smcq has joined the channel [18:28] c4milo: technoweenie: I don't like active record, it hits terribly the database [18:29] c4milo: but I like ruby as language, it's beautiful [18:29] c4milo: enjoyable [18:29] technoweenie: yup [18:29] loinclot_: have you ever seen a heredoc with methods called on it [18:29] c4milo: technoweenie: are you ever use rubinius ? [18:29] Lerchmo has joined the channel [18:30] visnup: c4milo: are you ok tying business logic in with another orm? [18:30] technoweenie: c4milo: no, it wont run github because of some gems we use [18:30] _announcer: Twitter: "@ Resurtm node.js definitely good! wait a project where I could use ..." [ru] -- eudj1n. http://twitter.com/eudj1n/status/24782008503 [18:30] c4milo: visnup: ? [18:31] visnup: c4milo: I feel like you just don't like active record and to you active record = rails. in rails 3, you can do away with active record entirely and use a different orm. [18:31] technoweenie: god enough ruby talk :) [18:31] visnup: heh [18:31] c4milo: :) [18:32] evilhackerdude: so. anyone tried riak-js? [18:32] nwhite has joined the channel [18:32] c4milo: I g2g , I'll see you later to fight :P [18:32] techwraith: Agreed technoweenie (don't they have their own channel) ;) [18:32] technoweenie: well it started out as node + rails :) [18:33] Astro: is the node.js logo available as svg somewhere? [18:35] c4milo has left the channel [18:35] mape: V1: on the speedo page? [18:36] V1: mape: Everywhere [18:36] mjr_: Astro: I think Dimitry posted it a while back on the ml. [18:36] mjr_: Or maybe on twitter? Can't remember. [18:36] _announcer: Twitter: "Any Nodejs developers in south bay? Would love to meet up and do some hacking." -- Calvin Chan. http://twitter.com/calvintychan/status/24782427574 [18:37] V1: mape: just go here: http://speedo.no.de/#speedoRealtimeLogin [18:37] V1: and click the person button :p [18:37] temp01 has joined the channel [18:38] mape: V1: doesn't seem to work? [18:38] V1: That is indeed a issue some people are having :p [18:38] V1: But i can't reproduce it [18:39] V1: Did it show a message "following a new user" [18:40] techwraith: Is there a list of things that used to work in 0.1.104 but don't work in 0.2.0? [18:40] mape: yes but no actions [18:40] ajpiano has joined the channel [18:40] V1: It can be that you are acutally following "me" but that i'm not doing anythiing :p [18:41] CIA-77: node: 03Ryan Dahl 07eventsource * r2169476 10/ src/node_events.cc : comment out stack recording - http://bit.ly/9Y5xTS [18:41] CIA-77: node: 03Ryan Dahl 07v0.2 * r7bf46bc 10/ (5 files in 3 dirs): bump version to v0.2.2 (+24 more commits...) - http://bit.ly/di72eV [18:42] V1: The biggest issue I seem to have is that the cursor isn't activated on the site [18:42] V1: And of course you need to have active users on your site, or it will not work lol [18:42] _announcer: Twitter: "#nodejs v0.2.2 released http://groups.google.com/group/nodejs/browse_thread/thread/717254eac6d567e5" -- Ryan Dahl. http://twitter.com/ryah/status/24782839374 [18:43] _announcer: Twitter: "Today we published a small translation of 'how to install nodejs' in blog.nodejs.es" [es] -- Damian Suarez. http://twitter.com/Calisco/status/24782896982 [18:44] _announcer: Twitter: "Reread almost the entire blog http://nodejs.ru/, thanks to the author @ kurokikaze for interesting article." [ru] -- eudj1n. http://twitter.com/eudj1n/status/24782932772 [18:45] _announcer: Twitter: "#nodejs v0.2.2 is out. Thanks, @ryah! http://j.mp/dqibXi" -- Clay Loveless. http://twitter.com/claylo/status/24783023738 [18:46] ryah: v0.2 and master diverging rather intensely now [18:46] Astro: mjr_: wasn't able to find it in my nodejs group archive :( [18:46] Astro: ryah: nodejs.svg somewhere? [18:48] tjholowaychuk: ryah: any way you would want to expose the binaries compiled for the CI? or have some sort of build system going for those [18:48] tjholowaychuk: for things like ivy / ndistro [18:48] Eber: Will "break" work with Array.forEach() ?!? [18:48] ryah: tjholowaychuk: hm [18:48] jashkenas: Eber: nope. [18:48] ryah: tjholowaychuk: kind of good idea... [18:48] tjholowaychuk: ryah: I had been doing this http://github.com/visionmedia/nodes [18:48] mjr_: Astro: you could ask DmitryBaranovsk on twitter. [18:48] Eber: jashkenas: right... so I have to go with for () {} right? [18:48] Astro: thanks [18:49] tjholowaychuk: but its getting unwieldy [18:49] ryah: hm [18:49] Astro: mjr_: thanks [18:49] jashkenas: Eber: if you want break, yes. or return out of forEach and set a flag. [18:50] ryah: tjholowaychuk: i'll discuss with joyent's CI guy [18:50] ryah: maybe we can do something [18:50] Eber: jashkenas: uhmm, got it, I guess... [18:50] tjholowaychuk: ryah: sounds good [18:50] ryah: ACTION away [18:50] zith_: on github, can i see the diffs for all the changes between two tags? [18:51] _announcer: Twitter: "@davglass Why don't you load YUI on the client in your node.js/express.js/YUI demo? Is it just to show that it works without that?" -- Ron Derksen. http://twitter.com/ronderksen/status/24783374340 [18:51] utvara has joined the channel [18:51] technoweenie: zith_: /user/repo/compare/tag1...tag2 [18:51] technoweenie: zith_: http://github.com/ry/node/compare/v0.2.1...v0.2.2 for example [18:52] zith_: thanks a lot [18:52] tk has joined the channel [18:54] Nietecht: Is there some performance hit associated with having a lot of timeouts pending? [18:54] huyhong has joined the channel [18:54] programble has joined the channel [18:55] _announcer: Twitter: "@DmitryBaranovsk Have you got the node.js logo in vectors/SVG somewhere?" -- Astro. http://twitter.com/astro1138/status/24783667341 [18:55] sstephenson: what's the difference between master and 0.2.x? master will become 0.3? [18:56] huyhong has joined the channel [18:56] utvara: hi [18:56] smcq has joined the channel [18:57] utvara: is there a profiler for node.js [18:58] dnyy: Is there a mysql library that lets me listen for changes on a certain table or field? [18:59] smcq has joined the channel [19:00] rauchg_ has joined the channel [19:01] _announcer: Twitter: "@ Renatoelias I'm racking my brains enough, these days, to do TDD with NodeJS ... is an interesting challenge ... :-)" [pt] -- diogobaeder. http://twitter.com/diogobaeder/status/24784004181 [19:01] eazyigz has joined the channel [19:02] pquerna: utvara: there are several projects making one [19:03] pquerna: utvara: for example, http://github.com/bnoordhuis/node-profiler [19:03] franksvalli has joined the channel [19:03] jetienne has joined the channel [19:03] tj has joined the channel [19:04] pquerna: (and there is some stuff built into v8) [19:05] Nohryb has joined the channel [19:05] captain_morgan has joined the channel [19:07] Me1000 has joined the channel [19:07] stiang: i am trying to gracefully handle connection refused by wrapping a http.createClient.request() in a try/catch block, but the entire program still bombs with ECONNREFUSED if the server is down. any ideas how i can handle this in my program? [19:08] ehaas has joined the channel [19:10] evilhackerdude: stiang: register an error handler with the client? [19:11] smcq has joined the channel [19:11] stiang: evilhackerdude: doh! that worked. thank you! [19:12] _announcer: Twitter: "Anyone willing to put me up in SanFran for the http://disrupt.techcrunch.com/2010-sf/ Hackathon? Better yet, wanna team up? #nodejs" -- Adam Crabtree. http://twitter.com/CrabDude/status/24784747470 [19:12] evilhackerdude: afaik whenever any eventemitter emits error without there being any handler... well. instagib! [19:12] _announcer: Twitter: "Got node.js 0.2.2 up and running quickly on Cygwin: http://yfrog.com/evqfzp" -- Matthew Podwysocki. http://twitter.com/mattpodwysocki/status/24784764465 [19:12] evilhackerdude: matthew: get a mac! [19:13] _CrabDude: Just out of curiosity, any node people planning on attending Techcrunch Disrupt Hackathon? [19:13] evilhackerdude: technoweenie: what's the OS ratio at github? [19:13] stiang: right, i actually knew that, i just didn't connect the dots [19:13] chewbranca has joined the channel [19:13] technoweenie: evilhackerdude: oss to private projects? [19:14] aho has joined the channel [19:14] evilhackerdude: technoweenie: oh, like, mac vs others [19:14] Adora has joined the channel [19:14] evilhackerdude: though the other ratio would be interesting, too [19:15] utvara: pquerna: I have looked at it, this is what it sais: If all you want is wholesale profiling, you don't need it. Simply start node with profiling enabled: node --prof application.js [19:15] zemanel has joined the channel [19:15] utvara: does this mean that there is built in profiling? [19:15] technoweenie: evilhackerdude: oh, overwhelmingly high oss ratio, not many private projects have 100s of forks [19:15] blaines has joined the channel [19:16] pquerna: utvara: yes, thats the built in v8 profiling [19:16] technoweenie: 45 / 33 / 17 : windows / mac / linux [19:16] technoweenie: evilhackerdude: ^ [19:17] mu-hannibal has joined the channel [19:17] tekky has joined the channel [19:17] prettyrobots has joined the channel [19:17] evilhackerdude: technoweenie: interesting. thanks [19:18] bradleymeck: Nietecht yes, but it is a complex topic [19:19] tk has joined the channel [19:21] Nietecht: The example I saw opted to have an array of requests and set an interval (1s) to loop over them and compare the timestamp to determine whether they had to be closed. My first guess would've been to just a timeout for each request. That would've been a bad idea then? [19:22] huyhong has joined the channel [19:22] smcq has joined the channel [19:22] nefD: multiplayer browser based acrophobia nearing completion..! [19:23] bradleymeck: nietecht, depends on numbers if you are doing something like 10k connections you would se some performance lost most likely, but for anything less i doubt it would really register vs machine noise [19:23] evilhackerdude: does it involve lasers? [19:23] utvara has left the channel [19:24] Nietecht: bradleymeck, 10k seems a bit high for my purposes, guess I won't worry about it then. Thanks. [19:28] smcq has joined the channel [19:29] matschaffer has joined the channel [19:30] jakehow has joined the channel [19:30] ivong has joined the channel [19:31] matt_c__ has joined the channel [19:33] megana has joined the channel [19:33] bradleymeck: is there a generic i18n module around? [19:33] megana: Hi Node! Can I make a node app run as a windows service? [19:33] steadicat has joined the channel [19:34] bradleymeck: doubt it since we dont have direct access to win32 api [19:34] huyhong has left the channel [19:35] bradleymeck: could do some c++ magic though, or if there is a way to change a currently running process into one [19:35] megana: ugh [19:35] megana: can it even run under windows? [19:35] aurynn: why would you want to run it on windows? [19:36] megana: because that's what Aetna uses [19:37] bradleymeck: cygwin can let node run under windows, there is some problems with fd passing i think though [19:37] creationix has joined the channel [19:37] megana: I just need to write a little program that lets files be uploaded and stored on a server, but if I have to use cygwin then it's not really worth it :( [19:37] megana: I will just stick with Microsoft bloat.Net [19:38] bradleymeck: yea, no one here has that in depth windows knowledge, I would learn it if i had time, but alas [19:38] megana: just imagine a bowl of spaghetti [19:38] aurynn: megana, sounds like Aetna could sponsor someone to get win32 api hooks in [19:38] bradleymeck: i would jump onto that if i could get paid, but me not knowing win32 to begin with would be a downer [19:39] megana: aurynn nodejs wasn't a requirement, I just wanted to use it for this little task :P [19:39] aurynn: Still :) [19:39] megana: yeah, those cheap whores [19:39] megana: they still use IE6 [19:40] bradleymeck: ooo does that mean they will go to a webpage using ActiveX.wscript.exec("...") // been too long dont remember the code [19:41] megana: more like [19:42] megana: for(i in document.write) { document.write(i); } [19:42] path[l] has joined the channel [19:42] bradleymeck: ACTION shudders [19:42] path[l] has joined the channel [19:43] megana: IE9 doesn't work with jquery's drag and drop plugin [19:43] megana: I don't know why [19:43] megana: but sometimes I think microsoft is in their own world when they make UI design, the thing is hideous [19:44] evilhackerdude: didn't they remove all the bars? [19:44] megana: the address bar is in the same place as the tabs [19:44] megana: it's faster than IE8, but I still feel like I should brace myself every time I create a new tab [19:44] evilhackerdude: that's MS, saving whitespace while sacrificing their firstborns [19:45] aurynn: IE9: Because being compatible doesn't make sense. [19:45] megana: also there's no button to quickly close a tab from what I can tell [19:45] evilhackerdude: why don't you just ask the paperclip to help you? [19:45] megana: but it does border-radius atleast :) [19:45] megana: I might have to [19:45] megana: or Bob [19:46] evilhackerdude: or bing -> sam -> songsmith [19:46] evilhackerdude: haha. seeing an awesome mashup on the horzion [19:46] megana: lol [19:46] megana: I don't like that word... [19:46] megana: bing [19:46] megana: it's creepy [19:47] evilhackerdude: "bing" for "ie9 sucks", run it through sam and let songsmith do the rest [19:47] megana: some how IE9 beta screwed up gtalk [19:47] jetienne: what is the name of the upload/transcode startup in nodejs ? [19:47] megana: and why does a browser install need to restart my computer? o_O [19:48] deepthawtz has joined the channel [19:48] evilhackerdude: debuggable? [19:48] wattz: this has been a very long week [19:48] evilhackerdude: http://debuggable.com/ [19:49] bradleymeck: oh ie9 is the most compatible browser out there, so much so in fact it has 16 modes of compatibility (sadly this is not a joke last i checked)! [19:50] jetienne: :) [19:50] bradleymeck: wont your front end designers love being able to work with such a compatible system? [19:50] bradleymeck: ie7 display rules with ie9 JScript! woot! [19:51] mape: Hmm anyone poked at doing HTTP adaptive video streaming with node? [19:51] bradleymeck: jetienne transloadit? [19:51] megana: Microsoft deserves to die for IE [19:52] jetienne: bradleymeck: excelent! thanks [19:52] jetienne: mape: what do you mean by adaptative ? [19:52] mape: jetienne: adaptive bitrate [19:53] mape: Streaming like the one Apple used on their latest keynote [19:53] mape: http://en.wikipedia.org/wiki/HTTP_Live_Streaming [19:53] jetienne: mape: so about video encoding... why node would care ? i mean this is about video encoding, not about http delivery (so the node part) ? what am i missing ? [19:54] mape: HTTP Live Streaming is an HTTP-based media streaming communications protocol implemented by Apple Inc. as part of their QuickTime X and iPhone software systems. It works by breaking the overall stream into a sequence of small HTTP-based file downloads, each download loading one short chunk of an overall potentially unbounded transport stream. [19:54] jetienne: mape: hehe :) i did a p2p http live video streaming, i got basic knowledge about the underlying tech [19:54] jetienne: ah ok this one [19:55] jetienne: mape: i never tried this one but it seems all in the client and not in the server, no ? [19:55] jetienne: from a server pov, it is only multiple http static file to deliver [19:55] mape: The the server has to take care of the playlist and serving the chunks` [19:55] mape: *? [19:56] mape: I wouldn't know, just wondered if someone had poked at it so I could use it [19:56] jetienne: mape: clearly on the server side, you need to split an actual http stream into small chunk of video files [19:57] jetienne: mape: the concept has been invented to avoid the "special protocole to get live stream" [19:57] mjr_: I haven't seen that Apple HTTP Live Streaming thing before [19:57] mape: Worked pretty well [19:57] mape: Great quality [19:57] mjr_: But I do a lot of "adaptive HTTP streaming" in node for work. [19:57] jetienne: "split the stream in small http static file" is a low hanging fruit. you wont get live stream with it [19:57] jetienne: but you can get < 1min latency [19:58] fizx has joined the channel [19:58] jetienne: but not < 5sec latency [19:58] utvara has joined the channel [19:58] jetienne: (sorry im a live video guy i got requirement :) [19:58] digitalspaghetti: oh shit, i look away for 1 HOUR! And you go do a new release [19:58] evilhackerdude: mjr_: apple's http live streaming? [19:58] overra has joined the channel [19:58] utvara has left the channel [19:58] evilhackerdude: oh, sorry, just read two messages up [19:58] fizx has joined the channel [19:58] mape: jetienne: so it is pretty much semi live? Playing 1min chunks from a dynamic playlist that updates all the time? [19:59] evilhackerdude: mjr_: our nodeko project could get arbitrary video via http and push that through ffmpeg while generating segments and a playlist file for apple's http live streaming [19:59] mjr_: My HTTP voice streaming thing has pretty tiny latency. This Apple thing is trying to solve a slightly different problem. [19:59] evilhackerdude: worked on my ipad with 720p input [19:59] mjr_: evilhackerdude: awesome [19:59] evilhackerdude: indeed [19:59] c4milo has joined the channel [20:00] mape: evilhackerdude: it does or could? [20:00] evilhackerdude: mape: joyent machine was too slow for encoding :) [20:00] evilhackerdude: so we went for something different [20:00] evilhackerdude: i can extract the code and put it on github if anyone's interested [20:01] mape: oh, k, any code out there? [20:02] evilhackerdude: let me take a look [20:03] onar_ has joined the channel [20:04] tjholowaychuk has joined the channel [20:04] jetienne: mape: yep that the principle [20:05] jetienne: mape: the playing list is cycling (not sure to be clear) [20:05] mape: oh cycling and replacing the videos [20:06] jetienne: mape: all that more related to ffmpeg/mplayer than node btw :) [20:06] mape: yeah [20:07] Gruni has joined the channel [20:08] V1: FINALLY! [20:08] saikat has joined the channel [20:08] V1: After 20 days of debugging, I found the cause of my uncought exception [20:08] V1: lol [20:08] jetienne: mape: as of offtopic, if you want to deliver video in p2p thru the web, you can use webpeer.it :) (shameless plug:) [20:08] jetienne: V1: :) [20:08] mjr_: 20 actual days? [20:09] mjr_: That's intense. [20:09] V1: mjr_: On and off :$ [20:09] mape: jetienne: nice, the text on the frontpage wraps strangely [20:09] gthb has joined the channel [20:09] mape: probly line-height that is off [20:09] V1: I was skimming throught the socket.io files for potential issues and BOEEM, i found it [20:09] jetienne: mape: dman im so lame at front end [20:09] jetienne: mape: which browser ? [20:09] mape: chrome dev [20:09] V1: socket.io was the reason of all uncaught exceptions rauchg_ :@ [20:09] mjr_: Exception handling I think is the biggest problem in node right now. Once you get an application of reasonable complexity, it can be really hard to find all of the exceptions. [20:09] jetienne: mape: which os ? [20:10] mape: osx [20:10] V1: It needs to have call stack mjr_ [20:10] rauchg_: V1: the connection reset by peer ? [20:10] V1: atleast that I knew which function caused the issue [20:10] jetienne: mape: ok will try. i got ff+chrome fully ok on linux [20:10] V1: rauchg_: yes -_- [20:10] mjr_: V1: yeah, it will soon with EventSource, but lots of exceptions don't even trigger the uncaughtException handler. [20:10] rauchg_: that's not socket.io's fault methinks though [20:11] V1: rauchg_: I added error listener in the websocket transport to log all errors [20:11] V1: IO:websocket error [20:11] V1: { '0': [20:11] V1: { message: 'ECONNRESET, Connection reset by peer' [20:11] V1: , stack: [Getter/Setter] [20:11] V1: , errno: 131 [20:11] V1: , syscall: 'read' [20:11] V1: } [20:11] V1: } [20:11] V1: ^ that just appeared in my logs [20:11] rauchg_: what throws that [20:11] V1: The socket connection [20:12] V1: I attached an error listener to the this.connection in the WebSocket.prototype._onConnect prototype [20:12] rauchg_: i see [20:12] rauchg_: we should call _onDisconnect [20:12] rauchg_: in that error listener [20:13] V1: Want me to patch it or are you adding it your self? [20:13] jetienne: ubuntu linux deb package of 2.2 will be available in 5h at ppa:jerome-etienne/neoip [20:14] larsvegas has joined the channel [20:14] mitkok has joined the channel [20:20] ehaas has joined the channel [20:20] FuzzYspo0N has joined the channel [20:20] onar_ has joined the channel [20:22] mattly has joined the channel [20:24] tjholowaychuk: mjr_: weird, for some reason with client.keys('somestuff:*', .. I get the number 1 [20:24] tjholowaychuk: as the keys [20:25] tjholowaychuk: with no exception [20:25] tjholowaychuk: but no array of buffers, just a number [20:25] tjholowaychuk: lol [20:26] micheil: ? [20:28] mjr_: tjholowaychuk: oh, hmm [20:28] mjr_: tjholowaychuk: can you me a specific example? [20:29] tjholowaychuk: mjr_: one sec ill try [20:29] dsboulder has joined the channel [20:30] fizx_ has joined the channel [20:30] V1: rauchg_: It only seemed to fix one or two ECONNRESET, Connection reset by peer as my log is still being flooded with those messages after I attached error listeners [20:31] atourino has joined the channel [20:32] cloudhead has joined the channel [20:32] tjholowaychuk: mjr_: nvm i think it is just because the commands are not queued pre-connect [20:32] tjholowaychuk: which has a weird side-effect [20:32] mjr_: yeah, I'll get that eventually [20:33] sechrist: is there a nodejs song yet? [20:33] admc has joined the channel [20:33] FuzzYspo0N: please no [20:35] fizx has joined the channel [20:35] Ori_P has joined the channel [20:35] aurynn: RMS CAN SING IT [20:36] benburkert has joined the channel [20:38] jjcm: D: [20:38] jjcm: I don't want to ever hear RMS sing [20:38] mjr_: tjholowaychuk: it shouldn't return 1 though, it should pass an error to the callback. [20:38] mjr_: jjcm: it is bad [20:38] tjholowaychuk: mjr_: it might be my lib reacting oddly to the connection error [20:38] tjholowaychuk: s/might/probably is/ [20:39] mjr_: tjholowaychuk: OK, well if it's not invoking the callback function with an error argument, I need to fix that. [20:39] EyePulp_ has joined the channel [20:39] mjr_: If I can get my other stuff done today, I'll just go make it queue [20:40] tmedema has joined the channel [20:40] bradleymeck: i want liveedit back /cry [20:41] tjholowaychuk: bradleymeck where did it go [20:41] bradleymeck: it went missing from process [20:45] V1: wewt, already 5 minutes without any ECONNREST messages :D! [20:45] V1: I think I solved it now [20:45] V1: ACTION crosses fingers [20:45] Eber: Just pushed a new version of my validator module for node. Would love some feedback: http://github.com/eberfreitas/validator [20:45] jesusabdullah: technoweenie: Good job talking about rails/node :) [20:46] V1: Argh still not fixed lol [20:50] aubergine has joined the channel [20:50] evilhackerdude: man, the request package is kind of strange. [20:50] bradleymeck: i need to make a post about using git as a deploy method [20:50] smcq has joined the channel [20:50] jesusabdullah: Hah [20:51] jesusabdullah: using git that way is fun [20:51] jesusabdullah: Leastways for some projects [20:51] bradleymeck: well it would help casual hackers that have a server to spare i think [20:52] ehaas has joined the channel [20:52] jesusabdullah: Yeah, totally [20:52] jesusabdullah: I'd be interested in that :) [20:52] saikat has joined the channel [20:53] bradleymeck: cool i finally have time this weekend to hack some stuff out I need to set that up for me too so, will do [20:55] prettyrobots has left the channel [20:55] prettyrobots has joined the channel [20:58] bmease has joined the channel [20:59] Mikee|afk: god damn dragons den is so good. [21:01] matt_c has joined the channel [21:01] bradleymeck: ? [21:01] Mikee|afk: uk program [21:01] Mikee|afk: programme [21:05] arlolra has joined the channel [21:06] vnguyen_ has joined the channel [21:07] zith_: i like it too [21:08] evilhackerdude: mape, mjr_: here's the http live streaming thing http://github.com/evilhackerdude/mu-relay [21:08] vnguyen_ has joined the channel [21:08] mape: nice [21:08] evilhackerdude: it's more of a PoC, but it works on my ipad/iphone [21:08] vnguyen__ has joined the channel [21:09] evilhackerdude: i love coffee for stuff like that: http://github.com/evilhackerdude/mu-relay/blob/master/lib/presets/ipad.coffee [21:09] mdg has left the channel [21:10] evilhackerdude: though coffee could get a little more syntax highlighting love on github :) [21:10] technoweenie: we use pygments [21:10] evilhackerdude: so the coffee grammar file for pygments needs a fix [21:11] evilhackerdude: actually the main difference is that vars have their own color [21:11] vnguyen_ has joined the channel [21:12] evilhackerdude: http://img.ly/images/499587/full [21:12] pquerna: mjr_: queues. [21:12] mjr_: pquerna: almost done [21:12] saikat has joined the channel [21:12] pquerna: mjr_: what url was your stuff at? [21:13] mjr_: I assume you mean the redis thing: http://github.com/mranney/node_redis [21:13] pquerna: yeah [21:13] mjr_: Which is what I almost have the queue working on [21:13] hoodow has left the channel [21:13] evilhackerdude: mjr_: it doesnt do binary protocol yet, right? [21:13] mjr_: Check out my fancy readme [21:13] mjr_: It should do binary [21:13] evilhackerdude: pardon then [21:13] evilhackerdude: i remembered something from some redis client readme. there are many. [21:14] mjr_: Oh, what I haven't tested is feeding it a large binary buffer. That might make it sad, but should be easy to fix. [21:14] vnguyen__ has joined the channel [21:15] mjr_: I'm hoping that someone else will contribute a nice way to do progressive MULTI and perhaps another nice way to stream data into or out of it. [21:16] techwraith has joined the channel [21:18] vnguyen has joined the channel [21:18] vnguyen has joined the channel [21:18] jesusabdullah: Ooh, I could make a latex buildbot with node :o [21:18] jesusabdullah: That'd be rad [21:19] jashkenas: evilhackerdude: if you want to improve the syntax highlighting, you can fix it here: http://dev.pocoo.org/hg/pygments-main/file/83cd2c6fb0c1/pygments/lexers/web.py#l1610 [21:19] sonnym has joined the channel [21:19] jashkenas: evilhackerdude: as soon as pocoo pulls the patch to their repo, the github guys can merge it in to github proper. [21:19] noahcampbell has joined the channel [21:20] jesusabdullah: :o cool :D [21:20] evilhackerdude: cool, i'll do that [21:21] saikat: my node server randomly went up to 100% CPU usage last night while i was sleeping and seemed to stay that way for about an hour until i restarted it (oddly, monit didn't do the task for me). it's likely something i did wrong but i was wondering [21:21] saikat: in general for issues like this where i really can't reproduce it [21:21] evilhackerdude: that's just skynet [21:21] saikat: what do people do? [21:21] saikat: just prolific logging, which i'm trying to do/ [21:22] saikat: or i guess run it through apache bench a few times? [21:22] saikat: to see if that can reproduce it? [21:22] saikat: are there other strategies [21:23] zith_: would be nice to get a stacktrace on SIGQUIT in those situations [21:24] saikat: the only thing is, once the app is hung like that [21:24] saikat: can it even produce a stack trace? [21:24] saikat: otherwise i could try to handle SIGQUIT and do something [21:24] saikat: but i'm not sure that will do me any good [21:25] mjr_: pquerna: done http://github.com/mranney/node_redis/commit/c4e13514d971d2d67b6953e44cf78c644e93f6e8 [21:25] V1: Is there someone here with socket.io experiance? [21:25] Mikeee: ACTION likes swarmation game [21:26] pquerna: mjr_: ah thinking of writing a blog post about the queue stuff. [21:26] mjr_: tjholowaychuk: should queue command pre-connection and then play them out once the connection is established. [21:27] tjholowaychuk: mjr_: awesome! seemed to have fixed that issue i think, my lib is tripping up on something else though [21:27] mjr_: That was a fascinating exercise in staying up way too late last night. [21:27] tjholowaychuk: ill try to figure out if that is node_redis related [21:27] mjr_: The whole queue thing. [21:28] mjr_: pquerna: did you see this? http://github.com/mranney/node_redis/blob/master/buffer_bench.js [21:28] MikhX has joined the channel [21:29] mjr_: pquerna: some surprising behavior for me when handling small buffers. .copy() and .toString() are slower for <12 byte buffers than doing it in JavaScript. [21:29] pquerna: makes sense kinda [21:29] zapnap has joined the channel [21:29] pquerna: i assume this is on fastbuffers? [21:30] mjr_: oh yes [21:30] mjr_: I didn't try it with the old buffers, but I'll bet it sucks [21:31] mjr_: Since Redis is a binary protocol, but often involves small responses, I need to make a ton of new Buffer() or at least buffer.slice() [21:32] jesusabdullah: haha, awesome [21:32] jesusabdullah: Another tool for my latex workflow [21:32] jesusabdullah: >:3 [21:32] hukash has joined the channel [21:33] Sami_ZzZ has joined the channel [21:33] tjholowaychuk: mjr_: ah nvm its not a bug [21:33] tjholowaychuk: when you do a hgetall in fictorial's [21:33] tjholowaychuk: you get an object [21:34] tjholowaychuk: so i just have to tweak [21:34] zith_: buffer.slice shouldnt be very slow though, should it? [21:36] bradleymeck: zith__ correct, however construction cost of Buffers is greater than that of Arrays [21:36] zith_: right [21:37] mjr_: tjholowaychuk: what's the correct behavior then? [21:37] tjholowaychuk: mjr_: im fine with it how it is now, just previously an object from user-land could be passed to the same method as a hgetall response [21:38] mjr_: tjholowaychuk: it's certainly easier to return an array for everything multibulk, but I can see how you'd expect a hash-related command to return an object [21:38] stagas has joined the channel [21:38] tjholowaychuk: mjr_: yeah might be worth tinkering with his api for that, I guess seeing as most people would do that anyway [21:38] tjholowaychuk: manually [21:39] dhampton_ has joined the channel [21:39] evilhackerdude: jashkenas: hehe, editing web.py makes me nostalgic about python :) [21:40] mjr_: There are lots of potential error cases by doing it that way, but I agree it is more natural. Maybe somebody else will write that. [21:41] bmavity: anyone know where i can read up on having a mongodb instance auto start with my joyent smart machine? [21:42] boaz__ has joined the channel [21:42] jashkenas: evilhackerdude: I really appreciate you fixing it up a bit. the pygments lexer has always needed a little love. [21:43] boaz has joined the channel [21:43] evilhackerdude: i only see snakes and a lot of regex, beginning to understand how the thing works :) [21:44] andyp has joined the channel [21:45] bradleymeck: jashkenas, just gave your argument on the article what i thought was most apt from that wiki page if thats all right [21:48] onar_ has joined the channel [21:50] evilhackerdude: i love oktoberfest time in munich. drunks passing by first floor's window all night. [21:51] isaacs: snowinferno: looks like you got your question answered, but: sys.puts does a .toString() on objects, and console.log() does sys.inspect, which calls .inspect() if it has one. [21:51] zith_: how long is the oktoberfest celebrations? [21:51] tjholowaychuk: mjr_: aight I can whip up a patch [21:51] evilhackerdude: 2 weeks starting from tomorrow (saturday) [21:51] creationix: wow HEAD node works really different [21:51] creationix: require seems all strange to me [21:52] creationix: anyone know how to require js files in node HEAD ? [21:52] Anti-X: head node? [21:52] mjr_: you mean require("./filename"); doesn't pull in filename.js [21:52] mjr_: ? [21:52] bradleymeck: use .js [21:53] webr3: what Anti-X asked.. [21:53] ph^ has joined the channel [21:53] snowinferno: isaacs: thanks for the difinitive answer :) [21:53] evilhackerdude: isnt commonjs compilant require supposed to know about the js extension? [21:53] creationix: > require('connect.js') [21:53] creationix: Error: No such native module connect.js [21:53] bradleymeck: straight of github's master branch = HEAD [21:53] tjholowaychuk: mjr_: http://github.com/mranney/node_redis/pull/4 [21:54] Anti-X: i thought js was implied [21:54] bradleymeck: evilhackerdude there are some problems with doing that, node supports all the commonjs stuff but does things a little different [21:54] bradleymeck: it generally is, but i think something odd happened to head [21:54] creationix: looks like there are some serious api changes coming in 0.3.x [21:54] FuzzYspo0N has left the channel [21:54] creationix: or I'm on a funny branch somehow [21:54] ph^ has joined the channel [21:54] ako has joined the channel [21:55] Anti-X: on a funny branch in the tree of life [21:56] isaacs: creationix: yeah, i see that. that's broken. [21:56] mjr_: tjholowaychuk: thanks, merged and pushed to master [21:56] creationix: I wonder how many node tutorials tell people to just clone master from github [21:57] creationix: that's not going to work at the moment [21:57] bradleymeck: evilhackerdude, for example if you have 2 files 1 without extension and 1 with .js the pure commonjs api (hisss) require would choose the .js even though the extensionless file makes more sense [21:58] jacobolus has joined the channel [21:58] evilhackerdude: i see [21:59] markwubben has joined the channel [22:01] Zero_Dogg has joined the channel [22:02] onar_ has joined the channel [22:02] bradleymeck: idk, the commonjs api is well formatted, but it feels like Java rather than an api with closures and first class functions to me. [22:03] onar_ has joined the channel [22:04] cfq has joined the channel [22:04] rwaldron has joined the channel [22:04] boaz has joined the channel [22:04] creationix: js is scripted java [22:04] creationix: ;) [22:05] creationix: bradleymeck: ^ [22:05] bradleymeck: sure it is... [22:05] tjholowaychuk: no its not [22:05] tjholowaychuk: hope thats a joke lol [22:05] nefD: hmmm.. anyone seen felix? [22:05] figital has joined the channel [22:05] Aria has joined the channel [22:05] tjholowaychuk: mjr_: I think I found another bug, will patch it asap [22:05] digitalspaghetti: channel: opinions of CoffeeScript? [22:05] jacobolu_ has joined the channel [22:06] Zero_Dogg has left the channel [22:09] brianmario has joined the channel [22:10] shimondoodkin: hello [22:10] ajpiano has joined the channel [22:10] jashkenas: digitalspaghetti: if you have any questions about specifics, feel free to ask over on #coffeescript. [22:11] digitalspaghetti: no, just getting a general consensus [22:11] freeall has joined the channel [22:11] bradleymeck: coffeescript is a great way to ease some problems with JS, however, dont forget you can mix the 2 for some things that would be odd in JS :) [22:11] bradleymeck: we are pretty cool as long as things arent poorly designed [22:12] shimondoodkin: creationix,bradleymeck: look http://github.com/shimondoodkin/node-inflow [22:12] creationix: I'm looking at it [22:12] bradleymeck: lol [22:12] evilhackerdude: jashkenas: basically i fixed the : to = transition though i'd love to put emphasis on the -> and argument lists. [22:12] tjholowaychuk: oh no [22:12] Akufen has joined the channel [22:12] Akufen has joined the channel [22:12] tjholowaychuk: more flow control stuff [22:13] shimondoodkin: what so funny and terrible about it? [22:13] shimondoodkin: :D [22:13] digitalspaghetti: does it do 'templates', i.e could i add something like a express app template? [22:14] sh1mmer has joined the channel [22:14] tjholowaychuk: i just think these flow control libs not only make things uglier, but more confusing, and force a possibly unwanted dependency on other developers [22:14] tjholowaychuk: if they want to contribute [22:14] evilhackerdude: digitalspaghetti: i dont know, you could always return an express app from a parameterized function, but coffeescript doesnt do anything more than javascript, really [22:14] bradleymeck: if you want to / need to agressively do closure stuff interface will overdo it to the extreme rawr [22:14] creationix: shimondoodkin: parallel not paralel [22:14] jashkenas: evilhackerdude: when you're all done, you can send a pull request here: http://bitbucket.org/birkenfeld/pygments-main/issues [22:14] sr has joined the channel [22:14] evilhackerdude: jashkenas: you did the original one, right? [22:15] jashkenas: evilhackerdude: parts of it. cehoffman contributed a bunch. [22:15] shimondoodkin: creationix: thanks [22:15] evilhackerdude: jashkenas: i'd like to make sure i didnt break anything before sending the pull request [22:16] creationix: shimondoodkin: why a shared object over closure? [22:16] onar_ has joined the channel [22:16] creationix: to avoid nesting? [22:16] jashkenas: evilhackerdude: i'd be glad to test the patch for you if you'd like to gist it. [22:16] evilhackerdude: jashkenas: i will, still working on it though [22:16] evilhackerdude: thx so far, glad to contribute! [22:16] Eber: Is there a place where I can just drop a node app and make it work on the web?!? [22:16] harryv has joined the channel [22:17] iwasbiggs has joined the channel [22:17] shimondoodkin: it simplified the use with https server, and alowed easy integratrion of far functions from a an object library [22:17] shimondoodkin: http [22:18] creationix: shimondoodkin: fair enough [22:18] creationix: shimondoodkin: another question [22:18] creationix: shimondoodkin: why put the shared stuff as a property on "this" instead of "this"directly [22:18] creationix: were you worried about name conflucts? [22:18] onar_ has joined the channel [22:19] techwraith: Eber: Last I heard Heroku and Joyent were both working on ready to go Node servers, but they aren't 100% yet. [22:19] onar_ has joined the channel [22:19] Eber: techwraith: I see... I'll check them out ;) Thanks! [22:19] shimondoodkin: yes it was tthat to not polute the shared object with functions, i could do a function object with a prototiped but it had change the type of the object [22:20] techwraith: Eber: no problem, I don't think either are actually consumer facing yet though. [22:20] shimondoodkin: yes it was that, to not polute the shared object with functions, i could do a function object with a prototyped function but it had change the type of the object [22:21] ysinopsys has joined the channel [22:21] onar_ has joined the channel [22:22] mattly has joined the channel [22:23] onar_ has joined the channel [22:23] ivong has joined the channel [22:25] matjas has joined the channel [22:25] shimondoodkin: creationix: thanks for beeing interested. [22:26] techwraith: Is there any reason why using process.exit() in the callback for mongodb-native's insert function would cause the data to not be inserted? [22:26] sh1m has joined the channel [22:27] mape_ has joined the channel [22:27] donnex has joined the channel [22:28] devongovett has joined the channel [22:28] bradleymeck: it might not be done sending [22:28] evilhackerdude: jashkenas: http://gist.github.com/585065 [22:28] aubergine has joined the channel [22:29] evilhackerdude: basically made = behave like : in existing patterns [22:29] shimondoodkin: techwraith: maybe because of the way mongodb-native is working is that it executes the commands on return of a recursion, this because it allows to do coll.find({afsd}).limit(123) [22:29] softdrink has joined the channel [22:29] Aku has joined the channel [22:30] techwraith: So any tips on ending the process after the data has been inserted? should I just query for what was just inserted and then exit when I get that back? [22:31] evilhackerdude: mjr_: do you have any idea why iOS devices tend to play only the last three segments in a playlist? [22:32] shimondoodkin: techwraith: maybe add a callback to close a connection to database, in it do exit [22:32] evilhackerdude: oh, maybe because i didnt put the end tag at the end. [22:33] captain_morgan has joined the channel [22:33] techwraith: So closing the DB connection will wait until writes are done? [22:33] wereHamster: is there a known issue with using printf() inside node modules? [22:33] bradleymeck: for most sane adapters, yes [22:34] wereHamster: node segfaults for me when I do that. And it works fine when I use std::cout [22:34] bradleymeck: wereHamster no i use it like drugs when debugging my c++ modules [22:34] mikew3c has joined the channel [22:35] shimondoodkin: evilhackerdude: once i had a bug the header was printed 3 times in chrome, icould not find it 3 days, then i found that there was a missing [22:35] tjholowaychuk: mjr_: found it lol its a silly one [22:35] mjr_: that's good [22:35] sh1mmer has joined the channel [22:35] mjr_: I'm trying to figure out how to stream data into and out of redis [22:36] mjr_: you pretty much need to know the size in advance on a write [22:36] evilhackerdude: shimondoodkin: weird. that's why i like haml/jade. they punch you right in the face when you're wrong. [22:36] tjholowaychuk: mjr_: yeah pretty much AFAIK [22:37] mjr_: or you could create a list of chunks that you could fetch back in a read stream [22:37] janne has joined the channel [22:37] shimondoodkin: mjr_: you can use array and push packets.. [22:37] mjr_: But then it would be hard to have, say, a write stream targeting a set element or a hash value. [22:37] shimondoodkin: evilhackerdude: or hire good programmers [22:37] mjr_: I dunno, maybe that list thing would be useful. [22:38] evilhackerdude: mjr_: the list thing sounds useful [22:38] mape has joined the channel [22:38] wereHamster: also, this: for (i=0;i<10000000;++i) { std::cout << i << std::endl; } will stop after ~2000-5000 iterations (node will simply exit). But here when I use printf(). the loop finishes [22:38] Eber: nwhite: hey, are you around? [22:38] noahcampbell: Isn't cout buffered? [22:38] tjholowaychuk: mjr_: there we go http://github.com/mranney/node_redis/pull/5 [22:39] mjr_: oh, interesting [22:39] tjholowaychuk: i thought it was just keys at first fucking up [22:39] tjholowaychuk: but realized we didnt take *0 into account [22:39] mjr_: yeah, whoops [22:39] Tim_Smart has joined the channel [22:40] shimondoodkin: evilhackerdude: oops sorry i ment the bug i fixed was not mine.. [22:41] vmthehut has joined the channel [22:43] mjr_: thanks tjholowaychuk, keep 'em coming. [22:43] tjholowaychuk: np [22:43] bradleymeck: well just finished my character entity encoding generator module... xml html html-with-legacy anything else ppl really want [22:43] jacobolu_ has joined the channel [22:43] tjholowaychuk: great job so far, even the fact I can find these bugs decently quickly is great haha [22:47] Anti-X: is it possible to set all the values in a hash to local vars with the name of the keys? [22:47] evilhackerdude: {a,b,c} = hash [22:47] evilhackerdude: oops. wrong chan :) [22:47] Anti-X: yeah that's python [22:47] bradleymeck: anti-x clarify please [22:48] jashkenas: Anti-X: that's coffeescript ;) [22:48] Tim_Smart: Anti-X: --^ [22:48] wereHamster: can someone please test this and see if it segfaults? http://gist.github.com/585102 [22:49] Anti-X: {'a': 'aha', 'b': 'bhb?'}.make_local_vars(); a + b == 'ahabhb?' [22:49] cloudhead has joined the channel [22:49] Anti-X: true. [22:49] Anti-X: :P [22:50] jashkenas: Anti-X: you can do it with eval() in JS, but I'm not aware of another way. [22:50] bradleymeck: anti-x not without eval, and doing so loses several optimizations of functions [22:51] ryah: tjholowaychuk++ [22:51] v8bot: ryah has given a beer to tjholowaychuk. tjholowaychuk now has 1 beers. [22:51] Anti-X: how does js assign arguments to local vars? [22:51] tjholowaychuk: ahahaha [22:51] bradleymeck: anti-x it doesnt [22:52] shimondoodkin: i did this with for each eval not afaik, but maybe maybe you could do some execute in a context but not sure, http://github.com/shimondoodkin/nodejs-meta-templates/blob/master/doubletemplate.js#L261 [22:52] Tim_Smart: wereHamster: You are allocating a string and an object every iteration. You should probably declare it outside the loop. [22:52] mjr_: I'm going to drink 1 beers in an hour or so. [22:52] wereHamster: Tim_Smart: that's not the point.. [22:52] ryah: mjr_++ [22:52] v8bot: ryah has given a beer to mjr_. mjr_ now has 1 beers. [22:52] Tim_Smart: ryah++++ [22:52] mjr_: mjr_ -- [22:52] Anti-X: bradleymeck, well it pretends to... so what's happening there? :P [22:52] Tim_Smart: ryah++ [22:52] v8bot: Tim_Smart has given a beer to ryah. ryah now has 2 beers. [22:52] techwraith: Does anyone know if mongodb will create a new document if an update doesn't find a document to update? [22:52] evilhackerdude: v8bot++ [22:52] v8bot: evilhackerdude has given a beer to v8bot. v8bot now has 1 beers. [22:53] mjr_: I guess v8bot won't let me drink it until after 5PM. Makes sense. [22:53] Sami_ZzZ has joined the channel [22:53] zith_: zith_++ [22:53] v8bot: zith_: Don't cheat! You can't give a beer to yourself. [22:53] zith_: :( [22:53] mjr_: mjr_-- [22:53] v8bot: mjr_: Don't cheat! You can't give a beer to yourself. [22:53] Anti-X: enough with the blatant alcoholism [22:53] Anti-X: mjr_-- [22:53] v8bot: Anti-X has taken a beer from mjr_. mjr_ now has 0 beers. [22:53] Tim_Smart: mjr_-- [22:53] v8bot: mjr_ is getting too many beers. Don't let mjr_ get drunk! [22:53] Anti-X: nom nom [22:53] bradleymeck: it is assigning arguments[0/etc] as a reference by name. its not a local variable technically, but it may be overriden [22:53] mjr_: Tim_Smart:+=2 [22:53] zith_: it's not called alcoholism when you're a student [22:53] zith_: it's just called.. academia [22:53] wereHamster: Tim_Smart: I have much more complex code which creates lots of objects and this is the smallest possible test case which exhibits the bug [22:53] evilhackerdude: ah, this reminds me of the good old irc days. seems they've never been over :) [22:54] shimondoodkin: is this a bot game? [22:54] onar_ has joined the channel [22:54] Tim_Smart: wereHamster: Take it up with the C++ gods. You might have better luck :p [22:54] bradleymeck: also anti-x why would you want to inject variables into local scope rather than on an object? [22:55] shimondoodkin: aslo if it is a local variable you get a more serius error if the value is undefined [22:55] shimondoodkin: s/aslo/also [22:55] bpadalino: um .. you call new a lot, but never delete val ? [22:55] jacobolus has joined the channel [22:56] bpadalino: you are going to hold 10M objects ? [22:57] Anti-X: bradleymeck, well i have a lot of functions with optional arguments and i thought i'd make a shortcut function that extracts from the arguments based on a given type pattern, and that function returns an object now, which i thought could be extracted/flattened/whatever [22:58] bradleymeck: so you want to filter the items of a set (the arguments) and only return the relevant ones? [22:59] shimondoodkin: also you coud use "with" [23:00] Anti-X: oh yeah [23:00] bradleymeck: just beware of with's speed issues and that it doesnt create a truly new scope [23:00] Anti-X: don't care about the scope as long as it's limited within the function [23:00] shimondoodkin: bradleymeck: whats new about with's speed? [23:00] bradleymeck: v8 var x = {};with(x){y=1};x [23:00] v8bot: bradleymeck: {} [23:01] Anti-X: yeah i'm not assigning [23:01] bradleymeck: with is slower than using lookup (.) [23:01] Anti-X: v8 var x = {stuff: 'haha'};with(x){stuff} [23:01] hoodow has joined the channel [23:01] v8bot: Anti-X: "haha" [23:02] Anti-X: how slow? [23:02] shimondoodkin: lol [23:02] Anti-X: years? [23:02] evilhackerdude: approximately 3 laserkittens per tick [23:02] shimondoodkin: Anti-X: you can ignore this kind of slownlyness [23:02] bradleymeck: around 7 times slower last i checked [23:02] Anti-X: also, why did v8bot put quotes around haha.. it's like it was sarcastic about me being funny or something [23:02] bradleymeck: its a string [23:02] Anti-X: yeah i know [23:02] Anti-X: joke [23:03] konobi: needs to get a hold of dannycoates [23:03] Anti-X: 7 times?! [23:03] wereHamster: Tim_Smart: can't reproduce with pure v8 (without node) [23:04] bradleymeck: yea, you can look on js perf i think [23:04] bradleymeck: anywho i gotta go gl [23:04] bradleymeck has left the channel [23:05] evilhackerdude: offtopic, anyone watching stuff on peepcode? [23:07] ryah: v8bot: help [23:07] v8bot: ryah: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [23:07] ryah: v8bot: v commands [23:07] v8bot: ryah: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [23:07] ryah: v commadns [23:07] ryah: v commands [23:07] evilhackerdude: v8bot: v commands [23:07] v8bot: evilhackerdude: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [23:07] evilhackerdude: DIE! [23:07] bpadalino: `v commands [23:07] v8bot: bpadalino: Commands: Type `v . Optionally, type `v @ to send to a specific user. `v Commands are: about, beers, commands, git, google, help, macro, sf. Other commands: v8, `re, `pcre, `ref. Type `v help for more information. [23:07] techwraith: Does setInterval work with node? [23:08] ryah: beers [23:08] sprout has joined the channel [23:08] ryah: beers isaacs [23:08] bpadalino: v8bot: beers [23:08] v8bot: bpadalino: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [23:08] ryah: `v beers [23:08] isaacs: beers indeed. [23:08] v8bot: ryah: has 0 beers. [23:08] isaacs: beers [23:08] bpadalino: `re [23:08] v8bot: bpadalino: Invalid syntax. Usage: `re text /regex/flags [23:08] ryah: ryah++ [23:08] v8bot: ryah: Don't cheat! You can't give a beer to yourself. [23:09] bpadalino: `re this is a test /s/im [23:09] v8bot: bpadalino: ["s"] [23:09] isaacs: ryah++ [23:09] v8bot: isaacs has given a beer to ryah. ryah now has 1 beers. [23:09] isaacs: i see [23:09] ryah: /kick v8bot [23:09] isaacs: `re [23:09] v8bot: isaacs: Invalid syntax. Usage: `re text /regex/flags [23:09] isaacs: `re test /asdf/gi [23:09] v8bot: isaacs: ""No matches found."" [23:09] isaacs: `re test /./gi [23:09] v8bot: isaacs: "["t", "e", "s", "t"]" [23:09] konobi: konobi++ [23:09] v8bot: konobi: Don't cheat! You can't give a beer to yourself. [23:09] bpadalino: playin with the bot! [23:09] isaacs: v8bot++ [23:09] v8bot: isaacs has given a beer to v8bot. v8bot now has 2 beers. [23:09] isaacs: v8bot++ [23:09] v8bot: v8bot is getting too many beers. Don't let v8bot get drunk! [23:09] isaacs: v8bot++ [23:09] v8bot: v8bot is getting too many beers. Don't let v8bot get drunk! [23:09] isaacs: v8bot++ [23:09] v8bot: v8bot is getting too many beers. Don't let v8bot get drunk! [23:09] isaacs: v8bot++ [23:09] v8bot: v8bot is getting too many beers. Don't let v8bot get drunk! [23:10] isaacs: trying to get v8bot out of strict mode. [23:10] saikat has joined the channel [23:10] meatmanek has joined the channel [23:11] creationix: speaking of adult beverages, I should probably start the long commute soon [23:12] sudoer has joined the channel [23:12] halfhalo has joined the channel [23:13] lakin has joined the channel [23:14] isaacs: creationix++ [23:14] v8bot: isaacs has given a beer to creationix. creationix now has 1 beers. [23:17] shimondoodkin: creationix++ [23:17] shimondoodkin: v8bot++ [23:19] Anti-X: very crude test with one element had with(x){global=elem} 27 times slower than just global=x.elem [23:19] daglees has joined the channel [23:19] Anti-X: oon chrome [23:19] wakawaka: anyone have any ideas for a for..in loop would not work in chrome but not firefox? [23:20] wakawaka: any ideas why* [23:20] Personal has joined the channel [23:21] evilhackerdude: so where doesnt it work? [23:22] batasrki has joined the channel [23:22] Anti-X: ooh, opera was faster, only 15 times slower 'with'... but ff.. oh lord.. 100 times slower :D [23:22] wakawaka: in a function, im trying to use arguments, so, for(var i in arguments) //do stuff with arguments[i] [23:23] jamescarr_ has joined the channel [23:23] Anti-X: oh, but arguments isn't an array [23:23] Anti-X: it's sort of a hybrid [23:24] wakawaka: oh, so how should i access its contents? [23:24] evilhackerdude: wakawaka: use a for loop with a counter. [23:24] evilhackerdude: https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope/arguments [23:24] daglees has joined the channel [23:24] wakawaka: evilhackerdude: awesome thanks, i was trying to find a moz article [23:24] wakawaka: much appreciated [23:25] Tim_Smart: mjr_: For some reason node_redis is throwing Error: Offset is out of bounds [23:25] noahcampbell_ has joined the channel [23:25] kjy112 has joined the channel [23:25] mjr_: Tim_Smart: I think I just fixed that. Large response? [23:25] Tim_Smart: Not sure. [23:26] Eber has joined the channel [23:26] Tim_Smart: mjr_: I sent in a pull request for HSETNX also. [23:26] mjr_: Cool, I'm just merging tjholowaychuk's test patch [23:27] tjholowaychuk: mjr_: rapid is still choking on a few things, so I will probably have more patches soonish [23:27] daglees has joined the channel [23:27] mif86 has joined the channel [23:28] mjr_: Tim_Smart: can you check the latest master and see if that fixes your out of bounds issue? [23:29] tjholowaychuk: mjr_: hm I think instead of an empty array on zero-length multibulk fictorial's was just null or undefined [23:29] tjholowaychuk: not sure which would be better [23:29] tjholowaychuk: doesnt matter much since you can check .length [23:29] mjr_: Oh,I think the redis docs say you should send null [23:29] tjholowaychuk: ah k [23:29] mjr_: I guess we should check. [23:29] tjholowaychuk: i was passing the empty array [23:29] tjholowaychuk: so we can do null [23:29] vyol has joined the channel [23:30] jashkenas has left the channel [23:30] halfhalo has joined the channel [23:32] Tim_Smart: mjr_: Yeah same with latest master. [23:32] Tim_Smart: I did a direct replace of redis-node-client so I might need to change some code or something. [23:32] mattly has joined the channel [23:34] paul_irish has joined the channel [23:34] paul_irish: has websockets-js been given a good run of testing on ie6 and 7? [23:35] paul_irish: i had a friend dig into it and he said it works as expected. just seeing if any of ya'll found anything different. [23:36] evilhackerdude: any reason not to go with socket.io? i think it's getting the most love these days [23:36] mjr_: Tim_Smart: if you can get a simple example, I'll take a look. [23:36] devinus has joined the channel [23:36] iwasbiggs has joined the channel [23:36] mjr_: tjholowaychuk: I updated test.js to run everything the same number of times so your fancy formatter works right. [23:36] Eber: guys... is it possible to make a http request to another server and get back the results? I need to access an API wich returns a JSON string... [23:37] paul_irish: evilhackerdude: mostly because i prefer the native API. [23:37] tjholowaychuk: mjr_: whoop! [23:37] mjr_: Eber: check out mikeal's request library for a nice API to do that. [23:37] paul_irish: but as a solution this certainly is more aggressively compatible. thx [23:37] mjr_: Eber: of course you can do it with node's low level API, but request makes it super easy. [23:37] tjholowaychuk: makes me wish console.log() had padding support [23:38] Eber: mjr_: thanks :) I'll take a look! Just for curiosity... What would I use in node in order to do that? [23:38] evilhackerdude: Eber: httpClient [23:38] evilhackerdude: actually http.Client [23:38] mjr_: Eber: yeah, check the docs for an example of http.createClient() [23:38] mjr_: Eber: or just do: npm install request [23:39] Eber: mjr_ evilhackerdude thanks guys! already installing request ;) [23:39] c4milo has joined the channel [23:40] Nohryb has joined the channel [23:42] KungFuHamster_ has joined the channel [23:42] sprout has joined the channel [23:43] benburkert has joined the channel [23:43] cloudhead has joined the channel [23:43] Eber: another question: how do I write to cookies? [23:44] Aria: With raw http? the Set-Cookie header. [23:44] jakehow has joined the channel [23:45] tjholowaychuk: mjr_: want a path for that null thing? [23:45] mjr_: yes, please [23:45] tjholowaychuk: k one sec [23:45] Eber: Aria: any ideas if connect or express make this any easier? [23:45] Aria: I'm sure. [23:46] paul_irish has left the channel [23:46] dnolen has joined the channel [23:47] Anti-X: v8 function stuff(args){args[0] = 'b'};(function(a){stuff(a);a})('a') [23:47] v8bot: Anti-X: undefined [23:48] Anti-X: v8 function stuff(args){args[0] = 'b'};(function(a){stuff(arguments);a})('a') [23:48] v8bot: Anti-X: undefined [23:48] sveimac has joined the channel [23:48] tjholowaychuk: mjr_: http://github.com/visionmedia/redis/commit/a84c217827e0e1aeb5096831507c614dfb4a36b0.patch [23:48] dsboulder has joined the channel [23:48] mjr_: Tim_Smart: did you figure out that redis buffer issue? I'm going to be done with the computer for a while after about 20 mins. [23:49] MikhX has joined the channel [23:49] Eber: tjholowaychuk: what app.use() does in Express [23:49] Anti-X: v8 function stuff(args){args[0] = 'b'};function bla(a){stuff(a);a};bla('a'); [23:49] v8bot: Anti-X: undefined [23:49] Eber: ? [23:49] Anti-X: v8 function stuff(args){args[0] = 'b'};function bla(a){stuff(arguments);a};bla('a'); [23:49] v8bot: Anti-X: undefined [23:49] Anti-X: doesn't chrome use v8? [23:49] Anti-X: cuz chrome lets me do that! [23:49] Aria: Yes it does. [23:49] tjholowaychuk: Eber: it accepts a middleware, so that each request filters through the middleware that you "use" [23:50] Eber: tjholowaychuk: I see... Now I found it at the source code... Thanks :) [23:50] Nohryb: Anti-x : function stuff(args){args[0] = 'b'};(function(a){stuff(arguments);return a})('a') [23:50] Nohryb: v8 function stuff(args){args[0] = 'b'};(function(a){stuff(arguments);return a})('a') [23:50] v8bot: Nohryb: "b" [23:51] Anti-X: since when did v8bot require a return [23:51] Anti-X: oh, right, since it's not the last line [23:52] Anti-X: so [23:52] Anti-X: that's a v8 bug then? [23:52] Tim_Smart: mjr_: https://gist.github.com/2870486e97c86f1af8af [23:52] Anti-X: since you're not supposed to access arguments outside of the function [23:52] sonnym has joined the channel [23:52] Anti-X: even by reference [23:52] Tim_Smart: mjr_: I'm sending that array to hmset [23:53] Nohryb: in es3 ? [23:53] Tim_Smart: mjr_: It might be choking on the 0-length buffer? [23:53] tjholowaychuk: mjr_: might whip up a script so that you can run benchmarks, make a few changes, run again and it can give you a diff [23:54] mjr_: Tim_Smart: you first get a "Stream is not writable", which means the connection got closed out from under you before the close event got handled. [23:55] mjr_: And that kind of puts things in a bad state. I need to handle that more gracefully, but it's tricky. [23:56] mjr_: Another curious cause of this is if you accidentally call client.end() and then try to send another command. [23:56] mjr_: I guess client.end() should set the connected flag right away. [23:57] onar_ has joined the channel [23:58] Tim_Smart: mjr_: I think that buffer out of bounds is cause the disconnect anyway. [23:58] Tim_Smart: *causing [23:58] mjr_: and the messages printed out of order? [23:58] Tim_Smart: Yeah. [23:58] Eber: tjholowaychuk: Could you give me a hand here? I'm trying to use session, but I get an error. Check it out: http://pastie.org/1165915 [23:58] Tim_Smart: Well that's async for ya... [23:58] mjr_: OK, lemme try to do an hmset and see if I can reproduce. [23:58] tjholowaychuk: Eber: what error? [23:59] Tim_Smart: mjr_: Try set a 0-length buffer. [23:59] tjholowaychuk: Eber: looks fine [23:59] Eber: tjholowaychuk: did you see the error message at the bottom of the paste? [23:59] tjholowaychuk: Eber: oh sorry linkinus does not expand it all i guess lol one sec