[00:00] SubStack: yep [00:01] pkrumins has joined the channel [00:01] creationix: ryah: ping [00:02] _announcer: Twitter: "half the day is spent playing with Sinatra, the other half is playing with node.js" [pt] -- Ruf. http://twitter.com/mvrilo/status/19781051246 [00:04] creationix: http://github.com/ry/node/blob/master/test/simple/test-url.js#L72 [00:04] creationix: I think that test is wrong [00:06] benburkert has joined the channel [00:06] _announcer: Twitter: "nodejitsu http://bit.ly/aq4YJM A full-featured http reverse proxy for node.js" -- Ariel. http://twitter.com/chazzuka/status/19781340498 [00:08] ryah: creationix: how so? [00:08] creationix: ryah: well, more so that I think the case of '//' is wrong [00:08] creationix: but fixing my case while keeping that case working takes a fair amount of readahead [00:09] creationix: why would you ever have a url without a protocol, but everything else [00:09] creationix: but it's common for req.url to start with '//' [00:09] creationix: and the current Url.parse will strip the '//' and treat it as part of the host section [00:10] davidwalsh has joined the channel [00:10] ryah: creationix: ask isaacs [00:10] creationix: I will, does what I'm saying make sense? [00:11] josemoreira: my 1st node.js class http://github.com/matrixownsyou/node_gistools/blob/master/GistClient.js [00:11] josemoreira: its shiny (my eyes it burns!) [00:11] creationix: Url.parse('/') -> { href: '/', pathname: '/' } [00:11] creationix: but Url.parse('//') -> { href: '//', slashes: true, host: '', hostname: '' } [00:11] sudoer has joined the channel [00:12] creationix: ryah: ^ note the lack of pathname in the second, and the funky host, hostname, and slashes properties [00:13] robotarmy has joined the channel [00:14] creationix: ryah: well, I found isaacs of gtalk [00:14] ryah: creationix: yeah, i don't know [00:19] micheil has joined the channel [00:19] ryah: rauchg_: can i tell what url a web socket connected to? [00:19] ryah: rauchg_: with socket.io? [00:19] micheil: ryah: you could use NWS [00:19] rauchg_: the host ? [00:19] ryah: micheil: just playing around with socket.io [00:19] rauchg_: or the resource part (/socket.io) ? [00:20] ryah: rauchg_: Aren't web sockets established by making a GET, upgrade request to a certain url? [00:20] rauchg_: yep [00:20] rauchg_: so the way socket.io works [00:20] rauchg_: since we have multiple transports [00:20] benburkert has joined the channel [00:20] ryah: oh - not all have that [00:20] rauchg_: we identify socket.io requests with a namespace ( /socket.io ) [00:21] rauchg_: so you can customize that by changing the `resource` optio [00:21] rauchg_: n [00:21] rauchg_: btw, i'm about to finish 0.5 which has a ton of new features [00:21] rauchg_: and is simpler / mroe lightweight [00:22] ryah: cool [00:22] softdrink has joined the channel [00:23] jsilver has joined the channel [00:23] CIA-3 has joined the channel [00:23] jsilver: man [00:23] jesusabdullah has joined the channel [00:23] jsilver: starting a consultancy is not easy... [00:23] rauchg_: i went to twitter today [00:23] jsilver: i feel like *smh* right now [00:23] rauchg_: two good things happened [00:24] rauchg_: a) i saw kanye west [00:24] jsilver: LOL [00:24] rauchg_: and we made eye contact [00:24] rauchg_: http://yfrog.com/cap1yj [00:24] rauchg_: i took like 4 pictures of him eating [00:24] jsilver: didn't click [00:24] rauchg_: and the other good thing [00:24] rauchg_: they're using node and socket.io for an internatl project [00:24] technoweenie: who, kanye? [00:24] jsilver: cool cool [00:24] micheil: rauchg_: I couldn't see why they wouldn't want to use just plain websockets for an internal project [00:24] jsilver: what [00:25] jsilver: ACTION lols inside [00:25] jsilver: anyway [00:25] jsilver: kewl [00:25] aconran: rauchg_, lol at "and we even made eye contact" [00:25] aheckmann has joined the channel [00:25] rauchg_: truly [00:25] rauchg_: we did [00:25] jsilver: lol [00:25] rauchg_: :D [00:25] rauchg_: the funny thing is, i'd never heard of him [00:25] aconran: you should have gone and told him how much you like his music [00:25] aconran: LOL [00:25] rauchg_: haha [00:26] jsilver: Do you? [00:27] jsilver: My favorite Kanye West song is "Kanye West - Node.js Dot Net Mixtape Vol 1" [00:27] jsilver: ya heard that one?? [00:27] jesusabdullah: Yeah that song rocks [00:27] jsilver: agreeed [00:27] micheil: man.. this is almost sad. [00:28] aconran: almost? [00:28] micheil: okay, it is sad. (better?) [00:29] jsilver: my other favorite Kanye West song is "Kayne West - C++ and Advanced Data Syntax Part 2 BBC Essential Mix" [00:29] jsilver: joke reuse [00:29] amerine has joined the channel [00:30] jsilver: so how does Kanye plan to use node to power his next ride? [00:31] micheil: it'll be using human api. [00:31] tisba_ has joined the channel [00:31] jsilver: also, can anyone confirm/deny if his girlfriend likes ruby [00:31] jesusabdullah: Who DOESN'T like ruby [00:32] jsilver: trolls [00:32] jsilver: bent-out-of-shape perl lovers [00:32] jsilver: old unix beards [00:32] jsilver: anti-rails camp [00:32] jesusabdullah: unf unf, yeah, node jay esssss in the house yeahh [00:32] jsilver: :D [00:32] jesusabdullah: I figured only fortran die-hards [00:32] micheil: jsilver: could be worse; you could dislike jQuery [00:32] jsilver: i don't [00:32] micheil: I do. :P [00:32] jsilver: i like web 3.0 more [00:33] jsilver: but don't mind jquery, although i consider it evil [00:33] jsilver: ;) [00:33] nrstott has joined the channel [00:33] jsilver: and ajax, generally evil [00:33] micheil: hmm.. one of the websites I worked on had a header in a php file that said: "Dudes, don't touch this, this is totally Web 3.14. Seriously" [00:33] jsilver: LOL [00:34] jsilver: i feel that's bad because those algorithms could be refactored (even programmatically) [00:34] victorstan has joined the channel [00:34] jsilver: especially to be simpler and less lines [00:35] josemoreira: just a question [00:35] jsilver: there should be an ast source-to-source transforming engine that could do that [00:35] skampler: what's the function for testing whether an object is a buffer? [00:35] josemoreira: if i want to return the result of an http get as response, how do i do it? [00:35] josemoreira: since the result will "come back" in the clalback of httpClient [00:36] josemoreira: dunno if im making sense [00:36] creationix: rauchg_: did they say if they were using connect for anything? [00:37] micheil: rauchg_: actually can sockets.io hijack another server? [00:37] micheil: rauchg_: and can it do routing? [00:37] jsilver: what is sockets.io and why is it good [00:38] micheil: http://github.com/search/?q=sockets.ui [00:38] jsilver: k [00:38] micheil: rather: http://github.com/search/?q=sockets.io [00:39] jsilver: whoa [00:39] jsilver: word [00:39] jsilver: that looks sick who made that [00:39] steadicat has joined the channel [00:39] micheil: rauchg_: [00:39] rauchg_: micheil: it's protocol-agnostic [00:39] rauchg_: imho, the best way to do "routing" is to have a json layer or something [00:39] rauchg_: like liftweb does [00:39] micheil: ACTION thinks that node-websocket-server's better at the websocket stuff [00:40] rauchg_: for their realtime widgets [00:40] rauchg_: micheil: i agree, after 0.5 i'm gonna use node-websocket-server for the websocket part [00:40] micheil: lolwut. [00:40] micheil: okay [00:41] rauchg_: but what i mean is, for example, you can implement bayeux over socket.io [00:41] micheil: rauchg_: you may wish to make use of the connection manager as well; but it's currently "private" in a way [00:41] rauchg_: socket.io is just a drop-in replacement for the `WebSocket` constructor in the client side [00:41] micheil: fair enough [00:41] rauchg_: i wanted to contribute to your routing idea though cause i'm doing something similar for our project [00:41] jsilver: which of the transports in sockets.io are best [00:41] rauchg_: but haven't had the time [00:42] micheil: I always found it amusing when people said that they were pushing the web forward by using websockets + sockets.io, when majority were actually hitting flash or cometd [00:42] rauchg_: jsilver: well, for example, htmlfile gives you an uninterrupted downstream connection in IE [00:42] rauchg_: whichi s pretty much like websocket [00:42] jsilver: hmm [00:42] jsilver: does XHR stuff slow node down much [00:42] rauchg_: micheil: why not use flash if the client has it ? [00:42] rauchg_: jsilver: not at all, and multipart doesn't close the "download" connection [00:43] jsilver: ah [00:43] jsilver: so you can get comet-like effects [00:43] jsilver: right? [00:43] micheil: rauchg_: well, they're effectively not pushing the boundaries [00:43] jsilver: without using websocket [00:43] jsilver: iphone doesnt have websocket [00:43] jsilver: does ipad? [00:43] micheil: not yet [00:43] rauchg_: jsilver: you essentially get WebSocket in every browser, without compromising your app logic [00:43] micheil: but iOS 4.0 did have a draft support for websockets [00:43] jsilver: cept iOS [00:43] rauchg_: right, but socket.io works on ipad [00:43] micheil: it was removed at the last minute [00:43] jsilver: android? [00:43] micheil: no idea [00:44] hassox_ has joined the channel [00:44] Tekerson: on iphone, can you do websockets from a native app? [00:44] jsilver: socket.io in websocket mode? [00:44] micheil: feel free to test: http://brandedcode.com:8080 [00:44] micheil: Tekerson: yes, there is a library for it [00:44] micheil: ZWT or something [00:44] Tekerson: thought you should be able to, but you never know :) ta [00:44] micheil: there's also a 500$ bounty for the first person to implement tcp sockets or websockets for Phonegap [00:44] rauchg_: jsilver: socket.io uses feature detection to know what transport to use, transparent to the developer [00:45] jsilver: NICE [00:45] jsilver: killer [00:45] rauchg_: one idea i had [00:45] micheil: ACTION decided to not worry about adding extra stuff, and instead just use one protocol to make it as good as possible [00:45] rauchg_: micheil: [00:46] rauchg_: actually, one idea i have that is up for discussion [00:46] micheil: there's also experimental plugin support: ws.use(function) [00:46] rauchg_: is have the ability to turn socket.io in proxy mode [00:46] khug has joined the channel [00:46] micheil: where function gets called in the scope of the WS instance [00:46] rauchg_: so basically you just implement a websocket server in node [00:46] micheil: so you can extend the server [00:46] creationix: micheil: so I want a connect middleware that lets me mount a websocket aware endpoint to a route [00:46] rauchg_: and WebSocket in the client [00:46] steadicat has joined the channel [00:47] rauchg_: and you set up socket.io as a standalone io.yourdomain.com [00:47] micheil: creationix: I do have a router project, and as long as you can do routing of http you can do websockets [00:47] rauchg_: which internally proxies to the websocket server [00:47] micheil: rauchg_: I wouldn't do that maybe [00:47] rauchg_: as a side effect, socket.io would work with any server that implements WebSocket (GO, Erlang, etc) [00:47] micheil: but it is a good idea [00:47] creationix: rauchg_: what about proxying to raw tcp sockets too [00:47] rauchg_: i think the orbited guys are doing it without performance penalties [00:48] rauchg_: you can do that easily too [00:48] rauchg_: also i changed the API in 0.5 [00:48] creationix: just need some sort of framing [00:48] rauchg_: to look more like node [00:48] creationix: rauchg_: awesome [00:48] creationix: I do want socket.io to be a first class citizen of connect [00:49] zapnap has joined the channel [00:49] rauchg_: the problem is that different "protocols" fit different applications best [00:49] creationix: maybe make a pseudo HTTP verb UPGRADE or WEBSOCKET [00:49] rauchg_: and this has been a "problem" in the comet world for a while now [00:49] rauchg_: for example, bayeux only fits a subset of applications [00:49] rauchg_: so things like `faye` can be useless for certain projects [00:49] jsilver: whats bayeux [00:50] rauchg_: what most people refer to when they talk about comet [00:50] rauchg_: is a spec written by the dojo guys [00:50] rauchg_: a couple years ago [00:50] creationix: jsilver: it's a protocol that does comet stuff [00:50] rauchg_: with a channel-subscribers model [00:50] jsilver: oh [00:50] jsilver: interested [00:50] jsilver: :) [00:51] rauchg_: which works like a charm for writing a chat application, but when you start writing applications that rely a lot on validation of messages for example [00:51] rauchg_: it can be troublesome [00:51] rauchg_: i started writing my OT rich text editor server [00:51] rauchg_: with bayeux [00:51] rauchg_: but i ended up dropping it [00:52] jsilver: hehe [00:52] jsilver: well sockets.io looks nice [00:52] jsilver: good stuff [00:53] jsilver: :) [00:58] SubStack: passing callbacks around between sides of a connection is super nice [00:59] bradleymeck1 has joined the channel [00:59] SubStack: subscriber channels feel too flat [00:59] sudoer has joined the channel [01:00] bradleymeck1: ACTION dances [01:00] mscdex: :S [01:02] bradleymeck1: anybody have a good use case when you need weak references and ephemeron tables wont do [01:07] steadicat has joined the channel [01:08] mattly has joined the channel [01:08] EyePulp has joined the channel [01:09] hpoydar has joined the channel [01:10] _announcer: Twitter: "One stop shop for all node.js news - http://nodejs.se/" -- Kenny Shen. http://twitter.com/kenny_shen/status/19785397950 [01:11] _announcer: Twitter: "Everyone read this - Node.js and scalability, http://northpole.sg/3T" -- Kenny Shen. http://twitter.com/kenny_shen/status/19785478541 [01:12] isaacs has joined the channel [01:14] pydroid has joined the channel [01:18] cardona507 has joined the channel [01:18] mscdex: heh i can't believe there's a site out there that provides an estimated download time for 9600 baud connections [01:19] Yuffster has joined the channel [01:20] bradleymeck1: lol [01:20] bradleymeck1: gonna dl it within a week? [01:21] linkwright has joined the channel [01:23] steadicat has joined the channel [01:23] maqr has joined the channel [01:24] jakehow has joined the channel [01:24] JimBastard has joined the channel [01:24] JimBastard: all hail king neptune and his water breathers [01:25] bradleymeck1: welcome back [01:25] JimBastard: :-D [01:30] bradleymeck1: jim you any good in c land? [01:30] ludde_ has joined the channel [01:34] rauchg_: jim is good in rap land [01:34] cardona507: how about candyland? [01:34] rauchg_: i have a scoop [01:35] rauchg_: he's coming up with the node.js rap [01:35] cardona507: oh snap! [01:35] rauchg_: yup yup [01:35] felixge_ has joined the channel [01:35] felixge_ has joined the channel [01:36] tmpvar has joined the channel [01:37] bradleymeck1: him name is tmpvar tmpvar faster than lightning~ [01:42] JimBastard: lol [01:42] JimBastard: rauchg_: its a couchdb rap! the node.js rap will come later perhaps [01:42] rauchg_: haha [01:42] JimBastard: bradleymeck1: sorry man i havent touched C in years [01:42] rauchg_: of course man [01:42] rauchg_: you have to narrate in the rap [01:42] rauchg_: your asciimo story [01:42] JimBastard: lulz [01:42] rauchg_: haha [01:43] JimBastard: im getting a bit of traffic on www.asciimo.com [01:43] JimBastard: i want to add a new feature actually for doing image to ascii [01:43] rauchg_: how many uniques [01:43] JimBastard: i dunno, i had analytics off for the past month [01:43] JimBastard: caus of a mistake [01:43] JimBastard: i just turned it back on today [01:44] JimBastard: but, http://twitter.com/#search?q=asciimo [01:44] JimBastard: thats been going on for a while [01:44] JimBastard: ill check the numbers now, see if they kicked back on [01:44] technoweenie has joined the channel [01:45] JimBastard: yeah, its gonna need a day or two, not on yet [01:45] cardona507: http://riakjs.org/ - opinions? [01:45] JimBastard: cardona507: i think oranges taste kinda good [01:45] cardona507: :) [01:45] cardona507: their alright [01:46] cardona507: strawberries are better [01:46] cardona507: *they're [01:46] _announcer: Twitter: ""Node.js and Scaling in the Small vs Scaling in the Large" http://migre.me/10D2s" -- Felipe O. Carvalho. http://twitter.com/_Felipe/status/19787776801 [01:48] jchris has joined the channel [01:48] daniellindsley has joined the channel [01:49] markwubben has joined the channel [01:51] zum has joined the channel [01:52] jesusabdullah: That was actually a pretty good article, I thought [01:52] jesusabdullah: :/ [01:53] grahamalot has joined the channel [01:53] bradleymeck1: the one complaint i have is that it seems to be taken as node in particular as a martyr [01:54] bradleymeck1: rather than expressing concerns in scala etc as well [01:55] jesusabdullah: Yeah, sorta [01:56] bradleymeck1: sorta? [01:56] JimBastard: i think the real point is that EVERYONE IS TALKING ABOUT NODE [01:56] JimBastard: +10 [01:57] SubStack: it's not brazen enough for my tastes [01:57] bradleymeck1: Agreed, anyone know if sdl 1.3 is past beta? [01:57] SubStack: JimBastard: indeed [01:57] _announcer: Twitter: "@opinali On a different subject, what do you think of node.js? it keeps coming up in the news. What I really want node.fx, the jfx equival" -- Mike Azzi. http://twitter.com/mkazzi/status/19788509946 [01:57] SubStack: NODE SUCKS WE SHOULD ALL GO BACK TO PHP [01:57] SubStack: see, like that [01:57] SubStack: s/PHP/$LANG/ [01:57] JimBastard: !tweet @mkazzi node.js is amazing! go go node time! [01:57] SubStack: al3x must have $LANG set to scala [01:58] JimBastard: some people dont have scaling issues the size of twitter [01:58] JimBastard: and by some, i mean 99% [01:58] SubStack: this is like the node war room [01:58] SubStack: with the tweets streaming in [01:58] dnolen_ has joined the channel [01:58] bradleymeck1: you should see what ppl tweet @nodejsbot [01:59] JimBastard: word? [01:59] SubStack: asynchronous trench warfare on the battlefields of Europe [01:59] bradleymeck1: they dont get that it is abot [01:59] JimBastard: deepthawtz "@deepthawtz those toilets are actually powered by node, we know how to flush buffers on the backend" --JimBastard (via @nodejsbot) [01:59] JimBastard: people dont get that im not a bot sometimes [02:02] mape: hummingbird and mockingbird [02:03] stepheneb has joined the channel [02:04] hsuh has joined the channel [02:04] _announcer: Twitter: "Added a ton of new methods to gm today. It's starting to look pretty good. http://github.com/aheckmann/gm #nodejs" -- Aaron Heckmann. http://twitter.com/aaronheckmann/status/19789003331 [02:05] hsuh: so.. i installed npm with the curl command on the site, it said "it worked" in the end...but its nowhere to be found [02:05] isaacs: hsuh: where's node? [02:05] hsuh: i installed it with brew [02:05] isaacs: hsuh: if you install node with brew, then you should install npm with brew, also [02:05] hsuh: ("node" runs ok) [02:06] isaacs: hsuh: you may need to update your brew formulas first. [02:06] khug has joined the channel [02:06] hsuh: yeah those two arent ok the moment [02:06] hsuh: there`s an issue on github about it [02:06] hsuh: aparently npm formula is outdated [02:06] isaacs: hsuh: yeah, but $(which node) is actually a shell script that points to the executable [02:06] isaacs: hsuh: so, anyway, npm is sitting at $prefix/Cellar/node/$version/npm [02:07] isaacs: where $version is the version of node [02:07] jakehow has joined the channel [02:07] isaacs: hsuh: homebrwe support of node and npm is pretty experimentall [02:07] JimBastard: considering you can install npm with a one liner anyway..... [02:08] isaacs: JimBastard: unless you installed node with homebrew, that is ;) [02:08] JimBastard: oofa [02:08] JimBastard: really? [02:08] JimBastard: the installer cant figure that out? [02:08] JimBastard: i have no clue [02:08] isaacs: hsuh: just as an example, i would not be surprised if, by the time homebrew updates npm to 0.1.20, i'll be releasing npm 0.1.21 [02:08] isaacs: JimBastard: the problem is that homebrew is convention-over-configuration and that ALWAYS EVERY TIME BREAKS EVERYTHING. [02:08] isaacs: [02:08] JimBastard: ahhh, rails [02:09] hsuh: i thought brew solved everything in the world [02:09] dannycoates has left the channel [02:09] JimBastard: hsuh: i thought that was weed [02:09] isaacs: hsuh: those guys are smart, and they do a lot of work, more than they should have to, imo [02:09] davidwalsh has joined the channel [02:09] isaacs: JimBastard: also, homebrew has some rules about which things are allowed to go where. [02:09] isaacs: JimBastard: so, actually, node and npm are "ill-behaved" packages until adamv's patches get merged in [02:10] JimBastard: yeah node is ill [02:10] JimBastard: ACTION agrees [02:10] JimBastard: :-) [02:10] isaacs: hsuh: i'd recommend just either downloading node from the tarball, or via git, and doing the standard ./configure && make && make install dance. [02:10] donspaulding has joined the channel [02:11] hsuh: isaacs: yeah, ok... will do that (i thought that was what homebrew would do...) [02:11] isaacs: hsuh: yeah, it kinda is [02:11] isaacs: hsuh: so, another option is this: [02:12] aheckmann: /help [02:12] isaacs: hsuh: create a ~/.npmrc file, and put this in it: binroot = /usr/local/bin [02:12] isaacs: hsuh: then do the npm one-liner [02:12] hsuh: hmm [02:16] mtodd has joined the channel [02:16] mtodd has joined the channel [02:16] mjijackson has joined the channel [02:17] ThePub has joined the channel [02:18] aheckmann has joined the channel [02:18] _announcer: Twitter: "node-http-proxy: Reverse proxy for Node.js - thechangelog: http://tumblr.com/x5gefwx0c" -- Team 514qc.ca. http://twitter.com/514qc/status/19789986611 [02:18] hsuh: isaacs: seems to be working now... thanks [02:20] JimBastard: woot! [02:23] Aria has joined the channel [02:30] JimBastard: HOLY SHIIIIIT YEAH [02:30] JimBastard: http://simonwillison.net/2010/Jul/28/nodejitsus/ [02:30] JimBastard: THATS WHAT IM TALKING ABOUT [02:32] jesusabdullah: Awesome [02:32] bradleymeck1 has joined the channel [02:33] JimBastard: :-D [02:34] chilts: JimBastard: cool [02:35] chilts: so, is if I used node-http-proxy, I guess it's easy enough to be able to add multiple backends and put them in/out of the lb pretty easily? [02:35] Yuffster has joined the channel [02:35] chilts: I might have a crack sometime, though I want to play with PerlBal at some stage too :) [02:38] creationix has joined the channel [02:39] matt_c: yeah we've moved away from perlbal and to Varnish at work, but man being able to telnet to a port and reconfigure the load balancer was a *huge* deal early on. [02:39] JimBastard: chilts: yeah for sure, we are working on a lot more tools for load balancing and multiple node instances [02:41] softdrink has joined the channel [02:42] JimBastard: chilts: the main tool is http://github.com/marak/broodmother [02:44] mscdex: the main tool is kid.js [02:45] danielzilla has joined the channel [02:45] JimBastard: lulz mscdex [02:45] technoweenie has joined the channel [02:46] technoweenie has joined the channel [02:47] satori_ has joined the channel [02:48] knuckolls has joined the channel [02:52] jacoblyles has joined the channel [02:53] _announcer: Twitter: "It might be interesting for some node.js Gtk bindings or" [ja] -- KOBA789(こば). http://twitter.com/KOBA789/status/19792448115 [02:54] ThePub has joined the channel [02:54] tyler_ has joined the channel [02:57] chilts: JimBastard: sweet, will check out BroodMother too [02:57] chilts: ta [02:58] JimBastard: !tweet @KOBA789 GTK bindings #node.js http://github.com/brainfucker/node-gui [02:58] JimBastard: go go node war room [03:01] daniellindsley has joined the channel [03:06] aglemann has joined the channel [03:08] chilts: it seems lots of Node.js stuff is released under the MIT license ... am thinking I should relicense my stuff under that too [03:08] chilts: and in reality, I don't care much what people do with it, so I figure that's a good match [03:08] damienkatz has joined the channel [03:08] chilts: yeah, think I'll relicense under MIT [03:09] jetienne: mit is good [03:09] chilts: I suspect that lets everyone do whatever the hell they like with it, which I'm ok with [03:09] bradleymeck1: i personally liked the stfu license as well [03:11] davidwalsh has joined the channel [03:11] wilmoore has joined the channel [03:17] isaacs: bradleymeck1: the stfu licence? is that like the opposite of the dwtfpl? [03:18] ditesh|cassini has joined the channel [03:18] matt_c: It's definitely a good idea to license your stuff on whatever the community consensus license is if that works for you. [03:18] isaacs: so, the thing that i don't grok fully about the MIT is this: [03:18] isaacs: you can sublicense it. [03:18] isaacs: so, doesn't that take like 100% of the "the above copyright notice blah blah" clause's strength away? [03:19] matt_c: isaacs: I think MIT is additive. So you can sublicense but you have to comply with the original license as well. [03:19] isaacs: oh, ok, so sublicense ≠ relicense [03:20] isaacs: like, you can't throw away the MIT, but you can take node-http-proxy, add a little thing to it, and release THAT thing under a license that says MIT + "you may only use this software on puppies" [03:20] matt_c: You can also do fun things like relicense MIT code under the GPL. [03:21] isaacs: yeah. cool. [03:21] isaacs: i like mit because no one seems to get religious about it. [03:22] statim has joined the channel [03:22] isaacs: whenever the GPL is attached to something, it's like a signal that says "whoever owns this is a bit of a prick, and the followers will jump all over you for saying things wrong" [03:22] isaacs: i don't know if that's a fair impression or not. probably not. [03:22] Noya has joined the channel [03:22] damienkatz has joined the channel [03:22] matt_c: MIT/BSD are great "I don't care what you do with it" licenses that also protect you from being sued because it blew up someone's computer. [03:23] isaacs: yeah [03:23] isaacs: dwtfpl technically does protect you from that, too [03:23] matt_c: They're also more friendly to folks who want to use some or all of the code in commercial environments. [03:30] Yuffster has joined the channel [03:31] _announcer: Twitter: "Twitter is a Japanese translation of remarks on automatic node.js the IRC channel flows, where residents are mainly Twitter via IRC bot reply saying that the stream. A great." [ja] -- Toshihiro Shimizu. http://twitter.com/meso/status/19795086005 [03:32] meso: terrible translation... [03:33] rauchg_: hahahah [03:33] rauchg_: A great [03:33] rauchg_: is a perfect enidng [03:34] chilts: yep, that's pretty funny :) [03:34] sh1mmer has joined the channel [03:34] jesusabdullah: A great! [03:35] chilts: matt_c: guess I should read up on the major difference between MIT and BSD [03:35] matt_c: chilts: BSD is essentially MIT + an extra clause about endorsement. [03:35] chilts: endorsement being? [03:35] ThePub has joined the channel [03:35] matt_c: chilts: not being allowed to say that the authors or the project endorse whatever your product is that uses it. [03:36] chilts: ah right, gotchyer [03:36] jetienne: in a ryah slide, it is written that node has "TCP throttling", anybody know where it is ? [03:36] matt_c: "Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission." [03:36] chilts: that's BSD, cool [03:37] matt_c: jetienne: there's a drain event in net.Stream that the docs say can be used for throttling. [03:37] saikat has joined the channel [03:37] matt_c: or stream.pause() [03:38] jetienne: matt_c: oh ok [03:38] jetienne: not my def of throttling :) [03:38] daniellindsley has joined the channel [03:46] chilts: matt_c: it's also worth looking at the Apache v2 license from what I can tell [03:46] matt_c: chilts: Yeah, definitely. It's more complicated but makes some corporate folks a little more comfortable participating in OSS. [03:47] chilts: yeah, just had a quick read of http://stackoverflow.com/questions/40100/apache-licence-vs-bsd-vs-mit [03:47] knuckolls has joined the channel [03:48] knuckolls has joined the channel [03:49] knuckolls has joined the channel [03:51] admc has joined the channel [03:53] proppy has joined the channel [04:00] _announcer: Twitter: "Discovered Tim Casiwell's #nodejs talk on youtube: http://www.youtube.com/watch?v=WJN9NNbY6uo" -- Andrei Railean. http://twitter.com/andrei_md/status/19797040840 [04:00] mikeal has joined the channel [04:02] _announcer: Twitter: "[The] [from FlatSpace] Experimenting with Node.js - Jeff Kreeftmeijer: http://url4.eu/6X6Xb" [ca] -- sldfjd ldajds. http://twitter.com/sldfjd/status/19797175223 [04:03] Yuffster has joined the channel [04:09] _announcer: Twitter: "What is fairly primitive API node.js so many, and I appreciate that I'm riding on top of this framework also." [ja] -- やのつとむ. http://twitter.com/t_yano/status/19797615233 [04:11] creationix has joined the channel [04:11] creationix: http://stackoverflow.com/questions/1681650/real-time-with-rails [04:11] creationix: love it! [04:12] creationix: "Unfortunately it's not well suited to Rails. Even less so on Passenger" (re long poll) [04:12] rauchg_: haha spot on [04:12] creationix: I'm trying to find an example of long poll with rails, and all I can find is people saying it's a bad idea [04:13] creationix: I know it's not going to scale well, but I just want to benchmark it anyway [04:13] jesusabdullah: It's gonna turn out to be a great idea, just that everyone *thought* it was a bad idea ;) [04:13] creationix: I'll do an event machine one to be fair to the ruby peeps [04:14] jesusabdullah: oho! [04:14] beawesomeinstead has joined the channel [04:14] SubStack: breaking: rails sucks [04:14] creationix: so how do I long poll in rails? sleep ; poll database; sleep ? [04:15] rauchg_: setTimeout(function(){ … oh wait [04:15] SubStack: hah [04:15] jesusabdullah: *rimshot* [04:15] SubStack: it's a shame too since ruby has sweet syntax for async ops [04:15] SubStack: what with the trailing blocks and all [04:16] creationix: I would just use event machine and show that it's still slow, but I really want to show how much better node is at this kind of stuff [04:17] rauchg_: creationix: [04:17] creationix: I'm guessing for php it's the same boat as rails? [04:17] rauchg_: you can test against juggernaut [04:17] benburkert has joined the channel [04:18] creationix: rauchg_: but that's flash, not rails [04:18] creationix: you could drop in node just the same [04:18] rauchg_: the problem is the web server not the language per se [04:18] rauchg_: even if you can pull it off with rails [04:18] rauchg_: you wouldn't be showing something realistic [04:19] rauchg_: you could possibly use php too, but at some point all the worker threads will be used up [04:19] rauchg_: and other incoming requests will drop out [04:19] bpot has joined the channel [04:19] rauchg_: if you do benchmark, it _has_ to be against eventmachine for ruby and twisted/tornado for python [04:19] creationix: yeah, that's what I want to show [04:20] rauchg_: i'd like to see tornado [04:20] rauchg_: personally [04:20] jesusabdullah: Me too actually [04:20] _announcer: Twitter: "I http://nodejs.org/ for Windows is a prime or pear (cygwin via)" [ja] -- naka aki. http://twitter.com/naka_aki_spl/status/19798299623 [04:20] creationix: I want to show that traditional rails and php doesn't have a chance [04:20] creationix: we can explain it all day, but people don't get it [04:20] rauchg_: it's true [04:20] rauchg_: showing it would be nice [04:20] creationix: but yeah, I [04:20] creationix: I'll do event machine and twisted to be fair too [04:21] creationix: otherwise I'll get accused of being unfair [04:21] rauchg_: will you benchmark maximum levels of concurrency ? [04:21] rauchg_: and RSS/CPU ? [04:21] creationix: rauchg_: that's the plan [04:21] rauchg_: k [04:21] rauchg_: cool [04:21] creationix: I real goal is to show that connect is awesome and can handle high concurrency [04:21] creationix: and target rails and php developers [04:22] jesusabdullah: Question: Why do people use Rails if it sucks? [04:22] creationix: jesusabdullah: it only sucks for high concurrency [04:22] mjr_ has joined the channel [04:22] rwaldron has joined the channel [04:22] creationix: otherwise it's average performance [04:23] creationix: and very easy to code [04:23] creationix: that's why I laughed at the stackoverflow response [04:23] creationix: "you don't really need long-poll, that's the solution" [04:24] bradleymeck1: rails can scale, just include scaling.rb [04:24] mde: creationix: Nicely said. Rails is a convenient whipping-boy, but it's actually a nice framework. [04:24] _announcer: Twitter: "@t_yano http://jeffkreeftmeijer.com/2010/experimenting-with-node-js/ とか http://ow.ly/2i7bS とか" -- Toshihiro Shimizu. http://twitter.com/meso/status/19798566037 [04:24] SubStack: creationix: not true [04:24] bradleymeck1: mde i really like how easy it is to use, i really dislike how bloated it is [04:25] SubStack: rails is awful to write code in [04:25] mde: bradleymeck1: Right, depends on what you want with it. I preferred using Merb. [04:25] SubStack: rails is totalitarian about how code gets laid out [04:25] creationix: SubStack: no, it's great for people who want to throw something together and not fuss about technology or languages [04:25] creationix: for people who want to focus on the problem, not the technology [04:25] mde: Right, exactly. It's about suitability for your particular purpose. [04:25] jimt_ has joined the channel [04:26] _announcer: Twitter: "@ Naka_aki_spl old but a single version, http://dl.dropbox.com/u/341900/nodejs/nodejs-0.1.102-cygwin-full.zip use it in Cygwin without" [ja] -- Toshihiro Shimizu. http://twitter.com/meso/status/19798663487 [04:26] jsilver: attention: can someone please invite me to the heroku node beta ? love, jsilv [04:26] creationix: but if you problem requires long-poll then you're screwed [04:26] bradleymeck1: jsilver you gotta wait like the rest of use :/ been a month or so since ive asked, nada [04:26] mde: Right, that's why we built our realtime stuff with Scala. [04:26] jsilver: biff [04:26] jsilver: thanks bradleymeck1 [04:27] creationix: I think that's why so many rails people like node, it goes great alongside their rails stack for real-time stuff [04:27] creationix: and they don't have to learn a new language [04:27] SubStack: generated code is a sign of really faulty abstractions [04:27] mde: creationix: +1, excactly. [04:28] SubStack: how can you focus on the problem when all that crap is sitting around in your project dir? [04:28] SubStack: tremendously distracting [04:28] mscdex: gedddddddyyyyyyyy! [04:28] mscdex: ACTION shakes a fist [04:28] mde: mscdex: What's up, dude? :) [04:28] bradleymeck1: the problem is delivering services for most people, not how it is done [04:28] SubStack: is geddy the rails clone that barfs over the file system like rails? [04:28] creationix: SubStack: obviously you're not the target audience [04:28] creationix: ;) [04:29] mscdex: mde: not much, trying to prepare for the GRE [04:29] mde: SubStack: Yes, step one on the project roadmap: "Barf all over the filesystem, just like Rails." [04:29] creationix: SubStack: but I do agree, I did ruby for a while, and refused to take any ruby job that required rails [04:29] SubStack: mde: excellent, at least they're honest [04:29] creationix: it made jobs hard to find [04:30] mde: SubStack: actually Geddy is my project -- it aims to be more Merb-like and modular, but the idea is to provide something that works out of the box for most people. [04:30] creationix: mde: I still think geddy should use connect ;) [04:30] satori_: ACTION needs a job [04:30] tpryme has joined the channel [04:30] bradleymeck1: when implementing a C api that is passing by reference multiple values, what do you guys think a suitable function signature change is? (return an array, modify objects you throw in?) [04:30] mde: creationix: I agree with you. It's on the list. :) [04:31] mjr_: mde: are you guys going to use or are you using geddy at work? [04:31] satori_: I just sent emails to venture capitalists and angels in Sydney to see if there are any cool startups around. Fingers crossed [04:31] creationix: mde: awesome [04:31] creationix: satori_: good idea [04:31] satori_: I read it on HN. I thought it was a good idea too :P [04:32] mde: mjr_: We're using geddy-model for our third-party development platform, yes. [04:32] bradleymeck1: and on another note, do you think custom GC functions are useful to implement when a GC is starting [04:32] mde: So right now, just the "M," and not the V or C. [04:32] jesusabdullah: SubStack: You could say it really IS on rails, when what you're looking for is more of a dirt bike [04:32] jesusabdullah: :v [04:32] creationix: satori_: if you did that here in the bar area (California) you email box would overload with responses [04:32] creationix: *bay [04:32] SubStack: When did it become fine to write programs that generate code? [04:32] indexzero has joined the channel [04:32] jtsnow_ has joined the channel [04:32] SubStack: For C it makes sense since C has no introspective capabilities. [04:33] bradleymeck1: substack, fortran [04:33] SubStack: but for ruby? for javascript? [04:33] mde: SubStack: A compiler is a program that generates code. :) [04:33] mscdex: js2cs! [04:33] creationix: mde: more like translates code [04:33] mscdex: where's jsilver when you need him [04:33] bradleymeck1: just in time optimizations [04:33] mscdex: :p [04:34] SubStack: mde: the programmer doesn't need to hack the machine code that the compiler generates by hand [04:34] bradleymeck1: there are a lot of techniques where code gen can be a boon, but it can also be dangerous [04:34] SubStack: the compiler generates code *for the computer* [04:34] satori_: I remember seeing a US mil spec on coding standards that said no generated code. ever. [04:34] mde: The M4 macro program generated configuration files for Sendmail. [04:34] mde: bradleymeck1: Exactly, right. [04:34] mscdex: SubStack: what about java compilers? :> [04:34] creationix: SubStack: it has a place, rails jobs are boring because it's the same codebase no matter where you go [04:34] mscdex: they compile for a jvm [04:34] creationix: some people consider that a "feature" [04:34] bradleymeck1: satori, no java, no python, no javascript, no lua, no scala, etc, no jvm actually [04:35] mde: creationix: Right, not exciting for a dev, but you don't have to worry about wheel-reinvention. [04:35] jesusabdullah: Yeah, DoD is hard-core about their code sometimes [04:35] jesusabdullah: Often in a bad way :( [04:35] mscdex: what about the DnD? [04:35] mscdex: :-D [04:35] bradleymeck1: according to DoD we should only use ADA [04:35] jesusabdullah: Too many pdfs [04:35] creationix: some developers are really content with just coding 8 hours a day using the same code they've been using for the past year, and then go home and not code [04:36] SubStack: except that rails programmers reinvent wheels all the time [04:36] _announcer: Twitter: "Any advice on OpenID with #nodejs? I want to use Google OpenID as my authentication/user management... having trouble." -- Clint Andrew Hall. http://twitter.com/clintandrewhall/status/19799292564 [04:36] creationix: (and those developers are generally cheaper too) [04:36] creationix: SubStack: don't confuse rails creators with rails users [04:36] SubStack: if it were really about reinventing wheels the focus would be on a plugin repository for functionality [04:37] mde: SubStack: All programmers do. But if you're a Rails shop, there's a benefit to being able to hire a guy who knows the framework and know it will take him less time to be productive. [04:37] SubStack: but... you don't *need* to hire people with proper libraries and sharing [04:37] creationix: SubStack: yes, it's a different mindset [04:38] mde: I wish I could remember who said it -- "the only languages that don't suck are the ones nobody uses." [04:38] bradleymeck1: so no comment on how to change a pass by reference function signature [04:38] mde: Everything sucks. [04:38] bradleymeck1: ? [04:38] creationix: bradleymeck1: sorry, I'll stop hijacking the node room [04:38] bradleymeck1: pff like i never do [04:38] isaacs has joined the channel [04:38] creationix: back to making my long-poll example in rails [04:38] SubStack: I hate mindsets that are antithetical to progress. [04:38] bradleymeck1: isaacs~ hello [04:38] indexzero: hey, anyone know where I can find instructions to install libssl-dev on osx? [04:39] creationix: indexzero: what version? [04:39] indexzero: creationix: what version should I be using? I just want to make https requests [04:39] creationix: indexzero: I mean what version of osx [04:39] indexzero: snow leopard [04:40] creationix: there is no "libssl-dev" that's a debian package name, but I think snow-leopard comes with libssl headers [04:40] creationix: indexzero: what does the configure output say about ssl [04:40] creationix: indexzero: (btw, my osx binary in ivy has ssl support) [04:40] indexzero: creationix: Checking for openssl : not found [04:41] creationix: indexzero: strange [04:41] creationix: indexzero: try this binary on your machine http://github.com/creationix/ivy-bin/blob/master/node-osx [04:43] indexzero: creationix: How do I run the binary? Is it a package, app, or just a script? [04:44] creationix: indexzero: just execute it directly [04:44] creationix: it's the "node" binary [04:44] creationix: or use the ivy installer [04:44] creationix: curl -# http://github.com/creationix/ivy/raw/master/utils/setup.sh | sh [04:44] JimBastard has joined the channel [04:44] creationix: that will include a bunch of libraries too [04:45] JimBastard: hey creationix you got some shoutouts at the nosql meetup tonight. people were asking about nStore [04:45] JimBastard: :-) [04:45] creationix: JimBastard: awesome [04:45] creationix: I hope it's not crashing for mape [04:45] _announcer: Twitter: "A well reasoned criticism of Node.js. Wish he'd revisit Scala vs. Ruby: Scaling in the Small vs Scaling in the Large http://bit.ly/ctfaRu" -- Sheheryar Sewani. http://twitter.com/sheysrebellion/status/19799846118 [04:45] jtsnow_: Trying to display a simple image works great with vanilla node.js, but not with Connect framework: http://pastebin.com/eTBU68ps - Can anyone help explain? [04:45] JimBastard: mikeal gave it a big ups [04:46] creationix: JimBastard: cool, he did help design it [04:46] tyler_ has joined the channel [04:46] creationix: jtsnow: I can [04:46] JimBastard: that man knows databases [04:46] mikeal: we were talking about how Riak keeps all the keys in memory [04:46] mikeal: and I was like "have you seen nStore?" [04:46] mikeal: cause he was a node guy [04:47] creationix: :) [04:47] creationix: jtsnow: try using buffers [04:48] creationix: jtsnow: connect doesn't really support passing the encoding on the write call [04:48] creationix: not all the middleware layers like it [04:48] creationix: jtsnow: buffers will serve faster than "binary" strings anyway [04:48] ashleydev has joined the channel [04:48] creationix: mikeal: anything interesting I should implement? [04:49] jtsnow_: creationix: ah, I see. So with Connect, am I better off just serving a static file? [04:49] creationix: jtsnow_: no, dynamic is fine [04:49] creationix: just don't store it as a binary string, use a raw buffer [04:49] creationix: bufer supports base 64 now [04:49] indexzero: creationix: So after running that ivy install script node should just be installed with ssl? [04:49] jtsnow_: creationix: great, thanks [04:50] creationix: indexzero: [04:50] creationix: indexzero: it should have made a folder called "ivy" [04:50] creationix: add the bin folder in that to your PATH [04:50] creationix: and it's "installed" [04:50] creationix: it's 100% portable [04:50] indexzero: ok [04:50] bradleymeck1: creationix , how about being able to query a history of a document [04:50] creationix: bradleymeck1: for nStore? I don't keep history [04:51] creationix: I guess you could get it until it's compacted [04:51] creationix: but that happens pretty often [04:51] creationix: indexzero: some ivy docs http://howtonode.org/deploying-node-with-spark [04:52] indexzero: Thanks creationix, now I'm really stumped though [04:52] indexzero: I'm writing a simple node client for Rackspace cloud servers [04:52] indexzero: which is all https [04:52] chrischris has joined the channel [04:52] indexzero: now I'm getting this http://gist.github.com/497248 [04:53] creationix: indexzero: isaacs was helping someone with ssl issues earlier today [04:53] creationix: I think it's still a bit buggy [04:53] creationix: ok, I know it's still buggy [04:53] creationix: let me see what patches have landed since I built that binary [04:54] jacoblyles has joined the channel [04:54] creationix: wow, ryah has been busy [04:56] creationix: hmm, nothing ssl related that I can see [04:56] creationix: but lots of other cool stuff [04:56] indexzero: nice [04:56] creationix: ACTION is rebuilding the ivy binaries [04:56] royi has joined the channel [04:56] royi has left the channel [04:57] benburkert has joined the channel [05:00] satori_: This is pretty cool....using GPU from clientside javascript. [05:01] creationix: satori_: webgl stuff? [05:01] satori_: I have been playing around with WebGL for a few days. It is actually quite mature [05:01] satori_: that link is using WebGL calls to do regular math on the GPU [05:02] creationix: indexzero: ok, I updated my binaries [05:02] satori_: javascript arrays can be bound to the video card. The shaders don't care what the actual data is [05:02] creationix: indexzero: go to the ivy folder and type ./utils/update.sh [05:03] creationix: satori_: that is cool [05:03] mikeal: that's because WebGL isn't super hard to implement [05:03] mikeal: you map a js API directly the OpenGL bindings [05:03] mikeal: it's awesome :) [05:03] satori_: It works in FF4/Chrome/Safari right now, but it's not enabled by default. [05:03] matt_c has joined the channel [05:04] satori_: WebGL has dropped all the fixed function pipeline baggage too. It just shaders now [05:04] mikeal: not even in FF4? [05:04] satori_: and the shaders can be GLSL c code in html script blocks [05:04] khug has left the channel [05:04] mikeal: that's good, that's really heavy in FF expecially [05:04] Azeroth has joined the channel [05:05] satori_: even ff4 has it disabled by default. Chrome 6 needs cmd line switches [05:05] creationix: satori_: so you can write c in the browser and run it in the gpu [05:05] satori_: creationix: yes [05:05] satori_: but it's GLSL flavoured c [05:05] creationix: awesome, that will make game AI feasable in the browser [05:05] creationix: js is just too slow [05:05] mikeal: you didn't see that quake 2 demo? [05:05] sechrist has joined the channel [05:05] satori_: browsers include a GLSL c compiler [05:06] satori_: invoked from javascript [05:06] creationix: mikeal yeah, it was slow [05:06] mikeal: WebGL + WebSockets === full quake 2 impl [05:06] mikeal: that's because they built it with GWT [05:06] mikeal: :P [05:06] creationix: ACTION has a new apple bluetooth trackpad [05:07] mikeal: how is that [05:07] mikeal: i was considering one [05:07] mikeal: i like the magic mouse tho [05:07] creationix: mikeal: it's huge [05:07] mikeal: like… how huge? [05:07] creationix: great since my girl is sleeping on my arm and I can't move it [05:07] indexzero: creationix: Thanks for the tip, still the same issue. If ssl is buggy, I suppose I'll wait for ry to get around to :) [05:08] mikeal: i think pquerna is working on it [05:08] mattly has joined the channel [05:08] creationix: indexzero: well at least you have home and end key support in repl now ;) [05:08] mikeal: he wants to support *awesome* stuff [05:08] creationix: and Function.prototype.bind [05:08] sechrist: is there a node mysql driver that is decent yet? [05:08] creationix: those are new sinc v0.1.102 [05:08] mikeal: sechrist: no [05:09] sechrist: creationix: My mate has one and I was playing with it. I liek the oversizedness over my mbp's track [05:09] sechrist: but I have no use for it in practicality [05:09] creationix: I never understood the desire for mysql [05:09] JimBastard: thats kinda borked, creationix ssl doesnt work for client requests? [05:09] creationix: sechrist: I needed a new mouse for my kids computer, so instead of buying a magic mouse, I gave them mine and bought a trackpad [05:09] ThePub has joined the channel [05:09] jacoblyles has joined the channel [05:09] sechrist: well I don't want to use mysql but I'm not versed enough in other datastores [05:09] creationix: JimBastard: it does for me [05:09] sechrist: to get shit done on time [05:09] sechrist: :) [05:10] creationix: JimBastard: depends on the site you're connecting to [05:10] JimBastard: creationix: whats the variable? [05:10] JimBastard: i would assume we just have bad client code [05:10] creationix: JimBastard: variable? [05:10] JimBastard: why would one site work and another not? [05:10] creationix: ssl is fairly complicated, some servers implement it different [05:10] mikeal: sechrist: what about postgres? [05:10] JimBastard: interesting [05:10] creationix: postgres is awesome if you want rdbms [05:11] mikeal: yeah, postgres > mysql [05:11] mikeal: or drizzle [05:11] sechrist: I've never used it [05:11] mikeal: but there is no drizzle binding for node yet [05:11] ThePub has joined the channel [05:11] creationix: and ry's driver is great if you don't mind c mods [05:11] sechrist: I'm a lot more familiar with sql than say couchdb [05:11] indexzero: ACTION signing off, a beintot [05:11] sechrist: I use couchdb on several projects [05:11] mikeal: drizzle == (mysql - crap you don't ever care about or use) [05:11] steadicat has joined the channel [05:11] sechrist: but i've barely scratched the surface [05:11] teemow has joined the channel [05:11] creationix: mikeal: we don't have good drizzle libs yet do we? [05:12] sechrist: so there's a good postgres driver for node? [05:12] robotarmy has joined the channel [05:12] creationix: sechrist: I made one a LONG time ago that implements the protocol in pure js [05:12] creationix: it's good unless it's under high load [05:12] creationix: then it crashes [05:12] creationix: ryah made one that binds to libpq [05:12] sechrist: keyword: crashes [05:12] sechrist: hmm [05:12] mikeal: creationix: not yet, but we really should [05:13] mikeal: libdrizzle is non-blocking [05:13] mikeal: it's a good fit for node and works with MySQL to boot [05:13] creationix: I know, drizzle is pretty cool [05:13] sechrist: well if I go with postgres now and drizzle takes off [05:13] sechrist: converting over should be simple [05:13] sechrist: right? :P [05:13] creationix: sql is sql [05:13] creationix: (mostly) [05:13] sechrist: yeah I'm kind of aware of a few things postgres does that mysql doesn't [05:14] sechrist: but I don't think i've ever had a usecase for it [05:14] creationix: yeah, postgres has all sorts of awesome advanced stuff [05:14] creationix: postgis for example [05:14] mikeal: there are small differences in advanced queries for sure [05:14] creationix: or tsearch [05:14] creationix: typed arrays as field values [05:14] mikeal: but most of the differences are in configurations and scaling strategy [05:14] creationix: yeah, that is quite different [05:15] creationix: mikeal: so I don't remember if I asked, but how would I long-poll in php or rails? [05:15] bradleymeck1 has joined the channel [05:15] creationix: sleep? [05:15] CarbonicMan has joined the channel [05:16] sechrist: on the server side? [05:16] creationix: and I'd really like to be able to send messages across clients [05:16] creationix: like a real-time chat server [05:16] sechrist: ..in php? [05:16] creationix: sechrist: yep, I want to SHOW how much it sucks [05:16] sechrist: oh oh [05:16] sechrist: okay [05:16] satori_: hehe [05:16] creationix: I know it's not going to scale for beans [05:16] creationix: especially rails [05:17] mikeal: in rails and python you have to conditionally sleep [05:17] mikeal: it's aweful [05:17] sechrist: that's my first reaction for php as well [05:17] mikeal: the scale isn't the worst part [05:17] n3v3le has joined the channel [05:17] sechrist: unless you go out of your way to make it async [05:17] mikeal: it's the fuckin side effects [05:17] creationix: mikeal: is there a way to communicate across requests [05:17] creationix: so I could do a broadcase pub-sub [05:17] mikeal: globals [05:17] creationix: *broadcast [05:18] sechrist: eh [05:18] sechrist: if you're using fcgi [05:18] creationix: mikeal: yeah, I guess that would work for rails, it is technically long running [05:18] mikeal: unless you're out of process, then you have to try and pass messages, which is more conditionall sleeps and side effects [05:18] sechrist: i've seen php chat servers [05:18] mikeal: this is *exactly* the thing that made me leave Python [05:18] sechrist: but i'm afraid to go look at their code [05:19] creationix: well, php with threaded apache isn't too bad [05:19] creationix: still not going to like thousands of clients though [05:19] sechrist: but unless you use apc idk how you could have information between requests [05:19] sechrist: then again since like 2006 i've used nothing but fcgi php [05:19] sechrist: so [05:20] creationix: yeah, php is very much a per-process system [05:20] sechrist: i'm assuming php works well with the postgres? [05:20] creationix: sechrist: yep [05:20] sechrist: my next app will be node + php [05:20] sechrist: k [05:20] creationix: postgres is well supported everywhere [05:20] sechrist: I'm not ready to start serving html from node [05:20] creationix: they write good apis to link against [05:21] sechrist: well dynamic html anyway [05:21] creationix: sechrist: it's easy [05:21] creationix: look at howtonode.org [05:21] jacoblyles_ has joined the channel [05:21] creationix: and when a couple template languages get async helpers, then it will be even easier [05:21] sechrist: :x *gulp* [05:22] damienkatz has joined the channel [05:22] damienkatz has joined the channel [05:22] tyler_ has joined the channel [05:23] CarbonicMan: Hi guys, the part of node that worries me is the debugging. I found a utility for querying the running process, but nothing to step through code. Is anything in the works? [05:23] creationix: CarbonicMan: there is a wiki page about using the eclipse debugger [05:24] creationix: I personally just put console.debug statements through the code [05:24] satori_: http://wiki.github.com/ry/node/using-eclipse-as-node-applications-debugger [05:24] satori_: I use the console method mostly too [05:24] satori_: I don't like eclipse much [05:24] CarbonicMan: I saw that but eclipse scares me a little [05:24] sechrist: creationix: I'm going to wait until template languages mature more [05:24] sechrist: I said this 2 months ago [05:24] creationix: and there is a recent mailing list thread about hooking into the browser for debugging [05:24] sechrist: still today :\ [05:25] creationix: sechrist: did you see my grain proposal? [05:25] creationix: http://github.com/creationix/grain [05:25] CarbonicMan: x: Yes, debugging in the browser would be greate [05:25] sechrist: creationix: was this discussed on the mailing lift [05:25] sechrist: list* I think I remember part of it [05:26] sechrist: ah [05:26] sechrist: yea [05:26] creationix: sechrist: basically you can call async functions from the template, and the template will render after their callbacks [05:26] creationix: no need to pre-compute all the data [05:26] sechrist: that's my beef [05:26] sechrist: precomputing [05:26] sechrist: which I've argued with people about that claim there's no need [05:26] creationix: with grain style templates, you just declare what data you want, and it's all loaded in parallel and handled automatically [05:26] sechrist: hm [05:27] sechrist: that sounds like the easiest way to do it [05:27] creationix: you can either get a stream that sends data events or provide a callback for when it's all done [05:27] creationix: sechrist: what's your favorite template language? PHP [05:27] sechrist: indeed [05:27] creationix: do you need conditionals and loops? [05:28] sechrist:
[05:28] mtodd_ has joined the channel [05:28] sechrist: yep [05:28] creationix: ok, so a grain style ejs would be perfect [05:28] creationix: though it wouldn't allow arbitrary js in the blocks [05:29] meso has joined the channel [05:29] knuckolls has joined the channel [05:29] sechrist: define arbitrary [05:29] davidwalsh has joined the channel [05:29] creationix: you wouldn't be able to embed code in the template [05:29] creationix: just pre-defined stuff [05:29] jacoblyles has joined the channel [05:29] sechrist: then how is that different then precomputing stuff [05:30] creationix: sechrist: no, just pre-defined syntax [05:30] creationix: not the whole js language [05:30] creationix: the data is all on the fly [05:30] sechrist: ah [05:30] sechrist: I think this needs to mature before I do a serious project with it [05:30] creationix: I've got one that works today, but it doesn't have conditionals or loops [05:30] sechrist: I feel at home with php [05:30] creationix: or even parameters to functions you call [05:31] creationix: but it does support async functions [05:31] creationix: and technically those functions can do anything [05:31] creationix: if I could add parameters, conditionals, and loops, then it would be plenty powerful [05:32] amerine has joined the channel [05:33] jakehow has joined the channel [05:33] jimt has joined the channel [05:33] sechrist: "Although, unlikely, this can break builds or cause obscure runtime issues." [05:34] sechrist: brew install grammar [05:36] Dmitry: creationix: This grain thing is very similar to what I was suggesting not so long ago… Nice :) [05:36] creationix: :) [05:37] Dmitry: No conditionals and loops. This is awesome! [05:37] creationix: Dmitry: how do you feel about no parameters on the functions? [05:37] creationix: too limiting? [05:37] Dmitry: Nope [05:38] Dmitry: But it would be nice to do some semi real project to see [05:38] creationix: Dmitry: then you can use corn today! [05:38] creationix: I used a modified version of it for sousaball [05:38] creationix: http://github.com/creationix/sousaball/blob/master/templates/edit.tmpl [05:38] creationix: makes for clean templates [05:38] Dmitry: Would be nice to support nesting… Like "My name is @person.name['first name']. [05:39] creationix: Dmitry: good point, that should be easy enough [05:39] creationix: the reason I want parameters is for things like partials [05:39] creationix: @render('someothertemplate', data) [05:40] Dmitry: (?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))? [05:40] _announcer: Twitter: "Or non-mainstream art? asciimo make ASCII characters personality - create awesome ascii art with javascript! works in the browser or node.js: http://goo.gl/mtJE # WebApp" [zh-CN] -- BACKBONE. http://twitter.com/Bqck/status/19802892187 [05:40] sechrist: http://gist.github.com/497340 [05:40] sechrist: eh [05:40] sechrist: bleh [05:40] creationix: Dmitry: wow, that a lot of regexp [05:40] Dmitry: I ♥ regexp :0 [05:41] creationix: sechrist: macports is evil [05:41] creationix: brew install postgres works fine on a clean box [05:41] sechrist: fffff [05:42] Dmitry: creationix: if you need, I did this parsing already, but of course you can do it yourself. [05:42] Dmitry: …if you want to have fun ;) [05:42] creationix: Dmitry: make a template language based on grain and publish it on github [05:43] Dmitry: creationix: Like I don’t have too many projects already? :) [05:43] creationix: Dmitry: ok, I'll make corn a little more robust and publish it [05:44] CarbonicMan: BTW regarding the debugging: I tried to use console with a version of node compiled with cygwin on windows and it complained about console, but once I required "sys" it worked. [05:44] CarbonicMan: Well I changed the line to sys.log(...) [05:44] creationix: CarbonicMan: yeah console is new [05:45] CarbonicMan: Ah ha [05:45] Dmitry: creationix: Ok. I would rather contribute… maybe. [05:45] creationix: Dmitry: well, you have a head start, I'l going to bed soon [05:47] damienkatz has joined the channel [05:47] damienkatz has joined the channel [05:52] tpryme has joined the channel [05:57] ThePub has joined the channel [05:58] mitkok has joined the channel [05:59] _announcer: Twitter: "So what's the best persistence solution for #nodejs?" -- Henrik Joreteg. http://twitter.com/HenrikJoreteg/status/19803858180 [06:01] ThePub has joined the channel [06:02] _announcer: Twitter: "Re: Shop Hack Node.js http://bit.ly/aryBiR Details" [nl] -- Alpha One Labs. http://twitter.com/alphaonelabs/status/19804040031 [06:03] hassox has joined the channel [06:04] mscdex: node.js rules! [06:04] ThePub has joined the channel [06:08] ThePub has joined the channel [06:09] mjr_ has joined the channel [06:10] mtodd has joined the channel [06:11] shreekavi has joined the channel [06:11] statim has left the channel [06:12] isaacs has joined the channel [06:15] matt_c has joined the channel [06:22] damienkatz has joined the channel [06:22] damienkatz has joined the channel [06:26] _announcer: Twitter: "I can't sleep so I'm hacking on Node.js again. The plane ride gave me a nice boost already today." -- Tom. http://twitter.com/sh1mmer/status/19805183721 [06:27] _announcer: Twitter: "Node Roundup # 1 http://bit.ly/9nez7n nodejs" [cs] -- wopata.com. http://twitter.com/wopata/status/19805252810 [06:28] damienkatz has joined the channel [06:29] BBB has joined the channel [06:35] crohr has joined the channel [06:36] _announcer: Twitter: "I need to get a couple copies of myself for a few months. Anders' I get the ideas for projects node.js yes, never implemented." [de] -- Leon Weidauer. http://twitter.com/techpriester/status/19805682727 [06:39] pdelgallego has joined the channel [06:40] damienkatz has joined the channel [06:40] damienkatz has joined the channel [06:42] _announcer: Twitter: "V8 Super Cock of what looks http://nodejs.org/" [zh-CN] -- 雪莱克丝 • Y. http://twitter.com/shellex/status/19805934734 [06:42] hassox has joined the channel [06:43] benburkert has joined the channel [06:46] mjr_: V8 Super Cock? [06:47] _announcer: Twitter: "@heroku what's the chance of getting beta access to the node.js system?" -- Daniel Neighman. http://twitter.com/hassox/status/19806162630 [06:49] mscdex: ACTION shakes a fist at google translator [06:51] sh1mmer: mjr_: I was just wondering about the super cock [06:51] sh1mmer: wtf [06:51] mjr_: Yeah, it comes up a lot. [06:51] sh1mmer: anyone have any thoughts on http://varnish-cache.org/wiki/ArchitectNotes ? [06:53] bvleur has joined the channel [06:55] bvleur: Hi. Is there any way to specify which DNS server the DNS module should use? [06:55] sh1mmer: hm [06:55] sh1mmer: good question [06:55] sh1mmer: ACTION pokes around [06:57] BryanWB has joined the channel [06:58] sh1mmer: bvleur: I don't see an obvious way [06:58] sh1mmer: seems like a reasonable feature request though [06:59] _announcer: Twitter: "@lvh_ node.js is v.interesting. A shame javascript doesn't have many generic libs." -- Nicholas Tollervey. http://twitter.com/ntoll/status/19806699932 [06:59] bvleur: Hmm.. yeah. Well, I can get around with it by configuring the OS correctly this time :) [06:59] sh1mmer: bvleur: if you look in node source [07:00] _announcer: Twitter: "@maxogden cumbersome, unless you use a minimal set of OpenLayers files, which is what I did when playing with OL in node.js" -- Eric Lemoine. http://twitter.com/erilem/status/19806746142 [07:00] sh1mmer: in lib is dns.js which is a wrapper around the node_cares.cc modules in node/src [07:00] mjr_: sh1mmer: that article is interesting, but I think it misses the point. "1975 programming" isn't done because people assume computers haven't changed since 1975, it's done because people don't understand how computers really work. [07:00] sh1mmer: mjr_: right, but it's an interesting point [07:01] mjr_: And many smart people make big mistakes like this, not because they aren't smart, but because they haven't yet taken the time to understand how the system they are workign with operates. [07:02] sh1mmer: !tweet ntoll there are actually a surprising number of libs for node.js check out wiki.github.com/ry/node/modules [07:02] sh1mmer: mjr_: this is why the dns thing has been really fun for me [07:02] sh1mmer: I'm really learning how it works [07:02] sh1mmer: did you see my 'map of the internet' talk? [07:02] mjr_: That's why I like working with node and low level interfaces in general. I like to understand how things work. [07:03] mjr_: I have not. [07:03] sh1mmer: it's been a joy for me to challenge myself to really really understand how everything fits together [07:03] sh1mmer: almost no-one appears to have a holistic view of how the web works [07:03] sh1mmer: so I set out to get some perspective [07:03] mjr_: Today I went an implemented the WebSocket draft76 speicifcation, not because there weren't other implementations that I could use, but because I wanted to know how it worked. [07:04] mjr_: Sounds cool. [07:05] mjr_: BTW, draft76 using node + buffers: http://github.com/mranney/traffic_graph/blob/master/graph_server.js#L16 [07:05] bvleur: sh1mmer: Yeah, well.. I have zero knowledge of the ares library. I can follow the V8 wrapping more or less and at some point it does ares_gethostbyname, but I don't see it specifying any DNS server anywhere. So I guess it just uses the system defaults [07:05] isaacs: go here and say you like this: http://www.meetup.com/BayJax/ideas/348184/ [07:05] mjr_: isaacs: beat you to it [07:05] sh1mmer: isaacs: sudo go here and say you like this [07:06] mjr_: sh1mmer: where can I see your map of the internet talk? [07:06] sh1mmer: isaacs: oswald is such a funny chap. he pinged me yesterday to ask what I was upto and we ended up talking about node. [07:07] sh1mmer: mjr_: O'Reilly are the only people that filmed it (behind a paywall), but you can see the slides here http://prezi.com/gks10schfggg/i-made-a-map-of-the-internet-and-other-lessons-about-speeding-up-web-sites/ [07:12] sh1mmer: man Git rocks so hard [07:15] donnex: isaacs: hey, the npm make install seems to be broken again (at least on FreeBSD). https://gist.github.com/53d6ab59bb15d4e46f54 [07:16] isaacs: donnex: oh, right, sorry [07:16] isaacs: pushed a new version fo my web site, forgot that was in it. [07:18] mjr_: sh1mmer: just browsed your slides. Something that I've been interested in lately is that wifi might become unusable in a few years in cities. [07:18] shockie has joined the channel [07:18] mjr_: More and more gear ships with max power output and no way to dynamically lower power. [07:18] sh1mmer: mjr_: you should totally check out that ofcom report [07:18] sh1mmer: it's facinating [07:19] mjr_: In our SF office, many days we cannot use our wifi. [07:19] sh1mmer: also Phil Telis did some interesting research about the quality of consumer routing gear [07:19] sh1mmer: he was finding that at&t routers added 100ms of latency [07:19] mjr_: All of the 2wire gear that AT&T ships for their uverse service has SUPER high power output [07:19] isaacs: donnex: oh, no, wait.. [07:19] isaacs: that's something different [07:20] sh1mmer: mjr_: I'm on channel 10 for the specific reason it's the least congested part of the spectrum in my hood [07:20] sh1mmer: mjr_: are you in SF? [07:20] mjr_: Yeah, my office is 2nd and Bryant . [07:21] sh1mmer: mjr_: sweet. Fancy a beer or something and some hacking [07:21] sh1mmer: actually on Wednesdays we hack from a cafe in the mission [07:21] isaacs: donnex: works for me. try doing "npm cache clean" and then run it again, maybe [07:21] sh1mmer: if you fancy it you are wlecome [07:21] mjr_: That sounds good. I do enjoy a beer. [07:22] jpld has joined the channel [07:24] donnex: isaacs: hm, thats strange. I'm getting another error this time. https://gist.github.com/e9213e90cf18c06b735d [07:25] isaacs: donnex: oh, i see, you're doing the make install, not the curl trick [07:26] isaacs: donnex: it's working for me. i don't get it [07:26] isaacs: donnex: is the code up to date? [07:26] donnex: isaacs: yeah, I wasn't sure that the tar fix was in the tarball that make gives you [07:26] isaacs: oh, yeah, it probably isn't, that's right [07:27] donnex: isaacs: yeah it's up to date. Maybe it's something with my system/install then .. hmmm [07:27] saikat has joined the channel [07:27] liesen has joined the channel [07:28] tyfighter has joined the channel [07:29] isaacs: donnex: make uninstall; make install [07:29] isaacs: donnex: where it's dying is that it's trying to deactivate the active version, and failing [07:29] isaacs: donnex: this happens when activating something that is already active, and the implicit deactivation fails. [07:30] _announcer: Twitter: "@brianleroux I assumed, but it's still damn exciting. I picked it up recently for my node.js apps. I'm feeling a bit like @davejohnson :-)" -- Clint Andrew Hall. http://twitter.com/clintandrewhall/status/19808093548 [07:34] jelveh has joined the channel [07:47] claudio has joined the channel [07:47] claudio has joined the channel [07:47] _announcer: Twitter: "Experiments node.js websockets + + canvas http://bit.ly/d9QIhi (http://bit.ly/9megYn)" [ca] -- David Anguita. http://twitter.com/danguita/status/19808811174 [07:56] muhqu has joined the channel [07:57] TomY_ has joined the channel [07:59] beanie___ has joined the channel [07:59] _announcer: Twitter: "hey @exceptional, it would be awesome if i can track my exceptions from #node.js with #exceptional" -- ben. http://twitter.com/beanieboi/status/19809329313 [08:00] beanie___: yes! this would be awesome! :) [08:04] _announcer: Twitter: "I'm gonna try parse the firehose with node js tonight. What a party!!" -- Ben Nolan. http://twitter.com/bnolan/status/19809557225 [08:05] mscdex: agreeing with your own tweets now beanie? ;-) [08:06] felixge has joined the channel [08:06] felixge has joined the channel [08:06] FransWillem has joined the channel [08:07] _announcer: Twitter: "collection of links to start with Node.js: http://bit.ly/d2z3AF" [fr] -- jpvincent. http://twitter.com/theystolemynick/status/19809672439 [08:11] mikekelly: anyone know of any work on jsgi-cache? i.e. a jsgi equivalent of rack::cache [08:17] N` has joined the channel [08:24] felixge has joined the channel [08:24] felixge has joined the channel [08:25] _announcer: Twitter: "The number of modules for node.js (currently at v0.1.102) is unbelievable: http://wiki.github.com/ry/node/modules" -- James Dennes. http://twitter.com/jdennes/status/19810414301 [08:25] FransWillem: Meh, writing a proper Node RPC/IPC module takes a shitload of work :-/ [08:25] FransWillem: Much more than I anticipated [08:29] _announcer: Twitter: "The profile "Node.JS" and typing, "Node" Fushigi changes" [ja] -- KOBA789(こば). http://twitter.com/KOBA789/status/19810598980 [08:31] mscdex: FransWillem: you mean RPC between browser and server or between server processes? [08:33] FransWillem: mscdex: Both [08:33] mscdex: FransWillem: you know about SubStack's dnode? [08:33] FransWillem: mscdex: IMHO dnode is horrible with anonymous functions and long-lived connections [08:34] FransWillem: mscdex: It'll assign each passed object/function an id and will keep it referenced the entire time, so if you pass a lot of anonymous functions, they'll accumulate and cause a memory leak [08:34] bridge has joined the channel [08:35] _announcer: Twitter: "Though NodeJS out too soon, though it now looks like more hot ~" [zh-CN] -- cnhacktnt. http://twitter.com/cnhacktnt/status/19810853669 [08:40] mscdex: FransWillem: ok, just checking :-) [08:40] FransWillem: Mine's more advanced though :p [08:40] FransWillem: And it's already working [08:41] FransWillem: just ironing out the kinks [08:42] virtuo has joined the channel [08:42] FransWillem: Only downside is that for any functions other than simple single-callback and synchronous return, you'll have to do some of the garbage collection yourself [08:53] tyler__ has joined the channel [08:53] _announcer: Twitter: "I'm going on a big adventure into the land of binary protocols and #nodejs. Wish me luck" -- Felix Geisendörfer. http://twitter.com/felixge/status/19811646863 [08:54] beanie___: mscdex: hehehehhe giving it more momentum :D [08:57] keeto has joined the channel [09:00] mscdex: whew finally! the uno card graphics are complete [09:01] sveimac has joined the channel [09:02] _announcer: Twitter: "Node.JS or trying to develop a lot. PHP skill level'm supposed to beat that, Node.JS" [ja] -- KOBA789(こば). http://twitter.com/KOBA789/status/19812034892 [09:03] _announcer: Twitter: "C / C + + applications is not so strong I do not have to Node.JS with mass" [ja] -- KOBA789(こば). http://twitter.com/KOBA789/status/19812072664 [09:07] _announcer: Twitter: "Node.js - A platform for writing servers in JavaScript. How cool is that!" -- Nathan Bollom. http://twitter.com/nbollom/status/19812222713 [09:07] konobi: felixge: what ya up to? [09:08] felixge: konobi: writing a mysql driver [09:08] felixge: no c binding, pure js [09:08] admc has joined the channel [09:08] keeran has joined the channel [09:09] hdon has joined the channel [09:09] felixge: not interested in binding poorly documented libs with unclear support for portability and non-blocking I/O [09:09] konobi: heh [09:09] josemoreira: 10am.... wake up sunshine http://www.youtube.com/watch?v=yFWVuVcPPiw&feature=related [09:09] konobi: what node libs are you going to use? [09:09] mde has joined the channel [09:09] felixge: konobi: not sure yet, I looked at bufferlist but I don't think I'll use it [09:10] felixge: got any particular libs in mind? [09:12] konobi: i was thinking about hacking pack/unpack into Buffer, but my C skills aren't up to it just yet [09:13] felixge: well, I mostly need to handle little endian numbers [09:13] felixge: and null terminated stuff [09:13] felixge: so it's pretty simple for most parts [09:13] satori_ has joined the channel [09:13] konobi: felixge: http://code.google.com/p/python-bitstring/ also looked like something worth replicating [09:14] BryanWB has joined the channel [09:14] felixge: that looks nice [09:14] liesen: felixge: i'm sure you've seen this, but in case not: http://github.com/sidorares/nodejs-mysql-native [09:15] felixge: but yeah, the mysql format is rather simple so the biggest issue is designing a nice API [09:15] felixge: oh I hadn't seen it before [09:15] felixge: let me check it out [09:16] liesen: it has some quirks, i've heard... rsms has a fork but i haven't looked into the changes he's made [09:19] felixge: liesen: yeah, this doesn't look good enough for me [09:19] _announcer: Twitter: "Back to shaders for a while then I'll be going to nodejs land. :)" -- Chris Chua. http://twitter.com/chrisirhc/status/19812746140 [09:20] felixge: liesen: some obvious errors on the first read [09:20] mAritz has joined the channel [09:20] liesen: i haven't tried it, so i won't know. just thought i might let you know of previous attempts :) [09:20] felixge: but much more readable than the port of the ruby mysql driver [09:21] felixge: anyway, I'm determined to do it :) [09:21] liesen: full speed ahead, then, felixge [09:26] _announcer: Twitter: "A minimalistic server for "comet" and plain TCP connections in Node.js. - http://github.com/mscdex/grappler" -- Abrdev Blog. http://twitter.com/abrdev/status/19813018129 [09:28] mscdex: :-D [09:29] caolanm has joined the channel [09:31] _announcer: Twitter: "Experimenting with Node.js - Jeff Kreeftmeijer http://ping.fm/J3bLS" -- Z. http://twitter.com/zombiegirrrrl/status/19813233544 [09:35] ChrisPartridge has joined the channel [09:36] blackdog has joined the channel [09:38] romainhuet has joined the channel [09:39] femto has joined the channel [09:46] proppy: did anyone experienced Error: NOT_ALLOWED - attempt to reuse consumer tag '., while playground with node_amqp, and subscribing multiple time on the same queue ? [09:47] hellp has joined the channel [09:49] ewdafa has joined the channel [09:52] satori_: Done with code for the day. Time to go see a band. [10:01] maushu has joined the channel [10:10] elliottkember has joined the channel [10:11] d0k has joined the channel [10:20] _announcer: Twitter: "Tempted to try and reimplement the DHT layer of http://github.com/olegp/httpx using NodeJS even though there's no application for it" -- Oleg Podsechin. http://twitter.com/olegpodsechin/status/19815342508 [10:21] blaze-x has joined the channel [10:22] elliottkember has left the channel [10:26] gopher has left the channel [10:27] olegp has joined the channel [10:36] MattJ has joined the channel [10:44] nobodyfound has joined the channel [10:46] felixge has joined the channel [10:46] felixge has joined the channel [10:52] mitkok has joined the channel [10:53] mitkok: Hey, guys. I have weird problem. When I'm connected to internet, my simple http node server works, but when I pull out the cable, it doesn't work on Google Chrome. In Firefox works perfectly. It's weird, because I didn't have that problem a week before [10:54] omarkj: Hm, k. [10:54] mitkok has joined the channel [10:56] _announcer: Twitter: "about to dive into my first javascript tests. maybe i should also be testing my node.js stuff, but i'll start with client side functionality" -- Sam Elliott. http://twitter.com/Lenary/status/19816952089 [10:57] _announcer: Twitter: "I try to blog entry node.js investigating" [ja] -- Sn0wNight. http://twitter.com/Sn0wNight/status/19817018947 [10:57] c4milo has joined the channel [10:57] tbassetto has joined the channel [10:57] proppy: as anyone played with node_postgres ? [11:00] mitkok: it's so weird, does anyone have the same problem - Google Chrome goes in offline mode when there's no internet connection and cannot work with node.js [11:00] micheil has joined the channel [11:03] pdelgallego has joined the channel [11:05] _announcer: Twitter: "Anyway, today introduced node.js try to chat with about" [ja] -- Sn0wNight. http://twitter.com/Sn0wNight/status/19817423234 [11:08] jan____ has joined the channel [11:10] _announcer: Twitter: "@ Sn0wNight Oh, I believe the only way Node.JS official reference design changes now so severe, ChangeLog while I proceeded to read better" [ja] -- KOBA789(こば). http://twitter.com/KOBA789/status/19817618450 [11:10] _announcer: Twitter: "# node testrun.js Server running at 127.0.0.1:800" -- Sn0wNight. http://twitter.com/Sn0wNight/status/19817634558 [11:14] zapnap has joined the channel [11:16] _announcer: Twitter: "I wish NodeJS would quit with the renaming of stuff. I know it's new, but it's not *that* new" -- Tim Whitlock. http://twitter.com/timwhitlock/status/19817939624 [11:21] _announcer: Twitter: "[B!] Express - Node.js Web Development Framework http://bit.ly/c6O9vX" -- taoyag. http://twitter.com/taoyag/status/19818170577 [11:22] keeto has joined the channel [11:22] CarbonicMan has joined the channel [11:28] tmedema has joined the channel [11:30] _announcer: Twitter: "Anyway to install OSX to the environment or node.js - http://twitpic.com/29ou05" [ja] -- Sn0wNight. http://twitter.com/Sn0wNight/status/19818608955 [11:30] _announcer: Twitter: "@timwhitlock Remember, #nodejs is still in version 0.1, huge changes on the api is quite normal." -- Diogo Gomes. http://twitter.com/graphnode/status/19818628468 [11:31] femto has joined the channel [11:31] maushu: How am I supposed to answer the japanese one? [11:32] maushu: He is also using a old version. [11:32] jelveh has joined the channel [11:33] maushu: Like *old*. [11:35] manveru: maushu: which one? [11:36] maushu: 0.1.21 [11:36] _announcer: Twitter: "My program is node.js V8 has reference to the source" [ja] -- 封獣ぬる. http://twitter.com/nullkal/status/19818936401 [11:36] maushu: Like 8 months old. At least. [11:36] manveru: ouh [11:36] _announcer: Twitter: "I often find it @ Sn0wNight TL in, node.js 何Zo mean?" [ja] -- Naoyuki Oda. http://twitter.com/N_Oda/status/19818947303 [11:36] _announcer: Twitter: "node.js see a lot of different test" [ja] -- 海鮮いくら丼. http://twitter.com/ikuradon/status/19818953218 [11:36] stride: maushu: I guess most people from japan understand english [11:37] manveru: lol [11:37] manveru: you've never been here :) [11:37] stride: yeah.. :) they don't? not even the tech savvy? [11:38] manveru: not many [11:39] mape: !translate English:Japanese maushu: How am I suppose to answer the japanese one? [11:39] _frankie: maushu:どのように私は日本の1つに答えるべきですか? [11:39] _announcer: Twitter: "node.js also make the core of the game is stinking hard work and studying game apparently looks like a TCP connection can make" [ja] -- 海鮮いくら丼. http://twitter.com/ikuradon/status/19819072432 [11:39] manveru: oO [11:39] maushu: !translate Japanese:English とりあえずOSXにnode.js環境インストールしてたり - [11:39] _frankie: Node.js OSX to install anyway, or the environment - [11:40] maushu: !translate Japanese:English どのように私は日本の1つに答えるべきですか? [11:40] _frankie: What is my answer to one of Japan? [11:40] maushu: ^ That is how it would sound to them. [11:40] _announcer: Twitter: "Meryl – A thin web layer for NodeJS http://blog.kadirpekel.com/2010/07/28/meryl-a-thin-web-layer-for-nodejs/" -- Allen Long (龙辉). http://twitter.com/huihoo/status/19819133318 [11:40] manveru: well, i can help you translate if you like [11:40] mape: No, now you transcoded it [11:40] xla has joined the channel [11:40] maushu: !translate English:Russian What is my answer to one of Japan? [11:40] _frankie: Что это мой ответ на один из Японии? [11:41] maushu: !translate Russian:English Что это мой ответ на один из Японии? [11:41] _frankie: What is my answer to one of Japan? [11:41] maushu: Hmm. [11:41] _alex has joined the channel [11:41] mape: !translate Japanese:Swedish どのように私は日本の1つに答えるべきですか [11:41] _frankie: Hur kan jag svaret på en av Japan [11:41] manveru: !translate Japanese:English これはどうですかな? [11:41] _frankie: Is this you? [11:42] mattly has joined the channel [11:42] manveru: !translate Japanese:English 日本人の英語はちょっと。。。 [11:42] _frankie: A little English in Japan. . . [11:43] manveru: oh well :) [11:43] manveru: this thing is funny [11:43] manveru: is it using google translate? [11:44] kodisha has joined the channel [11:45] kodisha has joined the channel [11:45] victorstan has joined the channel [11:46] Tanguy_ has joined the channel [11:46] mape: bah where is tj when I need him.. [11:48] _announcer: Twitter: "Pre-launch landing page done: http://www.graphnode.com/ Feel free to comment on the idea. #nodejs #startup #js #hosting" -- Diogo Gomes. http://twitter.com/graphnode/status/19819562129 [11:54] _announcer: Twitter: "I worked in a MacBook Pro anyway node.js! Innovation - http://twitpic.com/29ozzm" [ja] -- Sn0wNight. http://twitter.com/Sn0wNight/status/19819874763 [11:56] maushu: Why isn't he using the latest version?! [11:57] _announcer: Twitter: "@goodonpaper you could probably write something simple with either node.js or sinatra + redis powering it." -- Micheil Smith. http://twitter.com/miksago/status/19820021869 [11:57] _announcer: Twitter: "@Sn0wNight http://nodejs.org/dist/node-v0.1.102.tar.gz" -- Diogo Gomes. http://twitter.com/graphnode/status/19820030416 [11:58] _announcer: Twitter: "mind blowing nodejs websockets example : http://jeffkreeftmeijer.com/2010/experimenting-with-node-js/ see other ppl mouse cursors" -- Vincent Voyer. http://twitter.com/zeroload/status/19820115759 [12:08] _announcer: Twitter: "Node.js something from overseas who have been on matters of Reply. It is the first foreign non-spam Reply I came w" [ja] -- Sn0wNight. http://twitter.com/Sn0wNight/status/19820653356 [12:09] _announcer: Twitter: "Reply @ Sn0wNight node.js tweet about it and pretty fly mornings ww "node.js Gtk wish there was a binding or" node-gui and Tsubuyaitara came flying about the library called, in English" [ja] -- KOBA789(こば). http://twitter.com/KOBA789/status/19820733416 [12:10] _announcer: Twitter: "NodeJS and redis are really a paradigm shifting combo. So many hard things are now easy, using java/php/mysql for anything at all is insane" -- rikarends. http://twitter.com/rikarends/status/19820793199 [12:14] _announcer: Twitter: "Oh .... node.js the IRC people from overseas so you'd Reply w flows" [ja] -- Sn0wNight. http://twitter.com/Sn0wNight/status/19821028499 [12:15] fermion has joined the channel [12:18] BryanWB has joined the channel [12:20] _announcer: Twitter: "Grrr, building node.js under WinXP+Cygwin fails after an eternitiy of compile time. I'm starting to think that this is just not meant to be." -- Leon Weidauer. http://twitter.com/techpriester/status/19821348487 [12:23] _announcer: Twitter: "NodeJS - http://net.tutsplus.com/tutorials/javascript-ajax/learning-serverside-javascript-with-node-js/" [lv] -- manojkumar. http://twitter.com/cab0620/status/19821516592 [12:24] robotarmy has joined the channel [12:25] _announcer: Twitter: "FreeBSD7.2 on compiling node.js-v0.1.102. Well, the error would go" [ja] -- KOBA789(こば). http://twitter.com/KOBA789/status/19821665223 [12:28] voxpelli has joined the channel [12:30] pgriess has joined the channel [12:34] Gruni has joined the channel [12:35] jetienne: connect uses sendfile to deliver static files ? [12:38] bvleur has joined the channel [12:40] bvleur: What's the function of ~/.node_libraries [12:41] caolanm: bvleur: its in your require path [12:41] caolanm: so if a module is in ~/.node_libraries [12:42] caolanm: you can do require('module') [12:42] caolanm: without having to check it out into your project directory [12:44] bvleur: okay, thanks! I was somewhat consufed wether it's needed when deploying a node (/coffe-script) app [12:44] BryanWB has joined the channel [12:44] d0k has joined the channel [12:44] caolanm: bvleur: no, its not required, but its useful for commonly used modules [12:44] caolanm: package managers like npm also use it [12:45] behmann has joined the channel [12:46] sveimac has joined the channel [12:49] bvleur: okay, while nice for some usecases, I'm really looking to deploy self-contained application-folders (for easy updating) so I was installing everything with a prefix. But it makes sense, I just need to make sure the app works without ~/.node_libraries [12:49] caolanm: yeah, I usually do something similar... [12:50] loftus has joined the channel [12:51] termie: anybody else running into EPIPE crashes when using the net library? http://gist.github.com/497993 [12:53] cml has joined the channel [12:55] davidsklar has joined the channel [12:55] jelveh has joined the channel [12:56] Azeroth has joined the channel [12:56] ThePub has joined the channel [12:57] kriszyp has joined the channel [12:57] donspaulding has joined the channel [12:57] _announcer: Twitter: "Experimenting with Node.js http://bit.ly/aQOudn Spy on other people's cursors." -- Dan Kapusta. http://twitter.com/dankapusta/status/19823620862 [13:07] _announcer: Twitter: "reading the RTMP spec, with a NodeJS implementation in mind. http://bit.ly/cBpoyV Wikipedia is right, it lacks a lot of detail." -- Tim Whitlock. http://twitter.com/timwhitlock/status/19824282412 [13:09] ben_alman has joined the channel [13:12] keeto has joined the channel [13:16] phiggins has joined the channel [13:16] jetienne: :))))) [13:16] jetienne: rtmp is too hard, giveup [13:17] jetienne: tim whitlock, if you are around, im serious. i implemented rtmp in [13:17] jetienne: and this is nightmare [13:18] [[zz]] has joined the channel [13:19] _announcer: Twitter: "DNode: Asynchronous Remote Method Invocation for Node.js and the Browser http://tinyurl.com/2uc9f2s" -- Diego Pacheco. http://twitter.com/diego_pacheco/status/19825043399 [13:21] davidwalsh has joined the channel [13:23] bradleymeck1 has joined the channel [13:28] devongovett has joined the channel [13:29] _announcer: Twitter: "Let the Node.js based webservices begin! Seems like a great platform for the services this iphone app will need." -- Wess Cope. http://twitter.com/wattzilla/status/19825725779 [13:29] wattz: >.> [13:30] maushu: ... [13:30] wattz: <3 [13:30] maushu: Maybe someone noticed my startup? Node.js webservices... [13:30] wattz: eh? [13:30] wattz: haha [13:32] shreekavi has joined the channel [13:32] maushu: wattz: http://graphnode.com/ [13:33] elliottkember has joined the channel [13:33] wattz: ahh nice man [13:33] wattz: im building an MMO [13:33] wattz: :P [13:33] wattz: maushu: can i get an invite? [13:34] ThePub has joined the channel [13:36] maushu: Hmmm, if the number of emails registered is low I will probably invite everyone to the beta. [13:36] maushu: And since I'm not advertising it much yet... [13:36] wattz: we are looking for something kinda like this at work [13:36] maushu: wattz: Really? Any specifics? [13:37] wattz: and being a Senior Dir, if it works well could throw you a little business [13:37] wattz: I work for Lowe's [13:38] wattz: our ideas of what we need for graphing and planning is a little up in the air [13:38] wattz: using node.js for some internal stuff to start [13:40] maushu: Well, the goal of Graphnode is to make prototyping of JavaScript application easily and painless and, at the same time, allow you to use that prototyping as your application without wasting any time. [13:40] wattz: yeah [13:41] wattz: Im building a 'layout widget' interface that you can drag to a prebuilt webservice to generate ajax calls on chosen elements/widgets [13:41] maushu: The last feature in the list would be of interest since allows you to "undock" the application from the infrastructure and run it on your internal servers. [13:42] wattz: ahh cool [13:42] wattz: it's like Yahoo pipes but actually useful :D [13:42] maushu: Hmm, yeah, Graphnode does that too, basically. When you link to a webservice it generates the code to use it easily as if it were a JavaScript object. [13:43] wattz: nice man [13:45] behmann has joined the channel [13:45] maushu: Of course it has limitations, like if the webservice doesn't have any kind of public standard API. It doesn't make miracles. [13:46] maushu: Anyways, glad that someone likes my idea. It makes me happy. :3 [13:46] aheckmann has joined the channel [13:47] ntelford: anyone know of a reason why http.ServerRequest.connection.on('close') wouldn't be triggered when a client connection is severed? [13:48] dylang has joined the channel [13:49] bradleymeck1: ntelford, is the connection severed or just left hanging, many apps seem to just leave them hanging [13:49] ntelford: definitely closed [13:49] ntelford: I have a console app that connects and wedges the connection open [13:49] ntelford: but when I exit it, the "close" event doesn't seem to trigger [13:50] maushu: ntelford: Weird. [13:55] jherdman has joined the channel [14:00] elliottkember has left the channel [14:00] elliottkember has joined the channel [14:00] elliottkember has left the channel [14:01] softdrink has joined the channel [14:01] maushu: Updating announcer's node version... [14:01] _announcer has joined the channel [14:01] elliottkember has joined the channel [14:02] kjeldahl has joined the channel [14:03] dnolen has joined the channel [14:05] aheckmann has joined the channel [14:05] kodisha has joined the channel [14:05] matt_c has joined the channel [14:06] aheckmann has joined the channel [14:08] _announcer: Twitter: "When I really want to work in #js / #nodejs, but I have to focus on #php, it seriously annoys me! #dev #code" -- Spot. http://twitter.com/spotnyk/status/19828425392 [14:09] _announcer: Twitter: "Awesome. My Node.js experiment (http://bit.ly/9890rW) got featured on the @devshow -> http://bit.ly/doAuCp :D" -- Jeff Kreeftmeijer. http://twitter.com/jkreeftmeijer/status/19828501775 [14:11] maushu: http://www.sibfox.com/foxes/ [14:11] maushu: Awwwww. [14:11] maushu: Now I want one... but 6000 dollars? Oh boy. [14:12] mjijackson has joined the channel [14:14] _announcer: Twitter: "What is the best package to augment #nodejs? I usually use #jquery, but there is no #DOM. So how about #prototype? Suggestions? #dev #js" -- Spot. http://twitter.com/spotnyk/status/19828860841 [14:15] teemow has joined the channel [14:18] zaach has joined the channel [14:19] kuya: does anyone know the link for the blog post that used websockets to show the positions fo the cursors of other visitors? [14:19] kuya: iv lost it... [14:21] matt_c: kuya: http://jeffkreeftmeijer.com/2010/experimenting-with-node-js/ [14:22] kuya: thanks matt_c [14:23] ceej has joined the channel [14:23] ntelford: hmm [14:23] ntelford: does http.Client have a timeout? [14:25] matt_c: ntelford: try searching the docs for setTimeout. I believe that applies to http.ClientRequest as well. [14:25] ceej has joined the channel [14:25] gf3 has joined the channel [14:25] ntelford: matt_c: net.Stream is the only I/O object that supports setTimeout() [14:25] ntelford: hmm [14:26] stalled has joined the channel [14:28] spike has joined the channel [14:28] _announcer: Twitter: "Hey everyone! Which one of u guys is a crazy pro node.js dev? If u love node and r interested in a job, email me :)" -- Drew Wilson. http://twitter.com/drewwilson/status/19829816410 [14:28] spike has left the channel [14:33] ntelford: ok, the docs state that when the "timeout" event is called, the connection is not automatically closed (and that the user should do so with net.Stream.end()) [14:33] ntelford: however, if I do: request.connection.on('timeout', function () { console.log(this.readyState); }); // "closed" is printed to the console and the connection is closed as soon as the timeout event fires [14:34] samdk has joined the channel [14:34] damienkatz has joined the channel [14:34] damienkatz has joined the channel [14:34] technoweenie has joined the channel [14:34] technoweenie has joined the channel [14:37] felixge has joined the channel [14:37] felixge has joined the channel [14:37] bradleymeck_ has joined the channel [14:37] knuckolls has joined the channel [14:39] zomgbie has joined the channel [14:40] shreekavi has left the channel [14:41] daniellindsley has joined the channel [14:42] ryah: ntelford: hm [14:44] ntelford: been having a look around the source and can't seem to find a reason for it [14:45] ntelford: doesn't appear to be any explicit socket destruction in the timeout routines of lib/net [14:46] ntelford: it's quite annoying because I would like to have a persistent connection that the server periodically pings clients with a newline char after a period of inactivity [14:46] [[zz]] has joined the channel [14:47] ntelford: felt using the builtin timeout mechanism was neater than rolling my own timers [14:47] agnat has joined the channel [14:47] ajpiano has joined the channel [14:49] mikeal has joined the channel [14:50] ryah: ntelford: http? [14:50] ryah: ntelford: or raw tcp? [14:50] ntelford: http [14:50] ryah: i think http connections have a timeout handler [14:51] ntelford: i saw http.Client has [14:51] ntelford: but this is in http.Server [14:51] ryah: req.connection.removeAllListeners('timeout') perhaps [14:51] ntelford: oh wait [14:51] ntelford: hmm [14:51] TomY has joined the channel [14:51] ntelford: yeah, that should do it [14:52] agnat: hi, I'm looking into cross-compiling node.js for arm-linux-gnu. I got the impression from the mailing-list that people have done this already. Any experience or documentation pointer would be appreciated ... [14:52] ntelford: found the problem: http://github.com/ry/node/blob/master/lib/http.js#L740 [14:52] ntelford: troublesome :) [14:52] ryah: agnat: should be possible [14:52] ryah: people definitely do it [14:53] ryah: set the CC and CXX vars [14:53] ryah: i haven't done it myself [14:53] ntelford: ryah: might be useful to update the documentation (either for tcp.Stream.on("timeout") or http.Server) to note that HTTP connections have a default timeout handler that destroys the connection [14:54] agnat: hm ... I've seen people setting CC and CXX after configure ... but that does not make much sense to me ... but yeah ... I'll give it a try ... [14:54] matt_c: There are debian packages for 0.1.99 and 0.1.10 for arm as well. [14:55] matt_c: er sorry 0.1.102 [14:55] steadicat has joined the channel [14:55] agnat: matt_c: ah, cool ... I'll take a look ... [14:55] matt_c: agnat: http://packages.debian.org/search?keywords=nodejs (yeah, very cool, didn't know they existed) [14:55] _announcer: Twitter: ""I'm the king of the world" - has just made a tiny chat in websockets & node.js" -- nico. http://twitter.com/tubingen/status/19831828198 [14:56] EyePulp has joined the channel [14:58] ntelford: ryah: while you're around, I've been meaning to ask you something [14:58] zapnap has joined the channel [14:58] ntelford: I notice that http_parser errors if a client sends a request method that isn't one it expects [14:58] ntelford: is there a particular reason for that? [15:04] _announcer: Twitter: "Node.js Hackshop is right up my alley. Not sure if I want to spend this weekend learnin' or restin' yet, though. http://bit.ly/cGUu5P" -- Bryan Woods. http://twitter.com/bryanwoods/status/19832495421 [15:05] daniellindsley has joined the channel [15:08] JimBastard has joined the channel [15:08] sudoer has joined the channel [15:08] JimBastard: !tweet reporting in to the #node.js war room [15:09] SubStack: No fighting in the war room! [15:09] maushu: BLOOD FOR THE BLOOD GOD! SKULLS FOR THE SKULL THRONE! [15:10] maushu: ACTION hacks JimBastard to pieces. [15:10] maushu: Blood! Bwahahahahaahahha! [15:12] CIA-77 has joined the channel [15:15] ryah: ntelford: what would you expect ? [15:15] TheEnd2012 has joined the channel [15:15] ntelford: well the HTTP spec doesn't forbid custom methods [15:15] ntelford: in fact, it permits them [15:15] ntelford: I'd expect it to not reject any method provided it contains only alphabetic characters [15:15] _announcer: Twitter: "Blog Update! - U is watching: Untan-Networks: Server-side JavaScript in the challenge I node.js - http://j.mp/bHbfst" [ja] -- Sn0wNight. http://twitter.com/Sn0wNight/status/19833294371 [15:17] nefD has joined the channel [15:17] maushu: ntelford: Are you sure? Hmmm, don't remember of reading about custom methods. [15:18] quirkey has joined the channel [15:18] JimBastard: i think ryah opt'd out of using the non-standard verbs to keep the parser fast [15:18] JimBastard: not sure about that one [15:19] ntelford: it supports all the webdav and svn verbs [15:19] ntelford: which are pretty non-standard tbh [15:19] Gruni has joined the channel [15:19] JimBastard: ntelford: what verbs do you need? [15:19] ntelford: custom verbs [15:19] JimBastard: im curious, whats your use case [15:20] JimBastard: ive never had the need for a custom verb [15:20] ntelford: administration commands over an HTTP interface [15:20] JimBastard: ntelford: why not use REST ? [15:20] maushu: JimBastard: EXECUTE is missing. [15:20] maushu: :p [15:20] ntelford: because you can't with most administration commands [15:20] ntelford: maushu: exactly [15:20] JimBastard: ntelford: whats an "administration command" [15:21] ntelford: "pause", "resume", "shutdown" are example commands I'd like to support [15:21] maushu: EXECUTE /employee/1245 HTTP/1.1 [15:21] JimBastard: stop killing people maushu [15:21] ntelford: and the first person to recommend I issue a "GET /resume" etc. gets punched in the face - metaphorically [15:22] JimBastard: i dont understand why you wouldnt just use a GET or a POST and pass the information [15:22] JimBastard: ACTION says, you can try. [15:22] pquerna: of course, you wouldn't GET to something that isn't idopendent [15:22] pquerna: so, it'd be a POST to /resume [15:22] ntelford: regardless, that's not the point [15:22] JimBastard: i fail to see the benefit of using custom verbs. im not saying its wrong, i just don't understand why. [15:22] ntelford: "resume" is a verb, not a noun [15:22] maushu: ntelford: Huh, wats wrong with GET /resume ? [15:23] ntelford: because the path is a resource identifier [15:23] ntelford: not an operation [15:23] maushu: Resume is a verb? When did that happen? [15:23] kriszyp_ has joined the channel [15:23] ntelford: the method is the operation, as the name "method" implies [15:23] JimBastard: ntelford: so use something like JSON-RPC and post the information [15:23] maushu: "A résumé is a document that contains a summary of relevant job experience and education for specific employment search." [15:24] pquerna: yeah, you could invent new verbs. the http parser doesn't support it. [15:24] ntelford: "If you resume an activity or if it resumes, it begins again. Verb formal" [15:24] JimBastard: ntelford: or you could just modify the c source for http_parser [15:24] pquerna: and it makes it a pain depending on the clients you have [15:24] JimBastard: yep pquerna [15:24] ntelford: JimBastard: I'd have to keep applying the patch locally if it wasn't accepted upstream [15:24] JimBastard: ntelford: welcome to the world of having irregular requirements [15:25] pquerna: where the roads are plaid [15:25] ntelford: regardless, the HTTP spec defines that methods can be extended [15:25] pquerna: yes, it most definately does [15:25] pquerna: but even things like apache httpd [15:25] JimBastard: ntelford: i believe there was a discussion about this on the mailing list [15:25] pquerna: have a hard coded list -- it can be extended via an API in amodule [15:26] ThePub: JimBastard: was actually talked about here a few days ago. [15:26] JimBastard: aye [15:26] [[zz]] has joined the channel [15:26] ThePub: thought the conclussion was to stick with the documented verbs. [15:26] JimBastard: hey pquerna did you see the little reverse prox we released? first piece of platform that got opened up [15:27] JimBastard: http://github.com/nodejitsu/node-http-proxy [15:27] JimBastard: nothing too fancy [15:27] ntelford: I just don't get why the parser needs to enforce it at all [15:27] ntelford: surely it's up to the application itself to determine if it wants to handle or ignore a method [15:27] JimBastard: ntelford: i assume speed, you should read the mailing list [15:30] _announcer: Twitter: "Deliver real-time information to your users using node.js http://ow.ly/2i4AZ" -- FITC. http://twitter.com/FITC/status/19834340888 [15:31] MrNibbles: q: best templating engine - GO! [15:32] JimBastard: MrNibbles: the "+" operator [15:32] JimBastard: also Mustache [15:32] MrNibbles: JimBastard: cheers matey [15:32] dylang has joined the channel [15:32] SubStack: why does the node logo have a cloud in it? [15:33] SubStack: I find clouds offensive. [15:33] caolanm: marketing++ [15:33] caolanm: ? [15:33] aurynn: I find clouds in the atmosphere. [15:34] SubStack: This one time I was out biking and some clouds got together and hailed on me. [15:34] SubStack: clouds are bullies [15:34] SubStack: fuck clouds [15:35] aheckmann: his domain is tinyclouds isn't it? [15:35] ntelford: an interesting upshot of all this btw is that node itself supports the "416 I'm a teapot" response, but not the BREW method that could cause it [15:37] cadorn has joined the channel [15:38] cardona507 has joined the channel [15:40] silentrob has joined the channel [15:40] _announcer: Twitter: "Dear #Lazynet, a #Wave server written in #JavaScript running on #node.js would be #awesome. #kthxbye" -- Duncan Kolba. http://twitter.com/dkolba/status/19835100227 [15:42] JimBastard: !tweet @dkolba it would be have to called "tsunami" [15:42] silentrob has left the channel [15:43] _announcer: Twitter: "http://github.com/kriszyp/jsgi-node/ now has adapters for both directions of JSGI<->NodeJS HTTP API. Combine JSGI, Fab, and Node middleware." -- kriszyp. http://twitter.com/kriszyp/status/19835270250 [15:44] dshaw has joined the channel [15:47] agnat_ has joined the channel [15:48] ryah: ntelford: you're adding HTTP methods? [15:48] ryah: ACTION shakes his head. [15:48] ryah: seriously. [15:48] dmcquay has joined the channel [15:48] ryah: http is fucked enough. [15:48] ntelford: it's for an internal protocol [15:49] o_o has joined the channel [15:49] ryah: who ever designed that should be murdered [15:49] ntelford: HTTP isn't that bad, it's mostly just used incorrectly [15:49] JimBastard: like javascript! [15:50] ryah: no [15:50] ryah: http is horrible [15:50] JimBastard: ryah: maybe you should go an do some more research before making bold statements like that. i dare you to try and implement an http parser [15:50] JimBastard: ohhh shiiii [15:50] JimBastard: nm [15:51] JimBastard: :-D [15:52] mape: ryah: the talk went well? [15:52] ryah: *shrug* [15:52] pkrumins: base64 doesn't work on binary data [15:52] mape: hehe, any idea if they will release the video, and if so when? [15:53] pkrumins: so please use my node-base64 module instead of .toString('base64') [15:53] pkrumins: while it gets fixed [15:53] ryah: mape: they will - not sure when [15:53] mape: k [15:54] ryah: ntelford: http is not the rfc [15:54] pkrumins: created a ticket for broken base64 on binary data [15:54] ryah: the rfc is retarded [15:54] ntelford: ryah: will response.write("\r\n") and request.connection.write("\r\n") write the same underlying data to the socket? [15:54] ryah: real-world http is worse [15:54] ntelford: real-world http is built by people who haven't read the rfc [15:54] ryah: extension http methods made by ruby weenies only add to the destruction of humanity [15:55] khug has joined the channel [15:55] ntelford: ryah: if it makes you feel any better, I'm not producing extension methods for a public API [15:55] ntelford: that'd be madness [15:55] ntelford: besides, any public API would be exposing operations on one or more resources [15:55] ryah: ntelford: use a fucking header not an extension method [15:55] ntelford: my issue is that I have control operations that don't map to resource operations [15:55] ryah: X-I-Need-Something-Else [15:55] _announcer: Twitter: "Learning Server-Side JavaScript with Node.js | Nettuts+ http://ow.ly/18lnVQ" -- Javascript News. http://twitter.com/del_javascript/status/19836153193 [15:56] ntelford: wow, that feels like a horrible abuse of headers [15:56] ryah: better than changing the damn protocol [15:57] ntelford: how's defining a custom extension method "changing the protocol"? [15:57] ryah: i will not accomidate your extension method [15:57] ntelford: the protocol defines a format for methods and a set of example methods [15:58] ryah: sorry. i feel strongly about this. i will not add to the destruction of humanity. [15:58] ntelford: heh [15:58] ryah: trust me - as one who understand http to one who does not. [15:58] mikeal: i'm +10000000000 on not adding special handling of *any* x- header to node-core [15:58] ntelford: it's a hell of a lot better than the popular option of encoding the method in the damn path like just about every "REST" api on the planet [15:59] ntelford: ryah: I understand HTTP just fine [15:59] mikeal: ntelford: you should just handle that header in the application code [15:59] ntelford: my issue is not that I want to define custom methods [15:59] mikeal: node shouldn't do anything special with it [15:59] ntelford: it's that I'm not using the protocol for resource-based operations [15:59] ntelford: which I admit, I should use something else [15:59] mikeal: because technically, the parsing rules should still all be based on the REAL header [15:59] mikeal: sorry [15:59] mikeal: REAL method [15:59] kodisha has joined the channel [15:59] ntelford: but still, extension methods are (rarely) useful [15:59] ryah: mikeal: we're talkinga bout extension methods not headers [15:59] technoweenie has joined the channel [16:00] mikeal: oh, arbitrary methods [16:00] mikeal: i hate them, but people keep doing them [16:00] technoweenie: are you still talking about custom http methods [16:00] mikeal: the problem with custom methods is that each one subscribes to the parsing rules for another standard HTTP method [16:00] mikeal: but not the same one [16:00] mikeal: so parsing generally is a pain in the ass [16:01] ryah: i, as the maintainer of the definitive, reference, http-parser, will not allow it. [16:01] mikeal: which methods do you currently support? [16:01] ryah: http://github.com/ry/http-parser/blob/c7c242d55ce1fab17d6e1db71d10d9f20e81d09f/http_parser.h#L72-95 [16:02] damienkatz has joined the channel [16:02] damienkatz has joined the channel [16:02] mikeal: adding HTTP methods is like adding new syntax to javascript…. please, everyone, just stop [16:02] qschzt has joined the channel [16:03] ryah: i hate this idiotic "REST" religion - as if HTTP is some beatiful thing [16:03] ntelford: one things for sure, I'm sure as hell not going to encode the method in the fucking path like so many so-called "restful" apis these days [16:03] mikeal: no MKCALENDAR [16:03] mikeal: :P [16:03] felixge: does crypto support buffers yet? [16:03] ryah: it's horrible broken protocol that we're forced to use [16:03] JimBastard: felixge: i think so yes, just added [16:03] ryah: just like javascript is a horrible broken language [16:03] ryah: that we're forced to use [16:04] mikeal: HTTP is like javascript, it's not beautiful it's just the best that we've got :) [16:04] JimBastard: yep [16:04] JimBastard: the whole www is a huge hack [16:04] mikeal: but REST is a better solution to creation new APIs on top of HTTP than adding methods which is what everyone was doing before [16:04] JimBastard: and javascript is a joke, which gets less funny everyday [16:05] maushu: ryah: Does node have raw sockets? [16:05] JimBastard: i would imagine creating new http verbs will open up a huge can of worms with building the custom clients [16:05] bradleymeck_: js isnt soo bad as a language, better than obj-c i think [16:05] felixge: JimBastard: hm, doesn't seem like it outputs buffers [16:05] ryah: maushu: no [16:05] mikeal: there are already like 50 HTTP methods you've never heard of [16:05] mikeal: and they are all stupid [16:05] JimBastard: felixge: im a bit clueless on this, i did notice it in the commit notes though [16:05] JimBastard: sorry :-\ [16:05] maushu: Drat. I was thinking in making this traceroute tutorial in node.js [16:05] mikeal: i'm not kidding, there is an MKCALENDAR method defined in CalDAV [16:05] beawesomeinstead has joined the channel [16:05] ryah: webdav, subversion, they are a mistake [16:05] ryah: just like http itself [16:06] ryah: do not add to the madness. [16:06] ryah: man. [16:06] wattz: heh [16:06] wattz: svn is better that.... FTP and file.html.old. [16:06] wattz: s/that/than [16:06] maushu: ryah: MADNESS /person/ryah HTTP/1.1 [16:06] mikeal: i'm gonn start my own distribution of node [16:06] mikeal: called Madness [16:07] JimBastard: mikeal: with hookers and blackjack? [16:07] mikeal: and it's *only* going to support custom headers [16:07] maushu: It will be full of madness? [16:07] mikeal: you can't even do GET and PUT [16:07] ryah: ntelford: "HTTP/1.1 200 ok\r\nContent-Type: text/plain\r\nContent-Length: 100\r\n\r\n" what comes next? [16:07] wattz: JimBastard: so you can have hookers and blackjack IN THE HEADERS. [16:07] maushu: mikeal: And http 1.0? [16:07] bradleymeck_: anybody got a spdy impl yet? [16:07] programble has joined the channel [16:07] mikeal: you'll get an exception that says "you aren't reinventing the wheel enough" [16:07] wattz: lol [16:07] ntelford: ryah: what? [16:08] mikeal: node supports continue right? [16:08] ryah: ntelford: parse that http and tell me what the next character on the wire is [16:08] aurynn: x-theme-park: Hookers\nx-theme-park: Blackjack [16:08] ryah: ntelford: what function does it have [16:09] ntelford: ryah: it's a standard http response header, the next character is the first character of the response body (total length, 100 bytes, formatted as plain ASCII text) [16:09] ryah: ntelford: wrong [16:09] behmann_ has joined the channel [16:09] ryah: someone issued a HEAD request [16:09] ryah: the next character is the beginning of the next request [16:09] amerine has joined the channel [16:09] mikeal: that's actually useful tho [16:09] ntelford: given the lack of context, I was also right [16:09] mikeal: how else do you check the size of a resource without getting it [16:09] ntelford: oh wait [16:09] ntelford: no [16:09] ntelford: no transfer-encoding [16:10] mikeal: that's not why [16:10] maushu: mikeal: Try HEAD. [16:10] ryah: tranfer-encode defaults to identity [16:10] ntelford: s/transfer/content/ [16:10] mikeal: HEAD requests are suppose to return the content-length of a GET to the same resource and aren't allowed to return any entity-body [16:10] ntelford: no wait [16:10] ntelford: hmm.. [16:10] maushu: Oh wait, that was a rhetorical question. [16:10] mikeal: maushu: yes :) [16:11] ntelford: what's the difference between the two responses then? what differentiates that from a response to a get request? [16:11] ryah: ntelford: the request method is instrumental in parsing the actual response [16:11] qschzt has left the channel [16:11] ntelford: I'm aware of that [16:11] ryah: parsing the fucking body out of the stream [16:11] mikeal: they could have just added a different header and seperated the parsing semantics, but this is HTTP so nothing is easy on the implementors :) [16:11] ryah: you need to know the request method [16:11] phiggins has joined the channel [16:11] ntelford: right [16:12] ryah: so, how does your extension method act? [16:12] maushu: We could easily throw a dice. [16:12] ryah: if the response contains a Content-Length? [16:12] ryah: does it contain a body or not? [16:12] ntelford: my particular method(s) never contain a body [16:12] ntelford: otherwise I'd just use a GET [16:12] technoweenie: do a custom protocol then, like memcache, redis, et [16:12] mikeal: i'm still freaked out that GET is allowed to have an entitty body [16:12] mikeal: that is fucked up [16:12] ryah: ntelford: so how do you parse it if the response has a Content-Length? [16:12] mikeal: in the request [16:13] jan____: mikeal: I love that [16:13] jan____: mikeal: bugs the hell out of me that we have to use POST for multi-key gets [16:13] markwubben has joined the channel [16:13] ntelford: ryah: what's your point? [16:13] ryah: ntelford: http methods are not random strings [16:13] mikeal: jan____: that's just lack of a feature in couchdb, you could easily mark keys= up in the query string [16:13] ntelford: I know [16:13] ntelford: they have clearly defined behaviours [16:14] ryah: ntelford: they are very much intertwined with how the protocol is parsed [16:14] jan____: mikeal: no, url strings are size limited effectively [16:14] mikeal: we do much crazier stuff with the view query JSON -> querystring encodings [16:14] jan____: i.e. it would break for a large key list [16:14] mikeal: i see [16:14] mikeal: we could support a body in the GET request :) [16:14] ryah: ntelford: no, they have underfined behaviors [16:14] mikeal: it's *allowed* [16:14] ryah: whihc you must figure out after experiencing many many messages [16:15] ntelford: ryah: you're saying that because it's a custom method, you can't guarantee both sides will be interpreting it according to the same custom protocol? [16:15] ryah: do not add to the madness. [16:15] ryah: http has places where you can add your own data: body, headers [16:15] _announcer: Twitter: "you don't need new HTTP methods. please stop. this has been public service announcement from #node.js" -- Mikeal. http://twitter.com/mikeal/status/19837557431 [16:16] ryah: ntelford: you should not expect to be understood [16:16] damienkatz has joined the channel [16:16] damienkatz has joined the channel [16:16] ryah: if you start speaking random crap [16:16] bradleymeck_: more madness, i want http tunneled in http headers! [16:16] ntelford: ok then [16:16] ntelford: you've convinced me [16:17] ryah: thank you [16:17] ntelford: what protocol would you recommend for sending control commands to a node.js daemon then? [16:17] beawesomeinstead has joined the channel [16:17] JimBastard: all praise our asynchronous non-blocking metal lord [16:17] ryah: sorry for being a dick, but i've spent the past 2 years coding around idiotic servers and agents sending random crap into the internet [16:17] mikeal: POST body={"method":"blah","args":[]} [16:17] ryah: wrt http [16:17] ryah: be a good citizen and have some restraint [16:18] ntelford: ryah: I accept that HTTP is meant for sending and receiving (representations) of resources [16:18] ryah: despite being a ruby programmer [16:18] ntelford: haha [16:18] JimBastard: ntelford: are you doing an OSS project with this? [16:18] bradleymeck_: http://en.wikipedia.org/wiki/JSON-RPC <- its easy [16:18] ntelford: JimBastard: no [16:18] JimBastard: 10-4 [16:18] ntelford: bradleymeck_: no [16:18] ryah: HTTP is random bulshit that we're stuck with [16:18] tyfighter has joined the channel [16:18] ntelford: I'm not using XML/JSON-RPC [16:18] ryah: do not think of it in terms of resources [16:18] JimBastard: json-rpc is awesome [16:18] bradleymeck_: ntelford, might i ask why? [16:19] JimBastard: bradleymeck_: cus custom protocols are way more fun! [16:19] ntelford: ryah: btw, I'm well aware of how badly HTTP has been twisted on the internet [16:19] mikeal: ryah: node's binary API had a shout out in the ECMA meetup yesterday [16:19] bradleymeck_: lack of streaming isnt in it, but thats all i could want more i think [16:19] damienkatz has joined the channel [16:19] damienkatz has joined the channel [16:19] mikeal: er ECMA meeting [16:19] ntelford: bradleymeck_: I don't believe in sending a method call as a message [16:19] JimBastard: lulz [16:19] mattly has joined the channel [16:19] JimBastard: go back to france [16:20] ntelford: it's exactly what's so totally wrong with the popular implementations of "REST" [16:20] mikeal: Four different organizations are standardizing ECMAScript binary arrays: [16:20] mikeal: * TC39 [16:20] mikeal: * WebGL typed arrays are happening now.  It's too late to affect them. [16:20] mikeal: * HTML5 binary arrays are in an earlier stage. [16:20] mikeal: * There's also NodeJS. [16:21] ryah: i like the webgl stuff [16:21] ryah: i just need to encode strings [16:21] bradleymeck_: ntelford how is any other protocol going to engage a method w/o sending it in a message? [16:22] ryah: they blew me off [16:22] inimino: ntelford ⋱ It's not a uniform interface if you make up your own methods. [16:22] ntelford: bradleymeck_: I meant a message transmitted over another protocol [16:22] mikeal: none of these, from what i've seen, actually provide good methods for manipulating binary data [16:22] ntelford: let me re-phrase that [16:23] bradleymeck_: its a data encapsulation format? [16:23] ntelford: I don't like the idea of an application-layer protocol that sits inside another application-layer protocol [16:23] bradleymeck_: you can still push it over tcp? im not seeing the 2nd application layer? [16:24] ntelford: oh, I see what you mean [16:24] bradleymeck_: it is not bound to http, if it was f it [16:24] ntelford: I guess that could work [16:24] ntelford: sorry [16:24] bradleymeck_: just be sure you dont need streams if you use it [16:25] ntelford: I'm just so used to people suggesting: GET /method?args [16:25] ntelford: which beats me up in to a frothy rage [16:25] ntelford: bradleymeck_: it's a control protocol, I can't imagine it needing streaming [16:25] mikeal: /things/in/heirarchy?optional=arguments [16:26] keeto has joined the channel [16:26] mikeal: ntelford: is it RPC? [16:26] bradleymeck_: trailing slash at least isnt in that... [16:26] ntelford: mikeal: no [16:27] ntelford: it's literally just to control the node; "pause" to temporarily stop it accepting connections, "resume" to resume accepting connections, and a few "shutdown" variants (with differing levels of immediacy) [16:27] ntelford: none of them even need arguments [16:27] ntelford: they're just vanilla commands [16:27] ryah: POST /resume -_- [16:27] SvenDowideit has joined the channel [16:27] ntelford: ryah: never! [16:27] inimino: yep, POST. [16:27] deepthawtz has joined the channel [16:28] jelveh has joined the channel [16:28] ntelford: encoding a verb in to the path goes against everything I believe in [16:28] inimino: I have a node-based HTTP server that uses POST requests for control. [16:28] mtodd has joined the channel [16:28] ntelford: it's very much my "custom HTTP methods" :) [16:28] tisba has joined the channel [16:28] maushu: ntelford: /believe/verb-into-path [16:29] mtodd has joined the channel [16:29] ryah: ntelford: you're spending a lot of placing a cherry on the big steaming pile of shit that you will eat [16:29] ryah: *a lot of time [16:29] inimino: ntelford ⋱ PUT /running\r\n\r\ntrue [16:29] ntelford: inimino: lol [16:30] JimBastard: i have little respect for people with strong opinions on things and no substantial argument to back it up. its ignorant. [16:30] JimBastard: thats why i believe in [16:30] JimBastard: /s/why/what [16:30] ntelford: JimBastard: my argument is that HTTP is supposed to be a protocol for operating on resources, in a (mostly) idempotent way [16:30] ryah: i believe in GET and POST [16:30] ryah: everything else, is questionable [16:30] ntelford: and the path is the identifier for the resource [16:31] CIA-77 has joined the channel [16:31] technoweenie: ntelford: why not use unix signals for that [16:31] ntelford: technoweenie: needs to operate remotely, so we can command clusters [16:31] technoweenie: i can send a signal to tell my node server to stop listening to the socket [16:31] ntelford: otherwise, that'd work a treat [16:31] technoweenie: ah, we use capistrano for thatt [16:31] JimBastard: ntelford: im literally building the exact same thing right now. we are using a json-rpc web service, works great [16:32] c4milo has joined the channel [16:32] SubStack: JimBastard: http://www.qwantz.com/index.php?comic=1207 [16:32] JimBastard: setting the json router took 3 minutes [16:32] JimBastard: http://github.com/cloudhead/journey [16:32] JimBastard: SubStack: dude not cool, im super scared of dinosaurs [16:32] technoweenie: ntelford: hey i agree with your ideas.. but i also agree with everyone else. the web is crappy and its usually best to compromise, use POSTs, and move on with your life [16:33] JimBastard: technoweenie: +10 [16:33] ntelford: technoweenie: I also agree with everyone else [16:33] mikeal: welcome to the web [16:33] mikeal: :) [16:33] technoweenie: i think its rad that http allows custom methods, but you'll run into more issues than just node.js servers not allowing it [16:33] ntelford: and web development makes me want to cry sometimes :P [16:33] JimBastard: just sometimes? [16:33] ntelford: yeah, that's true [16:33] JimBastard: you arent doing it right [16:33] technoweenie: i say this as one of the core guys that did the rest support in rails years ago. [16:33] ntelford: there's no doubt in my mind that custom methods isn't the answer [16:33] technoweenie: POST /foo/1?_method=DELETE [16:33] technoweenie: :( [16:34] mscdex: node.js rules! [16:34] technoweenie: double negative [16:34] JimBastard: [12:34] == #jquery-ot Cannot join channel (+b) - you are banned [16:34] technoweenie: oh you bad boy [16:34] technoweenie: you rebel [16:34] JimBastard: 1234 make a wish! [16:34] SubStack: for shame! [16:34] _announcer: Twitter: "So I now only need to decide how to do security with #node.js" -- Stephan Schmidt. http://twitter.com/codemonkeyism/status/19838832197 [16:34] mscdex: # node kid.js [16:34] maushu: DELETE /delete/foo?_method=DELETE [16:34] mscdex: file not found :-( [16:34] qFox has joined the channel [16:34] maushu: JUST TO MAKE SURE. [16:35] ntelford: right, I gotta shoot [16:35] mscdex: are you sure maushu? [16:35] technoweenie: ha the _method hack is for browsers that dont know what PUT/DELETE is [16:35] ntelford: thanks for the advice guys, I'm sure I'll figure something out [16:35] JimBastard: maus-huhu [16:35] ehaas has joined the channel [16:35] JimBastard: technoweenie: yeah that _method shit made me o.O the first time i rails it up [16:36] technoweenie: its a pragmatic hack. kinda like the rails snowman one [16:36] mscdex: _method=0xdeadbeef [16:36] JimBastard: rails snowman? [16:37] JimBastard: http://intertwingly.net/blog/2010/07/29/Rails-and-Snowmen ahh [16:38] technoweenie: http://railssnowman.info/ [16:39] technoweenie: i want to change it to the skull and crossbones [16:39] mscdex: today feels like a friday [16:39] technoweenie: do you ever have those brain farts where you cant spell [16:40] technoweenie: crossboans crossbowns fuck what oh yea crossbones [16:40] mscdex: brain flatulence = ftl [16:41] mscdex: oh that reminds me.... technoweenie: are you in charge of the github api? [16:41] technoweenie: yea [16:41] technoweenie: you want custom methods??? [16:41] mscdex: no [16:41] mscdex: just a small request [16:41] mscdex: :-> [16:41] SvenDowideit has joined the channel [16:42] jan____: mikeal: my point exactly :) [16:42] technoweenie: mscdex: yea? [16:42] mscdex: when one does a request for the latest commits, would it be possible to include tag information if a particular commit was marked with a tag? [16:42] technoweenie: also http://support.github.com/discussions/api [16:42] technoweenie: commits arent 'marked with tags', thats the problem [16:42] mscdex: hmm [16:42] technoweenie: tags and branches simply point to the latest commit [16:43] mscdex: tags do? [16:43] technoweenie: yea [16:43] JimBastard: github has an api? i just use firebug ^_^ [16:43] technoweenie: look in .git/refs/tags [16:43] technoweenie: they're just files w/ a sha in it [16:43] mscdex: yeah but i mean the node v0.1.102 tag doesn't point to head [16:43] technoweenie: the latest commit for the tag [16:43] mscdex: oh [16:43] technoweenie: tags point to a commit, but a commit doesnt track what tags/branches its a part of [16:44] technoweenie: there are a few different commands i could run, but itd be expensive for every commit [16:44] keeto has joined the channel [16:44] mscdex: well the reason i asked is because it takes me two api calls to determine if the latest commit has been tagged as a release. the tags list api call has the latest commit associated with that tag [16:45] mscdex: but it would be nice to have that matched up with the latest commit, so i would only need to do 1 api call [16:45] technoweenie: yea, that would be nice, but i dont know how i can make that performant without tons of caching [16:45] bpot has joined the channel [16:45] mscdex: ok [16:46] technoweenie: it'd be nice to store commits in some kind of kv or doc db and add arbitrary data [16:46] technoweenie: but theres so much fucking commit data :) it'd have to enable some sweet features to make it all worthwhile [16:46] mscdex: true [16:46] mscdex: well, i thought i'd ask anyway [16:46] mscdex: :-) [16:47] kevwil has joined the channel [16:47] technoweenie: no prob, sorry to shut you down :( [16:47] _announcer: Twitter: "Attempting to install standalone V8 on my ubuntu VM so I can begin playing with JSpec, Node.js, and JSLint on the server." -- Jesse Brown. http://twitter.com/bionicpill/status/19839653259 [16:47] technoweenie: i wanna do it though, someday maybe [16:48] marshall_law has joined the channel [16:50] JimBastard: !tweet @bionicpill why not just install node? [16:51] mitkok has joined the channel [16:53] benburkert has joined the channel [16:55] rsms has joined the channel [16:57] shockie has joined the channel [16:57] brianmario has joined the channel [16:58] Tobsn: mornin [16:58] mscdex: afternoon [16:59] jelveh has joined the channel [16:59] Tobsn: (cali here) [16:59] Tobsn: ;) [16:59] mscdex: midwest here :p [17:00] creationix has joined the channel [17:00] JimBastard: NYC woo woo [17:00] JimBastard: someone should do a blog post about the node war room [17:01] ashleydev has joined the channel [17:01] ashleydev: ryah: any word on the clang build? [17:02] pquerna: using trunkish clang it didn't work? [17:02] SubStack: is this place more like the Dr Strangelove war room or the Wargames war room? [17:02] technoweenie: is the war room where you guys hold those secret illuminati meetings [17:02] felixge: ryah: should I concat lots of small buffers before writing? [17:03] JimBastard: yeah man, are you in one of the meetings right now [17:03] Tobsn: just moved here from chicago ;) [17:03] JimBastard: err, you are [17:03] JimBastard: fuck i fail at engrish [17:03] _announcer: Twitter: "Looking into using @jeresig's micro-templating script on #nodejs http://ejohn.org/blog/javascript-micro-templating" -- Matthew Taylor. http://twitter.com/rhyolight/status/19840743615 [17:04] mscdex: huhu [17:04] JimBastard: !tweet @rhyolight there are a bunch of much more developed templating solutions for #node.js. come to #node.js on irc.freenode.net [17:04] JimBastard: war roomed ^^ [17:04] Tobsn: hmm that url.js is weird [17:05] SubStack: I suspect this is only the tiny war room [17:05] SubStack: and that there is a more impressive one elsewhere [17:05] SubStack: irc.nodejs.org seems to be a decoy war room [17:05] Tobsn: protocolPattern = /^([a-z0-9]+:)/, shouldnt that be protocolPattern = /^([a-z0-9]+:)\/\//, [17:05] pgriess has joined the channel [17:06] JimBastard: SubStack: sometimes i wonder about the OSS projects in places in china [17:06] JimBastard: there must be a million things we've never even heard of [17:06] JimBastard: in places LIKE china [17:07] SubStack: once I get more money than I know what to do with I'll start building themed rooms [17:07] mscdex: make it so! [17:07] SubStack: indeed, the star trek bridge [17:07] SubStack: several war rooms [17:07] mitkok has joined the channel [17:08] SubStack: a dungeon [17:08] mscdex: "i'm attacking the darkness!" [17:08] robotarmy has joined the channel [17:08] stepheneb has joined the channel [17:08] mscdex: huhu [17:08] JimBastard: SubStack: dont forget the vomitorium, and a towel [17:08] cardona507 has joined the channel [17:09] mscdex: summoner geeks ftw [17:09] JimBastard: I WANNA CAST MAGIC MISSLE [17:09] JimBastard: ACTION wants to know if there are any girls here [17:09] Tobsn: http://github.com/ry/node/issues/issue/225 - can someone confirm that? ;) [17:09] JimBastard: because if there are.... [17:09] rhyolight has joined the channel [17:09] JimBastard: sup rhyolight [17:09] _announcer: Twitter: "working with @databyte on a nodejs long-polling server" -- TJ Singleton. http://twitter.com/tjsingleton/status/19841156990 [17:09] rhyolight: Hey hey [17:09] JimBastard: ACTION summons lvl 2 twitter user [17:10] creationix: Tobsn: maybe [17:10] technoweenie: man why shouldn't node handle custom methods and protocols [17:10] creationix: Tobsn: btw, isaacs is looking into my Url.parse bug from yesterday [17:10] technoweenie: is there a parsing issue [17:10] rhyolight: So JimBastard, I'm only doing something very simple (a prototype), but I'm interested in templating engines.... are there any on npm? [17:10] Tobsn: creationix, yeah... im looking into the C source of php's parse_url right now [17:11] technoweenie: Tobsn: i'd say leave the protocol parser open. it may be used outside of just web urls [17:11] Tobsn: they have all the bugs figured out already [17:11] creationix: technoweenie: agreed [17:11] JimBastard: rhyolight: there are a bunch out there. "jade" is new and kinda hot apparently [17:11] Tobsn: technoweenie, but its only for urls and it causes problems with // in pathes [17:11] creationix: rhyolight: Corn! [17:11] JimBastard: and jade is up on npm [17:11] rhyolight: Thanks guys [17:12] technoweenie: ^[^\:]\:\/\/ [17:12] creationix: rhyolight: yeah, if you like haml, jade is pretty cool [17:12] technoweenie: that should be everything up to the first : and then // [17:12] rhyolight: awesome [17:12] WALoeIII has joined the channel [17:12] mscdex: !tweet @tjsingleton don't reinvent the wheel! [17:12] creationix: technoweenie: there isn't always a : [17:12] technoweenie: for the protocol? [17:13] saikat has joined the channel [17:13] creationix: technoweenie: yeah, isaacs wrote the parse stuff, there are all kinds of nasty edge cases [17:13] creationix: /google.com/ is a url [17:14] creationix: //google.com/ [17:14] technoweenie: whats //google.com [17:14] Tobsn: see thats the problem [17:14] creationix: it's a relative url [17:14] Tobsn: thats why you have to put that in the url [17:14] Tobsn: erm [17:14] Tobsn: protocol [17:14] _announcer: Twitter: "node.js web framework under which compare well? Help!" [zh-CN] -- finscn. http://twitter.com/finscn/status/19841469947 [17:14] SubStack: ACTION locates creationix universally [17:14] creationix: Tobsn: I'm not sure how {3,6} is better than + [17:15] SubStack: or is it uniformly? [17:15] creationix: ACTION moves [17:15] BryanWB has joined the channel [17:15] SubStack: crap! [17:15] pquerna: Tobsn: https://svn.apache.org/repos/asf/apr/apr/trunk/uri/apr_uri.c <- might also be interesting, there is a stack of decent test cases in apr too for it [17:15] Tobsn: pquerna, found it in the php source standard/url.c [17:15] Tobsn: gonna see if thats better [17:15] creationix: SubStack: don't worry, with my new long-poll enabled rails server you can track my location in real-time [17:16] SubStack: long poll in rails, oh noes [17:16] creationix: except only one client can use it as a time ;) [17:16] SubStack: creationix: don't encourage them with your advanced technology! [17:17] creationix: pquerna: that's nice, show it to isaacs [17:17] mjr_ has joined the channel [17:19] Tobsn: pquerna, creationix: http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/url.c?view=markup [17:19] Tobsn: "php_url_parse_ex" [17:20] Tobsn: http://phpjs.org/functions/parse_url:485 [17:20] Tobsn: JS version [17:20] JimBastard: !tweet @finscn http://expressjs.com/ [17:21] pquerna: i personally think parsing things like urls via regex is dooomed :) [17:21] [[zz]] has joined the channel [17:21] JimBastard: doooooommmmmed [17:21] technoweenie has joined the channel [17:21] Tobsn: yeah i think too [17:21] Tobsn: on the other side the char by char the php_parse_url thing does is pretty overkill too.... but it definitly works [17:22] pquerna: you need to do char by char, thats how apr approaches it too [17:22] pquerna: at least for the first half of the string [17:22] Tobsn: hmm i think i can rebuild that stuff in js [17:23] Tobsn: the php one... not the apache one... the apache source is crazy. [17:23] Tobsn: :P [17:23] BrianTheCoder has joined the channel [17:23] technoweenie: oh that ocould be fun [17:23] technoweenie: is there a string tokenizer for js [17:23] technoweenie: oh there has to be [17:23] Tobsn: pretty sure [17:23] technoweenie: probably 7 [17:24] technoweenie: so wtf is "//google.com/" [17:24] Tobsn: pquerna, creationix: http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/url.c?view=markup <- well if someone is bored... "php_url_parse_ex" ;) [17:24] technoweenie: is google.com still the host name [17:24] technoweenie: is protocol just nil? [17:24] Tobsn: technoweenie, the issue with the url.js was that http://google.com//blah the parse thinks the path // still belongs to the protocol [17:24] Tobsn: *parser [17:24] Tobsn: *the script [17:25] technoweenie: mine wouldnt [17:25] technoweenie: just match to the first : [17:25] Tobsn: and i think that url.js looks pretty silly either way [17:25] technoweenie: man what is //blah? is that just a weird double path [17:25] technoweenie: that doesnt seem valid in anything [17:25] Tobsn: http://github.com/ry/node/issues/issue/225 <- thats what i say [17:25] Tobsn: technoweenie // or /../ is invalid as path start [17:25] pquerna: it is, things like uh.. whatchamacallit... [17:26] technoweenie: yea, i disagree w/ that approach [17:26] pquerna: UNC paths on windows [17:26] Tobsn: based on RFC, as we found out yesterday haha [17:26] Tobsn: pquerna but that url.c is only for _urls_ [17:26] pquerna: heh [17:26] Tobsn: not for file protocls [17:26] pquerna: riht [17:26] pquerna: that doesn't mean someone won't put one in there [17:26] pquerna: but anyways [17:26] Tobsn: well that he has to write his own function - examples are in url.js [17:26] Tobsn: :P [17:28] claudiu__ has joined the channel [17:29] jchris has joined the channel [17:29] jchris has joined the channel [17:30] _announcer: Twitter: "more #playground #nodejs server tinkering http://is.gd/dR9ap" -- proppy. http://twitter.com/proppy/status/19842464217 [17:31] cardona507 has joined the channel [17:31] _announcer: Twitter: "The YUI chatroom on IRC has 62 members. The NodeJS chatroom has 252 members. Also, if I say #nodejs, does it automatically show up in chat?" -- Matthew Taylor. http://twitter.com/rhyolight/status/19842525463 [17:31] rhyolight: I guess that answers my question. [17:31] figital has joined the channel [17:31] rhyolight: wicked cool :) [17:32] rhyolight: so that is how you found me!! :) [17:32] mjr_: I guess that makes node 190 better than YUI. [17:34] JimBastard: !tweet @rhyolight its the #nodejs mafia. we holding it down in our social club war room. [17:34] JimBastard: :p [17:35] rhyolight: haha [17:36] rauchg_ has joined the channel [17:37] SubStack: 190 better or 4.06 better? [17:38] SubStack: or 506% [17:39] mindeavor has joined the channel [17:39] mitkok has joined the channel [17:41] JimBastard: !tweet @spotnyk there is a DOM for node.js. http://github.com/tmpvar/jsdom [17:43] _announcer: Twitter: "@nodejsbot JimBastard: Yes, but I have no need for a DOM in #nodejs ? :)" -- Spot. http://twitter.com/spotnyk/status/19843306012 [17:44] mjr_: oh nice, 2-way from nodejsbot [17:44] cardona507: nodebot rox [17:44] mjr_: That's either new, or nobody ever bothered to reply. [17:44] cardona507: *nodejsbot [17:44] JimBastard: yeah im just gonna leave that guy hanging [17:45] derferman has joined the channel [17:46] damienkatz has joined the channel [17:46] damienkatz has joined the channel [17:47] zomgbie has joined the channel [17:47] Tobsn: lol [17:48] Tobsn: just reply that there will be a node.js browser [17:48] Tobsn: that how google did it :P [17:48] grahamalot has joined the channel [17:48] jxson has joined the channel [17:48] huyhong has joined the channel [17:48] _announcer: Twitter: "Made @ wertex node.js Ryan Dahl, unrelated to Google, he used the V8 which was originally JS VM for Chrome." [ru] -- Vyacheslav Egorov. http://twitter.com/mraleph/status/19843600393 [17:48] Tobsn: technoweenie, btw. you're not disagreeing youre just altering a modification :P [17:48] huyhong has left the channel [17:49] solidsna` has joined the channel [17:49] technoweenie: well, i disagree with your initial approach :) but i agree that the current behavior is a bug [17:49] Tobsn: .o(altering an alteration) [17:49] Tobsn: ;) [17:49] technoweenie: dig the alliteration there [17:50] Tobsn: well but even if you're not using {3,6} - what protocol is shorter than 3 chars or longer than 6? [17:50] Tobsn: tcp/udp/socket/... ? [17:50] technoweenie: custom ones potentially [17:50] Tobsn: technoweenie:// [17:50] technoweenie: postgres:// [17:50] Tobsn: hmm true [17:51] technoweenie: its still a universal resource that needs an identifier [17:51] JimBastard: !tweet i heard google was releasing a new web browser based on the underlying technologies in #nodejs [17:51] JimBastard: ^_^ [17:51] Tobsn: there ya go ;) [17:51] Tobsn: ChromeNode [17:52] Tobsn: slogan: i'm in your node parsing your dom. [17:52] JimBastard: we are using node to parse dom [17:53] qschzt has joined the channel [17:53] JimBastard: indexzero has a nice scraping engine we have been building out for a client, uses jquery selectors [17:53] qschzt: yeah baby, socket.io 0.5 [17:54] _announcer: Twitter: "Get Ready for Node.js Knockout at Joyent's San Francisco offices August 27-29. Joyent HQ is Knockout HQ http://bit.ly/bv66Z8 #fb" -- Joyent. http://twitter.com/joyent/status/19843935135 [17:54] _announcer: Twitter: "Got a #nodejs template rendering server running rather quickly. Standing on the shoulders of giants, indeed." -- Matthew Taylor. http://twitter.com/rhyolight/status/19843939098 [17:54] maushu has joined the channel [17:55] Tobsn: oh, did rauchg_, released it yesterday? [17:55] Tobsn: :D [17:55] qschzt: just now afaik [17:56] qschzt: wonderful. [17:56] cardona507: !tweet @joyent Your bit.ly link regarding the node.js Knockout is broken [17:56] JimBastard: nice rhyolight [17:56] rauchg_: Tobsn: [17:56] rauchg_: i tagged last night [17:56] rauchg_: just released [17:56] Tobsn: rauchg_ [17:56] Tobsn: http://github.com/LearnBoost/Socket.IO/commit/2fe9fec1efdc03e481e4df79dc4b3967bbdcc2d9 [17:56] Tobsn: wtf. [17:56] Tobsn: :P [17:56] rauchg_: oh [17:56] rauchg_: i disabled it for now cause i couldn't pin point your issue [17:57] rauchg_: it's not a big deal though, the only problem will be if anyone behind a proxy gets `flashsocket` as transport and is unable to connect [17:57] rauchg_: then it [17:57] rauchg_: 'll take a little longer [17:57] rauchg_: to conncet [17:57] rauchg_: than normal [17:57] Tobsn: whats the time difference? [17:57] Tobsn: to normal vs. "little longer" [17:57] rauchg_: not sure, i haven't tested behind a corporate proxy yet :P [17:58] Tobsn: hehe [17:58] Tobsn: well everything under 2 seconds is good enough i guess [17:58] Tobsn: at least it works [17:59] qschzt: that is an issue that I'll face eventually.. much later.. [18:00] qschzt: rauchg, great job! [18:00] rauchg_: i think i might move down flashsocket in the priority list [18:00] rauchg_: it's hard [18:00] rauchg_: most people hate flash [18:00] rauchg_: but it's a pretty solid transport :P [18:01] rauchg_: thanks qschzt [18:01] Tobsn: erm.. i think i forgot how to do that with git... how do i update to latest revision? [18:02] keeto has joined the channel [18:05] rauchg_: Tobsn: git pull ? [18:07] Tobsn: hmm [18:07] Tobsn: rauchg_, you changed the folder structure? [18:07] Tobsn: index.js? [18:07] b_erb has joined the channel [18:08] rauchg_: Tobsn: yeah, basically the more important change is putting `socket.io` inside of lib [18:08] _announcer: Twitter: "Experimenting with Node.js http://jeffkreeftmeijer.com/2010/experimenting-with-node-js/" -- Julien B.. http://twitter.com/ju0ba/status/19844775264 [18:08] Tobsn: yeah i see that [18:08] rauchg_: i like that pattern [18:08] Tobsn: you need to change the readme tough [18:08] rauchg_: /lib/ [18:08] Tobsn: little changelog would be nice too :P [18:09] bridge has joined the channel [18:09] _announcer: Twitter: "Anyway I would love to thank @temanmacet on its #nodejs episode. I hope we can talk about #twisted sometimes #nglunjak." -- Didiet. http://twitter.com/lynxluna/status/19844871001 [18:10] rauchg_: Tobsn: i made too many changes [18:10] rauchg_: :P [18:10] rauchg_: I'll try to get in on that from now on [18:10] Tobsn: at least for the folder change [18:10] Tobsn: well, good job... my shit's still working ;) [18:10] SubStack: rauchg_: I just hate how flash binds to a port that's < 1024 [18:10] Tobsn: SubStack, has to [18:10] rauchg_: SubStack: actually that makes sense [18:11] SubStack: Tobsn: bullshit [18:11] rauchg_: it's determining the security settings for the entire host [18:11] SubStack: should be configurable [18:11] Tobsn: listen what rauchg_, says in a sec [18:11] rauchg_: that's something only root should be albe to do [18:11] rauchg_: :D [18:11] Tobsn: ;) [18:11] _announcer: Twitter: "think I am going to learn node.js and erlang next, need the properties of those systems in the next part of my app" -- Nick Ricketts. http://twitter.com/nightshade427/status/19844978055 [18:11] Tobsn: thats an old thing - everything above a specific port is blocked by default [18:11] Tobsn: i cant remember if it was 1024 but you always should keep using <1000 [18:11] rauchg_: and the bigger problem is that the timeout [18:12] rauchg_: takes a long while [18:12] Tobsn: thats how i kept it in mind [18:12] rauchg_: so basically [18:12] rauchg_: binding to the higher port [18:12] rauchg_: is not an option [18:12] bradleymeck_: grrr is there a way in JS to jump up a case statement ie case "a":..case "b":..case "c": continue "a" [18:12] Tobsn: bradleymeck_? [18:12] SubStack: running internet-facing services as root is a major pain to do securely [18:12] _announcer: Twitter: "@rhyolight Haml's fairly popular in Node.js frameworks. Doesn't do much for me though." -- Daniel Shaw. http://twitter.com/dshaw/status/19845057462 [18:12] TommyM has joined the channel [18:13] Tobsn: you can do case "a": case "c": code [18:13] JimBastard: !tweet @nightshade427 do yourself a favor and skip the erlang part :p [18:13] SubStack: if linux had a nicer way to do more granular network permissions that'd be pretty boss [18:13] Egbert9e9 has joined the channel [18:14] bradleymeck_: i cant cause b goes fallthroughs into c [18:14] creationix: SubStack: what's wrong with changing the user to "nobody" [18:14] SubStack: and privbind sucks [18:14] qschzt: bradleymeck, put each case in their own function .. [18:14] qschzt: switch case gets unwieldly fast anyway [18:15] jxson has joined the channel [18:15] knuckolls has joined the channel [18:15] TommyM has left the channel [18:15] bradleymeck_: ssshhhh i dont want that overhead when parsing [18:16] bradleymeck_: plus functions make it harder to saver parser state [18:16] bradleymeck_: save* [18:16] Tobsn: well just do case "b": blah; break; case "a": case "c": blah break; default: blah; break; [18:17] bradleymeck_: a doesnt guarantee b, anywho im just adding a state [18:17] jkyle has joined the channel [18:17] Tobsn: http://pastebin.com/QpqFqrAj [18:18] knuckolls has joined the channel [18:19] coobr has joined the channel [18:19] knuckolls has joined the channel [18:19] aurynn has joined the channel [18:20] sudoer has joined the channel [18:21] Tobsn: rauchg_, [WebSocket] cannot connect to Web Socket server at ws://dev.wee.sh:8080/socket.io/flashsocket (SecurityError) [18:21] Tobsn: make sure the server is running and Flash socket policy file is correctly placed [18:21] Tobsn: http://dev.wee.sh/test/Socket.IO/socket.io.js [18:21] Tobsn: Line 1628 [18:21] Tobsn: it shows the error 3 times after i stopped and started the node server for a couple seconds and than it disapears [18:21] knuckolls has joined the channel [18:23] rauchg_: Tobsn: not getting that, are you running with `sudo node`? [18:23] damienkatz has joined the channel [18:23] damienkatz has joined the channel [18:23] Tobsn: no, dont have to - test server - its root [18:23] Tobsn: well thats odd [18:24] Tobsn: im not getting any data back [18:24] Tobsn: from the node server [18:24] rauchg_: guillermo:example rauchg$ sudo node server.js [18:24] rauchg_: 29 Jul 11:23:55 - socket.io ready - accepting connections [18:24] rauchg_: 29 Jul 11:24:01 - Initializing client with transport "flashsocket" [18:24] rauchg_: 29 Jul 11:24:01 - Client 5116745471023023 connected [18:24] Tobsn: the message event is not firing [18:24] Tobsn: did you changed something ont he syntax in the node part? [18:24] rauchg_: Tobsn: i kept BC for the older events, but the node part syntax changed (for the better) [18:24] rauchg_: check chat.html [18:24] Tobsn: k [18:25] rauchg_: i wanted to credit someone here for the suggestion of the new syntax but can't remember who it was [18:25] rauchg_: was it you ? [18:25] Tobsn: nope not me [18:26] davidwalsh has joined the channel [18:26] Tobsn: theres no chat.html [18:27] Tobsn: so its not onClientMessage anymore? [18:27] rauchg_: Tobsn: example/server.js [18:27] hellp has joined the channel [18:28] rauchg_: there is but it's gonna be deprecated [18:28] pedrobelo has joined the channel [18:28] Tobsn: yeah, its connecting etc. but the event listeners stopped working [18:28] Tobsn: on client side [18:28] rauchg_: uhm [18:28] Tobsn: they dont see a disconnect nor a message [18:28] rauchg_: oh [18:28] rauchg_: uhm [18:28] Tobsn: ;) [18:29] rauchg_: question [18:29] rauchg_: if you clone the repo [18:29] rauchg_: and go into example [18:29] rauchg_: node server.js [18:29] rauchg_: do you get the same ? [18:29] mau has joined the channel [18:29] Tobsn: well there is not example directory [18:29] Tobsn: there is a tests [18:30] Tobsn: and tests has all kinds of stuff in it but not a server.js [18:31] Tobsn: well [18:31] Tobsn: there is a Socket.IO-node/tests/support/node-websocket-client/examples [18:31] Tobsn: that has a server-unix.js in it... [18:31] rauchg_: nono [18:31] Tobsn: but i dont think thats what you mean [18:31] rauchg_: socket.io-node/example/server.js [18:31] Tobsn: example doesnt exist [18:31] rauchg_: have you updated properly ? [18:31] Tobsn: yep [18:31] Tobsn: i deleted and checked out new [18:31] Tobsn: wait [18:31] rauchg_: http://github.com/LearnBoost/Socket.IO-node/tree/master/example/ [18:31] rauchg_: the evidence [18:31] Tobsn: sorry there is a example [18:31] rauchg_: is overwhelming [18:32] Tobsn: hehe must have overread it sorry [18:32] _announcer: Twitter: "I finally read about Node http://nodejs.org/ very cool! A queue instd of threads for new conn. like jetty but way better. No more polling!" -- michael galloway. http://twitter.com/michaelgalloway/status/19846238497 [18:32] Tobsn: let me compare my old code and the server.js example [18:34] rauchg_: i just tested flashsocket in a remote server and it also works fine [18:34] rauchg_: do let me know though [18:34] rauchg_: i'll be back later [18:36] paulwe has joined the channel [18:36] stepheneb__ has joined the channel [18:36] maushu has joined the channel [18:37] paulwe has joined the channel [18:38] Tobsn: lol okay - the server is fixed [18:38] Tobsn: No transport available [18:38] Tobsn: http://dev.wee.sh/test/Socket.IO/socket.io.js [18:38] Tobsn: Line 562 [18:38] Tobsn: now the client freaks out [18:40] tilgovi has joined the channel [18:41] rauchg_: can i look at your initialization code ? [18:41] sh1mmer has joined the channel [18:46] _announcer: Twitter: "And now for the correct Joyent - Node.js Knockout link: http://bit.ly/bl73Yt" -- Joyent. http://twitter.com/joyent/status/19847085597 [18:47] kjeldahl_ has joined the channel [18:48] Tobsn: sure [18:49] Tobsn: rauchg_, dev.wee.sh/test/test.html [18:49] _announcer: Twitter: "Sweet! After NodeJS, Ruby and Python, here comes a #php client for #pincaster contributed by @hugdubois, thanks! http://bit.ly/9QaPN5 #nosql" -- Frank Denis. http://twitter.com/jedisct1/status/19847250532 [18:50] _announcer: Twitter: "Experimenting with Node.js, nice extra mouse cursor: http://goo.gl/kxQl" -- Felipe K. de Mello. http://twitter.com/felipekm/status/19847315814 [18:51] rauchg_: what are all those intervals :P [18:51] Tobsn: hehe [18:51] Tobsn: well its async :P [18:52] sh1mmer has joined the channel [18:52] rauchg_: socket = new io.Socket('dev.wee.sh',{port:8080}); [18:52] rauchg_: if(socket.connected){socket.disconnect();} [18:52] rauchg_: why are you doing this [18:52] Tobsn: one checks for the first sessionid and keeps it and deletes the interval when it got it - second is for the msg check - it tries 800 times in 2 second intervals to send the first sessionid to the server and the event listener checks for the return value (ergo also every 2 seconds), the third interval is for the becon that checks if everything is still in order [18:52] rauchg_: this code is sorta weird man :P [18:53] Tobsn: lol i know - im still in the "getting the concept" phase ;) [18:53] Tobsn: where is that line? [18:53] FransWillem has joined the channel [18:53] rauchg_: also if (socket.connect()) will always evaluate to true [18:53] rauchg_: since it returns itself [18:53] rauchg_: remember that [18:53] Tobsn: i know - we had that yesterday - just didnt changed it [18:53] rauchg_: i'd take a look at the chat example and go from there to understand it [18:53] rauchg_: if you want reconnection logic there're easier ways to handle it [18:54] rauchg_: i simulated the gmail reconnection [18:54] rauchg_: with increasing timers [18:54] rauchg_: in like 10 lines [18:54] rauchg_: for one of my applications [18:54] rauchg_: i'll show you later [18:54] Tobsn: if(socket.connected){socket.disconnect();} <- oh that is if there is still a ghost session alive [18:54] rauchg_: but you're reinitializing the socket [18:54] rauchg_: how can there be a ghost connection [18:54] Tobsn: so if socket.connected is still true but there was a reconnect triggered [18:54] damienkatz has joined the channel [18:54] Tobsn: well i found out that socket.connected sometimes is still true even if it lost the connection [18:55] Tobsn: so i call a socket.disconnect() (i assumed that the disconnect() function calls some sort of "kill" switch that resets everything so you can start new with a connect()) [18:56] jpld has joined the channel [18:56] Tobsn: as i said before... i saw some weird shit man ;) [18:56] Tobsn: and those are my workarounds :P [18:56] Tobsn: i can remove all that stuff and see what happens now [18:56] Tobsn: with the .5* code [18:56] dnyy has joined the channel [18:56] rauchg_: that's really unlikely since you're initializing a new object :P [18:57] rauchg_: unless it connects really fast [18:57] Tobsn: lol youre right [18:57] rauchg_: which might happen with websocket [18:57] rauchg_: haha [18:57] Tobsn: haha [18:57] Tobsn: well half of the code is me trying to prepare for the worst case and half way learned through it and than left it in there [18:57] rauchg_: i hear ya [18:59] Tobsn: yeah the client still doesnt get the disconnect [18:59] bradleymeck_: whew, lax async json parser appears ready to go [18:59] Tobsn: i think i start from scratch [19:00] Tobsn: technoweenie, you just saw that reply? ;) [19:01] technoweenie: what [19:01] Tobsn: someone's taking that url issue to the next level into the browser haha [19:03] Tobsn: http://github.com/ry/node/issues/issue/225/#comment_333669 [19:03] damienkatz has joined the channel [19:03] damienkatz has joined the channel [19:04] zapnap has joined the channel [19:04] josemoreira has joined the channel [19:04] damienkatz has joined the channel [19:04] eisd has joined the channel [19:05] rauchg_: Tobsn: http://www.faqs.org/rfcs/rfc1738.html [19:05] rauchg_: http://tools.ietf.org/html/rfc3986 [19:06] Tobsn: well yeah... we went through this yesterday [19:06] Tobsn: i think a url parser should only parse internet scheme related urls [19:06] Tobsn: if you want to parse application links or something similar you can build your own [19:06] rauchg_: lolwut ? [19:06] rauchg_: node is for network applications [19:06] _announcer: Twitter: "@citizen428 are you using node.js alone or with a framework / libraries?" -- Nick Ricketts. http://twitter.com/nightshade427/status/19848265510 [19:07] Tobsn: yeah but even network applications are not blah:blah they're blah://blah [19:07] khug has joined the channel [19:07] khug has left the channel [19:08] Tobsn: would you really use parse_url() to parse a spotify:track:HASH link? [19:08] Tobsn: i think those are custom solutions [19:08] Tobsn: - /spotify:([^:]+):([^:]+)/ [19:08] rauchg_: well [19:09] rauchg_: we have a URL module [19:09] rauchg_: not a URI one [19:09] Tobsn: hehe [19:09] rauchg_: so you have a point there [19:09] Tobsn: the problem is - it caused problems with // paths [19:09] rauchg_: i see [19:10] Tobsn: see the issue thing - thats why i said there should be :// in the regex and not only : and end there [19:10] Tobsn: because later on in the script it looks for // for the scheme and kills // paths [19:10] Tobsn: where paths starting with // are illegal anyway but the functions is definitly buggy [19:12] Tobsn: and than i pointed out the php_url_parse function in the C source of php which doesn use regex and walks over the url char by char which is probably better [19:12] silentrob has joined the channel [19:12] Tobsn: ... and if someone is extremely bored he could translate that to JS... ;) [19:13] jherdman has joined the channel [19:13] technoweenie: Tobsn: replied [19:13] Tobsn: ... [19:14] Tobsn: you're not helping :P [19:15] hsoj_ has joined the channel [19:16] creationix: Tobsn: Url.resolve [19:16] Tobsn: hmm? [19:16] creationix: http://nodejs.org/api.html#url-resolve-300 [19:17] creationix: I've already talked with isaacs and there is a patch coming [19:17] stepheneb has joined the channel [19:18] rauchg_: interesting [19:18] Tobsn: resolve? [19:19] Tobsn: but parse() is still a mess [19:19] creationix: basically the problem is that Url.parse is used on two different contexts, one internally by Url.resolve and the other externally with req.url passed in [19:19] creationix: and //google.com/ is a valid relative url for url.resolve there google.com is the host [19:19] creationix: but for req.url it's all pathname [19:19] Tobsn: hmm [19:19] Tobsn: but cant you use parse() for resolve? [19:20] stride: http://phpjs.org/functions/parse_url:485 anybody tried this one? [19:20] Tobsn: without having parse to do both? [19:20] Tobsn: stride, pointed it out already: regex = hell [19:20] stride: don't really care if others write them and they work :)) [19:20] softdrink has joined the channel [19:20] Tobsn: im going to write a js version of the parse_url thing from php and than we'll see :P [19:21] Tobsn: first, i gotta find my wallet. [19:22] nrstott has joined the channel [19:24] hsoj_ has joined the channel [19:24] stride: yeah, you're right, the php implementation looks pretty nice [19:26] creationix: Buffer.prototype.__proto__ = Array.prototype [19:26] creationix: hehe [19:26] creationix: ES5 is fun [19:27] khug has joined the channel [19:28] dnolen has joined the channel [19:28] creationix: ohh, even better Buffer.prototype.__proto__ = String.prototype [19:28] creationix: almost works like a normal string [19:28] Rixius has joined the channel [19:30] _announcer: Twitter: "@izs Have you tried #dbslayer for #nodejs ?" -- michael galloway. http://twitter.com/michaelgalloway/status/19849573092 [19:30] creationix: hmm , maybe not TypeError: String.prototype.valueOf is not generic [19:30] creationix: we need to implement valueOf in buffer itself [19:32] _announcer: Twitter: "@ Betomorales for that are the array (and hash tables in other languages) xDDDD. and if you like programming as well, look for Node.js (?) = P" [es] -- Juan [PS]. http://twitter.com/pottersys/status/19849728164 [19:33] kjeldahl has joined the channel [19:34] sh1m has joined the channel [19:35] softdrink has joined the channel [19:40] agnat has joined the channel [19:42] damienkatz has joined the channel [19:43] creationix: connect serving 3mb file: Requests per second: 266.70 [#/sec] (mean) [19:43] creationix: thin serving the same file: Requests per second: 0.03 [#/sec] (mean) [19:43] creationix: thin should be faster than that right? [19:47] _announcer: Twitter: "new version of the client library checks if there are long running tasks and sends short tasks in parallel. And this without node.js! #cpp" -- marek krajewski. http://twitter.com/mrkkrj/status/19850543579 [19:47] Yuffster has joined the channel [19:49] rwaldron has joined the channel [19:50] qfinder has joined the channel [19:52] zedas has joined the channel [19:53] bradleymeck_: creationix, yes [19:54] bradleymeck_: and what would you give valueOf? [19:54] creationix: bradleymeck_: not sure, I couldn't figure it out [19:54] bradleymeck_: i mean, a buffer is really a chunk of memory [19:54] khug1 has joined the channel [19:54] creationix: It would make it possible to treat buffers more like strings [19:54] creationix: and not have to convert back and forth [19:55] creationix: anybody know the nginx config that makes it not background? [19:55] bradleymeck_: so, you want valueOf to convert to utf8 string? [19:55] creationix: bradleymeck_: hmm, forgot about utf8 [19:55] creationix: I guess it only works for ascii data [19:56] creationix: and valueOf will still do conversion [19:56] bradleymeck_: nah, js Strings can do multibyte planes of unicode [19:56] bradleymeck_: wish we could get the unicode db in node though :( [20:00] _announcer: Twitter: "Node.js is the New Black: http://bit.ly/c1dMM1" -- Hernan Garcia. http://twitter.com/theprogrammer/status/19851282916 [20:01] _announcer: Twitter: "@michaelgalloway Nope. But isn't dbslayer just a REST wrapper around a DB? Couldn't you just use the node HTTP client? #nodejs" -- Ⓘⓢⓐⓐⓒ. http://twitter.com/izs/status/19851312801 [20:01] SubStack: black is the new node.js [20:02] ceej has joined the channel [20:03] bradleymeck_: !tweet @theprogrammer Black is the old Node.js [20:05] _announcer: Twitter: "Playing around with node.js (http://nodejs.org/). This is a fun way to write socket server! Let's see how fast this thing can go..." -- Gerben de Graaf. http://twitter.com/g_e_r_b/status/19851560076 [20:05] hecticjeff_ has joined the channel [20:05] bradleymeck_: faster than a speeding packet~ [20:06] jesusabdullah: vroom vroom [20:06] jesusabdullah: So, I'm finally getting to the point where concurrency is biting me in the butt :( [20:06] SubStack: Node.js is gentrifying old neighborhoods by the ruby on railroad tracks [20:06] Aria has joined the channel [20:06] jesusabdullah: Not very good at it! [20:07] bradleymeck_: whats hitting you jesusabdullah? [20:08] jesusabdullah: Ohhh, long story XD Nothing I won't figure out eventually [20:08] jesusabdullah: but basically, just programming like my functions are blocking [20:08] jesusabdullah: and then getting confused when the second function is getting incomplete input [20:09] V1 has joined the channel [20:09] bradleymeck_: if you need something buffered yea... [20:09] jesusabdullah: Yeah, basically [20:10] mjr__ has joined the channel [20:10] tmedema has joined the channel [20:10] jesusabdullah: Well NOW I'm trying to assemble a string and my output is scrambled [20:10] jesusabdullah: and I'm not sure why [20:12] hecticjeff_ has left the channel [20:13] jesusabdullah: http://github.com/jesusabdullah/lulzbot/blob/trackbranchES/gitwatch.js is the code. A word of warning: It's pretty messy. [20:13] bradleymeck_: is it being clobbered by another callback? [20:13] jesusabdullah: :/ I don't think so? [20:13] jesusabdullah: Basically, I have an array, and two strings [20:13] jesusabdullah: and I want to be like, [20:14] jesusabdullah: var msg = ""; for (i in array) {msg+=array[i];} msg=pre+msg+post; sys.puts(msg); [20:14] tmpvar has joined the channel [20:14] elliottkember has joined the channel [20:14] jesusabdullah: That should work right? [20:14] jesusabdullah: Mebbs? [20:15] creationix: jesusabdullah: Step if your friend [20:15] creationix: s/if/is/ [20:15] jesusabdullah: tssch! [20:15] bradleymeck_: youll never have me you return value eating monster! [20:15] jesusabdullah: XD [20:15] jacoblyles has joined the channel [20:16] jesusabdullah: I'll give step a try, but for some reason I feel like I should do this particular bit without too many deps [20:16] jesusabdullah: Call me crazy <_> [20:16] tmpvar: yo [20:16] jesusabdullah: yo? [20:17] JimBastard: tmpppppppvaaaaaaar [20:17] tmpvar: what up [20:17] JimBastard: chillin the couch at work [20:17] JimBastard: its far nicer then my couch at home [20:17] tmpvar: hah, nice [20:17] tmpvar: when is the next js party? [20:17] tmpvar: :P [20:17] JimBastard: shit, im in a constant state of js party [20:17] JimBastard: when you gonna join the party? [20:18] JimBastard: ohh its sat at drop.io [20:18] tmpvar: im trying man, im a busy man ;) [20:18] tmpvar: man, man [20:18] tmpvar: word, I'll probably be there [20:18] JimBastard: huzaaah [20:18] bradleymeck_: nested switches using default to handle logic, delicous [20:18] tmpvar: ouch [20:18] JimBastard: lulz [20:19] mattly has joined the channel [20:20] creationix: Nginx: 819478.75 [Kbytes/sec] Connect: 1003722.96 [Kbytes/sec] (both serving the latest node tarball) [20:20] bradleymeck_: i love my switches! they are stupid fast! [20:20] tmpvar: wow [20:20] tmpvar: bradleymeck_, in c? [20:20] jesusabdullah: Hmm, step DOES look nice [20:20] bradleymeck_: even in js they are faster [20:20] creationix: jesusabdullah: :D [20:21] zedas: mattly: sup? :-) [20:21] mattly: zedas: hey, haven't seen you in a while [20:21] JimBastard: i thought switches were bad in js land [20:21] tmpvar: bradleymeck_, i wasnt aware of the fact that they are faster in js [20:21] JimBastard: yeah [20:21] ryah: rauchg_: new socket.io sounds nice [20:21] bradleymeck_: well from what i can tell, v8 seems to actually calc out jump tables for number based switches, so mostly its just a double->int then jump [20:22] ryah: rauchg_: no deps makes me happy [20:22] bradleymeck_: it beat the pants off an if else tree [20:22] rauchg_: ryah: :) [20:22] kodisha has joined the channel [20:22] ryah: in what cases would you need the flash one? [20:23] ryah: for xdomain? [20:23] tmpvar: bradleymeck_, number based switches make sense [20:23] ryah: s/one/backend/ [20:23] rauchg_: ryah: if Flash is installed, and no WebSocket [20:23] rauchg_: it gives you a WebSocket equivalent, so it's high in the priority list of transports [20:23] ryah: ah [20:23] rauchg_: you can always tweak them [20:23] rauchg_: if you don't like flash [20:23] rauchg_: you can go [20:23] ryah: why not just long-poll? [20:23] bradleymeck_: yea, and i can just map strings to numbers anyway [20:23] rauchg_: ['websocket', 'xhr-polling'] [20:24] rauchg_: htmlfile in IE has lower latency [20:24] ryah: htmlfile? [20:24] rauchg_: basically equivalent to websocket for dowload with an extra bytes of framing overhead [20:24] rauchg_: it's an iframe inside an activex object [20:24] rauchg_: the technique that google discovered with gmail chat [20:24] ryah: oh [20:24] rauchg_: it doesn't trigger the classic `forever spinner` [20:24] ryah: okay [20:24] rauchg_: or forever loading page [20:25] rauchg_: xhr-multipart for firefox 3.x is better than polling too [20:25] rauchg_: no latency on download [20:25] rauchg_: and equivalent [20:25] creationix: wow, this really sucks at large files: 6370.64 [Kbytes/sec] [20:25] ryah: we could perhaps put the flash socket on the same port? [20:25] eisd: rauchg_: do you know how to detect a disconnect with xhr-multipart on ff 3.5? [20:25] rauchg_: flash looks for the security xml on a fixed proprietary port unfortunately [20:25] ryah: would that be helpful? [20:25] ryah: ok [20:25] rauchg_: eisd: that's addressed [20:25] creationix: s/this/thin/ [20:26] rauchg_: and now we also have smart timeouts [20:26] bradleymeck_: creationix, how big of a file? [20:26] rauchg_: so in the event of a non-graceful closed connection [20:26] creationix: bradleymeck_: about 3.5mb [20:26] ryah: creationix: whew [20:26] rauchg_: it'll detect the disconnection [20:26] ryah: creationix: you should use sometihng bigger [20:26] eisd: rauchg_: sorry, I missed the chat, it's been addressed in what? a library? [20:26] ryah: let is scale up the window [20:26] creationix: ryah: don't worry node gets about 10gigabit [20:26] rauchg_: eisd: http://github.com/LearnBoost/Socket.IO-node [20:26] ryah: creationix: maybe thin is pulling from disk [20:26] rauchg_: and client in http://github.com/LearnBoost/Socket.IO [20:26] eisd: Ah, socket.io okay [20:27] creationix: ryah: maybe, my laptop is ssd with I7 processor [20:27] eisd: rauchg_: I actually wrote my own comet library a long time ago and was looking for a hack to detect the disconnect, so you guys are using timeouts? [20:27] creationix: the drive should do more than 7mb/sec [20:27] ryah: creationix: still, extra sys calls [20:27] rauchg_: eisd: yes, based on heartbeat roundtrips [20:27] ryah: in and out of ruby [20:27] creationix: ryah: good news is that connect is still faster than stock nginx [20:27] ryah: creationix: dtruss it [20:27] creationix: nginx gets about 8 megabit [20:28] creationix: err, gigabit [20:28] eisd: rauchg_: ah, okay, I'll just look through your code :). I think I looked through it once and it wasn't addressed -- this update is in your latest code? [20:28] _announcer: Twitter: "Getting Started with MongoDB and Node.js http://tumblr.com/xhpehuhe1" -- Henning Thies. http://twitter.com/henningthies/status/19852844111 [20:28] jesusabdullah: ahaha! Fixed it! [20:28] rauchg_: eisd: it was addressed yesterday haha [20:28] eisd: rauchg_: cool thanks [20:29] jelveh has joined the channel [20:29] _announcer: Twitter: "socket.io <3 <3 <3 http://groups.google.com/group/nodejs/browse_thread/thread/84c333b7b0384788" -- Ryan Dahl. http://twitter.com/ryah/status/19852925013 [20:30] creationix: ryah: dtruss gets lots of read_nocancel calls [20:30] creationix: and it seems to stat the file for every request a few times [20:30] mischief has joined the channel [20:30] aho has joined the channel [20:31] zedas: mattly: yep just hanging out. [20:32] bradleymeck_: tmpvar, actually, it seems strings are faster in switches... wtf... i guess pointer comparison is faster than the cast [20:33] tmpvar: interesting [20:34] siculars has joined the channel [20:35] khug has joined the channel [20:36] JimBastard: bradleymeck_: how about speed testing this guy http://gist.github.com/443256 [20:36] tmpvar: pointer comparison, that doesnt seem like it would work though, bradleymeck_ [20:37] damienkatz has joined the channel [20:37] damienkatz has joined the channel [20:37] bradleymeck_: why tmpvar? strings are run through a singleton filter for v8 [20:37] tmpvar: ah [20:38] tmpvar: so the optimized reference to a string may be shared by many js refs (im guessing) [20:38] bradleymeck_: yes, you can only access references not real pointers if you want to hold onto an object (the pointers to the structs can move by the GC) [20:38] sh1mmer has joined the channel [20:38] _announcer: Twitter: "@izs gotcha, for node.dbslayer.js, yep. Problem with #dbslayer server is another cog in the machine. IMO, more moving parts = bad." -- michael galloway. http://twitter.com/michaelgalloway/status/19853422769 [20:39] bradleymeck_: jim i love labels in same scope jumps but alas can only put them at front of loops in v8 [20:42] JimBastard: bradleymeck_: lol [20:42] JimBastard: GOTO CONTROL [20:44] bradleymeck_: mostly i just want to jump between case statements [20:44] JimBastard: bradleymeck_: are you okay? we can always talk [20:44] JimBastard: you seem troubled today [20:44] JimBastard: ahaha [20:45] bradleymeck_: i just crave things when writing parsers [20:45] Rixius has left the channel [20:45] JimBastard: ahhhhh [20:45] JimBastard: have you played with jison at all? [20:45] jelveh has joined the channel [20:45] bradleymeck_: im pretty sure my current impl will beat it [20:46] EyePulp has joined the channel [20:46] bradleymeck_: plus is jison async? [20:46] bradleymeck_: errr chunked [20:46] JimBastard: i mean, i dont know too much about parsers. i do know jison powers part of coffeescript [20:46] JimBastard: not really sure bradleymeck_ [20:46] JimBastard: it seems to have nice docs though [20:46] JimBastard: zaach: could answer [20:47] zaach: bradleymeck_: not currently ;( [20:47] zaach: but that's the lexer's fault [20:48] zaach: coffeescript uses it's own lexer [20:48] bradleymeck_: chunked parser gen is a bit brutal [20:49] zaach: bradleymeck_: what were you trying to do? [20:49] bradleymeck_: im done i think, a very lax json chunked parser [20:50] technoweenie has joined the channel [20:51] JimBastard: bradleymeck_: ++ [20:51] JimBastard: i had that idea this morning actually [20:51] JimBastard: caus we use eval() [20:51] JimBastard: and i dont like that [20:52] JimBastard: JSON.parse barfs on comments [20:53] bradleymeck_: what kinda comments you want? both? [20:54] SvenDowideit has joined the channel [20:54] sh1mmer: git is so awesome [20:54] sh1mmer: once you understand the voodoo [20:55] rauchg_: sh1mmer: ++ [20:55] khug has joined the channel [20:55] rauchg_: once you understand the voodootikigod [20:55] bradleymeck_: mmmm i cant break 2 in js?! [20:56] khug has left the channel [20:56] rauchg_: bradleymeck_: labels [20:56] bradleymeck_: i cant label before a switch and have it work [20:56] JimBastard: bradleymeck_: i dont know how valid this is, but id like to see comments like this [20:56] JimBastard: http://github.com/Marak/JSONloops/blob/master/loops/nyc.json [20:57] JimBastard: i can eval() that and it will parse [20:57] sh1mmer: you can never understand the voodootikigod [20:57] voodootikigod: i is not for understand u is for understanding [20:57] sh1mmer: although maybe we should start calling him voodootikagod, because he liked a nice curry [20:58] bradleymeck_: i can add em to mine, but its an incremental, so to actually make the object you would need to build a saxlike builder, but you could stream in things so its a trade off (prolly should just include a default to object...) [21:01] jamescarr has joined the channel [21:06] maushu has joined the channel [21:08] jelveh_ has joined the channel [21:08] satori_ has joined the channel [21:08] bradleymeck_: jim you wouldnt ever need the data inside the comments right? [21:09] quirkey has joined the channel [21:11] figital has joined the channel [21:13] khug has joined the channel [21:13] Gruni has joined the channel [21:14] technoweenie has joined the channel [21:14] JimBastard: bradleymeck_: you mean like pulling data out of the comments for use? [21:14] bradleymeck_: yes [21:14] JimBastard: i would never want to do that [21:14] JimBastard: the comments are just there to make the json easier to read [21:14] JimBastard: i think the jsonloops example is a decent enough use case [21:14] amerine has joined the channel [21:14] JimBastard: complex structured json [21:15] JimBastard: where the structure is domain specific [21:15] stepheneb_ has joined the channel [21:15] JimBastard: i could be way off though [21:15] JimBastard: there is json schema [21:15] Tobsn: hehe [21:16] jamescarr has joined the channel [21:16] rauchg__ has joined the channel [21:17] bradleymeck_: pff this thing takes stuff that barely qualifies as being kinda json ... {,a b:,} is treated as {a:b} (i declare that non strings will be treated as literals!) [21:17] jamescarr: so I discovered that Object.freeze only prevents you from re-assigning a value [21:17] jamescarr: it doesnt really make the value unmodifiable [21:17] bradleymeck_: ya, just locks the reference [21:17] eisd: jamescarr: obj.__defineSetter__("property", function() { return false }) [21:20] khug has joined the channel [21:21] khug has left the channel [21:22] _announcer: Twitter: "The concepts behind NodeJS (non-blocking calls, event loops and data streaming) are at the core of scalable systems. http://yhoo.it/crPAnd" -- Ismail Elshareef. http://twitter.com/codeish/status/19855915715 [21:22] dmcquay has joined the channel [21:24] khug has joined the channel [21:25] _announcer: Twitter: "@iansym I've been very happy with my (ve) - @creationix posted his nodejs stats on the switch from a linode to a (ve) and it was dead even" -- Alex Sexton. http://twitter.com/SlexAxton/status/19856103669 [21:27] _announcer: Twitter: ":) Happy! I just finished my project using shared whiteboard # # websockets with lib # node.js" [es] -- Vanessa Gutiérrez. http://twitter.com/titacgs/status/19856222900 [21:29] tmpvar: oooh, latina [21:29] tmpvar: LOL [21:29] kodisha has joined the channel [21:30] JimBastard: !tweet @titacgs hola mamasita. donde esta enlace? [21:30] JimBastard: tmpvar: ^^ [21:31] JimBastard: its an international incident [21:32] _announcer: Twitter: ":) Happy! I just finished my project using the shared whiteboard # # node.js lib" [es] -- Vanessa Gutiérrez. http://twitter.com/titacgs/status/19856491786 [21:35] _announcer: Twitter: "I need someone who is familiar node.js." [fr] -- Benoit Côté-Jodoin. http://twitter.com/Becojo/status/19856710507 [21:35] jxson has joined the channel [21:36] bradleymeck_: !tweet @Becojo, node.js on irc.freenode.net! [21:38] JimBastard: bradleymeck_: you are doing it wrong [21:38] JimBastard: !tweet @Becojo la mafia node.js obtenu votre dos. irc.freenode.net # node.js [21:38] JimBastard: !tweet @Becojo la mafia node.js obtenu votre dos. irc.freenode.net #node.js [21:38] JimBastard: oops [21:38] JimBastard: now i did it wrong [21:39] maushu: ... [21:39] JimBastard: maus-huhu [21:41] aconran__ has joined the channel [21:41] bridge has joined the channel [21:48] _announcer: Twitter: "giving a try to nodeJS and feeling its power ! i can't wait to go further with it." -- Clément Uster. http://twitter.com/cluster88/status/19857450580 [21:49] jelveh has joined the channel [21:49] _announcer: Twitter: "@lachlanhardy they are probably fiddling with NodeJS and Rails on their black iBooks in the line!" -- Luke Daley. http://twitter.com/ldaley/status/19857524784 [21:49] _announcer: Twitter: "socket.io is one of the main attractions at #node.js - http://github.com/LearnBoost/Socket.IO-node - try it. It's awesome." -- kschzt. http://twitter.com/kschzt/status/19857528891 [21:50] creationix has joined the channel [21:50] mindeavor has joined the channel [21:51] JimBastard: !tweet @cluster88 feel the power, get in the choppa. [21:51] SubStack: It's a callback. Get in the car. [21:51] kodisha has joined the channel [21:52] aho: Node.js: JavaScript on the Server (GoogleTechTalks) http://www.youtube.com/watch?v=F6k8lTrAE2g [21:53] CIA-77: node: 03Ryan Dahl 07master * rf291fbc 10/ (src/node_buffer.cc test/simple/test-buffer.js): Fix ending \0 in base64 decoding - http://bit.ly/9e3uLE [21:53] SubStack: ^ pkrumins [21:53] romainhuet has joined the channel [21:53] _announcer: Twitter: "#nodejs: JavaScript on the Server: http://bit.ly/9cYSFX @ryah talk at Google" -- Mathias Pettersson. http://twitter.com/mape/status/19857740333 [21:54] mape: aho: Nice :) [21:54] ryah: oh no :( [21:55] ryah: ACTION hates seeing himself :) [21:55] aho: ye, just saw it on my subscription page... with 0(!) views :> [21:55] mape: ryah: And everyone else likes it :P [21:55] marshall_law_ has joined the channel [21:55] JimBastard: ACTION can't see his own reflection in a mirror [21:56] jamescarr: quick question [21:57] jamescarr: is there any kind of performance hit from freezing an object instance? [21:58] _announcer: Twitter: "Video for the Google Tech Talk on #nodejs by @ryah is up http://bit.ly/9cYSFX" -- Tim Caswell. http://twitter.com/creationix/status/19858006306 [21:58] Tobsn: anyone from san diego area? [21:58] aho: text is sorta smeary... wish there was a 720p version :f [21:59] _announcer: Twitter: "Node.js: JavaScript on the Server http://bit.ly/dCpJjP" -- wahyu hadiyana. http://twitter.com/w1d4d/status/19858062516 [21:59] _announcer: Twitter: "@ Ryah latest nodejs talk at google: http://youtu.be/F6k8lTrAE2g" [fil] -- Steve Davie. http://twitter.com/stevendavie/status/19858063244 [21:59] creationix: mape: are you still having problems with nStore? [21:59] rauchg_: wow talk at google [21:59] rauchg_: where was i [21:59] rauchg_: ACTION watches [21:59] mape: creationix: yeah it still kinda doesn't save all, but some [21:59] mape: probly using it in a "bad" way [21:59] creationix: mape: weird, I really want to fix that [22:00] creationix: it shouldn't ever lose data [22:01] Blackguard has joined the channel [22:01] mape: creationix: http://gist.github.com/499378 should that break it? [22:02] mape: that runs every time a matching tweet is found [22:02] mape: and once every 10sec if an entry matching is 24h old and therefor removed [22:03] _announcer: Twitter: "yesterdays nodejs tech talk http://www.youtube.com/watch?v=F6k8lTrAE2g is up" -- Dylan Clendenin. http://twitter.com/deepthawtz/status/19858343654 [22:03] _announcer: Twitter: "The talk I attended yesterday at Google HQ regarding node.js is now live on youtube." -- Carlos Cardona. http://twitter.com/cgcardona/status/19858371420 [22:04] qschzt has joined the channel [22:04] _announcer: Twitter: "The talk I attended yesterday at Google HQ regarding node.js is now live on youtube. http://bit.ly/bvmgBd - Nice talk @ryah" -- Carlos Cardona. http://twitter.com/cgcardona/status/19858424213 [22:05] cardona507: nice [22:06] pkrumins: ryah: does binary base64 now work? [22:06] pkrumins: ryah: didn't get yet around to sending you an example [22:06] steadicat has joined the channel [22:07] _announcer: Twitter: "JavaScript on the Server: @ryah's tech talk about #nodejs" -- Ⓘⓢⓐⓐⓒ. http://twitter.com/izs/status/19858609240 [22:07] creationix: mape: what's the contents of the caches? [22:07] admc has joined the channel [22:07] mape: creationix: 1sec I'll post the db file [22:08] kodisha_ has joined the channel [22:08] voxpelli has joined the channel [22:11] _announcer: Twitter: "Node.js: JavaScript on the Server: Node.js: JavaScript on the Server Google Tech Talk July 28, 2010 ABSTRACT ... http://bit.ly/9qiXAz" -- John McLear. http://twitter.com/johnmclear/status/19858845798 [22:12] Dmitry has joined the channel [22:12] jamescarr: is there any kind of performance hit from freezing an object instance? [22:13] jamescarr: I'v been considering freezing object instances returned from a service [22:14] pkrumins: check this out guys: http://www.gifexplode.com/uploads/1c812d5cb392c765038b4f86a6bae5af.gif [22:14] pkrumins: made it with node-gif! [22:14] _announcer: Twitter: "@johnmclear node.js is the most exciting thing in code this year, it's wonderful, play with it, it will make you happy" -- Aisling Canton. http://twitter.com/lingmops/status/19859019665 [22:14] jamescarr: ha cool [22:14] tmpvar: time to watch ryah on the interweb [22:15] rauchg_: good stuff pkrumins :) [22:16] Apage43: that reminds me of when I was a PHP abuser [22:17] Apage43: and dynamically generated ani-gifs [22:18] naveen has joined the channel [22:18] _announcer: Twitter: "My first working #nodejs app - guestbook, www.node.ee Yay!" -- Andris Reinman. http://twitter.com/andris9/status/19859299770 [22:20] maushu: Apage43, you bastard! [22:21] Apage43: I know. [22:21] mattly has joined the channel [22:21] _announcer: Twitter: "Check out @ryah's tech talk about #nodejs at Google" -- Kadir Pekel. http://twitter.com/kadirpekel/status/19859474097 [22:22] jacoblyles has joined the channel [22:22] _announcer: Twitter: "Yesterday's Google Tech Talk of @ryah talking about node.js. Best presentation yet! http://www.youtube.com/watch?v=F6k8lTrAE2g" -- Jim Pick. http://twitter.com/jimpick/status/19859536016 [22:23] maushu: pkrumins, how about gif -> rgba (and other formats)? [22:23] qschzt: wow, the announcer is a little annoying? [22:23] maushu: qschzt, he just needs some love. [22:23] cardona507: nah - I dig the announcer [22:24] qschzt: he's just gonna get worse :) [22:24] maushu: By that time he should have some kind of limit. [22:24] maushu: Maybe max tweets per hour. [22:24] pgriess has joined the channel [22:25] ryah: better max tweets per minute [22:25] ryah: :) [22:25] qschzt: or lines between tweets [22:25] maushu: It could queue the tweets and then, on a slower time, show them. [22:25] maushu: Of course this has the disadvantage of people asking for questions only to receive the answer hours later. [22:26] cardona507: exactly [22:26] ryah: i think there isn't a need for a limit right now [22:26] ehaas has joined the channel [22:26] cardona507: the bot rox [22:26] mape: /ignore _announcer [22:26] cardona507: there ya go [22:26] ryah: nod [22:26] mape: If he is bothering [22:27] pkrumins: maushu: the other way around? [22:27] maushu: ACTION implements "SUPER DUPER IGNORE BREAKER!" on announcer. [22:27] maushu: Fix'd. [22:27] ryah: pkrumins: not sure if base64 is fixed [22:27] ryah: pkrumins: i didn't know what your breaking example was. [22:28] ryah: pkrumins: btw - i just did it myself in order to understand base64 [22:28] pkrumins: ryah: ah! [22:28] ryah: i never wrote a base64 encoder/decoder before [22:28] pkrumins: mine was random data from /dev/urandom [22:29] pkrumins: i encoded them with my base64 module, then with perl's base64 - those matched [22:29] pkrumins: the did it with buffer.toString('base64') and it wasn't quite the same [22:29] qschzt: mape, word [22:29] pkrumins: ryah: gonna prepare a test case [22:30] pkrumins: maushu: i currently have {rgb, bgr, rgba, bgra} -> {gif, png, jpeg} [22:30] pkrumins: i am not doing it the other way around any time soon [22:30] maushu: Why? ;_; [22:30] pkrumins: because i don't need it for stackvm [22:30] maushu: Oh right. [22:31] pkrumins: maushu: can also do rgb -> theora/ogg video. :) [22:32] creationix: pkrumins: where is this awesome code? [22:33] pkrumins: creationix: which one exactly? [22:33] creationix: rgb -> png [22:33] ajpiano has joined the channel [22:33] pkrumins: creationix: in node-png repository at github [22:33] pkrumins: creationix: http://github.com/pkrumins/node-png [22:33] pkrumins: creationix: http://github.com/pkrumins/node-jpeg [22:33] pkrumins: creationix: http://github.com/pkrumins/node-gif [22:33] pkrumins: creationix: http://github.com/pkrumins/node-video [22:34] creationix: ahh, c-based [22:34] pkrumins: right [22:34] creationix: guess it has to be to be fast [22:35] pkrumins: should be. [22:35] creationix: I wish js was fast enough to do this kind of stuff with resorting to c [22:35] creationix: I want png and pdf generators [22:35] sveisvei has joined the channel [22:37] Tobsn: i mean you can just use imagemagicks [22:37] mape: or graphicsmagick [22:37] qschzt: Tobsn, with the multithreading turned off [22:37] qschzt: mape, yes [22:37] Tobsn: turned off? [22:37] Tobsn: is that even on? :P [22:38] qschzt: it's on and it'll hurt you :) [22:38] Tobsn: k [22:39] qschzt: that stuff really needs a huge rewrite [22:39] qschzt: .. anyways [22:40] konobi: ryah: in node is process === this ? [22:40] Tobsn: http://github.com/vanillahsu/node-memcache? [22:40] creationix: wow, png is a complicated format [22:40] Tobsn: i like the first install line [22:40] konobi: (at global scope) [22:40] Tobsn: "upgrade to squeeze" [22:41] qschzt: Tobsn, http://github.com/kschzt/node-memcache i fixed a couple simple bugs in that [22:41] qschzt: actually no, from elbart's :) [22:41] Tobsn: is that the one that supports pooling? [22:41] qschzt: no [22:41] qschzt: that's V1's [22:41] Tobsn: okay than im using the other one [22:41] Tobsn: ;) [22:41] Tobsn: thats the beauty of memcache - the pooling stuff [22:41] Tobsn: if you dont have pooling - youre not game [22:41] Tobsn: :P [22:42] qschzt: it isn't memcache [22:42] Tobsn: its part of the memcache specification [22:43] rauchg_: wait a second [22:43] qschzt: V1's is http://github.com/3rd-Eden/node-memcached [22:43] rauchg_: kschzt = qschzt ? [22:43] _announcer: Twitter: "I liked a YouTube video -- Node.js: JavaScript on the Server http://youtu.be/F6k8lTrAE2g?a" -- Sean Porter. http://twitter.com/portertech/status/19860810947 [22:43] qschzt: rauchg_, omg [22:43] rauchg_: wow [22:43] Tobsn: qschzt, nah thats not the one [22:43] pquerna: i really want to write an UDP nodejs memcache client [22:43] pquerna: enotime [22:44] creationix: jbrantly: didn't you write a pure js png encoder? [22:44] qschzt: Tobsn, hmm, not sure about the spec, but I'm going to ignore pooling because I want to bucket them [22:44] Tobsn: http://github.com/jketterl/memcachejs [22:44] Tobsn: thats the one [22:45] Tobsn: well if you want to implement something for nodejs - port a consitant hashing lib [22:45] Tobsn: to use with redis/memcache/whatnot [22:45] _announcer: Twitter: "#googletechtalk with @ryah about #nodejs http://www.youtube.com/watch?v=F6k8lTrAE2g" -- Sveinung Røsaker. http://twitter.com/sveisvei/status/19860968946 [22:45] Tobsn: i have one written in php - someone just needs to port it - and its not complicated [22:45] cardona507: meme much [22:45] qschzt: Tobsn, it's so easy, why publish it :) [22:45] cardona507: ? [22:45] Tobsn: ;) [22:45] Tobsn: well its helpful [22:47] Tobsn: wait, i actually trashed mine and used flexihash [22:47] charlenopires has joined the channel [22:47] Tobsn: qschzt, http://code.google.com/p/flexihash/ [22:47] qschzt: yeah, i used flexihash in php [22:47] Tobsn: yeah, just port it ;) [22:48] Tobsn: shouldnt be hard for you [22:48] Tobsn: i still need to lern the whole crazy internals of nodejs to do it the "right" way [22:48] qschzt: Tobsn, http://pastie.org/1066310 [22:49] creationix: has anyone implemented a stream filter that consumes chunks and spits out lines? [22:49] creationix: seems like it would be terribly useful [22:49] creationix: mikeal: ^ [22:49] Tobsn: qschzt, does it have redundancy? [22:49] Tobsn: n+1 writes [22:50] qschzt: Tobsn, yes, you ask get(key, amount of replicas) [22:50] Tobsn: get? [22:50] qschzt: Chasm.get() [22:50] Tobsn: wait, what does that thing do [22:50] Tobsn: haha [22:51] Tobsn: why is there only a get function [22:52] qschzt: Tobsn, this is for managing the hash ring i guess, so you add nodes/servers into the ring, and get the position(s) of a particular key [22:52] Tobsn: oooh [22:52] Tobsn: i get it... [22:52] Tobsn: its just a lookup list [22:52] qschzt: yeah [22:52] Tobsn: you add servers and with get and the key you get the positions [22:52] Tobsn: well [22:52] qschzt: yep, easy [22:53] Tobsn: or the possible positions haha [22:53] qschzt: nothing fancy, seems to work .. [22:54] qschzt: i don't really understand why you would use a memcached pool [22:55] Tobsn: for sessions for example [22:55] Tobsn: or any other stuff where you need redundancy [22:55] Tobsn: for example in the cloud [22:55] Tobsn: i had a project that had tons of traffic [22:55] Tobsn: 4000+ req/sec [22:55] Tobsn: we started it off on rackspace [22:55] Tobsn: rackspace cloud [22:55] Yuffster has joined the channel [22:55] Tobsn: but those tiny nodes die often so we set up 6 servers with a redundancy of 2 [22:56] Tobsn: that was rock stable and very fast [22:56] qschzt: sure but if you lost one of those buckets, very few would be any the wiser [22:56] Tobsn: hmm? [22:56] Tobsn: if you lose one its still written to another one [22:56] Tobsn: php has the pooling stuff build into the internal sessional handling [22:56] qschzt: right, is that actually in the memcached spec as you said? [22:56] Tobsn: so all you do is to set 6 servers as session storage [22:56] Tobsn: as far as i know the pooling part should be in the specification [22:58] qschzt: hmm oh well, afaik ketama solved the whole problem :) [22:58] freshtonic has joined the channel [22:59] jacoblyles has joined the channel [22:59] Tobsn: hu? [22:59] qschzt: and afaik you need to keep your own replicas in your own buckets.. anyway memcached is really important for node [22:59] Tobsn: ketama? [22:59] tpryme has joined the channel [23:00] Tobsn: http://www.php.net/manual/en/memcache.addserver.php [23:00] qschzt: eg. exactly for keeping session data across a load balanced node front end setup [23:00] Tobsn: thats the stuff you need ;) [23:00] Tobsn: and how/where/what did he/it solve? [23:00] JimBastard has joined the channel [23:01] Tobsn: oooh [23:01] Tobsn: libketama [23:01] qschzt: yessir [23:01] JimBastard: ACTION is watching ryah on the big screen :-D [23:01] JimBastard: huzaah! home at last! where i get to write javascript on the server [23:04] maqr has joined the channel [23:07] Tobsn: im just gonna convert flexihash to javascript [23:07] Tobsn: to lern the internals a bit better ;) [23:07] Tobsn: is there some sort of programmers guide to write modules for nodejs? [23:07] JimBastard: me [23:07] qschzt: Tobsn, yeah that's a good idea [23:07] jbrantly: creationix: yes [23:08] creationix: jbrantly: have a link? [23:08] jbrantly: creationix: no, but I could maybe throw up a gist. It doesn't do zlib compression though. [23:08] Tobsn: so you need to do the function Name() { this.declaredVars = type; } and than Name.prototype = { function: function() {} } [23:08] JimBastard: ewwwwno [23:08] JimBastard: Tobsn: i got some links for examples, one sec [23:09] Tobsn: thanks ;) [23:09] rsms has joined the channel [23:09] Tobsn: (just looked into that Chasm example from qschzt) [23:09] Tobsn: ;) [23:09] reid\work has joined the channel [23:09] khug has joined the channel [23:09] qschzt: :D [23:09] JimBastard: http://github.com/Marak/say.js/blob/master/say.js [23:09] JimBastard: thats a really simple one [23:09] JimBastard: does that help? [23:09] Tobsn: nope [23:09] Tobsn: var say = exports ?! [23:10] qschzt: Tobsn, this == exports [23:10] Tobsn: ?! [23:10] qschzt: yeah. [23:10] JimBastard: ? [23:10] Tobsn: thats what i mean with i have to lern the internal stuff first haha [23:10] hassox has joined the channel [23:10] reid\work: Any vows devs around? I'm trying to figure out what Suite's options.error flag is supposed to do. [23:10] Tobsn: JimBastard, i wouldve just done it like: http://pastie.org/1066310 [23:10] JimBastard: http://github.com/Marak/node_hash/blob/master/lib/hash.js [23:11] qschzt: Tobsn, within a module, you can write either this.varname = function() {} or exports.varname = function() {} [23:11] JimBastard: prototype is for newfags [23:11] Tobsn: JimBastard, i need like an example of declaring a class/object and than adding functions to that object and so on [23:11] JimBastard: whats a class [23:11] Tobsn: exports === this? [23:11] Tobsn: well object [23:11] qschzt: Tobsn, the vars you define without exports or this, are local [23:11] qschzt: to the module [23:11] Tobsn: so whats the not newfags way? [23:12] robotarmy: what's wrong with prototype ? [23:12] Tobsn: lol. [23:12] JimBastard: Tobsn: http://eloquentjavascript.net/contents.html [23:12] qschzt: Tobsn, http://nodejs.org/api.html#modules-309 [23:12] mde: Tobsn: Here are some ways to do inheritance: http://gist.github.com/439523 [23:12] JimBastard: i did 7 years of js programming without ever having to type the word "prototype" [23:12] bradleymeck_: jim, http://github.com/bmeck/node-jsonparser/blob/master/toObject.js, <- break it for me [23:13] JimBastard: only thing close was continuation monads, but that was a one time use i swear [23:13] mde: Just use shallow inheritance and mixins, it's pretty simple. [23:13] robotarmy: JimBastard: the link you posted uses prototype [23:13] JimBastard: robotarmy: ive been writing js for 10 years [23:13] robotarmy: JimBastard: that isn't an argument. [23:14] Tobsn: well but how do i have an object with different functions nodejs ready as module? [23:14] jbrantly: creationix: http://gist.github.com/499486 [23:14] JimBastard: Tobsn: its import / export [23:14] JimBastard: Tobsn: you export methods you want public on your module [23:14] creationix: jbrantly: thanks [23:14] jbrantly: creationix: if you actually need good code I could clean it up for you and make a test page. What's this for? [23:14] JimBastard: then you import it using a require() statement [23:14] JimBastard: bradleymeck_: will check out later tonight [23:14] benburkert has joined the channel [23:14] Tobsn: how do you state export? [23:14] JimBastard: exports.foo [23:14] creationix: jbrantly: curiosity [23:15] creationix: I'm always trying to push what pure js can do [23:15] JimBastard: exports exists automatically [23:15] bradleymeck_: jim, without ephemerons prototype is dangerous, and even then the calls take 2 lookups if you want actually hidden things [23:15] qschzt: haha [23:15] JimBastard: bradleymeck_: so im not a complete retard for not using prototype for 7 years? [23:15] bradleymeck_: no you are not [23:15] JimBastard: yaaa im only mildly retarded [23:15] bradleymeck_: by the power of this! i shall destroy your methods! [23:16] JimBastard: i have made way too many singletons in my life [23:16] mde: Oh, I was getting confused with prototype vs. Prototype. [23:16] qschzt: ok enough [23:16] josemoreira: http://zemanel.posterous.com/nodeknockout-900-to-go [23:17] mde: Using prototypal inheritance is great, just don't go meshuggah on the hierarchy. [23:17] jbrantly: creationix: it's insanely slow, even without compression. Probably only useful for icons and such. [23:17] bradleymeck_: anywho im off, there are too many things to think about to generalize one way being the way to go [23:17] Tobsn: JimBastard, but everyone is using prototype [23:17] qschzt: Tobsn, the best of luck ;) [23:17] Tobsn: lol [23:17] creationix: jbrantly: yeah, that usually the problem [23:18] jbrantly: although I think most of the issue is with arrays. Might have better performance with Buffers :) [23:18] bradleymeck_: tobsn i rarely use it, the fact that my variables that are system specific are exposed if i do bothers me [23:18] bradleymeck_ has left the channel [23:19] Tobsn: well but whats a good example for the opposite? [23:19] mde: Tobsn: I included a mixin example on that gist. [23:19] mde: That's another way to reuse functionality. [23:19] Tobsn: just declaring var ModuleName = function() { var doSomething = function(){} } [23:19] Tobsn: ? [23:19] Tobsn: and thatn export it at the end?! [23:19] marshall_law has joined the channel [23:19] JimBastard: Tobsn: all joking aside, there are actually a ton of ways to do anything in javascript. if you really want to use prototypical inheritance, its fine. just remember its not a requirement.... [23:20] mde: You can create some object in your module, hang some methods and properties off it, and then export it. [23:20] Tobsn: how do you export correctly? [23:20] mde: Then when you import it, it's just an object with stuff on it, and you can mix them into other objects. [23:20] robotarmy: I know a fellow that only types with 2 fingers - been doing that for 10 years. [23:20] Tobsn: i saw various ways [23:21] maushu has joined the channel [23:21] mde: Depends on what you're doing. [23:21] Tobsn: robotarmy, his name is juan? [23:21] robotarmy: Tobsn: nope - but it works for him [23:21] mde: If you're exporing a constructor, you can do exports.MyConstructor = MyConstructor; or whatever. [23:21] Tobsn: well there is for example longpollingbuffer example script [23:21] Tobsn: exports['LongPollingBuffer'] = LongPollingBuffer; [23:21] Tobsn: thats how that guy does it [23:22] mde: Not sure why he'd use string-key lookup like that. [23:22] robotarmy: same as .LongPollingBuffer [23:22] mde: Yeah, no reason to use strings like that unless it's dynamic. [23:22] Tobsn: so you just attach it to exports [23:22] mde: Or a reserved word or something. [23:22] mde: Exatly. [23:23] Tobsn: okay [23:23] mde: Or you can export an entire thing wholesale by doing ... [23:23] mde: module.exports = myExportObject; [23:23] Tobsn: well let me try it with that var ObjectName = function() { var method = function() {} } way [23:23] creationix: I need help with chunking strategy [23:23] creationix: who's got experience with that? [23:23] Tobsn: i like em skinny, sorry. [23:23] mde: I'm off for a run. Y'all have fun. :) [23:23] Tobsn: ;) [23:24] creationix: mjr_: you busy? [23:24] mjr_: hey [23:24] ryan_gahl has joined the channel [23:24] ryan_gahl: yo, room [23:24] Tobsn: lol [23:25] creationix: I'm trying to figure if it's better to reuse a single buffer over and over, and then only create line buffers once I know the line length (this reading the file twice) or creating a new buffer for each chunk and only reading the file once [23:25] mjr_: creationix: what's the context? [23:25] dshaw has joined the channel [23:25] creationix: mjr_: just trying to find the fastest way to read a file from disk and emit line events as buffers [23:26] mjr_: hmm [23:26] creationix: I've got a super fast loop that reuses chunks and buffers nothing, but it only emits offsets [23:26] mjr_: I would guess that statting the file, then getting one giant buffer. [23:26] robotarmy: creationix: benchmarek both [23:26] josemoreira: cant decide what web server module to use [23:26] pquerna: you will want to slice [23:26] creationix: I'd have to re-read from the disk [23:26] pquerna: read once [23:26] pquerna: and use buffer.slice [23:26] pquerna: from a larger buffer [23:26] mjr_: yeah, emitting slices against the single giant buffer seems like it should win [23:27] mjr_: avoid malloc at all costs [23:27] creationix: except my lines can sometimes be very large [23:27] khug has left the channel [23:27] creationix: many megabytes long [23:27] pquerna: define large [23:27] mjr_: how do lines come into this? [23:27] pquerna: that sucks [23:27] creationix: hundreds eeven [23:27] ryan_gahl: wtf?? [23:27] pquerna: hundreds of mb large? [23:27] creationix: not likely, but can happen [23:27] pquerna: well, you can build code that handles that [23:27] pquerna: it will just be expensive either way [23:27] pquerna: if I was doing that, I would implement a file buffer [23:27] pquerna: that had offsets inside the file [23:27] ryan_gahl: BOF -- hi, this is a file\r\n PORNPORNPORNPORN.......\r\n ?? [23:28] creationix: is the os likely to cache the file read if it read it twice in a row [23:28] pquerna: and you would emit a FileBuffer object [23:28] pquerna: but you would still read once in the scanning part [23:28] mjr_: are you trying to keep the entire file in memory, or do you want just certain "lines" in memory? [23:28] creationix: and in my specific case I only need about the last 50 bytes of a line in the line event [23:29] creationix: (It's for nStore) [23:29] mjr_: oh man, imagine a future world where we have a binding to mmap, and you can emit Buffer slices directly against mapped memory. [23:29] ryan_gahl: can you have a seperate metadata file to note the locations of line endings on file-write, and random access it? [23:29] ben_alman has joined the channel [23:30] creationix: ryan_gahl: I'd rather not have two files, it's hard enough keeping one consitent [23:30] ryan_gahl: just a thought [23:30] creationix: I guess for my case since I only need a subset of the actual data, it's better to read twice [23:31] creationix: I don't even need a buffer since I'm JSON.parse()ing it [23:31] ryan_gahl: 100s of megabytes per line, of JSON data? [23:31] ryan_gahl: groovy [23:31] creationix: yep, each line is {doc}\t{meta}\n [23:31] ryan_gahl: oh i'm sorry... it's for nStore [23:32] ryan_gahl: gotcha [23:32] creationix: not the best format I know, but it works great [23:32] creationix: but doc can be huge [23:32] ryan_gahl: right [23:32] ryan_gahl: and uncompacted i assume [23:32] creationix: of course [23:32] creationix: hd is faster than compression in js [23:33] ryan_gahl: but how about storing as msgpack or something smaller than json? [23:33] creationix: ryan_gahl: well, that would be great, except nStore isn't allowed to have non-node dependencies [23:33] creationix: a msgpack version of nStore would be rad [23:33] ryan_gahl: anyway, yeah, that's all separate discussion [23:34] JustinCampbell has joined the channel [23:34] creationix: ok, so assuming I first scan the file not storing anything except for offsets of \t and \n [23:34] JustinCampbell: I have a question regarding callbacks and functions [23:34] creationix: then I read the meta sections once I know their sizes and offsets [23:35] creationix: should I fire all the reads at once and let the os handle the order they happen, or only fire the reads in serial [23:35] creationix: JustinCampbell: what's that? [23:35] JustinCampbell: I have a large function that needs to hit the database (redis) several times and make decisions based on the results [23:36] ryan_gahl: sorry, another non-answer... can you swap it so it's {meta}\t{doc}\n? [23:36] JustinCampbell: So I'd like to wait for all the callbacks to fire before proceeding [23:36] creationix: ryan_gahl: how would that help? [23:36] creationix: JustinCampbell: http://github.com/creationix/step [23:36] creationix: JustinCampbell: I made a library just for that :) [23:36] ryan_gahl: then your offset to meta == 0 every time [23:36] ryan_gahl: or is that not the issue [23:37] mitkok has joined the channel [23:37] creationix: ryan_gahl: yeah, not really an issue [23:37] ryan_gahl: kk [23:37] JustinCampbell_ has joined the channel [23:37] creationix: I don't think the order matters. Before it was easier for the key to be on the end, but if I read the file twice, then it doesn't matter [23:37] JustinCampbell_: Sorry for spelling I'm on iPhone [23:38] bradleyprice has joined the channel [23:38] bradleyprice has left the channel [23:38] bradleyprice has joined the channel [23:38] creationix: JustinCampbell: did you get my response? [23:38] JustinCampbell_: Nope sorry [23:39] creationix: JustinCampbell_: http://github.com/creationix/step [23:39] creationix: I made it just for that use case [23:39] JustinCampbell_: Awesome I'll check it out! [23:39] lachlanhardy has joined the channel [23:39] JustinCampbell_: I'll come back when I'm on wifi [23:39] creationix: mjr_: pquerna: assuming I come back later and read only parts of the file, should I send those reads in parallel or serially? [23:39] ryan_gahl: JustinCampbell_: posting a gist of another possible solution [23:39] ryan_gahl: oops [23:39] ryan_gahl: nevermind [23:40] ryan_gahl: he'gone [23:40] mjr_: creationix: I'm not sure what the best way to do disk IO in node is. pquerna and you have done a lot more work on that than I have. [23:41] creationix: right now I'm using blocking I/O and it's horribly slow [23:41] creationix: I want to make it a little more parallel [23:41] creationix: (this is just for startup, reading the data file and populating the index) [23:41] [[zz]] has joined the channel [23:42] freshtonic has joined the channel [23:43] mjr_: creationix: sorry, I don't know what the best way to do that is. When you are seeking around, sometimes the IO scheduler in the OS can help you, and sometimes it works against you. [23:43] mjr_: But I think this has more to do with node and libeio at the moment. [23:43] creationix: mjr_: and benchmarking isn't going to help me much, I have SSD [23:43] Tobsn: is there a list of all hashing algos crypt has? [23:44] creationix: ok, I'll just make it all parallel and hope it works out [23:44] mjr_: creationix: yeah, might as well. [23:44] creationix: but re-reading the chunk I just read should make it likely to be in the disk cache [23:44] _announcer: Twitter: "I'll spend all of the next days hacking with #nodejs!" -- Amr Numan Tamimi. http://twitter.com/amrnt/status/19864729628 [23:44] creationix: most hard-drives have fairly large read caches [23:45] Tobsn: well turn off atime and use raid5 :P [23:46] mjr_: not to mention the operating system [23:46] tmpvar: ryah, nice talk man [23:47] mattly has joined the channel [23:49] ryah: thx [23:49] mtodd_ has joined the channel [23:50] ryah: creationix: i think you should send them parallelly [23:50] ryah: creationix: file systems are smart [23:50] ryah: assume it will optimize [23:50] creationix: cool [23:51] creationix: nStore has potential if I can make it rock solid and fast [23:51] creationix: and node's libraries make it almost trivial to make it network aware [23:52] paul_irish has joined the channel [23:52] paul_irish: mape: http://www.youtube.com/watch?v=F6k8lTrAE2g [23:52] sveisvei: ryah: comming back to jsconf.eu this year :)? [23:52] ryah: yes [23:52] mape: paul_irish: jup? :) [23:53] sveisvei: ryah: Cool, Ill buy you a beer :P [23:53] _announcer: Twitter: "#plan Node.js Knockout (Anywhere!) Aug 28-29, 2010 http://planca.st/5rH" -- Daniel Shaw. http://twitter.com/dshaw/status/19865258782 [23:53] paul_irish: you wanted a stream (i think). here's the recorded version [23:53] mape: paul_irish: First one to tweet it: http://nodejs.se/ ;) [23:53] ryah: sveisvei: excellent [23:53] paul_irish: mape: i'm slooow [23:53] ryah: i like free beer [23:53] mape: paul_irish: Thanks anyway though [23:56] ashleydev: ryah: how did the clang build go? [23:58] creationix: bleh, still slow as frozen honey [23:58] creationix: it takes 3 seconds to initialize a 2.7mb database [23:59] pquerna: how parallel / big are your io requests? [23:59] creationix: it's only got 27k rows [23:59] creationix: oh, right, I had it at 10 bytes for testing [23:59] creationix: thanks [23:59] creationix: what's a good size 1024 bytes? [23:59] pquerna: ideally, you'd want to do like 40kb reads [23:59] creationix: ok, 1 second [23:59] creationix: that helped some [23:59] mape: creationix: testing on mine?