[00:00] ajsie: tj: how would you with user roles [00:00] tj: maybe im not understanding what that article is about ( didnt really read much ) [00:00] tj: sounds like regular permission stuff [00:00] grahamalot has left the channel [00:00] ajsie: users belonging to one certain group could only access certain methods of model? [00:01] ajsie: tj: how would you do that in express? [00:01] tj: express has nothing to do with data storage, so anything user related is up to the ORM or library you are using [00:01] tj: and your decisions [00:02] tj: but they are over complicating it [00:02] tj: a user can have many roles and a role can have many permissions [00:02] tj: done [00:02] maushu_: http://blog.benstrong.com/2010/11/google-and-microsoft-cheat-on-slow.html [00:02] tj: then if you want to lock down methods or routes based on that, then you use route specific middleware etc [00:04] ajsie: tj: what library is good for authorization on node.js? [00:04] mape: maushu_: Is it really cheating if it works? [00:04] tj: ajsie: I dont know, we use our own custom stuff [00:04] tj: its not hard [00:04] maushu_: mape, exactly. [00:04] ajsie: ok [00:04] tj: there is connect-auth or whatever though [00:04] maushu_: I wonder if this can be set only for node.js sockets. [00:04] tj: havent used it personally [00:06] tj: ajsie: nothing like that should be baked into express though if that is what you mean [00:06] tj: different apps need different solutions for that [00:06] mscdex: i've decided. OSCAR it is! [00:06] mape: tj: Are there any other takes on middleware beside connect/biggie? [00:06] mscdex: this should be fun [00:07] nXqd: hello guys : [00:07] tj: mape: nothing serious that I have heard of [00:07] mape: nXqd: O hai [00:07] tj: aside from jsgi [00:07] mape: tj: Would be nice to get some "competition" so the best case middleware could be standardized in some way or another [00:08] tj: yeah [00:08] mape: Not really an issue now but always nice to be able to reuse things [00:08] tj: connect is not perfect, but its working for now [00:09] mape: Jup, still think something django like would be neat for node.js.. Know people don't like the end all be all approach but a lot of people seem to want that [00:09] tj: im not overly familiar with django [00:10] mape: Well django/drupal/wordpress (all very different but they are big and do a lot of things) [00:10] mape: People seem to like specializing in "products" rather then languages [00:10] tj: I used wordpress for the first time a few weeks ago [00:10] tj: its brutal [00:10] mape: Tell me [00:11] tj: the user experience was pretty bad, worse than drupal even IMO [00:11] tj: which is bad [00:11] mape: Worst part is it seems easy [00:11] tj: because drupal is more dev oriented [00:11] mape: So customers fiddle for 10min, assume something will work, and then people end up bending shit into place to make it work [00:12] mape: And well, doing frontend on drupal isn't that fun either [00:12] tj: nope [00:12] tj: doing anything with drupal is pretty painful [00:12] tj: but that is what you get with these large frameworks [00:12] tj: hard things are easy, easy things are hard [00:13] mape: Seems like it is fun if you do everything the way they want it [00:13] ajsie: their biggest problem is modularity it seems [00:13] ajsie: small small units .. building up big apps [00:13] tj: the only thing I like with drupal is the modularity [00:13] tj: its done far better than say rails [00:13] ajsie: yeah .. Rails .. dont get a shit [00:13] tj: but the community sucks so 99% of the modules are brutal anyway [00:14] tj: its like jquery [00:14] tj: haha [00:14] mape: I'm having more issues with the bundled stuff, can't use latest jQuery since that will break stuff. (guess you can strip it all and only run standard theme on admin but yeah..) [00:14] ajsie: just show me the pic of one unit .. then i know how to build an app with similar units [00:14] ajsie: like Lego [00:14] tj: mape: yeah that is a pain [00:14] SvenDowideit has joined the channel [00:15] ajsie: i think Symfony 2.0 is going to rock .. the whole shit is built with bundles [00:15] tj: drupal is so slow moving since its been around so long [00:15] mape: tj: But then you end up overriding a shit ton and there are files everywhere doing halv the work [00:15] ajsie: small units .. even the core is a set of bundles [00:15] AAA_awright has joined the channel [00:15] mape: ajsie: From my experience Symfony has a pretty steep learning curve. But then again I'm horrid at PHP [00:16] ajsie: mape: yeah Symfony 1 takes weeks to learn [00:16] ajsie: Symfony 2.0 looks much nicer though [00:16] tj: mape: when my cms is reasonably ready I'll definitely need your help, your UI work is awesome [00:16] tj: i can never even decide on stuff so i just sit there changing it a million times [00:16] killfill: tj: your doing a cms?.. cool [00:17] ajsie: a node drupal? [00:17] ajsie: :) [00:17] tj: killfill: it started off as a port of my ruby one http://screenr.com/6Hs [00:17] tj: i might just use that UI again [00:17] tj: i dunno [00:18] richcollins has joined the channel [00:18] mape: tj: Well. Thanks.. :P Don't really think I'm any good with design but I'd love to help if the CMS is any good ;) [00:18] mape: Spending a lot of time on a work related node project though, but I guess time is always an issue [00:18] tj: its tough to choose between look and feel, and extensibility. Drupal is super extensible but suffers because of it [00:19] killfill: your doing ui from scratch?.. why not use something like sencha (touch)? [00:19] mape: tj: What does the CMS solve? [00:19] tj: killfill: yeah that was scratch [00:20] tj: meh [00:20] tj: not a fan [00:20] erlnoob has joined the channel [00:20] mape: killfill: He worked for Sencha so if it was a good fit I figure he would use it [00:20] tj: I mean the framework is great but its not the feel I want [00:20] killfill: :) [00:20] mape: tj: Is it "just" a generic add pages, add text kinda deal? [00:21] tj: mape: all sorts of things, I would certainly be wanting it to become more of a cms framework than anything else. boilerplate authentication, blah blah [00:21] tj: highly opinionated so that its easy to get going, opposite of express haha [00:21] mape: Hmm yeah [00:21] tj: and with ndistro it could be deployed/installed without compiling anything [00:22] tj: so a big bonus for new ppl [00:22] mape: Any plans on making it hard to write shitty code? [00:22] Yuffster has joined the channel [00:22] tj: dunno [00:22] mape: Or are you going as easy as possible? [00:22] ajsie: tj: what did you use for the UI? [00:22] tj: ajsie: just my own js [00:22] tj: / css [00:23] ajsie: no jQuery? [00:23] ajsie: or other libraries/frameworks? [00:23] tj: yeah jquery [00:23] ajsie: more? [00:23] tj: nope [00:23] ajsie: oka [00:23] ajsie: y [00:23] nXqd: tj: nice work [00:23] ajsie: looks nice [00:23] mape: tj: Just add them all, makes to so much easier, prototype, mootools, jquery, yui [00:24] ajsie: mape: haha [00:24] mape: Super easy to get going [00:24] ajsie: you are serious? [00:24] ajsie: you are using all of those? [00:24] cardona507 has joined the channel [00:24] mape: Not in the least :P [00:24] ajsie: im using Sproutcore [00:24] killfill: tj: you worked on connect for sencha? [00:24] mape: Looked at it, didn't jive right away [00:24] tj: killfill: yeah I wrote like 80% of it [00:25] tj: and most of spark [00:25] killfill: but externally [00:25] tj: well maybe 60% of spark, peter did the listenFD stuff [00:25] tj: tim did some, cant really remember anymore [00:25] tj: externally? [00:25] mape: tj: It was all a drunken mist? :P [00:25] ajsie: extjs, dojo, prototype, mootools, yui, jquery [00:25] ajsie: so many js frameworks [00:26] ajsie: mootools and prototype is for the same purpose .. extending js huh? [00:26] killfill: i mean. your part of the sencha staff?.. (im just curois.. :P) [00:26] tj: mape: haha, we had to move it out into a separate repo so we lost the git history [00:26] tj: killfill: not anymore no [00:26] tj: I work with LearnBoost now [00:26] yozlet has joined the channel [00:26] killfill: ah cool :) [00:26] tj: https://github.com/senchalabs/connect/graphs/impact [00:27] ajsie: i hear about learnboost all the time [00:27] ajsie: dont know why .. are they famous in node world? =) [00:27] mape: I enjoy jQuery since it just fixes wonky DOM things, the other things I can take care of myself [00:27] tj: ajsie: because LB is sweet! [00:27] tanepiper: <3 Sencha [00:27] killfill: :) [00:28] tanepiper: cannot wait for ExtJS4 [00:28] vdrab has joined the channel [00:28] tanepiper: since i'm using it to build on top of nodejs + couchdb - I'm a javascript junkie :D [00:29] tj: yeah its pretty slick, curious what 4 will have [00:29] mape: Isn't Ext kinda bloated? [00:29] tanepiper: tj: Ext.draw [00:29] tj: mape: yeah it is really large [00:29] tanepiper: i.e. raphael intergration [00:29] tj: but mostly because it is verbose [00:30] tanepiper: mape: it's only as large as the components you use [00:30] tanepiper: plus 4 has be re-written from the ground up [00:30] tj: likhttp://enterprise-js.com/ [00:30] tj: haha [00:30] mape: Hmm k, so how easy is ext to modify? [00:31] mape: Seems most end all be all kinda deals are great for copy paste use but if you need to change stuff things turn wonky really fast [00:31] ajsie: never used ExtJS .. how is it compared to Dojo? [00:31] tanepiper: ajsie: cleaner [00:31] tj: mape: yeah I think that is the general rule [00:32] tj: I have yet to find a framework that does tons for you, and doesnt fuck you over [00:32] mape: Guess that works if you have clients that don't have input [00:32] aubergine_ has joined the channel [00:32] tanepiper: i dunno, i've been able to extend it pretty well, you just need to know how to extend stuff properly [00:32] mape: Or if you don't want to change it yourself [00:32] ysynopsis has joined the channel [00:33] killfill: there is just something that i dont get 100% about node.js. Its good with not cpu intensive applications right? as soon as you make it does heavy cpu stuff, you will suffer becouse it will use just 1 cpu, right?.. (its 1 thread) [00:33] mape: killfill: It does one thing a time [00:33] tanepiper: for example, here is an abstract form window component i created: https://gist.github.com/25a0cebb70a5bab7a502 [00:33] mape: But the thing is that it isn't blocking, so you can do a lot of things without waiting for things to finish [00:34] tanepiper: then i can extend it like this: https://gist.github.com/f3a5fce2933f455a1c53 [00:34] tanepiper: and basically i can take the JSON from the save and put it into couchdb with little modification [00:34] mape: killfill: So it really shines when you are doing a ton of stuff that takes ages, for example I wrote a twitter stats fetcher that took 10min in php, took 12sec in node since I could do it all parallel. [00:35] mape: But if you are doing really CPU heavy stuff you shoud use workers [00:35] killfill: ok.. so probably its a good idea to put a frontend like nginx with multiple nodex running on the back, and sharing states with a nosql/broker/erlang/etc in the back [00:35] tanepiper: really all i do is when saving it is pass through nodejs, check if it has an _id and do crated and modified stuff [00:35] mape: killfill: Sounds like a good idea depending on the application [00:37] evanmeagher: isaacs: here's the latest on completion: https://gist.github.com/f38ecef49bcb49836574 [00:37] evanmeagher: isaacs: works for config, help, and uninstall so far [00:37] mape: killfill: But yeah, being able to run multiple instances of node is great since that means you can scale easily (as long as db keeps up) [00:37] evanmeagher: not overly happy with some of the var and func names, though [00:38] dnolen has joined the channel [00:38] killfill: greate. [00:38] mape: Adding more processes scales linearly as long as the cpu isn't saturnated, which is really neat. [00:40] killfill: mape: by " use workers" you mean thought nifty html5 ones?.. will v8 runn them in separa(os) threads? [00:40] tj: i dont get why css even has named colors [00:40] tj: so random [00:40] tj: "paleVioletRed" [00:40] tj: haha [00:40] tj: wtf [00:40] tj: "lightGoldenrodYellow" [00:40] killfill: separate os threads i mean.. sorry [00:41] shaver: tj: they're from X11, from HTML before CSS [00:41] omni5cience has joined the channel [00:41] tj: shaver: really/ [00:41] tj: ? [00:41] tj: well either way haha [00:41] killfill: heh [00:41] shaver: yep [00:41] shaver: X11's colors.txt -> mosaic HTML -> CSS [00:41] shaver: ACTION feels a little old now [00:41] tanepiper: http://telehash.org/ interesting [00:42] ysynopsis has joined the channel [00:42] isaacs: evanmeagher: that looks good. but i think the completion.js will get out of hand quickly [00:42] evanmeagher: isaacs: yeah.. [00:43] ajpiano has joined the channel [00:43] evanmeagher: isaacs: is it worth factoring into separate files? [00:43] isaacs: what about this: it does the normal command-name expansion at first, and then goes to npm.commands[cmd].completion if such exists, otherwise does file/folder expansion [00:43] isaacs: or maybe not even "otherwise" [00:43] isaacs: j [00:44] ajsie: http://posterous.com/sso/verify/78eeadf4d191da3c32e4f487b1f60e86?jumpto=/on-jquery-large-applications [00:44] isaacs: just fail if the cmd doesn't have a completion [00:44] evanmeagher: then each cmd-specific function would live within .js? [00:44] mape: killfill: yeah. that api, thinks like https://github.com/cramforce/node-worker [00:44] isaacs: yeah [00:44] ajsie: since we talked about jQuery [00:44] isaacs: evanmeagher: just like the .usage string, but it's a function [00:44] mape: tj: I want to have a beer with the dude who choose those colors, must have been interesting [00:44] isaacs: so in install.js, you'd do "install.completion = function (words, cb) { ... }" or something [00:44] kschzt: https://github.com/pgriess/node-webworker <3 [00:44] tj: mape: no doubt haha [00:44] isaacs: and it'd call cb(null, [expansions]) [00:45] isaacs: and then completion.js would be responsible for outputting it [00:45] evanmeagher: isaacs: i like that [00:45] mape: tj: I've choosen lightGoldenrodYellow for the broad usage, but salmonRedSunshine is to narrow :P [00:45] tj: ahahaha [00:46] ooooPssss has joined the channel [00:46] isaacs: evanmeagher: also, then if you add a new command, or change how it works, it'll be clear what has to be done to change the completion script, to [00:46] isaacs: and if a command is deprecated or removed, its completion goes with it [00:46] isaacs: etc [00:47] mape: isaacs: Any news on the npm page thingy? Did mikaels tweet on badges/achivements spark idea in relations to that? [00:47] isaacs: mape: oh, just what we'd already talked about, mostly [00:47] evanmeagher: isaacs: yeah, that's definitely more manageable than the direction that what i have now is going [00:47] kschzt: that, in conjunction with Script, something else :) [00:47] isaacs: evanmeagher: yeah, it reminds me of how help.usage() started out [00:48] isaacs: evanmeagher: where each function's usage was kept in help.js [00:48] isaacs: WAY better splitting it up [00:48] mape: isaacs: yeah, k [00:48] evanmeagher: yuck [00:48] mape: Are there any plans on making npm extendable? [00:49] mape: hooking into calls and whatnot [00:49] isaacs: mape: yeah, there are a few ways to do this, but it's not at the git level yet, where you can just drop a git-something script in your path [00:49] isaacs: mape: you can put a script in .npm/.hooks/install and it'll get run for every package install [00:50] mape: How about things like customizing the ls command only showing the latest version? [00:50] isaacs: any of the lifecycle scripts can work that way, so {pre,post,}{install,update,activate,deactivate,uninstall,etc} [00:50] evanmeagher: evanmeagher_away [00:50] isaacs: mape: npm config set listopts "latest" [00:50] mape: isaacs: sneaky [00:51] isaacs: mape: but then you won't see what's installed if it's not the latest. [00:51] isaacs: so that's a bit silly [00:51] mape: Oh.. [00:51] isaacs: davglass added that to make ls *only* show packages that are on the remote registry [00:51] kschzt: hey hmm what are you using for profiling node? [00:51] mape: isaacs: Yeah about that.. Is npm update suppose to break links after publishing? [00:52] kschzt: i wish node-inspector used the profiler tab .. [00:52] isaacs: mape: break links? [00:52] mape: isaacs: From my experince if I do cd ****** && npm link && mate [00:52] mape: do changes, npm publish and then npm update [00:52] mape: It overrides the link with the update one? [00:53] mape: Or is that me being stupid? [00:53] isaacs: um... it might be an outdated version of npm, but now it should be better (and you should have just updated it) [00:53] dohtem has joined the channel [00:53] dohtem has joined the channel [00:53] kschzt: (you can already set breakpoints and stuff in webkit's awesome debugger with that) [00:53] mape: So the old version link (which is always the latest) is always used over the latest version based on update? [00:54] kschzt: ah mape.. linux-tick-processor required by npm install [00:54] wippler has joined the channel [00:54] kschzt: also locatedb [00:54] mape: kschzt: Yeah.. [00:55] mape: No good way to find where the files are installed cross OS [00:55] mape: the node src path can't be found in a node instance [00:55] yozlet has joined the channel [00:55] kschzt: imho the right direction is to add that todo-profiler-tab here https://github.com/dannycoates/node-inspector [00:56] mape: kschzt: Huh? [00:56] mape: In regards to node-profiler? Or just in general? [00:56] kschzt: yes, ultimately I want it in webkit's debugger [00:57] mape: Hmm yeah.. better tools for debugging would be neat [00:57] chrischris has joined the channel [00:57] mape: I would kill for a tool that shows me what is taking mem [00:58] kschzt: remotely attach webkit's debugger/profiler to some 'cloud' node instance [00:58] tanepiper: nodejs needs a killer debugger imho [00:58] sveimac has joined the channel [00:59] mape: Seems the dtrace thingys would do magic things [00:59] mape: But from what I've heard it isn't easy to hook into V8 [01:00] tanepiper: then clearly v8 needs more hooks :) [01:00] isaacs: mape: http://twitter.com/bcantrill/status/7298268149063680 [01:00] tanepiper: hopfully once the 0.3.x dust settles, there can be an upstream path to v8 of patches since apart from chome, node is probably the next biggest thing [01:00] kschzt: i think node can/should/will take much more of a driver's seat when it comes to v8 :) [01:01] webr3: did you see mnot's tcp+node debugging today? [01:01] tanepiper: nope [01:01] webr3: http://www.mnot.net/blog/2010/11/27/htracr [01:01] mape: isaacs: Yeah but... [01:01] mape: 07:24 < mape> ryah: Are the dtrace thingys at joyent landing in core? [01:01] mape: 08:07 < ryah> mape: no [01:01] mape: 08:08 < ryah> mape: bryan has some probes in https://github.com/bcantrill/node-dtrace [01:03] mape: isaacs: So I assumed that was joyent specific and wasen't being pushed back into node? [01:03] tanepiper: webr3: oh i did see this, i have it bookmarked [01:03] isaacs: ah, that might be [01:03] mape: So yeah :( [01:03] kschzt: ouch. [01:04] mape: No funnies for the non joyent users of node [01:04] deepthawt has joined the channel [01:04] kschzt: :(( [01:04] mape: Or well, most, guess that won't be put into no.de either? [01:05] isaacs: i'm honestly not exactly sure what bryan was talking about. [01:05] isaacs: but, being bryan cantrill, i can only assume it was in some way related to dtrace, and much much lower level than i ever go in a computer. [01:05] sveisvei has joined the channel [01:06] kschzt: i'll need to look at http://code.google.com/p/v8/wiki/V8Profiler next [01:07] kschzt: mape: on a mac ;) [01:07] abiraja has joined the channel [01:07] mape: isaacs: Well yeah, cantrill is just silly. In the best of ways. [01:07] isaacs: yeah [01:08] pquerna: be careful or that octopus will get you [01:08] mape: kschzt: Well yeah, but from what I've gathered the OSX one is just a link to the linux one.. But yeah, if you pull req a fix for it I'll patch and add it asap :) [01:09] mape: isaacs: So how is it working at Joyent? And found a decent apartment? [01:09] isaacs: mape: yeah, joyent's pretty much my dream job. [01:09] isaacs: and i got a windowful place on the 7th floor overlooking lake merritt, imo the nicest part of Oak Land [01:10] isaacs: not far from mikeal and mjr_ [01:10] mape: Office complex? [01:11] zomgbie has joined the channel [01:12] mape: isaacs: Btw are you able to share how your average day is setup? The balance between in company projects vs put thingys in core time? [01:12] kschzt: mape, will do [01:13] isaacs: mape: node and npm are a big part of my job. [01:13] unomi has joined the channel [01:13] isaacs: but officially, my job is to work on the no.de platform, and the future of node hosting, and in general staying involved in teh node community. [01:13] isaacs: it turns out that node-core and npm are important to those efforts. [01:14] evanmeagher: isaacs: how heavily are you guys giving out codes for no.de access? [01:15] evanmeagher: I was hoping to host the npm doc browser website on it, if possible [01:15] mape: isaacs: Ah neat, but no idea on how the dtrace efforts effect the no.de platform? Assume it would be a pretty big deal to analyze things. [01:15] isaacs: evanmeagher: yeah, i wanna get that on npmjs.org, and get npmjs.org over to joyent sooish [01:15] isaacs: mape: yes, we all want that :) [01:15] cjmFloating has joined the channel [01:16] evanmeagher: isaacs: wrt to the doc thing, I've made progress and will hopefully have something to show off soon [01:16] isaacs: evanmeagher: i'd like to have doc.npmjs.org///stuff [01:16] evanmeagher: isaacs: just have gotten myself side-tracked on completion [01:16] isaacs: hehe [01:16] isaacs: kewl [01:16] mape: isaacs: Btw any idea to put time into creating a npm landing page or is joyent taking care of that? [01:16] isaacs: mape: so, i think the docs site will be a huge step in that direction [01:17] mape: isaacs: npm one or nodejs? [01:17] isaacs: mape: an npm one [01:17] mape: Ah k [01:18] isaacs: mape: the idea is that any published package with a "directories":{"doc":"./folder/with/markdown"} in the package.json will get their docs auto-parsed and set up into a snazzy little site. [01:18] isaacs: the index will be the README.md (which pretty much all packages have, thanks to github) [01:18] mape: Yeah [01:18] isaacs: evanmeagher: you know, i mean, that site could even store its stuff in .npm/.web or something, and then just use node-static or something to serve it [01:19] mape: Always nice to piggyback on already awsome things [01:19] isaacs: evanmeagher: and then the request could just check to see whether or not the package is in cache, and if not, fetch and load it [01:19] isaacs: like a jit kinda thing [01:19] isaacs: (might wanna run through them all at startup, just so there's no long lags) [01:19] evanmeagher: isaacs: interesting [01:20] isaacs: also, it could send an etag of whatever the etag in the registry is [01:20] mape: isaacs: Btw this might be kinda icky to answer so if you don't want/cant just ignore it but how much of node is used internally in joyent? [01:20] isaacs: so that the browsers can be smart about cache validation [01:20] evanmeagher: isaacs: what I have atm is essentially a semi-stable script that scrapes npm for docs [01:20] evanmeagher: then a little express app for the website frontend [01:20] isaacs: mape: specifically, yeah, can't answer. but generally: a lot. [01:20] isaacs: joyent uses node a lot. [01:20] isaacs: in a lot of core things [01:20] mape: isaacs: neat :) [01:20] isaacs: we <3 node here. [01:20] isaacs: it really is a great tool for a lot of types of jobs [01:21] isaacs: joyent was using node internally in a lot of places before no.de was ever a thing [01:21] mape: For sure, don't feel like using bash ever .... ever... again ....... [01:21] kschzt: we just moved the last of our Akka stack to Node today :) [01:22] erlnoob: anyone else having issues with socket.io's flashsocket sometimes not loading/responding on page refreshes? [01:22] micheil has joined the channel [01:22] kschzt: erlnoob, i had so many issues with flashsocket, i had to disable it completely [01:22] mape: kschzt: Please share :) [01:22] mape: What kinda issues? [01:22] micheil: that doesn't sound abnormal for flash, does it? :P [01:23] mape: Instability or just all out bad things? [01:23] micheil: socket.io has actually had a heap of instability from what I've heard [01:23] kschzt: wouldn't load, wouldn't connect, would suddenly die, where xhr-polling (firefox, ie8) stable [01:23] erlnoob: mape: initialization failures [01:23] kschzt: socket.io otherwise no issues - warimals.com [01:23] mape: micheil: bah just fud to promote your server ;) [01:23] micheil: haha :D [01:23] Nevtus has joined the channel [01:24] kschzt: really happy with socket.io - fixed some things in github/rocketpack/Socket.IO-node [01:24] micheil: actually, hopefully in the next release we'll see socket.io using node-websocket-server ;P [01:24] mape: micheil: Weren't there talks to move ... yeah, merge things [01:24] micheil: not merge, just use [01:24] micheil: hence the reason nws is now really loosely coupled. [01:24] o_o has joined the channel [01:24] mape: Yup, always good [01:24] micheil: going to change it again in a bit though, I think. [01:25] micheil: so rather then the connection needing a manager passed, just have the manager listen to the connection [01:25] micheil: (managers don't tend to be good at that, but it should be done more) [01:26] kschzt: socket.io + connect/express + amqp + webworker + mongoose <3 killer [01:32] killfill: is there a way to make express not put the Cache-Control header?... [01:32] killfill: it makes somehow android's webkit not reload *.js files, when the manfest file changes.. :S [01:36] jimt has joined the channel [01:38] aconbere has joined the channel [01:38] ajsie: anyone that has used https://github.com/kriszyp/rql [01:38] ajsie: how do i install it on node? [01:41] jimt_ has joined the channel [01:42] InsDel has joined the channel [01:42] unomi has joined the channel [01:44] dabtop has joined the channel [01:46] killfill: would it be a too bad idea to put the Cache-Control to public max-age=1 ?... [01:46] dab: I donno \__(O.o)__/ [01:46] dab: Would it make caching pointless? [01:47] killfill: im caching throught a manifest file thought.. [01:47] JimBastard has joined the channel [01:47] dab: hmmk [01:47] killfill: dab: what do you think browsers do when they dont get Cache-Control in the header?. [01:47] killfill: is it like max-age=1?.. [01:48] dab: I believe they cache it [01:48] dab: 1 = how long? [01:48] killfill: 1 second [01:48] dab: I'm not actually familiar with the units :> [01:48] dab: oh [01:48] dab: much longer than 1 second [01:48] cjmFloating has joined the channel [01:48] dab: I think its around an hour or a day iirc [01:48] killfill: there is a part of the process im missing then.. :S [01:49] ajsie: there still are managers? =) [01:49] ajsie: managers should be coders [01:49] ajsie: VD should be coder too =) [01:50] killfill: if i set max-age to 0 or 31557600 (wich is the defualt for connect), then when changing a manifest file that contains *.js files, makes android browser not load *.js files... [01:50] ajsie: JimBastard: how is it going? [01:50] killfill: wich is not cool (for me..) becouse, well im changing the manifest file to make the thing redownload it. [01:51] erlnoob: try this with underscore.js: _.reject([1,2,3,4,5], function(n) { return n in [2,3]; }); bug or am I just stupid/crazy? [01:51] JimBastard: ajsie: the usual, trying not to let the internet hate machine get me down [01:51] JimBastard: im working on some session code right now, gonna push soon [01:51] JimBastard: just got back in from SF [01:52] JimBastard: inimino: if you are around, im actually about to push a bunch of changes to the session code [01:52] JimBastard: i made it a proper middleware with function( req, res, callback) convention [01:52] JimBastard: using the new response.setHeader() [01:52] ajsie: JimBastard: great [01:53] JimBastard: also, im debating making an "auto-session" option, where all httpServers automagically get sessions injected into the request object [01:53] JimBastard: got a blog post brewing [01:53] arrty has joined the channel [01:53] ajsie: JimBastard: i read about one of the milestones for cloud9ide: Test and deploy your code in the cloud [01:54] ajsie: and also: Local and remote file and repository integration [01:54] JimBastard: yeah, we'll see how those ajax.org guys do [01:54] ajsie: and wondered if that would compete with nodejitsu [01:54] JimBastard: nothing competes with nodejitsu [01:54] ajsie: :) [01:54] JimBastard: if someone starts to, we'll just invent more features [01:54] ajsie: yeah .. a rat race [01:55] ajsie: i like that .. good for users =) [01:55] MikhX has joined the channel [01:55] cjmFloating has joined the channel [01:55] JimBastard: cloud9 seems like a nice project though [01:55] termie has joined the channel [01:55] termie has joined the channel [01:55] ajsie: using it at the moment .. its THE IDE I always missed [01:55] JimBastard: its still a little too unresponsive for me [01:55] JimBastard: i really cant have any latency in my code editor, messes up my whole flow [01:55] ajsie: already at this moment it beats Webstorm with light years [01:56] ajsie: and its only beta [01:56] JimBastard: im sure it will only get better [01:56] ajsie: yeah [01:56] wasabist has joined the channel [01:56] JimBastard: i've got the cloud9er code for nodejitsu, just havent had time to get it live [01:56] JimBastard: iron out some kinks [01:56] charlenopires has joined the channel [01:56] inimino: JimBastard ⋱ oh, cool [01:56] JimBastard: i made a quick webservice that spawns cloud9 instances in dirs and on ports [01:57] davidascher has joined the channel [01:57] JimBastard: inimino: ill send you a ping when i push. ima give you a shoutout on the nodejitsu blog too [01:57] JimBastard: :-) [01:57] JimBastard: all your core code is pretty much the same, just giving it a fancy api [01:58] inimino: ok, nice [01:58] ajsie: cant wait for node Christmas [01:59] ajsie: imagine the node environment in 5 years [01:59] SubStack: silly stdin, why must .end() do: Socket operation on non-socket [02:00] SubStack: fs.close on stdin.fd doesn't seem to work either :/ [02:01] dab: Hey so I'm trying to connect to a server securely, however, it says the method doens't exist. What should I be doing instead? [02:01] dab: http://nodejs.pastebin.com/9kVei3Aq [02:02] micheil: setSecure was recently removed [02:02] micheil: reason: new SSL/TLS is coming in the next few weeks [02:03] kschzt: micheil, are you editing the docs? can you add Script.createContext and runInContext please? [02:03] micheil: http://github.com/miksago/node/issues - create an issue for it, and/or write the patch for it and send me a pull request [02:03] kschzt: k [02:03] dab: oh [02:03] dab: :/ [02:05] micheil: dab: trust me though, new tls will be worth the problems now [02:05] cardona507 has joined the channel [02:05] JimBastard: ahah micheil setSecure was removed from the API for now? [02:05] kschzt: done [02:05] dab: rofl, what's this new tls ? [02:05] dab: I heard about it a few days ago, since I'm considering getting an SSL Cert [02:05] JimBastard: thats funny, i dont think ive ever had the guts to actually try to use setSecure on httpServer [02:05] JimBastard: lol [02:06] cjmFloating has joined the channel [02:06] micheil: dab: okay, basically, ryah wrote a https server on top of it in like, 40 lines of code. [02:06] micheil: it's epic. [02:06] dab: :o [02:06] micheil: secure network server: https://gist.github.com/713092 [02:08] dab: So once TLS is released, will setSecure be re-implemented? [02:08] micheil: no [02:08] dab: :\ [02:08] micheil: it'll be something like: require("tls") or require("https") [02:09] dab: so I'll still be able to set a net connection secure though, right? [02:10] isaacs: ajsie: were you around for node xmas last year? http://skitch.com/isaacschlueter/npd4j/node-xmas.js [02:10] JimBastard: lol isaacs , i dont remember that [02:10] ajsie: isaacs: nope=) [02:10] JimBastard: omg wow [02:10] JimBastard: its been over a year of node [02:10] JimBastard: nov 23rd i think [02:10] ajsie: :) [02:10] isaacs: that's your anniversary? [02:11] c4milo1 has joined the channel [02:11] isaacs: npm is over a year old. [02:11] JimBastard: and to think, i use to just be that annoying guy who just talked a lot of smack in irc [02:11] JimBastard: ohh...wait...nm [02:11] JimBastard: :-D [02:11] ajsie: isaacs: have you used nodules? [02:11] isaacs: ajsie: nope [02:11] isaacs: haha [02:11] ajsie: okay .. wondered if that is a npm competitor [02:11] JimBastard: ajsie: npm is like nodejitsu [02:11] isaacs: ajsie: nah, it's a different kind of thing. [02:12] JimBastard: THERE ARE NO COMPETITORS mwahahaha [02:12] ajsie: https://github.com/kriszyp/nodules [02:12] isaacs: yeah, i'm familiar. [02:12] JimBastard: nodules did the remote loading which i thought was cool [02:12] ajsie: :) [02:12] JimBastard: but i really cant stress how much i don't like that library name [02:12] ajsie: yeah .. i like the remote loading [02:12] JimBastard: its a shame too [02:13] inarru has joined the channel [02:13] isaacs: JimBastard: i know, kris has such a cooler last name than me. [02:13] JimBastard: isaacs: you should just drop your last name [02:13] isaacs: no way, dude. [02:13] JimBastard: :p [02:13] ajsie: isaacs: isnt it better to run "git clone && npm link " than "npm install " cause 1: you can now alter the repo code and see the results immediately 2: you always get the latest git repo version [02:13] isaacs: ajsie: you can do that, sure [02:14] _mql has left the channel [02:14] JimBastard: ajsie: usually, i install npm first and when i need to modify i clone and link [02:14] JimBastard: but, its all the same [02:14] ajsie: but is that a preferred way ? i dont see the benefit of npm install .. i cant see the repo code .. and i cant change it [02:14] isaacs: it's a pretty common misconception that using npm means you have to do things a particular way. [02:14] isaacs: ajsie: you can (as of 0.2.10) do `npm edit ` [02:14] JimBastard: ajsie: i think the preferred way, is the way you best see fit [02:15] isaacs: ajsie: and then that'll open up the code in an editor, and when yor'e done messing with it, it'll run a rebuild [02:15] isaacs: (in case you edit c code or something) [02:15] ajsie: oh [02:15] JimBastard: isaacs: thats cool [02:15] isaacs: yeah, was tj's idea [02:15] ajsie: isaacs: with which editor+ [02:15] isaacs: i already kinda love it [02:15] ajsie: vim? =) [02:15] isaacs: ajsie: it just looks at the $EDITOR environment var [02:15] ajsie: ok [02:15] agnat has joined the channel [02:15] isaacs: but you can set it with `npm config set editor vim` [02:15] isaacs: or npm edit pkg --editor vim [02:16] ajsie: could one use cloud9? [02:16] isaacs: not sure. is it a blocking editor? [02:16] ajsie: no idea [02:16] isaacs: basically, if you can use it to edit commit messages, you can use it to do npm's editor stuff. [02:16] isaacs: `npm config edit` works the same way [02:17] ajsie: okay [02:17] ajsie: i still wonder if nodules is there to replace npm =) [02:18] isaacs: ajsie: you can also do `npm bundle install `, and then `npm bundle edit ` to mess with the locally bundled version [02:18] ajsie: using their framework persevere right now .. and they are using nodules extensively [02:18] ajsie: hmm [02:18] ajsie: what does bundle mean? [02:18] quirkey has joined the channel [02:18] isaacs: ajsie: nodules is a module loader. npm is a package manager. if not for rubygems confounding the two concepts, it would be clear that they are different sorts of beasts. [02:19] isaacs: ajsie: bundle executes a command against the ./node_modules in your package root. [02:19] isaacs: ajsie: `npm bundle` with no args tries to install all your deps locally [02:19] isaacs: if a dep is bundled, it won't be installed again on the target machine. [02:20] AAA_awright_ has joined the channel [02:20] ajsie: aha .. so everything is installed to ~/.node_modules when i use bundle [02:20] ajsie: if i dont use it its installed in another folder .. usr/var/local_wathever folder right [02:21] isaacs: ajsie: no. [02:21] isaacs: not your $HOME dir. [02:21] isaacs: you run bundle in the root of a package that you author. [02:21] isaacs: then, when you install that package, instead of installing the dependencies, it'll use the bundled ones [02:22] ajsie: okay i get it .. it installs everything locally to the project's node_libraries [02:23] ajsie: instead of system path [02:23] isaacs: right [02:24] isaacs: but you can run almost any random npm command against the bundle, so you can use that to remove stuff, add stuff, `npm bundle ls` to see what's there, etc. [02:24] cardona507 has joined the channel [02:24] isaacs: it lets you list something as a dependency that is not available on the registry [02:25] yozlet has joined the channel [02:26] Wyverald has joined the channel [02:28] micheil: isaacs: hmm.. being it's the weekend, I might patch you. [02:28] naturalethic: Any builtin or simple way to reverse a Buffer ? [02:28] isaacs: micheil: orly? [02:28] isaacs: what for? [02:28] micheil: isaacs: yarly. [02:28] micheil: npm [02:28] isaacs: ya, duh [02:28] micheil: npm install-deps. [02:28] micheil: :P [02:28] isaacs: oh, that !! [02:28] isaacs: yeah [02:28] isaacs: kewl [02:28] SubStack: frickin' chainsaws \m/ https://github.com/substack/node-chainsaw [02:30] SubStack: now that that is out of the way, time to use it in my flow control lib [02:30] SubStack: isaacs: I am writing a flow control lib and I blame you! [02:30] isaacs: hahah [02:30] frodenius: lol [02:30] SubStack: just look what you've done, I had such potential [02:30] isaacs: SubStack: it's fun, right? [02:30] SubStack: yep [02:30] JimBastard: the tab key is a good flow control library [02:31] JimBastard: >.> [02:31] micheil: SubStack: I'm getting this hint that your a massive fan of chained apis. [02:31] SubStack: they remind me of monads [02:31] SubStack: (because they are... sort of) [02:32] SubStack: but see, I was writing so many of them that I figured I should write a module to write them for me [02:32] SubStack: and lo, chainsaw [02:32] linac has joined the channel [02:32] cjmFloating has joined the channel [02:33] SubStack: and now to rewrite seq in chainsaw [02:37] Anti-X has joined the channel [02:37] dylang has joined the channel [02:37] SubStack: the neat thing about javascript is you can hack it into whichever language you want it to be [02:38] christophsturm has joined the channel [02:38] bingomanatee has joined the channel [02:39] Dreamer3 has joined the channel [02:39] JimBastard has joined the channel [02:39] JimBastard: thats nice, the latest textmate update destroyed my textmate install [02:40] agnat has joined the channel [02:40] mape: dear ole allan [02:41] mape: at least he fixed the indent-tab bug [02:43] galaxywatcher has joined the channel [02:46] brianmario has joined the channel [02:46] micheil: isaacs: was it npm link that you said did a lot of similar stuff as npm install? [02:47] micheil: uhh.. that'd be a yes. [02:48] wattz: anyone here work with v8 and C++ [02:48] wattz: i mean, not just with node, i hate to ask here [02:48] micheil: a little [02:48] wattz: just not a lot of channels for just v8 dev [02:48] micheil: #v8 occassionally. [02:49] micheil: and mraleph. [02:49] wattz: it seems when i create a method in C++ with a new functiontemplate and do all that good jazz [02:49] wattz: actually, scratch that, not sure how to phrase the question [02:50] wattz: simpliest is... seems my var is getting cut off (it's value) [02:50] isaacs: micheil: yeah, link is basically the same command [02:51] micheil: isaacs: k. [02:52] isaacs: micheil: the difference between install and link is that it creates a symlink from the target to .npm/{name}/{version}/package, and it sets the version number to 9999.0.0-LINK-{hash} [02:52] isaacs: so that link versions are always "highest" [02:53] isaacs: also, of course, you can install a tarball or url, but you can only link a folder [02:53] micheil: yeah [02:53] jperras has joined the channel [02:53] erlnoob: hmm, on my system process.memoryUsage().vsize returns 3112439808 [02:54] evanmeagher has joined the channel [02:54] erlnoob: my understanding is vsize is the amount of memory used RAM + swap, right? [02:54] erlnoob: how is this number even possible? [02:57] blaines has joined the channel [03:02] jperras has joined the channel [03:02] Anti-X has joined the channel [03:06] arrty has joined the channel [03:08] spetrea-home has joined the channel [03:09] herbySk has joined the channel [03:09] JimBastard: how can i monkey patch a module from inside an exports.* ? [03:10] JimBastard: it doesnt seem to work when i try to require the module that contains the monkey patch [03:10] JimBastard: it does work when i put the patch directly in the file though [03:10] JimBastard: something like, exports.magicSession = function(){ http.createServer = function (requestListener) { [03:14] deepthawtz has joined the channel [03:15] JimBastard: hey inimino you feel like checking these session.js apis? https://github.com/Marak/session.js/blob/master/demo.js, https://github.com/Marak/session.js/blob/master/magicDemo.js [03:16] JimBastard: got sessions implemented as middleware and also as a magic monkey patch that creates a new property on httpServer.request.session [03:16] JimBastard: gotta clean it up a bit more [03:17] nooder has joined the channel [03:20] marshall_law has joined the channel [03:21] inimino: ACTION looks [03:22] Me1000 has joined the channel [03:23] JimBastard: ACTION is adding more comments and docs [03:23] meder: inimino: thought you had work to do [03:23] inimino: meder ⋱ I do. [03:24] aconbere has joined the channel [03:27] jmpe has joined the channel [03:28] wasabist has joined the channel [03:28] inimino: JimBastard ⋱ There'll be some sort of session.monkeyPatch() call that you'll do before that magic one works? [03:29] JimBastard: inimino: well, thats actually the issue im trying to solve with cloudhead right now... session = require('./lib/core').magicSession, should do the magic [03:29] noahcampbell has joined the channel [03:29] JimBastard: but for some reason, the monkey patch doesnt work when you put it in the exports? [03:29] googol: I just want to let people know that I have tried http://jsapp.us before, that there is now a share function where you can post code and then share a link in which people can instantly test it out [03:29] inimino: JimBastard ⋱ I think you'd have to have a function call in there somewhere [03:29] JimBastard: i want to move the monkey patch from magicDemo.js into core [03:30] JimBastard: inimino: LOL [03:30] JimBastard: >><<< [03:30] JimBastard: duhh [03:30] inimino: session = require('./liblcore').magicSession() // then it can return whatever it wants also [03:31] JimBastard: yeah, that did it [03:31] JimBastard: pushing now [03:31] tim_smart has joined the channel [03:31] inimino: JimBastard ⋱ Is that foo_middleware(req,resp,function(req,resp){...}) pattern becoming common? [03:31] inimino: I haven't looked at anybody's middleware but I need to do some soon [03:32] JimBastard: inimino: im trying to push that convention, there is a thread on the dev mailing list, have you seen response.setHeader? [03:32] JimBastard: did you notice that call? [03:32] inimino: if there's a way to interoperate with existing middleware that would be cool [03:32] JimBastard: response.setHeader is key [03:32] JimBastard: inimino: thats the idea, yeah [03:32] JimBastard: decoupled middleware layers [03:32] inimino: I know you asked for it a while ago, yeah [03:32] inimino: when I saw you using it I guessed ryah added [03:32] JimBastard: cloudhead and i created a module and i published to npm [03:32] inimino: haven't kept up with the mailing list lately, but I'll check it out [03:33] JimBastard: using it for middlewares now [03:33] inimino: not connect? [03:33] JimBastard: https://github.com/Marak/response [03:33] JimBastard: not using connect for anything really right now [03:33] JimBastard: blog is running connect [03:33] inimino: ok [03:33] JimBastard: id rather process my (request,response) with my own glue [03:33] JimBastard: but i bet it would work with connect [03:33] inimino: I'm using my own routing stuff, but it doesn't have any middleware [03:34] inimino: and it's holding me up now so i need to fix it [03:34] inimino: need auth, logging, caching, etc [03:34] Anti-X has joined the channel [03:34] JimBastard: yeah, i should patch our basic auth to use setHeader [03:34] blaines has joined the channel [03:35] bulu has joined the channel [03:35] inimino: but if there's some kind of emerging standard ... it'd be really cool to have some interoperable middleware between different router/framework/whatever [03:35] bulu: hello: throw e; // process.nextTick error, or 'error' event on first tick [03:35] JimBastard: i think function(request, response, callback) is OK [03:35] inimino: hm, maybe [03:35] JimBastard: then you can just like use a flow control library of your choice [03:36] inimino: might be less efficient for heavy middleware stacks though [03:36] JimBastard: in what way? [03:36] bulu: its throwing this error in the middle of parsing the data with httpclient [03:36] bulu: what can i do ? [03:36] JimBastard: bulu: do you have an error handler on the client? [03:36] inimino: well, compared to something that's set up once and can override or can be completely transparent per request... but I should probably think about it some more and look at what's out there [03:37] inimino: 5561 unread messages on nodejs list ... [03:37] bulu: JimBastard no, i tried to set it up but still throwing the error [03:38] JimBastard: bulu: what does the error say when you inspect it? [03:38] JimBastard: do you have gist? [03:38] liori has joined the channel [03:38] bulu: yes fresh just compiled it [03:38] bulu: v0.3.2-pre [03:39] bulu: Error: Parse Error [03:39] bulu: at Client.onData [as ondata] (http.js:880:27) [03:39] bulu: at Client._onReadable (net.js:566:27) [03:39] bulu: at IOWatcher.onReadable [as callback] (net.js:151:10) [03:39] bulu: in the middle of an http page [03:39] bulu: how can i implement an error handler ? [03:40] bulu: xyz.on('error', function() .. ? [03:40] arrty: xyz.on('uncaughtException', function() .. [03:40] yozlet has joined the channel [03:41] bartt has joined the channel [03:41] bulu: arrty, shall i put it inside xyz.on('response'. function() ? [03:41] arrty: function(err) { console.log ('Error: '+err); } [03:42] wilmoore has joined the channel [03:42] arrty: actually if you set process.on('uncaughtException') it will be your safety net for everything not in a try catch [03:43] bulu: i also tried try catch...didnt work.. =( [03:43] bulu: ok but let me try with process.on ... [03:43] davidascher has joined the channel [03:44] bulu: process.on is working. [03:44] arrty: what's wrong? [03:44] bulu: Parse Error [03:45] bulu: like i posted some lines above [03:45] bulu: i printed website to log...but its throwing error in the middle of the website [03:45] bulu: strange thing [03:47] arrty: ah weird. today is my first day in node.js, i just happened to read the docs for event handlers when you asked how to implement an error handler [03:49] bulu: ;-) [03:50] bulu: i also write my first node.js app today [03:50] bulu: =) [03:50] bulu: but somehow your nickname sounds familiar to me [03:50] SubStack: firsts! [03:51] arrty: i'm trying to think of something i can use node.js for [03:51] arrty: i gotta find the handler for mysql [03:51] justin_ has joined the channel [03:51] evanmeagher: arrty: here are two: [03:51] evanmeagher: https://github.com/masuidrive/node-mysql [03:51] evanmeagher: https://github.com/sidorares/nodejs-mysql-native [03:52] arrty: sweet thanks [03:52] evanmeagher: np :) [03:53] JimBastard: bulu: so you added proper error handler? [03:54] evanmeagher: are either of String.search or String.match more efficient than the other? [03:55] nXqd: hey guys, does npm work with root ? [03:55] micheil: http://github.com/felixge/node-mysql is the best. [03:55] nXqd: after installing sass, it says ok but there's samss in ~/.node_libraries [03:55] evanmeagher: nXqd: what do you mean? it's best not to use npm with sudo [03:55] nXqd: sass* [03:55] micheil: nXqd: via npm? [03:55] nXqd: evanmeagher: yup [03:56] luke` has joined the channel [03:56] aurynn: I should work on postgres.js [03:56] aurynn: or node-sdl [03:56] evanmeagher: nXqd: npm's root README covers issues like this [03:56] naturalethic: micheil: agree [03:56] evanmeagher: checkout this: https://github.com/isaacs/npm [03:56] cheney has joined the channel [03:56] nXqd: evanmeagher: thanks first [03:56] evanmeagher: nXqd: not sure if you're having a permissions issue though.. [03:57] AAA_awright: Are there any MySQL benchmarks? [03:57] AAA_awright: I'm having a problem with connections dying out after days of running [03:59] JimBastard: fuck, "session" is already in the npm registry [04:00] bulu: JimBastard: i added process.on('uncaughtExeption',function(err) inside xyz.on('response',function(response){ [04:00] SubStack: JimBastard: call yours seance [04:00] SubStack: wordnet told me it is a synonym [04:00] JimBastard: sesh [04:00] SubStack: seshun [04:01] AAA_awright: npm really needs to identify packages by URL and not a name [04:01] AAA_awright: Or better yet, use RDF to describe packages [04:01] chrischris has joined the channel [04:01] AAA_awright: It could branch out as a general package manager! [04:01] SubStack: nah [04:01] AAA_awright: No seriously [04:01] SubStack: it's just a land-grab for the good names [04:02] SubStack: it is an INGENIOUS way to get us to write MODULES, you see [04:02] SubStack: it creates urgency [04:02] mscdex: woot. gonna have aim/icq connections in node soon :D [04:02] arrty: that's a great idea mscdex [04:02] noahcampbell has joined the channel [04:02] mscdex: i'm about 50% done [04:03] arrty: are you using a 3rd party gateway ? [04:03] JimBastard: im scared to use "sessions" people will mess up [04:04] arrty: such as meebo or something ? [04:04] mscdex: no [04:05] mscdex: i'm interfacing with the servers directly [04:05] mscdex: OSCAR protocol [04:05] bulu: nice [04:06] arrty: cool stuff, didn't know people use icq anymore but i see they have a v5 protocol [04:10] arrty: are u writing an addon in native code or doing it in java? [04:11] arrty: i wanna write a chatbot for the new bnet, but i don't want to reverse engineer sc2 right now [04:12] bulu: how can i send formfield data with httpClient in node.js ? [04:12] bulu: as POST request [04:12] mscdex: arrty: i'm writing it in pure JS -- the easy way ;-) [04:14] arrty: good question bulu, i'm trying to figure that out myself [04:15] arrty: i want to maybe hit some existing php scripts with it [04:15] arrty: or ruby even [04:15] wilmoore has joined the channel [04:16] arrty: i think you have to do stream.connect(port, host) [04:16] arrty: and then send data that resembles HTTP metadata [04:17] bulu: no... u can do it with httpClient i think [04:19] arrty: oh yeah someone else was talking abut using that module with setSecure. i'm not there yet [04:19] bulu: https://github.com/technoweenie/node-scoped-http-client [04:19] bulu: i found this but i dont get smart from it yet [04:21] JimBastard: what you guys think of this API ? https://github.com/Marak/session.js [04:21] JimBastard: sexy? [04:22] arrty: and the session is unique for a req/resp pair? [04:23] arrty: i don't know why you would need it though, wouldn't regular variables persist as long as the connection was open? [04:29] Blackguard has joined the channel [04:29] jamescarr has joined the channel [04:29] wdperson has joined the channel [04:34] aconbere has joined the channel [04:39] SvenDowideit has joined the channel [04:41] JimBastard: arrty: session is unique for the cookie [04:41] JimBastard: set in the client [04:41] JimBastard: i'm going to add more docs tomorrow on how to start setting up roles and users [04:41] JimBastard: requestion.session.userName [04:41] JimBastard: lol err [04:41] JimBastard: request.session.userName [04:41] JimBastard: request.session.history [04:42] JimBastard: etc [04:43] AAA_awright has joined the channel [04:45] nXqd: anyone know how to open open file dialog in expressjs [04:45] jamescarr: hmph [04:46] jamescarr: I have not done anything with sessions, I need to [04:46] bartt1 has joined the channel [04:46] jamescarr: nXqd, uh... input(type="file") [04:49] hoffa_ has joined the channel [04:49] arrty: sc2 time [04:49] arrty: i wish it was as fun as sc1 [04:49] ecounysis has joined the channel [04:50] meck has joined the channel [04:50] hoffa__ has joined the channel [04:50] erlnoob_ has joined the channel [04:52] charlenopires has joined the channel [04:54] unomi has joined the channel [04:54] unomi has joined the channel [04:56] nXqd: jamescarr: thanks, do you know how to use jquery with expressjs. [04:57] jamescarr: like you would any other serverside technology my friend [04:57] jamescarr: jquery exists on the client [04:58] jamescarr: just reference your scripts in a script tag [05:01] cjmFloating has joined the channel [05:02] richcollins has joined the channel [05:02] charlenopires_ has joined the channel [05:02] justin_ has joined the channel [05:04] AAA_awright_ has joined the channel [05:04] linac has joined the channel [05:08] JimBastard: nXqd: do you mean like: http://blog.nodejitsu.com/jsdom-jquery-in-5-lines-on-nodejs ? [05:09] derferman has joined the channel [05:10] Aria has joined the channel [05:12] ben_alman has joined the channel [05:12] nXqd: JimBastard: like, you enter mysite.com/ , i'll render a jade file. So I just need to include script js ? Any staticProvider [expressjs] needed ? [05:16] termie has joined the channel [05:16] termie has joined the channel [05:18] cjmFloating has joined the channel [05:20] charlenopires has joined the channel [05:21] nXqd: why people use haml or sass to gen html / css file ? [05:21] nXqd: Do they tend to do everything on server ? [05:22] nXqd: I'm newbie :) [05:22] nXqd: what is it different with create an html file and load it ? [05:24] Spion__ has joined the channel [05:26] blaines has joined the channel [05:29] bingomanatee has joined the channel [05:29] Anti-X: instead of haml, use jade [05:30] Anti-X: the difference is that they are templates, not html files [05:30] Anti-X: to answer your question [05:31] deepthawtz has joined the channel [05:32] JimBastard: i still think all templating should be done client-side [05:32] JimBastard: and only json goes back forth between node [05:32] JimBastard: thats how www.nodejitsu.com works [05:32] Anti-X: good for you [05:33] Anti-X: what if you're not serving up js content [05:36] derferman has joined the channel [05:36] gilesgoatboy has joined the channel [05:37] herbySk has joined the channel [05:38] arrty has joined the channel [05:39] mikew3c has joined the channel [05:39] arrty has joined the channel [05:40] cjmFloating has joined the channel [05:40] richcollins: Anyone run across intermittent errors that say "Error: ECONNREFUSED, Could not contact DNS servers" [05:41] richcollins: when connecting to localhost? [05:41] richcollins: this was in the client. In the server at the same time I got: "(node) Hit max file limit. Increase 'ulimit -n'" [05:41] richcollins: even though my ulimit is "unlimited" [05:41] Aria: There's still a max file limit imposed by your operating system [05:41] Aria: (ulimit -a shows all limits) [05:42] Aria: You can usually raise it with a sysctl, at the cost of some RAM for the structures [05:42] richcollins: Aria: Ah it looks like its only set at 256 [05:42] Aria: That'd do it! [05:43] richcollins: Aria: I can set this in .bashrc so it is always high? [05:43] Aria: If it's soft limited ,yes. Though often /etc/security/limits.conf or something else controls it. [05:44] richcollins: Aria: Do you think that the error I'm getting in my client is related? [05:44] richcollins: "Error: ECONNREFUSED, Could not contact DNS servers" [05:44] Aria: Yeah. Though the bit about DNS servers seems odd. [05:44] richcollins: I'm guessing that the bit about contacting DNS servers is wrong [05:44] richcollins: I'm connecting to localhost [05:44] Aria: But when you've exceeded your backlog at the server, it'd refuse connections [05:44] richcollins: makes sense [05:45] richcollins: Man this took forever to figure out. I was handling the error but I wasn't properly updating my app state [05:45] richcollins: so it would end prematurely [05:45] Aria: Oop! [05:45] richcollins: event driven programming is tricky ... [05:45] Aria: Yep. Or different at least. [05:46] richcollins: Well you have to implement some loops through callbacks [05:46] richcollins: so if the callback doesn't start the "loop" over again, the program terminates [05:46] richcollins: In this case I'm making a crawler [05:46] richcollins: When a page is crawled, it gets requeued [05:47] Anti-X: here's one for ya [05:47] Anti-X: “I’ve noticed lately that the paranoid fear of computers becoming intelligent and taking over the world has almost entirely disappeared from the common culture. Near as I can tell, this coincides with the release of MS-DOS.” (Larry DeLuca) [05:47] richcollins: I wasn't requeueing it for one type of error [05:47] richcollins: so the process would exit [05:47] richcollins: heh [05:47] richcollins: That could be said about most software though [05:47] richcollins: Some just sucks less than others [05:48] mscdex: ACTION /D:IDECD0001 [05:48] mscdex: :-D [05:48] Anti-X: except microsoft is the epitome of unintelligent software [05:50] Anti-X: not saying they make bad software, just.. the workflows are sometimes a bit... off [05:50] isaacs has joined the channel [05:50] Anti-X: that's not right either [05:50] Anti-X: bah nevermind [05:51] Anti-X: cna't put my finger on it [05:51] Aria: Too many cooks. [05:52] Anti-X: i don't think they have too many cooks.. apparently they have quite clear separations of responsibility at ms [05:52] Anti-X: i think it's more that they have too many idle can openers [05:52] Anti-X: a symptom that can be observed at google as well [05:56] Aria: Yeah. Though I think it's a lack of vision -- or more, too many little visions and no big one. [05:56] Aria: Too many cooks -- everyone working on THEIR thing. Not THE thing. [05:57] justin_ has joined the channel [05:58] isaacs: micheil: you don't dig chain()? [05:58] micheil: no, because sometimes it forwards the stuff in cb(arg1, arg2, arg3... ) [05:58] micheil: and other times it doesn't [05:58] micheil: or at least I'm getting shitloads confused by it, because it just does unexpected stuff [05:59] isaacs: micheil: i think in chain() in npm, it doesn't *ever* forward args. [05:59] justin_ has joined the channel [05:59] isaacs: it's less advanced than slide's chain)( [06:00] micheil: https://gist.github.com/717618 [06:00] isaacs: micheil: all it does is run the supplied functions in sequence, aborting on any errors [06:00] isaacs: oh, no [06:00] isaacs: yeah, no, it doesn't work that way at all [06:00] isaacs: micheil: also: the first arg to cb is *always only ever an error or null* [06:00] isaacs: there are zero exceptions to that [06:01] isaacs: pass in a first arg to a cb, and it's an error. that breaks the chain [06:01] isaacs: so, on line 16, when you do cb(deps, Object.keys(deps)); in the first function, that is not ok [06:01] isaacs: kaboom [06:02] micheil: so in my functions, there isn't actually an error argument [06:03] Anti-X has joined the channel [06:06] micheil: isaacs: what about for function or arrays? [06:06] isaacs: micheil: the arrays are just a way for you to bind the args in a terser syntax [06:06] masahiroh has joined the channel [06:06] micheil: right [06:06] isaacs: [fn, a, b, c] is like function (cb) { foo(a, b, c, cb) } [06:07] shaver: s/foo/fn/ [06:07] isaacs: oh, yeah [06:07] shaver: C'MON, ISAACS, TRY TO KEEP UP! [06:07] isaacs: hahah [06:08] indutny has joined the channel [06:08] indutny: hi everyone! [06:08] indutny: ryah: isaacs: are you here? [06:09] isaacs: yah [06:09] indutny: i've some time to work on my event-propagation patch [06:09] indutny: now [06:09] micheil: hmm.. isaacs yeah, it's still confusing, because you'd think a chain() would pass on arguments and stuff [06:09] isaacs: micheil: yeah [06:09] shaver: if it's a chain, the previous return should go into the next call, IMO [06:09] isaacs: micheil: slide's chain is more advanced. [06:09] shaver: chain =~ reduce [06:09] shaver: oh, no, sorry [06:09] indutny: isaacs: but I'm still have questions, about function return value [06:10] shaver: as you were [06:10] isaacs: shaver: in this implementation, chain =~ forEach [06:10] shaver: yeah, that makes sense [06:10] shaver: it's not a pipeline [06:10] Aria: Mm. foreach + bailout [06:10] evanmeagher has joined the channel [06:10] isaacs: but it's like, "for each of these functions, call them" [06:10] isaacs: and if they throw, then throw [06:10] mjr_ has joined the channel [06:10] isaacs: but it's an async throw, so it's just cb(er) [06:10] micheil: or just that: chain(function(cb){ cb("a") }, function(a){ console.log(a+"b") }) [06:11] indutny: isaacs: my last question was, if we have event with one event listener and this listener is returning "false" on execution, how do I track, that event propagation was stopped, and I do not need to destroy socket on 'upgrade' event [06:11] isaacs: indutny: oh, righg [06:11] indutny: isaacs: if we will use number of called listeners as output value [06:11] indutny: this is impossible [06:11] indutny: may be do not count last listener [06:11] indutny: if it wasn't called [06:12] isaacs: or don't count the last one if it was cancelled? [06:12] deepthawtz has joined the channel [06:12] indutny: yep [06:12] isaacs: so, zero always means "nothing to see here, move along" [06:12] indutny: not only zero [06:12] indutny: if value less than event listeners count [06:12] isaacs: of course, then that's a bit disingenuous, because *something* was done. [06:12] evanmeagher: isaacs: refactored as per your suggestion earlier: https://gist.github.com/f38ecef49bcb49836574 [06:13] micheil: isaacs: I'm doing something wrong here, I swear. https://gist.github.com/717618 [06:13] indutny: yep, I understand, but I do not see any another way [06:13] evanmeagher: isaacs: and as I mentioned in an email, I've added two funcs within completion.js to handle the common completion cases [06:13] micheil: isaacs: because readAndInstall gets: { '0': [Function: cb] } [06:13] micheil: as the args [06:14] micheil: when it should get: [06:14] indutny: ACTION is ready for making patch, just waiting for the confirmation [06:14] isaacs: micheil: ok, so, chain functions: their data is not passed on. not ever. not in any way. [06:14] micheil: { '0': {json object}, '1': [Function: cb] } [06:14] isaacs: it's not reduce. [06:14] isaacs: it's forEach [06:14] micheil: so, how's that work else where in npm's code base? [06:14] isaacs: so you're reading the json data, and then discarding it [06:15] isaacs: micheil: there are a lot of cases where all i care about is success or failure. [06:15] isaacs: evanmeagher: yeah, i'm replying to your email [06:15] deepthawtz has joined the channel [06:16] evanmeagher: isaacs: gotcha, thanks [06:16] herbySk has joined the channel [06:16] isaacs: micheil: so, the idea is, break the problem down into discrete "if it worked, then great" pieces, and then use chain() on those [06:16] micheil: :/ [06:16] isaacs: micheil: if you want to do a map/reduce kinda thing, asyncMap is good for that [06:16] micheil: but I'm not really doing a map/reduce [06:16] indutny: isaacs: can i bother you? :) [06:16] isaacs: right [06:17] isaacs: youer' doing "get the data and use it [06:17] micheil: I'm just wanting to pass data along my chain, like I would if I nested the callbacks [06:17] evanmeagher: isaacs is popular tonight [06:19] isaacs: micheil: break up the task into discrete bits. [06:19] isaacs: micheil: also, the "check for folder-ness" is unnecessary. just wrap the whole chain in teh readJson call. that'll fail if folder/package.json isn't a file, so there's your check [06:20] indutny: ACTION brb in 15 minutes [06:20] markh has joined the channel [06:20] micheil: isaacs: yeah, so far I've based the code off what you've got in link.js [06:21] isaacs: ah, kew [06:21] micheil: so, that's where I'm getting a lot of the wtf's from. [06:21] bulu: i am always getting Parse Error when sending request.write(string), any idea what could be the reason ? [06:21] micheil: isaacs: but yeah, a chain that doesn't pass data kinda sucks. [06:22] isaacs: eh. it's been working out ok. [06:22] micheil: like, wtf is the go with this: https://github.com/isaacs/npm/blob/master/lib/utils/chain.js#L30-32 [06:22] isaacs: [log, "verbose", ...] might not work, btw. because log() is a function [06:22] fangel has joined the channel [06:23] isaacs: oh, hey, yeah, all the results get sent to the *final* cb. [06:23] isaacs: but not to each function along the way [06:24] isaacs: so you could do chain(foo, bar, [readJson,file], something, function (er, res) { // data is in res }) [06:24] micheil: see. confusing. [06:24] isaacs: yeah [06:25] isaacs: i never ever use that [06:25] micheil: can I patch that? [06:25] micheil: cos it's a pain in the ass. [06:25] isaacs: you mean, remove that bit from chain() so that there's not some extra code in my utility fucntion? sure [06:25] isaacs: don't use it if you need the data at each step. [06:25] micheil: no, I meant make it so it always passes data. [06:25] isaacs: use asyncMap, or promiseChain [06:25] micheil: :( [06:26] isaacs: or just keep the object around. [06:26] isaacs: or nest once when you get to the readJson function [06:26] zentoooo has joined the channel [06:27] isaacs: promiseChain is complex and crappy, though [06:27] isaacs: way too featureful and cute [06:28] mjr_: Have you guys seen this graphical HTTP analyzer that mnot built on node and node_pcap? https://github.com/mnot/htracr [06:28] mjr_: Pretty badass. [06:28] isaacs: mjr_: YES AND OMG WOW [06:28] heap has joined the channel [06:28] mjr_: I started writing that program like 4 different times, but it just got too complicated. [06:28] mjr_: And I suck and UI code. [06:28] indutny: ACTION is here again [06:28] indutny: isaacs: what about my proposal? [06:29] indutny: do you agree or not? [06:29] isaacs: ok, say it again? sorry, i was distracted [06:29] indutny: ok [06:29] micheil: isaacs: seriously, passing the results / args of cb() would make code much cleaner in places [06:29] indutny: isaacs: emit() will be returning number of listeners, that was called on event and returned not "false" value [06:30] isaacs: right [06:30] indutny: isaacs: ok? [06:30] isaacs: indutny: but if there's only one listener, and it cancels, then what? [06:30] isaacs: indutny: return 0 or 1? [06:30] indutny: 0 [06:30] shaver: 0 [06:30] isaacs: yeah.. that's not great. [06:30] indutny: why? [06:30] indutny: reasons [06:30] isaacs: because something did happen, which is the point of the return value, to know if emitting the event did something [06:31] shaver: return NaN if none were called [06:31] amerine has joined the channel [06:31] isaacs: foo.on("bar", function () { // do lots of stuff // return false }) [06:31] isaacs: so now, foo.emit("bar") will return 0 [06:31] indutny: oh [06:31] isaacs: but lots of stuff happened [06:31] indutny: ok [06:31] indutny: shaver is proposing NaN [06:31] shaver: I think I'm wrong here [06:31] indutny: it's actually a Number too [06:32] indutny: not so much [06:32] isaacs: NaN is poison [06:32] shaver: but NaN has nice effects in some cases [06:32] isaacs: it's not equal to anything, for starters [06:32] shaver: right [06:32] isaacs: v8: NaN == NaN [06:32] v8bot: isaacs: false [06:32] shaver: that's the reason I like it [06:32] isaacs: not even slightly equal [06:32] isaacs: to itself [06:32] indutny: isaacs: but how to get this trick working? if last event listener will return false [06:32] indutny: v8: isNaN(NaN) [06:32] v8bot: indutny: true [06:32] indutny: :D [06:33] isaacs: v8: NaN != NaN [06:33] v8bot: isaacs: true [06:33] shaver: v8: NaN < 0 [06:33] v8bot: shaver: false [06:33] isaacs: ok, at least it's not like the old php null poison [06:33] isaacs: not sure if it still has that [06:33] indutny: v8: (NaN < 0) + '-' + (NaN > 0) [06:33] v8bot: indutny: "false-false" [06:33] isaacs: okok [06:34] isaacs: returning NaN is weird. [06:34] indutny: ok, I agree [06:34] indutny: there's a good point about it [06:34] Tidwell: IMO NaN should never be tested against.... as you guys say NaN can have too many cases to test for [06:34] isaacs: it offends me on some level. [06:34] isaacs: NaN should be reserved for "hey, dummy, you can't add 8 + sandwich" [06:34] indutny: isaacs: ? [06:34] indutny: ah [06:34] indutny: ok [06:34] indutny: so [06:35] isaacs: ACTION multiplies 8 + sandwich into his FACE [06:35] isaacs: * [06:35] indutny: how do you solve this problem without type mungeing [06:35] indutny: ? [06:35] isaacs: hmmmm [06:35] Tidwell: isaacs: in that case you would throw() instead of else() (...am I right??) [06:35] Anti-X: egg and your face are in alignment! [06:36] isaacs: v8: throw new EggSandwich [06:36] v8bot: isaacs: ReferenceError: EggSandwich is not defined [06:36] shaver: I think you should just require that callbacks are side-effect free if they return false [06:36] shaver: like the strong C++ exception guarantee [06:36] isaacs: indutny: yeah, what shaver said [06:36] isaacs: returning 0 should mean "no side effects happened" [06:36] indutny: ok [06:36] isaacs: but then how to know if there was a cancellation? [06:36] indutny: yep [06:36] isaacs: testing against the length is not a valid test. [06:36] indutny: yep [06:36] indutny: :D [06:36] Tidwell: yar [06:36] shaver: why do you care if there was a cancellation? [06:36] indutny: shaver: it's my proposa [06:37] indutny: proposal* [06:37] shaver: what decision will you make on that basis? [06:37] indutny: this will simplify "upgrade" event usage [06:37] isaacs: shaver: indutny wants it to make upgrade requests easy [06:37] indutny: so node will destroy socket [06:37] isaacs: indutny: what if you increment it AGAIN at the end of the flow? [06:37] stagas has joined the channel [06:37] indutny: haha :) [06:37] indutny: so like canceled event was called twice [06:37] Tidwell: isaacs: as in long-poll amiright :P [06:38] isaacs: indutny: so, the retval of length+1 => everything was called, nothign was cancelled. [06:38] googol has joined the channel [06:38] isaacs: indutny: retval == length => last item was cancelled [06:38] indutny: isaacs: may be change sign of return value? :) [06:38] indutny: :P [06:38] indutny: if event was cancelled [06:38] indutny: I don't like your proposal [06:38] indutny: sorry [06:38] isaacs: indutny: hmm... i don't like relying on signate [06:38] isaacs: *signage [06:38] isaacs: yeah, i don't love it either [06:38] shaver: return [cancelled, numcalled] [06:38] indutny: nonono [06:38] shaver: harmony will have destructuring anyway [06:39] isaacs: shaver: we will never have harmony. [06:39] isaacs: shaver: js is not harmonious. [06:39] shaver: (I'm assuming that it's important to know the specific number that were called, too, because I don't understand that part myself) [06:39] isaacs: ACTION 's grandchildren will program their flying robot cars using javascript [06:39] indutny: :) [06:39] micheil: isaacs: actually, by always passing the extra args to cb() along the chain, I can remove a fair bit of code from chain [06:40] indutny: ok [06:40] indutny: hm... [06:40] isaacs: indutny: what about a simple return code? 0 = nothing happened, 1 = it was cancelled, 2 = it all worked [06:40] indutny: let me think let me think [06:40] indutny: isaacs: great! ) [06:40] indutny: :) [06:40] isaacs: i mean, the specific number doesn't matter, right? [06:40] isaacs: you don't really care about the count [06:40] isaacs: just what happened. [06:40] indutny: yep [06:40] isaacs: and then they could even be consts. [06:40] indutny: ok [06:41] shaver: yeah, return an enum [06:41] isaacs: events.NO_EFFECT=0; events.CANCELLED=1 etc [06:41] indutny: ACTION starts working on the patch [06:41] isaacs: sweet [06:41] isaacs: :) [06:41] shaver: or return a boolean and throw if it was cancelled? not sure if it's really exceptional [06:41] indutny: nono [06:41] indutny: shaver: no type munging [06:41] indutny: it's ugly [06:41] micheil: isaacs: hmm, so, is it still a no? [06:41] shaver: "type munging"? [06:41] indutny: I do not know how to call that :) [06:41] isaacs: micheil: don't touch chain(). if it is a dramatic reduction (worth adding a new util) then go ahead and add the result-passing system. [06:42] isaacs: shaver: throwing wont' work. async. [06:42] indutny: oh looks like I confused word [06:42] shaver: oh, this is passed to the cb? [06:42] indutny: :D [06:42] shaver: ok [06:42] isaacs: micheil: and then we can refactor things over to the better system in the cases where it's better. [06:42] isaacs: micheil: chain() is in a lot of hot code, though [06:43] indutny: isaacs: I'll be here, ping me at : fedor.indutny@gmail.com (GTalk) if you have some questions - changes [06:43] isaacs: shaver: oh, wait, no, but having to try/catch around each emit() call would suck [06:43] indutny: not sure if IRC will be notifying me [06:43] shaver: yeah, I didn't know if it was exceptional [06:43] shaver: like "handling can't progress" [06:44] dnolen has joined the channel [06:46] saikat has joined the channel [06:46] dab: So is there no way to get SSL in a net socket thing? [06:49] indutny: ACTION is recompiling node [06:49] dab: :o [06:50] stagas has joined the channel [06:53] mjr_: dab: there certainly is a way to do it, but the API has been changing a lot lately. [06:53] dab: :\ [06:53] micheil: isaacs: hmm.. https://gist.github.com/717656 [06:54] isaacs: micheil: so, here's why that's going to break the world, and this new function is clever, but must be called something other than chain: [06:54] shaver: mjr_: I forgot your answer last time: is there a node_redis mock thing out there for writing tests for libraries that operate on redis? [06:54] micheil: isaacs: uhh, not at all. [06:55] isaacs: micheil: some functions return many arguments. [06:55] micheil: remember module scope? [06:55] mjr_: shaver: I don't have one, no. Seems like a great thing to have, but also a bunch of work to make it useful. [06:55] isaacs: micheil: well, yeah, but i mean, it can't be dropped into lib/utils/chain.js [06:55] micheil: calling it chain in that code shouldn't matter [06:55] mjr_: shaver: right now all of the tests use a live Redis server [06:55] micheil: It's not, I've got it at lib/utils/pass-chain.js [06:55] isaacs: ok, sure [06:56] isaacs: why not call the function passChain, then, and keep with the naming conventins? [06:56] shaver: mjr_: well, even just something that counts asserts or whatever would help [06:56] shaver: mjr_: I'll see what I end up hacking up for this project [06:57] mjr_: shaver: contributions are most welcome if you come up with something useful. [06:57] shaver: noted [06:57] mjr_: I'm pretty happy with the tests using an actual Redis server. The only downside is that there are several different server versions, and they act differently. [06:59] mjr_: I think we'll have a major new release of node_redis in the next couple of weeks. pnoordhuis from Redis has been putting some time into it lately. [06:59] micheil: isaacs: like, this doesn't do the scoping stuff, but that's okay, I think. [06:59] shaver: excellent [07:00] grahamalot has joined the channel [07:00] isaacs: mjr_: is bnoordhuis from redis? [07:00] shaver: yeah, vmware pays him and salvatore to work on redis [07:00] mjr_: I think we have a noordhuis collision. [07:00] isaacs: oh, heh [07:00] shaver: er, p, not b [07:01] sh1mmer: I still have yet to figure out the difference between the various document/kv databases [07:01] Utkarsh has joined the channel [07:01] mjr_: sh1mmer: they all eschew SQL is different ways, and they are all web scale. [07:01] sh1mmer: 'web scale' [07:01] sh1mmer: ha! [07:01] sh1mmer: :) [07:02] shaver: this alchemy thing (nee "redisql") is pretty wild [07:02] sh1mmer: ACTION built web scale using perl and tears [07:02] mjr_: shaver: have you looked at the code for alchemy? It's crazy. [07:02] shaver: only a little [07:02] mjr_: Like, crazy in a good way [07:02] shaver: that dude is fearless [07:02] mjr_: Exactly [07:02] mjr_: What an insanely ambitious project. [07:02] shaver: yeah [07:02] mjr_: Oh, I dunno, I'll just add in SQL to Redis on the server side. [07:03] mjr_: Then throw in some Lua [07:03] shaver: and mapping between them [07:03] shaver: you know [07:03] mjr_: You know, for scripting joins and shit [07:03] sh1mmer: who is it? [07:03] mjr_: Russel AKA "Jak Sprats" [07:03] mscdex: there is no way to set non-literal keys in an object literal declaration right? [07:03] mjr_: I've talked with him a lot over email. [07:03] shaver: mscdex: correct [07:03] mscdex: thought so [07:04] mjr_: shaver: I helped him get his node client working for alchemy. Have you seen the example code? It's outlandish and awesome. [07:05] shaver: no, haven't yet [07:05] mjr_: Like, redis set, redis something else, OK, now do a SELECT and join between those two things. [07:05] _Utkarsh has joined the channel [07:05] shaver: yea [07:06] sh1mmer: mjr_: why redis over say, couch? [07:06] sh1mmer: in general, not redisql [07:06] shaver: redis is basically "only things that can be incredibly fast" [07:06] mjr_: I use redis for data that I don't mind losing a little of. [07:06] mjr_: Like, I hope I don't lose any, but it'd be OK if I did. [07:06] sh1mmer: weblogs? [07:07] mjr_: Then I use CouchDB for data I'd mind losing. [07:07] sh1mmer: gotcha [07:07] sh1mmer: eventual consistency vs. speed [07:07] shaver: are there good recovery and such tools for couch? [07:07] shaver: I haven't really played with it [07:07] thebigbad: anyone know how to make Mu stop caching the templates? I'm not seeing changes right now until I restart the server, which is annoying. [07:07] mjr_: I dunno what I'd do if I lost my couch database. [07:08] mjr_: Oh wait, yes I do. I'd use the replica [07:08] shaver: pull it from backups [07:08] shaver: redis replication is pretty straightforward, I think [07:08] mjr_: The win with CouchDB is super awesome replication. Bi-directional even. [07:08] shaver: I'm going to start using it [07:08] shaver: yeah [07:08] shaver: be interesting to see what the redis-cluster stuff does for that [07:08] JimBastard: i heard the new CouchDB rap was off the chain [07:09] sh1mmer: mjr_: I've been playing with Riak a lot recently [07:09] shaver: yeah, riak is also cool [07:09] sh1mmer: I really want to get something I can really push the boundies on [07:09] sh1mmer: although I also want to try BigCouch [07:09] shaver: we use it for the test-pilot data for Firefox [07:09] mjr_: Riak sounds neat, but I really like CouchDB's views. [07:09] shaver: though: http://browsertoolkit.com/fault-tolerance.png [07:09] sh1mmer: mjr_: the link walking in riak is rad [07:09] sh1mmer: mjr_: riak has M/R too [07:10] shaver: yeah, I don't fully grok the link-walking in riak [07:10] sh1mmer: I don't know enough to compare the two approaches though [07:10] mjr_: Not incremental map reduce though. [07:10] shaver: isn't all map/reduce incremental? [07:10] sh1mmer: shaver: create b-trees from your documents [07:10] mjr_: Riak will feed your entire database through a set of map and reduce phases when you query it. If you have a large database, that is expensive. [07:10] mjr_: It does not save the results. [07:10] shaver: oh [07:10] sh1mmer: mjr_: it doesn't cache? I thought it cached [07:10] mjr_: CouchDB's incremental MR just adds the new docs to the index. [07:11] mjr_: And updates any changed nodes in the index that are effected by a reduce, of course. [07:11] shaver: oh [07:11] shaver: I guess you can do that with post-commit hooks, sorta? [07:11] sh1mmer: ok [07:11] shaver: not really, I suppose [07:11] sh1mmer: from the 0.13 riak docs [07:11] sh1mmer: "In addition to this, the caching layer for JavaScript MapReduce has been completely re-implemented." [07:11] mjr_: sh1mmer: I have learned the following two things by listening to the changelog podcast on the freeway today: 1) that Erlang MR cartoon was from a Riak user frustrated by MR, 2) this is why they made riak-search [07:12] shaver: because you have to manually deal with re-entry there, which means someone is going to fuck up and send your storage nodes off into east hyperspace [07:12] sh1mmer: mjr_: fair enough [07:12] mjr_: I think, but do not know, that the cache in this case is just the cache of the results of your query, not a cache of the index itself. [07:12] sh1mmer: right [07:13] mjr_: CouchDB puts that index back on disk. [07:13] sh1mmer: mjr_: you could do that yourself, but it would be cool if it was baked in [07:13] sh1mmer: I guess I don't see why they wouldn't do that [07:13] mjr_: I guess storing the results of MR jobs back in Riak is what people do. [07:13] mjr_: But now that they have riak-search, supposedly this is good. [07:14] sh1mmer: riak doesn't have the auto-id concept either. I wonder if that's a supporting feature of couch [07:14] mjr_: er, supposedly this is better [07:14] shaver: or the _changes stream [07:14] shaver: I need to play with couch [07:14] mjr_: changes is really great [07:14] sh1mmer: I need to try bigcouch [07:14] sh1mmer: mjr_: have you tried that? [07:14] mjr_: I have not. [07:14] mjr_: But I'm going to need to do so soon. [07:16] mjr_: Joyent has a Riak smartmachine option that I've been meaning to look at. It'd make it a pretty convenient way to scale out. [07:17] sh1mmer: yeah [07:17] shaver: bigcouch looks pretty OK [07:17] sh1mmer: I'd like to see that with bigcouch too [07:17] sh1mmer: well it adds the dyanmo concept to couch [07:17] Utkarsh has joined the channel [07:17] sh1mmer: the ring concept is rad [07:17] mjr_: The fact that bigcouch has a changes feed makes it seem more winning than riak. [07:18] shaver: yeah, _changes comes up in the riak-vs-couch thing pretty often [07:18] sh1mmer: mjr_: I think basho still have a lot of scope to define what riak looks like [07:18] shaver: yeah [07:18] sh1mmer: and their dynamo implementation is solid [07:18] shaver: they are really just getting started [07:18] shaver: and I think the vector clock model has legs [07:19] mjr_: The index on disk is pretty great if you don't change things very often. [07:19] shaver: redis is just so fast [07:19] mjr_: But yeah, both platforms have a lot to offer. [07:19] shaver: like, I have to keep reminding myself to test before deciding I have to optimize [07:20] shaver: "mmm, I'm going to have to cache that subset or it'll take...oh, 2 ms, never mind" [07:21] mjr_: From what I've seen, Redis is about to get faster and more memory efficient. [07:21] sh1mmer: I wish someone would write this up well [07:21] sh1mmer: I feel like no-one has really done a good job of describe the strengths of each solution in one place [07:21] mjr_: sh1mmer: that's for sure [07:21] sh1mmer: and then people just pick camps [07:21] mjr_: lots of crazy bias and brand loyalty. [07:22] sh1mmer: "I'm for Redis so I must be against CouchDB" which is just nonsense [07:22] sh1mmer: mjr_: exactly [07:22] mjr_: Especially since all the CouchDB people love Redis. [07:24] mjr_: sh1mmer: this multiple choice "new database" decision has been especially complicated because the docs for all of the projects were pretty weak. [07:24] Anti-X has joined the channel [07:24] mjr_: CouchDB just did a big update on their docs, which are now pretty good. [07:24] sh1mmer: right [07:24] mjr_: It's just hard to figure out what these things are even doing. [07:24] mjr_: Unless you spend a ton of time with it, read the ml, talk to people on IRC, etc. [07:24] sh1mmer: mjr_: I was talking to Jan about writing up a designing for document stores post [07:24] sh1mmer: because frankly I've been fucking mystified [07:25] shaver: we did a bunch of analysis on the map-reducey set for a mozilla project recently [07:25] sh1mmer: I mean, data architectures are totally different in document stores [07:25] sh1mmer: but I haven't been able to find a single good post on how to architect data for them [07:25] shaver: yeah [07:25] mjr_: It took a long time for me to get my head around the K/V way of thinking. [07:25] shaver: nosql needs some Dr Codd's [07:26] shaver: er Codds [07:26] mjr_: But I'm really glad I did, because now there are tons of options. [07:26] sh1mmer: the best two are the riak post on that, and then the couchapps blog app writeup [07:26] sh1mmer: mjr_: but it also varies from doc store to doc store [07:26] sh1mmer: couch ids play a big part in architecture [07:26] sh1mmer: as should riak links [07:26] namelessnotion has joined the channel [07:26] sh1mmer: so there is general theory and specific practices per system [07:27] mjr_: Sure, but there is a fundamental difference that both share from traditional relational models. [07:27] sh1mmer: right [07:27] mjr_: And then they each have their particular take on how to optimize that. [07:27] sh1mmer: mjr_: I think this was part of my confusion [07:27] sh1mmer: couchdb make it easy to use MR to do argregate views in a non-insane way [07:28] sh1mmer: in riak those need to be currated much more [07:28] mjr_: But surprise! Those CouchDB views that are so simple at first are slllloooow when you get an even slightly large database. [07:28] shaver: found it! http://blog.mozilla.com/data/2010/05/18/riak-and-cassandra-and-hbase-oh-my/ [07:28] Wyverald has joined the channel [07:29] sh1mmer: nice! [07:30] indutny: I think i got it [07:30] sh1mmer: hey shaver I just realised you are on that thread with /be about spidermonkey and the v8 mapping [07:30] indutny: ! :) [07:30] indutny: https://github.com/donnerjack13589/node/compare/master...event-prop [07:30] shaver: sh1mmer: I am! [07:30] mjr_: I also appreciate CouchDB for how supportive the couch people have been of node. [07:30] shaver: sh1mmer: watching it with interest [07:30] sh1mmer: <-- tom [07:30] shaver: mjr_: yeah [07:30] shaver: oh hey! [07:30] sh1mmer: shaver: yeah, we have spidermonkey on our edge [07:30] sh1mmer: so we'd really like to be able to put node out there [07:30] shaver: yeah [07:31] shaver: when I write node JS I really want some spidermonkey bits [07:31] sh1mmer: nooo [07:31] sh1mmer: ;) [07:31] mjr_: Wait, nobody mentioned E4X? [07:31] shaver: like yield, deconstructing, function expressions [07:31] sh1mmer: ecmascript 5 pls! [07:31] sh1mmer: mjr_: thankfully not in spidermonkey [07:31] shaver: E4X and I have a hate-hate relationship [07:31] sh1mmer: ACTION spits [07:32] mjr_: heh [07:32] shaver: spidermonkey supports E4X [07:32] shaver: has for...long time [07:32] sh1mmer: I thought it was only in rhino [07:32] mjr_: It is hilarious when people bring up E4X in here [07:32] sh1mmer: hm [07:32] fangel: I would love deconstruction.. I miss it badly [07:32] shaver: nope, was in SM first [07:32] sh1mmer: bah humbug [07:32] sh1mmer: we should leave that out of the binding [07:32] mjr_: Hey, how come node doesn't have E4X? It is so great! they'll say. [07:32] mjr_: Then like 5 people immediately explode [07:32] shaver: E4X is pretty handy for XML<->JSON conversion [07:32] shaver: but man, what a shitty spec [07:32] sh1mmer: e4x is a fine idea, with a god-awful implementation [07:33] shaver: 'for each' is OK [07:33] sh1mmer: problem is people use XML for the wrong tings [07:33] shaver: yes [07:33] sh1mmer: it's a great interop language because it's easy to read over the wire [07:33] sh1mmer: but it turns out JSON does that better [07:33] shaver: XML is OK if you want to do mixed content of arbitrary sorts [07:34] shaver: SVG + Collada + biological data + whatever [07:34] mjr_: I think all of that new language feature stuff in SM looks really nice. As mode node codebase gets larger and more engineers are working on it, I'm glad we have fewer language features. [07:34] mjr_: The code may be ugly, but it is easy for everybody to understand what it does. The cleverness factor is easier to account for. [07:34] shaver: yeah, I mostly like the SM features that simpify common patterns [07:34] mjr_: I meant to say as MY node codebase gets larger. [07:35] shaver: twss [07:35] sh1mmer: mjr_: knows my loathing of Perl [07:35] shaver: I wrote a lot of perl in my teenage years [07:35] mjr_: Our old code was in Python, which is supposedly the ideal of language design to many. [07:35] sh1mmer: oh didn't we all [07:35] faust45 has joined the channel [07:35] sh1mmer: I like Python, but it isn't perfect by any means [07:35] mjr_: And man, it is like perl-class cleverness, all dressed up in this elegant, whitespace matters, syntax. [07:35] shaver: ACTION remembers recompiling perl4 to add oracle support [07:36] mjr_: oraperl [07:36] shaver: yes sir [07:36] mjr_: Gotta have a new binary [07:36] shaver: 4.036? [07:36] shaver: something like that [07:36] sh1mmer: btw, anyone have a suggested couch binding for node? [07:36] mjr_: I wrote some very large perl applications way back when. [07:36] sh1mmer: especially now felix isn't maintaining his [07:36] shaver: yeah [07:36] mjr_: And I still bust it out on the command line. [07:37] mjr_: sh1mmer: I just use raw node, or possibly mikeal's request library. [07:37] shaver: yeah, the couchdb API is REST, right? [07:37] mjr_: I use raw node for talking to the changes feed, and request for everything else. [07:37] mjr_: http://docs.couchone.com/couchdb-api/index.html [07:38] mjr_: New CouchDB docs hotness [07:38] shaver: niiiiiice [07:38] mjr_: Both couch and mdc got new docs for Christmas. [07:38] sh1mmer: mjr_: when I was in college I wrote an e-commerce system in perl that authenticated radius logins to a wi-max internet provider in florida [07:38] mjr_: or at least, they got new CSS. [07:38] shaver: MDC gets new docs every day, pretty much [07:38] shaver: it's starting to get pretty excellent [07:39] sh1mmer: perl seemed good then. but I was leaving ASP in VB so I guess everything looked great then [07:39] shaver: much better than when I was running it :-) [07:39] mjr_: Yeah, I'm a big fan of MDC. [07:39] sh1mmer: chris' campaign to replace w3schools [07:39] sh1mmer: that'll be awesome [07:39] shaver: yeah [07:39] shaver: the google guys are helping too [07:39] mjr_: sh1mmer: I built a perl-based distributed mapper and reducer, although I didn't know to call it that, for Cisco NetFlow data before there were any commercial options. [07:39] shaver: paul irish and his posse [07:40] Utkarsh has joined the channel [07:40] sh1mmer: mjr_: haha! I did that in python in college on the 300 sparcs on the computer lab floor [07:40] shaver: I wrote perl ajax with script tags doing document.write from hidden frames [07:40] sh1mmer: I wonder how many people have made something like map reduce but didn't see "it" [07:40] mjr_: Then Level3 bought my ISP and buried the project in their internal politics, and nobody ever used it. [07:41] sh1mmer: mjr_: you could have been rich and/or famous [07:41] shaver: (mjr's nick also continually reminds me of an old friend from those mid-90's days) [07:42] luke` has joined the channel [07:42] mjr_: I'm on East Coast time right now, so I should really sleep. [07:42] indutny: hey guys [07:42] indutny: please review this [07:42] shaver: yes, you should [07:42] indutny: https://github.com/ry/node/pull/458 [07:43] sh1mmer: indutny: have you seen the bubbling in YUI3? [07:43] quirkey has joined the channel [07:44] masahiroh has joined the channel [07:44] indutny: sh1mmer: i've seen it in jquery [07:44] indutny: suppose they're much similar [07:44] sh1mmer: indutny: you should look at that as well [07:44] sh1mmer: indutny: YUI3 custom events are more developed than the ones in jQuery [07:44] indutny: i've sent message to mailing list [07:44] sh1mmer: I'm currently porting them over as a standalone module [07:44] indutny: sh1mmer: can I ask you to put your comments here [07:44] sh1mmer: ACTION should get back into the habit of reading that [07:44] indutny: so everyone can see it [07:44] indutny: and answer [07:44] sh1mmer: sure [07:45] sh1mmer: won't be tonight [07:45] indutny: i'll take a look at YUI3 [07:46] indutny: it looks good enough, but complicated enough too [07:46] sh1mmer: indutny: there is some complexity but it tends to be hidden [07:46] sh1mmer: I'm not necessarily advocating all of it [07:47] indutny: anyway [07:47] sh1mmer: I find the callback naming syntax with | etc weird [07:47] indutny: my proposal was more related to http 'upgrade' [07:47] indutny: than to events [07:48] aconbere has joined the channel [07:49] sh1mmer: well if it has side effects on events that's significant [07:49] sh1mmer: but I'll take a look at both [07:50] indutny: it do not have side effects [07:50] indutny: on events [07:50] indutny: just on http [07:50] indutny: so all your upgrade listeners should be changed [07:50] indutny: to return false [07:51] murz has joined the channel [07:51] drudge has joined the channel [07:52] drudge has joined the channel [07:53] sh1mmer: well if you are catching return values and acting on them in a way which wasn't being done previously you are adding side effects. [07:53] sh1mmer: in that it breaks backwards compatibility [07:55] AAA_awright_ has joined the channel [08:03] ysynopsis has joined the channel [08:04] d0k has joined the channel [08:05] indutny: sh1mmer: it breaks compability [08:05] indutny: only on upgrade events [08:11] masahiroh has joined the channel [08:11] Druid_ has joined the channel [08:14] slaskis has joined the channel [08:17] nXqd: how do express organize it's views ? [08:18] nXqd: It reads layout.jade first [ I'm using jade as view engine ] [08:22] sfoster has joined the channel [08:22] vdrab has joined the channel [08:23] nooder: did anybody reach node memory limit? i need to store in memory 2-3 million short strings [08:26] Anti-X: it's easy to max out the memory [08:26] AAA_awright: Isn't redis good for that? [08:27] nooder: yes, but it will be slower [08:28] nooder: i'm already reading from mysql, don't want to replace it with redis [08:28] nooder: redis serves just 60-70 req per sec [08:29] nooder: 60-70k [08:29] nooder: antirez has written about 250k in memcached [08:30] nooder: he also told that he got same results with redis, but i even couldn't reach 100k [08:30] nooder: GET: 90090.09 requests per second [08:32] hellp has joined the channel [08:36] nooder: http://antirez.com/post/update-on-memcached-redis-benchmark.html [08:39] Anti-X: the 200k was for memcached [08:39] Anti-X: oh nvm [08:40] Anti-X: scrolled past it [08:41] nooder: even without persistance i cant get 100k [08:43] nooder: can anybody post redis-benchmark -q? [08:46] mscdex: where was that node module that had the fancy hex and ascii output of data? [08:47] gf3 has joined the channel [08:48] Anti-X: nooder, i'm betting that benchmark is done the wrong way anyways [08:48] Anti-X: just pumping as much as you can isn't a proper benchmark [08:49] nooder: i think that benchmark is synthetic and on production will be even less [08:50] mscdex: woot, found it: hexy [08:50] nooder: i need db for nonpersistant memory db, so its just get/set [08:50] Anti-X: also remember that hardware matters [08:50] Anti-X: hardware is sort of the key ingredient to speed [08:50] Anti-X: so if he has a pimped out server then of course the numbers are better [08:50] nooder: but, how did he got 200k?? [08:51] Anti-X: it may not even take a lot more than what you have [08:51] Anti-X: depending [08:51] nooder: http://antirez.com/post/redis-memcached-benchmark.html [08:51] Anti-X: did you run it on your desktop/laptop or a dedicated server? [08:51] nooder: he used redis bench [08:51] nooder: server of course [08:51] Anti-X: specs [08:51] nooder: i7 920 [08:51] nooder: free core [08:51] stagas has joined the channel [08:52] Anti-X: isn't i7 a desktop cpu? [08:52] shaver: you could ask in #redis [08:52] nooder: bench on different core [08:52] shaver: I think that's on this network [08:52] shaver: he's probably up [08:52] nooder: it is, but xeons are not so fast [08:53] Anti-X: well you never know what he may have [08:53] Anti-X: once you get to the real deal, it's Fast(TM) [08:53] shaver: is the redis latency the bottleneck for your app? [08:53] Anti-X: and also with the right OS setup [08:53] Anti-X: could make a difference [08:54] nooder: shaver, i just need to know what to do with node memory limits [08:54] nooder: i need about 2-3 millions strings in memory [08:54] shaver: at what point do you hit them? [08:54] shaver: I think strings are in the GC heap, which will hurt you [08:54] shaver: because they'll get copied over and over [08:55] shaver: if I don't sleep now, it'll hurt *me* [08:55] nooder: anyway i'll need external memory processor? [08:55] nooder: memcached or redis [08:55] erlnoob has joined the channel [08:56] nooder: for such number of cached strings [09:01] jetienne has joined the channel [09:08] adambeynon has joined the channel [09:12] femtoo has joined the channel [09:13] jed__ has joined the channel [09:17] ewdafa has joined the channel [09:24] gf3 has joined the channel [09:24] petercooper has joined the channel [09:26] AAA_awright: Are there any good comparisons of the MySQL modules? [09:29] Anti-X: i suggest using postgresql [09:29] Anti-X: i don't even know if there are modules for it [09:29] Anti-X: but it's just.. not mysql. [09:31] fly-away has joined the channel [09:32] nooder: libmysqlclient binding [09:32] nooder: there can't be better module :) [09:33] nooder: https://github.com/Sannis/node-mysql-libmysqlclient [09:34] nooder: Anti-X, why not? latest mysql 5.5 is pretty good. except fulltext search and orders [09:34] nooder: but i think that its not only mysql problem [09:34] AAA_awright: Anti-X: Not really an option for me [09:34] AAA_awright: Anti-X: Also, what's wrong with MySQL? [09:34] nooder: and of course random selects [09:35] Anti-X: libmysqlclient is just a direct binding [09:35] Anti-X: apparently it was 'bad' [09:35] AAA_awright: Is this the whole Oracle thing? [09:35] Anti-X: AAA_awright, a lot is wrong with mysql [09:35] Anti-X: did they include the falcon engine yet? [09:36] nooder: they are developing innodb [09:36] Anti-X: instead of including falcon? [09:36] Anti-X: wtf [09:36] AAA_awright: MySQL =/= MyISAM [09:36] AAA_awright: I mean really, who uses that anyways [09:36] derferman has joined the channel [09:37] Anti-X: innodb is also flawed [09:37] nooder: i m using myisam [09:37] Anti-X: falcon was so promising [09:37] nooder: innodb really sucks in reads [09:37] nooder: more that 10x [09:37] Anti-X: i had an install of mysql 6 before they fucked it over [09:37] Anti-X: then i had to format [09:38] Anti-X: and couldn't find it again [09:38] Anti-X: since they removed it [09:38] nooder: i'm using dev version, the just changed numbers back to 5.5.99 [09:38] nooder: don't know why [09:38] nooder: and closed branch :( [09:38] Anti-X: they were going for more frequent releases [09:39] Anti-X: but they didn't just rename the 6.0 branch [09:39] Anti-X: they dropped it [09:39] nooder: yep... [09:39] Anti-X: maybe just as well, as long as they can fix some of the 10.000 bugs [09:39] derferman has joined the channel [09:40] Anti-X: ,/. [09:40] nooder: the are working really hard. each day comes lots of commits [09:40] nooder: in bugfixing branch [09:40] nooder: i think problems are in replication [09:40] nooder: i don't have any [09:41] Anti-X: there are a lot of sql compatibility bugs [09:41] Anti-X: even in ansi mode [09:41] Anti-X: maybe not for basic web development [09:41] Anti-X: but once you start using the DB for more than just plain storage, it becomes apparent [09:41] nooder: there are better products for this :) [09:42] nooder: such as oracle [09:42] Anti-X: start using triggers and procedures and you'll lose hair [09:42] Anti-X: i don't like oracle, it's a bit over the top for anything i'm doing [09:42] Anti-X: not to mention the fucking price [09:43] nooder: but it rocks? [09:43] Anti-X: it does, if you're a total control freak and you know what you're doing [09:43] zentoooo has joined the channel [09:43] zentoooo has joined the channel [09:44] Anti-X: but postgresql offers a lot of the things oracle has that mysql doesnt [09:44] nooder: i think that it mostly used in clusters [09:44] Anti-X: of course, replication and clusters and shit is bad on postgre [09:44] nooder: which mysql can't do [09:44] Anti-X: mysql can do clusters [09:44] nooder: just slave? [09:44] nooder: master-master? [09:44] Anti-X: i think it's called NDB [09:45] Anti-X: no idea [09:45] Anti-X: never had a use for it [09:45] nooder: i tryed using slave for reads [09:45] nooder: but that really scaring [09:46] Anti-X: slaves can be delayed [09:46] davidc_ has joined the channel [09:46] nooder: thx god that i'm dealing just with freq reads [09:47] Anti-X: but i think there was an option in mysql cluster to halt the confirmation of the query until all the slaves were cool [09:47] Anti-X: not sure what the point is then [09:47] Anti-X: since that's just making shit slower [09:48] nooder: what do you prefer in nosql? [09:48] Anti-X: black hole [09:48] nooder: i just can't use redis because of small ram amount [09:48] Anti-X: :P [09:48] nooder: :) [09:48] Anti-X: no i use innodb always [09:49] Anti-X: i don't use mysql much anymore though [09:49] Anti-X: most of the time sqlite will do for the small stuff, and postgresql is just better [09:50] nooder: may be its time to try falcon [09:50] Anti-X: it passed mysql in speed years ago [09:50] Anti-X: and it always had more features [09:51] Anti-X: there's a community version of mysql isn't there? [09:51] nooder: features are bad for such db [09:51] nooder: of course [09:51] Anti-X: what's it called again? [09:53] Anti-X: mariadb [09:53] nooder: falcon is dead [09:53] nooder: :) [09:53] nooder: yes, but this is just fork of mysql [09:53] nooder: oracle still support community version [09:54] Anti-X: well i meant community developed [09:54] Anti-X: mysql is closed project [09:54] nooder: i can't see a reason to migrate to maria. they told about performance chnges, but oracle changed lots on latest innodb [09:55] nooder: thats because of licence [09:56] nooder: mysql is not an unstable product for community developing [09:56] nooder: as i told, i don't have problems with mysql for now [09:56] Anti-X: what was your question again? [09:57] Anti-X: :p [09:57] Anti-X: oh it wasn't you [09:57] nooder: mysql is not bad [09:58] nooder: thats the point :) i really like to try redis, but don't have time [10:04] liar has joined the channel [10:05] stonebranch has joined the channel [10:11] derferman has joined the channel [10:12] sriley has joined the channel [10:13] nsolsen has joined the channel [10:14] stagas: nooder: redis is really simple to install, and it creates a db file in the folder you run redis-server so it should take <10 minutes to get it working [10:16] MikhX has joined the channel [10:17] tisba has joined the channel [10:18] Anti-X: i need to make a correction, postgresql apparently is very good at replication, both async and hot standby [10:18] Anti-X: from v9 [10:32] rchavik has joined the channel [10:36] steffkes has joined the channel [10:37] naturalethic: gethostname? has? [10:38] naturalethic: i'm only seeing patches, has it made it into master yet? [10:41] Gruni has joined the channel [10:41] erlnoob: hey guys, I'm using npm, and I see multiple installed packages e.g, connect@0.2.7 and connect@0.3.0 [10:42] erlnoob: clearly only one is active, but both is marked as installed [10:42] erlnoob: how do I get rid of the older version? is this necessary? [10:45] Anti-X has joined the channel [10:46] erlnoob: what I'm puzzled at is with "npm help update" description: "Additionally, it will activate the new version, and delete any old versions, if safe to do so" [10:46] erlnoob: but I have never seen it once delete any previous versions [10:48] unomi has joined the channel [10:48] confoocious has joined the channel [10:48] confoocious has joined the channel [10:49] _mythz has joined the channel [10:52] sveisvei: ernoob: I think there is only one active [10:53] erlnoob: sveisvei: yes but npm still keeps old versions [10:54] sveisvei: yeah, maybe some other packages depend on them? [10:54] erlnoob: even though npm help update clearly states ".. delete any old versions, if safe to do so" [10:54] sveisvei: ah... hrmff [10:54] erlnoob: I was wondering if this happens to everyone or just me? [10:55] peutetre has joined the channel [10:56] sveisvei: keeps one older version here it seams [10:56] sveisvei: eh, nvm [10:56] stagas has joined the channel [10:57] erlnoob: it can't be because of dependencies, because those are specified in terms of e.g, '>=0.5.1' [10:58] sveisvei: erlnoob, checked my lib/node, and there is some older packages here as well that I know is not in use [10:58] erlnoob: so the documentation is wrong? [10:59] erlnoob: or am I missing something here? [11:02] sveisvei: dunno, guess its not safe:) [11:03] zomgbie has joined the channel [11:04] erlnoob: I now have 4 versions of npm listed when I do "npm ls installed" [11:04] Locke23rus has joined the channel [11:05] daglees has joined the channel [11:07] sveisvei: My mac has 4 versions of connect so :) [11:07] aubergine has joined the channel [11:07] erlnoob: yea imagine doing npm ls installed and having 10 versions of each package listed [11:08] sveisvei: Maybe if some package at some time required the other package, its not safe [11:08] slaskis has joined the channel [11:08] sveisvei: and its circular, because two old packages depend on each other [11:08] sveisvei: and therefor no one of them is safe to delete [11:11] erlnoob: although you can for example do require('express@1.0.0rc4') instead of just plain require('express') which loads the active one [11:11] jetienne: anybody using jquery server side ? any known issue ? [11:11] erlnoob: maybe this is why npm will never delete any package [11:12] frodenius: hm it should be possible if you clear out dependencies [11:13] frodenius: there is npm rm [11:13] rchavik has joined the channel [11:13] frodenius: it even understands version ranges [11:14] frodenius: so npm rm connect@'<0.3.0' should help [11:14] erlnoob: frodenius: yes, but I was expecting npm update to do this automatically, based on its documentation wording [11:17] stagas has joined the channel [11:26] stephank has joined the channel [11:29] mraleph has joined the channel [11:31] zorzar has joined the channel [11:33] micheil has joined the channel [11:34] masahiro_ has joined the channel [11:40] mikedeboer has joined the channel [11:41] Anti-X has joined the channel [11:42] bnoordhuis has joined the channel [11:45] Locke23rus_ has joined the channel [11:45] jetienne: ok so jquery on nodejs seems to work very well from here. http://groups.google.com/group/nodejs/browse_thread/thread/e02619ec7d208d28 [11:48] mikew3c has joined the channel [11:49] slaskis has joined the channel [12:00] masahiroh has joined the channel [12:02] aubergine has joined the channel [12:06] jed__ has joined the channel [12:06] christophsturm has joined the channel [12:06] Utkarsh has joined the channel [12:20] Anti-X has joined the channel [12:21] ph^ has joined the channel [12:22] micheil: erlnoob: npm rm npm@<0.2.10 [12:22] micheil: should do it. [12:25] erlnoob: micheil: yes that should do it, but I was expecting "npm update" to do the clean up (see npm help update) [12:26] micheil: oh. [12:26] micheil: I'm not sure [12:27] derren13 has joined the channel [12:32] micheil: erlnoob: do: npm config set prune true [12:33] Anti-X has joined the channel [12:35] erlnoob: micheil: where can I see the complete list and info? [12:35] micheil: npm config list [12:35] micheil: npm config help [12:35] micheil: ACTION is working with the npm source code atm. [12:37] erlnoob: ah ok, just wondering, but the prune setting is not documented? can you tell me its behavior? [12:44] matjas has joined the channel [12:45] Anti-X has joined the channel [12:45] matjas: can socket.io be used without node.js too? i’m looking for a client-side-only websockets fallback [12:46] stagas: matjas: https://github.com/gimite/web-socket-js this is what socket.io is using also [12:47] matjas: stagas: cool, thanks! [12:49] _mythz has joined the channel [12:49] stagas: matjas: but you need to serve a flash policy at port 843, just setup a simple net server for that [12:49] masahiroh has joined the channel [12:49] sfoster has joined the channel [12:50] jmpe has joined the channel [12:51] stagas: matjas: https://gist.github.com/717869 [12:52] cheney has joined the channel [12:54] matjas: stagas: thanks, but that's also a server-side thing, right? all i want to do in this case is connect to an existing online websocket server [12:54] vineyard has joined the channel [12:54] matjas: so web-socket-js is perfect, thank you! [12:54] Anti-X has joined the channel [12:55] skampler has joined the channel [12:56] stagas: matjas: then flash will look there for the policy file, so it might not allow access from other domains [12:56] micheil: erlnoob: looks like it removes the deps. [12:57] micheil: it's in the source code, I'm not too familiar with it all though [12:57] micheil: matjas: there are socket.io implementations for java, ruby, etc [12:57] micheil: although, you might also want to look at.. jclogans library.. [12:58] rchavik has joined the channel [12:58] matjas: micheil: jclogan’s library? [12:58] micheil: https://github.com/jcoglan/faye [12:58] micheil: it has a ruby implementation, not sure about others [12:59] matjas: stagas: i see, but in this case the domain is configured correctly, flash policies and everything :) [13:00] matjas: micheil: yeah, i'm just looking for a simple client-side only solution here. stagas’s link seems to be exactly what i was after [13:03] masahiroh has joined the channel [13:10] mape: Hmm socket.io maxes out at 1k users? [13:15] mape: Doesn't like my ulimit :/ [13:29] skm has joined the channel [13:34] hoffa_ has joined the channel [13:34] rchavik has joined the channel [13:37] huh has joined the channel [13:40] ooooPssss has joined the channel [13:42] skm has joined the channel [13:44] masahiroh has joined the channel [13:47] faust45 has joined the channel [13:50] ysynopsis has joined the channel [13:52] linnk has joined the channel [13:52] rchavik has joined the channel [13:53] bulu has joined the channel [13:54] matjas: stagas: all this makes me wish someone would just host a public websockets test server, with all the configuration in place [13:55] matjas: stagas: like http://www.websockets.org/echo.html but with the added flash policy stuff [13:57] linnk: Hey :) I just put my first ever node module (and javascript project in general) on GitHub, would you guys care to take a look at it? I'd like some constructive critisism.. https://github.com/dansondergaard/interprocess [13:57] stagas: matjas: why don't you run your own? get miksago's websocket-server it's pretty straightforward [14:00] Shaka has joined the channel [14:01] stagas: linnk: nice job! maybe a simple use case or two in the readme would help [14:02] linnk: stagas: thanks! I'll try to think up some simple examples that fit in a readme :) [14:02] stagas: gotta run [14:02] Shaka: i'm trying to compile node on a NAS, but there is no pthread lib [14:03] Shaka: does anybody know how to handle that issue? [14:04] masahiro_ has joined the channel [14:04] Shaka: Checking for library rt : not found --- libeio --- Checking for library pthread : not found Checking for function pthread_create : not found [14:05] Shaka: :( [14:06] Shaka: the OS is a synology DSM 3.0 [14:06] dnolen has joined the channel [14:10] hoffa_ has joined the channel [14:10] Shaka: i tried that on a synology but also on a buffalo NAS, always the same issue [14:12] vineyard has joined the channel [14:16] herbySk has joined the channel [14:19] heavysixer has joined the channel [14:24] bnoordhuis: Shaka: node (or rather libev) needs pthreads [14:25] bnoordhuis: Shaka: if your system doesn't have it, then you are probably out of luck [14:26] matjas: stagas: i can only run a server locally, sadly. would be great if someone could just host one online for testing purposes [14:27] bnoordhuis: Shaka: google tells me that you can run mysql on dsm 3 and mysql by default uses pthreads on unix-y systems [14:28] bnoordhuis: Shaka: could it be that the pthread development headers simply aren't installed? [14:29] Shaka: yes that's possible, i'm not a c++ programmer, so I'm kind of new with that :) [14:29] Shaka: is there a way to install the missing header files with ipkg? [14:31] mscdex: when it checks for functions, it checks against the runtime itself [14:31] mscdex: afaik [14:31] nik0 has joined the channel [14:31] mscdex: it compiles a little test program [14:34] mscdex: maybe the kernel doesn't have that stuff compiled in? [14:34] MattJ100 has joined the channel [14:35] bnoordhuis: Shaka: worth a shot, the package is probably called something like libpthread [14:35] nsolsen has joined the channel [14:35] bnoordhuis: mscdex: that's only half the story - if there is no pthread.h in /usr/include, the test program won't compile [14:36] ashleydev has joined the channel [14:36] mscdex: true, maybe ./configure -vvv might give more helpful output? [14:37] daniellindsley has joined the channel [14:37] ivan has joined the channel [14:37] mscdex: i've never compiled node on a system that didn't have pthread support [14:37] mscdex: heh [14:37] ivan has joined the channel [14:37] bnoordhuis: mscdex: me neither, systems like that are a dying breed [14:41] madl10n has joined the channel [14:41] Shaka: bnoordhuis: there is a package libpth that I have installed now, but doesn't make any difference [14:43] nik0 has joined the channel [14:43] bnoordhuis: Shaka: what does `locate pthread.h` say? [14:43] bnoordhuis: Shaka: or lacking locate, `find / -name pthread.h`? [14:44] Shaka: bnoordhuis: /volume1/@optware/include/pthread.h [14:45] Shaka: and /opt/include/pthread.h [14:46] bnoordhuis: Shaka: okay, that's encouraging [14:46] bnoordhuis: Shaka: what does `gcc -v` say? [14:47] Shaka: ~/node-v0.2.5 # gcc -v Using built-in specs. Target: arm-none-linux-gnueabi Configured with: ../gcc-4.2/configure --build=i386-pc-linux-gnu --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi --prefix=/opt --disable-nls --disable-static --with-as=/home/slug/optware/cs08q1armel/toolchain/arm-2008q1/bin/arm-none-linux-gnueabi-as --with-ld=/home/slug/optware/cs08q1armel/toolchain/arm-2008q1/bin/arm-none-linux-gnueabi-ld --enable- [14:47] Shaka: --disable-libmudflap --disable-libssp --disable-libgomp --disable-libstdcxx-pch --enable-shared --enable-symvers=gnu --enable-__cxa_atexit Thread model: posix gcc version 4.2.3 [14:48] bnoordhuis: okay, looks healthy [14:48] Shaka: great [14:48] Shaka: maybe I have to create some symlinks [14:48] bnoordhuis: i suspect you only need to point gcc / configure to the right include directory [14:49] bnoordhuis: Shaka: what happens if you run `CFLAGS=-I/opt/include ./configure` ? [14:49] InsDel has joined the channel [14:50] Shaka: same issue [14:51] jchris1 has joined the channel [14:51] Shaka: how can I add the path to the include directory? [14:51] bnoordhuis: with `gcc -I/path/to/dir` [14:51] bnoordhuis: sanity check: does `grep pthread_create /opt/include/pthread.h` find any matches? [14:51] stonebra_ has joined the channel [14:53] Shaka: yes: "extern int pthread_create (pthread_t *__restrict __newthread," [14:53] Shaka: look ok for me... [14:53] bnoordhuis: it is [14:53] bnoordhuis: the only issue is to point gcc to it [14:53] Shaka: ok, I'm gonna try that [14:54] kawaz_home has joined the channel [14:55] niko has joined the channel [14:55] lmorchard has joined the channel [15:01] Shaka: brb [15:05] oal has joined the channel [15:05] SubStack: JimBastard: what about persistence accross server restarts? [15:05] SubStack: with your new session thing [15:07] niko has joined the channel [15:07] SubStack: I don't like how with connect-nstore and supermarket-cart you've got to .regenerate() [15:11] sepehr has joined the channel [15:12] liori: hello... I'm looking for a framework for a one week webapp project, and decided to try node.js. But from what I see, node.js is quite low-level compared to django or rails. Is there anything comparable to them based on node.js? [15:13] [[zz]] has joined the channel [15:13] linnk: liori: have a look at express.js [15:14] delapouite has joined the channel [15:14] linnk: liori: it's not as high-level as rails or django, but it's higher-level than raw node [15:15] huehnts has joined the channel [15:15] madl10n has joined the channel [15:15] SubStack: node is not a web framework [15:15] SubStack: why do people think that? [15:16] MattJ100: because they know no better :) [15:16] MattJ100: anything new, shiny and cool must be a web framework [15:16] liori: hah, that's why I actually decided to try it; I got confusing signals from the hivemind^Wreddit [15:17] sriley has joined the channel [15:17] slaskis_ has joined the channel [15:18] SubStack: liori: anyways, as linnk suggests, http://expressjs.com/ [15:19] SubStack: or you can slog through https://github.com/ry/node/wiki/modules#web-frameworks [15:23] liori: hmm... can node.js be coupled with gtk3? [15:25] Epeli has joined the channel [15:26] bradleymeck has joined the channel [15:26] nooder: expressjs good for beggining [15:27] nooder: then clean up a while and viola :) [15:28] madl10n has joined the channel [15:29] nooder: what is the simpliest way to wait for 2 async calls? [15:29] SubStack: nooder: use an async lib like step or async.js [15:30] SubStack: or if you wait a few more hours, seq! [15:30] nooder: i have just 1 such call. no need in whole library [15:30] nooder: just some hack [15:31] bulu: where actually npm packages are stored ? [15:31] tomg_ has joined the channel [15:32] niko has joined the channel [15:32] nooder: SubStack, i'm thinking on using 2 redis connection. in benchmarks it shows best performance [15:33] SubStack: nooder: you can nest the calls but that indents your code further to the right [15:33] SubStack: anyways it's a good excuse to go learn an async lib or two [15:34] _afri_ has joined the channel [15:35] nooder: maybe they can call 1 function which first time stores that 1 result ready and after seconds executes? [15:37] mikew3c has joined the channel [15:39] Spion_ has joined the channel [15:40] daglees has joined the channel [15:41] _afri_: hi guys, i'm having a weird scoping problem in the repl. when i execute "var a; setTimeout(function() { a=1; }, 10)", a isn't being set... [15:41] _afri_: anybody got an idea where this might fail? [15:43] nooder: is it global? [15:43] nooder: var a; outside of function [15:44] _afri_: yeah, var a outside the function [15:45] _afri_: something's going wrong with the setTimeout... the function is being executed, but it doesn't 'see' the right 'a' [15:45] ajsie: what does "jar" means here: "lazy-array": "jar:http://github.com/kriszyp/commonjs-utils/zipball/master!/lib/lazy-array.js" [15:45] _afri_: in contrast, this works fine: "var a; (function() { a = 1 })() [15:46] rubydiamond has joined the channel [15:49] Sembiance: Just put up a new node module, super simple and small, just wraps mhash and offers a whirlpool_hash() method. https://github.com/Sembiance/node-whirlpool [15:49] Sembiance: I've added it to the node.js modules page :) [15:50] christophsturm has joined the channel [15:55] nooder: _afri_, i'm using timeout to clean up and everyting is ok [15:57] _afri_: nooder, yeah, usually everything works fine... it's some very weird repl-specific problem i'm encountering here :-/ [15:57] nooder: and i just tested your example, works perfectly [15:57] _afri_: yeah? if you write 'a' on the next line you get '1'? [15:57] nooder: var a = 0; setTimeout(function() { a=1; }, 1) setTimeout(function() { require('util').puts(a) }, 1) [15:58] nooder: got 1 [16:01] slaskis has joined the channel [16:01] noahcampbell has joined the channel [16:01] _afri_: nooder, yeah i'm getting 1 in the puts there too. but if i look at 'a' afterwards in the repl, it is still bound to '0' [16:02] nooder: example pls [16:02] _afri_: so the 'a' that is being set and puts() there is not the 'var a' declared globally [16:02] nooder: thats different functions [16:03] nooder: where did second one gets a then [16:03] _afri_: well, if you type this into the repl: "var a; setTimeout(function() {a=1;},1);" and *on the next line*, 'a', you don't get '1' [16:03] _afri_: that's a very good question :-) [16:04] bradleymeck: ajsie, it generally means the jar java archive type, and extraction method (as a url), but not sure unless kris is around [16:04] ajsie: bradleymeck: okay thanks [16:04] ajsie: have you used nodules? [16:04] bradleymeck: nope [16:06] nooder: _afri_, which next line? if function not yet executed, how will a be 1 then [16:06] jchris1 has joined the channel [16:07] _afri_: nooder, if you do it in the repl, you can just wait 1ms between typing the 2 lines :-) [16:08] tisba has joined the channel [16:08] herbySk has joined the channel [16:08] tisba_ has joined the channel [16:08] _afri_: e.g. if you just type in "setTimeout(function() { x=1; }, 1)" and "x" on the next line, you'll see that x is now ==1 [16:08] nooder: node is 1 threaded [16:09] _afri_: but if you add the 'var x' at the beginning of the setTimeout, it doesn't work anymore [16:09] nooder: so firstly executes code, than timeout. i think [16:09] nooder: hm [16:09] nooder: post your code on pasterbin [16:11] noahcampbell has joined the channel [16:11] slaskis: v8: var a;setTimeout(function(){a=1},1); a [16:11] v8bot: slaskis: ReferenceError: setTimeout is not defined [16:12] confoocious has joined the channel [16:13] tisba has joined the channel [16:13] boaz has joined the channel [16:14] _afri_: nooder, bit tricky to show this in a pastebin snippet, since it only happens in the repl. lemme dig a bit into repl.js - there's something going wrong at quite a low level... :-S thanks anyway :-) [16:14] nooder: :) [16:15] sepehr1 has joined the channel [16:16] sriley has joined the channel [16:19] stagas has joined the channel [16:20] Epeli has joined the channel [16:21] bulu: https-support in http.Client is broken... [16:21] ajsie: anyone here uses RQL? [16:21] ajsie: https://github.com/kriszyp/rql [16:25] tisba has joined the channel [16:26] Nohryb has joined the channel [16:26] saschagehlich has joined the channel [16:27] Aikar: var events = new require('events').EventEmitter; << this doesnt work, shouldnt it? [16:28] SubStack: no [16:28] MattJ: EventEmitter()? [16:28] Aikar: () is not required when no args [16:28] SubStack: var events = require('events').EventEmitter() [16:28] MattJ: Fair enough :) [16:29] Aikar: events = new EventEmitter; works fine [16:29] marshall_law has joined the channel [16:29] saschagehlich: hey, I've created a clean express.js project and tried to use app.error() to handle 404 errors and stuff like that. but the error function is not called?! https://gist.github.com/0ddde6aac56c144edfdd [16:29] SubStack: oh bugger, doesn't seem to work [16:29] mikew3c has joined the channel [16:29] Aikar: it just returns the EventEmitter function [16:29] SubStack: yeah just assign into a var EventEmitter [16:29] SubStack: easier [16:30] noahcampbell has joined the channel [16:30] Aikar: i know i did that, but i dont see why that doesnt work though, syntax wise it seems correct [16:30] frodenius: new has higher precedence than . [16:30] Aikar: oh [16:30] frodenius: v8> new Date().getTime() [16:30] v8bot: frodenius: 1290875448636 [16:30] MattJ: Yeah, works with brackets [16:31] frodenius: is the same as (new Date()).getTime() [16:31] Aikar: figured (require().eventemitter) would prolly work just didnt understand why that didnt work in general though [16:33] sepehr has joined the channel [16:33] tisba has joined the channel [16:34] cognominal has joined the channel [16:35] jpld has joined the channel [16:37] intacto has joined the channel [16:40] amdlvs has joined the channel [16:40] rchavik has joined the channel [16:41] masahiroh has joined the channel [16:42] aconbere has joined the channel [16:42] RevoOf has joined the channel [16:42] RevoOf has left the channel [16:46] linac has joined the channel [16:48] AAA_awright_ has joined the channel [16:49] hellp has joined the channel [16:53] masahiroh has joined the channel [16:59] maushu has joined the channel [17:00] bulu: what does it mean: 400 The plain HTTP request was sent to HTTPS port ? [17:00] bingomanatee_ has joined the channel [17:01] bingomanatee_: hi there - recieving odd errrors after installing kiwi on ubuntu [17:02] bpadalino: any even errors ? [17:02] stride: bulu: presumably that an unencrypted http request was made to port 443 [17:02] bingomanatee_: http://pastebin.com/bQ1z1H5r [17:03] Gruni has joined the channel [17:03] bpadalino: that error looks to be due to the package not being there - 404 [17:04] bingomanatee_: so do I have to download a package before using kiwi install? [17:04] cjmFloating has joined the channel [17:05] pdelgallego has joined the channel [17:06] dohtem has joined the channel [17:06] dohtem has joined the channel [17:08] Nohryb: v8: +new Date [17:08] v8bot: Nohryb: 1290877681569 [17:09] stagas: what's the command to git clone vendor stuff also? [17:10] arrty has joined the channel [17:15] altamic has joined the channel [17:18] nooder: what is git com to degrade to previous version? :) [17:18] bulu: TypeError: Object # has no method 'getPeerCertificate' -> https not working, what can i do ? [17:19] bpadalino: panic? [17:19] bpadalino: eat a bagel? [17:19] bpadalino: run away! [17:19] bulu: wait and having a tea [17:19] bpadalino: another good idea [17:19] bpadalino: oh, have a good idea! that's something else you can do [17:20] bpadalino: the possibilities are almost limitless [17:20] bulu: with node.js and a httpClient ? [17:20] petercoo_ has joined the channel [17:20] bulu: writing my own https-client from scratch with net ? [17:24] erlnoob has joined the channel [17:26] cagdas has joined the channel [17:27] dnolen has joined the channel [17:27] cjmFloating has joined the channel [17:29] saschagehlich has joined the channel [17:31] jashkenas has joined the channel [17:33] sveisvei has joined the channel [17:35] ooooPssss has joined the channel [17:36] ehaas has joined the channel [17:36] weng has joined the channel [17:37] weng: anyone: http://stackoverflow.com/questions/4292965/solid-documentation-website [17:38] Blackguard has joined the channel [17:39] bingomanatee__ has joined the channel [17:40] Me1000 has joined the channel [17:41] masahiroh has joined the channel [17:42] jashkenas has joined the channel [17:42] nooder1 has joined the channel [17:42] stagas_ has joined the channel [17:42] sivy has joined the channel [17:42] _case_ has joined the channel [17:42] jimt has joined the channel [17:43] Aikar has joined the channel [17:44] siculars_ has joined the channel [17:45] bingomanatee__: bulu - have you looked into express? I'd strongly encourage you to spend time with existing community achievements before rolling your own. [17:46] rchavik has joined the channel [17:46] Draggor1 has joined the channel [17:46] rchavik has joined the channel [17:46] jchris1 has joined the channel [17:46] olegp has joined the channel [17:50] weng: how do you guys create online documentation for a OS project? [17:51] lmorchard has joined the channel [17:51] rchavik has joined the channel [17:51] rchavik has joined the channel [17:51] marshall_law has joined the channel [17:54] tg has joined the channel [17:57] tg has joined the channel [17:58] wilmoore has joined the channel [17:58] programble has joined the channel [17:58] programble has joined the channel [17:59] Aria has joined the channel [18:02] tg has joined the channel [18:05] Shaka: does anybody know what that error means? (During ./configure node) "Checking for library rt : not found" [18:06] tg has joined the channel [18:06] Shaka: the file "/lib/librt.so" is availlable! [18:07] chrischris has joined the channel [18:08] saikat has joined the channel [18:09] cjmFloating has joined the channel [18:10] daniellindsley has joined the channel [18:13] xla has joined the channel [18:16] heavysixer has joined the channel [18:16] bpadalino: maybe configure it bad at hide and seek? [18:20] derren13 has joined the channel [18:24] murz has joined the channel [18:28] delapouite has joined the channel [18:36] stagas_ has joined the channel [18:37] maushu_ has joined the channel [18:37] hoffa_ has joined the channel [18:37] sefton__ has joined the channel [18:37] jegade_ has joined the channel [18:38] russell_1 has joined the channel [18:38] joeshaw__ has joined the channel [18:38] scoates_ has joined the channel [18:38] kawaz_wo_ has joined the channel [18:38] StM_ has joined the channel [18:39] sid3k` has joined the channel [18:39] themiddleman_ has joined the channel [18:39] Viriix_ has joined the channel [18:39] koning_r1bot has joined the channel [18:39] zhesto_ has joined the channel [18:39] gf3` has joined the channel [18:39] sideshow_ has joined the channel [18:39] stagas__ has joined the channel [18:39] zmack_ has joined the channel [18:39] kgf_ has joined the channel [18:39] mcarter_ has joined the channel [18:39] chilts_ has joined the channel [18:39] Garo__ has joined the channel [18:39] mif86 has joined the channel [18:39] slaskis_ has joined the channel [18:39] liar has joined the channel [18:39] ashb_ has joined the channel [18:39] ph^ has joined the channel [18:39] dantaliz1ng has joined the channel [18:39] jesusabd1llah has joined the channel [18:39] mr_daniel has joined the channel [18:39] Nacho___ has joined the channel [18:39] rodasc has joined the channel [18:39] ecounysis_ has joined the channel [18:39] FMJaguar has joined the channel [18:39] wilmoore_ has joined the channel [18:39] Blackguard1 has joined the channel [18:39] masahiro_ has joined the channel [18:39] MikhX_ has joined the channel [18:40] m3nt0r^aw has joined the channel [18:40] slpsys_ has joined the channel [18:40] delapouite_ has joined the channel [18:40] adamholt_ has joined the channel [18:40] weng: what is the difference between caller and callee [18:40] linnk_ has joined the channel [18:40] beppu has joined the channel [18:40] huehnts has joined the channel [18:40] sonnym1 has joined the channel [18:40] omni5cience has joined the channel [18:40] pedrobel_ has joined the channel [18:40] cha0s has joined the channel [18:40] cha0s has joined the channel [18:40] dberlinger_ has joined the channel [18:40] jchris2 has joined the channel [18:40] zorzar has joined the channel [18:40] jwm has joined the channel [18:40] stride_ has joined the channel [18:40] maqr has joined the channel [18:40] maqr has joined the channel [18:40] ivanfi has joined the channel [18:40] bruse has joined the channel [18:40] saikat has joined the channel [18:40] Nomon has joined the channel [18:40] hansek_ has joined the channel [18:40] zz_raja has joined the channel [18:40] Gregor has joined the channel [18:40] confoocious has joined the channel [18:40] franck34 has joined the channel [18:40] luke` has joined the channel [18:40] sugardave has joined the channel [18:40] mape has joined the channel [18:40] daniellindsley has joined the channel [18:40] tg has joined the channel [18:40] bingomanatee__ has joined the channel [18:40] Epeli has joined the channel [18:40] oal has joined the channel [18:40] stephank has joined the channel [18:40] fly-away has joined the channel [18:40] webr3 has joined the channel [18:40] chovy has joined the channel [18:40] rwaldron_ has joined the channel [18:40] thebigbad has joined the channel [18:40] zk has joined the channel [18:40] pquerna has joined the channel [18:40] rleeds has joined the channel [18:40] Astro has joined the channel [18:40] zum has joined the channel [18:40] Kai`_ has joined the channel [18:40] davidc_ has joined the channel [18:40] aconran___ has joined the channel [18:40] keeto has joined the channel [18:40] yatiohi has joined the channel [18:40] Tobias| has joined the channel [18:40] themcgruff has joined the channel [18:40] tswicegood has joined the channel [18:40] chris has joined the channel [18:40] weng has joined the channel [18:40] weng has joined the channel [18:40] weng: what is the difference between caller and callee? [18:40] maru_cc has joined the channel [18:41] ben_alman has joined the channel [18:41] nsolsen has joined the channel [18:41] MrNibblesFreenod has joined the channel [18:42] sth has joined the channel [18:42] hdon has joined the channel [18:43] bpadalino has joined the channel [18:43] dispalt has joined the channel [18:43] liori has joined the channel [18:43] CIA-54 has joined the channel [18:44] rubydiamond_ has joined the channel [18:44] cainus__ has joined the channel [18:44] sonnym has joined the channel [18:44] programble has joined the channel [18:44] deoxxa has joined the channel [18:44] temp02 has joined the channel [18:44] faust45 has joined the channel [18:44] tmm1 has joined the channel [18:44] drudge has joined the channel [18:44] Nohryb: (function a () { b() })() -> caller: a, callee: b [18:44] nlacasse has joined the channel [18:44] spoobie has joined the channel [18:44] omni5cience: the caller called the callee [18:44] keeran has joined the channel [18:44] killfill has joined the channel [18:44] frode has joined the channel [18:45] tg has joined the channel [18:45] yenz has joined the channel [18:45] cnu has joined the channel [18:45] lmorchard has joined the channel [18:45] m3nt0r^aw has joined the channel [18:45] kersny has joined the channel [18:47] huehnts_ has joined the channel [18:47] temp01 has joined the channel [18:47] wang has joined the channel [18:48] sergeb_ has joined the channel [18:48] rbranson_ has joined the channel [18:48] ivan has joined the channel [18:48] phiggins_ has joined the channel [18:49] keeran_ has joined the channel [18:49] BHSPitMo1kay has joined the channel [18:49] SubStack_ has joined the channel [18:50] tswicegood_ has joined the channel [18:50] beppu_ has joined the channel [18:50] meder has joined the channel [18:50] hdon has joined the channel [18:50] deoxxa has joined the channel [18:50] omni5cience has joined the channel [18:50] tmm1 has joined the channel [18:50] matjas has joined the channel [18:51] nolan_d has joined the channel [18:51] programble has joined the channel [18:51] linnk_ has joined the channel [18:51] cainus__ has joined the channel [18:51] peutetre has joined the channel [18:52] Druid_ has joined the channel [18:53] jpld has joined the channel [18:53] nlacasse has joined the channel [18:53] circut has joined the channel [18:55] Aria has joined the channel [18:56] dabtop has joined the channel [18:56] meandi has joined the channel [18:59] markh1 has joined the channel [18:59] markh has joined the channel [18:59] SubStack_: nodesplit [19:01] bartt has joined the channel [19:01] Locke23rus__ has joined the channel [19:02] bruse_ has joined the channel [19:02] aconbere has joined the channel [19:02] motu_ has joined the channel [19:04] tjgillies has joined the channel [19:04] cognominal_ has joined the channel [19:04] ryan[LOL] has joined the channel [19:04] Count_0 has joined the channel [19:04] galaxywatcher_ has joined the channel [19:04] mcarter__ has joined the channel [19:05] jbergstroem has joined the channel [19:05] ben_alman has joined the channel [19:06] Count_0 has left the channel [19:06] mif86 has joined the channel [19:07] jrmiller has joined the channel [19:07] xla has joined the channel [19:13] ossareh has joined the channel [19:13] alex___ has joined the channel [19:14] m3nt0r^aw has joined the channel [19:18] ryah: f [19:19] Guest40891: bingomanatee__: i cant see how i can solve that with express - my nodeapp wants to act as https-client sending POST-requests to some HTTPS website. [19:22] shaver: ryah: sup, bra? [19:22] Nacho has joined the channel [19:23] ryah: ImI/ [19:23] jimt_ has joined the channel [19:23] jesusabdullah has joined the channel [19:24] inimino has joined the channel [19:24] isaacs has joined the channel [19:25] masahiroh has joined the channel [19:29] evanmeagher has joined the channel [19:32] jchris1 has joined the channel [19:32] Twelve-60` has joined the channel [19:32] faust45_ has joined the channel [19:33] mcarter_ has joined the channel [19:33] tswicegood has joined the channel [19:33] sstreza has joined the channel [19:33] zorzar_ has joined the channel [19:33] bpadalino has joined the channel [19:34] dnyy_ has joined the channel [19:34] jarfhy_ has joined the channel [19:34] ecounysis has joined the channel [19:34] InsDel1 has joined the channel [19:34] rphillips_ has joined the channel [19:35] chrisdico has joined the channel [19:36] xla_ has joined the channel [19:36] mr_daniel has joined the channel [19:36] liori has joined the channel [19:36] er1c_ has joined the channel [19:36] swistak has joined the channel [19:36] s0enke` has joined the channel [19:36] smtlaissezfaire has joined the channel [19:36] termie has joined the channel [19:36] termie has joined the channel [19:37] lmorchard has joined the channel [19:37] MrNibblesFreenod has joined the channel [19:37] ebi has joined the channel [19:37] slpsys has joined the channel [19:37] huehnts has joined the channel [19:37] m3nt0r^aw has joined the channel [19:37] kawaz_h has joined the channel [19:37] sirevanhaas has joined the channel [19:37] fly_ has joined the channel [19:37] jmpe has joined the channel [19:37] yatiohi has joined the channel [19:37] Spion_ has joined the channel [19:37] lmorchard has joined the channel [19:37] sstephenson has joined the channel [19:37] mrkurt has joined the channel [19:37] joshpeek has joined the channel [19:37] tg has joined the channel [19:38] InsDel has joined the channel [19:38] CIA-54: node: 03isaacs 07master * ra52f59b 10/ (3 files in 3 dirs): Use a proper tty test. - http://bit.ly/i9rkxg [19:38] pdelgallego has joined the channel [19:39] EvanR-work has joined the channel [19:39] circut has joined the channel [19:39] EvanDotPro has joined the channel [19:39] aconbere has joined the channel [19:39] maqr has joined the channel [19:41] tisba has joined the channel [19:41] Kai`_ has joined the channel [19:43] isaacs: w00t [19:44] jpld has joined the channel [19:44] stagas: anyone else forget call and apply difference? [19:44] isaacs: Apply Array [19:45] cnu has joined the channel [19:45] SubStack: I wish bind had a variant that didn't set `this` [19:45] SubStack: I feel back about monkey-patching one in [19:45] SubStack: .curry() or some such [19:46] isaacs: v8: f = {foo:"bar"}; b = {bar:"baz" [19:46] v8bot: isaacs: SyntaxError: Unexpected end of input [19:46] isaacs: v8: f = {foo:"bar"}; b = {bar:"baz"}; function me() { return this }; me.bind(f).call(b)() [19:46] v8bot: isaacs: TypeError: object is not a function [19:46] SubStack: s/back/bad/ [19:46] isaacs: v8: f = {foo:"bar"}; b = {bar:"baz"}; function me() { return this }; me.bind(f).call(b) [19:46] v8bot: isaacs: {"foo": "bar"} [19:46] isaacs: yeah, that's lame [19:47] sivy has joined the channel [19:47] dabtop has joined the channel [19:47] isaacs: v8: f = {foo:"bar"}; b = {bar:"baz"}; function me() { return this }; me.bind().call(b) [19:47] v8bot: isaacs: {} [19:47] hoffa_ has joined the channel [19:50] deepthawtz has joined the channel [19:51] brainproxy_ has joined the channel [19:53] faust45_ has joined the channel [19:56] stagas: isaacs: when is npm deploy coming? [19:56] stagas: :P [19:56] matt_c has joined the channel [19:58] wookiehangover has joined the channel [19:58] SubStack: stagas: as soon as you write it! [19:59] stagas: SubStack: will you host it? :) [20:00] SubStack: not likely [20:00] indutny has joined the channel [20:01] indutny: isaacs: hey hey! :) [20:01] indutny: have you took a look at my patch? [20:01] indutny: with your ideas ;) [20:04] tanepiper: stagas: npm deploy would be good, maybe an idea to start a thread on the mailing list discussing some ideas? [20:08] jarfhy has joined the channel [20:09] evanmeagher: agreed with tanepiper [20:11] tanepiper: I'd like something where i can not just do builds, but call other scripts or cli stuff. for example my app deploys couchdb views [20:11] tanepiper: and i've written my own stuff, but having it in npm would be awesome [20:11] jakehow has joined the channel [20:12] isaacs: we've got some cool stuff planned with no.de [20:12] isaacs: the trick is getting something powerful, but still simple and stable. it's a tricky balance to hit. [20:12] isaacs: the more power you add, the more of a pita it becomes. that's why people like appliances in the first place: they take a lot fo teh choices away [20:13] sriley has joined the channel [20:14] sriley has joined the channel [20:15] softdrink has joined the channel [20:15] tanepiper: agreed, complexity should be in the scripts [20:15] tanepiper: but providing hooks into pre and post events is a great idea [20:17] spetrea-home has joined the channel [20:18] maushu__ has joined the channel [20:19] marshall_law has joined the channel [20:19] googol has joined the channel [20:19] davidascher has joined the channel [20:21] Aria has joined the channel [20:22] ErikCorry has joined the channel [20:27] JimBastard has joined the channel [20:27] isaacs: tanepiper: yeah, you can do that pretty easily with npm packages [20:27] isaacs: tanepiper: i mean, a package.json is also a really handy way to say "run these scripts at these times" [20:28] isaacs: you could very easily write a package.json which is nothing but a name, version, list of dependencies, and "scripts" hash [20:30] tanepiper: hmm yea, but that means i need to copy the software to the machine anyway before npm install . [20:31] tanepiper: whereas npm deploy i'd want to do from this machine, and in the script have it ssh and deploy to a remote machine [20:31] isaacs: tanepiper: right. git is a pretty ok way to do that. [20:32] tanepiper: i mean i can easily write a script to ssh into a machine, copy a script to run install of dependencies then git clone a dir someone on the machine [20:32] bradleymeck has joined the channel [20:32] isaacs: tanepiper: i'm working on making the no.de system package.json aware [20:33] isaacs: tanepiper: so you'd just do the existing git push deployment, but it'll respond to a package.json file rather than a server.js file [20:34] tanepiper: that'll be nice [20:34] tanepiper: makes more sense to have a config as an entry point than an actual server file [20:35] isaacs: yeah, i think so [20:35] JimBastard: isaacs: nice blog post [20:36] isaacs: JimBastard: which one? [20:36] JimBastard: http://blog.izs.me/post/1675072029/10-cool-things-you-probably-didnt-realize-npm-could-do [20:36] isaacs: oh, yeah, i thot you'd dig it [20:36] JimBastard: npm is the node package manager. Once upon a time, I would have said “a” node package manager, and the humbler part of me would like to pretend that that’s still the case, but SCREW THAT HUMBLER SIDE, I’m feeling egotistical and braggy today, so today it’s THE node package manager. [20:36] JimBastard: lol [20:36] isaacs: i felt like i was channeling the spirit of marak [20:36] JimBastard: great opener [20:36] herbySk has joined the channel [20:37] JimBastard: npm was way cooler before everyone used it ( channelling the spirit of node-hipster ) [20:37] isaacs: haha [20:37] isaacs: yeah [20:37] tanepiper: JimBastard: I hope you weren't shaken by "supporting" :D that was a bit douchey [20:38] JimBastard: tanepiper: yeah, i mean, its internet drama. i've kinda made a resolve to try and not pollute the node room with that stuff. feel free to PM me if you want [20:39] JimBastard: i just want to promote node and node projects, if people dont like that / me, mehhh [20:39] hoffa_ has joined the channel [20:39] isaacs: JimBastard: do you have any idea who supporting is? [20:39] meandi2 has joined the channel [20:39] bnoordhuis has joined the channel [20:39] JimBastard: isaacs: im assuming its someone in this room [20:39] isaacs: JimBastard: i've had crushy internet stalkers before. it's weird and icky. [20:39] tanepiper: oh yea i'm not gonna mention much except i thought it was pretty bad, nuff said [20:40] JimBastard: or its me, and ive really gone full paranoid schizophrenia [20:40] isaacs: oh, taht'd be hawt. [20:40] isaacs: DUDE!!! [20:40] isaacs: you should start posting AS SUPPORTING [20:40] isaacs: change your IRC name, register "suporting" on reddit and HN, and start bumping all your stuff. [20:41] isaacs: anonymously [20:41] JimBastard: i dont really do anything with sockpuppets ever, its not my style [20:41] evanmeagher: what's the "supporting" story? [20:41] evanmeagher: i'm late to the party [20:41] JimBastard: no party, carry on [20:42] JimBastard: look, a blog post about building session middleware! http://blog.nodejitsu.com/sessions-and-cookies-in-node [20:42] SubStack: ACTION starts waiting around in the bushes outside isaacs's apartment [20:42] JimBastard: isaacs did you peep that magicSession() call? i monkey patch httpServer [20:42] JimBastard: so you get request.session [20:43] JimBastard: http://blog.nodejitsu.com/sessions-and-cookies-in-node/magicMonkey.js [20:43] murz has joined the channel [20:44] SubStack: JimBastard: saw this, any plans for persistence across restarts? [20:44] isaacs: neat [20:44] JimBastard: SubStack: i saw your message before, hrmm [20:44] isaacs: evanmeagher: "supporting" is some random anonymous person who has a very creepy crush on JimBastard [20:44] JimBastard: right now its all in memory, but adding a memory adapter wouldnt be hard [20:44] evanmeagher: cute [20:44] SubStack: sweet [20:45] isaacs: evanmeagher: nono, more like a "jennifer aniston will HAVE to be my girlfriend if i cut her hands off" kinda thing. [20:45] JimBastard: SubStack: its just a K/V store right? [20:45] evanmeagher: isaacs: was kidding, but yeah. that sucks. [20:45] evanmeagher: this seems an odd venue for that sort of thing [20:45] SubStack: JimBastard: what is? [20:45] JimBastard: SubStack: to persist over restart, its just a matter of storing the sessions hash in a K/V store [20:46] SubStack: ah yeah pretty much [20:46] JimBastard: should be easy [20:46] tanepiper: yea, i need to look at adding persistance into my app [20:46] isaacs: what's really odd is that supporting's goal seems to be to make no one like JimBastard, but really, it's pretty obviously just petty bs. if anything, it's ADDED to his credibility as a relevant part of the node community. [20:46] SubStack: check out pkrumins's supermarket [20:46] SubStack: turns sqlite into a k/v [20:46] SubStack: also he's hacking on an endtable adapter right now [20:46] isaacs: then again, no one ever said crazy was strategic... [20:46] SubStack: so you can just update the hashes and they get magically persisted as if by magic [20:47] JimBastard_ has joined the channel [20:47] JimBastard_: bad irc [20:48] JimBastard_: like i was saying, SubStack: yeah endtable slightly annoys me, we have an ODM with a pluggable engine already [20:48] danielzi_ has joined the channel [20:49] SubStack: JimBastard: but can it persist objects without having to make any special function calls? [20:49] SubStack: besides initialization that is [20:49] JimBastard_: yeah man [20:49] SubStack: !! [20:49] SubStack: link? [20:50] stagas: how do you pass variables inside jade attributes inside a tag? I tried img(src: 'http://www.gravatar.com/avatar/#{user.gravatar}') and img(src: 'http://www.gravatar.com/avatar/' + #{user.gravatar}) both fail [20:50] JimBastard_: https://github.com/indexzero/resourcer [20:50] JimBastard_: we've been using this for months, there just arent great docs [20:50] JimBastard_: been trying to get cloudhead to finish for months [20:50] JimBastard_: fucking shit [20:50] JimBastard_: the syntax is pretty much the same to endtable [20:50] tanepiper: is it based off cradle? [20:50] SubStack: click [20:50] JimBastard_: tanepiper: it uses a pluggable engine... [20:51] JimBastard_: so cradle is the couchdb engine [20:51] tanepiper: nice, i'm using it just now [20:52] JimBastard_: we use resourcer for all of nodejitsu core [20:52] JimBastard_: all our models are resourcer models [20:53] SubStack: sounds highly excellent [20:53] stagas: ok got it it's without the #{} stuff [20:53] JimBastard_: im just super annoyed alexis hasn't had the chance to finish yet [20:54] tanepiper: what's missing? [20:54] masahiroh has joined the channel [20:54] SubStack: wait what is this: obj.update({ age: 45 }, that.callback) [20:54] cagdas has joined the channel [20:54] SubStack: I thought it was transparent persistence [20:56] JimBastard_: SubStack: hrmm [20:57] JimBastard_: 'create', 'save', 'update', 'destroy', 'get' are the default resource methods [20:57] SubStack: oh that is pesky [20:57] JimBastard_: i think trying to actually use native JS is not a good idea [20:57] JimBastard_: you want "delete model" ? [20:57] SubStack: endtable does it that way [20:57] SubStack: obj.x = 'moo' [20:57] Me1000 has joined the channel [20:57] mr_daniel has joined the channel [20:58] SubStack: that is a super useful way to do it because you can prototype using plain old hashes without persistence and then just hack persistence in with a couple lines of code [20:58] JimBastard_: okay, thats a setter for one property on one instance of one model [20:58] JimBastard_: whats the syntax for deleting that property? [20:59] SubStack: eh?, delete obj.x you mean? [20:59] JimBastard_: yeah [21:00] SubStack: to implement this you can do a combination of interval polling and update-path flagging with setters [21:00] JimBastard_: im not sure thats a great idea [21:00] SubStack: plus plain-old Object.keys() to check for new or deleted keys [21:00] SubStack: we shall see! [21:01] SubStack: I'm not so sure myself yet, but want to give it a go [21:01] SubStack: because if it does turn out to work pretty well then adding persistence to programs will get so much simpler [21:02] SubStack: I could write a dnode-based replication layer too [21:02] SubStack: I wonder how couch handles conflicts [21:02] JimBastard_: i suppose it would be trivial to add the syntax sugar onto resourcer if i wanted to [21:03] JimBastard_: thats all it really is [21:03] SubStack: is it? [21:03] tanepiper: SubStack: it doesn't, it saves both and lets the user decide [21:04] tanepiper: and returns an error if the revision is less, being the most obvious error [21:04] smtlaissezfaire has joined the channel [21:05] tanepiper: http://guide.couchdb.org/draft/conflicts.html [21:06] JimBastard_: SubStack: its just adding the polling code to the getter setter stuff [21:07] SubStack: ah [21:07] cjmFloating has joined the channel [21:08] softdrink has joined the channel [21:09] masahiroh has joined the channel [21:10] JimBastard_: SubStack: if end table works like that transparently, how do you know when it actually writes? [21:10] JimBastard_: how do you do a setter without a callback? [21:11] charlenopires has joined the channel [21:11] JimBastard_: you never know if it actually persisted or not? [21:13] SubStack: JimBastard_: yep [21:13] JimBastard_: so umm, ? [21:14] JimBastard_: that seems really bad? [21:14] SubStack: you just interact with a cached object [21:14] SubStack: and it gets written to disk when it needs to be [21:14] SubStack: I bet for most uses this is plenty adequate [21:15] JimBastard_: it seems to me, endtable makes a HUGE sacrifice for sugar syntax [21:15] stonebranch has joined the channel [21:16] JimBastard_: when im dealing with the database, especially CouchDB, i want to know my data got saved [21:17] SubStack: for some types of data that is certainly the case [21:18] SubStack: but the usability angle is so compelling for when you don't really care about consistency, you just want persistence across restarts [21:18] JimBastard_: i dont think its that compelling [21:19] JimBastard_: if you are performing I/O to save your data, abstracting the callback isnt a good idea [21:19] JimBastard_: goes against how node works [21:19] charlenopires has joined the channel [21:19] JimBastard_: i do see your point though, i need to think about this a lot more [21:20] JimBastard_: [11/27/10 4:17:06 PM] Alexis: Yea [11/27/10 4:18:16 PM] Alexis: But, I dont see the problem in calling save() when you're done [11/27/10 4:18:35 PM] Alexis: ie in resources [11/27/10 4:18:42 PM] Alexis: Resourcer [11/27/10 4:19:06 PM] Alexis: 1 extra line, to guarantee durability [11/27/10 4:20:01 PM] Alexis: foo.x = 1; foo.save(cb) [21:20] JimBastard_: yeah, alexis makes a good point [21:20] JimBastard_: its literally one extra call in Resourcer to ensure durablity [21:20] SubStack: save() might be a good compromise, sure [21:20] sveimac has joined the channel [21:22] SubStack: pre-empting the serialization routine to run [21:23] masahiroh has joined the channel [21:24] SubStack: still, if serialization is going to run anyways in a few hundered ms [21:25] aubergine has joined the channel [21:27] JimBastard_: i'd be interested to hear mikeal's take on this [21:27] InsDel has joined the channel [21:29] danielzilla has joined the channel [21:30] weng: JimBastard_: jimmie boy [21:30] weng: are you using any tool to create this doc: http://vowsjs.org/ [21:31] noahcampbell has joined the channel [21:31] sveimac has joined the channel [21:33] gf3 has joined the channel [21:36] mikew3c has joined the channel [21:37] MattDiPasquale has joined the channel [21:37] JimBastard_: weng: i think that was created by hand by cloudhead [21:37] weng: JimBastard_: okay [21:37] sveimac has joined the channel [21:38] JimBastard_: weng: there is https://github.com/jashkenas/docco though [21:38] JimBastard_: for generating docs [21:38] sveimac has joined the channel [21:39] weng: JimBastard_: isnt that for coffeescript files? [21:39] JimBastard_: weng: it will work with plain JS [21:39] weng: ok [21:39] JimBastard_: at least i hope it does [21:39] weng: :) [21:40] gf3 has joined the channel [21:40] JimBastard_: you got a library you working on weng ? [21:41] weng: no im going to start coding one [21:41] JimBastard_: i kinda like the docco method [21:41] kenbolton has joined the channel [21:41] JimBastard_: where the comments turn to docs [21:41] weng: it seems just to cumbersome right now to make good docs .. thats why we got a lot of bad documented libs out there [21:41] weng: would be greater if there was a service that we payed for to have it integrated with github [21:42] weng: with auth user roles maybe too =) [21:42] JimBastard_: i try to write good docs, it isnt easy [21:42] SubStack: I like inline documentation too [21:42] SubStack: hard to do with javascript though on account of how crazy flexible it is [21:43] JimBastard_: SubStack: what about docco? [21:43] SubStack: haven't used it yet, looks neat though [21:43] JimBastard_: it pulls inline comments out into MD, i think [21:43] weng: MD? [21:43] SubStack: I usually bang out a few examples for the readme and examples/ and then leave it at that :/ [21:43] SubStack: ACTION should write more documentation [21:43] weng: :) [21:44] sveimac has joined the channel [21:44] weng: someone should do a good service for that [21:44] SubStack: I hate it when projects don't have any code in their readme [21:44] sveisvei has joined the channel [21:44] tanepiper: yea, infact i might go through an finish some docs tonight [21:44] aconbere has joined the channel [21:45] SubStack: it's quite early out [21:45] SubStack: serves me right for waking up at 6 am this morning [21:45] kloeri has joined the channel [21:46] SubStack: not that I meant to or anything [21:46] weng: we just comment our code with jsdoc syntax .. then in folders we have install.man, hello_world.man, demo.man etc .. and we just on this documentation service add our GitHub project URI and it will fetch it and generate a documentation site with user roles etc [21:46] weng: with API reference and menus for our man files like Rails guides [21:47] weng: i would pay just to use it [21:47] weng: what a cool world we live in .. lot of money to make with simple ideas =) [21:47] naturalethic has joined the channel [21:48] SubStack: want: {doc,npm}.nodejs.org [21:49] weng: maybe Cloud9 would do something about it though [21:49] weng: generate our documentation automatically too [21:50] kloeri has joined the channel [21:50] amerine has joined the channel [21:50] SubStack: and write our code for us while they're at it [21:50] weng: nah .. lets not exaggerate now =) [21:51] SubStack: I'd be doing robotics if I didn't have all this self-imposed code to write [21:51] weng: its just a huge problem that needs to be solved [21:51] weng: documentation is the weakest link in OS world [22:02] Nohryb has joined the channel [22:13] zomgbie has joined the channel [22:15] MrTopf has joined the channel [22:18] gf3 has joined the channel [22:19] yozlet has joined the channel [22:21] sveisvei: weng: no only in the os world:) [22:23] brianmario has joined the channel [22:24] nolkyan has joined the channel [22:27] naturalethic: is gethostname implemented yet? [22:29] sixtus42 has joined the channel [22:29] cjmFloating has joined the channel [22:31] davidamcclain has joined the channel [22:31] josephhitchens has joined the channel [22:33] evanmeagher has joined the channel [22:34] josephhitchens: Greetings to the node hive-mind. Please bestow your wisdom upon me. I need to do mysql with node, but see 3 different implementations. Which is closest to usable in a production env? [22:34] JojoBoss has joined the channel [22:35] MattDiPasquale has joined the channel [22:35] jakehow has joined the channel [22:35] naturalethic: josephhitchens: https://github.com/felixge/node-mysql [22:36] josephhitchens: naturalethic: many thanks! [22:36] heap has joined the channel [22:37] vineyard has joined the channel [22:43] chrischris has joined the channel [22:45] cheney has joined the channel [22:47] masahiroh has joined the channel [22:48] cjmFloating has joined the channel [22:48] sveimac has joined the channel [22:52] cagdas has joined the channel [22:56] jashkenas has joined the channel [22:56] johngbrooks has joined the channel [22:56] ajsie has joined the channel [22:57] jchris1 has joined the channel [22:59] sveimac has joined the channel [23:02] jmar777 has joined the channel [23:03] sriley has joined the channel [23:03] hdon has joined the channel [23:03] jmar777: hey - can anyone confirm if this is a bug or not (v0.2.4)? https://gist.github.com/718366 [23:03] HAITI has joined the channel [23:03] sriley has left the channel [23:04] jmar777: Made a custom event emitter, and any bound functions appear to be passed a minimum of two arguments, regardless of how many arguments are passed to the emit() function [23:05] feedtheaimbot has joined the channel [23:06] markwubben has joined the channel [23:07] jameshome: oh man, it's so nice to be picking Express back up and finding much more documentation [23:07] jameshome: thanks guys, that helps a lot. [23:10] evanmeagher has joined the channel [23:11] jmar777: the minimum of the two arguments are caused by line 27 here: https://github.com/ry/node/blob/v0.2.4/lib/events.js [23:11] cagdas has joined the channel [23:12] jmar777: ftr, it does the same thing all the way through v0.3.1 [23:13] jmar777: should this be considered a bug? seems like if I emit('foo') with no arguments, I shouldn't expect 2 arguments in the .on('foo', func) handler [23:13] herbySk has joined the channel [23:18] aurynn has joined the channel [23:23] aubergine has joined the channel [23:27] webr3: jmar, seems like a decent optimization to me, but yeah it could eb bug inducing if you didn't know about the functionality, and in a few edge cases [23:28] jmar777: webr3: i understand the motivation for the behavior... but it definitely throws a wrench in the spokes if you're making dynamic decisions based on the number of arguments [23:28] softdrink has joined the channel [23:28] jmar777: webr3: seems like unexpected behavior to me. i'd call it "incorrect", but that's obviously opinion [23:29] webr3: so would I tbh [23:30] webr3: better a double micro optimization of switch(arguments.length) case 2: case 3: default [23:30] webr3: and probably add a case 4 & 5 to cover most cases [23:31] herbySk has joined the channel [23:32] jmar777: webr3: sounds good to me. i gotta run for now, but i can throw a patch together for that [23:32] jmar777: webr3: thanks for the input [23:34] marshall_law has joined the channel [23:37] Shaka has joined the channel [23:37] sveimac has joined the channel [23:39] zemanel has joined the channel [23:40] mikeal has joined the channel [23:42] bradleymeck has joined the channel [23:43] [[zzz]] has joined the channel [23:44] hober has joined the channel [23:47] cjmFloating has joined the channel [23:49] sixtus42 has joined the channel [23:50] braddunbar has joined the channel [23:53] sveimac has joined the channel [23:53] rphillips has joined the channel [23:57] hoffa_ has joined the channel [23:58] evanmeagher has joined the channel