[00:01] creationix: tjholowaychuk: got it, now to see if -H really works [00:01] creationix: yep, http://205.186.162.126/ and http://205.186.160.54/ are the same machine [00:02] creationix: but only one serves the site [00:02] kersny has joined the channel [00:02] tjholowaychuk: shit who was the guy just talking about expresso [00:02] creationix: tjholowaychuk: think we should add an ssl example [00:02] tjholowaychuk: I need to stop clearing the log [00:02] tjholowaychuk: probably not a bad idea [00:02] mau2 has joined the channel [00:03] mattly has joined the channel [00:03] creationix: does anybody remember that 10 line ssl example for node, it included 3 lines to generate a key real easy [00:04] tjholowaychuk: pquerna: pushed the callback change [00:04] creationix: found it http://www.silassewell.com/blog/2010/06/03/node-js-https-ssl-server-example/ [00:04] beelzabub1: hey ryah: i get EAGAIN sometimes for reading from stdin from the forked process [00:04] beelzabub1: rather, not reading. they're just spurios [00:05] beelzabub1: so how can that happen if stdin is being polled? [00:05] beelzabub1: or is it not? [00:09] ericvkng has joined the channel [00:10] kevm_ has joined the channel [00:10] creationix: Astro: I can't seem to get an ssl example working [00:10] creationix: can you include an example in the examples folder with an embedde self-signed cert [00:11] amerine has joined the channel [00:13] bpot has joined the channel [00:14] _frankie has joined the channel [00:14] ceej: creationix: quick question.... any plans on integrating coffee into connect? so you could do connect server.js --coffee ? [00:15] mklappstuhl has joined the channel [00:15] creationix: ceej: no, how would that work? [00:16] ceej: well you know coffee script has node.js integration so you can start node by doing coffee server.coffee [00:16] sechrist has joined the channel [00:17] ceej: so then it looks for .coffee files and compiles to js before running [00:17] joshbuddy has joined the channel [00:17] creationix: ceej: maybe [00:17] _announcer: Twitter: "Run Node.js as a Service on Ubuntu Karmic http://bit.ly/7x2C1C - excellent post by @kvz" -- Xavier Damman. http://twitter.com/xdamman/status/18559726016 [00:17] ceej: It would be a really nice feature ;) [00:17] creationix: ceej: sign the CLA and send a patch [00:20] ceej: creationix: where's the CLA at? [00:20] creationix: http://wiki.github.com/extjs/Connect/ [00:20] creationix: near the bottom [00:21] ceej: ah i see it I'll try and get it to you this week/weekend [00:21] creationix: ceej: so is the coffeescript community still going strong? [00:22] Astro: creationix: you should send such issues via mail or xmpp, they're too easy to miss on irc [00:22] Dmitry2: isn’t coffeescript just a toy/experiment? [00:22] creationix: Astro: I just sent one via github [00:22] creationix: Dmitry2: isn [00:22] creationix: Dmitry2: isn't node too ? [00:23] ceej: creationix: ye it appears to be still going strong :) [00:23] creationix: Dmitry2: the only real problem I see with coffeescript is that line numbers in exceptions match up to the invisible generated js [00:23] creationix: otherwise it's pretty powerful as a pre-processor for js [00:23] Dmitry2: creationix: Oh, I see more problems, but it’s just me. [00:23] ceej: creationix: ye that's very true [00:24] creationix: otherwise I'd be making my own version of coffeescript [00:25] mostlygeek has joined the channel [00:26] Dmitry2: Lets put it like this: both node and CS are experiments, but I see point in node and don’t see point in CS. Just saying and it’s just me. [00:26] sechrist has joined the channel [00:26] creationix: Dmitry2: no problem, I understand [00:26] creationix: I mean my job is to make node mature enough for businesses to use [00:26] ryah: creationix: revert uid - no, i don't think so [00:27] creationix: ryah: I can make a simple test case if you want [00:27] ryah: does it? [00:27] creationix: ryah: if I set the uid here http://github.com/extjs/Connect/blob/master/bin/connect#L446 [00:27] mikeal has joined the channel [00:28] creationix: then the child process created afterwards has the new uid, but the parent process has the old one [00:28] creationix: so as a workaround, I call it again here http://github.com/extjs/Connect/blob/master/bin/connect#L488 [00:28] creationix: and then the parent and child both have the new uid [00:29] creationix: I'm not 100% sure it's related to the child process, but I don't know what else might do that [00:29] _announcer: Twitter: "Reading up on Node.js after learning about the new framework in the works for EMU Marketing. Very neat indeed. http://bit.ly/5ERLAy" -- Ivar Vong. http://twitter.com/ivong/status/18560455595 [00:29] jakehow has joined the channel [00:30] creationix: maybe netBinding.socketpair [00:30] sh1mmer has joined the channel [00:30] Dmitry2: creationix: The only problem for node from my perspective is how to use it on regular hosting… :( [00:31] creationix: Dmitry2: I think node shared hosting like what heroku is trying will eventually take off [00:31] Dmitry2: creationix: I agree, but I can’t wait :) [00:33] satori: Whats the best way to include tests with an addon? Add a git submodule for testing? or doing something like node does? (with python?) [00:34] _announcer: Twitter: "Really want to play with Node.js and Hadoop (seperately)" -- Ben Humphreys. http://twitter.com/benhumphreys/status/18560791980 [00:38] mscdex: heroku needs to update their node version :S [00:38] creationix: satori: I usually include the tests in a /test folder [00:38] creationix: but and dependencies that only the test needs I put in submodules [00:38] creationix: *any [00:39] creationix: http://github.com/extjs/Connect/tree/master/test/ http://github.com/extjs/Connect/tree/master/support/ [00:39] satori: thx. [00:40] pquerna: the behavoir of the http request objects with sys.pump kinda sucks [00:40] pquerna: http://github.com/cloudkick/cast/blob/master/lib/services/http/bundles.js#L67 [00:41] pquerna: i catch the end, and then emit close myself, so that sys.pump keeps moving [00:42] figital has joined the channel [00:43] davidwalsh has joined the channel [00:44] creationix: isaacs: hmm, problem with naming my binary "ivy" [00:44] creationix: executables like "connect" and "wheat" have #!/bin/env node [00:45] creationix: ruby gems gets around this by creating proxy executables [00:47] _announcer: Twitter: "[Js popularity Info] The MongoDB NoSQL Database Blog - Node.js and MongoDB http://bit.ly/9gTKcQ # javascript" [ja] -- jsMagazine. http://twitter.com/jsMagazine/status/18561566993 [00:51] _announcer: Twitter: "@unscene how are you liking node.js? where are you hosting it?" -- Eric Marden. http://twitter.com/xentek/status/18561835418 [00:52] aliem has joined the channel [00:55] mape: mscdex: have a sec to test something? [00:55] mscdex: mape: what's that? [00:56] mape: mscdex: need someone to test something [00:56] mscdex: sure [00:56] Astro: creationix: http://github.com/astro/Connect/commit/fc966c6fa095c98d7eed60055b58af4cfafe770e [00:56] mape: mscdex: if you try http://mape.me:1338/ with a browser that handles websockets [00:57] mape: mscdex: works? [00:57] creationix: Astro: nice [00:57] _announcer: Twitter: "Why you playing with node.js. Bed. ." [ja] -- Masatomo Nakano. http://twitter.com/masatomon/status/18562194503 [00:57] mscdex: how do i determine if it's "working" ? [00:57] Astro: mape: this is pure awesome [00:57] mape: you should see a cursor [00:57] mape: and the thing move around [00:57] mape: well gues it does :P [00:58] _announcer: Twitter: "Reading about @stouset watching @seebq watching @mtodd present on node.js at #ATLRUG" -- Mark Percival. http://twitter.com/mdp/status/18562266197 [00:58] mscdex: yeah [00:58] mscdex: it works [00:59] mape: Could be an interesting idea [00:59] mscdex: nodeknockout! [01:00] mscdex: :P [01:00] mape: But I already started it [01:00] mscdex: oh [01:00] Astro: mape: does it transmit selections? [01:00] mape: Astro: nothing like that yet, just mouseposition, scroll and eventually resize [01:00] mscdex: could be useful for usability testing [01:01] mape: mscdex: Yeah that is what I'm thinking [01:03] aheckmann has joined the channel [01:08] creationix: Astro: I fixed a bug in "connect" is how says https when using ssl [01:08] creationix: thanks for the example [01:08] bradleymeck: map which websocket service are you using? [01:08] bradleymeck: mape* [01:09] mape: bradleymeck: micheils [01:09] rauchg_ has joined the channel [01:09] bradleymeck: mmmm cant seem to get it to work on my ubu still [01:09] bradleymeck: works on mac though [01:09] bradleymeck: micheils, your site works though [01:11] _announcer: Twitter: "@unscene heroku is where I put all my sinatra.rb experiments. will need to play with node.js soon. everyone who uses it seems to love it." -- Eric Marden. http://twitter.com/xentek/status/18563063112 [01:12] dgathright has joined the channel [01:13] mape: There we go, resizing works [01:14] pquerna: tj gone? [01:14] pquerna: hmph. [01:16] victorstan has joined the channel [01:16] victorstan has left the channel [01:19] zomgbie has joined the channel [01:20] maushu has joined the channel [01:20] ctp has joined the channel [01:21] creationix: pquerna: connect or expresso? [01:24] benburkert has joined the channel [01:28] hassox: creationix: got a few minutes to talk about connect? [01:29] creationix: hassox: for a sec [01:29] hassox: so, when I'm setting up the error handler in the createServer [01:30] hassox: the exceptions aren't caught automatically for throws in a callback are they? [01:30] mql_ has joined the channel [01:30] ditesh|cassini has joined the channel [01:32] creationix: no, errors have to be passed to the next() handler [01:32] _announcer: Twitter: "Making a chat server with node.js to play with it. Anybody know how it benchmarks against EventMachine?" -- Josh Lindsey. http://twitter.com/lesmothian/status/18564463251 [01:33] _announcer: Twitter: "http://tinyurl.com/2dobwsk The MongoDB NoSQL Database Blog - Node.js and MongoDB" -- so_white. http://twitter.com/so_white/status/18564485163 [01:33] bradleymeck: mmmm does http.createServer on ubu just fail? [01:33] pquerna: creationix: expresso. [01:34] pquerna: creationix: i think it would be nice if assert.response also had a timeout: 20 shortcut [01:34] creationix: pquerna: ok, then I can't help much, sorry [01:35] Wandrewvious has joined the channel [01:37] deanlandolt_home has joined the channel [01:37] deanlandolt_home has left the channel [01:38] hassox: creationix: kk [01:38] hassox: creationix: so, is next() the only way to move down the stack? [01:38] creationix: hassox: correct [01:38] hassox: I mean, if a bit of middleware responds with a 404, does it try the next one or just return it [01:39] _announcer: Twitter: "@xentek Yeah. It's for an internal (personal) project, but it's OSS. node.js server, Cocoa client, web admin (think native campfire)." -- Josh Lindsey. http://twitter.com/lesmothian/status/18564862007 [01:39] creationix: hassox: you call next with no parameters [01:39] hassox: kk [01:39] hassox: that makes more sense [01:39] hassox: I thought there must've been some kind of magic going on [01:39] creationix: that way it can fall through to another layer that knows how to serve the url [01:39] hassox: good to know there's not ;) [01:39] hassox: so [01:39] hassox: if my middleware matches because I set it up to match on "/" [01:40] hassox: then it calls next to move on [01:40] hassox: kk that makes sense [01:40] hassox: congrats btw... [01:40] hassox: connect seems really nice so far :D [01:40] saikat has joined the channel [01:40] creationix: hassox: thanks, I'm trying to get it ready for a 1.0 release [01:40] creationix: it's getting close I think [01:43] sh1mmer has joined the channel [01:46] isaacs: ryah: so, it wasn't a 5-line patch. more like a 77-line patch. [01:46] isaacs: but still, fairly minimal. [01:46] isaacs: not a whole-hog rewrite of module.js [01:47] ncb000gt has joined the channel [01:47] SamuraiJack has joined the channel [01:52] mape: So http://mape.me:1338/ now works with cursor, scrolling, resizing and indicates when the user clicks.. Is there any way of capturing text selection when the content isn't in a textarea? [01:52] creationix has joined the channel [01:52] mattly has joined the channel [01:54] _announcer: Twitter: "Video: interesting video of dudes talking about the design and api for node.js http://tumblr.com/xgcdg5zia" -- Craig W. http://twitter.com/mind_scratch/status/18565827052 [01:54] chilts: mape: that's cool ... though I'm not sure what it's doing :) [01:54] mape: chilts: Imagine you have a site and you need to user test it, instead of having people tell you how they user your site you can just drop this script in and view then real time [01:55] chilts: heh, cool [01:55] chilts: so is that _your_ cursor I'm seeing? [01:55] mape: yeah [01:55] chilts: heheh [01:55] chilts: awesome [01:55] chilts: I can spy on you [01:55] mape: yup [01:56] chilts: if it could show you my cursor and the next person all of our cursors, that would be nuts [01:56] mape: Should be easy enough [01:56] chilts: :) [01:56] mape: Like remote help? [01:56] chilts: yeah, I guess that would be a good implementation [01:57] chilts: heh [01:57] chilts: so my Mum could go to a site and then click her Bookmarklet (Create new cursor session) ... [01:57] ncb000gt: mape: have you seen Tealeaf? [01:57] chilts: then tell me the cursor ID [01:57] mape: ncb000gt: nope? [01:57] chilts: and I load it in and see what she's doing [01:57] chilts: and she could see my cursor too [01:58] ncb000gt: it's an interesting product...records sessions and such including mouse clicks [01:58] mape: but not real time? [01:58] chilts: real time is the killer [01:58] ncb000gt: so you can see where in the shopping cart the session died and such [01:58] chilts: then I can be on the phone or Skype to her too [01:58] ncb000gt: I'm not sure, I think it depends [01:59] chilts: because when I say things like "see the link in the top corner" she never sees it, her eyes don't match things on the screen [01:59] ncb000gt: well, tealeaf is for company sites [01:59] beelzabub1: anyone think it's a bug that createServer attaches to the event loop instead of listen? [01:59] victorstan has joined the channel [02:00] beelzabub1: sorry - i meant openStdin [02:00] mape: ncb000gt: That is what I imagine this would be used for as well, user testing newly released projects [02:00] rgl has joined the channel [02:00] benburkert has joined the channel [02:01] mape: Or just to get a feel of how users are using the site [02:01] mape: Since it is only a matter of dropping in a script it is really easy to get going [02:02] ncb000gt: mape: that's cool, and i'm sure it'd be useful [02:02] ncb000gt: Tealeaf is a touch on the expensive side [02:02] ncb000gt: :) [02:02] mape: Good enough for 3h coding [02:02] ncb000gt: haha yea [02:03] mape: But then again it lacks tons of features, but fun idea [02:03] ncb000gt: waye [02:03] ncb000gt: aye* [02:04] sh1mmer has joined the channel [02:05] bradleymeck: ugg cygwin works mac os work, ubuntu fails [02:05] stephenlb has joined the channel [02:05] victorstan: which ubuntu? [02:06] bradleymeck: 10.04 up to date [02:06] victorstan: bradleymeck: are you trying to install on ubuntu 64 bit? [02:06] bradleymeck: ubu 32 [02:07] victorstan: do you have build-essential [02:07] victorstan: installed? [02:07] victorstan: u can use packagemanager [02:07] mape: Hmm Peter Sunde using node [02:08] bradleymeck: says it is at current version [02:08] victorstan: lib32stdc++6 [02:08] victorstan: also with packagemanager [02:09] bradleymeck: yub on ubu's synaptic version [02:09] victorstan: are you getting permission errors? [02:10] bradleymeck: unless node is hiding them, no [02:10] victorstan: hmm, I think that's as far as i can go... those were the problems i had. but i got working in the end (64 bit) [02:10] _announcer: Twitter: "@nicklovescode is brewing up some node.js goodness :)" -- Scott Fitchet. http://twitter.com/figital/status/18566913518 [02:10] bradleymeck: odd [02:11] bradleymeck: i think the upgrade event is borked somehow [02:12] satori has joined the channel [02:13] victorstan: does node rely on python? [02:13] satori: only for building [02:13] satori: via waf [02:14] victorstan: k [02:17] _announcer: Twitter: "Great article on understanding node.js: http://bit.ly/cWxX5S" -- Rob Raux. http://twitter.com/rob_raux/status/18567336378 [02:18] _announcer: Twitter: "blog wrote: node.js reverse proxy in writing - http://bit.ly/c15SkZ" [ja] -- FUJIWARA Shunichiro. http://twitter.com/fujiwara/status/18567387828 [02:20] WALoeIII has joined the channel [02:20] jherdman has joined the channel [02:24] bpot has joined the channel [02:29] _announcer: Twitter: "And after a day full of RoR, I'm hacking on some #nodejs code. Love. It." -- Srdjan Pejic. http://twitter.com/batasrki/status/18568091490 [02:29] dnolen has joined the channel [02:31] blaines has joined the channel [02:33] ditesh|cassini has joined the channel [02:38] SubStack: ACTION doesn't understand why people like rails [02:38] victorstan: what do you like ;) [02:38] SubStack: node.js of course! [02:38] victorstan: lol [02:38] SubStack: little tiny web servers like sinatra are fun times [02:39] victorstan: Rails is everything and kitchen sinc and it makes large and hard to maintan web app easier than anything else i saw out there... [02:39] SubStack: they don't prescribe how your files should be laid out [02:39] victorstan: yeah, you ever try to fix anyone else 'nonprescribed app? [02:39] tmpvar has joined the channel [02:40] blaines has joined the channel [02:40] SubStack: victorstan: just because some (even lots) of people do it wrong doesn't mean that I shouldn't be free to do it right [02:40] victorstan: lol no [02:40] victorstan: and rails does it right as well [02:40] SubStack: for some applications it does [02:40] dnolen has joined the channel [02:41] SubStack: I don't write the sorts of applications where rails is the right model [02:41] victorstan: sure :) for some applications, just like anything [02:41] victorstan: but you can understand how it *can* be the right model right? [02:41] dgathright has joined the channel [02:43] SubStack: it can be the right model, but its lack of flexibility with regards to other ways of approaching the problem turns me off [02:43] SubStack: this is a common problem with 'frameworks' [02:43] victorstan: well then, you just contradicted your first point :) [02:44] SubStack: did I? [02:44] blaines has joined the channel [02:44] victorstan: I don't know, maybe? can you really not understand why people like Rails? Or can you just not understand how you would like Rails? [02:44] SubStack: an inflexible solution even when applied to a problem it was designed for still seems inferior to a flexible one [02:45] victorstan: Im pretty sure its not written in stone [02:45] SubStack: at the very least aesthetically [02:46] SubStack: victorstan: Is there a difference? We understand the intentions of others by imagining ourselves in their places. [02:48] victorstan: sure you can imagine yourself in person A's shoes and its ok to use Rails, even the best choice, and you can see yourself in your own shoes, where its not ok to use Rails (assuming you're working on a project in which that is the case) [02:51] blaines has joined the channel [02:52] ditesh|cassini has joined the channel [03:07] benburkert has joined the channel [03:11] malkomalko has joined the channel [03:12] blaines has joined the channel [03:12] eisd_ has joined the channel [03:13] eisd_: do timers drift in node.js/v8 like they do with dom timers? [03:15] steadicat has joined the channel [03:15] malkomalko: challah! [03:16] blaines has joined the channel [03:19] mape: eisd_: drift? [03:19] eisd_: mape: yes, dom timers drift. setInterval(function(){}, 1000) doesn't run every 1000ms. after a while it becomes 1001ms, 1002ms, etc. [03:20] mape: ah k [03:20] mape: well I would imagine that could happen if you call a setTimeout in a setTimeout but not with an interval? [03:21] eisd_: IIRC, I think that happens with both [03:21] eisd_: inimino: ping [03:21] mape: hmm k [03:24] inimino: eisd_ ⋱ pong [03:24] eisd_: inimino: do you know anything about node.js/v8 timers vs dom timers? [03:24] inimino: hm... [03:25] eisd_: iirc, I think you were the only other person that pointed this out at #javascript [03:25] inimino: ah [03:25] inimino: I don't know much about V8's timer, but I'm sure it is not perfectly accurate [03:26] inimino: I would guess it's the same as in Chrome [03:27] eisd_: hmph, might as well run a test and use timers for a "clock" [03:27] eisd_: Right, that's what I was thinking [03:28] inimino: Mozilla provides the delay as an argument to the callback function [03:28] aaronj1335 has joined the channel [03:28] inimino: I don't know if V8 does the same but haven't heard anything about it if so [03:28] eisd_: interesting...didn't know about the delay being an argument [03:31] _announcer: Twitter: "reverse proxy in writing node.js - Hatena Diary liquor branch http://htn.to/vqygh3" [ja] -- kamipo. http://twitter.com/kamipo/status/18572235700 [03:34] ncb000gt: pkrumins: hey yt? [03:39] isaacs has joined the channel [03:41] eisd_: inimino: just checked, and v8 does not pass any arguments to the callback function [03:41] gb|str has joined the channel [03:42] softdrink has joined the channel [03:43] inimino: eisd_: not too surprising... you'll probably want to create Date objects and keep track of the true elapsed time then. [03:44] jedschmidt has joined the channel [03:47] liucougar has joined the channel [03:50] kodisha has joined the channel [03:52] PyroPeter has joined the channel [03:53] satori: ACTION likes expresso. Perfect for build tests. [03:54] huyhong has joined the channel [03:57] benburkert has joined the channel [03:57] sdgvf has joined the channel [03:58] bpot has joined the channel [03:59] malkomalko: yah, I wanna try out expresso [03:59] SubStack: eisd_: a timer module on npm with proper scheduling would be nifty [04:00] benburkert has joined the channel [04:10] rauchg_ has left the channel [04:11] benburkert has joined the channel [04:12] jsilver has joined the channel [04:12] jsilver: whats up chan [04:12] jsilver: \m/ [04:13] satori: heya [04:13] ncb000gt: jsilver: howdy [04:13] jsilver: hihi [04:13] jsilver: whats happenin [04:14] khug has joined the channel [04:14] jsilver: im gonna make js2cs a little better tonight i think [04:14] jsilver: it's not 1:1 at all [04:14] jsilver: it turns var thing; into thing which turns into thing(); [04:14] jsilver: super bad [04:14] jsilver: it can be patched tho [04:15] jsilver: just like everything [04:15] jsilver: i'm gonna compile jQuery [04:15] jsilver: the magicness won't stop me [04:15] jsilver: at all [04:16] jsilver: jQuery's magicness is unrelated to the syntax of JS mostly (hopefully) [04:17] jsilver: if anyone knows differently, lemm kno [04:22] sechrist has joined the channel [04:25] Validatorian: isaacs: you around? [04:25] zapnap has joined the channel [04:27] Validatorian: nevermind [04:29] jsilver has joined the channel [04:30] xer0xM has joined the channel [04:31] isaacs: Validatorian: yo [04:31] isaacs: ACTION not ever minding [04:32] sechrist_ has joined the channel [04:32] dnolen has joined the channel [04:35] Validatorian: isaacs: I got it -- my script was using require('express/plugins');, which was breaking when I installed express with npm -- but turns out it's not needed ;) [04:35] aaronj1335 has joined the channel [04:36] hassox has joined the channel [04:37] creationix has joined the channel [04:39] sechrist has joined the channel [04:39] hassox has joined the channel [04:42] isaacs: Validatorian: i see [04:43] ditesh|cassini has joined the channel [04:43] chrischris has joined the channel [04:43] isaacs: Validatorian: i'd like to try to move folks away from doing require("pkg/submodule") as much as possible. [04:43] isaacs: Validatorian: which is to say, i'd like to try to encourage package authors to create a main module which is a sensible entry point to their application, so you do require("pkg").doSomethign [04:44] Validatorian: I've started creating links to the .js file in the .node_libraries folder [04:44] Validatorian: and have a separate folder for the git clone [04:45] isaacs: Validatorian: ... [04:45] isaacs: Validatorian: you realize that's what npm is specifically *for* right? [04:45] Validatorian: yes, but npm doesn't have all the modules I need... [04:45] isaacs: Validatorian: are there package.json files in those projects? can you download them and just to "npm install" in the root? [04:46] Validatorian: ,,, oh [04:46] sechrist has joined the channel [04:46] creationix: isaacs: like Connect.logger() and Connect.staticProvider() [04:46] creationix: ? [04:47] dneighman has joined the channel [04:47] isaacs: Validatorian: if there aren't package.json files, then you can create them, and send pull requests and help move them along into the future of their destiny! [04:47] isaacs: creationix: yeah, totally [04:47] Validatorian: isaacs: how is updating handled, then, when there's a new version of a module that npm doesn't have, that I installed with 'npm install' -- currently, I can just 'git pull' and it's done [04:48] isaacs: Validatorian: you can do "npm link" to link-install a folder [04:48] isaacs: Validatorian: then you git pull to update it in place, and it's dont [04:48] isaacs: *done [04:48] isaacs: i usually keep a link install of npm, in fact [04:48] creationix: Validatorian: I'm working out a way to make a version of NPM that plays nice with Ivy's git module based approach [04:49] creationix: isaacs: I didn't know about npm link [04:49] creationix: sounds like nvm linklib [04:49] isaacs: creationix: sure, but fewer characters ;P [04:49] isaacs: technically it's "npm link " but the defaults to "." [04:49] creationix: isaacs: what do you think about the ivy approach to packages? have you had a chance to look at it? [04:50] isaacs: creationix: no, i haven't [04:50] isaacs: creationix: i am wary about relying upon git as a requirement.s [04:50] Validatorian: well, I wish I would have known about npm link 2 hours ago when I was setting all this up again, for my production environment ;-P [04:50] Validatorian: thanks for the info, I'll redo it all soon [04:51] isaacs: Validatorian: you'll like what npm gives you this winter. [04:51] manveru: :) [04:51] Validatorian: do tell [04:51] isaacs: Validatorian: npm deploy [04:51] creationix: It's not finalized by any means, but my plan is that a person forks or clones Ivy, customizes the set of bundled modules and even the node version using git submodules [04:51] creationix: then they just clone their setup to the production server [04:51] isaacs: creationix: yeah, git's a powerful tool. you can definitely use it for a lot of things like that [04:51] creationix: and it's a self-contained environment [04:52] creationix: I eventually want a way to export a configured project as a single tarball [04:52] Validatorian: isaacs: A smart person would instinctively know what that would do... alas... what would npm deploy do for me? [04:52] manveru: btw, is there some kind of loadpath environment variable? [04:52] creationix: so people can set up their project as a ivy container and just distribute it over http [04:52] isaacs: Validatorian: npm deploy is "install this thing over on that host" [04:53] creationix: manveru: NODE_PATH I believe [04:53] Validatorian: for remote module loading? I'm very confused :-P [04:53] isaacs: Validatorian: no, for remote installation of things [04:53] isaacs: Validatorian: you said that you had to do all kinds of gymnastics to set something up on some production host. [04:54] manveru: then something like http://webcache.googleusercontent.com/search?q=cache:digQ8TYVVTAJ:chneukirchen.org/blog/archive/2008/08/taming-rubylib-with-the-z-shell.html could work too [04:54] Validatorian: ah, I got ya [04:54] isaacs: Validatorian: so the idea behind a deploying package manager is that you set it up on a staging server with very precise versions, test everything, then install *exactly* that code on the production server. [04:54] creationix: manveru: probably [04:55] isaacs: most people using node don't really need that level of adminery yet, but eventually, it'll get to that level, i'm sure of it. [04:55] creationix: isaacs: what I really want is to modify the node search pattern for modules [04:55] khug has joined the channel [04:55] creationix: instead of lib/node/* [04:55] creationix: look in lib/node/*/lib/* [04:55] isaacs: ACTION envisions a hive of little worker nodes all working together in sync, upload to one, it tells its friends, etc [04:55] isaacs: creationix: ugh. please no. [04:56] creationix: isaacs: why not? [04:56] isaacs: creationix: so, the issue is that it's just a single readdir right now. [04:56] dgathright_ has joined the channel [04:56] creationix: isaacs: yeah, so require is a little slower [04:56] creationix: but it makes installing a package dirt simple [04:56] isaacs: creationix: it's not that it's a little slower. it's that it becomes exponentially more complicated. [04:56] isaacs: creationix: instaling a package is already pretty simple :) [04:57] creationix: isaacs: true, it's just a sym-link [04:57] isaacs: creationix: also, i'm fighting hard to get away from the "expose your whole lib" approach [04:57] isaacs: creationix: actually, it's usually a shim, but almost the same. [04:57] creationix: well, yeah shim in your case [04:57] isaacs: creationix: i'd like to have modules say "this is my entry point. please come in through this door." [04:57] creationix: isaacs: I agree that expose the whole lib is bad [04:58] isaacs: maybe also say "this is a list of modules that are safe to access" [04:58] isaacs: and the lib should be hidden away somewhere [04:58] creationix: no, I'm fine with saying you can only use the entry path [04:58] isaacs: then why have lib/node/*/lib/*? [04:59] creationix: isaacs: what about lib/node/*/index.js [04:59] isaacs: creationix: so, here's the thing. it's not lib/node/*/index.js [04:59] creationix: and no nesting is allowed except for relative requires [04:59] SubStack: isaacs: any thoughts about mixins? [04:59] isaacs: creationix: it's lib/node/{.js,.node,/index.js,/index.node} [04:59] SubStack: ACTION has been hacking at a module to do them in a scoped way [04:59] isaacs: creationix: so there are 4 discrete things that must be checked for. [04:59] creationix: isaacs: ok, then lib/node/:name/:name.js [05:00] creationix: I like that [05:00] isaacs: creationix: meh. i'd prefer to just only support lib/node/:name [05:00] isaacs: and require("foo.js") [05:00] isaacs: but i lost that battle. [05:00] isaacs: ACTION likes explicit [05:00] creationix: isaacs: well, if it's in a directory, then you can store it's supporting stuff right there, inline [05:00] isaacs: creationix: don't grok [05:01] creationix: grok? [05:01] isaacs: grok means "drink" in Martian. the connotation is to have a deep or intuitive understanding of something, to "drink it in", conceptualy. [05:01] isaacs: http://en.wiktionary.org/wiki/grok [05:02] rtomayko has joined the channel [05:02] creationix: yes, but what do you mean [05:02] creationix: and I over thinking it? [05:02] isaacs: i mean, what does it mean "store its supporting stuff right there, inline" [05:02] isaacs: whose supporting stuff? inline where? [05:02] creationix: oh [05:02] creationix: so the thing I love about textmate's bundles [05:03] creationix: is that you just clone or checkout or download and unzip a package into the bundles folder [05:03] creationix: and that's in [05:03] creationix: it's installed [05:03] isaacs: creationix: right, but the problem is, that sucks [05:03] creationix: no linking, no generating of shims, [05:03] isaacs: i mean, it's great for the package manager. [05:03] isaacs: but it imposes a lot of restrictions on the author and the user [05:04] isaacs: you end up with crap like ruby, where you've got foo/lib/foo.js and foo/lib/foo/sub.js [05:04] isaacs: because "foo/lib" because part of teh NODE_PATH [05:04] isaacs: narwhal works this way. i hate it. [05:04] isaacs: it makes the API surfaces gigantic by default, which is Doing It Wrong. [05:04] creationix: so foo/foo.js is for require('foo') [05:04] isaacs: foo/lib/foo.js is for require("foo") [05:05] creationix: and that's the ONLY way to get at it [05:05] isaacs: and foo/lib/foo/sub.js is for require("foo/sub") [05:05] isaacs: right [05:05] creationix: I know the ruby way, I'm not asking for that [05:05] lachlanhardy has joined the channel [05:05] creationix: though, that's how most js things are built these days [05:05] isaacs: creationix: right, but most node modules also don't work that way. you've got a lot of things that need a node-waf configure build [05:05] isaacs: creationix: and a lot of them are just one js file in the root [05:06] isaacs: foo.js, package.json, and that's it [05:06] isaacs: package.json says { "main" : "./foo" } [05:06] creationix: right, so I propose one requirement that the entry point be at /package-name.js and that's it [05:06] isaacs: hmm... i still think that's asking for trouble. [05:07] isaacs: what about if you want a node-waf compiled module? [05:07] creationix: well, I'm hoping for pre-built binaries, but since that's not feasable yet [05:07] isaacs: oh, true that.. [05:07] creationix: maybe allow for foo.js or foo.node [05:08] isaacs: hm. i dunno. this is an interesting exploration, but trust me, package management LOOKS really simple, and it's not brain surgery, but it is a rats' nest of edge cases. [05:08] creationix: isaacs: yes, my plan is to simple outlaw most the edge cases [05:08] creationix: maybe not a good plan, but I'mm try [05:08] isaacs: otoh, i built npm with the idea in mind that no one would ever use it, so it had to be very accepting. [05:09] isaacs: since i was just using it to install other peoples' code. [05:09] creationix: yeah, I plan on having distro package managers that format supported packages [05:09] creationix: just like debian [05:09] creationix: sure you can install non-debian stuff by hand [05:09] creationix: but it's harder [05:10] isaacs: why not just use npm? [05:10] creationix: I'm not against npm or some tool [05:10] creationix: I'm just trying to see how far I can get without one [05:10] isaacs: sure [05:10] creationix: then I'll use a tool to smooth over the rest [05:11] isaacs: here's the thing... i think it'd be possible to even use npm to install ivy. [05:11] creationix: sure [05:11] creationix: npm can do about anything [05:11] creationix: but why [05:11] isaacs: { "scripts" : { "install" : "do-anything.sh" }} [05:11] isaacs: creationix: because it's easy. [05:12] isaacs: plus, that means that you're using package.json, and the js-registry, which pushes the standards further. [05:12] creationix: isaacs: speaking of the registry, did you see jsonview for chrome? [05:12] isaacs: yeah, nice [05:12] isaacs: now chrome just needs an awesomebar, and i'll switch :) [05:13] creationix: well, enough fantasy land, back to the real world [05:13] creationix: so ivy has a /module folder in it [05:13] creationix: /modules [05:13] isaacs: k [05:14] creationix: and within that there are git submodules for all the node modules you want installed [05:14] isaacs: k [05:14] creationix: the version is controlled by bit naturally since submodule are a fixed version [05:14] creationix: s/bit/git/ [05:14] isaacs: right [05:14] creationix: and node itself it the same [05:14] isaacs: k, so it's like a snapshot [05:15] mjr_ has joined the channel [05:15] creationix: it has /ivy-bin which is a submodule to the ivy-bin repo [05:15] creationix: and that way you can control what version of node to use based on the tag you point to [05:15] isaacs: ok [05:15] creationix: then it had /bin and /lib/node [05:16] creationix: which are full of symlinks to the executables in the modules and the version of node in /ivy-bin [05:16] isaacs: ah, so that's why you'd also written that patch :) [05:16] creationix: yep [05:16] creationix: and the whole directory tree is fully portable [05:16] isaacs: here's the issue you'll run into with symlinks to .js files: people use relative links in commonjs modules. like frickin crazy. [05:16] pavan_ has joined the channel [05:17] creationix: yes, but it seems to work [05:17] creationix: maybe it resolved the symlink or something [05:17] isaacs: um.... really? [05:17] isaacs: i'm pretty sure (and by that i mean, i just looked at the code) that node doesn't realpath() module filenames or anything. [05:17] creationix: I know, strange [05:18] derferman has joined the channel [05:19] isaacs: where are your symlinks to js files that are working? [05:20] creationix: let me check [05:20] creationix: isaacs: oh, know what? [05:20] isaacs: it could be working by accident. (i've seen that) [05:20] creationix: I always do require.paths.unshift(__dirname) in my entry script [05:21] creationix: hmm, but dirname doesn't resolve symlinks either does it? [05:22] creationix: yeah, I use relative requires all over the place [05:22] creationix: not sure how that works [05:23] chrischris has joined the channel [05:24] creationix: isaacs: http://gist.github.com/476541 [05:25] creationix: so in my require.paths I have a symlink to connect [05:26] creationix: I think it's because I'm using index.js inside a folder [05:26] creationix: so the rest of the stuff is available at the virtual path [05:27] creationix: and when it's outside the dir, I link the dir too [05:27] isaacs: creationix: the trick is working with *other* peoples' code. [05:27] creationix: isaacs, so yeah, symlinks works great with relative requires as long as you symlink the the folder when installing it [05:28] isaacs: not that "the tim caswell collection" isn't a great collection of useful node modules, mind you :) [05:28] creationix: hence the requirement to put everything in foo/lib/* [05:28] isaacs: right [05:28] isaacs: so, if you could leverage npm for this, you could just say "this is the root, go go gadget package manager!" [05:29] creationix: isaacs: but I have a different requirement [05:29] isaacs: also, then publishing a package for you == publishing a package for everyone [05:29] isaacs: creationix: you mean, the snapshotting? [05:29] creationix: yeah [05:29] isaacs: so, ryah actually has that same use case. it's definitely on my list. [05:30] chrischris has joined the channel [05:30] isaacs: what if, instead of using git, you just download a tarball that has *everything* on it. [05:30] creationix: I want to be able to go to a fresh machine, install git and simple clone/init/update and be done [05:30] isaacs: so, then you do "npm install this thing right here", then tar it up, and then go to the other machine, tar xz, and yoer' done [05:30] creationix: isaacs: well, you can always rsync ic [05:30] isaacs: ie, remove "install git" and 'clone/init/update' [05:31] isaacs: right, but to do that and have the maximum flexibility in the code you can leverage, you need to be able to just install a bunch of crap right here, without absolute urls, and then drop that whole bundle on some other machine, and have it work. [05:32] creationix: I guess the real value in the submodules isn't deployment [05:32] creationix: but sharing code with others without duplicating it all over the place [05:32] isaacs: also, dude, sencha seriously needs to hire a staff of people to follow behind your ADHD and maintain these things once you find a new shiney ;) [05:33] creationix: isaacs: I'm not half as bad as tj [05:33] khug has joined the channel [05:33] creationix: hmm, or am I? [05:33] isaacs: like, nStore could be a very serious contender with a year or so of steady iteration. [05:33] isaacs: by contender, i mean, rivaling mongo and redis and couch. [05:33] creationix: isaacs: possibly [05:33] mjr_: creationix: you've got a lot of kids, right? Get them going on the JavaScript already. [05:33] creationix: once node gets better at binary stuff [05:34] creationix: working on it ;) [05:34] isaacs: totally [05:34] mjr_: unschool that shit [05:34] isaacs: i'm not trying to criticize, by the way. just commenting. there's definitely a niche in our community for hackers like you :) [05:35] chrischris has joined the channel [05:35] creationix: my passion with programming is enabing others [05:36] creationix: I love to make the impossible possible, but once it's possible, it's boring [05:36] mjr_: I have so many little programs that I'd like to write, but I keep getting caught up in my actual job during the day. [05:36] mattly has joined the channel [05:37] creationix: mjr_: pcap is for work right? [05:37] mjr_: yeah, we use a tool based on pcap at work. [05:37] mjr_: It's pretty cool actually. [05:37] mscdex: someone wrote a websocket client for node right? [05:38] creationix: mscdex: I think it's part of socket.io [05:38] creationix: for the tests [05:38] mscdex: i thought someone wrote one in node though as a separate project [05:38] mscdex: hmm [05:38] mscdex: like pgriess or something [05:38] creationix: maybe, I just heard it in passing [05:39] mscdex: a-ha i was right [05:40] isaacs: mscdex: npm install websocket-client [05:40] mscdex: don't have npm installed [05:40] creationix: yes, now I remember [05:40] isaacs: mscdex: curl http://npmjs.org/install.sh | bash [05:40] isaacs: mscdex: ;P [05:40] mscdex: heh [05:40] creationix: isaacs: I know, I should bundle npm as is with Ivy [05:41] creationix: just configure it to install to lib/node [05:41] creationix: and have it write installed packages to a log somewhere [05:41] isaacs: creationix: actually, if that's the node that's being used, that's where it'll go. [05:41] creationix: so that the installs can be repeated [05:41] isaacs: creationix: i'd love to get a list of all the blockers. [05:41] isaacs: yeah, a log would be cool. [05:42] isaacs: creationix: also, what i can see is: a) the paths in shims need to be relative, not absolute (that'll prevent it from working right now) [05:42] isaacs: and b) it needs to read configs from somewhere other than $HOME [05:42] isaacs: also a blocker [05:42] creationix: but those are easy right [05:42] isaacs: eh. they're a little bit thinky [05:42] creationix: yeah, if you just make npm use the lib/node all the time, it should work [05:43] creationix: as long as there is an option to store a list of all installed packages in a file somewhere [05:43] isaacs: creationix: if that's the node in the PATH, then that's what it'll get. [05:43] jsilver: guys [05:43] isaacs: creationix: well... i mean, there's always ls lib/node/.npm/*/ [05:43] jsilver: can I hash bang node scripta [05:43] jsilver: #! [05:43] isaacs: jsilver: yes [05:43] jsilver: how [05:44] mjr_: #!/usr/bin/env node [05:44] isaacs: jsilver: #!/path/to/node [05:44] jsilver: ty [05:44] isaacs: yeah, or that [05:44] isaacs: jsilver: just like any other shebang [05:44] jsilver: tyty [05:44] mjr_: if you just want node from anywhere in your path, do the env thing. [05:44] creationix: isaacs: yes, please don't hard-code any paths [05:44] isaacs: creationix: right now all of npm's paths are absolute. [05:44] isaacs: creationix: which is not totally awesome. [05:44] creationix: isaacs: I did have another problem [05:44] dnolen has joined the channel [05:45] creationix: executables like "connect" or "wheat" [05:45] creationix: have a shebang at the top [05:45] creationix: I usually to /bin/env node [05:45] creationix: but that doesn't work if you installed it as ivy [05:45] creationix: or it's not the default in your env [05:46] isaacs: yep. [05:46] jsilver: works [05:46] jsilver: great [05:46] temp01 has joined the channel [05:46] isaacs: creationix: i believe that, at least on os x, shebangs *must* be absolute [05:46] isaacs: you can't do #!./node [05:46] creationix: isaacs: maybe I should copy the script and change the shebang [05:46] SubStack: pesky thing [05:47] isaacs: creationix: yeah, that's interesting. [05:47] isaacs: creationix: but... don't you kinda want ivy's node to be THE node, at least when you're inside ivy? [05:47] creationix: isaacs: also I'm fine with a Sea-like subshell [05:48] isaacs: creationix: yeah, i was just gonna suggest that. [05:48] isaacs: creationix: nave does that. it's MIT. go sick on that code. [05:48] isaacs: creationix: just rip out whatever you want. [05:48] creationix: all it would need to do it set the $PATH [05:48] creationix: the rest will just work [05:49] creationix: maybe change the prompt to show what ivy env you're in [05:49] isaacs: yeah, that'd be neat. though, i'm pretty pariclar about my prompt. [05:49] creationix: also it needs to play nice with sudo [05:49] isaacs: but it'd be neat if there was like a green thing that said "ivy" and a path ;) [05:49] creationix: nvm doesn't at all [05:49] isaacs: i dunno if nave does.. [05:50] isaacs: you know how you said you program to make the impossible possible? i program to meet my own needs. [05:50] isaacs: nave only does what i need to do with it, and that's about it. [05:50] creationix: yeah, I do that sometimes too [05:50] isaacs: npm started that way. most of the coding i do is for me. i'm quite selfish. [05:51] creationix: well, ivy is mostly for me [05:51] creationix: but I know that when you make a program perfect for one person it will be great for many [05:51] isaacs: ok, gotta run. if you wanna post issues with what you need from npm, i'd appreciate it. [05:51] creationix: but if you try to make it perfect for the "average" person it won't be perfect for anyone [05:51] isaacs: exactly [05:51] isaacs: condescending software always sucks. [05:54] saikat has joined the channel [05:56] sooli has joined the channel [05:57] sooli: Hi there, I have some troubles to make socket.io Client [05:57] ditesh|cassini has joined the channel [05:57] sooli: With webkit browser, the connection is done with websockets [05:57] sooli: but firefox don't connect to the server at all [05:58] sooli: I specify my io.setPath('/lib/socket.io.client/'); correctly I think [05:58] sooli: any idea ? [06:00] benburkert has joined the channel [06:00] sooli: I just found ! [06:00] mjr_: sooli: glad we could help. [06:01] sooli: just missing a git submodule init and git submodule update [06:01] sooli: cool [06:04] SubStack: ACTION hacks EventEmitters into dnode [06:10] mscdex: weird.... Origin is set to null when i connect via websockets to another server on the LAN [06:10] mscdex: :S [06:10] mscdex: well more specifically, 'null' [06:10] sh1mmer has joined the channel [06:15] bbn has joined the channel [06:17] mscdex: ACTION shakes a fist at websocket debugging [06:17] aubergine has joined the channel [06:17] christkv has joined the channel [06:18] ChrisPartridge has joined the channel [06:18] deanlandolt_home has joined the channel [06:22] jsilver: YES!!!!!! [06:23] jsilver: came up with a patch for this: var thing; => thing => thing() [06:23] jsilver: hard core [06:23] jsilver: it's in the branch reading sectio [06:23] jsilver: parseChildNodes [06:23] jsilver: YESS [06:23] jsilver: now gotta stop \n [06:23] jsilver: yay logic [06:23] ditesh|cassini has joined the channel [06:38] TomY has joined the channel [06:43] softdrink has joined the channel [06:44] paul_irish has joined the channel [06:45] phrearch has joined the channel [06:46] phrearch: morning [06:47] isaacs has joined the channel [06:47] phrearch: i was wondering how to add a clean way to catch message events on the clientside of the websocket [06:48] phrearch: http://paste.pocoo.org/show/237789/ [06:48] phrearch: i modified a jquery websocket plugin to send to a jsonrpc dispatcher, but how about when the server sends something without request? [06:49] phrearch: request is done in a jquery kinda way like ws.remote('mymethod',{myparams},callback(){}); [06:49] SubStack: phrearch: take a look at http://github.com/substack/dnode maybe [06:50] phrearch: SubStack: thanks, ill read up on that [06:51] mikeal has joined the channel [06:52] SubStack: but keep in mind I am rather biased ;) [06:52] tyfighter has joined the channel [06:52] phrearch: it seems like a solid approach, but im using python/twisted serverside, so maybe i can just learn some best practices out of it [06:52] KungFuHamster has joined the channel [06:53] phrearch: i read about dnode yesterday, and couldnt understand why remote.mymethod works, while that method does not exist in the object [06:53] SubStack: why ask #node.js then? [06:53] phrearch: best practices? [06:53] amuck has joined the channel [06:54] SubStack: remote.mymethod? eh? [06:54] teemow has joined the channel [06:55] phrearch: yea, right now i use ws.remote('my_method' [06:56] phrearch: the only way i thought it was possible to have that kind of markup was to catch the method does not exist, but thats a ff-only function atm [06:56] SubStack: nah, you can just build an object up before the callback fires [06:57] SubStack: ACTION uses a special 'methods' call to make it work [06:57] phrearch: aha sounds good [06:58] blaines_ has joined the channel [06:58] SubStack: and by call I mean a little prelude in the communication [06:58] phrearch: yesterday i ended up at http://wiki.ecmascript.org/doku.php?id=harmony:proxies [06:59] phrearch: "Simulating __noSuchMethod__ / doesNotUnderstand:" [07:00] SubStack: I've seen these. [07:00] phrearch: i couldnt understand much of it :) [07:00] felixge has joined the channel [07:00] phrearch: i guess im looking for a clean way to do bidirectional messaging in an rpc kinda way [07:01] phrearch: inside the message event, i probably have to make some jsonrpc handler on the clientside as well, but it should ignore cases where the client initiated the call [07:01] SubStack: I've never used twisted so can't help you there [07:02] SubStack: but with node.js and dnode it's pretty nice! [07:02] phrearch: ow im just thinking about the clientside js [07:02] phrearch: yea it looks very streamlined [07:02] SubStack: the stuff on the backend matters too [07:02] SubStack: especially since websocket support is spotty [07:02] pdelgallego has joined the channel [07:02] phrearch: its ok in twisted now [07:03] SubStack: I mean spotty in terms of browser support [07:03] phrearch: i got it authenticating with my django site, and got a pool of connected clients. only need a clean way of dispatching remote calls on the client [07:03] phrearch: ah indeed [07:03] SubStack: socket.io manages to work on IE5.5 somehow [07:03] phrearch: chrome 5 atm [07:03] phrearch: ok so it falls back on long polling i guess [07:03] qFox has joined the channel [07:05] phrearch: ah now i understand how dnode does that trick [07:05] SubStack: ^_^ [07:05] phrearch: it sends a methods callback [07:05] phrearch: cool [07:05] SubStack: that's only one of the tricks [07:05] jsilver: guys [07:06] jsilver: your not gonna believe it [07:06] SubStack: jsilvers [07:06] jsilver: but I think js2cs might be nearing 1:1 [07:06] SubStack: ACTION believes it preemptively [07:06] jsilver: it knows to ignore var test; [07:06] jsilver: thats so advanced [07:06] jsilver: im proud of myself for figuring that one out [07:06] SubStack: o_O [07:06] jsilver: nuked some other bugs too [07:06] jsilver: next step is to compile itself [07:07] SubStack: phrearch: oh also if you're not in a hurry you could always write a python implementation of the dnode protocol ;) [07:07] jsilver: i never thought i'd have this much fun coding in javascript... [07:08] phrearch: SubStack: thanks, i'll keep it in mind [07:09] phrearch: it's basically two-way jsonrpc right? [07:09] SubStack: yeah [07:09] SubStack: with some magic to embed callback functions in the json data [07:10] markwubben has joined the channel [07:10] SubStack: and there are no result messages, only requests [07:10] phrearch: ok, i could add callback to a server initiated call, and check whether callback is in data [07:11] phrearch: requests done from the client are done like ws.remote('profiles.get_online',{},function(data){alert(JSON.stringify(data));}); atm [07:12] phrearch: cool, thanks. got some new ideas :) [07:13] SubStack: async is the only way to go for low-latency stuff like network communication [07:14] phrearch: yea indeed [07:14] SubStack: ACTION remembers having to build his own thread pool on top of DRb in order to do some heavy processing. Not fun. [07:15] phrearch: i guess it makes more sense to do client and serverside in the same language, but twisted is also a nice async library [07:15] SubStack: that and return values could only be polled since the spawn method had to return right away to support simultaneous connections [07:15] phrearch: and i had my website already built on top of it [07:15] SubStack: such a mess [07:16] MattJ has joined the channel [07:16] SubStack: it's not so much about the same language, it's more that javascript is built from the ground up for asynchronous calls [07:16] phrearch: it's quite difficult. glad other people did all the hard work :) [07:17] SubStack: so there's no annoying synchronous legacy caveats like the GIL to worry about [07:18] phrearch: aha sounds like js is a good tool for making scalable websocket servers then [07:18] SubStack: probably the best tool at the moment [07:19] mscdex: argh... websocket debugging sucks [07:19] mscdex: at least chrome tells you what's wrong as long as it doesn't involve the actual response matching [07:19] mscdex: bleh [07:19] phrearch: i just wonder if there are enough batteries included yet to build a cms on top of node.js ? [07:20] bbn: anyone here use the connect middleware? newbie question: how do I get the val of an argument? (ie, something like ?arg=123 ) [07:20] SubStack: phrearch: http://github.com/ry/node/wikis/modules [07:20] mscdex: i once started on a cakephp "clone" for node called "donutjs" but never finished it [07:20] mscdex: heh [07:21] phrearch: hm looks good [07:21] jblanche has joined the channel [07:22] SubStack: also if you like json (and who doesn't?) http://registry.npmjs.org/ [07:24] phrearch: looks like a nice story [07:25] zomgbie has joined the channel [07:28] teemow has joined the channel [07:28] bvleur has joined the channel [07:33] huyhong has joined the channel [07:34] mjr_: I love me some JSON. [07:34] mjr_: Speaking of npm, I just updated pcap / http_trace to use fancy ANSI colors: http://github.com/mranney/node_pcap [07:35] hellp has joined the channel [07:35] isaacs: mjr_: nice [07:36] isaacs: mjr_: very pretty [07:36] micheil: bradleymeck: could you email questions to me, I'm having a hard time keeping up and trying to know what you're asking atm. [07:36] micheil: bradleymeck email is micheil@brandedcode.com [07:40] simoncpu has joined the channel [07:40] simoncpu: kindda curious [07:40] simoncpu: which nodejs frameworks do you guys use? [07:43] jedschmidt has joined the channel [07:47] ChrisPartridge: simoncpu: I've been playing around with express, seems pretty solid [07:47] mscdex: micheil: do you have a test server running your latest websocket server code? [07:47] mscdex: or does anyone else? [07:47] micheil: umm.. I can get one up and running. [07:48] micheil: why? [07:48] mscdex: websocket disconnection issues with a module i'm working on [07:48] mscdex: don't know if it's something in my code or what [07:48] micheil: hmm.. odd [07:48] mscdex: chromium doesn't tell me [07:50] micheil: http://brandedcode.com:8000/ [07:51] simoncpu: i think framework flamewars are really useful [07:51] simoncpu: because oberservers get to uhm... observe the arguments from both sides [07:51] micheil: that is running on my dev branch though, so it may be unstable [07:51] simoncpu: so far, i haven't seen any flamewars yet [07:51] micheil: bbl. [07:51] simoncpu: we need to start one! [07:51] simoncpu: :) [07:53] aubergine_ has joined the channel [07:53] mscdex: huh.... that works [07:53] mscdex: thanks [07:53] ditesh|cassini has joined the channel [07:54] jbrantly1 has joined the channel [07:57] hassox has joined the channel [08:07] bbn has joined the channel [08:12] markwubben has joined the channel [08:16] mitkok has joined the channel [08:19] felixge has joined the channel [08:19] felixge has joined the channel [08:19] aubergine has joined the channel [08:22] SvenDowideit_ has joined the channel [08:23] aubergine_ has joined the channel [08:26] virtuo has joined the channel [08:29] zomgbie has joined the channel [08:30] aubergine_ has joined the channel [08:32] ditesh|cassini has joined the channel [08:34] concernedcitizen has joined the channel [08:38] halorgium has joined the channel [08:41] zomgbie has joined the channel [08:42] herbySk has joined the channel [08:44] xla has joined the channel [08:45] zomgbie_ has joined the channel [08:47] jblanche has joined the channel [08:52] stream has joined the channel [08:58] ditesh|cassini has joined the channel [09:00] aliem has joined the channel [09:02] ctp has joined the channel [09:05] aubergine has joined the channel [09:07] arkady has joined the channel [09:08] arkady_ has joined the channel [09:09] arkady_: hello [09:10] arkady_: what was the reason evcom was refactored out of node.js? [09:10] nhck has joined the channel [09:13] atmos has joined the channel [09:14] ph^ has joined the channel [09:15] simoncpu: dunno [09:15] simoncpu: all i know that it crashes on freebsd [09:15] maushu has joined the channel [09:15] ditesh|cassini has joined the channel [09:16] nhck has left the channel [09:16] robinduckett: what's that site that does RoR and Node hosting? [09:16] robinduckett: k... something [09:16] dnyy: robinduckett: heroku? [09:16] robinduckett: that's the jobby [09:16] robinduckett: ty [09:16] robinduckett: trying to convert some drupalites [09:16] dnyy: :p [09:16] simoncpu: there's a site that offers node hosting? [09:17] simoncpu: awesoooome [09:17] simoncpu: drupal sucks [09:17] dnyy: i have a $30 heruko gift card thing i need to find a use for [09:17] simoncpu: agavi is the one true PHP framework (tm) [09:17] simoncpu: behold! [09:17] robinduckett: nah [09:17] robinduckett: CakePHP :D [09:18] simoncpu: cakephp is a lie! [09:18] dnyy: limonade! [09:18] robinduckett: yes it is [09:18] aliem has joined the channel [09:18] simoncpu: hahahaha [09:18] robinduckett: if someone made a RoR clone for node I'd be set [09:18] zomgbie_ has joined the channel [09:18] zomgbie has joined the channel [09:18] dnyy: i think someone is, started with a g [09:18] hoodow has joined the channel [09:18] felixge has joined the channel [09:18] jblanche has joined the channel [09:18] herbySk has joined the channel [09:18] halorgium has joined the channel [09:18] SvenDowideit has joined the channel [09:18] TomY has joined the channel [09:18] saikat has joined the channel [09:18] temp01 has joined the channel [09:18] mattly has joined the channel [09:18] rtomayko has joined the channel [09:18] tmpvar has joined the channel [09:18] SamuraiJack has joined the channel [09:18] [[zz]] has joined the channel [09:18] gregotri has joined the channel [09:18] mikekelly has joined the channel [09:18] micheil has joined the channel [09:18] beawesomeinstead has joined the channel [09:18] blowery has joined the channel [09:18] sveisvei has joined the channel [09:18] Lazesharp has joined the channel [09:18] mediacoder has joined the channel [09:18] WarBot has joined the channel [09:18] wao has joined the channel [09:18] trodrigues has joined the channel [09:18] mikemike86 has joined the channel [09:18] pquerna has joined the channel [09:18] doppler has joined the channel [09:18] opello has joined the channel [09:18] Guest42356 has joined the channel [09:18] inarru has joined the channel [09:18] Sembiance has joined the channel [09:18] simoncpu: gnode? [09:19] simoncpu: g-sport? gonads? [09:19] simoncpu: g-spot [09:19] felixge has joined the channel [09:19] dnyy: geddy* http://github.com/mde/geddy [09:20] jspiros has joined the channel [09:21] mikemike86 has joined the channel [09:21] markwubben has joined the channel [09:24] aubergine has joined the channel [09:25] hassox has joined the channel [09:26] stevebest1 has joined the channel [09:27] jsilver: well [09:27] jsilver: JS2CS can officially compile itself [09:27] jsilver: but it's not right [09:27] jsilver: still needs more [09:28] jsilver: but it's closer [09:28] stevebest1 has left the channel [09:31] fdmanana has joined the channel [09:32] Lazesharp_ has joined the channel [09:38] chrischris has joined the channel [09:41] aubergine has joined the channel [09:45] mitkok: robinduckett: heroku node.js support is in beta ( request an invitation at nodejs@heroku.com ) [09:47] robinduckett: mitkok: I have nothing to put on it yet, but I will when I do :P [09:47] robinduckett: plus I've got like two dedicated servers so :P [09:48] mitkok: just a tip, also they do not support websockets, only HTTP 1.0 :) [09:48] robinduckett: well that's even more reason not to use it [09:51] jetienne has joined the channel [09:57] bvleur: Hi. Anyone looked at the proposed Filter implementation? [09:58] bvleur: ( http://github.com/mikeal/node/commit/33536da790790d29e2a1d253b578fea394c5ea62 ) [09:58] ecmanaut has joined the channel [09:59] bvleur: I believe end should be a method, not a listener. Though I'm really new to node.js and it's API, so I might be (very) wrong :) [10:01] yatiohi has joined the channel [10:02] satori: bvleur: end corresponds to to FIN. It is an event [10:04] bvleur: But the filter acts a writable stream for sys.pump, so sys.pump is trying to call the method end on the filter right? [10:04] Lazesharp__ has joined the channel [10:05] blackdog has joined the channel [10:06] ditesh|cassini has joined the channel [10:13] arkady_: does anybody know what was the reason evcom was refactored out of node.js? [10:16] spuz has left the channel [10:16] kuya: im a bit confused... if im using node-mongodb-native, for example to write a blog app, should each request get its own connection to the db or should i use one global db connection or... ? [10:16] gawker2 has joined the channel [10:31] felixge has joined the channel [10:33] botanicus has joined the channel [10:34] fermion has joined the channel [10:46] tmedema has joined the channel [10:47] npup has joined the channel [10:50] blaines has joined the channel [10:54] blaines has joined the channel [10:57] dmcquay has joined the channel [10:58] blaines has joined the channel [10:59] aliem_ has joined the channel [11:01] maushu: kuya: I use redis but each request gets its own connection and I believe it should be like that. [11:02] maushu: After all, each request is a client and you don't want each client mix up with the other clients. [11:04] npup has joined the channel [11:05] kuya: maushu: thanks thats what i figured i just wasnt sure [11:05] dmcquay has joined the channel [11:05] kuya: do you have some sort of middleware that creates a connection for each client? [11:05] maushu: You mean a connection pool? No. [11:07] maushu: I don't know about mongodb but a redis connection is very very cheap. It's basically a TCP three way handshake. [11:08] maushu: Not really worth it to make a connection pool or middleware. [11:09] kuya: i see [11:10] kuya: im probably worrying about this stuff way before i should be :) [11:10] aubergine_ has joined the channel [11:10] maushu: Yes you are. Make it work first, worry about performance later. [11:11] kuya: yup [11:11] kuya: ACTION writes that on his forehead [11:12] zomgbie_ has joined the channel [11:19] dmcquay has joined the channel [11:21] camilo has joined the channel [11:28] Tim_Smart has joined the channel [11:31] javajunky has joined the channel [11:33] mitkok has joined the channel [11:33] rolfb has joined the channel [11:33] aubergine has joined the channel [11:44] npup has joined the channel [11:51] agnat has joined the channel [12:02] proppy has joined the channel [12:06] markwubben has joined the channel [12:06] aliem has joined the channel [12:08] npup has joined the channel [12:25] pavan_ has joined the channel [12:26] dnolen has joined the channel [12:29] gopher has joined the channel [12:29] gopher: wohooo! [12:31] gally has joined the channel [12:31] gally: hi there [12:31] markwubben has joined the channel [12:33] jherdman has joined the channel [12:33] charlenopires has joined the channel [12:34] javajunky has joined the channel [12:35] blaines has joined the channel [12:37] mindeavor has joined the channel [12:42] gally: can someone help i have one question about npm usage [12:44] teemow has joined the channel [12:45] SubStack: if you have questions then you should just ask them and hope that someone responds [12:45] gally: ok, [12:45] stepheneb has joined the channel [12:46] gally: i've installed the tweetstream package via "npm install tweestream" [12:47] gally: and activated it [12:47] gally: but when i try to use it in a script [12:47] gally: require ("tweetstream"); [12:48] gally: i get a "cannot find module" error [12:49] gally: (i'm on OSX 10.6 server ) [12:49] gally: what 'im doing wrong ? :) [12:53] cloudhead has joined the channel [12:58] gally: no, i installed via "sudo npm install tweestream" [13:01] bvleur has joined the channel [13:03] pgriess has joined the channel [13:03] SubtleGradient has joined the channel [13:05] aubergine_ has joined the channel [13:10] botanicus has joined the channel [13:15] zapnap has joined the channel [13:18] gwoo has joined the channel [13:20] aliem_ has joined the channel [13:23] ben_alman has joined the channel [13:25] aubergine has joined the channel [13:29] pydroid has joined the channel [13:29] V1_ has joined the channel [13:30] kriszyp has joined the channel [13:35] maushu: (,_,) [13:41] aho has joined the channel [13:42] c4milo: hi guys, anybody knows about npm ? [13:45] davidsklar has joined the channel [13:50] SubStack: hooray my dnode chat server works great [13:50] stagas has joined the channel [13:50] SubStack: http://substack.net/images/screenshots/dnode-chat.png [13:51] maushu: What madness is this. [13:51] gally: nice ^^ [13:53] stagas: lol [13:54] SubStack: maushu: it is http://github.com/substack/dnode/tree/master/examples/chat [13:54] joshbuddy has joined the channel [13:54] sooli: Does someone use Socket IO-node on windows ? [13:55] sooli: please try to connect to http://zerty.fr:8090/?nick=your_nick (change your nick please [13:55] sooli: It works fine on OsX safari / chrome/ FF [13:56] TrisMcC: sooli: It says I'm "Not connected to a room !" [13:56] quirkey has joined the channel [13:56] sooli: change your_nick to anything else [13:56] TrisMcC: sooli: same thing [13:57] TrisMcC: I'm only yusing Firefox 3.6.6 [13:57] TrisMcC: is it only websockets? [13:57] sooli: fixing some things and brb [13:58] SubStack: sooli: neat stuff [13:58] SubStack: mine's prettier though ;) [13:58] aubergine has joined the channel [13:59] bjartek has joined the channel [14:00] ako has joined the channel [14:00] tytsim has joined the channel [14:02] tytsim has joined the channel [14:02] zomgbie has joined the channel [14:02] deanlandolt_home has left the channel [14:03] tytsim has joined the channel [14:05] Dude has joined the channel [14:06] sudoer has joined the channel [14:07] gf3 has joined the channel [14:08] Tim_Smart has joined the channel [14:10] zaach has joined the channel [14:18] Yuffster has joined the channel [14:19] robinduckett: lol [14:19] sooli: ok guys now it's work, Thnx for your help [14:19] davidwalsh has joined the channel [14:20] sooli: now I'll have to design it, because it's only a proof of concept right now [14:21] tytsim has left the channel [14:21] tytsim has joined the channel [14:26] bradleymeck_ has joined the channel [14:26] aliem has joined the channel [14:28] Lazesharp has joined the channel [14:28] robotarmy has joined the channel [14:30] gf3 has joined the channel [14:30] ph^ has joined the channel [14:32] sveimac has joined the channel [14:34] zomgbie has joined the channel [14:34] mitkok has joined the channel [14:34] zomgbie_ has joined the channel [14:35] Dude has left the channel [14:35] Dude has joined the channel [14:36] Dude has left the channel [14:36] CrabDude has joined the channel [14:40] aubergine has joined the channel [14:40] gally: mkay, it was not an npm issue, tweeterstream is fucked up :) [14:41] meder has joined the channel [14:44] ajpiano has joined the channel [14:49] kyleslat has joined the channel [14:50] steadicat has joined the channel [14:50] charlenopires has joined the channel [14:51] kyleslat: Hey all, I've got a question about a proxy I'm building with node--it seems to be choking when I test with ab, and I'm not quite sure why [14:51] kyleslat: h [14:51] kyleslat: here's some example code: http://gist.github.com/477041 [14:51] kyleslat: with any sort of concurrency at all, it's super slow [14:54] tswicegood has joined the channel [14:54] maushu: kyleslat: Try sys.pump [14:55] dmcquay has joined the channel [14:55] kyleslat: Hm, though I need to change some things in the response (the example code I sent is a simplified version) [14:56] kyleslat: The full proxy parses the response and headers and adds some things to it. [14:57] zomgbie has joined the channel [14:57] zomgbie_ has joined the channel [14:58] SubStack: strings are slow [14:58] bradleymeck_: if used for bad purposes yes [14:59] felixge has joined the channel [14:59] kyleslat: Though, I didn't think they'd be that slow for such low concurrencies (15 or so) [14:59] bradleymeck_: i really wish JS had a copy on write string [15:00] maushu: kyleslat: http://gist.github.com/477061 [15:00] maushu: Here try this one, I haven't tested it. [15:01] bradleymeck_: well also do you need the whole request buffered? [15:01] SubtleGradient has left the channel [15:01] gf3 has joined the channel [15:02] kyleslat: bradleymeck_: I need to parse the whole request, yes [15:02] bradleymeck_: yes, but do you have to buffer it (as in hold it all in memory at once rather than streaming out parts as they come in) [15:03] kyleslat: Hm, I might be able to get away with not buffering it [15:04] kyleslat: Essentially what I'm trying to build is something similar to how facebook does apps: they proxy a request to apps.facebook.com/something to the application server, and then they parse the response for FBML tags [15:06] kersny has joined the channel [15:07] sooli: http://zerty.fr:8090/?nick=your_nick << now with a new css theme (a basic one) [15:07] kodisha has joined the channel [15:08] felixge: ryah: yt? Interested in supporting setTimeout + 'timeout' event for ServerRequest? [15:08] felixge: ryah: I need it for uploads that are timing out, req.connection.setTimeout() feels wrong [15:11] kriszyp_ has joined the channel [15:12] mjr_ has joined the channel [15:13] borior has joined the channel [15:14] tk has joined the channel [15:14] borior has joined the channel [15:14] simoncpu has joined the channel [15:16] proppy: Hi, once I installed npm and module [15:16] proppy: how should I import them in my node.js files ? [15:17] proppy: var ws = require('websocket-server'); [15:17] proppy: throw Error: Cannot find module 'websocket-server' [15:18] JimBastard has joined the channel [15:18] mjr_: proppy: did npm seem to happily install websocket-server? [15:18] proppy: yes [15:18] proppy: websocket-server@1.3.00 @active @installed @remote @stable @tag=stable @tag=latest |Todo [15:19] khug has joined the channel [15:19] mjr_: hmm [15:19] proppy: ah maybe I should import lib/ws [15:19] mjr_: I just tried that, and it worked fine for me. [15:19] proppy: what did you import ? [15:20] mjr_: var ws = require('websocket-server'); [15:20] proppy: should I pass some flags to node in order to look for npm packages ? [15:21] bradleymeck_: nope [15:21] mjr_: it should put them in your path. That's kind of the pointof npm. [15:21] bpot has joined the channel [15:21] bradleymeck_: working through npm reinstall here [15:21] mjr_: So something is failing for you with npm. [15:21] JimBastard: npm issues? [15:21] proppy: oh maybe that's because I'm using node debian version [15:21] bradleymeck_: how did you install node proppy? also check your .node_libraries [15:21] proppy: which seems to install stuff in /usr/lib/nodejs [15:22] proppy: and not /usr/lib/node [15:22] proppy: .node_libraries ? [15:22] bradleymeck_: ~/.node_libraries [15:22] bradleymeck_: if you used a package manager i think it f'ed up where it is looking for those [15:23] proppy: yes [15:23] proppy: NODE_PATH=/usr/lib/node node server.js [15:23] proppy: do the trick [15:23] mjr_: proppy: could it be that you have multiple versions of node on your computer? [15:23] proppy: it seems that it looks in /usr/lib/nodejs by default [15:23] JimBastard: what is looking? node? [15:23] JimBastard: or npm? [15:23] teemow has joined the channel [15:23] mjr_: Try running node without setting NODE_PATH and see what require.paths is set to. [15:23] bradleymeck_: node jim [15:23] JimBastard: 10-4 [15:24] zomgbie has joined the channel [15:25] proppy: node> require.paths [15:25] proppy: [ '/home/proppy/.node_libraries', '/usr/lib/nodejs' ] [15:25] zmbmartin has joined the channel [15:26] zmbmartin: What is the best framework for node.js? [15:26] JimBastard: sigh [15:26] mjr_: Is that were npm installed things? [15:26] JimBastard: framework for what zmbmartin [15:26] proppy: mjr_: nop npm installed things in /usr/lib/node [15:26] proppy: that's why [15:27] mjr_: proppy: if you can reproduce that scenario, I know isaacs would appreciate an issue filed on his github page. [15:27] proppy: mjr_: isaacs = npm maintainer [15:27] proppy: ? [15:27] mjr_: It's supposed to figure that out. [15:27] mjr_: yes. [15:27] JimBastard: is there an issue with npm or node on this? [15:27] mjr_: http://github.com/isaacs/npm/issues [15:27] bradleymeck_: npm isnt on a package manager like synaptic is it? [15:28] statim has joined the channel [15:28] SubStack: not likely [15:28] mjr_: npm is on homebrew though. [15:28] mjr_: But proppy is on Debian's node, and I think that's related to the issue. [15:29] aliem has joined the channel [15:29] gally has left the channel [15:30] amuck has joined the channel [15:31] zmbmartin: JimBastard: in node github there is a list of about 12 frameworks I was just wondering which one was most popular? [15:31] JimBastard: zmbmartin: framework for what [15:31] proppy: http://github.com/isaacs/npm/issues/issue/107 [15:31] zmbmartin: JimBastard: for web applications [15:31] JimBastard: zmbmartin: try Ruby on Rails i hear its great [15:32] proppy: mjr_: I filled an issue on npm tracker [15:32] JimBastard: and real popular [15:32] TrisMcC: zmbmartin: I am using the router in connect right now [15:32] JimBastard: fucking retards [15:32] mjr_: zmbmartin: node is still very early days. Many of the frameworks are still being actively developed. [15:32] mjr_: Everybody has their favorites. [15:32] mjr_: And things change pretty quickliy. [15:32] mjr_: And JimBastard loves you. [15:33] TrisMcC: I've used the express router, and biggie router too [15:33] JimBastard: most popular project : http://github.com/visionmedia/express [15:33] JimBastard: i highly disagree with every single web framework out for node right now [15:33] TrisMcC: "highly disagree"? [15:33] JimBastard: server-side templating is dead [15:33] TrisMcC: this has nothing to do with templating [15:33] JimBastard: k [15:33] TrisMcC: and...no it isn't. [15:34] JimBastard: stfu noob [15:34] JimBastard: and welcome to the irc room [15:34] ayo has joined the channel [15:34] TrisMcC: JimBastard: woah [15:34] bradleymeck_: hes always like this [15:34] SubStack: templating is just boring [15:34] JimBastard: templating should be done on the client [15:34] JimBastard: where its free [15:35] herbySk: hello, can't get https pages using HttpClient... anyone here who is able to get secure pages and who also did set up their machine himself? I suspect it is something with openssl configuration / making client certificates / dunnowhat ... [15:35] TrisMcC: JimBastard: OK, I'll tell the GoogleBot that [15:35] JimBastard: TrisMcC: k [15:35] bradleymeck_: googlebot can be given templates still if you check useragent anyway [15:35] mjr_: JimBastard: did you skip your coffee today? [15:35] JimBastard: also TrisMcC , http://code.google.com/web/ajaxcrawling/docs/getting-started.html [15:36] JimBastard: but i appreciate your advice from 2 years ago [15:36] TrisMcC: JimBastard: because, clearly, javascript on BlackBerries is totally free. [15:36] bradleymeck_: herbySk you did set secure to true when you made the client? [15:36] tjholowaychuk has joined the channel [15:36] bradleymeck_: xfer speed is often lower using non-xml based markup so debatable [15:37] bradleymeck_: xfer time* [15:37] JimBastard: TrisMcC: http://vimeo.com/12779633 [15:38] TrisMcC: JimBastard: I am not interested in Ruby on Rails. [15:38] bradleymeck_: anyway i would take a look at express, it is getting an upgrade soon, tj could prolly say more [15:38] proppy: is there a console.log for node.js ? [15:38] JimBastard: TrisMcC: k [15:38] bradleymeck_: console.log [15:38] bradleymeck_: ^ use it [15:39] proppy: ReferenceError: console is not defined [15:39] bradleymeck_: node version? [15:39] tjholowaychuk: express should / could be out tomorrow or possibly tonight [15:39] TrisMcC: proppy: Make sure you're using the latest node [15:39] kodisha_ has joined the channel [15:39] proppy: 0.1.99 [15:39] bradleymeck_: var sys=require("sys");sys.puts(...) <- legacy for pre 1.100 [15:39] tjholowaychuk: thing i like about console no require('sys'), thing i dont like about console, changing all my old shit :( [15:40] mjr_: Having the "print to stdout" function be always global is a win. [15:40] mjr_: I still don't think that "console.log" is the right abstraction, but I'm learning to ignore it. [15:40] TrisMcC: tjholowaychuk: Since you are also involved with Connect, what is the relationship between Express & connect router? [15:40] bradleymeck_: process.stdout.write? [15:40] tjholowaychuk: shit [15:40] tjholowaychuk: sorry cleared the screen [15:40] tjholowaychuk: GAHH [15:40] bradleymeck_: use the logs [15:41] piratepenguin has joined the channel [15:41] TrisMcC: Like Old Time TV with Overscan? [15:41] zmbmartin: JimBastard: Seeing is how I am asking the wrong question ;) what modules are you useing with node or are you creating your own. I have not read much on node so I am just looking for which direction I should head. [15:41] TrisMcC: owah [15:41] TrisMcC: mt [15:41] tjholowaychuk: ah, TrisMcC Express uses Connect's router actually [15:41] tjholowaychuk: behind the scenes [15:41] proppy: var console = { log: sys.puts }; | [15:41] proppy: :) [15:41] voxpelli-laptop has joined the channel [15:42] JimBastard: zmbmartin: much better question [15:42] TrisMcC: tjholowaychuk: ok, so it just a higher level than connect's router will ever be [15:42] JimBastard: zmbmartin: i would highly recommend using any of cloudhead's stuff. http://github.com/cloudhead/ [15:42] JimBastard: zmbmartin: there is also Connect which is more of a middleware [15:42] tjholowaychuk: TrisMcC yup, it is much more of a higher level framework than connect, but uses a lot of the stuff myself and Tim wrote for Connect behind the scenes [15:43] tjholowaychuk: in a more sinatra-like way [15:43] mjr_: proppy: node moves pretty fast. Nothing is forcing you to upgrade, but most people in here run the latest released version, or run HEAD from ry/node. [15:43] JimBastard: zmbmartin: it depends what you need to do, i would identify your needs first and then figure out which modules suite you best, or which ones you might have to build / fork [15:43] npup has joined the channel [15:43] proppy: mjr_: thanks for the advice [15:43] proppy: so you're suggesting I do not rely on packaged version of developpement [15:44] mjr_: Once you get something working in node, there's no reason to upgrade node out from under that. [15:44] proppy: mjr_: does node by default install itself in /usr/local ? [15:44] proppy: or should I run ./configure --prefix=/usrc ? [15:44] zmbmartin: JimBastard: Thanks [15:44] mjr_: But until you are done with development, I suggest always using the latest version of node. [15:45] JimBastard: zmbmartin: this guy has some interesting modules as well, http://github.com/marak/, but i hear he's a real asshole [15:45] tjholowaychuk: lol [15:45] mjr_: proppy: I dunno how actively your maintainer pushes updates for the node package. The homebrew one is updated really quickly, so if you are on OSX, that's an option. [15:45] mjr_: But for Linux, I just build from HEAD. [15:45] proppy: maybe I could offer help to update the debian package [15:46] bradleymeck_: i personally think hes a bastard [15:46] tjholowaychuk: for anyone wondering though the express stuff is not really an upgrade its a rewrite [15:46] javajunky: tjholowaychuk: how much will we need to re-write do you think ? [15:47] steadicat has joined the channel [15:47] pquerna: tjholowaychuk: oh, one more random idea on respose: an optional timeout in seconds parameters; If it hits that timeout before getting a response, fire an assert, if you get a response, clear the timeout [15:47] tjholowaychuk: javajunky: hopefully not tons, I dont think it will be a problem for most of you guys but some of the new people to the community be like ahh fuck what the hell is connect now [15:47] javajunky: ah [15:47] amerine has joined the channel [15:47] tjholowaychuk: pquerna: can do [15:47] pquerna: i ran into a bug yesterday where my http server threw an uncatchable exception, and it just hung expresso [15:48] pquerna: because the client never timed out [15:48] tjholowaychuk: javajunky: i think that will be the main problem, having dependencies just throws people off a bit [15:48] tjholowaychuk: pquerna ya that would be nice to have ill chuck it in :) [15:48] mjr_: pquerna: what was the source of your uncatchable exception? [15:48] mjr_: Those really bother me. [15:48] Aria has joined the channel [15:48] bradleymeck_: as long as its a curl url install i think most will be ok for now [15:49] pquerna: like 4 async callbacks removed from the intiial http server callback [15:49] pquerna: stat, pump.. [15:50] mjr_: Yeah, I get similarly uncatchable exceptions when I stack up the callbacks like that. [15:50] mjr_: It's a bummer that they are also silent exceptions. [15:51] tjholowaychuk: i always try to do ++calls; and have function(assert, beforeExit){ ... beforeExit(function(){ assert.equal(2, calls) }) [15:51] tjholowaychuk: ive gotten a few false positives from not doing that [15:51] tjholowaychuk: really sucks [15:52] technoweenie has joined the channel [15:52] MrTopf has joined the channel [15:55] proppy: made an updated nodejs package there http://playground.mekensleep.com/~proppy/nodejs_0.1.100-1.dsc [15:58] tjholowaychuk: anyone here know the main differences of less.js and scss? [15:58] tjholowaychuk: if any [15:58] locks_ has joined the channel [15:58] JimBastard: tjholowaychuk: less.js came first [15:58] tjholowaychuk: yeah i know that [15:59] JimBastard: tjholowaychuk: the scss guys are super serious about holding their position [15:59] tjholowaychuk: just seemed like scss was trying to copy them [15:59] JimBastard: i think thats about it [15:59] pavan_ has joined the channel [15:59] locks has joined the channel [15:59] JimBastard: yeah tjholowaychuk ive talked to cloudhead about this a little [15:59] tjholowaychuk: i kinda prefer the indented stuff but their new stuff seemed kinda pointless [15:59] JimBastard: they pretty much just copied less [15:59] technoweenie: sass? or is scss a different thing [15:59] JimBastard: technoweenie: they took sass and "fixed it" [15:59] technoweenie: oh [15:59] JimBastard: aka, copied less [16:00] JimBastard: so i guess scss is valid css now [16:00] JimBastard: opposed to sass not being valid css (until it gets compiled) [16:00] JimBastard: i dunno [16:00] JimBastard: css frameworks are fail [16:00] technoweenie: blueprint 4 life [16:00] tjholowaychuk: i like sass since its less annoying to write but other than that they are all sorta meh [16:01] MrTopf: I also like sass, usually using it with compass [16:01] bradleymeck_: css frameworks are better than css :/ [16:01] tjholowaychuk: if your doing a massive site i can see the benefit [16:01] JimBastard: http://maraksquires.com/json_stylesheets/ [16:01] JimBastard: bradleymeck_: JSON > CSS [16:01] JimBastard: :p [16:02] JimBastard: but yeah, we use sass and haml here at work, awesome [16:02] zmbmartin: Is there even a reason to use node for something like a blogging application? [16:02] tjholowaychuk: probably not no [16:02] JimBastard: zmbmartin: i mean, does cool factor count? [16:02] bradleymeck_: not bad considering we have selector engines [16:02] tjholowaychuk: other than for experience or fun [16:03] zmbmartin: JimBastard: Do you use it exclusivly for everything? [16:03] JimBastard: zmbmartin: node? [16:03] zmbmartin: JimBastard: yes node [16:04] JimBastard: zmbmartin: im using node for a lot of projects right now, but no technology is a silver bullet [16:04] JimBastard: you are best off identifying your needs and then picking the tool which will be suit that need [16:04] JimBastard: best suit* [16:05] JimBastard: there are a million blogging engines in a ton of languages [16:06] zmbmartin: Well like right now I have been doing a lot of custom cms type stuff for clients. I use rails currently. Is there any reason to use node for something like that. I am trying to wrap my head around some good use cases. [16:06] technoweenie: oh rad, npm uninstall automatically removes the oldest one [16:07] JimBastard: zmbmartin: you have a working solution on an established platform people are paying you for? and you want to switch to software that isnt v 1.0.0 yet? [16:08] JimBastard: i mean, i love node, in many many ways [16:08] JimBastard: but perhaps you should keep it real [16:08] bpot has joined the channel [16:08] zmbmartin: JimBastard: No not that I want to switch. I am just looking for something to test out node and mess with it. [16:08] JimBastard: zmbmartin: i would think something with web sockets would be a good start? [16:08] JimBastard: like some real-time stuff? [16:08] technoweenie: and right after that i run into some weirdsies in npm [16:09] JimBastard: whats wrong technoweenie ? [16:09] technoweenie: ah nothing, wrong command. i was doing `npm build .` instead of `npm install .` [16:09] JimBastard: technoweenie: we really need some fancy looking docs for npm [16:09] zmbmartin: JimBastard: ok thanks [16:10] technoweenie: http://github.com/isaacs/npm/blob/master/doc/developers.md [16:10] bradleymeck_: wish i could use and actually get the json obj automagically [16:10] JimBastard: technoweenie: i said "fancy" [16:11] npup has joined the channel [16:12] bradleymeck_: you mean html page docs then? [16:13] JimBastard: that too [16:13] JimBastard: the kiwi site looks a million times better then the npm site right now too [16:14] JimBastard: which is kinda sad [16:14] technoweenie: boo hoo [16:14] bradleymeck_: lol [16:15] tjholowaychuk: pff that site sucks [16:15] tjholowaychuk: not sure why people are still following kiwi though [16:16] TrisMcC: tjholowaychuk: tjholowaychuk: that green link color burns my eyes :) [16:16] tjholowaychuk: :D [16:16] tjholowaychuk: yes yes it does [16:17] tjholowaychuk: the only thing i like more about kiwi right now i think, is the help, and the repl [16:17] tjholowaychuk: and the less verbose output lol but thats understandable for debugging at this stage [16:17] davidsklar has joined the channel [16:17] bradleymeck_: there is a new ls just sitting on the ls2 branch [16:17] gf3_ has joined the channel [16:18] innu: there are many testing modules out. Any suggestions what to use for testing web server? [16:18] tjholowaychuk: innu: expresso [16:18] tjholowaychuk: :) [16:18] tjholowaychuk: CI friendly [16:18] tjholowaychuk: super fast, super easy [16:18] tjholowaychuk: etc [16:18] tjholowaychuk: lol [16:19] TrisMcC has joined the channel [16:19] innu: okay, ty [16:19] tjholowaychuk: oh and it has code coverage reporting :) which is really nice [16:20] bradleymeck_: jimbastard you have to reapply the whole styling class w/w json_stylesheet if you change one property in real time? [16:20] richcollins has joined the channel [16:20] spot__ has joined the channel [16:20] tswicegood has joined the channel [16:21] benburkert has joined the channel [16:22] bbn has joined the channel [16:22] JimBastard: hi bradleymeck_ , back [16:22] proppy: is there an npm command to show to json file for a given package ? [16:23] JimBastard: no bradleymeck_ that page was just a one off thing i put together in an hour or so, based on a technique i used for a project [16:23] JimBastard: errr, s/no/so [16:23] JimBastard: bradleymeck_: you should be able to change on property without any issue [16:23] JimBastard: the DOM itself holds your current "state" [16:25] proppy: should I use postgres or node_postgres [16:26] proppy: they look identical to me [16:26] tjholowaychuk: ACTION is doing client side js for the first time in months [16:26] tjholowaychuk: ooOoO [16:27] JimBastard: lol tjholowaychuk [16:27] JimBastard: here [16:27] JimBastard: 's a hint [16:27] JimBastard: getElementById [16:27] JimBastard: ;-) [16:27] tjholowaychuk: haha pff [16:27] JimBastard: also, last time i checked javascript doesnt work in internet explorer at all [16:27] JimBastard: i heard they might include it in IE10 [16:28] tjholowaychuk: more like IE99 [16:28] mjr_: No way. Bill Gates will never let that happen. [16:28] tjholowaychuk: assholes releasing new shit every few months [16:28] JimBastard: i heard the new JS engine in IE was node.js [16:28] markwubben_ has joined the channel [16:28] tjholowaychuk: haha [16:28] gf3 has joined the channel [16:29] bradleymeck_: dont forget IE8 is 100% conformant w/ css2.1 MS said so [16:30] whoahbot has joined the channel [16:31] amuck has joined the channel [16:32] ph^ has joined the channel [16:32] tjholowaychuk has left the channel [16:33] tjholowaychuk has joined the channel [16:33] felixge has joined the channel [16:33] felixge has joined the channel [16:35] zomgbie has joined the channel [16:36] CrabDude has joined the channel [16:37] creationix has joined the channel [16:38] sveisvei has joined the channel [16:38] rauchg_ has joined the channel [16:38] mklappstuhl has joined the channel [16:38] creationix: tjholowaychuk: I've got some ideas about changing the connect executable [16:39] creationix: fairly major changes [16:39] tjholowaychuk: creationix: shoot [16:39] creationix: I think that the whole child-parent process relationship with the multicore is something we should take advantage of [16:39] creationix: even on single process mode [16:39] creationix: then the master process can restart the child process when it dies [16:40] creationix: and we can set a list of files to watch, and when they change, restart the child process [16:40] tjholowaychuk: ya that was the direction i wanted to go too [16:40] tjholowaychuk: would be sweet if the parent could daemonize itself though to watch over the children [16:40] creationix: Also, I'm still not sold on the idea of pid files and log files being part of "connect" [16:41] creationix: but if it's in there, it should be an independent setting from the child process stuff [16:41] JimBastard: are you guys daeomozing over the wire at all yet? [16:41] creationix: JimBastard: over the wire? [16:41] JimBastard: daemonizing [16:41] JimBastard: yeah, creating child processes on another machine over the network [16:41] zomgbie has joined the channel [16:41] tjholowaychuk: creationix: kinda need the pidfiles though if your parent dies [16:41] proppy: Error: /usr/lib/node/.npm/postgres/0.0.1/package/build/default/binding.node: invalid ELF header [16:41] creationix: JimBastard: no, just local ones [16:41] proppy: ouch [16:42] JimBastard: i should probably start committing to Connect [16:42] creationix: proppy: did you copy it to a new machine [16:42] gf3: hey inimino, seems your PanPG demos are broken [16:42] creationix: JimBastard: We've got a cla now, sign away [16:42] creationix: tjholowaychuk: also I think exceptions should be logged to stderr [16:42] inimino: gf3 ⋱ ah, which ones? [16:42] inimino: the HEAD probably is right now [16:42] creationix: I'm debugging an iPad app, and it's a pain to get at the exception in ajax calls [16:42] tjholowaychuk: creationix: ya they should be, its slower but hey [16:42] gf3: inimino: I only checked the arithmetic and ECMAscript demos [16:43] creationix: tjholowaychuk: well, exceptions should be the "exception" so speed isn't a concern [16:43] creationix: plus when the child process dies and gets restarted, that should be logged to stderr too [16:43] tjholowaychuk: haha ya, hopefully your app does not have shitloads of exceptions anyways [16:43] tyfighter has joined the channel [16:43] creationix: then to daemonize an app, you just use nohup/screen and output redirection [16:43] inimino: gf3 ⋱ got a link? [16:44] creationix: or the built-in stuff in most OSes [16:44] gf3: inimino: http://boshi.inimino.org/3box/PanPG/build/demo.html [16:44] gf3: inimino: http://boshi.inimino.org/3box/PanPG/build/ES5.html [16:44] creationix: tjholowaychuk: one more thing [16:44] creationix: I would love the ability to host a single instance on more than one port, especially if it could be ssl on one port but plain on another [16:44] JimBastard: creationix: i think i will. there is definitely some overlap between broodmother and connect. connect is geared way more towards middleware though, opposed to hosting [16:44] tjholowaychuk: im fine with that, its not ideal to redirect manually all the time n shit but its fine [16:45] inimino: gf3 ⋱ hm, ok, yeah, the ES5 one is definitely broken [16:45] creationix: JimBastard: well, the "connect" executable had nothing to do with middleware [16:45] creationix: it's really a seperate project [16:45] JimBastard: really? [16:45] creationix: JimBastard: yep, it works with any instance of http.Server [16:45] creationix: you don't have to use connect at all [16:45] JimBastard: the only thing im concerned about is when you guys start load balancing over the wire [16:45] JimBastard: because thats essentially all the work we are doing [16:46] creationix: tjholowaychuk: I'm thinking I'll just start a new project since I want to change the features so much. It needs to be pulled out anyway [16:46] JimBastard: obviously, id rather not do the same thing twice [16:46] V1 has joined the channel [16:46] tjholowaychuk: creationix: chuck it on sencha though [16:46] creationix: JimBastard: no plans for that [16:46] creationix: tjholowaychuk: of course [16:46] creationix: I just need to get access to that repo [16:46] JimBastard: creationix: so hopefully then by the time i can release something stable, you guys will be in a place where you might start considering that [16:47] creationix: JimBastard: yeah, Sencha isn't a hosting company, we sell frameworks [16:47] creationix: but our customers will need somewhere reliable to host their stuff [16:48] proppy: has anyone used node_postgres with npm ? [16:48] liucougar has joined the channel [16:49] creationix: tjholowaychuk: what should we name the new runner, probably not "connect" [16:49] tjholowaychuk: creationix: hmm not to sure [16:49] admc has joined the channel [16:49] admc_ has joined the channel [16:49] creationix: tjholowaychuk: I'll just put it in the connect repo till I'm able to straighten out the github stuff [16:50] creationix: "firestarter" [16:50] tjholowaychuk: i need to get some node stuff in production so i actually use this stuff haha [16:50] tjholowaychuk: nup [16:50] tjholowaychuk: lol [16:50] tjholowaychuk: i dont know i suck at names [16:51] creationix: "commence" [16:51] gf3: creationix: go_forth [16:51] JimBastard: im good at names [16:51] gf3: creationix: godspeed [16:51] JimBastard: god = bad nlp [16:51] creationix: "twitch" [16:51] gf3: JimBastard = STFU [16:51] JimBastard: no u? [16:51] creationix: "institute" [16:52] gf3: creationix: pedal_to_the_metal [16:52] creationix: gf3: lol [16:52] gf3: creationix: crank_that_shit_to_11 [16:52] JimBastard: Ignite [16:52] JimBastard: Catalyst [16:52] creationix: ignite sounds good, wonder if that's taken [16:52] JimBastard: for sure [16:52] JimBastard: by like 10 things i bet [16:52] creationix: first thing that comes to my mind is code igniter [16:52] JimBastard: Combust [16:53] JimBastard: Assplode [16:53] creationix: JimBastard: remember, this is for enterprise people too [16:53] gf3: pffft [16:53] aconbere has joined the channel [16:53] creationix: one of the reasons rails failed is because of names like "mongrel" [16:53] gf3: failed? [16:53] JimBastard: Scortch [16:53] creationix: gf3: in the enterprise area [16:54] creationix: ask anyone who's worked at engine yard [16:54] creationix: it's next to impossible to sell them rails [16:54] gwoo has joined the channel [16:54] JimBastard: whats are we trying to name again creationix ? [16:54] JimBastard: the thing that uses multicores? [16:54] tjholowaychuk: yea [16:54] dgathright_ has joined the channel [16:54] tjholowaychuk: the old connect bin [16:55] creationix: JimBastard: the thing that launches connect apps (or any app exported as http.Server instance) [16:55] tjholowaychuk: we should write tests for it this time, its a bit tricky for executables but doable [16:55] creationix: it needs to handle config files, multi-core stuff, restarting [16:55] JimBastard: "Launch" [16:55] creationix: launch is about as generic as connect [16:55] JimBastard: too generic ? [16:55] creationix: not sure, "Connect" wasn't my idea [16:55] gf3: creationix: launch pad [16:56] davidsklar: pick one of the beasts listed on http://en.wikipedia.org/wiki/Polycephaly [16:56] creationix: gf3: too cannonical [16:56] gf3: creationix: start line [16:56] JimBastard: one word verbs arent bad [16:57] creationix: I still like ignite, but launch isn't bad either [16:57] creationix: but I'll bet launch is already taken on linux (in the command namespace) [16:57] creationix: I know node was [16:57] JimBastard: Spark-plug [16:57] JimBastard: ehhh [16:57] JimBastard: I like Ignite and Launch, but they might be too generic / already taken [16:58] Astro: how about "Motor"? [16:58] JimBastard: "Starter" [16:58] gf3: Mordor [16:58] JimBastard: "Iginition" [16:58] JimBastard: Iginition [16:58] Astro: Flash [16:58] hober: go [16:58] Astro: win [16:58] gf3: eh I think in the end it doesn't really matter [16:58] JimBastard: I kinda like Ignition [16:58] JimBastard: gf3: it matters immensely [16:59] JimBastard: the name is the first thing people will see / hear about your project [16:59] creationix: JimBastard: I want something short, people will type this every time they start an app [16:59] creationix: easy to spell matters too [16:59] JimBastard: Spark ? [16:59] Astro: awesomize [16:59] JimBastard: creationix: do you need a name right now? [16:59] tjholowaychuk: conceptually i think connect was a good name for it, but yeah confusion is no good :( [17:00] creationix: spark is good [17:00] Astro: is "fuel" a verb? [17:00] JimBastard: since its the spark that starts up everything [17:00] ryah: Astro: to fuel is a ver [17:00] creationix: Astro: it can be [17:00] quirkey has joined the channel [17:01] creationix: spark is my favorite, the closest thing in debian is "spork" from libspork-perl [17:01] Astro: if only petrol wouldn't have such a negative connotation these times :) [17:01] creationix: "command-not-found" in ubuntu is awesome [17:02] Astro: Spark is the name of a popular XMPP library for Java iirc [17:02] creationix: Astro: ryah, I have a technical question for you two. I want to be able to bind the same http.Server instance to two ports at the same time, but one be ssl enabled and the other plain [17:02] Astro: http://www.igniterealtime.org/projects/spark/index.jsp [17:03] JimBastard: Spark 2.5.8 Latest build: November 14, 2007 [17:03] Astro: creationix: thought about that too, but would have gone for 2 instances [17:03] JimBastard: creationix: we use multiple instances [17:03] creationix: Astro: well, if I'm able to use the same instance, then I can use stuff like nStore without any locking [17:04] mjr_: creationix: surely different http.Server's can use the same "request" callback, no? [17:04] mjr_: ryah: any chance of getting that dgram patch in? I using it for some things now, and it'd be nice to get it upstream. [17:04] creationix: mjr_: yeah, that was my thinking [17:04] creationix: maybe make a new http.Server instance that shares the closure and callback from another [17:04] bbn has joined the channel [17:04] mjr_: or use a named callback. [17:05] tswicegood has joined the channel [17:05] proppy: how do I encode in json from node ? [17:05] tjholowaychuk: isaacs: any reason I can publish to dox but not tag it, its saying i dont have permission [17:05] creationix: mjr_: remember that I have to do this externally without changing the app [17:05] creationix: proppy: JSON.stringify [17:05] WALoeIII has joined the channel [17:05] proppy: should I import it ? [17:05] tjholowaychuk: proppy: nope [17:05] creationix: proppy: nope, it's built in [17:05] tjholowaychuk: global [17:05] proppy: is there an npm version ? [17:05] proppy: oh ok [17:05] creationix: proppy: JavaScript comes with some interesting stuff built in [17:05] mjr_: at least recent JS does. [17:05] proppy: :) [17:05] creationix: proppy: http://wiki.github.com/ry/node/ecma-5mozilla-features-implemented-in-v8 [17:06] proppy: creationix: is there something like foreach but for array ? [17:06] proppy: like jquery.each() :0 [17:06] creationix: proppy: forEach is only for arrays [17:06] creationix: and yes it's built in [17:06] creationix: see the wiki page [17:06] proppy: creationix: in my memory foreach also work on object [17:06] proppy: and iterates throught keys [17:06] creationix: proppy: I wish that was the vase [17:06] creationix: *case [17:07] proppy: creationix: ok forEach != foreach [17:07] creationix: it doesn't, but it's easy to add http://github.com/creationix/proto/blob/master/lib/proto.js#L29 [17:07] proppy: foreach(k in obj) {} is a javascript build in [17:07] proppy: builtins [17:07] creationix: proppy: you're thinking for [17:07] proppy: yes :) [17:07] proppy: sorry for the confusion [17:07] creationix: it's not a function, but a language feature [17:07] mjr_: Object.keys(obj).forEach(function (v) {})); [17:07] creationix: and for..in is terrible slow [17:07] proppy: creationix: thanks for the tip [17:08] creationix: the fastest way to iterate over an array if a plain for (i = 0; i < length; i++) style loop [17:08] creationix: and the fastest way to iterate over an object is to do the same thing over the Object.keys of that object [17:08] creationix: s/if a/is a/ [17:09] tjholowaychuk: minus the global [17:10] proppy: creationix: thanks for the hint :) [17:10] creationix: yeah, Object.keys(obj).forEach(function (key) {})) is a pretty good compromise, still faster than plain for..in, but much easier [17:10] creationix: and works out of the box on node [17:10] mjr_: and looks awesome [17:11] creationix: mjr_: proppy: https://gist.github.com/bdd159b4f8f7c900d939 [17:11] creationix: benchmarks of the various options [17:11] creationix: it;s a couple months old, but probably still relevent [17:14] mostlygeek has joined the channel [17:14] creationix: ryah: so is it safe to share the same request handler for two http.Server instances? [17:15] JimBastard: creationix: im not sure if that approach is going to be the most efficient way to solve the problem [17:15] creationix: JimBastard: the two instances problem? [17:15] JimBastard: yeah? [17:15] creationix: why not [17:15] creationix: if it's possible it works great [17:16] ryah: creationix: ? [17:16] JimBastard: you can share the same handler, but the servers have to be on separate ports atm [17:16] ryah: mjr_: yes, i will merge it soon - forgot about it sorry [17:16] creationix: ryah: I want to have two instances of http.Server sharing the same onRequest handler function [17:16] ryah: that's fine [17:16] creationix: but one server is on port 80 [17:16] creationix: and the other is port 443 with ssl enabled [17:16] ryah: yeah, that works [17:17] JimBastard: so creationix you want to route the request based on the port then [17:17] JimBastard: in the common handler you'd have a conditional [17:17] JimBastard: ? [17:17] creationix: JimBastard: no, I want everything routed to the same callback [17:17] creationix: no conditional [17:17] creationix: I just want to be able to access it with either ssl or not [17:17] aliem_ has joined the channel [17:17] JimBastard: ahhh [17:17] JimBastard: yeah, why not? [17:18] JimBastard: i thought you wanted separate apps runnin on the same port [17:18] creationix: and since the req object is generated on each request it will say if they came in ssl or not [17:18] JimBastard: its the same app, just one ssl one isnt [17:18] creationix: yep [17:18] creationix: running real apps on node is great, I run into real-world use cases [17:18] qschzt has joined the channel [17:19] creationix: I've all but given up on vhosting for now, since I don't have many sites on my server, I just buy extra ips [17:19] tjholowaychuk: creationix: ya thats my issue right now, i need to start actually using it [17:19] creationix: it simplifies things a lot [17:21] ryah: mjr_: can you point me to your patch [17:22] derferman has joined the channel [17:23] mjr_: ryah: http://github.com/mranney/node/commit/a1a69090c56ca554de7761232a694a61beb09e63 [17:23] inimino: gf3 ⋱ fixed now, thanks [17:23] gf3: inimino: awesome, thanks! [17:26] ryah: mjr_: can i have that without the docs? [17:26] ryah: mjr_: cause someone aready contributed a bunch of dgram docs [17:26] ryah: mjr_: nm, i'll do it [17:26] mjr_: Yeah, I think my docs are more correct though, since the original API changed. [17:26] ryah: mjr_: okay [17:26] ryah: i'll just delete his [17:27] mjr_: I have all of the commits in my master branch if you want that, but I think my docs are more right. [17:27] kevwil has joined the channel [17:27] mjr_: I'll skim his docs and see if there's anything in there that I missed. [17:28] camilo_ has joined the channel [17:28] nrstott has joined the channel [17:28] mjr_: It turns out that you can't ever get messages on a unix domain dgram socket until you bind it, which was a surprising learning. [17:32] CIA-76: node: 03Peter Griess 07master * rb64a521 10/ src/node_buffer.cc : Buffer('') should create a 0-length buffer - http://bit.ly/cgydeU [17:32] CIA-76: node: 03Peter Griess 07master * re7c4f8c 10/ (src/node_buffer.cc test/simple/test-buffer.js): Buffer.copy() should liberally allow empty copies. - http://bit.ly/aQ8HJX [17:32] CIA-76: node: 03Matt Ranney 07master * r4e50197 10/ (8 files in 4 dirs): [17:32] CIA-76: node: Datagram socket refactor. Add tests and documentation. [17:32] CIA-76: node: Support setTTL() and setBroadcast() socket options. - http://bit.ly/bPin6v [17:32] ryah: mjr_: thanks [17:33] ryah: pgriess: thanks too [17:34] mjr_: cool, now I can UDP around. [17:35] mjr_: Of course, now I wish I had access to ICMP/raw sockets. [17:35] mjr_: First World problems. [17:35] franksalim: :-) [17:35] siculars has joined the channel [17:35] ryah: mjr_: :) [17:36] sechrist has joined the channel [17:36] mjr_: I really like the set of tests we have in node. [17:36] mjr_: It's really great to just blast through them all when you change something. [17:37] CIA-76: node: 03Ryan Dahl 07master * r5f30377 10/ (4 files in 4 dirs): [17:37] CIA-76: node: Load modules in individual contexts [17:37] CIA-76: node: Add NODE_MODULE_CONTEXTS env var [17:37] CIA-76: node: Only one test was modified to check that this works. NEED to go through all [17:37] CIA-76: node: tests and modify them so that [17:37] CIA-76: node: NODE_MODULE_CONTEXTS=1 make test [17:37] CIA-76: node: passes. - http://bit.ly/dopogF [17:37] CIA-76: node: 03Ryan Dahl 07master * r3a00470 10/ lib/module.js : Add 'root' global variable as reference to sandbox - http://bit.ly/9n7sJn [17:37] CIA-76: node: 03Ryan Dahl 07master * r6a57a42 10/ lib/http.js : Use Array.isArray instead of instanceof - http://bit.ly/dbympB [17:37] CIA-76: node: 03Ryan Dahl 07master * rddad872 10/ TODO : Add TODO list - http://bit.ly/ciIdUz [17:37] ryah: yeah, the tests are good [17:37] ryah: allows refactoring [17:37] creationix: there goes proto [17:37] creationix: "Load modules in individual contexts" [17:37] ryah: creationix: optionally [17:37] creationix: good compromise [17:38] ryah: by default it's how it was [17:38] creationix: so default it like before? [17:38] creationix: nice [17:38] tjholowaychuk: fewf [17:38] qschzt: woohoo, individual contexts [17:38] mikeal: JimBastard: you should respond to this http://groups.google.com/group/nodejs/browse_thread/thread/bacd7c429e8507f6# [17:38] JimBastard: hee hee hi mikeal [17:38] JimBastard: sorry ive been really busy this week, plus i got sick [17:38] JimBastard: we are hanging out [17:38] mikeal: i hate getting sick [17:38] JimBastard: paying homage to volcano god [17:38] JimBastard: writing JS [17:38] JimBastard: its on [17:39] JimBastard: responding now [17:39] JimBastard: i gotta bug the shit out of you about couchio too [17:39] mikeal: cool [17:40] jxson has joined the channel [17:40] tjholowaychuk: creationix: docs are a bit cleaner now http://extjs.github.com/Connect/api.html [17:40] creationix: tjholowaychuk: is that jsdoc? [17:40] creationix: looks nice [17:40] tjholowaychuk: creationix: my dox project, but it uses markdown / jsdoc tags [17:40] creationix: ok, even better ;) [17:41] creationix: tjholowaychuk: so does it cover all the included modules now? [17:41] tjholowaychuk: creationix: whatever has inline docs [17:42] V1: Is there a way to see or get notified when there is been written to the net.Stream. e.g when a net.Stream.write is executed? [17:43] TrisMcC has joined the channel [17:43] qschzt: ryah, what's the idea behind that contexting? [17:43] ryah: qschzt: each module has its own glboal context [17:45] qschzt: right, so if you built the bad habit of using globals you now need to inject them :D [17:46] qschzt: or re-initialize dependencies, say a db connection [17:48] creationix: mikeal: FYI http://creationix.couchone.com/ didn't work for the first day or so [17:48] creationix: but it's up now ;) [17:49] mikeal: we got blasted [17:50] mikeal: when we first launched, it took 2 seconds to get my couch up [17:50] mikeal: but 1.0 drove so much traffic that we got a little backed up :) [17:50] jesusabdullah: Good morning starshine! couchDB says hello! [17:51] agnat has joined the channel [17:52] rauchg_ has joined the channel [17:52] davidwalsh has joined the channel [17:52] rauchg_ has joined the channel [17:52] CIA-76: node: 03Ryan Dahl 07master * r9472812 10/ lib/module.js : Fix reference to root global context - http://bit.ly/cQVXrN [17:52] ph^ has joined the channel [17:53] mikeal has joined the channel [17:54] jherdman has joined the channel [17:55] bvleur has joined the channel [17:56] xer0xM has joined the channel [17:57] tjholowaychuk: wow [17:57] tjholowaychuk: http://rubygems.org/sign_in [17:57] tjholowaychuk: biggest login form i have ever seen haha [17:57] tjholowaychuk: I CANT READ IT [17:57] halorgium: lolz [17:58] dgathright_ has joined the channel [17:58] halorgium: HOW MANY CHARS IS YOUR PASSWORD? [17:58] creationix: all that rub code makes you blind [17:58] creationix: *ruby [17:58] tjholowaychuk: hahah [17:58] tjholowaychuk: haha jspec has 666 downloads for the current release [17:58] tjholowaychuk: nice [18:00] tjholowaychuk: my gems have a total of 22k downloads, pretty active compared to kiwi total of ~8000 installs across the board [18:00] zomgbie_ has joined the channel [18:02] saikat has joined the channel [18:02] programble has joined the channel [18:04] softdrink has joined the channel [18:06] maushu has joined the channel [18:09] mjr_: ryah: does this multi-context thing have a performance impact? [18:10] mjr_: I guess this is why we also need good performance tests to run that give consistent results, unlike the crazy jagged line ones we have. [18:11] ericvkng has left the channel [18:11] nefD has joined the channel [18:17] creationix: is there a public API way to do "process.binding('stdio').writeError" [18:17] creationix: sys.error is close, but it sticks newlines on the end of every call [18:17] creationix: there is no process.stderr stream to write to [18:18] jakehow has joined the channel [18:19] tjholowaychuk: damnit someone bought nodecasts.com before me [18:19] tjholowaychuk: i was going to buy it last week [18:19] tjholowaychuk: assholes lol [18:20] CrabDude has joined the channel [18:20] mau has joined the channel [18:20] technoweenie has joined the channel [18:20] hoodow has joined the channel [18:20] creationix: tjholowaychuk: watch what you say, it's probably someone in this room ;) [18:21] tjholowaychuk: haha [18:21] tjholowaychuk: it was seriously not taken like a week ago, so much for "nah no one will take it" [18:21] creationix: some sites that let you search for domains buy ones that people search for [18:21] JimBastard: i think nodecasts has been registered for a while [18:21] halorgium: Created on: 05-May-10 [18:21] JimBastard: yeah [18:21] tjholowaychuk: weird [18:21] halorgium: seems he lives in boston [18:22] CrabDude: domai.nr is a sweet domain checker, and they don't buy yo' domains [18:22] halorgium: JimBastard: you're over that way, eh? [18:22] JimBastard: what did i do halorgium [18:22] halorgium: JimBastard: you resided near boston [18:22] JimBastard: nyc [18:22] halorgium: nearer than me ;) [18:25] sh1mmer: what would we do without wireshark, that's what I want to know [18:25] Astro: sh1mmer: use tcpdump [18:25] sh1mmer: ACTION is not a real man [18:29] mjr_: Or if you are me, you'd use http_trace, now with pretty colors. [18:31] sh1mmer: mjr_: I'm inspecting dns packets [18:31] amuck has joined the channel [18:31] sh1mmer: with tshark I'm now a wireshark junkie [18:32] mjr_: yeah, my DNS decoder isn't done yet. It does some of it though. [18:32] sh1mmer: :) [18:32] sh1mmer: DNS decoder? [18:33] mjr_: Yeah, my pcap module decodes packets in node, including HTTP and DNS. [18:33] sh1mmer: oh sweet. I forgot about that [18:33] sh1mmer: ACTION hopes he hasn't been duplicating work [18:33] mjr_: Nowhere near as good as wireshark for things other than HTTP, but quite a bit better than wireshark for HTTP. [18:34] mjr_: I'd certainly welcome a better DNS decoder. [18:34] creationix: nohup is sweet! [18:34] creationix: who needs daemonize [18:34] mjr_: http://github.com/mranney/node_pcap/blob/master/pcap.js#L485 [18:35] tjholowaychuk: creationix: I always use nohup [18:35] mape: dont' use any of the "domina checkers" [18:35] tjholowaychuk: quick n dirty [18:35] mape: just whois it in the terminal [18:35] mjr_: Doesn't do the compression yet, but it's amost ready. [18:35] creationix: tj, here is how I'm starting a server [18:35] creationix: nohup spark > access.log 2> error.log & [18:35] sh1mmer: mjr_: there is definitely some duplication, and I like the way you are dealing with the packets [18:35] creationix: then I just [18:35] creationix: tail -f *.log [18:36] Guest47503: creationix, what about server reboot? [18:36] tjholowaychuk: creationix: ya, nothing wrong with that its just annoying [18:36] sh1mmer: I was just working on compression myself [18:36] tjholowaychuk: creationix: watch + tail is a good combo for logs [18:36] creationix: how does watch help? [18:36] tjholowaychuk: creationix: you can set an interval to execute the tail, its pretty slick one of my fav commands [18:37] creationix: tjholowaychuk: oh, I just -f on tail [18:37] mjr_: sh1mmer: let me know if you want help integrating with my pcap lib. The more things it knows how to decode, the better. [18:37] derferman has joined the channel [18:38] tjholowaychuk: creationix: ah :) that works too [18:38] tjholowaychuk: sooo many options [18:38] creationix: interesting, so nohup doesn't detach from your process till it dies [18:38] creationix: I like this much better than screen [18:39] tjholowaychuk: never even heard of screen [18:39] sh1mmer: mjr_: right, this is perfect. I'll probably give you back the RR section [18:39] sh1mmer: unless you are working on it somewhere else [18:39] mjr_: tmux is the new hotness if you want screen-stuff. [18:39] sh1mmer: because I prefer your approach to dealing with packets than the one I've been using but I've been working on the RR section today [18:40] mjr_: sh1mmer: I'm mostly just using pcap to debug some proprietary protocols right now. [18:40] mjr_: But if you want to replace pcap.decode.dns with something better, that'd be great. [18:41] mjr_: It already decodes the question section, but that doesn't use compression. It just needs a section decoder that does compression, and then it can be applied to all 4 sections. [18:43] sh1mmer: mjr_: right [18:43] felixge has joined the channel [18:44] felixge has joined the channel [18:44] tjholowaychuk: anyone know a decent solution for $ open -a Google\ Chrome someUrl [18:44] tjholowaychuk: without opening a new tab if that document is already open [18:44] felixge: ryah: yt? [18:45] kriszyp_ has joined the channel [18:45] b_erb has joined the channel [18:46] felixge: ryah: I was wondering if you could merge that CONNECT patch: http://github.com/sgala/node/commit/9c7a26dadbad849c433a60378274cc441f6ac9bc [18:54] blaines has joined the channel [18:55] bmizerany has joined the channel [18:59] creationix_ has joined the channel [18:59] JimBastard: tjholowaychuk: you alive? [19:00] tjholowaychuk: JimBastard: nope [19:00] JimBastard: whats up with http://github.com/visionmedia/ext.js/blob/master/lib/ext/core_ext/array/enumerable.js#L58 [19:00] JimBastard: why not use, function include(arr,obj) { return (arr.indexOf(obj) != -1); } [19:00] JimBastard: is that the same? is one faster? [19:00] tjholowaychuk: you can do arbitrary things [19:00] tjholowaychuk: but my example sucks [19:01] JimBastard: i see [19:01] JimBastard: direct match versus function [19:01] tjholowaychuk: for example you could "find" a value that has a length over 5 or something [19:01] JimBastard: doesnt filter do this already? [19:01] tjholowaychuk: that whole lib is pretty out of date i havent touched it in ages [19:01] JimBastard: Array.filter ? [19:01] JimBastard: got ya [19:01] JimBastard: i was just curious [19:01] tjholowaychuk: filter will grab all matches find is just one [19:01] tjholowaychuk: for ruby people filter is like select [19:02] JimBastard: got ya [19:02] JimBastard: ya, im working on a pointless library again [19:02] tjholowaychuk: nice lol what is it [19:02] JimBastard: i might have a release by EoD [19:02] JimBastard: role managment [19:02] tjholowaychuk: ah nice [19:02] tjholowaychuk: gotta run for lunch [19:02] tjholowaychuk has left the channel [19:02] JimBastard: ehh, its kinda stupid im not building it on top of an ORM [19:03] JimBastard: but that can be the next version when resourcer is done [19:03] JimBastard: ahh splendid, im talking to myself again [19:03] stagas: lol [19:08] V1: woah, I totally forgot we can now finally use 'const' in our JavaScript, yay! [19:09] JimBastard: lolwut [19:10] V1: const cantchangeme = "hello"; cantchagneme = "world"; <-- error [19:10] JimBastard: i didnt think anything was constant in javascript, except pain [19:10] JimBastard: really? [19:10] technoweenie: i've never seen anyone get excited about constants [19:10] jesusabdullah: JimBastard: Sassy! [19:10] technoweenie: fuck yea, i can set a variable only once [19:10] jesusabdullah: Now we're cookin', right? [19:10] JimBastard: technoweenie: i heard you can change the values of const's in ruby [19:11] technoweenie: baby, you got a stew! [19:11] jesusabdullah: :9 [19:11] V1: well error, it's not throwing an error, it just doesn't change the value [19:11] technoweenie: JimBastard: of course you can. ruby warns you of course [19:11] JimBastard: ahahahahaha, epic [19:11] technoweenie: but you can tell ruby to shut the fuck up too. its great [19:11] technoweenie: i bet you cant set a javascript const [19:11] technoweenie: its all like 'no' [19:12] jesusabdullah: javascript obviously needs to get back in the kitchen. [19:12] technoweenie: node> const fuck = 'jimbastard' // => TypeError: const 'fuck' has already been declared [19:12] mscdex: i'm not surprised to see 'const' in js, since you can now freeze objects too [19:12] technoweenie: yay freezing objects [19:12] JimBastard: well, in ecma 5 can you set Writable to false? [19:12] technoweenie: freeze ray! freeze ray! [19:12] jesusabdullah: technoweenie: Did you just watch Despicable Me? <_< [19:12] technoweenie: yea [19:13] jesusabdullah: Haha [19:13] technoweenie: twice! having a kid is awesome [19:13] jesusabdullah: I was pleasantly surprised [19:13] jesusabdullah: Girlfriend wanted to see it [19:13] technoweenie: i loved the shark. i want a shark underneath my living room while i code [19:13] JimBastard: what is this "girlfriend" thing? is that a new node module? [19:13] jesusabdullah: She showed me the trailer and then was like, "ehh? Ehh?? :D :D" and I was like ":| sure whatev" [19:13] technoweenie: liiiiightbuulb [19:13] tmedema: Q: how do I send actual GET data (like ?someVar=test in the browser url) using httpClient.request("GET", ... ? [19:14] technoweenie: tmedema: put it in the uri [19:14] mscdex: yep [19:14] jesusabdullah: var Girlfriend = require('girlfriend'); [19:14] jesusabdullah: var lisa = new Girlfriend() [19:14] mscdex: !api request:methods [19:14] _api: mscdex: (http.Client) method: request([method], path, [request_headers]) -- Issues a request; if necessary establishes stream. Returns a `http.ClientRequest` instance. [ http://nodejs.org/api.html#client-request-187 ] [19:14] mscdex: path [19:14] jesusabdullah: But yeah, fun movie [19:14] TommyM has joined the channel [19:14] JimBastard: jesusabdullah: lets integrate that with http://github.com/marak/say.js [19:14] jesusabdullah: The kids were surprisingly well-characterized too [19:14] tmedema: path mscdex ? [19:15] mscdex: request('GET', '/?someVar=test'); [19:15] jesusabdullah: JimBastard: XD [19:15] tmedema: oh I see [19:15] jesusabdullah: Man I kinda wanna write some kinda AI thing in node now [19:15] tmedema: thanks [19:15] jesusabdullah: Sounds kinda silly, but there are totally tools there! [19:15] creationix_: ryah: how hard is it to set the process name as seen in htop on linux? [19:15] JimBastard: jesusabdullah: markov bot [19:15] mscdex: Eliza? [19:15] mscdex: :> [19:15] JimBastard: jesusabdullah: pleeeease [19:15] creationix_: marshall_law: do you know? [19:16] jesusabdullah: Hehe [19:16] jesusabdullah: someday, perhaps [19:16] pdelgallego has joined the channel [19:16] jesusabdullah: I saw a neural network module for node the other day [19:16] jesusabdullah: That surprised me [19:16] JimBastard: feeding my irc logs + jimbastard.com stories + a few chapters of leviticus = best markov bot ever [19:16] JimBastard: you pretty much can't tell the diffirence [19:16] marshall_law: creationix_: i dunno what htop uses, but i know for ps you need to replace the entire argv [19:17] creationix_: marshall_law: I think it's the same as ps [19:17] marshall_law: but, that doesn't change the process name in other things like window name etc [19:17] jesusabdullah: SubStack had a markov perl bot once. He fed it transcripts of quantz from ohnorobot.com [19:17] creationix_: is that possible from js, I'm guessing no [19:17] jesusabdullah: It was awesome [19:17] marshall_law: creationix_: i think the problem is that changing it just isn't consistent [19:17] jesusabdullah: until its database got unmanageably big and it would take serfbot like 15 minutes to process input [19:17] marshall_law: some things re-read memory, other things cache it [19:17] JimBastard: jesusabdullah: :-\ [19:17] JimBastard: jesusabdullah: thats a badly written chain [19:17] jesusabdullah: He would say so too [19:17] marshall_law: there's not an API or anything that I know of [19:17] creationix_: marshall_law: as long as it works for some cases, I think that's a good start [19:18] creationix_: people usually control their deployment environment [19:18] marshall_law: creationix_: i still don't understand the usecase, can't you just rename the binary or wrap in a shell script? :) [19:18] huyhong has joined the channel [19:18] creationix_: marshall_law: not really [19:18] creationix_: all my connect apps look like "node /usr/local/bin/connect" in ps [19:18] marshall_law: sure [19:18] creationix_: it's hard to tell which is which [19:19] eisd_ has joined the channel [19:19] jesusabdullah: I thought it would be fun to feed reddit comments to a markov bot [19:19] jesusabdullah: hmm [19:19] marshall_law: oh i see so you want some metadata in the ps line that may not exist in the actual command? [19:19] JimBastard: jesusabdullah: reddit is fail [19:19] JimBastard: jesusabdullah: look at their alexa rank for the past 12 months [19:20] JimBastard: the community has gone to shit [19:20] jesusabdullah: tssch! [19:20] JimBastard: they had a HUGE spike in users [19:20] jesusabdullah: It does have its problems :( [19:20] jesusabdullah: but I still like it [19:20] jesusabdullah: Except for people that fake AMAs [19:20] jesusabdullah: assholes >_<; [19:20] JimBastard: jesusabdullah: ive seen way too many factual / correct comments get downvoted [19:20] JimBastard: jesusabdullah: i just about lost it over the whole asciimo business [19:20] jesusabdullah: orly? [19:20] marshall_law: creationix_: ^ [19:20] JimBastard: no one cares about facts anymore on reddit, just sensationalism [19:20] JimBastard: fuck that [19:21] jesusabdullah: I actually was wondering what the node community thought of the asciimo fiasco [19:21] JimBastard: i can summarize for you [19:21] JimBastard: 1. no one cares, stfu jiimbastard [19:21] jesusabdullah: I read about it on reddit, but, u noe [19:21] JimBastard: 2. wow jimbastard is an asshole [19:21] creationix_: marshall_law: ideally, I'd be able to modify the argv[0] from within the js based on a value in a config file [19:21] JimBastard: 3. hrmm, jimbastard seemed to have corrected everything and is legit [19:21] JimBastard: 4. stuf, no one cares jimbastard [19:21] creationix_: I can just create a --comment flag on connect and ignore it [19:21] JimBastard: thats about it [19:22] stagas: what if we modified Packer a bit to randomize variable names before serving js to the client, so that every client gets a different copy on every request. wouldn't that discourage hacking a bit? [19:22] creationix_: but then I have to remember to type that every time [19:22] jesusabdullah: Is this the part where you reveal that JimBastard and Marak are ONE AND THE SAME?? [19:22] marshall_law: creationix_: you could just create a node-based query script :) [19:22] JimBastard: lol THEN WHO WAS CODE [19:22] marshall_law: something ala httpd [19:22] JimBastard: yeah jesusabdullah , thats me [19:22] jesusabdullah: Makes me think of that Old Spice commercial: "Because I'm a woman!" "HA! Just kidding! Because I'm a MAN" [19:22] jesusabdullah: Oh, awesome [19:22] jesusabdullah: Yeah, your reaction was interesting to watch [19:23] creationix_: marshall_law: so a mini htop just for node? [19:23] marshall_law: :) [19:23] marshall_law: yup, or connect [19:23] JimBastard: hee hee, jesusabdullah . people are dumb, and easily manipulated. [19:23] marshall_law: custom tailored w/ startup, shutdown etc [19:23] JimBastard: you throw out a few key words and act crazy enough and you can start up a shit storm [19:24] marshall_law: basically a remote console.. you could probably do a lot with it eventually [19:24] jesusabdullah: *nod* [19:24] jesusabdullah: You ever read Zed Shaw's rant about trolling reddit? That was interesting [19:24] JimBastard: haa haa no [19:25] creationix_: marshall_law: that would be cool, but I'd like to paly nice with existing tools too (htop, ps) [19:26] jesusabdullah: JimBastard: http://oppugn.us/posts/1276025130.html [19:26] jesusabdullah: Read to the end [19:26] creationix_: marshall_law: I think I'll just add --comment for now [19:26] JimBastard: reading [19:26] marshall_law: creationix_: IMO ps is for system level info, but it's just a matter of preference [19:26] creationix_: ps shows all the arg info [19:26] eee_c has joined the channel [19:26] creationix_: well, htop does at least [19:27] marshall_law: creationix_: there's a reason why most servers have a remote console of some kind :) [19:28] creationix_: marshall_law: well, what I want it for is when managing my system I know which processes are what [19:28] jesusabdullah: ACTION likes htop [19:28] creationix_: I would want that outside of any custom console [19:28] marshall_law: ACTION shrugs [19:29] marshall_law: like i said, just a matter of preference i think.. i don't like my ps showing data that wasn't used in the execution of the process [19:29] JimBastard: ahaha nice jesusabdullah , too bad im perma-ban on HN [19:29] jesusabdullah: How'd you manage that? [19:30] marshall_law: creationix_: htop is nice :) [19:30] JimBastard: the problem with HN is that they ban you / downvote if you say anything controversial without backing it up. i guess thats a good thing, but for those who don't feel like spending 2 hours writting HN comments.... [19:30] creationix_: marshall_law: well, you've convinced me to not hack the process [19:30] marshall_law: LOL [19:30] JimBastard: jesusabdullah: mostly just being a dick, but it all started when i said dustin curtis was a retarded [19:30] creationix_: I'll just pass a comment flag [19:30] JimBastard: that was the first ban [19:31] marshall_law: creationix_: it's probably for the best.. i do feel like there's a certain purity about process management [19:31] javajunky has joined the channel [19:31] JimBastard: then they banned me again for the whole asciimo thing, which was kinda annoying [19:31] locks has joined the channel [19:31] spot|2 has joined the channel [19:31] jesusabdullah: Yeah, that's kinda too bad. I mean, I can see why people would be like "wtf" but you *did* fix it, and I think that shows some level of good intentions, y'know? [19:32] marshall_law: creationix_: see the windows process manager for a good example, they have the tab with apps that have more descriptive names but i almost always invariably go back to the big low level list and force close from there [19:32] JimBastard: jesusabdullah: the whole thing was a huge joke. if i had spent an additional 5 minutes researching, i would have saved myself a ton of time and money. there are already open source figlet parsers out there [19:32] JimBastard: we totally tossed 100% of that guys code too, and i paid scottg from jquery to rebuild it clean room style [19:32] creationix has joined the channel [19:32] jesusabdullah: hmm [19:33] JimBastard: the whole project was like a 1.5 day thing [19:33] JimBastard: i could really give two fucks about in the big picture [19:33] jesusabdullah: I see what you mean [19:33] jesusabdullah: mountains out of molehills and all that [19:34] JimBastard: yeah, when two dysfunctional personalities meet on the internet and all [19:34] jesusabdullah: Haha [19:34] JimBastard: at least im not in denial [19:34] jesusabdullah: I never actually heard of dustin curtis before [19:35] JimBastard: he's kinda a retard [19:35] JimBastard: ACTION gets banned [19:35] jesusabdullah: hah [19:35] KungFuHamster_ has joined the channel [19:36] jesusabdullah: He strikes me more as a milquetoast than a retard [19:36] JimBastard: learnt a new word today [19:36] JimBastard: http://en.wikipedia.org/wiki/Milquetoast [19:36] derRichard has left the channel [19:36] jesusabdullah: Mom taught me that one [19:37] blowery: bloom county taught me [19:37] jesusabdullah: I'm too young for bloom country [19:37] jesusabdullah: er [19:37] jbrantly has joined the channel [19:37] jesusabdullah: bloom county [19:37] jesusabdullah: Does that make you feel old? <_> [19:37] blowery: no, just superior [19:37] blowery: ;P [19:37] jesusabdullah: aww :( [19:38] blowery: being old makes me feel old [19:38] blowery: i used irc when it was the only option! /me finds his cane [19:38] jesusabdullah: Hah [19:38] jesusabdullah: I'm barely older than irc, as it turns out [19:39] jesusabdullah: Pretty sure [19:39] maushu has joined the channel [19:39] beawesomeinstead has joined the channel [19:40] blowery: oh lord [19:40] tjholowaychuk has joined the channel [19:40] blowery: i could be talking to people born in the 90's [19:41] blowery: how weird. [19:41] mscdex: yep, those were the days [19:41] meder: my friend was born on january 1, 1990 [19:41] meder: like the first second of it [19:41] jesusabdullah: JimBastard: say.js uses OS X's built-in speech tools? [19:42] mscdex: # whereis kid.js [19:42] mscdex: huhu [19:43] bmizerany has joined the channel [19:44] creationix has joined the channel [19:46] aurynn has joined the channel [19:47] JimBastard: hey jesusabdullah , yeah its just a thin wrapper around "say" [19:47] JimBastard: jesusabdullah: there is an issue in there to have it work with festival i guess? whatever the linux one is [19:48] JimBastard: its not exactly the best library ever, but it does kinda do the job [19:48] JimBastard: you trying to use it for something? i'd be glad to patch it if you wanted to add something [19:49] jesusabdullah: JimBastard: Naw, but I found it interesting and noticed that mac OS was a requirement [19:49] Astro: the newest dgram commits in nodejs break with missing sun_len for me [19:49] benbinary has joined the channel [19:49] JimBastard: yeah, ill make it work on linux as soon as i get a testing env [19:49] aliem has joined the channel [19:50] Astro: I'd make a small patch (I'm on Linux), but that would mean the hassle of signing the CLA :P [19:50] stride: CLA? [19:50] brianmario has joined the channel [19:51] Astro: stride: http://nodejs.org/cla.html [19:51] stride: oh, never seen that, hmkay [19:52] creationix: Astro: might as well sign it, it's nice to be able to patch node when it breaks [19:53] jesusabdullah: It just says you're cool with your code being licensed open source, right? Like, a cover-your-ass kinda deal? [19:53] stride: I keep forgetting that the legal IP situation in the US sucks :) [19:53] bradleymeck__ has joined the channel [19:53] jesusabdullah: From where do you hail, stride? [19:54] JimBastard: yeah IP is gay [19:55] JimBastard: unless its not, which is in a bunch of cases [19:55] JimBastard: if people are releasing source code, let it be free [19:55] JimBastard: its complex [19:55] JimBastard: fuck im leaving now [19:55] stride: jesusabdullah: germany, guess we still have a few years before our situation is the same here :) [19:56] Astro: stride: germany is on the right way [19:56] sechrist: hola [19:56] sechrist: Has there been any improvements in html parsing in node? speed wise? [19:56] jesusabdullah: hah [19:57] bradleymeck__: you want sax or dom schrist? [19:57] sechrist: dom pretty much [19:57] bradleymeck__: then nope [19:57] jesusabdullah: What's sax? [19:57] stride: sequential parsing essentially [19:57] sechrist: well if sax is fast and it fits my use case i'm all game [19:57] JimBastard has joined the channel [19:57] sechrist: I want like sub 100ms for normal size webpages [19:58] sechrist: that seems to be hard to accomplish [19:58] softdrink has joined the channel [19:58] bradleymeck__: if you can use sax i thought there was a c module lying about that links to libxml [19:58] sechrist: that should be quick [19:58] JimBastard: whats the most succinct way to flip true to false and false to true? [19:58] sechrist: for a lot of html I parse isn't valid xml [19:58] devongovett has joined the channel [19:59] sechrist: ternary? [19:59] sh1mmer: JimBastard: ~ [19:59] sechrist: oooh [19:59] JimBastard: i think ~ might be it, checking thanks sh1mmer [19:59] sh1mmer: succinct != best [20:00] JimBastard: thats true, i just felt like an if / else statement was kinda lame [20:00] sh1mmer: ternary might be ok [20:00] meder: how is it ~? [20:00] bradleymeck__: x=!!!x; woot!, it doesnt convert all truthys to falseys [20:00] sh1mmer: meder: ~ is a logical not [20:00] sh1mmer: it bitflips [20:01] meder: ~ on false is still false [20:01] JimBastard: im consulting expert, one sec [20:01] bradleymeck__: ~ doesnt* [20:01] sechrist: yak shave [20:01] JimBastard: its not dependable for 2^32 values of signed int [20:01] JimBastard: according to "expert" [20:01] JimBastard: lol [20:01] eisd_: ~true = -2, ~false = -1 [20:01] sh1mmer: interesting [20:01] eisd_: both of which would evaluate to true [20:01] sechrist: hm [20:01] sh1mmer: it's flipping the sign bit [20:02] JimBastard: interesting stuff, going back to the sane if / else [20:02] eisd_: ~ = -x - 1 [20:02] JimBastard: ohh wait [20:02] JimBastard: i could just do !value [20:02] bradleymeck__: integer ops are slow in JS [20:02] sh1mmer: JimBastard: false+1 works [20:02] meder: JimBastard: thats what JonathanNeal said [20:02] eisd_: JimBastard: what's wrong with !true? [20:02] sh1mmer: not that I advocate that [20:02] eisd_: JimBastard: right, that's what I was going to suggest [20:03] JimBastard: i think !true is fine [20:03] JimBastard: for sure [20:03] sh1mmer: JimBastard: you want to make sure whatever you do doesn't bust identity testing [20:03] jedschmidt has joined the channel [20:03] JimBastard: sh1mmer: how so? [20:03] JimBastard: all im doing is building some sugar syntax for my api [20:03] JimBastard: i have a "can" method, making a "cannot" method [20:03] sh1mmer: well if someone is checking for foo === false [20:04] sh1mmer: you want to give them false [20:04] JimBastard: true [20:04] JimBastard: i dont think what im doing will affect any of that [20:06] tjholowaychuk: fuck firefox renders text ugly [20:06] tjholowaychuk: holy [20:06] tjholowaychuk: ew [20:07] TrisMcC: tjholowaychuk: Are you on XP [20:07] devongovett: tjholowaychuck: windows or mac? [20:07] tjholowaychuk: TrisMcC: osx [20:07] Gruni has joined the channel [20:07] tjholowaychuk: FF licks nuts though I hate it [20:08] TrisMcC: firefox renders text badly on XP, and ok on vista & 7 [20:08] TrisMcC: and natively ok on linux [20:11] mklappstuhl has joined the channel [20:16] sechrist: where do I get testrunner? [20:16] sechrist: nodeunit fails to install via npm [20:16] gb|work has joined the channel [20:18] rtomayko has joined the channel [20:18] qschzt has joined the channel [20:21] technoweenie has joined the channel [20:23] javajunky has joined the channel [20:23] qschzt: using Mongoose .. looks quite good, can just about wrap a memcached write-thru cache around it [20:24] qschzt: having embedded objects also be Models would be cool.. [20:25] jedschmidt has joined the channel [20:26] aconbere has joined the channel [20:29] javajunky has joined the channel [20:30] benburkert has joined the channel [20:30] tjholowaychuk: docs docs lots of docs [20:31] bradleymeck__: doc faster! [20:32] JimBastard: i prefer DDD [20:32] JimBastard: document driven development [20:32] blowery: BDD FTW [20:33] tjholowaychuk: im docing as fast as i can! [20:33] tjholowaychuk: the new express docs are sweet though [20:33] tjholowaychuk: probably tank in IE but who gives a shit [20:33] technoweenie has joined the channel [20:33] mape: tjholowaychuk: But think of the children! [20:33] rauchg_: qschzt: [20:33] rauchg_: probably this weekend [20:33] qschzt: rauchg: roger, awesome [20:33] qschzt: let me try that [20:33] rauchg_: i'm gonna start work on a hot new syntax for defining models and embedded "models" [20:34] rauchg_: so it's gonna be awesome^2 [20:35] qschzt: wrapping memcached around it so far was pretty trivial, for me for certain queries that's essential so now I have to define all of my own static getters [20:36] qschzt: instead I wouldn't mind plugging in some interface that gets asked if it has this query [20:36] qschzt: or something like that [20:36] aurynn: ooh, inotify bindings. [20:37] qschzt: there would in fact of course be two kinds, query and object caches [20:37] bradleymeck__: good ole ie, ie9 now w/ hardware acceleration and 1/10th the js execution speed of the other browsers [20:38] mape: IE9 rectifies nothing, unless they force kill ie6/7/8 [20:39] javajunky has joined the channel [20:39] tjholowaychuk: is aaron in here [20:39] tjholowaychuk: heckmann [20:42] bradleymeck__: you cant kill ie6, its like a roach [20:42] qschzt: the market share for ie6 is already pretty low .. [20:43] bradleymeck__: 15% of our site :/ [20:43] qschzt: it's in the process of being killed [20:43] qschzt: really :o [20:43] mape: qschzt: Yeah, but that small % still needs support since companies need rounded corners for IE6 users as well [20:45] bbn has joined the channel [20:46] bradleymeck__: not to mention 7 has the most fed up quirks vs strict modes...ie in general --- windows needs some feature overhauls [20:49] javajunky: tjholowaychuk: aaron was around before.. [20:49] javajunky: still on twitter ; 0 [20:49] tjholowaychuk: javajunky: damn, he said he has conference talk about express soon [20:49] jesusabdullah: Man I do not "get" twitter [20:50] qschzt: just added new domain features in 5 minutes with expresso + mongoose. <3 [20:50] tjholowaychuk: so i was trying to get the beta done for that too [20:50] sechrist: also lol.. has there been any movement in the GUI scene for node? [20:50] sechrist: I remember some people working on libs [20:50] sechrist: but that was like a month ago or longer [20:51] JimBastard: sechrist: opengl? [20:51] JimBastard: tmpvar is on that [20:51] aliem has joined the channel [20:52] saikat has joined the channel [20:53] qschzt: is someone doing reloading of modules into running Node instances? [20:54] qschzt: i saw some blog post in passing about that.. when any of the module js changes, drop the module and reload it? [20:54] tjholowaychuk: i think its only being done in a hack-ish way [20:54] qschzt: ie. hotswap [20:54] sechrist: not really opengl [20:54] sechrist: more like [20:54] sechrist: ui [20:55] robrighter has joined the channel [20:56] qschzt: this is the post http://blog.romeda.org/2010/01/hot-code-loading-in-nodejs.html [20:56] sechrist: looks like tmpvar dropped it, last commit was almost a month ago [20:58] dji has joined the channel [20:59] creationix: qschzt: it's a hard problem because of how references work [20:59] qschzt: (thoroughly tested) hotswap is very useful for uptime [20:59] qschzt: creationix, yeah [20:59] creationix: the easiest way is to just restart the entire server when things change [20:59] creationix: but the server has to allow this kind of shutdown and recovery [21:00] qschzt: yeah, you can take nodes in and out of a balanced pool that way [21:00] qschzt: but for example for Web Socket that doesn't work [21:00] tjholowaychuk: use erlang [21:00] qschzt: :) [21:01] qschzt: I use Akka :D [21:01] technoweenie: well you could just stop listening, and then the processes will die once all connections are closed [21:01] kriszyp: nodules does module reloading, and does it the right way, tracking dependencies [21:01] technoweenie: not sure if that'd work w/ web sockets though [21:01] technoweenie: lets try it [21:02] technoweenie: well you could build some kind of re-connecting login into the web socket client side shit [21:02] qschzt: there is fd passing [21:02] sechrist: is there a way to provide an image to webkit browsers in css with a base64 string? [21:03] creationix: sechrist: sure, but use small images [21:03] sechrist: I want to make something that loads ridiculously fast on iphones and I think I should create resource sprites and put them in the original html response [21:03] tjholowaychuk: sechrist: google data uris [21:03] tjholowaychuk: do it with a script though you dont want to see all that crap in your css [21:03] _4 has joined the channel [21:04] _4: hi guys [21:04] qschzt: kriszyp o_O [21:04] sechrist: I think one larger request is going to outperform 15 smaller requests invariably [21:04] kriszyp: is o_O good or bad? [21:05] _4: well, anyway: I have been looking (perhaps not hard enough) for a roadmap of nodejs development [21:05] tjholowaychuk: sechrist: for sure [21:05] _4: is there anything like this available at this point in time [21:05] isaacs has joined the channel [21:05] javajunky has joined the channel [21:05] sechrist: so yeah as a proof of concept i'm going to write something that takes a lot of images, creates a sprite mapping, and sends a json object of the coordinates [21:05] sechrist: then the images are embedded with a javascript lib i'm going to make that uses that json object of data [21:06] sechrist: unless this already exists [21:06] tjholowaychuk: sechrist: why not just scan the css for url()s and replace the images with the data uris [21:06] isaacs: sechrist: tjholowaychuk just said what i was gonna say [21:07] sechrist: so you're saying that since i'm already embedding images in the html that a sprite mapping has no benefit? [21:07] kriszyp_ has joined the channel [21:07] tjholowaychuk: not unless you use the image over and over [21:07] tjholowaychuk: in that case you misewell have it external [21:07] sechrist: I see [21:07] isaacs: even then, the sprite may well be *bigger* than all the individual images. sprites are beneficial to cut down on image load time, not memory overhead. [21:07] tjholowaychuk: sprite map generation crap gets messy [21:07] isaacs: yeah ^^ +1 [21:08] isaacs: if you make your images little, and then replace url(/my/image.png) with url(data:image/png;base64,jafw309ahw04ha....) then you only have to download ONE thing (the css file) instead of two (the CSS file and the sprite) [21:09] isaacs: of course, you wanna build that with a script, and edit a file by hand that points to actual image files, since that's way more humane. [21:09] mape: isaacs: Uploading my assetmanager to npm, should it really be tagged as stable although it isn't really? Or does latest work as well? [21:10] isaacs: mape: latest is the new stable [21:10] mape: ok [21:10] isaacs: mape: i know, i know.... [21:10] qschzt: related to sprites .. oblig plug.. http://github.com/rocketpack/Photoshop-Utilities [21:10] isaacs: mape: so don't worry about tagging. [21:10] tjholowaychuk: isaacs: oh ya why do i get Error: forbidden user: tjholowaychuk not authorized to modify dox [21:10] tjholowaychuk: for tagging [21:10] tjholowaychuk: or are you removing tagging [21:10] isaacs: tjholowaychuk: lemme se... [21:11] tjholowaychuk: isaacs: I can publish it fine [21:11] Kiba has joined the channel [21:11] isaacs: tjholowaychuk: so, this is odd... looks like dox has your email address, but not your name [21:11] Kiba: how do you, um.. destroy a setInterval function [21:11] mape: isaacs: Ok, smooth enough process anyho, besided that I had the git repo in my .node-libraries which was overwritten when I tried npm install . [21:11] isaacs: i'm not even quite sure how that happened. [21:11] isaacs:  [21:11] tjholowaychuk: isaacs: hmm lol maybe my package.json is not right? [21:11] isaacs: tjholowaychuk: no, it's not that... what's this say? npm config get user [21:12] programble has joined the channel [21:12] isaacs: er, username [21:12] isaacs: npm config get username [21:12] tjholowaychuk: isaacs: undefined [21:12] tjholowaychuk: but i can publish [21:12] tjholowaychuk: lol weird [21:12] isaacs: username is undefined? [21:12] Kiba: how do you stop setInterval from running? [21:12] mjr_: clearInterval() [21:12] isaacs: Kiba: i = setInterval(function () { ...});;; (then some time later...) clearInterval(i) [21:12] mape: Kiba: clearInterval(savedReference) [21:12] tjholowaychuk: isaacs: yup it just spits out undefined [21:13] Kiba: ah [21:13] Kiba: I don't have a reference for setInterval [21:13] _4 has left the channel [21:13] isaacs: tjholowaychuk: that's bizarre. please run npm adduser and fill in the prompts [21:13] mape: Then save one :) [21:13] tjholowaychuk: isaacs: cant remember what it was, tj tjholowaychuk or visionmedia haha [21:14] mape: isaacs: Will npm ever prompt for a password after I created the user? Or is that only if I want to move it to another machien? [21:14] isaacs: tjholowaychuk: i see both "tj" and a "tjholowaychuk" [21:14] isaacs: mape: it only prompts for pw if it doesn't know it [21:14] Kiba: hmm [21:14] mape: ah k [21:14] Kiba: I think it works. [21:15] isaacs: tjholowaychuk: they're definitely both you, though. same email address. [21:16] tjholowaychuk: isaacs: haha my bad, hmm probably the tjholowaychuk one then [21:16] Kiba: damn [21:16] Kiba: I don't know why the server stop sending information [21:16] tjholowaychuk: isaacs:Users/tj/.node_libraries/.npm/npm/0.1.16/package/lib/utils/registry/adduser.js:10 [21:16] tjholowaychuk: return new crypto.Hash().init("sha1").update(s).digest("hex") [21:16] tjholowaychuk: ^ [21:16] tjholowaychuk: Error: Must give hashtype string as argument [21:16] tjholowaychuk: at sha (/Users/tj/.node_libraries/.npm/npm/0.1.16/package/lib/utils/registry/adduser.js:10:10) [21:16] tjholowaychuk: at Object.adduser (/Users/tj/.node_libraries/.npm/npm/0.1.16/package/lib/utils/registry/adduser.js:21:24) [21:16] tjholowaychuk: at Object.adduser (/Users/tj/.node_libraries/.npm/npm/0.1.16/package/lib/adduser.js:15:12) [21:16] tjholowaychuk: at Object. (/Users/tj/.node_libraries/.npm/npm/0.1.16/package/cli.js:64:29) [21:16] tjholowaychuk: at Module._compile (module:381:21) [21:16] tjholowaychuk: at Module._loadScriptSync (module:390:8) [21:16] tjholowaychuk: at Module.loadSync (module:296:10) [21:16] tjholowaychuk: at loadModule (module:241:16) [21:16] tjholowaychuk: at require (module:364:12) [21:16] tjholowaychuk: at Object. (/Users/tj/.nvm/current/bin/npm:4:18) [21:16] mape: ... [21:17] mape: gist? [21:17] tjholowaychuk: haha :p sorry [21:17] isaacs: hah [21:17] isaacs: pastefail [21:17] mitkok has joined the channel [21:17] tjholowaychuk: ACTION wishes it was like talker and auto-gists [21:17] isaacs: tjholowaychuk: wow, please update npm to the latest ( should be 0.1.19) [21:17] isaacs: tjholowaychuk: curl http://npmjs.org/install.sh | sh [21:18] bradleymeck__: what needs to autogist? [21:18] isaacs: tjholowaychuk: that's why it doesn't have your username. [21:18] tjholowaychuk: isaacs: oh shit [21:20] isaacs: tjholowaychuk: oh, right! you were the one who was like "I have a new machine, wtf, dude!?" that's why i built that. [21:20] tjholowaychuk: isaacs: ya that was me. why you built what? [21:20] tjholowaychuk: weird i still cant [21:20] isaacs: tjholowaychuk: update to the latest npm (curl command ^) and then do "npm adduser" and you'll see. [21:21] tjholowaychuk: ohhh :) slick [21:22] mape: isaacs: In the future while developing on stuff I want on npm, should I just npm uninstall myproject && npm link . ? Then do a test npm install . and then push the update? [21:22] isaacs: mape: you can also just repeatedly do "npm link" or "npm install" [21:22] tjholowaychuk: still not working, oh well lol ill deal with that later [21:22] mape: isaacs: Well npm just symlinks so if I make a lot of changes that is just easier? [21:22] jesusabdullah: isaacs: How can I clear npm's cache? [21:22] isaacs: tjholowaychuk: you might want to blow away your .npmrc file and try the adduser again. [21:22] jesusabdullah: <_< [21:22] isaacs: jesusabdullah: npm cache clean [21:23] tjholowaychuk: isaacs: ill try that now that i know it was tjholowaychuk [21:23] jesusabdullah: isaacs: thx dawg [21:23] isaacs: tjholowaychuk: ok, kewl. lmk if you want me to delete one of your user accts. [21:23] isaacs: tjholowaychuk: i've been meaning to create a map-reduce to get all the packages owned by a particular user, so that'd be a good reason to get on that. [21:23] qschzt: creationix, saw you talking about hosting/vms. what are you using? [21:23] tjholowaychuk: isaacs: ya sure, hopefully i dont have any projects associated with it i dont think so though [21:24] creationix: qschzt: media temple and linode [21:24] qschzt: ok. I have a couple boxes at hetzner.de [21:25] tjholowaychuk: isaacs: that it would. still fails for me but ill get back on that later [21:25] tjholowaychuk: docs to write! [21:25] bigfleet has joined the channel [21:25] isaacs: tjholowaychuk: speaking of which, the docs at "npm help config" are somewhat wrong... [21:25] isaacs: stupid day job keeping me away from open source love... [21:26] tjholowaychuk: haha :) [21:26] qschzt: hetzner is cheap and good services, but if the box blows up .. [21:26] mape: isaacs: And if I make changes to my module, I update the package.json version, npm publish . and tag that one as latest? [21:26] isaacs[working]: mape: you don't have to tag "latest". it always points to the last one uploaded. [21:26] mape: Oh k [21:26] isaacs[working]: but otherwise, yes [21:26] mape: but it is npm publish . not npm update or whatnot [21:27] isaacs[working]: mape: yessir. [21:27] mape: awsome, thanks [21:27] bigfleet: tjholowaychuk: I am doing my very first node programming, and after looking around a bit, I'd like to use express. [21:27] bigfleet: I've read the README, but is there anywhere that has the equivalent of the test for the node.js "hello world"? [21:28] mjr_: node hello world is to make a web server [21:28] tjholowaychuk: bigfleet: im actually working on 1.0-beta right now [21:28] mape: tjholowaychuk: Do you plan on rewriting/removing old code on express and release that alongside Connect 1.0? [21:28] isaacs[working]: mjr_: i know, crazy, right? [21:28] tjholowaychuk: bigfleet: its quite different, so you may want to hold on until tomorrow [21:28] bigfleet: oops, I meant expresso [21:28] tjholowaychuk: mape: oh ya its a rewrite [21:28] bigfleet: ACTION typo'd [21:29] mape: bazinga [21:29] tjholowaychuk: bigfleet: oh :) ummm not sure what you mean then, expresso is a test framework [21:29] jesusabdullah: I wanna try writing a mapreduce framework in node <_< [21:29] jesusabdullah: using dnode! [21:29] tjholowaychuk: mape: docs are better, framework is better, lighter, faster, sexier, etc lol [21:29] mape: Hehe [21:30] bigfleet: tjholowaychuk: Imagine I have this-- http://gist.github.com/477559 [21:30] qschzt: denode? ARMI? :o when did that happen? [21:30] bigfleet: Would that be something I could test with expresso? Or should I pick something different? [21:30] tjholowaychuk: bigfleet: ahh one sec [21:31] tjholowaychuk: bigfleet: check out the readme "HTTP Server Response Assertions" section [21:31] tjholowaychuk: bigfleet: sorry the docs are weak right now [21:31] qschzt: jesusabdullah, wow [21:31] bigfleet: That's OK, I can probably help out with that a bit, I think [21:31] Lazesharp: anyone know of any stable amqp/rabbitmq clients for node.js? [21:31] jesusabdullah: qschzt: wow? [21:32] tjholowaychuk: its best practice (IMO) to NOT bind to a port, that way you can test your app properly [21:32] tjholowaychuk: and use a file that does require('./app').listen(3000) etc [21:32] tjholowaychuk: bigfleet: dont worry about that for right now, im going to have a site for expresso soonish [21:33] bigfleet: OK, cool, so I'll just focus on getting my feet wet. If I end up with a hello world gist, so much the better, right? [21:33] qschzt: jesusabdullah, well we've just implemented something very similar to that on socket.io :) [21:33] jesusabdullah: qschzt: orly? Link? [21:34] christkv has joined the channel [21:34] technoweenie: qschzt: similar to map reduce or dnode [21:34] qschzt: jesusabdullah, sorry.. email info@rocketpack.fi :) [21:34] qschzt: technoweenie, dnoe [21:34] qschzt: +d [21:34] jesusabdullah: oh, similar to dnode [21:34] technoweenie: ah [21:34] qschzt: I would love to do something to that effect between server nodes in UDP [21:34] jesusabdullah: ACTION will stick with dnode :) [21:35] christkv has joined the channel [21:36] Blackguard has joined the channel [21:36] qschzt: although yeah, we already have AMQP :) [21:37] jesusabdullah: ACTION wants 0mq for node [21:37] jesusabdullah: n0demq [21:37] JimBastard: i saw something about that on the mailing lit [21:37] qschzt: basically I have a WS server as router between AMQP services and web sockets now, dead easy [21:38] konobi: 0mq-- # bloody GPLv3 [21:38] jesusabdullah: but it's totally so fast [21:38] technoweenie: is that all built into socket.io [21:38] technoweenie: i'm using it now for some basic web socket stuff. i really love the client library as a complement to it [21:38] konobi: ryah: socket io is currently being handled in a thread pool? [21:39] qschzt: technoweenie, socket.io just does the clients, over either web sockets, xhr-longpoll or multipart or flash or.. [21:39] qschzt: technoweenie, you'll have one process brokering messages to/from WS, to/from AMQP services [21:40] technoweenie: oh ok i misunderstood [21:40] qschzt: (one process = a bunch of node socket.io brokers) [21:40] Dmitry2 has joined the channel [21:40] technoweenie: i dont know if you saw my post about node at github, but we use socket.io for some server monitoring [21:41] technoweenie: basically equivalent to tail -f i guess [21:41] maushu has joined the channel [21:41] jesusabdullah: ACTION saw that! [21:41] zapnap has joined the channel [21:41] satori has joined the channel [21:43] qschzt: that's a good idea [21:43] qschzt: something like scribe over WS :) [21:44] benburkert has joined the channel [21:47] sat has joined the channel [21:50] hassox has joined the channel [21:51] hassox: halorgium: you're everywhere! [21:51] rictic has joined the channel [21:51] hpoydar has joined the channel [21:52] hassox has joined the channel [21:53] mape: tjholowaychuk: why use expresso over vows? [21:54] tjholowaychuk: mape: just not personally a huge fan, I prefer everything to run in parallel vs having fancy reporting [21:54] tjholowaychuk: mape: plus I have the code cov [21:54] qschzt: mape, syntax is more familiar :) [21:55] mape: Hehe k [21:55] tjholowaychuk: mape: even Connect's tests would probably take upwards of 30-60 seconds to run if sequential but they run < 1with expresso [21:55] jesusabdullah: What's expresso [21:55] jesusabdullah: ? [21:55] jesusabdullah: Sorry guys [21:56] halorgium: hassox: only the cool places [21:56] V1: It's alive!! \o/ working memcached \o/ /random [21:56] tjholowaychuk: jesusabdullah: http://tjholowaychuk.com/post/791901984/node-javascript-test-coverage [21:56] tjholowaychuk: TDD framework [21:56] jesusabdullah: testing?! [21:56] jesusabdullah: AWESOME [21:57] jesusabdullah: ACTION does a happy dance [21:57] qschzt: with code coverage [21:57] technoweenie: there's also http://vowsjs.org/ [21:57] jesusabdullah: ACTION hasn't heard of code coverage yet [21:57] jesusabdullah: bbl, wikipedia [21:57] technoweenie: and a bunch of other random ones [21:57] tjholowaychuk: vows has a fancy site lol expresso does not yet [21:57] jesusabdullah: uht-oh [21:57] qschzt: I need a good one for Rhino btw [21:57] jesusabdullah: oh, bdd [21:57] technoweenie: fancy sites dont mean shit [21:58] jesusabdullah: cool [21:58] technoweenie: well, they attract attention [21:58] tjholowaychuk: sure they do lol fancy sites get people interested [21:58] jesusabdullah: Thought about trying out lettuce [21:58] jesusabdullah: been too busy sucking though ;) [21:58] JimBastard: technoweenie: perception is reality [21:58] jesusabdullah: oh, neat re: code coverage [21:58] technoweenie: yea, it let me tell right away if i'd like vows [21:58] jesusabdullah: ACTION wants [21:59] jesusabdullah: What was the answer? [21:59] tjholowaychuk: code coverage lets you know how much shit you forgot to test [21:59] technoweenie: for me, no :) [21:59] jesusabdullah: Honestly, I like markdown-generated readmes on github a lot, compared to some websites made for these kinda things [21:59] jspiros has joined the channel [21:59] aliem_ has joined the channel [21:59] technoweenie: those are some verbose fucking tests [22:00] tjholowaychuk: ? [22:00] mjr_: So I broke the build on Linux. [22:00] mjr_: I hang my head in shame. [22:00] tjholowaychuk: technoweenie: what are you referring to [22:00] technoweenie: vows [22:00] tjholowaychuk: ah [22:01] Wandrewvious has joined the channel [22:01] technoweenie: i got sucked into all that [22:01] technoweenie: but now i'm like, fuck off with your fancy pages, and your ceremonious testing frameworks [22:01] qschzt: must .. port .. expresso to Rhino :D [22:02] tjholowaychuk: should be able to, node-jscoverage should work fine with rhino I would think, I just stripped some stuff for SSJS [22:02] jesusabdullah: Man expresso looks sweet imo [22:02] jesusabdullah: ACTION wants an excuse to run it now [22:02] jesusabdullah: also, ci-joe [22:02] jesusabdullah: because of the awesome little graphic [22:02] jesusabdullah: and by "graphic" I mean pie chart [22:02] tjholowaychuk: expresso is CI friendly as well [22:02] qschzt: ci-joe? [22:03] technoweenie: http://github.com/defunkt/cijoe [22:03] jesusabdullah: aww technoweenie beat me to it [22:03] technoweenie: i have a port of that in coffee script called cup of joe [22:03] jesusabdullah: Seriously though [22:03] tjholowaychuk: jesusabdullah: http://ec2-75-101-226-182.compute-1.amazonaws.com:8889/connect [22:03] sechrist_ has joined the channel [22:03] technoweenie: well its not done yet [22:03] qschzt: thanks [22:03] jesusabdullah: check out that pie chart [22:03] technoweenie: my goal is to have it stream test output w/ websockets [22:03] jesusabdullah: sexy sexy! [22:03] sdgvf has joined the channel [22:03] jesusabdullah: technoweenie: You're working on ci-joe? [22:03] technoweenie: yea [22:04] jesusabdullah: sweet [22:04] jesusabdullah: How do you like coffeescript? [22:04] jesusabdullah: Been meaning to give it a shot [22:04] technoweenie: i dig it [22:04] jesusabdullah: ...after learning some javascript proper first [22:04] jesusabdullah: I think I'm mostly just excited about the whitespace action [22:04] jesusabdullah: I hate closing brackets [22:04] onar has joined the channel [22:04] jesusabdullah: not my gig [22:04] jesusabdullah: and by "hate" I mean, "forget" [22:05] qschzt: technoweenie stream test output? how? [22:05] technoweenie: stream it from the console [22:05] jspiros has joined the channel [22:05] technoweenie: through node.js [22:06] technoweenie: magic [22:06] qschzt: technoweenie or where? locally cache it, then publish to central log server? [22:06] qschzt: I'm really thinking about Scribe style logging system in Node as well [22:06] qschzt: http://github.com/facebook/scribe [22:07] technoweenie: qschzt: not sure yet, hadnt gotten that far. probably locally [22:08] Tim_Smart has joined the channel [22:08] jblanche has joined the channel [22:08] isaacs[working]: creationix: you'd said something about nvm falling over when using sudo? [22:09] creationix: isaacs[working]: yeah, because sudo doesn't have my local bash environment [22:09] isaacs[working]: creationix: is that just because the function isn't defined in root's prof? [22:09] isaacs[working]: right [22:09] jherdman has joined the channel [22:09] creationix: yep [22:09] isaacs[working]: so, nave does let you do that. and "sudo nave use " puts you into a root shell [22:09] isaacs[working]: it's like "sudo su" [22:10] JimBastard: isaacs: sudo make me a sandwhich [22:10] JimBastard: ACTION is now a sammich [22:10] JimBastard: doh [22:11] isaacs: careful what you wish for! [22:11] isaacs: anyone got recommendations for places from which to buy large numbers of tchotchkies? [22:11] isaacs: pins and buttons and such? [22:11] isaacs: stickers, etc. [22:11] sechrist has joined the channel [22:11] JimBastard: isaacs: you trying to brand? [22:11] isaacs: your friendly neighborhood package manager wants to know :) [22:11] mape: isaacs: nice npm badge btw :) [22:11] bradleymeck__: anyone got a websocket lib that implements resources based upon name but sharing a single socket (just made my own but realized its a pos unless i spend time figuring out how to auth a websocket) [22:11] isaacs: right!? [22:11] jspiros_ has joined the channel [22:12] isaacs: came out great. but zazzle is pretty pricey [22:12] JimBastard: metacafe? i remember some place that did bulk stuff [22:12] isaacs: someone donated $50 to the project, so i decided that it should go to handouts. [22:12] JimBastard: for not too much money [22:12] JimBastard: isaacs: you should pay a designer :p [22:12] isaacs: haha [22:12] isaacs: JimBastard: i'll send mape and fictorial free buttons [22:13] isaacs: i don't think oyu can get much designer for $50 [22:13] JimBastard: no you can, just check craiglist [22:13] JimBastard: :::PPPP [22:13] mape: isaacs: have the url for the badge? [22:13] isaacs: srsly? [22:13] JimBastard: pleeease dont [22:13] mape: *img [22:13] JimBastard: sorry, that was a sick joke [22:13] isaacs: hehe [22:13] isaacs: oohhhhh... you're a bastard. [22:13] JimBastard: lets just steal the kiwi site and change the logo [22:13] JimBastard: tjholowaychuk: is that cool? :-D [22:13] isaacs: hahah [22:14] isaacs: mape: so, i just clipped the one that you'd created, and slapped it on a red bg [22:14] isaacs: #FF0000 red [22:14] mape: yeah, thinking of playing with some graphics [22:14] tjholowaychuk: haha i wouldnt its ugly [22:14] isaacs: you could probably do better, but at 2", it hardly matters. [22:14] jesusabdullah: Is kiwi a competitor to npm? [22:14] felixge has joined the channel [22:14] felixge has joined the channel [22:15] isaacs: ACTION gonna let tjholowaychuk field that one... [22:15] tjholowaychuk: ill make npm when I have free time, but i wont IE-proof it :p [22:15] mape: isaacs: it's not the size, it's the motion of the ocean, at least that is what Oprah says [22:15] isaacs: tjholowaychuk: but ie-proofing is so easy! [22:16] tjholowaychuk: isaacs: hhaha ya thats the way it should be [22:16] tjholowaychuk: minus FF because I dont like it either [22:16] tjholowaychuk: but cant get worse than IE [22:16] tjholowaychuk: or can it? [22:16] jspiros has joined the channel [22:16] isaacs: eh. i dunno. [22:16] JimBastard: jesusabdullah: kiwi is discontinued, but npm and kiwi are basically the same thing [22:17] tilgovi has joined the channel [22:17] JimBastard: jesusabdullah: hopefully we'll be seeing some awesome new features for npm in the upcoming months too [22:17] bradleymeck__: chromeframe em all [22:18] qschzt: later and all the best [22:18] jesusabdullah: Oh, okay! [22:21] bradleymeck__: why does ecma5 strict have to take away my arguments.callee [22:21] mape: isaacs: the buttons are digital print right? So no color restrictions? [22:21] tjholowaychuk: isaacs: if you can maybe remove dox all together, I cant even publish now I just get "not ok" at the end [22:22] isaacs: tjholowaychuk: npm config set registry http://registry.npmjs.org/ [22:22] isaacs: tjholowaychuk: node's https client has.... a few issues. [22:22] isaacs: mape: yeah [22:22] isaacs: mape: but using too many colors looks like butt, though [22:22] isaacs: since it's so small [22:22] mape: isaacs: yeah [22:23] mape: isaacs: So no hippie flower power npm badge? :S [22:23] tjholowaychuk: gahh [22:24] tjholowaychuk: isaacs: https://gist.github.com/d0213a72bf5a98f2cae1 [22:24] isaacs: tjholowaychuk: hm... weird. [22:25] javajunky has joined the channel [22:26] streblo has joined the channel [22:26] isaacs: tjholowaychuk: try again. [22:27] tjholowaychuk: isaacs: that did it, I can tag it now too [22:27] tjholowaychuk: thanks man [22:27] felixge has joined the channel [22:27] felixge has joined the channel [22:27] isaacs: weird. i wonder what was dying. definitely some kind of weird state with your user info. [22:28] isaacs: tjholowaychuk: note: 0.0.2 is gone. if you wanna put it back, you can, just make sure to re-tag 0.0.3 as "latest" if you want it to be the default. [22:28] tjholowaychuk: nah thats fine [22:28] isaacs: npm's overdue for a rewrite. [22:28] isaacs: back in the good old days, i was rewriting it every month or so from scratch. [22:30] arkady__ has joined the channel [22:30] aliem has joined the channel [22:31] V1 has left the channel [22:31] javajunky has joined the channel [22:31] WALoeIII has joined the channel [22:32] bradleymeck__: we should get a standard CLI lib going... [22:32] rauchg_: isaacs: as in a complete rewrite ? [22:32] isaacs: rauchg_: sure. [22:32] rauchg_: :O [22:32] isaacs: or at least, very significant [22:33] bradleymeck__: isaacs whats the goal of the rewrite? [22:33] mape: better structure/code? [22:33] isaacs: just cleanup. make all the decisions go through your brain and hands again. [22:33] isaacs: there are some wtf's that have crept in. [22:33] isaacs: i definitely have to clean up build.js pretty majorly asap. [22:34] rauchg_: http://www.osnews.com/images/comics/wtfm.jpg [22:34] isaacs: also put sys.pump() all over the place. [22:34] isaacs: yeah, totally [22:34] mape: isaacs: http://mape.me/npm-button.png to much going on? [22:34] bradleymeck__: isaacs just let me know what you want from the ls side? [22:34] tjholowaychuk: asdfklasdfasdfasfd [22:34] tjholowaychuk: npm hates me :( [22:35] isaacs: mape: yeah, that'd probably just look chunky and wierd at small size. [22:35] isaacs: mape: just flat red and white lettering is nice [22:35] bradleymeck__: in soviet california you hate npm [22:35] isaacs: bradleymeck: yeah, haven't given that enough thorough investigation yet, sorry. [22:35] mape: kk, then the one you have is probly for the best [22:35] bradleymeck__: i have plenty other things to look at [22:36] isaacs: mape: yeah, i see what you'er doing with the watermarky kinda thing, and that's cool. but buttons have to be bold and simple. [22:36] mape: naked lady bold? [22:37] bradleymeck__: why not black qrcode background w/ huge bold red letters outlined in black? [22:37] bradleymeck__: black/white qrcode* [22:39] isaacs: mape: http://skitch.com/isaacschlueter/dc2cm/npm-button [22:39] ajpiano has joined the channel [22:39] jakehow has joined the channel [22:41] SvenDowideit has joined the channel [22:41] dji_ has joined the channel [22:42] mape: isaacs: yeah [22:45] programble has joined the channel [22:45] creationix: Boom! http://github.com/senchalabs/connect [22:46] creationix: moved the repo, now everyone's remote it broken :P [22:47] chilts: not to worry, so long as people know (and they'll find out soon enough anyway) :) [22:49] sh1mmer: I think I win the competition for best NodeKnockout team name so far :D [22:49] sh1mmer: 3>2>1 [22:49] rauchg_: creationix: why didn't you guys contact github's staff [22:49] sh1mmer: Although team Crockford is pretty funny [22:49] creationix: rauchg_: we did [22:49] sh1mmer: especially because Doug isn't in it [22:49] rauchg_: creationix: not helpful ? [22:49] creationix: rauchg_: notice we still have the followers [22:49] rauchg_: i see [22:49] rauchg_: :) [22:49] creationix: technoweenie was very helpful [22:50] rauchg_: there's a guy squatting on sencha :/ [22:50] mikeal has joined the channel [22:50] rauchg_: technoweenie is always helpful [22:50] technoweenie: translation: i broke everyones hardcoded links [22:50] chilts: heh [22:50] creationix: technoweenie: now if you can kick the guy off the sencha account, that would helpful, but it's fine if you can't [22:51] technoweenie: what guy [22:51] technoweenie: oh 'sencha' [22:51] creationix: technoweenie: no clue, whoever own the sencha account [22:51] technoweenie: then i'll have to break the links again :) [22:51] creationix: we could put our private stuff there, senchalabs is for open-source stuff [22:51] tjholowaychuk: oh ya fuck all our submodules are messed now [22:51] tjholowaychuk: lame [22:52] creationix: tjholowaychuk: yep :) [22:52] tjholowaychuk: ACTION updates [22:52] creationix: but somehow github pages still work at the old url [22:52] creationix: I guess they only update manually [22:52] technoweenie: yea, nginx config [22:52] technoweenie: well thats a different repo isnt it [22:52] technoweenie: extjs/extjs.github.com [22:53] creationix: technoweenie: http://extjs.github.com/Connect/ [22:53] technoweenie: id file a support issue for 'sencha'. i dont know what our policy on that is [22:53] creationix: technoweenie: ok, it's worth a try [22:53] technoweenie: ah [22:53] technoweenie: yea i assume it means we have to try emailing the dude [22:53] creationix: technoweenie: don't worry too much about the github pages [22:53] creationix: I plan to move to a real domain [22:53] WALoeIII has joined the channel [22:54] WALoeIII has joined the channel [22:54] sdgvf has left the channel [22:55] technoweenie: cool [22:56] creationix: technoweenie: unless it's possiblt to point a domain to the github pages for a single project, not the entire account [22:56] technoweenie: nope [22:56] technoweenie: github pages have to map to a *.github.com repo name [22:56] technoweenie: otherwise you have to use that gh-pages branch for a sub directory [22:57] technoweenie: you could do a connect.github.com repo [22:57] technoweenie: i thiiiink you have to be a paying user for cnames, but we may have relaxed that restriction recently [22:57] creationix: maybe we'll just make a nice site for senchalabs.com or something [22:57] tjholowaychuk: labs.sencha.com [22:57] tjholowaychuk: looks better kinda i think [22:58] creationix: tjholowaychuk: that would work [22:58] creationix: then connect can be a part of the site [22:58] tjholowaychuk: isaacs: "dependencies": { "connect": ">= 0.2.1" } is that right for deps? [22:59] isaacs: tjholowaychuk: yes. [22:59] CIA-76: node: 03Ryan Dahl 07master * r02729d4 10/ (lib/buffer.js lib/fs.js lib/http.js): instanceof Buffer to Buffer.isBuffer() (+6 more commits...) - http://bit.ly/btDEnx [22:59] murz has joined the channel [22:59] isaacs: tjholowaychuk: the automagical installing of deps has a problem i found yesterday. [22:59] tjholowaychuk: creationix: are we still going to generate the docs via markdown? [22:59] tjholowaychuk: isaacs: shit [22:59] tjholowaychuk: lol [22:59] tjholowaychuk: ill try it [22:59] isaacs: tjholowaychuk: it works if you already have connect installed, or if by chance it ends up getting installed first. [23:00] creationix: tjholowaychuk: no clue [23:00] benoitc has joined the channel [23:00] isaacs: tjholowaychuk: but in a lot of cases, installing into a fresh env doesn't link in the deps properly to the dependent package. (that's what i meant above when i said that build.js needs a rewrite) [23:00] mape: creationix: did you talk to the sencha designers about getting a pretty page for connect? [23:00] murz: sorry but i have a complete noob question. im having trouble with require(). There's a module on github that i clone'd and ran "node-waf configure build", now how do I use that module in my node.js scripts? [23:00] creationix: mape: yep [23:00] mape: nice [23:01] tjholowaychuk: isaacs: so just recommend that they npm install connect first? for now at least [23:01] isaacs: tjholowaychuk: yeah [23:01] isaacs: tjholowaychuk: npm@0.1.20 will definitely fix that bug. [23:01] jesusabdullah: murz: Can't you just require('./path/to/module') ? [23:01] jesusabdullah: :S [23:03] murz: to the directory? [23:03] sh1mmer: I'm working on my Node session for OSCON next week [23:03] sh1mmer: any suggestions of stuff I should talk about? [23:03] sh1mmer: it's going to be fairly intro level [23:04] mikeal: talk about the awesome [23:04] mikeal: :) [23:04] mape: sh1mmer: websockets seem to be someone people like [23:04] sh1mmer: mikeal: all of it then? [23:04] sh1mmer: mape: yeah that's on my hitlist, especially because of pgriess ;) [23:04] isaacs: sh1mmer: hey, you mihgt know this [23:05] isaacs: sh1mmer: what's teh best place to buy a whole bunch of buttons and stickers and whatnot for cheap? [23:05] isaacs: sh1mmer: what's yahoo use? [23:05] sh1mmer: hm I dunno I can ask someone [23:05] jesusabdullah: murz: Yeah, just drop the extension. So, if your module is at ./path/to/module.node, then...yeah. Alternately, dump it in wherever node looks for modules, and then you won't have to do the absolute path. [23:05] isaacs: seems like cafepress is the leading recommendation if you want more than one thing [23:06] sh1mmer: maybe jan____ knows he had those awesome stickers at jsconf.us [23:06] jesusabdullah: murz: http://nodejs.org/api.html#addons-293 gives a quick rundown I believe [23:06] jesusabdullah: murz: http://nodejs.org/api.html#addons-292 rather [23:07] creationix: sh1mmer: how many node talks have you given by now? [23:07] sh1mmer: creationix: 5 maybe [23:07] creationix: nice [23:07] sh1mmer: I have another 4 lined up [23:08] jesusabdullah: neato [23:08] sh1mmer: not node specifically but SSJS with Node as the example [23:08] creationix: good enough :) [23:08] isaacs: sh1mmer: should be the other way around :) [23:08] sh1mmer: OSCON, Web Directions, JSConf.eu and Web 2.0 NYC [23:08] creationix: I've only done 2 (but I'm not a professional speaker ;)) [23:08] isaacs: sh1mmer: give a node talk, with SSJS as the example [23:08] sh1mmer: isaacs: heh [23:08] murz: this particular module doesnt have a .js file which is why im confused [23:08] isaacs: murz: compiled modules usually end with .node [23:08] sh1mmer: isaacs: I like Node a lot but I'd like to see some stiffer competition too [23:08] isaacs: sh1mmer: if only. [23:08] sh1mmer: we don't want Ryan to have it too easy ;) [23:09] isaacs: sh1mmer: if only there was ANY good competition to node.. [23:09] jesusabdullah: rhino! GO!! [23:09] jesusabdullah: ACTION throws down his pokeball [23:09] mape: Hmm node master breaks on compile? [23:09] mjr_: sh1mmer: the whole concept of "server side" JS seems pretty limiting. [23:09] steadicat has joined the channel [23:09] mape: Waf: Leaving directory `/home/mape/node/build'Build failed: -> task failed (err #1):{task: cxx node_net.cc -> node_net_4.o [23:09] isaacs: well, it's more like "on the processor" js [23:09] isaacs: i mean, is npm "server side"? [23:09] jesusabdullah: I think of it more along the line of generalized js, I think [23:09] mjr_: sh1mmer: maybe you can talk about how node makes it easy to run JS outside of the browser, for things like servers, or clients, or whatever. [23:09] isaacs: node is for writing programs. [23:10] mape: ryah: ping [23:10] streblo has joined the channel [23:10] jesusabdullah: isaacs: Agreement [23:10] sh1mmer: isaacs: what about Ringo [23:10] sh1mmer: :P [23:10] jesusabdullah: ringo? [23:10] isaacs: sh1mmer: Ringo is really really nice if you hate yourself enough to use the JVM. [23:10] jesusabdullah: like the beatle? [23:10] mjr_: Like you can do command-line utilities like http_trace, or full-featured HTTP/WebSocket servers. [23:10] isaacs: but if you are stuck with the jvm, Ringo is teh way to go [23:10] aliem_ has joined the channel [23:10] mape: Anyone compiled the latest rev of node and succeded? [23:10] sh1mmer: isaacs: rhino isn't half bad if you already have a jvm [23:10] isaacs: mjr_: totally [23:10] benbinary has joined the channel [23:10] sh1mmer: mjr_: agreed [23:11] jesusabdullah: Huh, never heard of ringo [23:11] isaacs: mjr_: node is as much a client as a server. [23:11] sh1mmer: mjr_: I guess I think of SSJS as short hand for JavaScript outside of the browser [23:11] sh1mmer: mjr_: but that is a good point [23:11] mjr_: mape: I broke the build, sorry. There's a fix here if youneed it. http://github.com/mranney/node/commit/47b4718105ac36668c194036c721ba3e2f0061b6 [23:11] mjr_: Still waiting for ryah to pull that in. [23:11] jesusabdullah: Huh [23:12] jesusabdullah: ringo could run on Windows [23:12] jesusabdullah: ACTION rubs chin [23:12] mape: mjr_: ah k, I'll just wait for it to be pushed to master, thanks :) [23:12] mape: mjr_: That breaks on all platforms? [23:12] mjr_: just on linux [23:13] mjr_: Which is why neither Ryan nor I noticed. [23:13] mape: k [23:13] murz: WHen I try to require the .node it says "Error: No longer accepting filename extension in module names" [23:13] jesusabdullah: You guys roll osx? [23:13] isaacs: sh1mmer: absolutely [23:13] isaacs: ; [23:13] mjr_: So embarrassingl [23:13] isaacs: ACTION rolls osx [23:13] jesusabdullah: maan why do so many people have macs it's weird [23:13] mape: murz: just remove .js [23:13] jwm: heh [23:13] isaacs: murz: just require("./foo") not require("./foo.node") [23:13] jwm: steve jobs threatened our wives [23:13] sh1mmer: jesusabdullah: because we got tired of fighting our computers [23:13] isaacs: murz: node looks for a .js or .node file with that stem [23:13] jesusabdullah: My computer's nice to me [23:13] mape: use macs for dev but easier to have a server running linux for running code [23:13] jesusabdullah: Well, my work computer anyways [23:14] jesusabdullah: Home computer took a shit [23:14] sh1mmer: jesusabdullah: it's a job condition for me that I can use a mac [23:14] jesusabdullah: hardware [23:14] jesusabdullah: y'know [23:14] jwm: I don't really like macos x [23:14] mjr_: Yeah, I do dev on Mac, but all servers are Linux. [23:14] jwm: linux has better networking [23:14] jesusabdullah: hmm [23:14] sh1mmer: mjr_: right [23:14] jwm: I like my mini though [23:14] isaacs: linux is better at all the things you don't have to look at. [23:14] jesusabdullah: Macs are nice and all, but idk if I could handle the osx gui [23:14] isaacs: mac is better at all the other things. [23:14] jesusabdullah: it WEIRDS me [23:14] jwm: I don't know have you tried compiz? [23:14] jwm: very keyboard friendly [23:14] jesusabdullah: I have. Did not like [23:14] jwm: you have to configure the crap out of it [23:15] jesusabdullah: but I'm kinda picky [23:15] jwm: hehe [23:15] sh1mmer: linux is fine for computers whose only IO require 8 year old drivers [23:15] isaacs: jwm: it's keyboard friendly. but osx is human friendly. [23:15] isaacs: jwm: turns out, i'm a human. [23:15] jwm: isaacs: osx isn't friendly to me [23:15] sat: Jesesabdullah: osx wierds me too [23:15] jesusabdullah: I *want* to like it, but [23:15] jesusabdullah: *shrug* [23:15] jwm: the keymappings are completely different than any other system [23:15] jesusabdullah: At least it's not Windows? :) [23:15] sat: ACTION is using a windows 7 laptop [23:15] sat: heh [23:15] jesusabdullah: Win7 ain't bad [23:16] jwm: macosx feels like it is hacked together from 40 different oss projects [23:16] mjr_: jwm: the OSX keyboard stuff has a bunch of emacs bindings by default, and can easily be extended to add lots more. [23:16] jwm: yeah I am a vim guy [23:16] jesusabdullah: jwm: Oh, but the frosting is delectable! [23:16] sat: Since starting with node, Im sepnding most of my time in ssh sessions to linux though [23:16] jwm: I tried textmate [23:16] mjr_: But they aren't different than any other system, just different from the one that you like. [23:16] jwm: no it is different [23:16] jwm: even linux wm copy windows keybindings [23:17] jwm: or rather *nix wm [23:17] jwm: nobody and I repeat nobody uses mac key bindings [23:17] jwm: command key or apple key [23:17] jwm: heh [23:17] mitkok has joined the channel [23:17] jwm: except apple [23:17] jwm: everyone uses ctrl+alt.. not saying it is better [23:17] jwm: just saying it is different [23:17] jwm: it's taken me a month to get comfortable with my mini [23:17] mjr_: Man, I love talking about which editor, distro, or programming language is the best, but sadly I have to go. [23:17] satori: lol [23:17] jwm: lol [23:17] jesusabdullah: upbupbup [23:17] jwm: he wins [23:17] isaacs: mjr_: lol [23:17] jesusabdullah: get your ass back here [23:17] isaacs: hahah [23:17] jwm: :) [23:18] jesusabdullah: ACTION crosses arms, taps foot [23:18] jwm: not saying mac is not good, just different [23:18] jwm: heck apple's motto is think different [23:18] jwm: lol [23:18] satori: think different? [23:18] jwm: yep [23:18] jesusabdullah: baaaa [23:18] jwm: I have less trouble in compiz with key bindings than I do in mac hehe [23:19] jwm: to do what prtscr does I have to hold down three keys and touch my nose and lift my right leg at the same time [23:19] satori: I still think of macs as toys for toddlers. Kind of like lego duplo. I know that is not the case now, but it seemed that way for so long that it is ingrained in me [23:19] jwm: and do a chant [23:19] tmedema has joined the channel [23:19] mscdex: node.js rules! [23:19] jwm: as long as node runs on everything we'll be happy [23:20] mscdex: it doesn't run on Windows CE [23:20] devongovett: can someone go to this page: http://dl.dropbox.com/u/534786/callertest.html in IE and report the result to me? [23:21] satori: Someone should make a NPAPI node plugin....then we could have server side js in the client :P [23:21] murz: any recomendations for a key/value store to use with node? [23:21] creationix: nStore [23:21] creationix: redis [23:21] creationix: couch [23:21] mscdex: heh [23:22] mscdex: and mongo? [23:22] murz: which one [23:22] sh1mmer: oh geez. [23:22] creationix: murz: depends on your needs [23:22] creationix: each has strengths [23:22] murz: i need a key/value store lol [23:22] sh1mmer: murz: I think the point here is pick your key/value store for what you need rather than because you want it to work with node [23:22] creationix: well, if that's all you need and no other requirements, then any will do [23:22] satori: murz.... some are memory only, others are disk bacjed [23:22] satori: ..backed [23:23] sh1mmer: pick couch because it's "stable" [23:23] sh1mmer: heh [23:23] satori: you need to choose the right one for ur problem [23:23] creationix: nStore is the easiest since it's in-process [23:23] creationix: but it's still a little buggy [23:23] mscdex: you can't delete from nStore though right? [23:23] creationix: mscdex: sure you can [23:23] mscdex: i thought it was append only? [23:23] mscdex: or something [23:23] JimBastard has joined the channel [23:23] creationix: mscdex: the file-format is append only [23:23] creationix: but the data is fully mutable [23:23] creationix: couch is the same [23:24] murz: memory only? isn't that volatile? [23:24] JimBastard: "An expert is a man who has made all the mistakes that can be made in a very narrow field" [23:24] creationix: murz: yep [23:24] aconbere has joined the channel [23:24] creationix: if you care about durability, nStore or couch are good, couch does a lot more [23:24] creationix: it just requires an external server [23:25] creationix: well, nStore will be good as soon as I iron the bugs out [23:25] murz: durability? as in a database that won't break? [23:25] creationix: as in your data won't get lost [23:25] creationix: redis and mongo are really fast, but at a cost [23:25] brainproxy has joined the channel [23:26] creationix: it's harder to make your data safe with them (though not entirely impossible) [23:26] creationix: with most of them there are various settings levels too [23:26] JimBastard: real men do it in memory [23:27] murz: its in memory that gets backed up to the disk, right? [23:27] benburke_ has joined the channel [23:27] creationix: murz: if you're not in a hurry to deploy this week, then I'd love help with nStore [23:27] jwm: hehe [23:27] JimBastard: murz: are you the auction guy from the mailing list? [23:27] creationix: it should work great for most small to medium cases [23:27] murz: no [23:27] JimBastard: nm [23:27] maqr has joined the channel [23:27] murz: im just trying to learn node.js - im not deploying anything [23:27] murz: writing a chat app for fun [23:27] creationix: murz: well, use nStore :) [23:28] creationix: cause it's node specifix [23:28] creationix: *specific [23:28] creationix: (but I'm biased) [23:28] jwm: what other in node ones are there [23:28] murz: sounds good to me [23:28] jwm: that don't run outside node [23:28] creationix: felixge has node-dirty [23:28] creationix: it's like nStore [23:28] JimBastard: node-dirty doesnt work [23:29] JimBastard: it hasnt worked since april [23:29] jwm: yeah I was thinking of node-dirty [23:29] creationix: JimBastard: the branch has been developed a little [23:29] JimBastard: meh [23:29] creationix: but yeah, felixge has been busy launching transload.it [23:29] JimBastard: just keep it all in memory and flush to the disk on occasion [23:29] creationix: http://transloadit.com/ [23:30] felixge: creationix: I'll have some time to work on dirty again now :) [23:30] felixge: JimBastard: believe it or not :D [23:30] creationix: felixge: great [23:31] lachlanhardy has joined the channel [23:31] creationix: nStore needs some healthy competition [23:31] jwm: ACTION whips felixge  [23:31] jwm: is nstore all node? [23:31] creationix: jwm: yep [23:31] murz: does it write directly to the disk? [23:31] maushu: felixge, no such luck with realex yet... still looking for a merchant aggreement around here. ._. [23:31] creationix: murz: yep [23:32] felixge: maushu: : ) [23:32] maushu: I'm starting to see why you decided to use worldpay. [23:32] felixge: maushu: they must exist, keep looking [23:32] felixge: maushu: took us forever as well [23:32] JimBastard: ive had a cheap version of nStore / dirty running since last year [23:32] JimBastard: it hasnt died on me yet [23:33] dji has joined the channel [23:33] JimBastard: is authorize.net US only? [23:33] maushu: felixge, hmm, well, worldpay is like a merchant account, right? It could be used on stuff with better apis. [23:33] maushu: JimBastard, yes. [23:33] felixge: maushu: yes [23:33] JimBastard: thats pretty lame [23:33] jwm: most things are US only [23:34] jwm: that's why I live in the US [23:34] jwm: :) [23:34] JimBastard: im not really sure of anything that exists outside of manhattan [23:34] JimBastard: its worked out so far [23:37] maushu: ...and the prime minister around here is all smiles and "Everything will fine! The economy will be back at its feet in no time!" Yeah RIGHT. If I and other starting entrepreneurs can't even find a decent payment gateway and the only one is half-assed and expensive how is the economy supposed to get better? [23:37] maqr: have any of you used closure templates with nodejs (instead of java, for server side)? [23:39] chrischris has joined the channel [23:42] paulwe has joined the channel [23:42] maushu: felixge, *sigh* I better go with worldpay too. [23:42] felixge: maushu: you'll still need an API provider [23:43] maushu: ACTION facepalms. [23:43] felixge: :| [23:43] felixge: maushu: ask their support, tell them you need something like ipayment that works in portugal [23:43] felixge: they don't reply fast, but if you know what you need to ask for they can provide [23:43] maushu: Chargify would be great, but they don't have support for worldpay. [23:44] maushu: felixge, how the heck the API provider communicates with worldpay? [23:45] felixge: maushu: magic [23:45] maushu: Must be. [23:45] felixge: maushu: they need to specifically support worldpay [23:45] [[zz]] has joined the channel [23:45] felixge: I think all these providers have custom APIs [23:45] maushu: Can't I access the custom API? [23:46] murz: creationix: love the nstore. exactly what i was looking for [23:46] maushu: Now that I think about it, I don't remember seeing anything about an API in their website. [23:46] creationix: murz: awesome, let me know if you hit any issues [23:47] creationix: I know of some nasty race conditions that only happen under high load [23:47] creationix: I'm working on fixing them [23:48] maushu: felixge, isn't there a document that must be filled by the bank receiving the payments? I remember something like that. [23:48] maushu: Oh, found the guides, here we go. [23:48] murz: will do [23:48] felixge: maushu: in the case of worldpay your bank needs to know nothing. worldpay transfers money to your bank [23:48] felixge: maushu: you don't directly receive each transaction [23:49] maushu: Then where the heck did I see that document. [23:49] maushu: I thought it had an (horrible) worldpay logo. [23:50] mscdex: one payment gateway to rule them all! [23:52] maushu: "The "Payments Powered by RBS WorldPay" logo must also be displayed on your web site." [23:52] maushu: WAT. [23:53] maushu: Not only we are paying them we still have to advertise them?! [23:53] CIA-76: node: 03Matt Ranney 07master * r98341da 10/ src/node_net.cc : Fix unix dgram socket address resolution on Linux. - http://bit.ly/cY3SX2 [23:57] locks has joined the channel [23:59] tmpvar has joined the channel [23:59] tmpvar: murz, boom!