[00:02] technoweenie: i appreciate he's keeping the lines from being too long [00:02] technoweenie: but some techniques (like leaving out the parens on an if statement) shouldn't be used on multi-line statements [00:05] aconbere: argh! [00:06] cloudhead: aconbere: can't test it on the server? [00:09] aconbere: not really... it's mostly a browser deployment [00:09] aconbere: so we should be testing in multiple browsers idealy [00:12] cloudhead: right [00:17] mattly has joined the channel [00:25] Psytherium has joined the channel [00:35] pufuwozu has joined the channel [00:42] fizx has joined the channel [00:45] technoweenie has joined the channel [00:55] technoweenie: hey, what is the 'err' argument in callbacks? is there a best practice or does it vary from lib to lib [00:55] sontek has joined the channel [00:55] Yuffster has joined the channel [00:56] sontek has left the channel [00:58] halorgium: technoweenie: an exception, instead of using a callback + errback (like EM deferrables) [00:58] technoweenie: ah, ok [00:58] halorgium: it is catering to the case that most things won't fail ;) [00:59] halorgium: so if you don't want to handle errors nicely, just do the 'if (err) throw err' pattern [01:00] atmos: halorgium: feeling any better ? [01:02] technoweenie: whoa, was process.inherit removed? [01:04] technoweenie: oh it was moved to sys [01:06] halorgium: atmos: somewhat, this sucks big time though :/ [01:06] atmos: the bronchitis ? [01:06] halorgium: well, yes [01:06] creationix has joined the channel [01:06] halorgium: next time we have an insane night in santa cruz, ask me if i'm sick :) [01:06] atmos: hahah [01:06] atmos: i felt like shit for the better part of a week [01:15] joshowens has joined the channel [01:16] stepheneb has joined the channel [01:17] tjgillies: technoweenie: hihi this is @tylergillies you goin to os bridge? [01:18] technoweenie: nope [01:18] technoweenie: tjgillies: i'll be around until friday though, if there are any post-conf meetups happening [01:23] mitkok has joined the channel [01:26] ditesh|cassini has joined the channel [01:31] _announcer: Twitter: "node.js - because writing freaky fast servers in javascript makes me giggle http://bit.ly/1qHTze"-- Rhet Turnbull. http://twitter.com/RhetTbull/status/15076808659 [01:32] _announcer: Twitter: "Playing around with node.js and dbslayer -- cool stuff."-- glide. http://twitter.com/glide/status/15076832229 [01:45] vnguyen has joined the channel [01:48] stevendavie has joined the channel [01:48] stevendavie has joined the channel [01:51] _announcer: Twitter: "If you have an open source #nodejs lib you really should register it with npm http://npm.mape.me/. It's easy. http://bit.ly/dezvSh"-- Marco Rogers. http://twitter.com/polotek/status/15077786743 [01:56] smtlaissezfaire has joined the channel [02:06] kodisha_ has joined the channel [02:06] kodisha__ has joined the channel [02:10] saikat` has joined the channel [02:12] mostlygeek has joined the channel [02:15] smtlaissezfaire has joined the channel [02:19] cloudhead: is there a reason why node's HttpClient doesn't set the Host header? [02:20] cloudhead: it's giving me 400s [02:20] cloudhead: setting the Host header fixes it [02:20] cloudhead: am I doing something wrong? [02:20] halorgium: cloudhead: http doesn't need host headers [02:20] _announcer: Twitter: "Node.JS is just amazing! I've managed to write a simple HTTP server which features MIME types, directory listing and index in 30 minutes."-- Romain Ruetschi. http://twitter.com/romac17/status/15079235096 [02:21] halorgium: think of http.js as a very low level api [02:21] cloudhead: halorgium: not setting it gives me 400s on most websites though [02:21] halorgium: cloudhead: 404 perhaps? [02:21] cloudhead: halorgium: I see your point though [02:21] cloudhead: no, 400 [02:21] cloudhead: bad request [02:22] cloudhead: on github.com for example [02:22] halorgium: odd, i would've expected it to route to the default vhost and therefore show a 404 [02:22] brianmario has joined the channel [02:22] cloudhead: yea [02:23] cloudhead: halorgium: so manually setting the Host header is fine? [02:23] halorgium: cloudhead: totally [02:23] cloudhead: ok [02:23] halorgium: that is what you are meant to do [02:23] cloudhead: ok, good [02:23] cloudhead: thanks [02:25] halorgium: cloudhead: if you want to try the request out, use: curl -v -H 'Host:' http://github.com/ [02:25] halorgium: an odd response [02:25] halorgium: "server error", but 400 [02:25] jedschmidt has joined the channel [02:26] halorgium: cloudhead: you'll see google works fine [02:26] cloudhead: halorgium: aha yea, curl does the same [02:26] halorgium: cloudhead: well, of course ;) [02:26] cloudhead: and yea, google oddly works [02:26] halorgium: if it didn't, i'd be scared [02:27] cloudhead: : > [02:27] halorgium: cloudhead: no, not odd. default vhosts are normal [02:28] aconbere: anyone know if botanicus ever spends time here? [02:30] halorgium: aconbere: he does [02:30] aconbere: he must keep very different hours than I do :) [02:39] mrjjwright has joined the channel [02:40] shajith has joined the channel [02:41] _announcer: Twitter: "Portable Ubuntu @ Outsider__ Oh, I turn on Windows or other development nodejs I was wondering if we proceed .. I was thinking .. is not we use the cygwin PUbuntu Ha ha" [ko]-- KyoungTaek Koo 구경택. http://twitter.com/boxersb/status/15080288386 [02:42] _announcer: Twitter: "woo npm for #nodejs actually looks worth adopting now"-- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/15080337011 [02:47] SamuraiJack has joined the channel [02:50] aconbere: I kind of half ported minitest to browser js [02:50] aconbere: wondering if there's a reasonable way to try to package this such that I could avoid having to track upstream changes [02:53] shajith has joined the channel [02:58] aconbere: ACTION wonders about porting assert to browser js [02:59] cataska has joined the channel [02:59] aconbere: originally from narwhal.js [03:04] saikat` has joined the channel [03:08] ceej has joined the channel [03:14] smtlaissezfaire has joined the channel [03:16] ajpiano has joined the channel [03:23] _announcer: Twitter: "@ShawnWildermuth @steveandrews need a DOM for jQuery. Someone got YUI running on node.js though."-- Scott Koon. http://twitter.com/lazycoder/status/15082408708 [03:23] SvenDowideit_ has joined the channel [03:26] _announcer: Twitter: "@lazycoder http://github.com/tmpvar/jsdom -- there's a DOM For you. #nodejs"-- Aria Stewart. http://twitter.com/aredridel/status/15082586483 [03:29] mscdex: Aria to save the day ;-) [03:29] Aria: Hehe. [03:29] Aria: Might as well, eh? [03:30] Aria: I'm enjoying Node now as much as I was Ruby in 2003. [03:30] mscdex: ah [03:30] SvenDowideit_ has joined the channel [03:30] Aria: Wide open spaces, people building foundations together... [03:30] mscdex: i never got into ruby outside of a course i had in college that used it [03:31] Aria: It's good, mostly in the ways people won't admit [03:31] Aria: It's light, it's shell-weight, it's perl-like. One-off scripts are short. [03:31] Aria: but people keep trying to turn it into Java [03:32] ryan[WIN]: hy [03:32] mscdex: hola [03:34] Tim_Smart: I found node works best with lots of small modules working together [03:34] halorgium: Tim_Smart: most things do ;) [03:34] Aria: Yeah. ... what halorgium said [03:34] Aria: But node perhaps more so. [03:34] Tim_Smart: Yeah, that [03:34] Aria: CommonJS module isolation + efficient networking make it even easier. [03:34] halorgium: yes, prototypical langs do [03:35] halorgium: erlang kinda gets it too [03:35] halorgium: but there, it is enforced [03:37] shajith has joined the channel [03:38] ly- has joined the channel [03:42] ryah: who's trying to turn it into java? [03:44] ryan[WIN]: jaava [03:44] Aria: Rubyists. [03:44] ryan[WIN]: java is retarded simply because it makes a vm capable of handling cool functional crap and turns it into a slow C++ [03:44] Aria: Lots of overengineered crap. [03:44] ryan[WIN]: the java vm itself is swell [03:45] Aria: Lots of libraries that you have to download and bundle. It's almost its own OS [03:45] Aria: Without being ... different enough to be WORTH being a different OS [03:45] ryan[WIN]: lisp is like its own OS too [03:45] Aria: Yes, yes it is. [03:46] Aria: (and how many of us are regular participants in #lisp?) [03:46] ryan[WIN]: why would i talk about lisp [03:46] ryan[WIN]: with anyone [03:46] ryan[WIN]: ever. [03:47] Aria: I dunno, but you did start. [03:47] ryan[WIN]: js incorporates a lot of neato functional programming crap from lisp [03:47] mscdex: maybe if you don't have a lisp [03:47] mscdex: ;-) [03:47] ryan[WIN]: some by design, others because the spec is so darn simple [03:47] Aria: Hehe [03:48] ryan[WIN]: make it so that people can't have references or pass by reference [03:48] ryan[WIN]: and you enforce many things [03:48] ryan[WIN]: my biggest barrier as a JS advocate is the DOM [03:48] mscdex: i want xmlhttprequest in v8 [03:48] ryan[WIN]: people think that JS is a c-like scripty doodad for browsers only [03:48] Aria: Oh? [03:48] Aria: Heh [03:49] Aria: mscdex: So write it! [03:49] ryan[WIN]: when it's reallly not [03:49] mscdex: :P [03:49] ryan[WIN]: the syntax has some elements of C [03:49] sechrist: I have to admit, before diving into node [03:49] ryan[WIN]: but it's nothing like C at all [03:49] ryah: we need an easier http request api - that's for sure [03:49] sechrist: I only knew the dom, not so much javascript [03:49] ryan[WIN]: sechrist, if you want to learn general JS, node is a swell gateway to that [03:49] ryah: i would also like a FTP client [03:49] sechrist: oh it has been [03:50] ryah: but ftp scares me [03:50] Tim_Smart: HttpClient isn't bad I guess. It just needs a simple wrapper. [03:50] ryan[WIN]: but after that, you may start to incorporate general JS in your web browser [03:50] ryah: Tim_Smart: yeah [03:50] ryah: most people don't care about streaming their requests :) [03:50] ryan[WIN]: http://www.diod.es/ryanwin/test.html [03:50] ryan[WIN]: ^^ this is an example of using general JS in a browser [03:51] Tim_Smart: ryah: Any progress on Web Workers, or sendFD? [03:51] ryan[WIN]: http://www.diod.es/ryanwin/entity.js [03:51] ryah: c = new http.ClientPool() [03:51] ryan[WIN]: ^^ notice there are no DOM operations in entity.js [03:51] Aria: The two things the API should make easy are a) streaming from here to there and b) buffering it all and getting it in one chunk [03:51] sechrist: ryan[WIN]: what I really meant was more optimal programming method and best practices -- like how the ASI works. I didn't get exposed to that really (not because performance doesn't matter in a browser, but because it's a lot less noticable) [03:51] ryah: c.get("http://microsoft.com/", function (err, response) {}) [03:51] ryan[WIN]: ASI? [03:51] sechrist: automatic semicolon insertion [03:51] sechrist: hehe [03:52] ryah: Tim_Smart: no [03:52] ryan[WIN]: it's not that it automatically inserts a semicolon [03:52] Aria: Exactly, ryah. That and pump [03:52] ryan[WIN]: it's just that a semicolon is optional [03:52] sechrist: no no, the parsing engine [03:52] sechrist: http://inimino.org/~inimino/blog/javascript_semicolons [03:53] sechrist: semantic crap -- ++i vs i++ [03:53] ryan[WIN]: that's not semantic [03:53] ryan[WIN]: it's a carryover from C [03:53] ryan[WIN]: pre-increment and post-increment [03:54] ryan[WIN]: alert(++i); and alert(i++); [03:54] sechrist: yes yes -- I mean efficiency wise :( you're not getting my point [03:54] ryan[WIN]: different things [03:54] ryan[WIN]: well in C ++i is more efficient [03:55] ryan[WIN]: but javascript's efficiency starts to become hard to describe because of its loosely typed system [03:55] ryan[WIN]: so something like ++i vs i++ is hard to definitely say [03:55] sechrist: it's my understanding you should use the preincrement version where possible unless you need it specifically in a declaration blah = ++i etc [03:55] ryan[WIN]: since in the implementation it may look like this: [03:56] mostlygeek has joined the channel [03:56] ryan[WIN]: return (loose(int(1) + variable)); [03:56] ryan[WIN]: vs [03:56] ryan[WIN]: return (loose(variable + int(1))); [03:56] ryan[WIN]: in which case is it really that different [03:56] _announcer: Twitter: "Totally in love with Node.JS, it is a amazing piece of software !"-- Romain Ruetschi. http://twitter.com/romac17/status/15084101085 [03:57] ryah: i'm happy that people love node. [03:57] ryan[WIN]: whereas in C the behavior of ++i and i++ are specific enough [03:57] mostlygeek: is there a way to allow users to upload their own js files but they get run in a jailed environment? [03:57] ryan[WIN]: jailed? [03:58] sechrist: uh [03:58] ryan[WIN]: you can make your own js engine in js [03:58] sechrist: you could proxy per hostname to a node instance running as that user [03:58] ryah: mostlygeek: checkout http://github.com/fictorial/jefe [03:58] sechrist: it's how shared hosts do RoR applications in a jailed environment [03:58] mostlygeek: we're looking at building a hosting (thingy) that allows game developers to write logic on the server [03:59] Aria: I'd run it in a separate process with resource limits [03:59] mostlygeek: writing it in JS is pretty compelling but we want to limit the system / models that they have access to [03:59] sechrist: make sure your jail is working properly [03:59] sechrist: then spawn a node instance for each user [03:59] sechrist: running as that user [03:59] ryah: mostlygeek: yes, you should use separate processes [04:00] ryah: mostlygeek: that's what jefe does [04:00] mostlygeek: @ryah cool i'm looking at it right now [04:00] mostlygeek: is there a point to say running a node in daemontools in case it crashes? [04:00] ryah: yes [04:00] sechrist: I need to check out node's popen interface [04:00] sechrist: it's probably simpler than I think [04:01] ryan[WIN]: ryah haha i should write a JS compiler for my JS vm [04:01] ryan[WIN]: then we could have the coolest eval() ever [04:01] sechrist: didn't facebook release source to fbjs? [04:01] sechrist: that project is really interesting [04:02] ryan[WIN]: why is it interesting [04:03] sechrist: well there may be better implementations now [04:03] sechrist: b [04:03] sechrist: but it was the first jailed javascript system afaik [04:03] ryan[WIN]: it's not really jailed [04:04] sechrist: more of a hypervisor? [04:04] sechrist: it mangles up all variables to create certain scopes and stuff so yeah I guess [04:04] ryan[WIN]: more of a prepend shit [04:04] mostlygeek: sechrist: i think with fbjs you need to just change your function names [04:04] ryan[WIN]: a js compiler for my js vm would be jailed [04:05] ryan[WIN]: obviously much slower than native js but [04:05] ryan[WIN]: you can do stuff like make it only execute a certain # of operations per update [04:05] saikat has joined the channel [04:05] ryan[WIN]: so scripts that run infinite loops can be mitigated [04:05] ryan[WIN]: since they can never be detected [04:06] ryan[WIN]: or you can have a script run for N operations [04:07] ryah: terminals are hard [04:07] sechrist: oh that's neat [04:07] saikat has joined the channel [04:10] ryan[WIN]: http://www.crockford.com/javascript/javascript.html [04:10] ryan[WIN]: seems to be a good article on JS [04:10] Aria: What part of terminals are you touching, ryah? [04:11] ryah: termios [04:12] ryah: just tyring to think about the proper way interface to set raw mode in node [04:12] ryah: i think we're just going to rewrite libreadline in js [04:12] ryah: assume vt102 [04:13] Aria: Yeah, libreadline doesn't sound like a match for Node [04:14] ryah: node-repl is pretty unusable without some history [04:14] Aria: Yeah. Though the suggestion to use rlwrap works surprisingly well. [04:14] ryah: yes but i don't like adding a process [04:14] Aria: (have you looked at libedit at all? I don't know much about its api.) [04:14] Aria: Yeah [04:14] ryah: yes [04:15] ryah: it's the same api as readline [04:15] Aria: Rar. [04:15] ryah: just bsd licensed [04:15] Aria: Well then. [04:15] cloudhead: how about http://github.com/antirez/linenoise [04:15] ryah: i don't think it's so complex though [04:15] Aria: Yeah, from a high level point of view, it's not [04:15] ryah: right after reading linenoise, i realize all you really need is a bindign to tcsetattr() [04:16] ryah: then you just write some escape sequences for vt102 [04:16] Aria: Yeah. [04:16] smtlaissezfaire has joined the channel [04:16] cloudhead: hey is there a way to close an httpClient connection? [04:16] ryah: i mean, who uses a tty that doesn't understand vt102? [04:16] ryah: cloudhead: client.destroy() ? [04:16] Aria: Or that benefits from more than VT102. [04:16] Aria: I'm not sure. [04:16] cloudhead: ryah: sounds good, is it in the doc? [04:16] nsm has joined the channel [04:16] cloudhead: oh it's a stream [04:16] ryah: cloudhead: it derives from net.Stream - it has all it's events and methods [04:17] cloudhead: thought so, cool [04:17] ryah: s/'// [04:17] paul_irish has joined the channel [04:17] cedricv has joined the channel [04:17] ryah: so what about API - require('termios').setRaw() ? [04:18] Aria: Sounds good to me. [04:18] ryah: apparently you can still set baud rates.. [04:18] ryah: strange [04:18] Aria: Hey, don't knock it. [04:18] Aria: I still use a serial console. [04:18] ryah: i wonder what that means for a tty? [04:18] Aria: Mostly TTYs are short-circuited except in the serial case. [04:18] Aria: They just send right away. [04:19] Aria: So baud rates are informational only [04:19] ajpiano has joined the channel [04:20] ryah: Aria: you use a serial terminal? [04:20] Aria: Yeah. [04:21] ryah: why? [04:21] Aria: Not regularly, but often enough. [04:21] ryah: what kind [04:21] Aria: Servers 400 miles from where I live. [04:21] Aria: And a Cisco 2516 is a lot cheaper than an IP KVM [04:21] Aria: ($35 vs $600...) [04:22] Aria: I telnet to it, then serial the last meter. [04:22] mostlygeek: telnet!? [04:22] Aria: Hey, the 2516 doesn't support SSH. [04:22] Aria: (I also dream of buying a VT102 or something fun and old.) [04:23] ryah: what kind of terminal do you have? [04:23] Aria: MacOS Terminal.app most of the time [04:23] ryah: ah, i understand [04:23] ryah: i think [04:23] ryah: :/ [04:23] softdrink has joined the channel [04:23] Aria: Xterm, rxvt, putty most other times. [04:23] ryah: maybe not [04:24] Aria: But in the case I need to access the console of one of these servers, it /is/ at 9600BPS or 57600BPS [04:27] ryah: i'm not sure i understand - do you dial directly into the machine? [04:27] Aria: I telnet to a router in the same rack, which has a serial cable and null-modem adaptor looped over to the other machines. [04:28] Aria: And then type in a username and password and I get a terminal [04:28] ryah: oh ok [04:28] ryah: the last meter, i was thinking, was on your end [04:29] ryah: but it's at the data center [04:29] Aria: Hehe, nope. [04:29] Aria: I intend to do it at both ends some day. [04:30] Aria: Since I like old weird equipment, and the focus of text only. [04:30] ryah: me too [04:30] halorgium: Aria: hook up an old nokia and do it over mobile serial ;) [04:30] Aria: Heh. [04:31] Aria: That would require cell carriers that don't suck. [04:31] halorgium: oh, right [04:31] Aria: (I live somewhere outside of Bumfuck.) [04:31] halorgium: US ;) [04:31] Aria: Hehe. Yes. [04:31] stevendavie has joined the channel [04:31] Aria: Deep rural US [04:32] halorgium: this place is remarkably poorly distributed with communications [04:32] Aria: Yeah? [04:32] halorgium: i expected the US to be more uniform [04:32] Aria: ACTION laughs. [04:32] Aria: Oh hell now. [04:33] halorgium: i mean proportional to population [04:33] Aria: er.. No. [04:35] ajpiano has joined the channel [04:36] jedschmidt has joined the channel [04:42] rictic has joined the channel [04:56] vnguyen has joined the channel [04:58] _announcer: Twitter: "Node.js to update. / Configure - debug warning I tried out a lot. I could build." [ja]-- edvakf. http://twitter.com/edvakf/status/15086900689 [05:11] apalyan has joined the channel [05:12] Neil_ has joined the channel [05:15] ryah: i should just learn emacs command line editting [05:15] ryah: using vi bindings is too annoying [05:16] ryah: well - making node have vi bindings is going to be too annoying [05:16] Aria: Heh. [05:16] Aria: yeah. [05:16] Aria: .oO(emacs: control-A and control-E. Is there more?) [05:17] _announcer: Twitter: "@ Hervebarr I would have preferred, the effect was the sleepless night due to worries and Node.JS: http://nodejs.org/" [fr]-- Romain Ruetschi. http://twitter.com/romac17/status/15087741615 [05:18] ryah: there is much [05:18] ryah: there are many [05:19] fizx has joined the channel [05:19] ryah: god. i can't believe that line editting is such a pain in the ass.. [05:19] ryah: i guess editting only has one t [05:19] mape: the more the merrier [05:22] ryah: terminal i/o is like the most hellish API [05:23] Aria: Yep. [05:23] Aria: It's the ancient weirdest code in Linux, that's for sure. [05:23] Aria: And ain't pretty in Solaris. [05:24] sechrist: terminals haven't changed much in 20 years hehe [05:25] ryah: i just want to have line editting in the node-repl without including massive libraries [05:25] ryah: editing [05:25] ryah: linenoise is okay - but i'd rather just do it myself [05:25] ryah: a good idea in any case [05:27] ryan[WIN]: hm [05:27] ryan[WIN]: i use gedit [05:28] ryan[WIN]: and everyone laughs at me [05:28] ryan[WIN]: :< [05:28] chilts: hahaha :-p [05:28] Aria: ACTION laughs [05:28] ryan[WIN]: :D [05:29] ryan[WIN]: ryah, what kind of line editing do you need [05:29] ryan[WIN]: and how much text are you ever goign to work with in a worst case scenario [05:30] mjr_: Lots of the emacs navigation and editing syntax is already there in OSX. [05:30] Aria: is where in OSX? [05:30] mjr_: In Cocoa, the text input thingies by default understand some emacs things. [05:30] mjr_: And you can easily make them understand the rest of the useful ones. [05:30] Aria: Ah, yeah. [05:31] ryah: linenoise is like 300 lines of C [05:31] ryah: that means, 150 lines of JS [05:31] ryah: i think it can be done [05:31] mjr_: ryah: are you willing to include ncurses bindings with node? If so, I'll bet somebody will write a readline repl. [05:32] ryan[WIN]: ryah, if you aren't terribly frightened about bloat just make a linked list of strings and all sorts of painting algorithm thingies [05:32] ryan[WIN]: to determine how to render [05:32] ryah: mjr_: i was going to.. but i don't know i hate the idea of linking to another library [05:32] ryan[WIN]: 150 lines is nothing so [05:32] ryan[WIN]: even the worst algorithm will perform [05:32] ryan[WIN]: oh you meant existing library [05:32] ryan[WIN]: not as in the text you'd be working with [05:34] ryah: i think tcsetattr() and tcgetattr() are the only bindings necessary [05:34] ryah: the rest is just normal read() and write() [05:34] Aria: Yep. [05:35] mjr_: does termios give you the right characters for positinoing? [05:36] ryah: mjr_: no - after you set it into raw mode, you inspect $TERM nd start writing escpe a particular esc seq protocol [05:36] ryah: usually vt102 [05:36] ryan[WIN]: http://farm4.static.flickr.com/3422/3953914015_fb11e85da2_b.jpg [05:37] ryah: that allows you to position the cursor [05:37] ryan[WIN]: vt100 4 lyfe [05:38] ryah: i'm perfectly fine with only supporting TERM=vt102 [05:38] ryan[WIN]: anyone who isn't vt102 needs to get a life imho [05:38] ryah: and giving them the current interface if that doesn't match [05:38] ryah: (that is, the node-repl interface) [05:38] ryan[WIN]: i hope i'm not about to sound trollish but [05:39] mjr_: Oh, OK. Well if you can assume vt102, then yeah i guess you just need a way to set the input to cbreak. [05:39] ryan[WIN]: will there be a remote telnet style port for repl debugging [05:39] mjr_: ryan[WIN]: there already is [05:39] ryan[WIN]: ok cool [05:39] mjr_: check the API docs, there's an example in there. [05:40] ryan[WIN]: i haven't gotten that far i don't usually repl debug [05:40] ryah: i guess mac term uses TERM=xterm so you have to use that. but you use the lowest common denominator of xterm and vt102 [05:40] ryah: which i believe have a lot of overlap [05:40] ryan[WIN]: i run it and if it seems to work I LET IT RIDE [05:40] mjr_: I think if you assume the xterm color stuff, then you make most people happy, because a lot of people love pretty colors. [05:41] ryah: yeah [05:41] ryah: color prompt [05:41] ryah: node pops up "node>" in color [05:41] ryah: would be good [05:41] ryah: with history [05:41] ryah: people will dig it [05:42] mjr_: I wrote a readline in C++ a couple of years ago. There are some annoying cases to handle, but it isn't that complicated. [05:42] mjr_: Ought to be way easier in JS [05:42] ryah: really? why? [05:43] ryan[WIN]: uh [05:43] ryan[WIN]: c++ has a readline :D [05:43] mjr_: GPL doesn't work for everybody though. [05:43] ryan[WIN]: do you mean vt102 readline [05:44] ryan[WIN]: stripping various control characters [05:44] mjr_: ryah: I guess that's my bias toward JS these days. I try to avoid C++ if I can help it. Too many tricky, hard to find bugs. [05:46] mjr_: ryan[WIN]: By "readline" I mean something like GNU readline, an interactive history editor and auto completion library. [05:46] ryan[WIN]: oh [05:47] ryan[WIN]: ok [05:47] mjr_: Which is what ryah and I are wishing we had for the node repl. [05:47] _announcer: Twitter: "vertex.js is a graph db inspired by filesystems that support garbage collection. node.js, tokyocabinet, HTTP & JSON. http://bit.ly/cYYYdV"-- Jillis ter Hove. http://twitter.com/BruceJillis/status/15088956756 [05:47] mjr_: Right now you can wrap it with rlwrap or socat, but it's all line based. [05:47] mjr_: So basically no tab completion. [05:50] ryah: tab completion, drool [05:56] micheil has joined the channel [06:00] mikeal has joined the channel [06:02] markwubben has joined the channel [06:03] _announcer: Twitter: "#nodejs 0.1.97 is out. See changelog http://nodejs.org/changelog.html"-- Patrick Antivackis. http://twitter.com/PatrickA8s/status/15089570114 [06:05] soko has joined the channel [06:06] cloudhead: what's the signal for Ctrl-D? [06:07] halorgium: cloudhead: no signal [06:07] cloudhead: halorgium: any way I can listen for it? [06:07] Aria: End of input. [06:08] ryah: cloudhead: SIGTTOU ? [06:08] halorgium: using hexdump it seems to be 0x16 [06:08] Aria: 'end' [06:08] ryah: cloudhead: ctrl+q to resume [06:08] halorgium: ryah: that'd be ^s eh? [06:08] micheil: hm.. [06:11] cloudhead: hmm [06:11] _announcer: Twitter: "Great chat IRC with @fictorial, smart people are everywhere #jefe #nodejs"-- Benson Wong. http://twitter.com/mostlygeek/status/15089891410 [06:11] cloudhead: I'm just gonna listen on 'exit' I think [06:11] halorgium: cloudhead: if it is a Readable Stream, just use 'end' as Aria said [06:16] cloudhead: kk [06:24] tlrobinson_ has joined the channel [06:26] bpot has joined the channel [06:30] qFox has joined the channel [06:37] ryah: halorgium: oh [06:38] ryah: ACTION has a tcsetattr bindign now [06:38] ryah: time to rewrite readline ^^ [06:43] b_erb has joined the channel [06:48] cloudhead: ryah: that'd be cool : > [06:50] cloudhead: fun-fact: I just put out an http-console utility, and thought 'damn, I wish I could bundle rlwrap somehow' [06:50] dridge has joined the channel [06:59] SubStack: I hate Socket.IO so much >_< [07:01] SubStack: also oo-class [07:01] ryah: cloudhead: yeah - that definitely needs some readline action [07:02] SubStack: ACTION writes a version of Socket.IO that actually works [07:05] trochala has joined the channel [07:09] eleftherios has joined the channel [07:09] _announcer: Twitter: "@ Zziuni Node.JS teaching materials has risen. You're missing one of the slides. I've lost a part of the speed measurement values." [ko]-- A.J. http://twitter.com/andrwj/status/15092084902 [07:09] eleftherios has left the channel [07:12] ryah: wow.. is _announcer auto-translating to english? [07:14] Tim_Smart: Either that, or it is a part of the twitter api [07:15] _announcer: Twitter: "This is good: YUI Theater — Ryan Dahl: “Introduction to NodeJS” (58 min.) - http://is.gd/ciHyK"-- Lee Johnson. http://twitter.com/ljohndotnet/status/15092278192 [07:15] Tim_Smart: !so-check [07:15] _announcer: Sorry. Nothing new to announce. [07:15] Tim_Smart: !so-update [07:16] halorgium: ryah: oh? [07:28] mostlygeek has joined the channel [07:29] mfeiri_ has joined the channel [07:30] sveimac has joined the channel [07:38] virtuo has joined the channel [07:39] virtuo has joined the channel [07:44] pdelgallego has joined the channel [07:52] mape: ryah: uses the google translate api [07:52] elbot_js has joined the channel [07:55] tjgillies: hrm im using array.shift(); and its not shrinking the array size [07:55] tjgillies: i get the same value everytime [07:55] ditesh|cassini has joined the channel [07:56] elbot_js has joined the channel [07:56] elbot_js has joined the channel [07:57] _announcer: Twitter: "@heckj jquery is great tool. No experience yet with node.js though. Let us know how well it's working."-- Rick Gordon. http://twitter.com/rgordon0/status/15093762721 [07:57] elbot_js has joined the channel [07:58] rictic has joined the channel [08:02] sanitz has joined the channel [08:05] ewdafa has joined the channel [08:07] romainhuet has joined the channel [08:08] pdelgallego has joined the channel [08:09] N` has joined the channel [08:09] charlesjolley_ has joined the channel [08:09] bpot has joined the channel [08:11] SubStack: mscdex: finally got SocketIO working in both chromium and firefox with your branch! [08:21] keyvan has joined the channel [08:25] sveimac has joined the channel [08:29] ph^ has joined the channel [08:30] kepheus has joined the channel [08:31] ph^: can I detect when a brower's connection is dead (either by navigating away or closing the browser), by listening for error on the net.Stream of a http.ServerRequest.connection? [08:34] halorgium: ph^: are you talking about when you are sending data back over a long period of time? [08:34] ph^: halorgium: yes [08:34] ph^: basically when the browser makes a request, it's doing a longpoll over xhr [08:35] halorgium: you might receive a 'timeout' or 'end' event [08:35] halorgium: TCP should also eventually give up [08:35] halorgium: you could implement your own manually setTimeout to close the connection and thus force the browser to reconnect [08:36] ph^: when the browser makes the request, it's added to an EventEmitter. And I just need to know when to remove it from the EventEmitter again [08:36] ph^: I guess timeout and/or end will do [08:37] halorgium: yip, encapsulate that logic and call it from any error/termination state [08:37] ph^: thanks [08:37] jameshome has joined the channel [08:40] _announcer: Twitter: "@felixge Stuff like sys.inherits, process._buteLength. Every day I find a new method that's not mentioned in the docs. #nodejs"-- jordanovskid. http://twitter.com/jordanovskid/status/15095293467 [08:41] xla has joined the channel [08:42] xla has joined the channel [08:48] mAritz has joined the channel [08:49] mfeiri_ has joined the channel [08:49] _announcer: Twitter: "Presentation about technology behind Widescript 2night @ Amsterdam Ruby Group. Join if Interested in #riak #nodejs: http://amsterdam-rb.org/"-- Jeroen van Duffelen. http://twitter.com/jeroenvduffelen/status/15095615181 [08:56] hassox has joined the channel [08:56] lucas_ has joined the channel [09:08] maushu has joined the channel [09:08] cedricv has joined the channel [09:16] _announcer: Twitter: "node.js looks very interesting! has anyone done anything with it?"-- Adrian Quek. http://twitter.com/donaq/status/15096573462 [09:24] ec: hi [09:24] halorgium: oh no! [09:25] mscdex: ohai [09:30] mitkok has joined the channel [09:33] mape: If there is anyone swedish in here.. http://www.iis.se/internet-for-alla/live mr Curl talking about transporation(libevent) [09:35] johanhil: thanks mape [09:35] mape: :) [09:36] halorgium: ACTION attempts to intuit-translate ;) [09:37] mape: hehe talking about using events in curl to scale, now websockets, and before that latency in tcp [09:37] halorgium: yip, can understand a few words [09:38] halorgium: similar-ish to deutsch? [09:38] mape: Well, if you don't know any of them I guess they can seem similar ;) [09:39] halorgium: haha, true! [09:40] halorgium: hearing some word origins :P [09:45] hellp has joined the channel [09:46] keyvan has joined the channel [09:46] rektide: anyone have some vaguely recent (see: 2010) benches of nginx v. node ? [09:46] rektide: cant find any appropriate slides from _ry atm [09:48] halorgium: rektide: http://nodejs.org/jsconf2010.pdf ? [09:48] Tim_Smart: Yeah those ^ [09:49] rektide: thanks, thats exactly the deck i was looking for [10:14] ec: woah. [10:14] ec: I come back to my computer, and *completely* misread that [10:14] ec: 09:49:29 < rektide> thanks, thats exactly the dick i was looking for [10:19] ditesh|cassini has joined the channel [10:27] kodisha_ has joined the channel [10:32] ryan[WIN]: hey in javascript what's a fast way to sort a string [10:32] ryan[WIN]: i can break a string up into an array of characters and then recombine but [10:32] ryan[WIN]: hoping there's a better way [10:33] _announcer: Twitter: "@pedrogteixeira Yes. I presented it as an example for a node.js based implementation of the websocket stuff. I hope you don't mind ;)"-- Michael Johann. http://twitter.com/malagant/status/15099376759 [10:37] Tim_Smart: ryan[WIN]: Yeah the whole split('') etc is probably the best way [10:39] Tim_Smart: Otherwise you can play with these string methods: http://gist.github.com/419725 [10:39] cedricv has joined the channel [10:39] ryan[WIN]: lol.split("").sort().join("") [10:39] ryan[WIN]: it's ugly as heck but [10:40] ryan[WIN]: it works :< [10:41] nsm has joined the channel [10:42] Tim_Smart: Yeah, well, it should be pretty damn fast [10:45] Tim_Smart: ryan[WIN]: Just tried this in repl, and it works nice: Array.prototype.slice.call("some string") [10:46] Tim_Smart: and it converts it into an array [10:46] Tim_Smart: not sure of the performance implications it brings compared to split('') [10:48] ryan[WIN]: hm [10:48] Tim_Smart: Doesn't make the code any nicer though :( [10:58] ryan[WIN]: hehe [11:03] _announcer: Twitter: "Real-time Collaborative Editing with Web Sockets, Node.js & Redis http://icio.us/pq2410"-- vlad trifa. http://twitter.com/vladounet/status/15100492463 [11:03] MattJ has joined the channel [11:06] sveimac has joined the channel [11:08] mscdex: hmm [11:14] rnewson has joined the channel [11:14] mfeiri has joined the channel [11:24] _announcer: Twitter: "Very glad to come nmerouze @ # # WebWorkersCamp http://barcamp.org/WebWorkersCamp action node.js will climb" [fr]-- Ori A Pekelman. http://twitter.com/OriPekelman/status/15101330574 [11:40] spotify|rsms has joined the channel [11:46] paul_irish has joined the channel [11:48] _announcer: Twitter: "Discovered NodeJS and really, ca sends wood!" [fr]-- Cyril Nicodème. http://twitter.com/cx42net/status/15102335218 [11:50] _announcer: Twitter: "Tonight Amsterdam.rb: # # Nodejs and Coffee Script in the Public Library (http://is.gd/cwMVz) Come and follow @ amsrb" [nl]-- Finalist IT Group. http://twitter.com/finalist/status/15102416554 [11:54] rnewson has joined the channel [11:54] _announcer: Twitter: "The github Websocket node.js for any library to Find" [ja]-- KOBA789. http://twitter.com/koba789/status/15102622174 [11:56] _announcer: Twitter: "has been reading about node.js all evening. All I need is a pet project to try it out on. Thinking cap is on."-- Robbie Shepherd. http://twitter.com/robbie_shepherd/status/15102687095 [12:05] rsms has joined the channel [12:06] creationix has joined the channel [12:10] |Bolt| has joined the channel [12:11] keyvan has joined the channel [12:12] alex-desktop_ has joined the channel [12:12] sudoer has joined the channel [12:13] joshowens has joined the channel [12:21] jedschmidt has joined the channel [12:31] kodisha: hey guys, a bit of git help? [12:32] kodisha: so i'm creating MVC for node, and then i want to make another project which is blog engine based on that MVC engine, how do i tie that two repos together? [12:32] creationix: kodisha: git submodules [12:32] creationix: or npm dependencies [12:33] kodisha: thanks man, i will google it now [12:33] creationix: I use git submodules for wheat (github.com/creationix/wheat) [12:33] kodisha: can git submodules reside in same toplevel dir as parent project? [12:34] creationix: kodisha: I think they have to be subfolders [12:35] creationix: kodisha: I've got a middleware framework that you should use as a base for your mvc layer. I'm still waiting on my git admin to switch the flag to public so others can see it [12:36] creationix: I plan on rewriting all my apps to use it [12:36] Tim_Smart: creationix: Hows the framework coming along (if you had time to work on it) [12:36] creationix: Tim_Smart: it's about the same level as ruby's rack [12:37] creationix: about half done, but quite usable now [12:37] Tim_Smart: Ah nice, I'm looking at making a start on biggie soon [12:37] creationix: I wanted to release it Friday night, but I haven't been able to get ahold of the git admin at work [12:37] creationix: since it's through my work, I can't release it on my github [12:37] Tim_Smart: ah >.< [12:38] creationix: I suppose I could upload a tarball somewhere though [12:38] mscdex: hmm, what is the reason why v8/javascript allows [] on strings as a getter but not a setter? [12:38] creationix: mscdex: js strings are immutable [12:38] creationix: it's a language feature [12:39] mscdex: bleh [12:39] Neil_ has joined the channel [12:39] creationix: mscdex: but buffers are mutable [12:39] micheil: hmm.. what's with a lot of languages now embedding xml in their syntax? [12:39] mscdex: hmm [12:39] mscdex: buffers don't have the [] operator though right? [12:40] |Bolt| has joined the channel [12:40] mscdex: oh wait nevermind [12:40] Tim_Smart: Has anyone got a server at http://prgmr.com/xen/ ? [12:40] mscdex: hehe [12:40] creationix: I just noticed there is a different crowd in the room than I'm used to [12:41] micheil: creationix: just slightly different [12:41] creationix: I'm in Sweden, so most people in my home time-zone are asleep still [12:41] stagas has joined the channel [12:41] creationix: micheil: it's still late in the day for you guys right? [12:42] micheil: oh.. um, 22:41 [12:42] creationix: Tim_Smart: do you want a tarball to start playing with connect [12:42] Tim_Smart: I wouldn't say no :) [12:44] creationix: ok, uploading... [12:47] creationix: Tim_Smart: http://static.creationix.com/connect.tar.gz [12:47] creationix: just don't bookmark it or anything, updates will be going to github.com/extjs as soon as I hear back from work [12:47] stagas_ has joined the channel [12:48] creationix: it's made by me and visionmedia [12:49] Tim_Smart: creationix: Cool. Got the tarball, will look through it soon [12:50] kodisha: hey guys, what is the best practice for config files (JSON format) when bunch of modules should read config? files on disc? files on disc and then append to config global object? config as module and then require where needed? [12:50] _announcer: Twitter: "Parsing file uploads at 500 mb/s with node.js: http://bit.ly/9EGloP #nodejs"-- Felix Geisendörfer. http://twitter.com/felixge/status/15105300425 [12:50] mscdex: this is kinda interesting... a pure js implementation of in-place quicksort actually beats using string.split("").sort().join("") for strings less than 1700 chars, at which point they take about the same time [12:51] mscdex: on my machine anyway [12:51] Tim_Smart: kodisha: require.registerExtension could work there [12:52] creationix: kodisha: I like config as module [12:52] creationix: then you can later put some custom logic in there if neede [12:52] creationix: but if you want to restrict the config file to pure data, then json is perfect [12:53] creationix: just a stricter syntax [12:54] kodisha: so bunch of require calls in modules cant hurt? Tim_Smart : cant find any docs on registerExtension [12:55] |Bolt| has left the channel [12:56] Tim_Smart: kodisha: http://github.com/ry/node/blob/master/test/simple/test-module-loading.js#L76 [12:56] |Bolt| has joined the channel [12:56] _announcer: Twitter: "That is not bad)) RT @ felixge: Parsing file uploads at 500 mb / s with node.js: http://bit.ly/9EGloP # nodejs" [ru]-- Serge Shirokov. http://twitter.com/kurokikaze/status/15105616466 [12:57] felixge has joined the channel [12:57] felixge has joined the channel [12:58] mscdex: ryah: there is a typo in the sys.log example in the api doc [12:58] |Bolt|: join #nodejs"[ru] [12:59] b_erb: nice work, felixge [12:59] felixge: b_erb: thanks [13:00] |Bolt| has left the channel [13:01] _announcer: Twitter: "node.js version is also hard to compile ..." [ja]-- KOBA789. http://twitter.com/koba789/status/15105892757 [13:01] Azeroth has joined the channel [13:02] creationix: kodisha: remember you can require a whole directory using index.js inside it [13:02] creationix: and then in the index.js require the individual sub-files using relative paths [13:03] mscdex: node is hard to compile? :S [13:04] Tim_Smart: creationix: I have decided on two 'sections' for biggie: Several independent modules like the router, orm, asset packager etc etc. and the 'frame', with will be an event driven 'frame' which will aid in making modules work together well and in the deployment of apps [13:05] creationix: mscdex: only on windows ;) [13:05] mscdex: that's about it though [13:06] mscdex: i wonder what they were having issues with [13:06] creationix: no clue, might not have a c compiler or something [13:07] creationix: Tim_Smart: I decided to keep the middleware stack seperate from the hosting helper [13:07] mscdex: heh [13:07] creationix: seems cleaner that way [13:07] _announcer: Twitter: "@LukeInTH Have you tried the Node.js support from Heroku ?"-- Somchok Sakjiraphong. http://twitter.com/sunny36/status/15106189717 [13:07] creationix: and the middleware layers can be shared among different frameworks [13:10] Tim_Smart: creationix: Cool. Yeah that's what I will be aiming for. Also I want to make sure it is easy to drop in any commonJS module and immediately start hacking with it, like it was originally part of the framework. The idea is to try keep is as simple and un-magical as possible. [13:10] creationix: connect is pretty un-magical [13:10] creationix: it's very node-centric [13:10] Tim_Smart: Awesome, I better check it out sooner then :p [13:11] Tim_Smart: I think the main thing that will make biggie different will be the ORM. I started to discuss with jashkenas a little about it [13:12] Tim_Smart: *discuss it [13:12] Tim_Smart: Err I'm failing at grammar atm [13:14] drudge: mongoose is pretty awesome [13:14] halorgium: creationix: you got the source online? [13:15] creationix: halorgium: not a git repo but I do have a tarball of a snapshot [13:15] creationix: static.creationix.com/connect.tar.gz I think [13:15] creationix: yep, that's the one [13:15] halorgium: old school ;) [13:16] creationix: it should be appearing at github.com/extjs/connect soon [13:16] technoweenie has joined the channel [13:16] creationix: but I'm not an admin on the extjs account (my work) [13:16] halorgium: ask ^^ to make extjs an org ;) [13:17] creationix: well, since they may money of selling software, that would be misleading [13:17] creationix: I'm glad they're letting me MIT this middleware layer [13:17] technoweenie: creationix: he means a github org [13:17] halorgium: yer, they win ;) [13:17] creationix: technoweenie: ahh, makes sense [13:18] technoweenie: an org is essentially a github group acct w/ teams [13:18] technoweenie: [13:18] Tim_Smart: felixge: formidable looks good :) [13:18] technoweenie: felixge: excellent article on form parsing! [13:18] felixge: thx @ Tim_Smart / technoweenie [13:19] felixge: too bad I won't be able to comment on the hacker news thread [13:19] gwoo has joined the channel [13:19] felixge: ACTION forgot to turn off the noprocrast mode [13:19] felixge: :( [13:19] creationix: technoweenie: wow, never knew about that one, I'll ask about it [13:19] technoweenie: felixge: just curious, have you checked how much memory node takes while its receiving a file [13:19] technoweenie: creationix: its not launched yet. [13:20] felixge: technoweenie: unless there is some leak in the net/http code, it should only take the amount of memory of the current chunk [13:20] felixge: technoweenie: the upload is throttled to never go faster than it can be written to disk [13:20] felixge: technoweenie: but no, haven't scientifically studied it [13:20] technoweenie: cool [13:21] halorgium: creationix: this looks good [13:21] halorgium: is there a reason why you didn't do next(err, req, res) ? [13:21] technoweenie: web framework? [13:22] technoweenie: is there a link to share [13:22] creationix: halorgium: where? [13:22] halorgium: creationix: for middlewares [13:22] creationix: you mean, why did I make the args optional? [13:22] Tim_Smart: felixge: What library are you using for thumbnail generation? [13:22] felixge: Tim_Smart: image magick from the command line [13:22] Tim_Smart: ok cool [13:22] _announcer: Twitter: "@tizzle @felixge Is there any coherent web framework yet for Node.js? Piecing together form uploads and stuff like this…"-- Alper Çuğun. http://twitter.com/alper/status/15107027576 [13:23] Tim_Smart: I have a social media site that I will be working on soon, I'm pushing the just to use node to serve it [13:23] halorgium: creationix: nah, the wrapping should always be optional, but instead of passing the "next" function, pass the sub module which you call with the (err, req, res) [13:23] Tim_Smart: *pushing them [13:23] creationix: halorgium: I guess I don't understand the question [13:24] _announcer: Twitter: "@alper there is express. But I'm not a fan, my hope is for fab to become the #nodejs foundation for node.js frameworks."-- Felix Geisendörfer. http://twitter.com/felixge/status/15107086744 [13:24] creationix: next is just a callback that handles the next step in the iteration [13:24] creationix: you can't call the next layer directly because there is a little other logic between layers [13:24] felixge: Tim_Smart: if you need a free transloadit account, let me know [13:24] technoweenie: i dont see fab becoming popular [13:24] felixge: Tim_Smart: the new version should be ready to use this week [13:24] technoweenie: its just too weird i think [13:24] Tim_Smart: felixge: OK, sounds exciting [13:24] felixge: technoweenie: ruby was weird :) [13:25] creationix: fab is genius, but yeah, the weird factor will take some time to get over [13:25] jedschmidt: these are things i worry about. [13:25] halorgium: creationix: ok, so the layers are not identical from the outside? [13:25] technoweenie: felixge: yes, but it took rails to get people to notice ruby [13:25] jedschmidt: async makes it even weirder, unfortunately. [13:25] halorgium: lemme have a look at the logic [13:25] creationix: halorgium: they all have a handle function [13:25] Tim_Smart: felixge: Hmm, actually, I could seriously look into it. The guy was thinking about have a video section, so video upload very well might be needed. [13:25] technoweenie: jedschmidt: it just needs to be popular enough to have a fabjs conf in tokyo [13:26] technoweenie: i'm really looking for a good excuse to go to tokyo if you cant tell [13:26] jedschmidt: technoweenie: no excuse needed. [13:26] jedschmidt: technoweenie: you've got a tour guide anytime. [13:27] paul_irish has joined the channel [13:27] drudge: what is fab [13:27] felixge: Tim_Smart: cool, ping me sometime later this week if you want to give it a shot [13:27] technoweenie: jedschmidt: whats the status on fab anyway? [13:27] felixge: drudge: http://github.com/jed/fab [13:27] jedschmidt: technoweenie: i'm not sure tokyo tech has the qualities to make a successful conference. [13:27] halorgium: creationix: right, curious why this logic you speak of is necessary [13:27] jedschmidt: technoweenie: i've been bogged down on client work for the past week point five. [13:27] jedschmidt: technoweenie: will be getting back to it at the end of the week. [13:27] technoweenie: jedschmidt: that's too bad... ruby has the ruby kaigi every year. i really should go [13:27] felixge: jedschmidt: there was a CakePHP conference in tokyo [13:27] drudge: oh man this thing with all the ())(() :P [13:28] jedschmidt: technoweenie: i feel bad about neglecting it for a bit, but i'll get back on it for sure. [13:28] halorgium: creationix: i'll try and get a grip on the innards, still looking at how it executes [13:28] felixge: jedschmidt: it was actually bigger than all the previous ones (orlando, argentina, berlin) [13:28] Tim_Smart: Yeah (fab) gives me headache for some reason [13:28] ph^_ has joined the channel [13:28] technoweenie: jedschmidt: ah dont feel bad [13:28] felixge: fab makes me feel like playing with rocket fuel [13:28] felixge: I like playing with rocket fuel [13:28] jedschmidt: felixge: php is huge here. all my friends startups are php. js less so, since so much dev is mobile. [13:28] creationix: halorgium: even if the minimal logic isn't needed, it's nice to have a hook where you can inject stuff later on without having to modify the middleware libraries [13:28] maushu: !so-last [13:29] _announcer: Last Question: "nodejs and database communication - how?" by FractalizeR. http://stackoverflow.com/questions/2934884 [13:29] jedschmidt: technoweenie: thanks, man. it's folks like you that motivate me to get back on it. [13:29] drudge: node led me to mongodb which is totally awesome [13:29] creationix: my goal is for middleware libraries to be usable across different frameworks [13:29] technoweenie: creationix: do you have a spec for the middleware framework [13:29] creationix: so passing in a generic callback that just get's called when a layer is done keeps it simple [13:30] creationix: technoweenie: not written up, it's fairly alpha [13:30] technoweenie: having something like rack could be useful i think [13:30] jedschmidt: i'm just surprised how polarized responses to (fab) are, it's weird. [13:30] creationix: so far it's just visionmedia and I writing middleware libs [13:30] jedschmidt: creationix: is it async? [13:30] creationix: technoweenie: I don't want to abstract away node like a rack clone or ejsgi would do [13:30] creationix: jedschmidt: very much so [13:31] creationix: though some of the middleware layers will buffer the streams [13:31] felixge: jedschmidt: You know japanese, I know german. We should be able to re-program some minds ;) [13:31] jedschmidt: creationix: cool, that was my big issue with express. [13:31] technoweenie: creationix: sure... i think the fact that node has one great web server/client simplifies things a lot too [13:31] jedschmidt: felixge: sign me up! [13:31] pdelgallego has joined the channel [13:31] halorgium: jedschmidt: you could do async with express ;) [13:31] creationix: technoweenie: well, the spec if heavily based on node's http callback [13:31] creationix: it passes raw req and res objects around [13:31] jedschmidt: halorgium: async is an afterthought in express, IMHO. [13:31] halorgium: jedschmidt: totally ;) [13:31] creationix: and those are somewhat rack-like [13:32] halorgium: hence the ';)' [13:32] technoweenie: creationix: yea, i'm anxious to see what you come up with [13:32] jedschmidt: halorgium: oh, heh. you'd think i'd be good at grokking emoticons. [13:32] technoweenie: who the fuck even winks anymore [13:32] jedschmidt: creationix: yeah, me too. [13:32] technoweenie: IRL i mean [13:32] halorgium: technoweenie: girls? [13:32] PyroPeter has joined the channel [13:33] halorgium: creationix: how would a branching middleware function? [13:33] Ori_P has joined the channel [13:33] technoweenie: touche [13:33] jedschmidt: creationix: are you blessing a templating scheme? [13:33] halorgium: creationix: and also, dynamically creating layers [13:34] creationix: halorgium: I'm not sure it would be possible, the layers are compiled staticly, they do filter based on url paths though [13:34] PyroPete1 has joined the channel [13:34] Zarathu has joined the channel [13:34] creationix: so some middleware layers (like authorization) may only apply to certain routes [13:34] halorgium: creationix: what is the reason for static compilation? [13:34] creationix: and you can nest connect routes as middleware layers themselves [13:35] halorgium: are routes a concept outside of middlewares? [13:35] jedschmidt: halorgium: i thought middleware was static by definition. [13:35] creationix: halorgium: the list is still iterated through, it's just not mutable or re-built on each request [13:35] creationix: that would be terribly slow [13:35] creationix: the layers themselves decide per-request if they want to activate [13:36] Psytherium has joined the channel [13:36] halorgium: creationix: i'm talking branching to a different set per-request [13:36] creationix: my gzip layer, for example, won't do anything if the request doesn't Accept-Encoding gzip [13:36] halorgium: jedschmidt: not necessarily [13:37] creationix: halorgium: if you can think of a way that doesn't involve rebuilding the entire stack per request, is fast, and has a real use-case then I'll see about fitting it in [13:37] creationix: I just haven't found a need for it yet [13:38] _announcer: Twitter: "@tizzle I agree about node.js! I am in a lurking mode - experimenting but nothing serious/commercial done as yet! Lets trust @felixge ;-)"-- Tarique Sani. http://twitter.com/tariquesani/status/15107859401 [13:38] halorgium: creationix: as long as i can have an instance of this "stack" and call into it with the req/res [13:38] halorgium: that should be enough [13:38] creationix: halorgium: besides, there is nothing stopping you from writing a full framework (like rails) as a single middleware layer [13:38] creationix: you can put all the logic you need in there [13:38] ly- has joined the channel [13:38] ly- has joined the channel [13:39] halorgium: creationix: i guess i'm interested in all parts being middleware and thus not having special meaning [13:39] halorgium: ACTION checks out the router [13:39] ph^ has joined the channel [13:39] jedschmidt: halorgium: that's how i feel about frameworks too. [13:40] creationix: the "router" middleware in the tarball is basically node-router ported to a middleware layer [13:40] ph^ has joined the channel [13:40] creationix: it's not all of node-router since parts of what node-router provided are split out into other layers (static file serving for example) [13:40] creationix: see the sousaball example for an example [13:42] creationix: jedschmidt: no, no templating. I'm not sure how templating fits into middleware [13:42] halorgium: creationix: haha, you can make a middleware which does the template eval async as data goes through the pipeline! ;) [13:42] jedschmidt: really? templating to me is the canonical case of middleware. [13:42] creationix: even sinatra (which if higher-level than rack) doesn't provide a blessed template language, though it does provide an abstract interface to it [13:43] creationix: jedschmidt: how so? [13:43] halorgium: X-Template-Type: haml.js [13:43] creationix: cool [13:43] creationix: go for it then [13:43] Zarathu has left the channel [13:43] halorgium: creationix: this looks good, i'll have a play with making a simple branching middleware [13:43] jedschmidt: it sits between the client and an app that gives an object response. [13:44] halorgium: and see if i get stuck [13:44] creationix: I see, makes sense [13:44] joshbuddy has joined the channel [13:45] halorgium: creationix: the most simple being JSON.stringify ;) [13:47] technoweenie: so is it good form to include an err argument at the front of all js callbacks [13:47] creationix: thanks for the feedback guys, it's almost 4pm here and I haven't even had breakfast, I better get moving [13:47] creationix: technoweenie: it's the node standard [13:48] creationix: it was much debated, but you do need the error somewhere when doing async code [13:48] creationix: exceptions don't work with callbacks [13:49] technoweenie: so this: https://gist.github.com/941a58f877685de208e5 [13:49] technoweenie: would i need the catch inside the addListener [13:49] halorgium: technoweenie: yer [13:49] halorgium: that code is not executed then [13:49] creationix: technoweenie: yeah, if the callback threw an exception it wouldn't be caught [13:49] creationix: js failed us on that one [13:49] jherdman has joined the channel [13:50] halorgium: creationix: not really, leaping across the stack would be a fun mind explosion! [13:50] halorgium: or do you mean by not providing a nicer way? [13:50] creationix: guess so, my ocaml instructor always told me exceptions were evil anyway [13:50] rnewson_ has joined the channel [13:50] halorgium: they are [13:51] creationix: halorgium: that's what I meant, but js was rushed out the door and java junk was forced on the language [13:51] creationix: I'm sure a more elegant solution might have existed otherwise [13:51] gf3 has joined the channel [13:51] ceej: so today i'm porting over http://codeigniter.com/user_guide/database/index.html [13:51] ceej: wish me luck :) [13:51] halorgium: creationix: yip, most likely. but it wouldn't exist :P [13:52] creationix: ceej: have fun [13:52] maushu: http://www.hpl.hp.com/news/2010/apr-jun/wastefordatacenter.html [13:52] maushu: Oh, this is so awesome. [13:52] halorgium: ceej: php lib? [13:52] maushu: "Sorry, we are having problems with that rack. We need more cows." [13:52] ceej: creationix: ty halorgium: ye, I want to port our api that we use for our systems to node.js [13:53] ceej: which is built on ci [13:53] maushu: "The cloud is up again. We've got cows!" [13:54] creationix: ceej, that's not going to be easy, php is blocking, node is non-blocking. most apis will need to be redesigned [13:54] ceej: we're porting http://www.rxvantage.com over to use our api, so I thought why not port the api to node.js as it can run all the queries at once [13:54] Tim_Smart: "Milk for sale" [13:54] maushu: Seriously, this is a infinite source of jokes and puns. [13:54] b_erb: have fun [13:55] ceej: creationix: well it's pretty simple, the client calls the api and gets back the data, node.js will be able to run everything at once and then send everything back making things a lot quicker as it only has to rely on the slowest call [13:55] Ori_P has joined the channel [13:56] ceej: I'm going to be using phpjs.org for now to make the port quicker [13:56] Tim_Smart: maushu: They could be blunt, and say "404 - We don't have enough crap" [13:57] maushu: Oh lol! [13:57] orls has joined the channel [13:58] orls: hi all [13:58] orls: anyone alive in here? [13:58] technoweenie: does anyone know of any temp file libs in node [13:58] halorgium: creationix: a couple of us were wanting to try an org another meet [13:59] wbruce has joined the channel [13:59] technoweenie: yea palo alto's a bit of a drive though [13:59] _announcer: Twitter: "Handling massive uploads with node.js: http://j.mp/ct6XT1 #node"-- Loggly, Inc.. http://twitter.com/loggly/status/15109082658 [13:59] halorgium: technoweenie: up in sf ;) [13:59] halorgium: for us slackers [13:59] technoweenie: well if i can count on a ride then of course im down :) [13:59] ceej: creationix: do you know the link to the script that makes it so I don't have to kill the node every time I update the server code? [14:00] halorgium: technoweenie: we could've caught the train down [14:00] technoweenie: halorgium: ahh ok [14:00] ceej: that's going to be the biggest pain if i have to do that [14:00] technoweenie: i dont know of any hot code reloading libs [14:01] halorgium: technoweenie: port tempfile.rb to js ;) [14:01] technoweenie: yea thats what i told wbruce [14:01] wbruce: woo! [14:01] orls: does anyone know how to catch an error from require()? [14:01] technoweenie: halorgium: jeez dude what are you doing up anyway? are you still in sf [14:01] halorgium: technoweenie: i am [14:01] ceej: someone told me the other day and I forgot to write down the link again [14:01] technoweenie: orls: did you try try {} [14:01] orls: yup, throws it anyway [14:01] technoweenie: do or do not there is no... oh crap [14:02] technoweenie: orls: damn that js [14:02] mertimor has joined the channel [14:02] ceej: technoweenie: found it http://github.com/cj/node-supervisor [14:02] ceej: isaacs lib :) [14:02] halorgium: ACTION imports connect into git just so he can show diffs [14:02] technoweenie: oh my god, you can chain ()'s to print [14:03] tjholowaychuk has joined the channel [14:04] orls: is there any other way to do what require does...without actually using require? :P [14:06] maushu: readfile and eval?~ [14:06] orls: eek... [14:07] tjholowaychuk: "technoweenie: yea, express doesnt impress me" lol, coming from the guy who didnt even know how to write javascript [14:07] tjholowaychuk: but no not really just use require? why not? [14:07] maushu: tjholowaychuk: Enjoy your closures. [14:08] [[zz]] has joined the channel [14:08] halorgium: tjholowaychuk: so, i'm wondering if it would be good to make the handlers for the router routes accept the same args as handle() [14:09] technoweenie: tjholowaychuk: ha, got a problem with me because i dont care for your web framework [14:09] halorgium: and having the routes sync seems bad [14:09] ph^: is npm the de facto module manager? [14:09] tjholowaychuk: technoweenie: no lol because you have written nothing appealing so don't bitch about other peoples work [14:10] tjholowaychuk: technoweenie: it overcame many issues with node at the time it was developed [14:10] halorgium: tjholowaychuk: this is the internet, one is allowed to comment ;) [14:10] orls: tjholowaychuk: I'm trying to include files that might not exist -- and catch an error if they don't. Require() just quits node on failure [14:10] tjholowaychuk: halorgium: of course, I just found it funny [14:11] technoweenie: tjholowaychuk: yea, thanks [14:12] technoweenie: tjholowaychuk: hey you can talk shit on any of my projects, but we're all just here to learn js better [14:12] tjholowaychuk: technoweenie: well there you go, dont talk shit about mine until you do better [14:13] halorgium: tjholowaychuk: how do you know yours is better? that is rather subjective [14:14] jedschmidt: wow, i'm not sure that's called for. express is the most successful framework on node.js right now, but just like (fab), it's not for everyone. [14:14] halorgium: tjholowaychuk: do you have the power to +public connect? [14:14] halorgium: jedschmidt: yip, exactly! [14:15] halorgium: i'm suggesting that accepting critics is part of the deal [14:15] jedschmidt: gotta keep a thick skin when you're developing the layer with the highest surface area, that's for sure. [14:15] halorgium: yip, indeed [14:15] ph^: I'm actually using technoweenie's twitter-node as we speak :) [14:16] kodisha has joined the channel [14:16] halorgium: being on the tubes requires a thick skin in general [14:16] tjholowaychuk: its not perfect, never will be since its open source and I never got paid to develop it [14:16] halorgium: tjholowaychuk: yip, i like where the next gen is going [14:17] tjholowaychuk: as for async being an after thought, I wanted users to actually feel comfortable with the whole idea, which is why things like uploads are left pending until complete until the route is hit [14:17] halorgium: (now press that oss button) [14:17] tjholowaychuk: haha [14:17] tjholowaychuk: is that you tim? [14:17] halorgium: yes [14:17] tjholowaychuk: when are we open sourcing? [14:17] halorgium: not creationix [14:17] halorgium: but another tim ;) [14:18] gf3: soup tjholowaychuk [14:18] jedschmidt: tjholowaychuk: oh, i totally understand. i can't think of a "gateway drug" framework to node.js than express. [14:18] creationix: tjholowaychuk: I gave them a tarball of connect [14:18] mscdex: man, soup sounds good right about now [14:18] gf3: NO U [14:18] mscdex: roflwaffle [14:18] tjholowaychuk: creationix: gotcha! cool [14:18] creationix: I got the OK to open source connect Friday, but the rest of the guys had already gone home [14:19] creationix: so the github is still private [14:19] tjholowaychuk: shit lol [14:19] technoweenie has joined the channel [14:19] tjholowaychuk: i have a few more middleware i wouldnt mind getting in today, doesnt matter if its open already though [14:19] Ori_P has joined the channel [14:20] creationix: tjholowaychuk: go ahead [14:20] halorgium: tjholowaychuk: nah, i have definitely would like to fork/branch [14:20] creationix: hmm, since it's a holiday I'm not sure who will be in this morning [14:22] halorgium: creationix: looking at router, i'd think it would be better to route Regexps to layers, right? [14:22] tjholowaychuk: damn.. looking forward to checking out npm now but it broke, you in here isaacs? [14:22] halorgium: then you could insert middlewares at sub-layers [14:23] creationix: halorgium: yeah, I thought about that [14:23] technoweenie: tjholowaychuk: he might be off the grid for his vacation [14:23] tjholowaychuk: i still want to get rid of { param: } / params, doesn't sit well but right now I dont have a good solution [14:23] tjholowaychuk: damn [14:23] orls has joined the channel [14:23] creationix: halorgium: I do want to keep the middleware part super simple, but I guess a regexp is simple enough [14:23] creationix: no fanct /:id/ params or anything though [14:23] halorgium: creationix: also, what was the reasoning for using strings rather than objects as keys? [14:24] technoweenie: creationix: that could be another middleware tho right [14:24] creationix: halorgium: js doesn't support objects as keys (if I understand right) [14:24] jedschmidt: creationix: yeah, times like this i really wish js regexp had named groupings. [14:24] technoweenie: rails style routes are very clean to read [14:24] technoweenie: or even uri template style routes? [14:24] creationix: yeah, a rails-style router will be implemented as a middleware [14:24] creationix: it could even be added to the "router" middleware [14:24] tjholowaychuk: ya thats not really the point of the framework [14:24] tjholowaychuk: we should keep "routing" super simple [14:25] halorgium: creationix: sorry, i didn't mean object keys, just meant as middleware as objects rather than strings [14:25] creationix: jedschmidt: I thought it did, but maybe that was another language [14:25] jedschmidt: creationix: alas, it doesn't. [14:25] creationix: halorgium: ahh, it does support that [14:25] creationix: use the "module" key [14:25] creationix: look at tjholowaychuk's hello_world example [14:26] tjholowaychuk: jedschmidt: or check out some of the tests I use module: all over [14:26] technoweenie: where is everyone looking at this framework? i didnt think it was released [14:26] halorgium: creationix: you mean "module: ... " ? [14:26] creationix: yep [14:26] jedschmidt: creationix: i don't think it'd be that hard to add on though, just let people heck their own in regexp, and recompile it from the .source. [14:26] rnewson has joined the channel [14:26] halorgium: technoweenie: static.creationix.com/connect.tar.gz [14:26] creationix: "filter" and "provider" are just shortcuts into the built-in middlewares [14:26] technoweenie: holding out on me! [14:26] technoweenie: how can i learn js, jeez guys [14:27] creationix: technoweenie: I linked to it twice already today, I guess you weren't on yet [14:27] halorgium: technoweenie: i know, we want you to keep on with the poor js [14:27] technoweenie: no prob, thanks [14:27] halorgium: so you can't abuse tjholowaychuk :P [14:27] tjholowaychuk: hahaha [14:27] tjholowaychuk: :p [14:27] tjholowaychuk: sorry im grumpy, no sleep [14:27] technoweenie: i just want to be impressed [14:27] tjholowaychuk: of course [14:27] halorgium: technoweenie: don't look, it sucks big time!! ;) [14:27] creationix: well, I've got to go, tjholowaychuk you can publish a new snapshot after you add some more middlewares [14:28] creationix: or but the ext guys to see if anyone is in yet [14:28] creationix: s/but/bug/ [14:28] halorgium: creationix: push to repo.or.cz!! [14:28] tjholowaychuk: thats not what express is about at all, its not some super streaming js rocket ship, its a comfortable way to start a typical web app with node [14:28] tjholowaychuk: nothing more [14:28] technoweenie: no comma first? what is this crap [14:28] creationix: no, I could push to my own repo even easier [14:28] halorgium: lolz [14:28] creationix: but I don't want a permanent link other than the extjs one [14:28] halorgium: creationix: repo.or.cz is perfect! [14:28] creationix: it is a work project after all [14:28] technoweenie: i'm kidding, this is clean code though :) [14:28] tjholowaychuk: technoweenie: we have to follow their style rules lol and the hate comma first [14:28] halorgium: creationix: yer, understood ;) [14:29] technoweenie: its so rare in js [14:29] technoweenie: clean code [14:29] tjholowaychuk: i can agree with that [14:29] mscdex: i can't stand comma first either [14:30] drudge: so do people use kiwi? [14:30] tjholowaychuk: no [14:30] tjholowaychuk: well yes [14:30] tjholowaychuk: but use npm [14:30] drudge: ha ok [14:30] tjholowaychuk: well wait until it works again but yes lol [14:30] drudge: you just confused the hell out of me [14:30] tjholowaychuk: :D use kiwi for now since it works, npm's package publishing is broken ATM [14:30] tjholowaychuk: but if you dont need that use it [14:31] tjholowaychuk: because I have bigger things to work on than kiwi so I will be retiring it once I get a chance to try npm and hopefully like it [14:31] tjholowaychuk: seems good so far though just needs some cli love [14:31] creationix: tjholowaychuk: we should get connect in npm as soon as it's working again [14:31] tjholowaychuk: definitely [14:31] drudge: i couldn't get mongoose working from kiwi [14:31] orls: FYI, little update from my earlier q: try-catch works fine for require() errors, my test code was completely screwed, lol [14:32] tjholowaychuk: drudge: they set it up wrong [14:32] drudge: i see [14:33] technoweenie: tanuki conf! [14:33] ceej: what's better class.js or js-oo ? [14:33] mscdex: c++! [14:33] mscdex: ;-) [14:34] tjholowaychuk: ceej: uhh well you dont realllllly need either but class.js [14:34] tjholowaychuk: ceej: I find myself very very rarely touching them though [14:34] mscdex: sys.inherits [14:34] ceej: I'll see how i go :) [14:35] orls: ceej: Not that I have much experience with any of these, but there's also js.class [14:35] _announcer: Twitter: "del.ici.us-popular: Parsing file uploads at 500 mb/s with node.js » Debuggable Ltd http://bit.ly/bQQZSK"-- Kyle Welsh. http://twitter.com/kyledwelsh/status/15111227088 [14:35] halorgium: tjholowaychuk: creationix: just for you :) [14:35] halorgium: http://isconnectreleasedyet.heroku.com/ [14:35] creationix: I always just liked Object.create ;) [14:35] creationix: or for really fancy "function" [14:35] tjholowaychuk: halogium: awesome! haha [14:36] technoweenie: i agree, using strings to identify filters is odd [14:36] ceej: halorgium: you have a node.js heroku invite ? [14:36] halorgium: ceej: nah, don't [14:36] halorgium: that is ruby ;) [14:36] ceej: ah :) [14:36] creationix: halorgium: nice [14:36] tjholowaychuk: technoweenie: im not happy with how the stacks are defined either, IMO { filter: 'whatever', params: [... options for the layer ...] } is really awkward [14:37] halorgium: tjholowaychuk: why not make filters/providers/modules all the same thing? [14:37] creationix: halorgium: why not have a shortcut [14:37] tjholowaychuk: if we made you require() them they would be (which I would not mind at all) [14:37] creationix: it's just a shortcut, nothing more [14:37] sveimac has joined the channel [14:38] tjholowaychuk: i liked our fab-ish approach [14:38] creationix: you could do {module: require('connect/filters/gzip')} [14:38] tjholowaychuk: but meh [14:38] tjholowaychuk: lol [14:38] creationix: but {filter: "gzip"} is so much easier [14:38] tjholowaychuk: that it is [14:38] halorgium: creationix: yer, understand [14:38] halorgium: i don't believe that kind of thing should be at this layer [14:38] creationix: yeah, the first version looked like fab code, it was all () [14:39] orls_ has joined the channel [14:39] creationix: halorgium: why not, the layer comes with basic middlewares built-in [14:39] creationix: it does give them preference over third-party modules, but that's the point [14:39] halorgium: creationix: why not have connect-simple which has handy helpers for this kind of thing? [14:40] creationix: because the code to make that pluggable and external would be more code than just inlining the helper [14:40] halorgium: i guess i feel this kind of optimisation is unnecessary at this point [14:40] creationix: well, I went for a syntax driven design on this one [14:41] creationix: write the config file how I would want it to look as a user, and then implement it [14:41] creationix: I first had requires all over the place and it was really hard to read and non DRY [14:41] halorgium: yip, i understand [14:41] smtlaissezfaire has joined the channel [14:42] creationix: besides, since ext is paying me to write this open-source library I need to follow their style somewhat [14:42] creationix: they cater to beginners mostly [14:42] tjholowaychuk: haha yea.. no fancy smancy stuff for me [14:43] halorgium: creationix: i'm speaking from seeing the rack spec be built and be too constrained for simplicity [14:43] halorgium: and then being unable to be extended for other use cases [14:43] creationix: I do think making it extensible is a good idea [14:44] halorgium: the same thing had to happen between rails 2/3 [14:44] creationix: extensibility is one of ext's things anyway [14:44] creationix: halorgium: so you're wanting a way to define shortcuts like "filter" and "provider" externally? [14:45] creationix: and less wanting those out of core [14:45] halorgium: creationix: more like, wrap the layers as i see fit [14:45] halorgium: thus removing the need for core to know about the concepts of these things [14:45] creationix: ok, I've GOT to go and eat, I'll think about it [14:45] halorgium: it seems filter/provider are builder methods not core [14:46] creationix: thanks for the feedback :) [14:46] creationix has left the channel [14:47] halorgium: tjholowaychuk: this is rather good timing you know [14:47] tjholowaychuk: what is? connect? [14:47] halorgium: i was going to try and finish the non-global hacks for express [14:48] halorgium: now i'll just use this ;) [14:49] tjholowaychuk: i just think its kinda silly that this is not really out there already [14:49] tjholowaychuk: fab i guess [14:49] tjholowaychuk: we need a better api though, this is kind of ok https://gist.github.com/f8746000604da83476b7 [14:49] halorgium: tjholowaychuk: i think the generalised solution hasn't been built [14:49] tjholowaychuk: still not a huge fan, we need to think of something better [14:50] halorgium: tjholowaychuk: do you see what i mean about builder vs. core? [14:50] technoweenie: what about chained methods [14:50] tav has joined the channel [14:50] nsm has joined the channel [14:50] halorgium: think Rack::Builder vs. @app.call(env) [14:50] technoweenie: createServer().filter(...).module({...}).filter(...).listen() [14:50] halorgium: technoweenie: see that gist :) [14:51] tjholowaychuk: they are really all the same thing [14:51] tjholowaychuk: just conceptually different [14:51] tjholowaychuk: so ideally ()()()()() would be fine lol [14:51] tjholowaychuk: but ext does not like any trickery, im not allowed to use fancy js that confuses people [14:51] tjholowaychuk: and sorry if i dont reply tons ill try and check back or just ping me, working on some middleware [14:52] kodisha: hey tjholowaychuk what does the .use function looks like :) [14:52] jedschmidt: tjholowaychuk: yeah, you don't need to decide, as i see it. you can build an entire (fab) app with only two parens, fyi. [14:52] kodisha: interesting code [14:53] tjholowaychuk: use() is not there, just seeing what might look a bit better [14:53] tjholowaychuk: my main beef is how you have to pass options right now [14:53] halorgium: jedschmidt: i think we need to make sure this has the fully-abstracted core arch ;) [14:53] tjholowaychuk: looks really stupid [14:53] halorgium: tjholowaychuk: why not just normal args? [14:54] tjholowaychuk: halogium: not sure, we have changed it a few times either from what tim wanted or ext, or me etc and this is where we are right now i guess [14:54] tjholowaychuk: i would like to see something cleaner [14:55] halorgium: tjholowaychuk: is the 3rd example just missing the layer setup? [14:55] halorgium: cause you need that [14:55] tjholowaychuk: sometimes you do, sometimes you dont [14:56] sveimac_ has joined the channel [14:56] tjholowaychuk: i dont like env being passed first really either to setup() [14:56] tjholowaychuk: IMO it should be last so its a natural function call [14:56] sveisvei has joined the channel [14:57] _announcer: Twitter: "Multipart uploads at 500mb/s with node.js & Boyer-Moore. Interesting read http://bit.ly/ctm8kK"-- Mel Gray. http://twitter.com/melgray/status/15112594512 [14:58] halorgium: tjholowaychuk: hrm, why is route a special case inside Layer() ? [14:58] tjholowaychuk: what do you mean [14:59] halorgium: having that route logic there seems incorrect [14:59] halorgium: shoudln't that occur in the router? [15:00] tjholowaychuk: i wouldnt really call it routing, its more like mounting [15:00] halorgium: exactly, that should definitely be a middleware [15:01] _announcer: Twitter: "i suppose parsing multipart data at 500MB/s is impressive: http://bit.ly/9zJLg2 (holy shit, node.js)"-- technowürst. http://twitter.com/technoweenie/status/15112805303 [15:01] tjholowaychuk: its basically which path segment(s) that middleware would apply to, its kind of an arbitrary idea ATM, might not have many use-cases [15:01] ditesh|cassini has joined the channel [15:01] _announcer: Twitter: "@pamelafox I will have a cow when #nodejs is stable enough for deployment on GAE. It's like appenginejs but javascriptier. ;-)"-- Jeff Waugh. http://twitter.com/jdub/status/15112853202 [15:01] halorgium: router.js seems to handle that part though [15:02] technoweenie: node on app engine? interesting [15:02] smtlaissezfaire has joined the channel [15:02] _announcer: Twitter: "http://tinyurl.com/344t8v9 Parsing file uploads at 500 mb/s with node.js » Debuggable Ltd"-- cube_ice. http://twitter.com/cube_ice/status/15112883466 [15:02] halorgium: if router handlers were layers, you'd not need that piece [15:03] halorgium: wow, do not setup a v4 -> v6 upstream in nginx [15:03] halorgium: it totally owns your workers [15:03] rolfb has joined the channel [15:05] tjholowaychuk: fuck yaaa coffee is almost done [15:05] tjholowaychuk: technoweenie: ps. I apologize for my for my random bursts of rage :) [15:06] [[zz]] has joined the channel [15:06] halorgium: tjholowaychuk: your apology was just too late! [15:06] tjholowaychuk: nevaa [15:06] halorgium: he rage quit! [15:10] riq has joined the channel [15:10] stepheneb has joined the channel [15:11] technoweenie has joined the channel [15:13] cedricv has joined the channel [15:14] bradleymeck_ has joined the channel [15:16] _announcer: Twitter: "nodejs with yui3, it's great, http://github.com/davglass/nodejs-yui3/"-- kelemen_viktor. http://twitter.com/kelemen_viktor/status/15113780436 [15:22] technoweenie: hey is there a problem w/ node 1.97 [15:22] halorgium: regarding? [15:22] technoweenie: events:11 throw arguments[1] [15:22] ph^ has joined the channel [15:23] technoweenie: maybe it doesnt like head requests [15:23] halorgium: technoweenie: some errors can be non-obvious [15:24] fictorial: linode down, hmmm [15:24] technoweenie: right, but i'd expect parser errors to come from my own files, not node [15:25] halorgium: technoweenie: this is at runtime eh? [15:25] technoweenie: i was excited that i had a js file that actually ran [15:25] halorgium: technoweenie: the callbacks are begin executed inside node/http.js [15:25] halorgium: fictorial: down/down? [15:25] fictorial: "Our collocation provider in Dallas has acknowledged a network issue but we do not have details yet" [15:26] halorgium: suck [15:26] fictorial: http://twitter.com/linode/status/14553780214 [15:27] halorgium: fictorial: that is may 23rd...! [15:27] fictorial: oh duh. [15:27] siculars has joined the channel [15:27] halorgium: lol, http://status.linode.com/ [15:27] fictorial: ACTION gets a 2 out of 5 on reading comprehension [15:27] halorgium: down too ;) [15:27] sudoer has joined the channel [15:27] fictorial: yeah [15:27] technoweenie: damnit, this isnt me [15:27] halorgium: dns... [15:28] halorgium: fictorial: seems they just fail at dns [15:28] fictorial: no [15:28] fictorial: I'm on DNS Made Easy and I cannot get to my VPS. [15:29] fictorial: dig -t ANY fictorial.com [15:29] fictorial: but, ssh "Operation timed out" [15:29] fictorial: oh well - we'll find out later ... they better not have done anything stupid again. [15:29] halorgium: heh, so are they ns.theshore.net ? [15:29] _announcer: Twitter: "Second part of my NodeJS tutorial this one focuses on simple routing - http://bit.ly/9YJ3we"-- Rob Searles. http://twitter.com/ibrow/status/15114609812 [15:30] fictorial: halorgium: not sure what that is [15:30] halorgium: their NS [15:30] halorgium: which is totally down too [15:31] fictorial: my VPS is completely down [15:31] fictorial: hmm, anyway. [15:31] steadicat has joined the channel [15:32] ewdafa: my linode is still up. but i housed it in the uk [15:32] halorgium: fictorial: haha, is yours in TX? [15:33] softdrink has joined the channel [15:34] technoweenie: dang i think it's something in node 1.97, 1.96 works. i'll have to setup nvm or something and investigate further [15:36] halorgium: technoweenie: gist the code? [15:36] technoweenie: halorgium: http://github.com/technoweenie/node-scoped-http-client [15:36] mostlygeek has joined the channel [15:36] technoweenie: node test/scoped_request_test.js [15:37] halorgium: technoweenie: going the client-side middleware approach? [15:37] technoweenie: not yet, just chains [15:37] technoweenie: have you seen faraday? it has middleware [15:37] technoweenie: but the middleware doesnt do streaming so i have to rethink the approach [15:38] technoweenie: faraday for ruby i mean [15:38] halorgium: technoweenie: have you seen rack-client? ;) [15:38] technoweenie: yea, faraday doesn't use rack middleware [15:39] technoweenie: i'm just using the same pattern [15:39] halorgium: technoweenie: i dislike rack due to it's annoying only-sync [15:39] halorgium: yer, middleware is simply decorator [15:39] technoweenie: i didnt want to store things like path, headers, etc in the format that rack wanted [15:40] halorgium: yer, middleware reuse between client/server is overrated ;) [15:40] halorgium: shims are possible though [15:40] technoweenie: i'm not happy w/ the faraday middleware api though [15:40] technoweenie: i like that it lets me switch http libraries effortlessly though [15:41] technoweenie: but its still not trivial to add a logging middleware for instance [15:41] technoweenie: at least not as trivial as it could be [15:41] technoweenie: anyways, when i run that scoped_request_test.js file i get some parse error on events [15:41] halorgium: technoweenie: hrm, ry did add the throttling stuff into http.js between 96/97 [15:41] technoweenie: ah ok [15:42] halorgium: technoweenie: it is actually in http.js [15:42] technoweenie: oh, i got a different one [15:42] technoweenie: so you are getting an error on node 1.97 [15:43] halorgium: yes [15:43] technoweenie: a parse error seems very suspicious though [15:43] halorgium: no, same one [15:45] rnewson has left the channel [15:47] halorgium: technoweenie: if you set NODE_DEBUG=4 you'll see debug info [15:47] technoweenie: oh cool [15:47] halorgium: not much [15:48] halorgium: but then you can start hacking into http.js [15:48] technoweenie: yea thats ok [15:48] halorgium: technoweenie: so, looks like it is getting invalid start/end [15:49] technoweenie: i'm invalid? no you're invalid, PAL [15:49] technoweenie: i'm not your pal, buddy [15:50] technoweenie: (compiling) [15:50] _announcer: Twitter: "你好,node.js http://www.douban.com/note/73940793/"-- aki. http://twitter.com/aki_xavier/status/15115838675 [15:51] _announcer: Twitter: "contemplating a trip to the market to allow time for naturally gravitating to either nitrogen v2 or node.js for an idea that i've got ..."-- grantmichaels. http://twitter.com/grantmichaels/status/15115911519 [15:51] ceej: would anyone know why I'm getting this error? http://pastie.textmate.org/private/br5ok5e5tdubqotymxr5cw [15:52] technoweenie: http://nitrogenproject.com/whatsnew [15:52] technoweenie: #h1 { text="My Header" } uh, nevermind [15:53] cloudhead has joined the channel [15:53] technoweenie: dude NODE_DEBUG=4 didnt do shit [15:54] technoweenie: `NODE_DEBUG=4 node test/scoped_request_test.js` right? i dont know shell [15:54] [[zz]] has joined the channel [15:54] halorgium: technoweenie: guess you didn't hit the debug lines [15:54] technoweenie: is it a configure option [15:54] halorgium: in fact, i didn't get any until i added some [15:55] halorgium: no, it checks process.env [15:55] technoweenie: right ok [16:00] _announcer: Twitter: "http-console 0.1.0: HTTP has never been this easy — http://github.com/cloudhead/http-console #nodejs"-- Alexis Sellier. http://twitter.com/cloudhead/status/15116443056 [16:01] gf3: _announcer: info [16:01] gf3: _announcer: help [16:01] _announcer: Twitter: "will present #nodejs and #riak in @amsrb tonight... join us at the OBA!"-- Francisco T. http://twitter.com/frank06/status/15116533776 [16:12] mostlygeek: what is behind _announcer ? i want one :) [16:12] paul_irish has joined the channel [16:13] _announcer: Twitter: "Recommends Parsing file uploads at 500 mb/s with node.js: A few weeks ago I set out to create a new multipart/form... http://bit.ly/bw5okW"-- John Haining. http://twitter.com/johnhaining/status/15117277096 [16:18] _announcer: Twitter: "Hacker Medley imports well to ex.fm. http://hackermedley.org/archives/86 They cover node.js, tornado and web sockets. (cc @hackermedley)"-- James Dennis. http://twitter.com/j2labs/status/15117578963 [16:21] sprsquish has joined the channel [16:21] technoweenie has joined the channel [16:21] stagas has joined the channel [16:21] halorgium: technoweenie: 15ec99ec5945c07616cd9299e126e9919bc9c8cc breaks it [16:22] halorgium: blame NZ! [16:22] sprsquish has joined the channel [16:22] technoweenie: ah ha, i thought it had to do with head requests [16:23] technoweenie: wait, how did you check that? did you really compile every version? [16:23] halorgium: technoweenie: yer, git bisect is easy [16:23] technoweenie: or can you run node with the raw js files? i thought they were compiled into the ndoe binary [16:23] technoweenie: ah wasnt that time consuming [16:23] halorgium: nope [16:29] bpot has joined the channel [16:33] _announcer: Twitter: "@ Andrwj Node.js & V8 engines @ zziuni HTML5 LMS Player @ Rhiokim Appcelerator Titanium Groups has been registered in the presentation. # FRENDS" [ko]-- FRENDS_korea. http://twitter.com/FED_korea/status/15118462950 [16:35] jedschmidt has joined the channel [16:35] linuxsable has joined the channel [16:35] inimino has joined the channel [16:36] krishna has joined the channel [16:38] mrd` has joined the channel [16:38] ceej: which is the best mysql lib for node? [16:38] technoweenie: how many are there? [16:38] stagas: ceej: redis :P [16:39] ceej: stagas: lol i have to use mysql [16:39] gbot2 has joined the channel [16:39] technoweenie: the redis library actually doesnt work against mysql [16:39] stagas: yes I was kidding :) [16:39] technoweenie: they have different protocols [16:39] technoweenie: ohh, i see [16:39] technoweenie: razor wit [16:39] ceej: there's 3 mysql libs here http://wiki.github.com/ry/node/modules [16:40] stagas: try the most active first [16:40] exlt has joined the channel [16:41] technoweenie: yea that's a good rule of thumb. node-mysql has more watchers and a bigger network [16:41] ceej: but http://github.com/Sannis/node-mysql-libmysqlclient was just updated [16:42] technoweenie: they both look good [16:42] technoweenie: i'd say away from that poormans lib [16:44] ceej: ye node-mysql looks the best [16:45] halorgium: lol, it actually shells out? [16:45] halorgium: i never knew mysql had a --xml option [16:47] technoweenie: is that how node-mysql works [16:48] _announcer: Twitter: "now that i saw this: http://en.wikipedia.org/wiki/Server-side_JavaScript is node.js really the way to go? opinions?"-- Raphael Siebenhofer. http://twitter.com/aremes/status/15119313593 [16:48] halorgium: technoweenie: no, poormans [16:48] technoweenie: oh [16:49] technoweenie: well, i just saw a lack of tests [16:49] halorgium: technoweenie: it looks like node sends chunked by default [16:49] halorgium: so the HEAD response has a 0\r\n\r\n chunk [16:50] halorgium: which it looks like the change to http_parser doesn't like [16:50] halorgium: also, http://github.com/mscdex/node-poormansmysql/blob/master/node-poormansmysql.js#L84 [16:50] technoweenie: oh you're still looking at that? ha. thanks dude. i was just about sit down and tackle that [16:50] technoweenie: this.query("SELECT ROW_COUNT() AS _node_poormansmysql_affectedRows", function(row) { [16:50] technoweenie: hwhat [16:51] halorgium: yer, amusing! [16:52] ceej: so node.js will run all those queries at once? http://github.com/masuidrive/node-mysql/blob/master/examples/simple1.js where as php would run them one by one waiting for each response? [16:53] halorgium: technoweenie: ah, no content-length is the problem [16:53] paul_irish has joined the channel [16:54] technoweenie: doh! what a jerk [16:54] halorgium: technoweenie: but, it shouldn't fail regardless [16:54] wbruce has joined the channel [16:54] ceej: is that right to say? [16:55] mrchrisadams has joined the channel [16:56] halorgium: ceej: that looks kinda scary to me [16:56] Aria has joined the channel [16:56] ceej: halorgium: what do you mean? [16:57] halorgium: if that was truely async, you'd potentially run the select before the create [16:57] technoweenie: ceej: you'd have to nest those queries so query #2 ran as soon as #1 returned [16:57] halorgium: the lack of callbacks for connect and other queries is odd too [16:58] halorgium: technoweenie: this is in that repo ... a little scary ;) [16:59] ceej: halorgium: ye that example they give is funny, because if it is a sync select could be ran before create [16:59] ceej: and looking at how it's working it looks async [17:00] elliotcm has joined the channel [17:00] ceej: as it's just opening a connection running the random queries and has call backs for results [17:00] ceej: going to test it now [17:01] _announcer: Twitter: "Next big task is to finish off some CRUD screens, then explore node.js & html5 to push updates out. But now I'm off for a meal with friends."-- Wadud Ruf. http://twitter.com/wr1472/status/15120054628 [17:03] _announcer: Twitter: "[del] [from mrphoebs] Parsing file uploads at 500 mb/s with node.js » Debuggable Ltd: http://url4.eu/3uT3P"-- sldfjd ldajds. http://twitter.com/sldfjd/status/15120203048 [17:04] b_erb: so guys, i'm about to go to a regional meeting of web enthusiasts and will convince them of how cool node.js is [17:04] b_erb: see you later [17:05] ewdafa has joined the channel [17:07] halorgium: technoweenie: so, no content-length + default transfer-encoding: chunked == bug [17:08] halorgium: + HEAD [17:09] technoweenie: oh, so i should be setting a content length manually [17:09] halorgium: or turning off transfer-encoding [17:09] halorgium: this is a node bug though [17:09] technoweenie: i assumed content-length would be set for me [17:10] halorgium: it is kinda odd, TransferEncoding is set by default [17:11] technoweenie: i dont think i've ever had to set content-length [17:11] technoweenie: in anything, i dont know how [17:11] b_erb: is either or… content length or chunked encoding [17:11] b_erb: the second is used by default, thus you don't have to set in manually [17:12] technoweenie: though you should be setting a content length for head requests [17:12] halorgium: b_erb: yer, HEAD requests are broken in 0.1.97 though ;) [17:12] b_erb: well it depends [17:12] sprsquish has joined the channel [17:12] b_erb: i mean chunked encoding is also useful if you don't know your length yet [17:12] technoweenie: how do head requests even work usually? in rails it renders the template and then just doesnt send it (otherwise how do you know how big the content is) [17:13] b_erb: ie. compression on the fly or some sort of content generation [17:13] b_erb: there you just can't tell your length [17:14] technoweenie: is that acceptable? isnt the point of HEAD so you can get that info? [17:14] halorgium: if you can [17:14] technoweenie: ok [17:15] b_erb: you might be interested in the info, that there is only TE and no content-length as well [17:16] mostlygeek has joined the channel [17:17] technoweenie: oh man i've been running node 1.93 on my imac [17:17] technoweenie: i should start syncing node binaries between it and my laptop on dropbox [17:18] halorgium: b_erb: does this look sane? https://gist.github.com/2b7b65e338314a140ae1 [17:18] kodisha: no need, build on mac is really eas [17:18] kodisha: *easy [17:18] halorgium: kodisha: but takes time ;) [17:18] technoweenie: i'm just blabbing while shit compiles, nvm me [17:18] ph^: not long though [17:19] b_erb: halorgium: ok got it [17:19] ceej: man it doesn't support no password and it looks like a bitch to change to work with no pass [17:20] technoweenie: dang, why are nodes tests so much faster than mine [17:20] mitkok has joined the channel [17:21] halorgium: ceej: http://github.com/Guille/node.dbslayer.js [17:21] ceej: sweet got it working with no pass, I'll submit a patch [17:21] technoweenie: oh yea dbslayer [17:21] technoweenie: that used to be the only mysql option [17:21] ceej: you think that's better? [17:21] technoweenie: nytimes wrote dbslayer [17:22] technoweenie: its pretty solid afaik [17:22] technoweenie: its essentially a json/rest api over a cluster of mysql servers or something right [17:23] halorgium: yer [17:23] tjholowaychuk: GAH i really wish the assert module would output the actual / expected values even when you have a custom message [17:27] paul_irish__ has joined the channel [17:28] technoweenie: i dont know if this is a node bug really. i think it should just have a better error message [17:28] technoweenie: though a HEAD request w/ chunked transfer encoding is odd [17:30] halorgium: technoweenie: HEAD response ;) [17:30] halorgium: i don't think it is [17:30] technoweenie: request/response [17:30] technoweenie: its all the same when you dont know javascript [17:30] halorgium: lolz [17:31] technoweenie: its all 1s and 2s anyway amirite [17:34] technoweenie: dang, you have to recompile everything to test node [17:36] bradleymeck_ has joined the channel [17:38] pdelgallego has joined the channel [17:39] Yuffster has joined the channel [17:39] mAritz: hey, what's the best way to test whether a variable is an array in node.js? .constructor.toString() === 'Array'? [17:39] sechrist has joined the channel [17:39] tjholowaychuk: mAritz: instanceof Array ? [17:40] mAritz: d'oh [17:40] mAritz: thanks :) [17:40] tjholowaychuk: mAritz: Array.isArray()? [17:40] tjholowaychuk: :p [17:40] tjholowaychuk: :D [17:40] tjholowaychuk: np [17:42] aconbere has joined the channel [17:43] jtoy has joined the channel [17:43] JimBastard has joined the channel [17:44] ly- has joined the channel [17:44] ly- has joined the channel [17:45] JimBastard: why is it the hot girl i woke up next to this morning wouldn't cook me breakfast, put out, or leave. i think there are laws about these types of shenanigans. #bastardfacts [17:46] elliotcm: Yeah. Child labour, statutory rape and vagrancy laws. [17:47] tjholowaychuk: anyone here use jsonrpc much? [17:47] Psytherium has joined the channel [17:48] indexzero has joined the channel [17:48] JimBastard: tjholowaychuk: all the time [17:49] JimBastard: i standardized our interfaces to be JSON-RPC up and JSON-RPC down [17:49] tjholowaychuk: JimBastard: awesome :) [17:49] JimBastard: tjholowaychuk: people come in here all the time asking about your libs [17:49] JimBastard: you might want to get an express bot in here or someone to help you [17:50] JimBastard: JSON-RPC is kinda a joke though, its barely a standard [17:50] JimBastard: but its infinitely better then nothing [17:50] tjholowaychuk: for sure [17:50] technoweenie: its not as funny as xml-rpc [17:51] tjholowaychuk: i try and stay away from xml [17:51] JimBastard: that sounds like a good line for the bus, ohh sorry im working on getting out JSON-RPC JSONP api call working [17:51] JimBastard: s/bus/boss [17:51] JimBastard: im losing it today, long night [17:51] tjholowaychuk: tell me about it, pretty sure I'm actually an insomniac [17:52] JimBastard: im going to lay down and think about my failures, bbl [17:53] tjholowaychuk: hahaha [17:54] steadicat has joined the channel [17:55] hsuh has joined the channel [17:56] joshr has joined the channel [17:56] joshr: hiya [17:57] technoweenie: wow, server.addListener('listening') really makes a big difference [17:59] mscdex: just so you know, node-poormansmysql was a first attempt at a module written over a weekend when no other mysql module was working at the time ;-) [17:59] rnewson has joined the channel [18:00] ceej: http://github.com/masuidrive/node-mysql is a great and is completely async [18:00] mscdex: right, they've been fixed since that time ;-) [18:00] technoweenie: mscdex: thats pretty clear from the name. theres nothing wrong with throwing hacky shit up [18:01] joshr: hacky shit is what keeps the internets running [18:01] technoweenie: it'll get fixed up or replaced [18:01] mscdex: but i was quite surprised at just how flexible the mysql commandline tool was [18:02] stagas: ceej nice to hear that [18:03] mscdex: it lets you read in results as xml and stream the results and stuff [18:04] kepheus has joined the channel [18:04] technoweenie: xml is a poor choice for that [18:05] technoweenie: but hey, it was probably a first attempt and no other simple ascii format was popular at the time [18:05] mscdex: well, it was either that or attempting to parse plain table output where you can distinguish between things like NULL and "NULL" [18:05] mscdex: *can't [18:06] technoweenie: yea, i mean it was a poor choice for mysql to implement [18:09] sudoer has joined the channel [18:09] stagas: node.js reminds me 14 years ago when I wrote an arexx script that was a web server on the amiga. lol!! I was like 14 years old. it's on aminet still: http://ftp.se.kde.org/pub/aminet/comm/tcp/Gawd.lha I had to handle the headers and gets and stuff and was reading RFC protocols on the internet to figure things out.. :P [18:10] stagas: arexx rulez [18:10] stagas: hehe [18:11] mscdex: amiga ftw [18:11] mscdex: i still have an a1000 and an a500 [18:11] stagas: me a1200 [18:11] mscdex: and: a 20mb hard drive that's never been used, a 1200 baud modem, and a RAMBOard ;-) [18:11] stagas: with a blizzard expansion 68030 @ 60mhz [18:12] mscdex: and Aegis [18:12] mscdex: lol [18:12] technoweenie: thats hardcore [18:12] stagas: it's still boots faster than pcs [18:13] stagas: under 15 secs [18:13] mscdex: i used to poke fun at my neighbor who had an Commodore 64, because my a1000 could perfectly emulate his C64 ;-) [18:13] stagas: you're on the workbench! :) [18:13] technoweenie: stagas: yea but does it run flash [18:13] Aria: Hehe [18:13] ewdafa: amigas were such win [18:13] mscdex: and BBSes :P [18:14] mscdex: there were still some dialup BBSes still functioning around here up until a few years ago or so actually [18:14] shajith has joined the channel [18:14] ewdafa: i sometimes wonder what the world would be like if the majority adopted quality over quantity [18:14] mscdex: nowadays they're all telnet-only [18:14] JimBastard_ has joined the channel [18:14] JimBastard_: hrmmm my built script is failing on Faker.js [18:14] JimBastard_: buffer:46 return this.utf8Write(string, offset); [18:14] JimBastard_: was this patched? [18:14] JimBastard_: or is a funky char? [18:15] stagas: dialup with 2 lines waiting for the other guy to hang up so you can read some ascii stuff :P [18:15] mscdex: it can't handle the amount of javascript fu [18:15] mscdex: stagas: hehe yep [18:15] JimBastard_: mscdex: Faker runs on mostly Perl and bullplop [18:15] JimBastard_: well last this time error happened i found a crazy char [18:16] JimBastard_: so let the no line number debugging begin [18:17] mscdex: go go gadget debugger [18:17] maushu has joined the channel [18:17] mscdex: !so-last [18:18] mscdex: :O! [18:19] mAritz: :D [18:20] mscdex: :( [18:20] mAritz: will it ever work as expected? tune in next week for a brand new show of "maushus nodejs irc bot adventures" (god i suck at name-giving) [18:20] mscdex: RIP _announcer [18:22] mikeal has joined the channel [18:24] JimBastard_: can anyone explain to me why the error return this.utf8Write(string, offset); ^ TypeError: Offset is out of bounds occurs [18:24] JimBastard_: im assuming its borked text, but even after debugging its bombing out on some standard code [18:25] JimBastard_: damn most of the pros arent here [18:25] mscdex: obviously. we're just chopped liver! [18:25] JimBastard_: last time this error came up with due to a hidden char [18:25] mscdex: ACTION downloads faker.js [18:25] JimBastard_: i wanna fix this, the BUILD process for faker is not working now [18:26] JimBastard_: and i got a pull request to apply [18:26] JimBastard_: mscdex: if you'd be willing to take a look that would be amazing [18:26] sudoer has joined the channel [18:26] tjholowaychuk: it just means your offset is larger than the buffer [18:26] JimBastard_: i have a feeling some of the JS code that my friend ported from ruby isnt onpoint [18:26] JimBastard_: tjholowaychuk: solution? how to avoid the problem? [18:26] JimBastard_: i have the mental capacity of like a 12 year old who drinks too much [18:27] aconbere: hmmm [18:27] hsuh has left the channel [18:28] JimBastard_: caus like i dont think im directly messing with any streams or buffers [18:28] mscdex: what code are you trying? the tests work fine for me [18:28] JimBastard_: mscdex: cd BUILD [18:28] JimBastard_: node build.js [18:29] mscdex: ah ok [18:29] JimBastard_: the tests for faker are kinda a joke, its hard to write proper tests for a data generation library [18:29] JimBastard_: can get really complex [18:30] technoweenie: i think all you can really do is test it doesnt blow up [18:30] JimBastard_: technoweenie: the current test suite just calls all api methods in one script [18:30] JimBastard_: we arent having testing problems though [18:30] JimBastard_: the build script i wrote is failing due to funky utf [18:30] JimBastard_: 1. there is bad code in there [18:30] JimBastard_: 2. there is a bad char in there [18:31] JimBastard_: 3. something else is going on [18:31] saikat` has joined the channel [18:31] mscdex: hrm [18:31] JimBastard_: utf8 fails a bit with file reads [18:31] ryah: yo yo [18:31] JimBastard_: ACTION bows before lord javascript [18:32] ryah: ACTION bows before mr bastard [18:32] JimBastard_: dear lord javascript, why do i haz utf8 errors [18:32] JimBastard_: second time ive seen this happen, with diffirent envs [18:32] ryah: what are you doing? [18:32] JimBastard_: should i pull to latest? [18:32] mscdex: it's not getting past the statSync for me [18:32] mscdex: it's trying to stat a dir that doesn't exist [18:32] mscdex: :S [18:33] JimBastard_: hrmmmm [18:33] JimBastard_: maybe thats it [18:33] ryah: JimBastard_: i got a talk july 3rd - you and scott going to have that irc thing worked into the chat by then? :) [18:33] JimBastard_: i had a local dir i never checked in [18:33] ryah: i really want to do that demo [18:33] mscdex: ./lib [18:33] JimBastard_: ryah: where will talk be at? [18:33] rictic has joined the channel [18:33] ryah: paris [18:33] JimBastard_: damn [18:33] JimBastard_: ping me back on the 14th or so [18:33] JimBastard_: or ill ping you [18:34] JimBastard_: im not sure about irc.CreateServer [18:34] JimBastard_: but im confident about the proxying [18:34] ryah: okay - i'm going to do it if you all don't [18:34] JimBastard_: (which i know you arent thrilled about( [18:34] JimBastard_: well [18:34] JimBastard_: i can do the proxy part [18:34] JimBastard_: i dont think i can handle irc.CreateServer [18:34] JimBastard_: i can do hosting too [18:34] JimBastard_: if that even matters [18:35] ryah: i work at a hosting company :) [18:35] JimBastard_: lol i know i know [18:35] JimBastard_: a lot of broodmother's core concepts work on the most basic principles i understand about the smart platform [18:35] JimBastard_: would love to dive into that rabbit hole [18:35] JimBastard_: ryah: ill talk to scott first thing this week [18:36] JimBastard_: and map out a roadmap? [18:36] JimBastard_: that way if shit isnt happening you can pick up [18:36] JimBastard_: and we are all on the same point [18:36] JimBastard_: sound good? [18:36] ryah: JimBastard_: just got to be able to connect both from irc and web [18:36] ewdafa: ryah: are you responsible for nodejs? [18:36] ryah: should be a 5 hour hack :) [18:36] ryah: ewdafa: yes [18:36] ewdafa: aha [18:36] JimBastard_: ryah: i just dont have any idea how to irc.Createserver [18:37] JimBastard_: i'll chat with scott [18:37] JimBastard_: i really want chat.nodejitsu.com to point to the freenode irc room [18:37] JimBastard_: brb [18:37] ryah: (and by 5 hours i probably mean 5 days ) [18:37] ryah: :) [18:44] sudoer has joined the channel [18:44] JimBastard_: mscdex: did you get any luck? [18:44] mscdex: still looking into it [18:45] JimBastard_: cool man thanks, im about to drink this fruit smoothie and get into it again [18:47] ly- has joined the channel [18:47] JimBastard_: the secret ingredient is almond butter [18:47] JimBastard_: mscdex: i should note , that that version of the "BUILD" folder and script like 3 interations back [18:48] JimBastard_: ive been improving it in each new project [18:48] JimBastard_: its slowly becoming a CI [18:48] JimBastard_: aight fuck it, im pulling HEAD [18:49] ceej: hmmm so functions declared in one file can't be accessed in another? [18:49] mscdex: if you export them [18:49] JimBastard_: ceej: sup [18:50] JimBastard_: import / export? [18:50] JimBastard_: commonJS [18:50] JimBastard_: import export is pretty solid, as long as you dont fall into shift / unshift pathing hell [18:50] JimBastard_: *shudders* [18:51] softdrink has joined the channel [18:52] ceej: hmmm [18:54] JimBastard_: yo ryah [18:54] JimBastard_: is there a naming convention for nodejs meetup groups? [18:54] JimBastard_: NODE NYC? [18:54] JimBastard_: NYC NODE? [18:54] alexiskander has joined the channel [18:55] ryah: no [18:57] technoweenie: i think its usually "city lang" [18:57] Aria: I kinda like the node.placeabbreviation style. [18:57] technoweenie: pdxrb and pdx-js are local groups, nycrb of course [18:57] Aria: node.nyc, node.pdx [18:57] mscdex: looks like you have 2 funky characters [18:57] mscdex: jim [18:57] Aria: (and nyc.js or whatever is clever) [18:57] mscdex: i think [18:57] malte has joined the channel [18:58] mscdex: charCodeAt reports a value of 65533 twice [18:58] mscdex: :P [18:58] mscdex: in the contents of 'code' [19:02] mscdex: yeah, if i strip out those invalid characters it continues on just fine [19:02] ph^ has joined the channel [19:03] JimBastard_: we got nyc.js and nyc.rb [19:03] JimBastard_: nyc.node [19:03] JimBastard_: ehhh [19:03] JimBastard_: nyc.js owns btw [19:03] technoweenie: unknown mime type [19:05] JimBastard_: thats caus furf stole it [19:05] JimBastard_: we dont do no code byes in nyc. we get out the car and write the code right there on the block [19:05] JimBastard_: in front of everyone [19:06] JimBastard_: New York Node [19:06] technoweenie: yea [19:06] technoweenie: sounds sophisticated [19:06] JimBastard_: nodeny [19:06] JimBastard_: thats kinda cool [19:07] technoweenie: nodyc [19:08] javajunky has joined the channel [19:10] JimBastard_: deanlandolt_home: [19:10] JimBastard_: deanlandolt [19:11] Ori_P has joined the channel [19:12] joshbuddy has joined the channel [19:13] mscdex: JimBastard_: http://gist.github.com/420164 [19:13] mscdex: in BUILD.js [19:13] JimBastard_: reading, friend just showed up [19:13] JimBastard_: thanks [19:14] mscdex: it's tripping up on some foreign names [19:14] JimBastard_: if ((code.charCodeAt(i) > 126 || code.charCodeAt(i) < 32) && (code.charCodeAt(i) != 9 && code.charCodeAt(i) != 10 && code.charCodeAt(i) != 13)) { [19:14] mscdex: heh [19:14] JimBastard_: thats new right? [19:15] mscdex: yeah, that whole for block is what i added to debug it [19:16] deanlandolt: JimBastard_ you rang? [19:16] JimBastard_: should that be fixed in core or something? [19:16] JimBastard_: with the c++'s [19:16] mscdex: the character in question has the same value: \ufffd [19:17] maushu: fffff- [19:17] mscdex: *bad characters [19:17] maushu: fffffffffffff- [19:18] mscdex: !so-last [19:18] mscdex: :-( [19:18] maushu: Announcer is on vacation. [19:18] maushu: That or it just hates mscdex. [19:18] mscdex: probably the former huhuhueuhhueuhe [19:18] maushu: Error: ECONNRESET, Connection reset by peer [19:19] mscdex: more like "Connection reset by beer" [19:20] maushu: mscdex, you have such a brasilian laugh. [19:20] mscdex: jejejeje [19:21] maushu: That is so japanese. [19:25] jtoy has joined the channel [19:25] JimBastard_: deanlandolt: im thinking of starting this nodeny group [19:25] JimBastard_: you wanna come up for the first talk? [19:26] rolfb has joined the channel [19:27] malte has joined the channel [19:28] deanlandolt_home: nodeny eh? i love the sound of that [19:28] deanlandolt_home: yeah, just tell me when [19:29] deanlandolt_home: i'll have to take off work but that's usually not too much of a problem [19:29] JimBastard_: i gotta figure out the date [19:29] JimBastard_: im about to do a blast [19:29] JimBastard_: im gonna run a node noob clinic [19:30] deanlandolt_home: that sounds great [19:30] JimBastard_: yeah start with the noob clinic, then after 30 minutes of that [19:30] JimBastard_: hit um with the hardknocks [19:31] deanlandolt_home: definitely let me know...i'll be down [19:31] deanlandolt_home: i gotta do some fun home improvement bullshit now [19:32] maushu: mau@graphnode:~$ sudo start nodeirc [19:32] maushu: start: Unknown job: nodeirc [19:32] maushu: ;_; [19:34] rictic has joined the channel [19:34] technoweenie: is anyone using the node http client heavily [19:35] mrchrisadams has left the channel [19:35] JimBastard_: technoweenie: does proxying count? [19:36] technoweenie: i dont know, nginx keeps giving me 400 bad request [19:36] JimBastard_: i do an ungodly amount of http request proxying to locally running servers [19:36] JimBastard_: the hive must live [19:37] JimBastard_: no idea [19:37] tjholowaychuk: anyone against the assert module emitting some events for stats? [19:37] JimBastard_: deanlandolt_home hit me on gmail [19:38] JimBastard_: the only thing my codes asserts is that i am awesome #bastardfacts [19:38] ryah: technoweenie: are you sending the host header? [19:38] technoweenie: ah its something i'm doing wrong [19:38] technoweenie: ryah: yea i think thats the issue, i'm not [19:41] technoweenie: yup that was it [19:41] technoweenie: merci [19:41] mau has joined the channel [19:45] skampler has joined the channel [20:02] rednul has joined the channel [20:02] joshbuddy has joined the channel [20:04] mpoz2 has joined the channel [20:05] charlesjolley_ has joined the channel [20:08] ly- has joined the channel [20:09] BBB has joined the channel [20:12] aho has joined the channel [20:15] Ori_P_ has joined the channel [20:16] b_erb has joined the channel [20:18] gwoo has joined the channel [20:18] joshbuddy_ has joined the channel [20:18] ceej: if i have http://pastie.textmate.org/private/cor6hogrxzx1slitesaawg in a file how do i call it? [20:18] technoweenie has joined the channel [20:19] ceej: it's in a file called php, i tried require('php').is_array but it says is_array doesn't exist [20:19] Guest64416: ceej, see that 'exports'? [20:19] Guest64416: Huh, thats weird. [20:20] Guest64416: It should exist. [20:20] ceej: I'm including it like require.paths.unshift('system/libraries') [20:23] mscdex: ceej: try renaming it php.js [20:24] DracoBlue has joined the channel [20:24] ceej: it is.... seems to be working now anyway v.odd [20:24] mscdex: oh [20:28] sudoer has joined the channel [20:28] derbumi has joined the channel [20:29] joshbuddy has joined the channel [20:30] o_o has joined the channel [20:30] o_o: hola [20:30] mscdex: ola [20:31] o_o: I have a question about the 'response' event for a HttpServer [20:31] mscdex: ok [20:31] mscdex: shoot [20:31] o_o: :D [20:31] o_o: thanks [20:32] o_o: inside the response fuction, i wanted to call another function that takes a callback [20:32] o_o: in my tests it works - but sometimes it returns empty data. [20:33] o_o: i'm trying to find out if i'm using node.js wrong - or there is a bug in my code ore in mongo-native [20:33] o_o: node-mongodb-native [20:33] o_o: http://gist.github.com/420252 [20:34] _announcer has joined the channel [20:34] Guest64416: Had to fix a upstart problem. [20:35] Guest64416: !so-last [20:35] _announcer: Last Question: "nodejs and database communication - how?" by FractalizeR. http://stackoverflow.com/questions/2934884 [20:37] bajeczka has joined the channel [20:38] _announcer: Twitter: "Playing around with node.js."-- Deckster. http://twitter.com/Deckster0/status/15130765615 [20:42] fizx has joined the channel [20:43] BBB: I'm using expressjs, does anyone know how to stop html being escaped when it's passed through to layout.html.haml's body from another haml file? [20:43] fizx has joined the channel [20:44] _announcer: Twitter: "I really want to go to http://berlinbuzzwords.de/ Must find time. Too bad it is not on a weekend. They also really need a node.js talk :)"-- Malte Ubl. http://twitter.com/cramforce/status/15131034007 [20:45] o_o: BBB : you are having trouble with your layout rendering content properly? [20:46] o_o: != body [20:46] o_o: is that the haml code in your layout? [20:47] BBB: =body [20:47] BBB: is what i've got [20:47] BBB: but !=body works much better ;) [20:47] BBB: thanks [20:47] o_o: :D np [20:48] o_o: i don't know haml well - but i guess != is for that 'passthrou without escape' [20:48] BBB: ACTION should have looked at the haml docs more thoroughly [20:51] mrjjwright has joined the channel [20:52] softdrink has joined the channel [20:56] _announcer: Twitter: "Previous # of Ulm webmontag Good Node.js lecture by @ b_erb usual interesting and open discussion at the end ..." [de]-- Oliver. http://twitter.com/Notesoflife/status/15131582395 [20:56] jherdman has joined the channel [20:57] xer0x has joined the channel [20:58] felixge has joined the channel [21:01] stagas has joined the channel [21:01] romainhuet has joined the channel [21:02] _announcer: Twitter: "File upload parsing at 500mb/s using node.js. That. is. cool. http://bit.ly/9Sa6Sn"-- Ikai Lan. http://twitter.com/ikai/status/15131855816 [21:02] jashkenas has joined the channel [21:02] o_o: argh [21:15] argh: o_0 [21:15] felixge has joined the channel [21:15] felixge has joined the channel [21:15] felixge has joined the channel [21:15] felixge has joined the channel [21:20] _announcer: Twitter: "Geddy web framework for Node.js, now supports SQLite and Postgres: http://is.gd/cxla6"-- Matthew Eernisse. http://twitter.com/mde/status/15132665924 [21:26] stagas: is there a backwards compatibility module? [21:26] stagas: that has the functions that are gone now? :) [21:26] x_or has joined the channel [21:27] tjholowaychuk: mmm ~9k rps json-rpc without web sockets [21:28] x_or: I am trying to do some HTML parsing using node. I'd love to find something that can do CSS selectors like jQuery, but it does not work to use jQuery inside node. I cannot find a reference to using Sizzle inside node. Other HTMLParsers are kind of gross in my opinion. Any suggestions? [21:28] o_o: hey tj - i enjoy your work - thanks for doing it. [21:28] tjholowaychuk: o_o: np :) [21:28] o_o: :) [21:31] stagas: x_or: you can try asking on http://stackoverflow.com [21:33] _announcer: Twitter: "Node.js: Evaluating code in a private context http://bit.ly/duhVox <- JavaScript Sandboxing should be the future. Very interesting."-- Charl van Niekerk. http://twitter.com/charlvn/status/15133284029 [21:33] ajpi has joined the channel [21:34] x_or: stagas: Thanks. [21:36] o_o: http://gist.github.com/420252 <-- need some help debugging [21:37] x_or has joined the channel [21:37] _announcer: Twitter: "Mmmmm, snazzy! http://debuggable.com/posts/parsing-file-uploads-at-500-mb-s-with-node-js:" [de]-- Lachlan Hardy. http://twitter.com/lachlanhardy/status/15133447930 [21:38] _announcer: Twitter: "And... with a working link: http://debuggable.com/posts/parsing-file-uploads-at-500-mb-s-with-node-js:4c03862e-351c-4faa-bb67-4365cbdd56cb"-- Lachlan Hardy. http://twitter.com/lachlanhardy/status/15133477516 [21:38] rnewson has joined the channel [21:38] rnewson has joined the channel [21:39] _announcer: Twitter: "@codepo8 @lachlanhardy http://debuggable.com/posts/parsing-file-uploads-at-500-mb-s-with-node-js:4c03862e-351c-4faa-bb67-4365cbdd56cb"-- Walter Rumsby. http://twitter.com/wrumsby/status/15133566732 [21:40] technoweenie: ugh [21:42] tjholowaychuk: nodejs testswarm alternative coming soon to a github near you :) [21:43] _announcer: Twitter: "WTFJS node.js-based code blog now on github: http://github.com/brianleroux/wtfjs"-- Daniel Shaw. http://twitter.com/dshaw/status/15133746691 [21:45] Pilate has joined the channel [21:45] Neil_ has joined the channel [21:48] _announcer: Twitter: "@avibryant everything that other people would use node.js for. Mainly small utility http/protocolbuffers servers. It's fast."-- Tobias Lütke. http://twitter.com/tobi/status/15133981134 [21:54] rolfb has joined the channel [21:59] alexiskander has joined the channel [22:07] drudge: tjholowaychuk: ping [22:09] tjholowaychuk: drudge: yo! [22:09] drudge: i saw in your twitter that you were mentioning a new framework, what is this? [22:11] creationix has joined the channel [22:11] tjholowaychuk: drudge: basically just rack for node [22:12] drudge: aha [22:12] creationix: drudge: it will be awesome [22:13] drudge: looking forward to it [22:20] mikeal: ryah: I've been thinking, I think that HTTP request and response objects should emit "close" [22:21] mikeal: and not when the socket closes, just when they are fully done, after "end" [22:21] aconbere has joined the channel [22:22] mikeal: mainly, because when I use "close" on file streams I use "close" as an assurance that everything I've written has been flushed [22:22] mikeal: I don't return success to stuff on "end" i do it on "close" and I think we should have the same assurance at the HTTP layer [22:22] ryah: mikeal: yeah, probably [22:22] mikeal: after end is finished flushing [22:23] tmpvar has joined the channel [22:23] mikeal: i'm giving a node talk tomorrow :) [22:23] mikeal: at open source bridge [22:23] mikeal: finishing up the slides right now [22:24] ryah: cool [22:24] tmpvar: word, good luck [22:25] mikeal: it's mostly about the problems with Ruby/Python and blocking by default for dealing with a whole bunch of application problems [22:26] mikeal: and why node is so much better [22:26] Aria has joined the channel [22:26] mikeal: and the insane performance is icing on the cake :) [22:26] wbruce has joined the channel [22:27] mikeal: jedschmidt: you around? [22:28] _announcer: Twitter: "nodejs - mongodb - Express - HAMLET tutorial. http://howtonode.org/express-mongodb" [da]-- Ewoud van den Boom. http://twitter.com/ewoudj/status/15135901801 [22:32] mitkok has joined the channel [22:32] _announcer: Twitter: "RE: Re. the callbacks this is a node.js idiom, as the callbacks call back 'asynchronously' the 'stack trace' has limit… http://disq.us/docv0"-- Ciaran Jessup. http://twitter.com/ciaran_j/status/15136108736 [22:33] softdrink: great googlymoogly firefox's js performance is sloooow compared to chrome [22:34] _announcer: Twitter: "parsing file uploads at 500 mb/s with nodejs http://bit.ly/dgbtKI #nodejs"-- Régis Gaidot. http://twitter.com/rgaidot/status/15136233560 [22:35] wbruce: Anyone have any tips on how to check for the existence of a file inside an 'exit' listener? It seems that the path.exists callback is never invoked (since the process is shutting down) [22:35] stagas: softdrink: yep [22:37] stepheneb has joined the channel [22:37] SteveDekorte has joined the channel [22:37] rictic has joined the channel [22:37] SteveDekorte: is there cookie support in node.js? [22:37] deanlandolt_home has joined the channel [22:39] tjholowaychuk: not bundled within node [22:39] kodisha has joined the channel [22:39] wbruce: (I guess I'll just hack up a existsSync ala http://gist.github.com/307645) [22:39] tjholowaychuk: AFAIK [22:40] stagas: SteveDekorte: http://github.com/jed/cookie-node/ [22:41] SteveDekorte: stagas: thanks - i found that but was hoping node had added cookie support since that was written :) [22:41] tjholowaychuk: ooOoO node is juuuust about at 2000 followers [22:48] ceej: whoa http://github.com/blog/233-gist-support-for-textmate [22:49] o_o has joined the channel [22:52] mikeal: so [22:53] mikeal: i have two spots in my slides that need pictures of something [22:53] mikeal: who has good ideas for node.js related pictures :) [22:56] _announcer: Twitter: "@gmosx what is it with nodejs that limits its ability to create only "toy" apps? Can you be more specific?"-- Aslak Hellesøy. http://twitter.com/aslak_hellesoy/status/15137329680 [22:56] Tim_Smart has joined the channel [22:56] mrchrisadams has joined the channel [23:00] creationix has joined the channel [23:03] wbruce: mikeal: random thought; the timeout scheduling reminds me a bit of a backstitch (ala http://www.infobarrel.com/media/image/15066.gif) [23:06] brianmario has joined the channel [23:08] hassox has joined the channel [23:09] _announcer: Twitter: "Wrote a templating parser that I like for node.js. Wasn't a fan of the other libraries. Still need to find/write a good http router."-- Chris Jaure. http://twitter.com/chrisjaure/status/15138034013 [23:10] fictorial: Chris NIH Jaure? [23:11] Aria: Yeah, that Chris Jaure [23:12] cloudhead has joined the channel [23:13] kodisha has joined the channel [23:14] Tim_Smart: I'm pretty sure there are plenty of decent templating libraries [23:16] aconbere has joined the channel [23:18] tmpvar: so I'm trying to .toString part of a buffer (4 chars) with a bunch of image data in it. it is returning a much larger subset. http://gist.github.com/420375 -- any ideas? [23:20] konobi: tmpvar: encoding i believe is something like ISO-5589 [23:20] konobi: or whatever [23:20] Aria: ISO-8859-n [23:20] konobi: utf8, etc. [23:21] Aria: Interesting, though. That seems like a bug. [23:21] Aria: What happens if you use utf8 instead of binary in the second spot? [23:21] tmpvar: sure, but I'm seeing the same behavior with different encodings [23:21] tmpvar: same thing [23:21] Aria: hm [23:21] konobi: well, for all you know, you're outputing control characters [23:21] tmpvar: good point [23:22] hassox_ has joined the channel [23:22] tmpvar: .length === 196662 [23:22] konobi: try outputting by encoding it in base64 [23:22] tmpvar: heh [23:22] tmpvar: i think this *may* be a bug? [23:22] konobi: .bytelength ? [23:23] tmpvar: that property doesn't exist on a Buffer [23:23] admc has joined the channel [23:23] tmpvar: oh [23:23] tmpvar: ACTION reads TFM [23:24] devinus-ipad has joined the channel [23:24] tmpvar: oh, I think i know whats going on here [23:25] rnewson has joined the channel [23:27] _announcer: Twitter: "nice : web sockets, Node.js & redis http://bit.ly/cS3J1H"-- af83. http://twitter.com/af83/status/15139014970 [23:28] chakrit has joined the channel [23:30] fictorial: cloudhead: nice work on http-console [23:31] cloudhead: fictorial: thanks! [23:32] kodisha: i need mapping of irc nicks -> git projects :D [23:32] [[zz]] has joined the channel [23:32] devinus-ipad has joined the channel [23:32] cloudhead: that would be useful indeed [23:33] kodisha: you should have something like a "newbies guide to #node.js " [23:33] cloudhead: kodisha: at least most people use the same nicks on github [23:33] fictorial: kodisha: yes, that would be good. fwiw, I've been using http://www.changedetection.com on http://wiki.github.com/ry/node/modules [23:34] cloudhead: hah, neat hack [23:34] mostlygeek: @fictorial your redis node.js gets mentioned http://www.web2media.net/laktek/2010/05/25/real-time-collaborative-editing-with-websockets-node-js-redis/ [23:34] ly-_ has joined the channel [23:35] bradleymeck_ has joined the channel [23:35] fictorial: mostlygeek: yeah, I commented on that page that the project could've been written with NodeRed more easily but then again, I don't want to stop someone who likes to dive deep and learn so it's a wash :) [23:35] kodisha: you know what is good, there is rss.im service, and every git repo has rss link, so you can get instant messages on your jabber/gtalk/msn [23:36] fictorial: kodisha: I 'watch' on github and then use iOctocat on my iPhone [23:36] mostlygeek: fictorial: cool :) me likely the graph on nodered [23:37] fictorial: mostlygeek: you can start to see more pieces of the puzzle now too (from our chat yesterday). :) [23:37] mostlygeek: fictorial: yep. yep [23:38] kodisha: i want to spend some time building a node.js project, but most of the things are already done by now :) that modules page is really big [23:38] fictorial: kodisha: write an _app_ then. node needs more apps and less infrastructure projects IMO. [23:38] kodisha: so after few days of wandering what should i build i finally decided [23:38] kodisha: yup [23:39] kodisha: i will start building a generic data visualization app [23:39] kodisha: node on backend [23:39] kodisha: canvas on frontend [23:39] kodisha: i have a lot canvas experiance [23:39] kodisha: experience [23:39] fictorial: cool, sounds like this project: http://rifgraf.heroku.com [23:46] paul_irish has joined the channel [23:48] kodisha: does the idea of abusing mysql and node-mysql for storing user preferences (json object) sounds good? in another words using mysql as key-value store [23:49] alexiskander has joined the channel [23:52] deanlandolt: kodisha: if you're looking for a k/v store you're probably looking in the wrong place w/ mysql :D [23:53] deanlandolt: square peg, round hole and all [23:53] Aria: Round peg, large, overbuilt square hole. [23:54] kodisha: deanlandolt: yah, but it is the most common database these days, and if you use structure like id | key (varchar) | value (text) [23:54] kodisha: with index on key, it should work pretty fine [23:55] kodisha: and building crud around that doesn't sound too hard [23:56] deanlandolt: there are much better tools for that job..if you're doing that you may as well just use the filesystem -- it'd be better [23:56] deanlandolt: (and easier) [23:59] deanlandolt: so, completely OT: a 419-like scammer has hijacked my girlfriend's gmail account and is sending out "help i'm stuck in london" emails...anyone have any ideas on the best way to screw him?