[00:05] traceback0 has left the channel [00:05] amerine has joined the channel [00:06] arpegius has joined the channel [00:09] c4milo1 has joined the channel [00:10] |RicharD| has joined the channel [00:10] |RicharD|: hi to all..suggest for a vps hosting for node.js app ? [00:14] tmzt: |RicharD|: I'm using 2host.com [00:14] eee_c has joined the channel [00:14] tmzt: even with 256m it's working nicely [00:14] pengwynn has joined the channel [00:15] |RicharD|: oky :) [00:16] bsstoner has joined the channel [00:19] c4milo2 has joined the channel [00:24] sh1mmer has joined the channel [00:24] mscdex: node.js rules! [00:25] m32311 has joined the channel [00:28] konobi: the first rule of node.js is you DO talk about node.js [00:28] |RicharD|: :P. [00:29] konobi: |RicharD|: you could always apply for a coupon at the no.de beta [00:29] |RicharD|: no.de beta ? [00:29] |RicharD|: what is it ? [00:29] emilepetrone has joined the channel [00:30] gkatsev: there's also linode and slicehost and prgmr [00:30] konobi: |RicharD|: http://no.de [00:30] gkatsev: and I think heroku is adding node.js support [00:30] xSmurf: I'm back :) [00:30] teddy: gkatsev: you're right; http://blog.heroku.com/archives/2010/4/28/node_js_support_experimental/ [00:31] McDES has joined the channel [00:31] gkatsev: tmzt: whoa, 2host is even cheaper than prgmr [00:34] |RicharD|: cool :). [00:38] saikat has joined the channel [00:42] sivy has joined the channel [00:42] forzan has joined the channel [00:42] McDES has joined the channel [00:43] jpld has joined the channel [00:44] naveenk has joined the channel [00:44] sudoer has joined the channel [00:45] EGreg_: hey people [00:45] mscdex: hola [00:46] mscdex: i sense you have a question [00:49] cainus has joined the channel [00:50] ezmobius has joined the channel [00:53] cardona507 has joined the channel [00:53] sh1mmer has joined the channel [00:56] softdrink has joined the channel [00:57] HAITI has joined the channel [01:06] arrty has joined the channel [01:07] tmzt: gkatsev: yeah it's insane and you get to do all the work yourself (it's a raw xen instance) there's a ssh serial console to recover if you need it [01:07] c4milo1 has joined the channel [01:07] gkatsev: tmzt: haha, nice. The site seemed like it only provides debian/centos or soon windows, though. [01:08] tmzt: well you could run any os you want that runs under xen [01:08] gkatsev: ok, I guess they just provide an easy way to install debian/centos [01:09] tmzt: the 9.10 wasn't working (for ubuntu) so I had to recover it but 9.04 supposedly works [01:09] gkatsev: I was thinking of perhaps holding off on a VPS and sticking with a static site on Nearly Free Speech but maybe for $3 a month I might just switch, lol [01:10] tmzt: it's pretty awesome, I"ve got nginx and node, plus apache for my other sites all on one machine for 5/month [01:10] tmzt: (256) [01:10] iFire has joined the channel [01:11] gkatsev: nice [01:13] tmzt: so my jade implementation is back to the level of functionality of my custom html stuff [01:13] tmzt: nice [01:14] Lorentz: I too used to have a debian instance in a VPS form [01:14] Lorentz: Eventually moved to just having my own server at home, but I might get one again just for proxying [01:15] tg has joined the channel [01:15] Lorentz: (I hate how some sites don't give me access just because I'm in australia) [01:15] tmzt: don't have static ip at home [01:15] gkatsev: dynamic dns ftw, lol [01:15] Lorentz: I do, comes free of charge with my plan. [01:15] Lorentz: Very nice ISP. [01:15] tmzt: gkatsev: that only works if you have the premium so you get the nameserver [01:15] gkatsev: what speed & cost? [01:16] gkatsev: tmzt: dyndns is free, and I have gkatsev.dyndns.org [01:16] tmzt: right, but I want to host actual domains now [01:16] Lorentz: gkatsev: Standard ADSL2+ deal, something like 24MBps/1.5MBps [01:16] gkatsev: ah, right. [01:16] Lorentz: Never actually reaches it [01:16] tmzt: you can do it with dyndns.org but you have to pay for their service [01:16] gkatsev: yeah [01:17] gkatsev: Lorentz: that's pretty good. How far are you from the node? [01:17] Lorentz: gkatsev: Sadly, pretty far now after my last move, about 2km away [01:17] tmzt: gkatsev: well if you go with 2host use this http://www.2host.com/support/aff.php?aff=115 :) [01:17] gkatsev: do you get any speed at all? [01:17] Lorentz: I also had the wisdom to donate to everydns before they moved to whatever company they're under now [01:18] gkatsev: tmzt: referal? How much you get? lol [01:18] Lorentz: Got grandfathered the unlimited DNS thing [01:18] gkatsev: Lorentz: nice [01:19] c4milo2 has joined the channel [01:19] emilepetrone has joined the channel [01:19] c4milo2 has left the channel [01:24] sh1m has joined the channel [01:27] saikat has joined the channel [01:27] eazyigz: How come I cannot delete a variable in the node console? [01:28] eazyigz: node> var a = 1; [01:28] eazyigz: node> delete a; [01:28] eazyigz: false [01:28] gkatsev: eazyigz: because delete is for deleting an object's properties [01:29] gkatsev: ls [01:29] gkatsev: oops [01:29] gkatsev: `ref mdc delete [01:29] v8bot: gkatsev: delete - MDC Doc Center - https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/delete_Operator [01:29] eazyigz: gkatsev: I can do it in WebKit easily [01:29] eazyigz: so what is the difference in node? [01:29] gkatsev: because globals are added to the window object [01:30] janm has joined the channel [01:30] gkatsev: :) [01:30] eazyigz: aah [01:30] gkatsev: no window here [01:30] eazyigz: although there are libraries for node to implement a headless browser, are there? [01:31] gkatsev: jsdom [01:31] gkatsev: and there is also selenium [01:32] eazyigz: jsdom isn't really under active development, unless i'm wrong [01:32] eazyigz: but selenium seems interesting [01:34] ossareh has joined the channel [01:36] mikew3c has joined the channel [01:39] m32311 has joined the channel [01:39] robotarmy has joined the channel [01:40] tmzt: how do you match * in a route and get the result in expressjs? [01:42] tmzt: for more than one subcomponent [01:43] c4milo1 has joined the channel [01:44] bingomanatee_: <== working on a "Metacontroller" for express/mvc to spawn more controllers [01:45] tmzt: bingomanatee_: I'm trying to match ajax/* and return res.render(*) [01:46] bingomanatee_: tmzt: sorry - what now? are you talking about express? I don't quite get you. [01:46] tmzt: yeah in express [01:46] bingomanatee_: so "*" == the id of a given resource? [01:46] tmzt: yeah but the resource can have / in it [01:47] bingomanatee_: okay well if you turn off the layout and you have ajax/index.html in your views folder does that not do what you want? [01:47] bingomanatee_: just noticed your '/' comment. [01:47] tmzt: turn off the layout? [01:48] c4milo2 has joined the channel [01:48] bingomanatee_: yep - if you read the docs of express you can turn off the layout. I forget exactly what the switch is but I know it can be done. [01:49] bingomanatee_: That being said - are you sure that express isn't "too much solution" for you? I'd suggest using core node/net and your own templating system (or none). [01:50] bingomanatee_: You could for instance have a basic server on a different port for ajax. [01:51] aheckmann has joined the channel [01:51] bingomanatee_: Does this relate to your current problem? [01:52] c4milo1 has joined the channel [01:53] bingomanatee_: With core node, you can parse the URL any way you want to. And you probably won't need to work with templates if you are returning JSON - just render the output via JSON.stirngify(output). [01:53] c4milo1 has joined the channel [01:53] tmzt: not exactly, I'm trying to render a partial if /ajax/* is requested, but render a full layed out page if just /* is requested [01:53] bingomanatee_: Understood. [01:54] bingomanatee_: Are there a limited, known number of "/''s in your code? if there are, you can have a handler for "/:id", "/:id/:id2/".... et all. [01:55] tmzt: true, 2 would work [01:55] bingomanatee_: They can all point to the same resolving function if you want, or different ones. [01:55] tmzt: or I could just not be lazy and put everything in the js [01:56] bingomanatee_: I suspect that there is enough variation in the implicaiton of one or two slash-delimmed parameters that simply creating two (or so) routing solutions would do it. [01:56] tmzt: certainly for get [01:57] bingomanatee_: do you want to do a full REST implementation? [01:57] bingomanatee_: or just a read-only version? [01:57] tmzt: this is for fetching content, pretty much everything else is REST calls [01:57] sh1mmer has joined the channel [01:57] bingomanatee_: Are you following the MVC example or just the route-middleware path? [01:58] tmzt: which example specificially? [01:58] bingomanatee_: That is what I am asking you. [01:58] pydroid has joined the channel [01:58] tmzt: my application is getting closer and closer to what I want with each revision [01:58] pyrotechnick has joined the channel [01:58] bingomanatee_: Is your app based on any of the existing express examples? [01:58] tmzt: partly [01:59] tmzt: but I don't know what you mean by mvc pattern as it applies to express [01:59] tmzt: I'm using views now with jade based on eee_c's I think [01:59] bingomanatee_: There's an MVC example that uses Rails-style paths - its what I have been basing my work on. [02:00] bingomanatee_: Well- thats as specific as I can get without seeing code. gist up a file if you have a specific issue. Otherwise it sounds like you know what you want. [02:00] x0xMaximus has joined the channel [02:00] ryanfitz has joined the channel [02:00] c4milo1 has joined the channel [02:01] bartt1 has joined the channel [02:02] tmzt: thanks some how I though you could get the backend regex matches in express through req or something [02:02] tmzt: but your suggested seems to work [02:02] sivy has joined the channel [02:03] bingomanatee_: good. [02:03] c4milo1 has joined the channel [02:09] mscdex has joined the channel [02:11] bsstoner has joined the channel [02:14] dguttman_ has joined the channel [02:16] zentoooo has joined the channel [02:20] cheney has joined the channel [02:21] zentoooo has joined the channel [02:24] benburkert has joined the channel [02:28] sh1m has joined the channel [02:31] pyrotechnick has joined the channel [02:31] gf3 has joined the channel [02:32] ezmobius has joined the channel [02:35] davidc_ has joined the channel [02:35] davidc_ has joined the channel [02:38] isaacs has joined the channel [02:38] hobodave has joined the channel [02:43] dnolen has joined the channel [02:51] c4milo1 has joined the channel [02:51] pydroid has joined the channel [02:51] strmpnk has joined the channel [02:56] pydroid has joined the channel [02:59] temp01 has joined the channel [03:01] sonnym has joined the channel [03:05] caligula has joined the channel [03:06] dmshann0n has joined the channel [03:07] benburkert has joined the channel [03:08] sivy has joined the channel [03:19] aristidesfl has left the channel [03:21] whyme has joined the channel [03:26] benburkert has joined the channel [03:38] tekky has joined the channel [03:38] eboyjr has joined the channel [03:39] eboyjr: Where can I find the source code for process.binding("evals").Script.runInNewContext? [03:43] sudoer has joined the channel [03:47] gf3 has joined the channel [03:47] isaacs: eboyjr: src/node_script.cc, I think. [03:47] isaacs: eboyjr: yeah, that's it [03:50] eboyjr: isaacs: Thanks, v8's api is much better than spidermonkey's [03:51] ossareh has joined the channel [03:53] Aria has joined the channel [04:04] emilepetrone has left the channel [04:15] iFire has joined the channel [04:15] isaacs: eboyjr: i have the same preference. [04:19] esigler has joined the channel [04:20] cardona507 has joined the channel [04:20] joelesk has joined the channel [04:21] cardona507 has joined the channel [04:21] joelesk: does querystring.parse no longer handle nested json? [04:23] joelesk: i saw a note in the changelog "Simpler querystring parsing; breaks API" and am wondering if that's why my postdata is now getting truncated [04:24] zorzar_ has joined the channel [04:27] dguttman has joined the channel [04:33] zentoooo has joined the channel [04:34] isaacs: hey, check this out: http://doc.npmjs.org/ [04:34] isaacs: or, if dns fails you: http://ndoc.no.de/ [04:35] rchavik has joined the channel [04:36] Aria: Spiffy! [04:36] isaacs: haha, looking at the logs on the server, i can see npm fetching the data the first time someone hits a given page [04:36] dnolen has joined the channel [04:37] stagas: isaacs: ah that's why the long waits :) [04:38] isaacs: stagas: yeah, but only the first time for a given package [04:38] opengeard has joined the channel [04:38] isaacs: stagas: if you fetch dust again, it should be faster [04:39] isaacs: there's not much to it. total of 7 commits so far [04:40] isaacs: all props due to evanmeagher [04:42] sstephenson: isaacs: cool [04:43] stagas: isaacs: add a random link at the top :) [04:44] AAA_awright has joined the channel [04:47] maushu_ has joined the channel [04:47] kawaz_home has joined the channel [04:48] alexfner has joined the channel [04:49] ezmobius has joined the channel [04:56] Jezek has joined the channel [04:57] isaacs: stagas: a random link to what? [04:57] mikeal has joined the channel [04:58] vborja has joined the channel [05:00] trotter has joined the channel [05:04] sudoer has joined the channel [05:10] cagdas has joined the channel [05:16] stagas: isaacs: to any package readme :) [05:17] isaacs: stagas: the readme is the index page [05:18] ryanfitz has joined the channel [05:25] skm has joined the channel [05:28] softdrink: woot. i finally have something useful on github lol [05:28] Miriable has joined the channel [05:28] softdrink: (sorta my own take on Faker.js) [05:28] softdrink: https://github.com/jocafa/Nonsense [05:37] tlrobinson has joined the channel [05:38] tlrobinson: i know this is an odd question, but why would "process.env == 1234" give me an error like "TypeError: Cannot convert object to primitive value" [05:38] Aria: env is a hash. [05:39] Aria: There's no toValue() on it. [05:40] tlrobinson: Aria: sure, but it's not a normal hash/object/whatever, ({}) == 1234 is fine [05:40] Aria: Yeah. It's an odd property, with the bare minimum implemented. [05:42] tlrobinson: it's causing weird problems in this thing i'm doing. granted i'm doing weird things [05:42] tlrobinson: i'll try to figure out a workaround [05:44] dnolen has joined the channel [05:51] Ond has joined the channel [05:55] circut has joined the channel [05:57] softdrink: ACTION pets localStorage [06:02] isaacs: tlrobinson: yeah, process.env isn't an object, it's a key-value hash [06:02] isaacs: > typeof process.env.toString [06:02] isaacs: 'undefined' [06:02] isaacs: > typeof process.env.hasOwnProperty [06:02] isaacs: 'undefined' [06:02] tlrobinson: isaacs: util.inspect seems to barf on certain objects [06:03] isaacs: tlrobinson: which ones? [06:03] tlrobinson: haven't really figured that out, but its in function isRegExp(re) { [06:03] tlrobinson: specifically var s = '' + re; [06:03] isaacs: hm [06:04] tlrobinson: if re is one of these objects it throws an exception [06:04] tlrobinson: putting a try/catch around that fixed my specific problem, not sure if there's a better solution\ [06:04] isaacs: interesting.. [06:06] isaacs: Probably: s = String(re) [06:06] isaacs: oh, no, nvm... [06:07] cagdas has joined the channel [06:07] emilepetrone has joined the channel [06:07] isaacs: tlrobinson: yeah, i suggest try/catch [06:08] tlrobinson: i'm not sure why inspect(process.env) doesn't cause problems [06:08] isaacs: tlrobinson: everything i can imagine (in the 3 seconds i tried) would involve putting a __proto__ on process.env [06:08] tlrobinson: haven't looked that closely [06:08] isaacs: tlrobinson: nmost likely because typeof process.env === "object" [06:08] isaacs: not "function" [06:08] isaacs: so it never calls isRegExp [06:08] emilepetrone: If you are looking to get started with Redis, here is a good place to start http://stackoverflow.com/questions/4542694/getting-started-setup-database-for-node-js [06:20] eboyjr has left the channel [06:22] wycats has joined the channel [06:23] ezmobius has joined the channel [06:31] d7777777 has joined the channel [06:32] ewdafa has joined the channel [06:35] wycats: I used npm to install a package, but when I try to require it, I get: "Error: Cannot find module 'benchmark'" [06:35] wycats: I don't see npm in require.paths [06:35] wycats: am I doing something wrong? [06:36] isaacs: wycats: perhaps [06:36] isaacs: wycats: npm config get root --loglevel silent [06:36] isaacs: wycats: npm config get root --loglevel error [06:36] isaacs: (the second one) [06:36] d7777777: I've sent a patch to nodejs-dev more then 24 hours ago, but for some reason it didn't published [06:36] mumphster: anyone know what would cause dns.js to crash on subdomain lookups [06:36] isaacs: d7777777: maybe it's christmas. [06:37] mumphster: like if I try to pull header information from a subdomain it just poops itself with http://p.dynamitealley.com/4d19857aa154a.html [06:37] d7777777: isaacs: but 3 messages that were sent after mine did published [06:37] isaacs: d7777777: ok [06:37] isaacs: d7777777: it's run by humans, not robots. [06:38] mumphster: regualr domains go through fine though what da heck [06:38] isaacs: it's not like it's a queue, or based on fairness. [06:39] d7777777: isaacs: o.k. fine, to tell the truth I am not Christian so I didn't think about it [06:39] isaacs: d7777777: me neither. but xmas is also an american holiday. [06:39] mumphster: argh gonna break my laptop soon [06:39] d7777777: I am not from usa [06:40] isaacs: d7777777: i don't know which patch is yours, but nodejs patches are frequently handled out of order. [06:40] masahiroh has joined the channel [06:40] isaacs: especially if something comes in that is easier to grok, or more in-demand, or whatever. [06:40] isaacs: it's just easier to accept a typo-fix than a big refactor or a new feature, for instance. [06:41] wycats: isaacs: /usr/local/lib/node [06:41] d7777777: isaacs: It is a simple patch to EventEmitter [06:41] isaacs: wycats: great. now go into the node repl, and do: require.paths [06:41] isaacs: d7777777: there are no simple patches to EventEmitter ;) [06:41] wycats: [ '/Users/wycats/.node_modules', '/Users/wycats/.node_libraries', '/usr/local/Cellar/node/HEAD/lib/node' ] [06:41] isaacs: wycats: there ya go. [06:41] wycats: isaacs: how do I fix? [06:41] isaacs: wycats: add /usr/local/lib/node to the NODE_PATH env [06:42] wycats: why isn't it there automatically? [06:42] d7777777: isaacs: this is the pull request I've sent almost month ago: https://github.com/ry/node/pull/500#issuecomment-595413 [06:42] isaacs: wycats: because it's based on the location of the executable, and homebrew puts that in an odd place. [06:42] wycats: interesting [06:42] d7777777: It's one simple line that can make the life of many easier :) [06:43] isaacs: d7777777: yeah, seems nice enough. +1 [06:43] dthompson has joined the channel [06:43] isaacs: i dig chaining. i know ry is kinda iffy about it, stylistically speaking. but in any event, it's a no-op if you don't use it. [06:44] d7777777: isaacs: It'd be nice if you'll paste this +1 there :) [06:44] isaacs: d7777777: what was the title of your message? i'm not finding it. [06:44] softdrink: where's that jimbastard kid? [06:45] isaacs: softdrink: nyc, i think. [06:45] d7777777: [pull request] A patch that make EventEmitter interface more consistent [06:45] faust45 has joined the channel [06:45] emilepetrone has left the channel [06:45] isaacs: d7777777: ahh. ok. send to nodejs-dev@googlegroups.com [06:45] isaacs: i'll forward this one [06:45] isaacs: but in the future. the nodejs@ list is for help and announcements and such [06:45] isaacs: nodejs-dev@ is for patches and api discussion [06:46] d7777777: isaacs: wait [06:46] isaacs: otherwise they get lost [06:47] isaacs: d7777777: waiting. [06:47] d7777777: isaacs: after I sent the message to nodejs@ I read in nodejs.org that patches should be sent to nodejs-dev - so I sent it there already [06:47] isaacs: ok... [06:47] MikhX has joined the channel [06:47] iszak: too much red tape? [06:47] isaacs: i don't see it [06:48] isaacs: iszak: it really is just too noisy on nodejs@ [06:48] isaacs: it's good to browse, and i try to keep up with it, but patches and deep issues drown in the hubbub [06:48] d7777777: isaacs: do you know nodejs-dev moderators on this channel? [06:49] isaacs: d7777777: i'm not sure if anyone other than ryah moderates it [06:49] d7777777: http://groups.google.com/group/nodejs-dev/members?start=0&sort=type [06:49] isaacs: d7777777: i definitely read it carefully [06:49] iszak: isaacs, sure enough I'm sure you're right, but then what happens when people realise to get heard nodejs-dev is the place to go, and eventually that'll become flooded, it happened with another software package I use, they have 3 mailing lists all of which are useless because if you want something patched you put it in the tracker. [06:49] cardona507 has joined the channel [06:49] isaacs: iszak: yeah, but we're all dicks to anyone who says anything off-topic on the dev list ;) [06:49] iszak: ha, nice. [06:50] d7777777: it says there are 4 moderators [06:50] isaacs: ah, indeed [06:50] isaacs: i have managed somehow to dodge that responsibility :D [06:50] iszak: my god, I need to recompile my node.js it's ~12 hours old already. [06:50] ezmobius has joined the channel [06:51] isaacs: but yeah, those are all guys who hang out in here a lot [06:51] pquerna: 12 hours \o/ [06:51] isaacs: like mr querna here^ [06:51] iszak: I think I may make a cron to rebuild it hourly. [06:51] d7777777: isaacs: querna or pquerna [06:52] pquerna: well, querna is my last name, so thats normally what you use with a mr prefix [06:52] pquerna: also [06:52] pquerna: http://www.ipv6yet.com/ [06:52] pquerna: its a totally incomplete project [06:52] pquerna: but I found an ipv6 VPS [06:52] iszak: pquerna, do you really think IPv4 will ever die? I doubt it. [06:52] pquerna: which i thought roginally would be the hard part [06:52] d7777777: pquerna: can you publish the patch I've sent to nodejs-dev? [06:52] pquerna: iszak: already. [06:52] pquerna: 22:50 -!- ezmobius [~ez@166.205.143.229] has joined #Node.js [06:52] pquerna: blah [06:53] pquerna: iszak: http://www.youtube.com/watch?v=2clTKh2vFAE&feature=related [06:53] pquerna: iszak: its not about it going dead, its about it running out for consumers. [06:54] pquerna: iszak: honestly, I think it will be an amazingly shocking transition; One day no one will be using it, just like today, then in less than 1 year adoption will be massive -- ie, companies like Comcast are just going to 'turn it on' at somepoint. [06:55] pquerna: and once your consumers have it, you want it for your site [06:55] pquerna: because they will proxy ipv4 over an ISP NAT [06:55] pquerna: and that'll make the user experience suck [06:55] isaacs: d7777777: here's how the nodejs dev team heirarchy works: [06:55] isaacs: d7777777: so, there's ryah... [06:55] isaacs: d7777777: and that's it. [06:55] pquerna: heh [06:56] isaacs: there are no "committers". just forks. and one fork that matters. [06:56] isaacs: ry/node is his. isaacs/node is mine. but no one uses isaacs/node [06:56] zentoooo has joined the channel [06:56] isaacs: (except me) [06:56] d7777777: isaacs: I don't want it to merge the patch just to publish the email I've sent [06:56] d7777777: *him [06:56] isaacs: d7777777: oh, i thought you meant publish the patch [06:56] isaacs: d7777777: hehe [06:57] pquerna: hmm? not seeing a pending mail [06:57] iszak: isaacs, will yours be merged eventually? [06:57] isaacs: iszak: that's not really how this works. [06:57] iszak: so why have a separate branch for you? [06:57] isaacs: iszak: i mean, i have a fork, and i float a few patches, mostly for esthetic purposes. [06:57] isaacs: and i do work in my fork [06:57] isaacs: it's git, man. it's distributed. [06:57] d7777777: pquerna, I can try to send it again [06:57] isaacs: it's like, we're ALL the server [06:57] pquerna: nm, i think i found it [06:57] pquerna: the eventemitter patch? [06:58] pquerna: yeah, just modded it through [06:58] iszak: isaacs, i know but you could've just done a clone and work locally? ;) [06:58] d7777777: pquerna: great thanks :) [06:58] isaacs: iszak: yeah, but this way, i can work on something, and just ping the url to ryan if it's something we're discussing, or go back and forth with someone else and then pitch to the list when it's worked out, etc. [06:58] iszak: oh I see. [06:59] isaacs: iszak: plus, i do float a few patches. because COMMA FIRST IS THE ONLY ONE TRUE WAY AND THE LIGHT FOREVER [06:59] isaacs: so my util.inspect is teh greetest [06:59] iszak: util.inspect? never heard of it. [06:59] isaacs: and a few repl tweaks [06:59] isaacs: iszak: sys.inspect [06:59] isaacs: same thing [07:00] iszak: I don't get to play with node.js [07:00] isaacs: iszak: why not? [07:00] iszak: shouldn't console.log do this? serialize the object and all. [07:01] isaacs: iszak: that uses it, too [07:01] iszak: because it's not in my job description. [07:01] isaacs: iszak: ... [07:01] isaacs: iszak: so? [07:01] iszak: meaning I don't get enough time to play with it outside of work. [07:01] isaacs: i see. [07:01] iszak: so why expose inspect when you can use it via console.log? [07:01] isaacs: you should quit your job and build a package manager. that's the best way to solve any and all problems. [07:01] isaacs: iszak: because sometimes you wanna get the string and do something funky with it [07:02] iszak: probably something you shouldn't be doing. [07:02] isaacs: iszak: for instance, the repl uses it when you dump an object. [07:02] isaacs: iszak: npm view uses it to print the data to the terminal [07:02] iszak: I don't use npm. [07:02] isaacs: iszak: also, it is literally in my job description :) [07:02] iszak: I'm hardcore like that. [07:03] iszak: Anyhow. [07:04] iszak: I have too many things to complete so I don't get time for node.js. [07:04] iszak: but i can however sit on IRC all day. [07:04] isaacs: hehe [07:05] pquerna: this sounds familiar. [07:05] iszak: Elaborate pquerna ? [07:06] T-Co: "but i can however sit on IRC all day." - This sounds familiar to me too :) [07:07] iszak: I'd like to not think IRC as a productivity killer. [07:08] wycats: is there an API for trapping signals in Node? [07:09] pquerna: iszak: work as a consuming force, but somehow ending up in far too many freenode channels, so many you ask a freenode staffer to give you an usermode to let you join more... oh wait.. [07:09] iszak: wait, you've got a limit on how many channels you can join?! [07:09] isaacs: wycats: process.on("SIGHUP", function () { console.error("HUP received") }) [07:09] wycats: isaacs: sweet [07:10] wycats: and I can do some cleanup and then exit in there? [07:10] iszak: bleh, I need to get my 3rd monitor's adapter, 2 monitors is not enough. [07:10] pquerna: iszak: i believe its 20 normally. [07:10] iszak: heh, not even 1/2 there yet. [07:11] pquerna: 35ish. [07:12] pquerna: but I'm a pro idler [07:13] muhqu has joined the channel [07:13] iszak: not that idle in here. [07:13] pquerna: i had a 4 day streak going. [07:13] pquerna: i mean, I like node.js. [07:14] pquerna: #solr? I think I asked a question in september ;) [07:14] isaacs: pquerna: channels are like software. installing is so easy. [07:14] isaacs: pulling out is so hard [07:14] iszak: pulling out is only hard if you're on windows and it craps in the registry everywhere. [07:21] SamuraiJack has joined the channel [07:32] matjas has joined the channel [07:35] wycats: isaacs: is there a canonical way to check whether the shell has colors? [07:35] wycats: and/or a shell color library? [07:35] isaacs: wycats: reqiure("tty").isatty(fd) [07:36] wycats: isaacs: won't windows be a tty but not have colors? [07:36] isaacs: var tty = require("tty"), hasColor = tty.isatty(tty.stdoutFD) [07:36] wycats: (should node some day support Windows) [07:36] isaacs: wycats: oh, you can also check the process.env.TTY [07:36] isaacs: er, env.TERM [07:36] isaacs: if it's something-color, then yes [07:37] isaacs: but term itself isn't foolproof [07:37] isaacs: since you might be piping to a file or something [07:37] mikew3c has joined the channel [07:37] isaacs: pre-0.3.x, you have to use process.binding("stdio") instead of require("tty") [07:37] wycats: I guess you can check TERM and TTY [07:38] wycats: which should future-proof windows [07:49] ryanf has joined the channel [07:51] tlrobinson: isaacs: fyi this is what i was working on where i was running into problems: https://github.com/tlrobinson/leakhelper [07:53] isaacs: tlrobinson: cute. [07:53] isaacs: wont' find stuff like: x = (function () { var y = 100; return function () {}})() [07:53] isaacs: y will still be trapped [07:54] tlrobinson: isaacs: yeah, that's mentioned in the readme [07:54] isaacs: ah [07:54] isaacs: ACTION can read, i swear [07:54] tlrobinson: isaacs: thus it's unfortunately somewhat useless in CommonJS [07:54] isaacs: right [07:54] isaacs: it'd be rad to do something that hooked into the vm [07:54] isaacs: i mean, portability--, but still [07:56] tlrobinson: as usual this project started as an "oh that's just a 10 line function, i'll just whip that up right" [07:56] isaacs: ah, yeah [07:57] tlrobinson: it's not particularly complex but i spent awhile figuring out the best set implementation to use, and making it a little nicer [07:57] tlrobinson: then making it work on narwhal and node, of course :) [07:58] KUHRT has joined the channel [07:58] tlrobinson: fortunately it pretty much worked without modification [07:59] saschagehlich has joined the channel [08:00] ezmobius has joined the channel [08:06] HAITI has joined the channel [08:09] derren13 has joined the channel [08:10] ivanfi has joined the channel [08:21] virtuo_ has joined the channel [08:22] thinkingpotato has joined the channel [08:23] dspree: is it safe for me to refer to http://npmjs.org/install.sh in a script that will be used by customers? can I count on it being roughly the same over time? [08:25] MikhX has joined the channel [08:25] markwubben has joined the channel [08:26] dspree: or rather, if I save a copy of that script, can I count on it working - or is the registry format not fixed yet? [08:26] Druid_ has joined the channel [08:27] zentoooo has joined the channel [08:28] benburkert has joined the channel [08:33] mauritslamers has joined the channel [08:37] amerine has joined the channel [08:37] mauritslamers_ has joined the channel [08:40] tmzt: why do I feel like going from dojo grid to jquery would be going backwards? there's a lot to like but it's more like I would be rewriting so much stuff [08:40] tmzt: am I missing something? [08:42] daglees has joined the channel [08:42] daglees has joined the channel [08:42] isaacs: dspree: the registry format is specified and unlikely to change in any major way [08:43] dspree: k cool thanks [08:43] isaacs: dspree: the install script doesn't change much in theory, though there have been some recent updates for portabiilty [08:43] isaacs: dspree: if you run into issues with it, lmk [08:43] isaacs: i maintain it [08:43] dspree: nice thanks, oh yeah I have an idea of who you are... i think i saw you at nodejscamp [08:43] dspree: on [08:43] dspree: ustream [08:44] isaacs: kewl :) [08:44] dthompson has joined the channel [08:44] tmzt: isaacs: I got a weird error yesterday when /tmp was full [08:44] SubStack: ACTION sacrifices some package.jsons to the npm god [08:45] isaacs: tmzt: that would likely cause weird things to happ[en, yes [08:45] isaacs: tmzt: don't let that happen :) [08:45] tmzt: yeah but it was something like SomethingEvent doesn't have method end or destroy or whatever [08:45] SubStack: need to finish that telescreen thing then I'll be up to 15 [08:45] isaacs: tmzt: yeah, i fixed that. [08:45] tmzt: and then I saw that you had changed something recently and though I had some how upgraded npm [08:46] isaacs: tmzt: it was the calling .end() instead of .destroy() [08:46] tmzt: right, so the error changed from .end() to .destroy() [08:46] isaacs: oh... hrm. [08:46] isaacs: that's odd [08:46] isaacs: what version of node? [08:46] tmzt: node -v says v0.2.5 [08:47] isaacs: hm [08:47] isaacs: if you clear out /tmp does it work? [08:47] tmzt: yeah [08:48] tmzt: the bug I'm reporting is that it doesn't tell you /tmp is full :) [08:48] masahiroh has joined the channel [08:48] tmzt: I just happened to check that other wise I thought I was going crazy [08:51] pietern has joined the channel [08:51] teemow has joined the channel [08:54] Gruni has joined the channel [08:54] zentoooo has joined the channel [08:55] Gruni has joined the channel [09:00] jetienne has joined the channel [09:00] cafesofie has joined the channel [09:05] markwubben has joined the channel [09:06] cwo has joined the channel [09:07] romeo_ordos has joined the channel [09:07] romeo_ordos has left the channel [09:08] wycats: isaacs: hmm... located a bug... in Cygwin, printing "\r" is equivalent to printing a "\n" [09:08] wycats: this is not the case in Ruby [09:08] wycats: so it seems node-specific [09:09] isaacs: wycats: so you get two line feeds? [09:11] wycats: you're not supposed to get any [09:11] wycats: it's supposed to put the cursor back at position 1 on the first line [09:11] wycats: this is useful for printing progress bars for instance [09:11] isaacs: well, right [09:12] isaacs: so, printing \r\n should be just one linefeed, then go back tot he start of the line [09:12] wycats: right [09:12] wycats: and \r should just go back to the start [09:12] wycats: without a linefeed [09:12] isaacs: right [09:12] isaacs: in cygwin it doesn't do that? [09:13] wycats: right [09:14] wycats: at least not according to jdalton [09:22] augustl has joined the channel [09:26] fly__ has joined the channel [09:32] felixge_ has joined the channel [09:32] felixge_ has joined the channel [09:35] steffkes has joined the channel [09:38] aklt has joined the channel [09:44] _mql has joined the channel [09:44] adambeynon has joined the channel [09:49] cognominal has joined the channel [10:00] dthompson has joined the channel [10:03] okuryu has joined the channel [10:04] nilcolor has joined the channel [10:06] pgte has joined the channel [10:08] steffkes has joined the channel [10:09] nilcolor: whoa! a lot of Noders here! Hello everybody [10:11] augustl: ohai [10:14] paradoxx has joined the channel [10:14] paradoxx: greetings all [10:15] paradoxx: Would it be recommended to use node.js to build a restful API? [10:15] pgte: paradoxx: yes, definitely [10:16] SubStack: https://github.com/Marak/webservice.js [10:18] pgte: that's cool. sometimes I use express [10:18] paradoxx: pgte, SubStack thank you very much! [10:18] paradoxx: pgte, Could you tell me some more about express? [10:18] pgte: http://expressjs.com/ [10:19] RichardJ: good morning everyone :) [10:19] paradoxx: pgte, SubStack Would would be the benefit of using node.js as opposed to some other approach? [10:19] pgte: depends on the other approach [10:20] pgte: but I like node because it's fast, scales well, and it's easy to develop on [10:20] RichardJ: and it's javascript [10:20] RichardJ: which is cool [10:21] SubStack: and you don't have to fuck with threads to get concurrency [10:21] pgte: yup, makes concurrent programming really easier [10:21] RichardJ: even better, you don't have to fuck with a lot of things :) [10:21] paradoxx: So you would recommend it over say pyramid in python etc? [10:22] paradoxx: or django etc [10:22] pgte: in my opinion, definitely [10:22] RichardJ: it depends on how much visitors you want to handle and the language your comfortable with [10:22] pgte: Rails and Ruby pay my bills, but I'm waiting for the day I can do node.js all day [10:23] paradoxx: The guys i'm working with are def most comfortable with JS, php, html [10:23] RichardJ: well, that sounds like me [10:23] paradoxx: I'm a fan of python + pyramid etc, but with the timeline we have I'd rather keep learning curves lower [10:24] pgte: of course, if it's something you are used to and you don't have big scaling issues, go with what you know [10:24] RichardJ: but in that case i'd definitely go for node.js [10:24] paradoxx: Plus I've been watching node.js and I really just want to bite the bullet :D [10:24] pgte: but I find node.js also alleviates deployment [10:24] pgte: compared with Rails, for instance [10:25] paradoxx: pgte, How so? Just in relation to scaling? [10:25] pgte: no pre-forking fast-cgi server pool [10:25] paradoxx: ahh [10:25] pgte: just one process [10:25] pgte: or more (if you use spark(2) or fugue) [10:26] paradoxx: Are there any issues with hosting? [10:27] pgte: you don't find many "native" hosters, like you have for tcp [10:27] pgte: but you can easily set node up on a VPS or Amazon EC2 [10:27] pgte: but there are some cool hosting services coming [10:27] paradoxx: coolie. I'm more inclined to Amazon EC2 [10:27] paradoxx: Awesome. I'm quite excited [10:27] pgte: Heroku and joyent no.de [10:28] fermion has joined the channel [10:30] paradoxx: kk, outside of the website do you guys recommend any other really good resources for getting started? [10:31] pgte: http://nodetuts.com [10:31] pgte: http://howtonode.org [10:31] felixge has joined the channel [10:32] paradoxx: Thank you! [10:34] naneau has joined the channel [10:35] felixge_ has joined the channel [10:35] felixge_ has joined the channel [10:36] naneau has joined the channel [10:40] steffkes has joined the channel [10:43] mikedeboer has joined the channel [10:46] oal has joined the channel [10:48] steffkes has joined the channel [10:49] matjas: does npm allow multiple owners for a project? [10:51] stride: publishing is tied to a single account I believe [10:52] matjas: too bad :( [11:07] confoocious has joined the channel [11:07] confoocious has joined the channel [11:11] tjholowaychuk has joined the channel [11:12] herbySk has joined the channel [11:15] matjas: filed an issue here: https://github.com/isaacs/npm/issues/issue/465 Hopefully isaacs will consider implementing this. [11:15] matjas: ♥ npm [11:19] mr_daniel has joined the channel [11:23] stagas has joined the channel [11:26] andrewfff has joined the channel [11:30] RichardJ: really, i don't like npm at all... simple reason: the author says you shouldn't use semicolons [11:31] tjholowaychuk: what a naive thing to say [11:31] RichardJ: wait 'till you've seen the problems it causes. [11:31] RichardJ: and believe me, it does [11:31] tjholowaychuk: haha [11:31] tjholowaychuk: yeah.. [11:31] RichardJ: besides that, it frustrates the compiler [11:31] tjholowaychuk: no... no it does not [11:32] RichardJ: strictly speaking, every missing semicolon is a syntax error [11:32] RichardJ: have you done a major in computer science? [11:32] tjholowaychuk: I have written many languages. its called a grammar, you can OMIT semicolons, its part of the damn grammar lol [11:32] tjholowaychuk: so stupid complaining [11:33] RichardJ: *sigh* [11:33] tjholowaychuk: stop* [11:33] RichardJ: no, it really isn't [11:33] tjholowaychuk: tired [11:33] tjholowaychuk: haha [11:33] RichardJ: :) [11:33] RichardJ: that is error recovery working for you :) [11:33] tjholowaychuk: there; we; go; [11:34] RichardJ: but anyway, that's besides the point [11:34] tjholowaychuk: the point is it is useless to bitch about [11:34] tjholowaychuk: when its a design choice [11:34] tjholowaychuk: and its in the grammar, so its not a syntax error [11:34] tjholowaychuk: otherwise... it would be a syntax error [11:34] RichardJ: hmm, but it can still be a bad design :) [11:35] tjholowaychuk: sure call it whatever you want [11:35] RichardJ: it was an error to even put it in the language, mostly so beginners wouldn't have to struggle with semicolons [11:35] tjholowaychuk: TONS of languages allow semicolons as statement terminators, or newlines, there is no "omission" its simply one or the other [11:36] RichardJ: not in javascript, that's not how it works [11:37] RichardJ: alert [11:37] RichardJ: (true); [11:37] RichardJ: that would a label alert and a value true then? [11:37] RichardJ: no, it alerts "true" [11:38] RichardJ: because the newline is only a terminator when it would otherwise cause a syntax error [11:38] tjholowaychuk: im speaking in generalities, the fact is it is part of a spec, and really not much of a mind fuck at all so who cares [11:38] RichardJ: and that's the problem right there, it's ambigious [11:38] tjholowaychuk: its easy to implement [11:38] tjholowaychuk: read v8s parser, its not that bad [11:38] RichardJ: of course, error recovery isn't hard to implement [11:39] tjholowaychuk: k im done lol to early for complaining [11:39] RichardJ: early? :p [11:39] RichardJ: it's 12:39 here :) [11:39] tjholowaychuk: 3am [11:39] RichardJ: hahaha [11:40] RichardJ: don't think i'm a jerk, i'm just a purist :) [11:40] tjholowaychuk: i just think its a really dumb thing to argue [11:41] tjholowaychuk: a language is nothing more than it is allowed to be, so anything it is, is what it was designed to be lol so who cares [11:41] tjholowaychuk: thats like saying omitting {} confuses the parser [11:41] tjholowaychuk: because it requires some extra logic [11:41] RichardJ: sure, but because allows something doesn't mean it's "good" to do. [11:41] RichardJ: that's like saying IEEE floats are good [11:41] RichardJ: because JS uses them [11:42] tjholowaychuk: no, but you can, and in most cases its not a big deal [11:42] tjholowaychuk: 99% of the js I have seen is ugly as fuck anyway [11:42] tjholowaychuk: no one cares about that [11:42] tjholowaychuk: I personally do [11:42] RichardJ: yeah, oke, 1-0 for you there [11:42] tjholowaychuk: but most people dont [11:43] RichardJ: that's actually something i've been speaking on conferences about here in holland [11:43] RichardJ: but the most beautiful parts of JS is mostly forgotten... closure. [11:44] tjholowaychuk: how are closures forgotten? [11:44] RichardJ: most people don't realize the power of closure [11:44] Ezku\: most people don't know how to program [11:44] RichardJ: last year i did a talk here in holland at one of the largest events [11:45] RichardJ: all webdevelopers, pretty good ones actually [11:45] tjholowaychuk: i see [11:45] RichardJ: but no-one of them had ever heard of closures [11:45] SubStack: extra extra closures neglected in languages that have them [11:45] SubStack: javascript doesn't actually have the problem [11:45] SubStack: other languages? sure [11:53] thinkingpotato has joined the channel [11:55] stephank has joined the channel [12:09] KUHRT has joined the channel [12:18] Blink7 has joined the channel [12:23] paulrobinson has joined the channel [12:23] hasenj has joined the channel [12:25] pyrotechnick has joined the channel [12:27] herbySk has joined the channel [12:28] _mql has joined the channel [12:29] eee_c has joined the channel [12:31] linac has joined the channel [12:34] tmzt: is there any way to delete a key from a javascript array, delete only seems to delete the value [12:35] d0k has joined the channel [12:36] pgte: you should use something like array.splice [12:36] pgte: array.splice(pos, length) [12:36] pgte: the array reorganizes itself then [12:37] tmzt: confused as to how I should use splice [12:38] tmzt: oh, ok [12:38] pyrotechnick: tmzt: can u use an external library in your app [12:38] tmzt: yeah [12:39] pyrotechnick: ok use underscore [12:39] pyrotechnick: itll be like [12:39] tmzt: what is that [12:39] pyrotechnick: its a utility library to make javascript suck less [12:39] pyrotechnick: itll be like [12:39] pyrotechnick: _.without(haystack, needle) [12:39] pyrotechnick: http://documentcloud.github.com/underscore/ [12:39] pyrotechnick: are u using coffeescript? [12:39] pyrotechnick: or javascript? [12:40] pyrotechnick: you could also use mootools or jquery, mootools is abit nicer it extends arrays [12:40] pyrotechnick: so its like [12:40] tmzt: haven't looked at coffeescript yet [12:40] pyrotechnick: [1, 2, 3].remove(3) [12:40] pyrotechnick: gives [1, 2] [12:40] tmzt: looks like splice will do what I want and should be fast [12:40] pyrotechnick: yeah it will [12:41] pyrotechnick: if your stuff is index based then use splice [12:41] tmzt: it was giving back [null, {id: 1}] [12:41] pyrotechnick: but i prefer underscore or mootools extensions for doing search and removes [12:41] tmzt: and breaking the client [12:41] pyrotechnick: dunno what that is [12:41] tmzt: it's index based since I'm using for(k in a) on the client [12:43] pyrotechnick: awesome [12:45] eee_c has joined the channel [12:45] rmurphey has joined the channel [12:45] frodenius: felix giving a talk @ 27c3 [12:45] frodenius: http://saal2.h264.27c3.fem-net.de/ [12:47] tmzt: oh of course, splice is going to change the indexes [12:47] pyrotechnick: if u dont want the index to change [12:47] pyrotechnick: just do [12:47] pyrotechnick: delete my_array[INDEX] [12:47] pyrotechnick: or set it to null [12:48] pyrotechnick: the whole idea of splic [12:48] pyrotechnick: is to change the indexes [12:48] pyrotechnick: but i think u just want [12:48] pyrotechnick: delete handle{OFFSET} [12:48] tmzt: that's what I had [12:48] tmzt: that broke because the client was still going through the foreach and seeing null [12:49] tmzt: that's okay though, I'll just check if it's null [12:49] pyrotechnick: yep [12:49] pyrotechnick: sounds good [12:51] romeo_ordos has joined the channel [12:51] romeo_ordos has left the channel [12:52] sveimac has joined the channel [12:57] fangel has joined the channel [12:58] eee_c has joined the channel [13:00] ianward has joined the channel [13:00] pyrotechnick has joined the channel [13:07] webr3 has joined the channel [13:10] sudoer has joined the channel [13:13] sveimac has joined the channel [13:14] aristidesfl has joined the channel [13:14] aristidesfl: helllo [13:15] faust45 has joined the channel [13:16] rchavik has joined the channel [13:22] liar has joined the channel [13:23] eee_c has joined the channel [13:24] ajpiano has joined the channel [13:24] bsstoner has joined the channel [13:25] sudoer has joined the channel [13:25] PyroPeter has joined the channel [13:28] herbySk has joined the channel [13:28] mikew3c_ has joined the channel [13:33] arpegius has joined the channel [13:33] mraleph has joined the channel [13:35] nilcolor: Hello. Can somebody points me to some good node.js + mongodb tuts? Say something like [realtime] analytics etc.? [13:36] boaz has joined the channel [13:37] codehero has joined the channel [13:37] codehero: Hi all, is there any way to read the monotonic clock within node? [13:37] eee_c has joined the channel [13:37] stagas: yay npm package docs with comments http://nodejs.eu [13:38] daglees__ has joined the channel [13:41] mauritslamers has joined the channel [13:42] meso has joined the channel [13:48] pgte: stagas: cool [13:56] caligula has joined the channel [13:57] [[zz]] has joined the channel [14:01] boaz has joined the channel [14:03] sivy has joined the channel [14:04] jchris has joined the channel [14:06] jchris1 has joined the channel [14:08] tjholowaychuk has joined the channel [14:10] tg has joined the channel [14:10] MattJ has joined the channel [14:11] niclone has joined the channel [14:11] boaz has joined the channel [14:12] derren13 has joined the channel [14:13] tjholowaychuk has joined the channel [14:13] opengeard has joined the channel [14:22] polotek has joined the channel [14:24] borior has joined the channel [14:24] borior: hi all, is there any way I can set the value of the `this` object for a Script.runInNewContext call? [14:24] pyrotechnick: bind it? [14:25] pyrotechnick: in coffee u wud use => [14:25] pyrotechnick: in jquery .bind() [14:25] borior: pyrotechnick: umm, I'm not sure you know what I'm talking about. [14:25] borior: Script.runInNewContext takes a *string* of Javascript [14:26] borior: and a context object which provides variables that are available when that js is evaluated [14:26] pyrotechnick: right i read it wrong [14:26] pyrotechnick: sorry no idea [14:27] pyrotechnick: its in the docs bro [14:27] pyrotechnick: did u even read em? [14:27] pyrotechnick: Script.runInNewContext(code, [sandbox], [filename]) [14:27] pyrotechnick: Script.runInNewContext compiles code to run in sandbox as if it were loaded fromfilename, then runs it and returns the result. Running code does not have access to local scope and the object sandbox will be used as the global object for code. sandbox andfilename are optional. [14:27] pyrotechnick: sandbox [14:27] borior: pyrotechnick: before you insult me why don't you check it out for yourself [14:27] pyrotechnick: this is the sandbox [14:28] borior: pyrotechnick: no it's not [14:29] pyrotechnick: insult you haha [14:29] pyrotechnick: harden up mate [14:29] borior: pyrotechnick: no, I'm wrong, anyway [14:29] borior: so apologies [14:29] pyrotechnick: meh [14:29] borior: I know how to set the context, my issue is more subtle it'd seem [14:29] pyrotechnick: karma mate [14:32] bsstoner has joined the channel [14:34] rwaldron has joined the channel [14:34] pandark_ has joined the channel [14:35] unomi has joined the channel [14:42] ajpiano has joined the channel [14:43] nolan_d has joined the channel [14:46] tjholowaychuk has joined the channel [14:47] sveimac has joined the channel [14:49] paulrobinson has joined the channel [14:51] aheckmann has joined the channel [14:52] pHcF has joined the channel [14:56] tjholowaychuk has joined the channel [14:57] stride: meh. missed felixge's talk.. [14:58] pgte has joined the channel [14:59] Yuffster has joined the channel [14:59] ysynopsis has joined the channel [15:08] derren13 has joined the channel [15:09] femtoo has joined the channel [15:09] trotter has joined the channel [15:12] jakehow has joined the channel [15:14] akahn has joined the channel [15:16] UHMA has joined the channel [15:17] tjholowaychuk: stride: what was he talking about [15:17] tjholowaychuk: anything specific? or just node [15:20] UHMA: anyone interested in checking out what I'm working on, please let me know what you think: http://slashjoin.com/ [15:22] themiddleman has joined the channel [15:23] muhqu_ has joined the channel [15:25] virtuo_: hi, I have a problem with the crypto module: when using "hex" as output_encoding I can crypt-decrypt and then I have the original string, but when using "base64" as output_encoding, the original string is altered (but have some similarities). Here is a gist: https://gist.github.com/757317 . If someone could have a look, I'd be more then pleased :) [15:26] Me1000 has joined the channel [15:28] ceej has joined the channel [15:28] Mulleteer has left the channel [15:30] stride: tjholowaychuk: http://events.ccc.de/congress/2010/Fahrplan/events/4142.en.html intro to node only I guess. I was interested in the Q&A though [15:30] stride: but I think they're publishing the videos some time afterwards as well [15:30] rjack: UHMA: cool [15:31] mauritslamers has joined the channel [15:31] sveimac has joined the channel [15:31] UHMA: rjack: thanks! [15:31] UHMA: we're trying to figure out how to make it more useful [15:32] tjholowaychuk: UHMA: another thing that might be cool if it would work ok, is to make the text you type by the cursor instead of going back to the chat log all the time [15:34] stride: would be nice to be able to move the chat window as well, nice thing anyway :) [15:34] UHMA: tjholowaychuk: i experimented with that originally, before we had chat, it was a little awkward but I might try it again [15:35] UHMA: stride: like ability to just drag it around ? [15:35] nefD: UHMA: one thing I could see this being useful for is QA, or demoing, or discussing sites/apps amongst remote teams [15:36] stride: UHMA: that or just a switch to put it to the left side or something, so it's visible without blocking that space (on a netbook here it takes away almost 1/4th of the width) [15:36] nefD: UHMA: especially if there were more ways to notate the content (and more support for altering those notations, ie: modifying comment content and location, that sort of thing) [15:37] nefD: i dont think i'd end up using this to 'socially browse' anything with anyone else (then again, i'm not a big 'social' app or site user), but i can definitely see myself using something like this to bounce ideas off of one of my co workers if they weren't in the office [15:37] UHMA: nefD: great idea. the commenting needs a lot of work. [15:38] nefD: i see about 10 mouse cursors other than my own, but only '5 online' :P [15:39] UHMA: nefD: we're struggling to find the usefulness of it. we need to start focusing on a specific user group [15:39] UHMA: right now it's just a very general purpose tool [15:39] nefD: *nod* [15:40] nefD: might be good to branch out the base that you have (once you're 100% comfortable with the features that are alreasy in) and tailor the branch to specific groups [15:41] nefD: a version that had more notation features and worked across many browsers (and perhaps mobile devices) among other things would be great for the business type market [15:41] nefD: maybe something easier and more flyweight for more casual users.. hell, hop on the bandwagon of implementing game mechanics to a non-game oriented app, maybe [15:42] UHMA: i used it to show a client their new design and it was super handy for that [15:42] nefD: yeah, very similar to the way which i'd likely be using it, personally [15:42] UHMA: re: game mechanics, we've got some ideas along those lines but still pondering [15:44] ben_alman has joined the channel [15:46] rwaldron has joined the channel [15:47] ben_alman has joined the channel [15:48] BuddyLee has joined the channel [15:48] BuddyLee: Hello everyone. [15:49] BuddyLee: I am trying to build nodejs [15:49] BuddyLee: on windows/cygwin [15:49] BuddyLee: I am getting an error: [15:50] BuddyLee: anybody know why this is happening? [15:50] BuddyLee: Error, "/apps/node/wscript:173: error: could not configure a cxx compiler!" [15:50] drudge: BuddyLee: did you install gcc? [15:50] BuddyLee: I thought so, let me double check [15:50] boaz has joined the channel [15:51] BuddyLee: do you have an app that keeps you signed in all day? [15:51] drudge: yes [15:52] BuddyLee: I checked and I have gcc - 3.4.4-999 [15:52] arpegius has joined the channel [15:52] losing has joined the channel [15:52] BuddyLee: If you don't mind me asking, what app? [15:52] drudge: znc + Linkinus [15:52] BuddyLee: I'll check it out. [15:52] rpflo has joined the channel [15:53] kennon has joined the channel [15:54] fly-away has joined the channel [15:55] bsstoner has left the channel [15:56] dguttman has joined the channel [15:57] boaz has joined the channel [15:58] nilcolor: Hello. Can somebody points me to some good node.js + mongodb tuts? Say something like [realtime] analytics etc.? (sorry repeat this one) [15:59] faust45 has joined the channel [16:00] beawesomeinstead has joined the channel [16:01] Sembiance: nilcolor: sorry, don't know of any myself. I use node.js + redis [16:02] nilcolor_ has joined the channel [16:02] Sembiance: _nilcolor: sorry, don't know of any myself. I use node.js + redis [16:05] dmcquay has joined the channel [16:06] sonnym has joined the channel [16:07] herbySk has joined the channel [16:07] papandreou has joined the channel [16:08] BuddyLee: Does anyone know why nodejs won't compile on my windows/cygwin install, getting the following, "/apps/node/wscript:173: error: could not configure a cxx compiler!" [16:08] BuddyLee: gcc is installed [16:09] case__: and g++ ? [16:11] papandreou: I'm having some troubles with pausing/resuming a fs.ReadStream. Is there any obvious reason why this would cause a "Bad file descriptor" error? https://gist.github.com/73e60e68d77ee94f2ca9 [16:12] papandreou: I'm using node v0.2.5 on Ubuntu. Tried the bleeding edge version from github with the same result. [16:13] pgte: you can get that error if you try to read after you closed the file [16:15] pgte: why would you pause and resume on the same loop? [16:16] papandreou: pgte: That's not what I did originally, I just created a minimal test case :) [16:16] pgte: looks like a node bug [16:17] BuddyLee: case__, let me double check [16:17] papandreou: pgte: My troubles started when I tried to use fs.ReadStream and fs.WriteStream with sys.pump. I narrowed it down to sys.pump calling resume() on the stream. [16:18] pgte: @papandreou: I'm not grasping how the calls would happen on the same loop [16:18] akahn has left the channel [16:18] boaz__ has joined the channel [16:18] pgte: what happens if you put the resume inside a process.nextTick() ? [16:18] BuddyLee: case__, g++ is insatlled as well [16:19] BuddyLee: I followed this doc - https://github.com/ry/node/wiki/Building-node.js-on-Cygwin-%28Windows%29 [16:19] BuddyLee: And if all else fails, I'll build it on Ubuntu tonight ;) [16:20] papandreou: pgte: Ah, that helps a lot. [16:21] pgte: papandreou: that's probably a node bug, you should file it [16:22] papandreou: pgte: Ok, I will. Thanks :). [16:23] ryanfitz has joined the channel [16:24] softdrink has joined the channel [16:25] rpflo has joined the channel [16:31] pgte: Node Tuts episode 15 is out - Deploying to Joyent no.de - http://nodetuts.com/tutorials/15-deploying-to-node.html [16:33] drudge: totally loving my new vim config: http://cloud.penree.com/3nTV [16:33] pgte: pretty cool, looks almost like my textmate :P [16:34] thinkingpotato has joined the channel [16:34] davglass has joined the channel [16:34] nefD: drudge: nice :D looks similar to mine, but i've also got nerdtree running on the right side [16:34] drudge: i'm just using command-t for file selection [16:35] nefD: i just like having a navigable tree open, plus nerdtree has a lot of nice configuration options [16:35] Me1000 has joined the channel [16:36] beta__ has joined the channel [16:38] nonnikcam has joined the channel [16:42] briznad has joined the channel [16:47] SamuraiJack has joined the channel [16:48] juye has joined the channel [16:49] juye has left the channel [16:50] Aria has joined the channel [16:52] juye has joined the channel [16:55] namelessnotion has joined the channel [16:57] augustl has joined the channel [17:02] hobodave has joined the channel [17:04] mauritslamers has joined the channel [17:06] stephank has joined the channel [17:07] Rixius has joined the channel [17:07] Rixius has left the channel [17:09] Hello71 has joined the channel [17:09] Hello71 has joined the channel [17:12] gf3 has joined the channel [17:14] yozlet has joined the channel [17:16] amerine has joined the channel [17:21] qFox has joined the channel [17:21] mbrochh has joined the channel [17:22] femtoo has joined the channel [17:24] cagdas has joined the channel [17:26] JusticeFries has joined the channel [17:26] robotarmy has joined the channel [17:29] gf3 has joined the channel [17:35] msekimura has joined the channel [17:35] psi0nik has joined the channel [17:38] tjholowaychuk: drudge: is it possible to tweak the UI? I wouldnt mind removing the buttons on the bottom left/right [17:41] tjholowaychuk: drudge: chill pill looks cool too, wouldnt mind trying that out, my google reader is such a mess hahaa [17:41] tjholowaychuk: huuuge mess [17:42] boaz has joined the channel [17:42] broofa has joined the channel [17:42] ben_alman has joined the channel [17:44] hunterloftis has joined the channel [17:44] psi0nik has left the channel [17:45] fictorial has joined the channel [17:45] slloyd has joined the channel [17:46] isaacs has joined the channel [17:46] svens has joined the channel [17:46] isaacs: stagas: !!! [17:47] isaacs: nice!!! [17:47] isaacs: http://nodejs.eu/ is you, right? [17:47] stagas: isaacs: yeah in a few minutes I'll have a newer version up with lots of more goodies :) [17:47] isaacs: stagas: how are you doing password resetting? you don't have access to the couchapp, do you? [17:47] hunterloftis: tjholowaychuk: I'm putting a layer above express like server.map('get', '/some/:id/thing.format?', controller.action) - I want to expose "id" to controller.action like function(id) ... should I be looking in connect or express for the :url parsing stuff? [17:48] stagas: isaacs: it's not logging in to npm, I have a separate authorization module [17:48] isaacs: stagas: ah. that's... confusing. [17:48] isaacs: stagas: i think reid burke was working on a password reset thing that actually creates an account on the npm registry, resets the account, etc. [17:49] tjholowaychuk: hunterloftis: you can access them via req.params [17:49] tjholowaychuk: I have an mvc example in the repo [17:49] tjholowaychuk: might help a bit [17:49] saschagehlich has joined the channel [17:49] hunterloftis: tjholowaychuk: I think my q was too vague - I need to find the query parsing function so I can duplicate/use it to figure out how req.params is populated [17:49] stagas: isaacs: dunno maybe it can be integrated with npm login haven't thought of it :) [17:50] tjholowaychuk: hunterloftis: you could use app.all(route) and map all the methods to a controller, with action based on the method etc [17:50] isaacs: stagas: anyway, it's cool seeing it in a more modern styling. [17:50] stagas: isaacs: in a few minutes I'll be able to talk I'm finishing the newer one [17:50] benburkert has joined the channel [17:50] tjholowaychuk: hunterloftis: ah, its privatized in router.js (connect) [17:50] stagas: :) [17:50] isaacs: kewl :) [17:50] isaacs: stagas: i'm gonna head into the city in a little bit, i'll be online later on. [17:50] hunterloftis: tjholowaychuk: Perfect, thanks. I've already got a rails-y mvc running well but I want to make it easier to use custom actions [17:51] stagas: isaacs: ok [17:51] tjholowaychuk: hunterloftis: cool man. this was pretty much the bulk of that in the example https://github.com/visionmedia/express/blob/master/examples/mvc/mvc.js#L74-110 [17:51] tjholowaychuk: nothing fancy [17:52] tjholowaychuk: possibilities are endless :) [17:52] psi0nik has joined the channel [17:53] tjholowaychuk: hunterloftis: then I proxy res.render() to direct the view paths making them more friendly and relative to the controller [17:53] hunterloftis: tjholowaychuk: Yep, that's really similar to the implementation I've done for app.resource('resourcename') <-- instant RESTful CRUD. But limited :/ [17:53] psi0nik has left the channel [17:53] tjholowaychuk: yeah thats why I dont like implementing mvc frameworks [17:53] tjholowaychuk: always to limiting [17:53] tjholowaychuk: best to just create what you need IMO [17:54] hunterloftis: tjholowaychuk: I liked your view proxy, but I hate frameworks that limit how "deep" you can get with your code [17:54] pekim has left the channel [17:54] hunterloftis: So I'm not building any kind of framework [17:54] hunterloftis: Just a bit of express middleware that makes mvc routing an easy option [17:54] tjholowaychuk: isaacs: I tried npm init today :) slick stuff haha, I like how it finds the version etc, good stuff [17:54] isaacs: tjholowaychuk: neat :) [17:54] isaacs: tjholowaychuk: hey, any chance i could convince you to rename "markdown" to "discount"? [17:55] tjholowaychuk: hunterloftis: definitely [17:55] tjholowaychuk: isaacs: ah yeah sure [17:55] isaacs: tjholowaychuk: it'd be more obvious that it requires the discount binary, i think [17:55] pyrotechnick: isaacs: https://github.com/feisty/courier [17:55] tjholowaychuk: isaacs: ya im cool with that [17:55] tjholowaychuk: ill update the readme [17:55] tjholowaychuk: woah it still mentions kiwi haha [17:55] tjholowaychuk: old [17:56] isaacs: tjholowaychuk: haha. cool, just change the name in teh package.json and re-publish. [17:56] tjholowaychuk: will do [17:56] jpld has joined the channel [17:56] pekim has joined the channel [17:56] isaacs: i'm gonna give ashb the "markdown" since the one he and evilstream have been working on is one of the most "advanced" markdown js libs. [17:56] stagas: isaacs: new one up, hard refresh [17:57] pyrotechnick: it would be cool to make a gui for npm init in express [17:57] isaacs: pyrotechnick: good idea! you should do that! [17:57] isaacs: :) [17:57] tjholowaychuk: isaacs: yeah thats cool. its slow, but hell I dont think people really use it for anything but docs anyway [17:57] isaacs: pyrotechnick: also, a way to pick dependencies (and maybe guess at them?) would be pretty awesome. [17:57] isaacs: tjholowaychuk: yeah [17:57] pyrotechnick: isaacs: yeah that would be freaking sweet [17:58] pyrotechnick: guessing wouldnt be too hard [17:58] isaacs: tjholowaychuk: my current issue is that discount doesn't seem to work easily on solaris [17:58] dguttman has joined the channel [17:58] tjholowaychuk: isaacs: ah lame :( [17:58] isaacs: pyrotechnick: yeah, the tricky bit is just figuring out the UI flow. [17:58] pyrotechnick: just regex for require() without a prefix [17:58] isaacs: npm init doesn't have to be perfect, it just has to make kinda likely guesses. [17:59] pyrotechnick: i make alot of projects [17:59] isaacs: but i mean, it'd be good to look up on the registry to get the available versions, and ask the user what versions work with their lib, validate it, show them the results, etc. [17:59] pyrotechnick: so its something close to my heart [17:59] isaacs: yeah, i bet :) [17:59] pyrotechnick: we're making an MMO in node.js/WebGL written in coffeescript [18:00] pyrotechnick: npm has been brilliant [18:00] pyrotechnick: so thankyou [18:00] isaacs: pyrotechnick: thanks :) [18:00] pyrotechnick: did u see courier [18:00] tjholowaychuk: isaacs: k I changed it [18:00] isaacs: tjholowaychuk: nice, thanks :) [18:00] pyrotechnick: isaacs: so there's a sweetarsed markdown npm? [18:01] pyrotechnick: i kinda wish npm was named kiwi or something "branded" [18:01] isaacs: pyrotechnick: npm is branded. [18:01] isaacs: it's the node package manager. [18:01] pyrotechnick: but like [18:01] tjholowaychuk: its this one right? https://github.com/evilstreak/markdown-js [18:01] pyrotechnick: what is a package called [18:01] isaacs: tjholowaychuk: yeah, i'm gonna get ash to rename it to just "markdown" [18:01] pyrotechnick: its not something "cool" like a gem or seed [18:01] isaacs: pyrotechnick: well, ruby and python are cooler languages. [18:02] pyrotechnick: hey man [18:02] pyrotechnick: dont lie [18:02] isaacs: pyrotechnick: js is more like perl. it Just Does Stuff. [18:02] tjholowaychuk: haha parsing yaml with a shell script was such a bitch [18:02] pyrotechnick: #node.js is a place for the truth [18:02] isaacs: cpan packages aren't cool. [18:02] isaacs: they're just packages. [18:02] pyrotechnick: isaacs: you're kidding right? [18:03] isaacs: they're not even "packages", per se, they're just modules [18:03] pyrotechnick: mmm [18:03] pyrotechnick: this is true [18:03] tjholowaychuk: isaacs: oh ya I wanted to ask, what do you suggest for exposing all of these to require() via npm? https://github.com/visionmedia/express-contrib/tree/master/lib [18:03] pyrotechnick: at first i thort a package manager was OK [18:03] pyrotechnick: but then i realised they are just modules like u say [18:03] pyrotechnick: but they have dependencies to build and do other things [18:03] pyrotechnick: so its OK once again [18:03] isaacs: tjholowaychuk: so, this is the issue that i was talking about with plugins, i think [18:04] tjholowaychuk: isaacs: its just that I want to expose them all, not just require('express-contrib') [18:04] isaacs: tjholowaychuk: as it is, if "lib" is your lib dir, then you'll get require("express-contrib/express-configure") [18:04] tjholowaychuk: well both that and each individual one [18:04] tjholowaychuk: damn [18:04] tjholowaychuk: hmm [18:04] isaacs: tjholowaychuk: yeah, npm namespaces on the name of the package. [18:04] isaacs: tjholowaychuk: whatever's in your lib dir gets that treatment. if you prefer, you can have more fine-grained control with the "modules" hash [18:05] isaacs: {"name":"baz", "modules":{"foo":"./lib/bar"}} --> require("baz/foo") --> require("path/to/baz/package/lib/bar") [18:05] aklt has joined the channel [18:05] tjholowaychuk: hmm they have to be namespaced though? [18:05] isaacs: but that's basically just an implementation detail. most people prefer to have the filesystem be the api [18:06] beta___ has joined the channel [18:06] tjholowaychuk: with my own stuff I just expose that dir but I was not thinking about npm at the time [18:06] tjholowaychuk: and then realized it doesnt work to well haha [18:06] isaacs: yeah [18:06] tjholowaychuk: I guess I can just rename them an remove the "express-" [18:07] isaacs: just shoving the lib dir onto the require.paths is tricky. [18:07] isaacs: makes for a lot of collision opportunities, etc. [18:07] isaacs: what is require("utils"), etc. [18:07] tjholowaychuk: yeah definitely not a good idea [18:07] isaacs: require("npm/utils/...") is more clear [18:08] isaacs: tjholowaychuk: yeah, i think just removing the express- is probably best. [18:08] tjholowaychuk: yeah ill do that [18:08] isaacs: express-contrib/messages.js <-- not too awful [18:08] isaacs: the -contrib is a bit weird. it'd be nice if this was a plugin package that somehow just added these modules to express itself. [18:08] tjholowaychuk: some of them just monkey patch and dont really export anything which was why I had them the way they are [18:08] isaacs: what you really want is require("express/messages") [18:08] isaacs: ah, i see [18:09] isaacs: makes sense then why you'd put them in a separate thing, so most express users don't have to be surprised by monkey behavior. [18:09] tjholowaychuk: but they are small enough so I just chuck them in the same repo [18:09] pekim has joined the channel [18:09] tjholowaychuk: hmm [18:09] namelessnotion has joined the channel [18:09] isaacs: plugins are the next major hurdle after getting permissions sorted out. [18:10] mauritslamers has joined the channel [18:10] tjholowaychuk: yeah i wonder how well that would work, down the road if I added express/something it would clobber the plugin anyway [18:11] tjholowaychuk: so its kinda lame in that sense [18:11] tjholowaychuk: almost becomes equiv to ruby modules [18:11] isaacs: yeah [18:11] pekim has joined the channel [18:11] isaacs: it is not a very well understood problem. [18:11] isaacs: (by me) [18:11] isaacs: i just know that i really want npm to not be this one giant monolithic thing [18:11] isaacs: most people never publish with it, etc. [18:12] isaacs: and npm's reason for existence is to support itself :) [18:12] tjholowaychuk: thats the way to be [18:13] trotter has joined the channel [18:14] tjholowaychuk: I suppose I could have separate packages for them [18:14] tjholowaychuk: but test them all in the same repo [18:15] stagas: micro modules is the trend [18:15] tg has joined the channel [18:15] jesusabdullah: Like those really tiny toy cars [18:15] jesusabdullah: micromachines? [18:15] isaacs: tjholowaychuk: yeah, it can be kinda annoying to have like 10 different package.json files with just 3 lines each, but there's nothing wrong with it if you prefer it that way [18:16] isaacs: tjholowaychuk: then you can have the "express-contrib" package just depend on all of them [18:16] isaacs: ok, i gotta run [18:19] wookiehangover has joined the channel [18:22] mikeal has joined the channel [18:22] cheney has joined the channel [18:23] cheney: If I have a file named prettydiff.js in a directory called prettydiff [18:23] cheney: would I access the file by resolve('/path/prettydiff/prettydiff'); [18:25] cheney: I want to use an absolute path from root instead of a relative path [18:25] wookiehangover: that's silly dawg [18:25] pyrotechnick: i have code like this right [18:25] pyrotechnick: for issue in issues [18:25] pyrotechnick: info = new google.maps.InfoWindow [18:25] pyrotechnick: content: """

#{issue.title}

#{issue.description}""" [18:25] pyrotechnick: [18:25] pyrotechnick: marker = new google.maps.Marker [18:25] pyrotechnick: position: new google.maps.LatLng issue.latitude, issue.longitude [18:25] pyrotechnick: map: map [18:25] stagas: http://nodejs.eu [18:25] pyrotechnick: title: issue.title [18:25] pyrotechnick: google.maps.event.addListener marker, 'mouseover', -> [18:25] pyrotechnick: info.open map, marker [18:25] pyrotechnick: but in the end every marker is assigned the same info [18:26] wookiehangover: but pyrotechnick pastebin, yo [18:26] MattJ: ACTION hands pyrotechnick a flameproof suit [18:26] pyrotechnick: man its not that big settle down [18:26] Aria: Dude, that's huge. Also, impossible to copy and paste to replicate a problem. [18:26] pyrotechnick: get a decent client... [18:27] Aria: ENOMINIMUMEFFORT [18:27] wookiehangover: its called decorum, ass [18:27] pyrotechnick: its called innovation [18:27] cheney: pyrotechnick: http://prettydiff.com/?pastebin [18:27] pyrotechnick: and progress [18:27] pyrotechnick: and why the fuck [18:28] pyrotechnick: would anyone want to attempt to copy and paste that [18:28] cheney: that will beautify your code and submit it to Pastebin for you [18:28] pyrotechnick: its coffeescript and all the variables arent provided in the snippter [18:28] pyrotechnick: fucking noobs [18:28] wookiehangover: ACTION facepalm [18:28] Aria: ACTION rolls her eyes and goes back to hacking on things. [18:29] pyrotechnick: aria this isnt RP [18:29] cheney: hey guys, how do I resolve a module with the same name as its containing directory? [18:29] Aria: Life is RP. [18:29] cheney: would I access the file by resolve('/path/prettydiff/prettydiff'); ? [18:29] pyrotechnick: lulz [18:29] Aria: Yeah. [18:29] bingomanatee_: Is there any way of copying a file from one path to another that is simpler than linked read/write streams? [18:29] pyrotechnick: why is it only the insane are active in this channel [18:30] stagas: cheney: you do: var prettydiff = require('/path/prettydiff/prettydiff'); [18:30] Aria: Nope, bingomanatee. [18:30] bingomanatee_: thx [18:30] pyrotechnick: bingomanatee: [18:30] pyrotechnick: exec 'cp SOURCE DESTINATION' [18:31] Aria: (could wrap up a few of those functions and publish 'em ... it'd be generally useful.) [18:31] Aria: ACTION hands pyrotechnick a file named "yourmother;rm -rf /" [18:31] pyrotechnick: there are a few golden rules of POSIX [18:31] pyrotechnick: one is have a program do a single purpose [18:31] pyrotechnick: the other is to use text files [18:31] pyrotechnick: the other is dont reinvent the wheel [18:32] pyrotechnick: cp does file copying just fine [18:32] pyrotechnick: theres no need to do it in node with linked streams [18:32] pyrotechnick: unless [18:32] pyrotechnick: you actually want to manipulate that stream [18:32] pyrotechnick: anyone who disagress doesnt deserve POSIX and can go back to windows [18:32] Aria: Sure, if you like a lack of completion events, no access to the actual errno, and the cost of shelling out, and the hassle of quoting. [18:32] pyrotechnick: then spawn a child process [18:33] pyrotechnick: and u get all the information you mentioned isnt available [18:33] Aria: ECITATIONNEEDED [18:33] wookiehangover: Aria: don't feed the trolls [18:33] Aria: Yeah, I'm out of practice. &ignore; ... THis channel's usually so good. [18:34] Aria: My penance shall be closing an open issue in code I wrote. [18:34] wookiehangover: what are you working on? [18:34] pyrotechnick: ahaha you label me as a troll for trying to stop you from rewriting `cp` [18:35] pyrotechnick: insane [18:35] wookiehangover: no, I label you a troll for not knowing how to use pastebin and then having attitude about it [18:35] Aria: Today, the html5 parser. [18:35] aristidesfl has left the channel [18:35] wookiehangover: Aria: killer. on github? [18:35] aristidesfl has joined the channel [18:35] tjholowaychuk: pyrotechnick: I wouldnt trust exec() really, depends what you are doing [18:35] aristidesfl: peca [18:35] tjholowaychuk: I do it lots for setup scripts n shit [18:35] pyrotechnick: n shit [18:35] tjholowaychuk: but that is something the user is running willingly [18:35] pyrotechnick: mate i know how to use a pastebin just fine [18:35] pyrotechnick: i just dont think that code warranted it [18:36] Aria: Yep, https://github.com/aredridel/html5/ [18:37] sveimac has joined the channel [18:37] mikeal has joined the channel [18:38] bingomanatee_: Aria === Aredridel? [18:38] Aria: Yes. [18:38] pyrotechnick: i dont get what is HTML5 about a HTML parser [18:38] pekim has joined the channel [18:39] bingomanatee_: how ready for use is node-irc? [18:39] wookiehangover: is there a node equivalent of bundler? [18:39] Aria: It kinda works. I need another chunk of time to polish it. [18:39] tjholowaychuk: wookiehangover: npm bundle [18:39] wookiehangover: tks [18:39] tjholowaychuk: wookiehangover: or https://github.com/visionmedia/ndistro [18:39] tjholowaychuk: is similar [18:39] tjholowaychuk: I suppose [18:39] tjholowaychuk: i dont know exactly what bundler does [18:39] tjholowaychuk: but im assuming it does what these do :) [18:40] wookiehangover: ndistro looks like it covers what I want [18:40] wookiehangover: yehuda wrote bundler, so I does more than you need it too ;D [18:40] tjholowaychuk: pff [18:40] tjholowaychuk: <-- has little respect for yahuda [18:40] tjholowaychuk: I think hes overrated lol [18:40] pyrotechnick: likewise [18:40] pyrotechnick: i listened to the changelogshow [18:41] pyrotechnick: the one where he was on it [18:41] tjholowaychuk: I dont disrespect him, but I dont think hes all that great [18:41] tjholowaychuk: just talks alot [18:41] pyrotechnick: and he was like "node is a toy. theres very little practical application of node" [18:41] tjholowaychuk: anyone who does lots of conferences will get big [18:41] tjholowaychuk: pff [18:41] drudge: tjholowaychuk: not currently possible to remove the buttons in the bottombar atm, we're open if you want to help us redesign tho :) [18:41] pyrotechnick: then at the end of the show he was like "we're going to use this cool async java framework to build the sproutcore server" [18:41] tjholowaychuk: drudge: oOoO :) [18:41] pyrotechnick: i almost vomited in my mouth [18:41] wookiehangover: he's just got a kevin smith I'm-a-know-it-all attitude [18:42] tjholowaychuk: pyrotechnick: haha yeah and he came on here bitching about the module system and how things are not global [18:42] wookiehangover: but he's written a few good lines of code here and there [18:42] tjholowaychuk: I havent seen him write anything decent [18:42] tjholowaychuk: thor sucks [18:42] pyrotechnick: merb [18:42] pyrotechnick: merb was decent [18:42] tjholowaychuk: meh [18:42] pyrotechnick: i wish it never merged with rails [18:42] pyrotechnick: we used to use it [18:42] tjholowaychuk: fails slightly less than rails [18:42] drudge: i mean you have to give it to him [18:43] pyrotechnick: the ruby community is fucked [18:43] drudge: node can't do anything.. right guys? [18:43] MikhX has joined the channel [18:43] pyrotechnick: yeah node sucks [18:43] pyrotechnick: its like [18:43] pyrotechnick: for proxies and irc servers and thats it [18:43] pyrotechnick: i heard u cant even fork a process because they want to support windows [18:43] pyrotechnick: how embarrassing [18:44] bingomanatee_: pyrotechnik: maybe we can add VIMM (vomiting in my mouth) to ROFL and LOL. [18:44] pyrotechnick: bingomanatee: id like that [18:44] pyrotechnick: I VIMMd when i heard yehuda prefers java async over node.js [18:44] shakefon has joined the channel [18:45] drudge: java HAH [18:45] pyrotechnick: async java [18:45] pyrotechnick: is even more ha [18:45] pyrotechnick: async java makes me want to just leave this planet because i have to share it with people with such bad ideas [18:45] pyrotechnick: async java is like — svn: "CVS done right" [18:46] pyrotechnick: it's just not a good idea, it never was and it never will be [18:46] pyrotechnick: but have fun with that [18:46] pyrotechnick: i'll be busy not sucking hard [18:47] tjholowaychuk: haha hes using a parser gen for handlebars [18:47] hunterloftis: tjholowaychuk: connect/router.js normalizePath() is exactly what I needed, but it doesn't put optional parameters (like ".format?") into the keys[] array. I must be missing something... [18:47] tjholowaychuk: that is pretty newbish its such a tiny lang [18:47] sveimac has joined the channel [18:47] muhqu has joined the channel [18:47] tjholowaychuk: hunterloftis: ".:format?" ? [18:47] tjholowaychuk: forget the :?? [18:47] pyrotechnick: i love the handlebars slogan [18:48] pyrotechnick: Logic-less templates. [18:48] pyrotechnick: sorry mustache [18:48] pyrotechnick: same shit [18:48] pyrotechnick: Set Delimiter [18:48] pyrotechnick: Set Delimiter tags start with an equal sign and change the tag delimiters from {{ and }} to custom strings. [18:48] pyrotechnick: it literally has logic [18:48] pyrotechnick: for setting the logic [18:48] pyrotechnick: of the logic of the language [18:49] hunterloftis: tjholowaychuk: damn it, yeah thanks [18:49] pyrotechnick: everyone [18:50] pyrotechnick: https://github.com/visionmedia/express/commit/365b7fe90a539971043f0050181b0dcf320285ef [18:50] hunterloftis: hunterloftis: copying and pasting too much today [18:50] pyrotechnick: come and join the party [18:50] tjholowaychuk: ahahaha [18:50] tjholowaychuk: quite the party [18:50] davidwalsh has joined the channel [18:50] pyrotechnick: ill get some cake [18:52] arpegius has joined the channel [18:53] pyrotechnick: there you go [18:53] cardona507 has joined the channel [18:53] bingomanatee_: Every time I see a code specific cat fight I think to myself, "Now there's a nerd who should have taken Karate in high school"... [18:54] pyrotechnick: but … but … asynchronous java? cmon… [18:54] tjholowaychuk: bingomanatee_: it comes natural, programmers like to bitch lol [18:54] tjholowaychuk: not sure why [18:54] tjholowaychuk: I havent slept in weeks so I have an excuse [18:54] pyrotechnick: ive been drinking [18:54] pyrotechnick: hence the cake [18:55] pyrotechnick: one should never drink github [18:55] maushu has joined the channel [18:55] pyrotechnick: githubbing under the influence has led to many inappropriate commit comments [18:55] Max-Might has joined the channel [18:56] pyrotechnick: TJ it has come to my attention that express doesn't have an ASCII logo in the README [18:56] bingomanatee_: Many careers have been damaged by /** I can't believe my asshole boss made me follow his stupid ****ing api. Good thing he never reads commit messages */ [18:56] pyrotechnick: i feel it's my duty to inform you that a project's not legit until it does have one [18:56] tjholowaychuk: haha this is true [18:57] tjholowaychuk: I still dont know if express means expressive of like ... a train [18:57] tjholowaychuk: haha [18:57] tjholowaychuk: im going with the non-train because trains are not so exciting [18:57] pyrotechnick: so it's like [18:57] pyrotechnick: express yourself [18:57] tjholowaychuk: its a mystery [18:57] pyrotechnick: like yes johnny, you can take ballet classes if thats what you truly want to do [18:57] bingomanatee_: you could use a (\) "not" icon over a printing press. [18:57] bingomanatee_: (ex press) [18:58] tjholowaychuk: haha [18:58] pyrotechnick: you could have [18:58] pyrotechnick: a button [18:58] pyrotechnick: and it says [18:58] pyrotechnick: DO NOT PRESS [18:58] pyrotechnick: and if u do [18:58] pyrotechnick: then [18:58] pyrotechnick: it uninstalls node [18:58] pyrotechnick: and installs php [18:59] softdrink: s/php/asp.net [18:59] pyrotechnick: hey i used to be a mono dev [18:59] bingomanatee_: Why not Grails? [18:59] pyrotechnick: it's not too bad [18:59] pyrotechnick: yeah grails is up there [19:00] bingomanatee_: I think it says something for your progammming language when you have to write a scripting layer to make it accessible. [19:00] pyrotechnick: grails is actually proof that when bad ideas collide the result is much much shitter than the sum of all parts [19:00] bingomanatee_: antigestalt [19:01] pyrotechnick: you said it [19:01] pyrotechnick: thatd be a sick library name [19:02] pyrotechnick: isaacs: rename npm to gestalt [19:03] wookiehangover: hey gang quick question: why all the leading commas? [19:03] pyrotechnick: where [19:03] wookiehangover: in general [19:03] pyrotechnick: in requires? [19:03] hunterloftis: wookiehangover: like in an object literal [19:03] hunterloftis: ? [19:03] softdrink: geseundheit [19:03] bingomanatee_: and what does this number here do? [19:03] Aikar: wookiehangover: its some peoples coding style [19:03] pyrotechnick: put some in here, without a pastebin [19:03] pyrotechnick: paste a whole shitload of code to show us what you mean [19:03] hunterloftis: wookiehangover: theory is, it makes it easier to see when you've forgotten a comma. Some people love it (I think it's kinda ugly) [19:04] Aikar: agreed [19:04] pyrotechnick: i thought it was so that u cud just append lines and the comma wasnt part of the last line but you know i hate it with a passion [19:04] pyrotechnick: <3 coffeescript [19:04] Aikar: use an editor or IDE with syntax checking and youll know when you forgot a comma ;) [19:05] softdrink: yeah i'm not a fan of the leading comma [19:05] pyrotechnick: long long ago [19:05] pyrotechnick: in the times before coffeescript [19:05] pyrotechnick: there existed a practise of including commas and semicolons in your javascript [19:05] pyrotechnick: we call these times 'the dark times' [19:05] frodenius: lol [19:06] pyrotechnick: a time we'd never much like to revisit [19:06] Aikar: i call those the proper times ;) [19:06] softdrink: i don't need another step between me and the browser. just sayin'. [19:06] softdrink: ;) [19:06] JusticeFries: a better time [19:06] pyrotechnick: there's nothing 'proper' about javascript [19:06] pyrotechnick: never was, isnt, never will be [19:06] JusticeFries: heh coffeescript. [19:06] JusticeFries: heh. [19:06] JusticeFries: that's all I have to say. [19:06] pyrotechnick: its fine if you're just targeting node.js like most of you are [19:06] pyrotechnick: but if you're writing cross-platform code [19:06] pyrotechnick: then you may as well use coffee [19:06] wookiehangover: use a toy [19:07] JusticeFries: its like me making a language that compiles into ruby because I couldn't hack it in ruby [19:07] pyrotechnick: coffee is a 'toy' as much as node is a 'toy' [19:07] pyrotechnick: TBBH [19:07] jonaslund has joined the channel [19:07] pyrotechnick: JusticeFries: it's not about "hacking it" [19:07] pyrotechnick: its about being implementation agnostic [19:07] bingomanatee_: In the 90's PC people dismissed the Mac as a "toy computer". [19:07] wink_: you're getting more drunk aren't you? [19:07] softdrink: also i hate significant whitespace with a burning passion [19:07] pyrotechnick: and abstracting the bad parts of the language away in a fashion that doesnt effect performance [19:08] softdrink: <—whitespace nazi [19:08] pyrotechnick: yeah [19:08] pyrotechnick: good [19:08] bingomanatee_: Ironic as now the PCs in my house are basically just a front end for steam. [19:08] pyrotechnick: TBH i hope coffeescript remains niche [19:08] pyrotechnick: it gives us an edge [19:08] softdrink: especially when the spec recommendations say "use four spaces". i'm looking at YOU python! [19:08] pyrotechnick: and keeps the noobs out of the community [19:09] wookiehangover: I'm gonna write an addition to coffee script that uses regex to let me write all my code in sonnets [19:09] bingomanatee_: you code with negative space? [19:09] JusticeFries: shakespeare.js? [19:09] softdrink: tabs to indent, spaces to align. [19:09] pyrotechnick: wookiehangover: you could do it as a DSL\ [19:09] bingomanatee_: I would love to create a programming language that requires iambic pentameter. [19:09] void_ has joined the channel [19:09] pyrotechnick: LOL [19:09] pyrotechnick: haiku [19:09] softdrink: speaking of esoteric languages: http://99-bottles-of-beer.net/ [19:09] pyrotechnick: haiku-lang.org [19:10] mjr_: In school I made a language where whitespace was the only significant element, and all non-whitespace was ignored. [19:10] bingomanatee_: "dammit, whats a two syllable word that rrhymes with 'insert'? " [19:10] void_: hi is there any mongo odm for node? [19:10] softdrink: ACTION ports everything to lolcode [19:11] herbySk has joined the channel [19:11] pzich: bingomanatee_: inert [19:11] pzich: alert [19:11] pyrotechnick: the i/o is asynchronous [19:11] pyrotechnick: blocking calls, they do not [19:11] pyrotechnick: blessed are those who node [19:11] pzich: :D [19:12] pekim: bingomanatee_: pervert [19:13] pyrotechnick: wow [19:13] pyrotechnick: i was a fan of erlang until i had to build it [19:13] tjholowaychuk: haha [19:13] pyrotechnick: it took over half an hour on an i7 [19:13] tjholowaychuk: yeah that is the worst part [19:13] pyrotechnick: do you guys use couch? [19:14] pyrotechnick: i was going to have a play with it in node but NO WAY MAN [19:14] pyrotechnick: i just dont have that long and wouldnt ask my comrades to install such a mammoth piece of ass [19:14] Aikar: was going to but benchmarks looked too slow, and couchdbs mission just doesnt seem to fit my needs, so going with mongo [19:14] wink_: PyroPeter: there are a fair number of couch fans around here [19:14] pyrotechnick: i had to end a skype call because of how noisy my cpu fan was while it compiled [19:15] Aikar: id rather not have to rely on third party versions like bigcouch to use it [19:15] pyrotechnick: that's jsut not cool [19:15] fugoki has joined the channel [19:15] fugoki has left the channel [19:15] sonnym has joined the channel [19:15] pyrotechnick: Aikar: lulz you're worried about third party extensions in an environment like node.js [19:15] Aikar: no [19:15] frodenius: pyrotechnick㇀ well then get a new fan [19:15] bingomanatee_: void: you mean orm I take it and mongoose is the gold standard. It is however, somewhat vaporware. [19:15] pyrotechnick: right just in general? [19:15] Aikar: third party fork [19:15] pyrotechnick: frodenius: it's a MBP [19:16] pyrotechnick: hence the mic being so close to the fan [19:16] frodenius: ah [19:16] void_: bingomanatee_: thanks. And I mean ODM - object-document mapper, Mongo is document database, not relational [19:16] wookiehangover: dude you should get a dell [19:16] wink_: did i miss the boat on this, why is there a need for an ORM for mongo specifically? [19:16] frodenius: yea that's a weakness of mbp's [19:16] wink_: its documents are stored json [19:16] pyrotechnick: what [19:16] pyrotechnick: MBPs have no weaknesses [19:16] frodenius: heh [19:16] pyrotechnick: it's not a weakness [19:16] JusticeFries: linux forever [19:16] void_: wink_: I thought I could use some mapping to objects, like in Rails [19:17] void_: wink_: or is that a bad idea? [19:17] aurynn: You could learn to write SQL. [19:17] aurynn: :) [19:17] wink_: void_: your js objects would map directly into a mongo document, why do you need a helper for it? [19:17] frodenius: what else? a non-feature? [19:17] HAITI has joined the channel [19:17] pyrotechnick: it's an intentional design flaw integrated into the macbooks by steve himself to force people to upgrade in the future [19:17] void_: wink_: It will map to hashes and arrays right? [19:17] wink_: yes [19:17] pyrotechnick: it's all part of the master plan [19:17] frodenius: yeah, one could say that [19:17] pyrotechnick: the iWorldOrder [19:17] wink_: mongo stores your documents in json (essentially) [19:17] void_: and in Rails I have models that are representing entities [19:17] wink_: there is already a 1:1 mapping there [19:18] void_: I'm not working with plain hashes/array [19:18] bingomanatee_: void_: I have a VERY basic odm for MongoDB - its not as sophisticated as Mongoose but it is much more low level. And there is a mongo library in node. https://github.com/christkv/node-mongodb-native [19:18] pyrotechnick: void_: where do you point? [19:18] wink_: nooooooo mongodb-native is terribly slow :< [19:18] pyrotechnick: void_: where do you point? [19:18] void_: pyrotechnick: Well I'm just used to orm/odm [19:18] wink_: and pretty useless for large datasets [19:18] pyrotechnick: void_: what happens if i dereference you? [19:18] pyrotechnick: do you point to 0x000000 [19:19] pyrotechnick: will you segfault? [19:19] saschagehlich has joined the channel [19:19] void_: lol :D [19:19] bingomanatee_: wink_ : isn't it the basis for mongoose? [19:19] wink_: yes, and it breaks my heart [19:19] wink_: everytime i see [19:19] wink_: it [19:19] wink_: i just died a little more, fyi [19:19] bingomanatee_: so what is the "better" library that is faster ? [19:19] pyrotechnick: the best database ever [19:19] pyrotechnick: is going to be like node-dirty [19:20] pyrotechnick: where its actually part of the node process [19:20] void_: pyrotechnick: you know the rules and so do I [19:20] pyrotechnick: and it scales beautifully with the application processes [19:20] wink_: bingomanatee: there are some bindings to the c libs, check out orlandov's github [19:20] pyrotechnick: mark. my. words. [19:20] pyrotechnick: it will be the shit when people realise it [19:20] ashb: if isaacs turns up let him know i'll be back shortly [19:20] bingomanatee_: okay sweet. [19:20] pyrotechnick: ashb: [19:21] pyrotechnick: he got TJ to rename markdown [19:21] tjholowaychuk: ye ye [19:21] softdrink: i have a sneaking suspicion that wordnet is about to consume a lot of my development time. [19:21] pyrotechnick: so if u republish ur library [19:21] pyrotechnick: as markdown [19:21] pyrotechnick: then itll be all good [19:22] pyrotechnick: but we'll let that sexkitten know you'll be back [19:22] bingomanatee_: wink_: its VIMM. we are pushing VIMM today. [19:23] wink_: ? [19:23] pyrotechnick: i found out libffi can only do C and i VIMMd [19:23] pyrotechnick: tjholowaychuk: are u guys using node-ffi for anything [19:23] tjholowaychuk: nope [19:24] pyrotechnick: i wrote bindings to bullet physics with it, thank god it had a c API [19:24] pyrotechnick: worked pretty nicely [19:24] pyrotechnick: about 90% the speed of native c [19:24] bingomanatee_: (Vomited In My Mouth) [19:24] wink_: ahh [19:24] bingomanatee_: @10:43 [19:25] isaacs has joined the channel [19:25] pyrotechnick: isaacs: [19:25] pyrotechnick: ashb said he'll be back [19:25] isaacs: ah, i see this [19:25] bingomanatee_: <-- selling T-shirts reading "VIMM@10:43" on cafe press [19:25] pyrotechnick: and he said to tell you that he loves you long time [19:25] isaacs: i have ircretary tell me when anyone mentions my name [19:26] pyrotechnick: yes [19:26] pyrotechnick: but there were things [19:26] pyrotechnick: terrible things [19:26] pyrotechnick: that he whispered to me in private [19:26] aurynn: node-ffi does look really neat [19:26] pyrotechnick: so ircretary wouldnt have been able to tell you about those [19:26] pyrotechnick: node-ffi worked flawlessly for me [19:27] nefD has joined the channel [19:27] pyrotechnick: i still had to write c++/c but that's only because bullets c api is incomplete [19:28] mikew3c_ has joined the channel [19:29] Huvet has joined the channel [19:29] pyrotechnick: anyone know any redis GUIs? [19:29] mjr_: you should make one with node! [19:29] femtoo has joined the channel [19:30] tjholowaychuk: i thought about doing that too [19:30] pyrotechnick: id help [19:30] pyrotechnick: tj do you want to seed it [19:30] tjholowaychuk: im down [19:30] pyrotechnick: cool [19:30] pyrotechnick: ill get my javascript on lol [19:31] Huvet: hi! I'm very new to node.js and would like to try to run a client-side bookmarklet on the server-side. I've tried requiring it, but it throws up on the window object (even though I load jsdom before), and I've tried loading it with createElement, but that doesn't work with local scripts. Any ideas of what I should try next? [19:31] EyePulp has joined the channel [19:32] pyrotechnick: Huvet: can you show us any code? https://gist.github.com/ [19:32] pyrotechnick: it's a bit hard to know what might be the problem when we're completely blind [19:33] pyrotechnick: im sure there's alot of people here who could help but it's a bit much to ask busy noders to ask you about the problem and search for the code, if you throw the problem in their face with stack traces etc then they're more inclined to be able to help [19:33] Huvet: it's only one line (so I hope it's ok to paste here): var document = require("jsdom").jsdom(), window = document.createWindow(), readability = require("./readability.js") [19:33] pyrotechnick: its ok with me ;) [19:34] pyrotechnick: paste 100 if you like [19:34] Huvet: the readability script is from here: http://lab.arc90.com/experiments/readability/js/readability.js [19:34] Huvet: heh :) [19:34] wink_: he'd be ok with you posting the entire node source tree [19:34] pyrotechnick: yeah in fact i recommend it [19:34] Huvet: :) [19:34] pyrotechnick: we could all talk about how fucking sweet every line is [19:34] wink_: lets see some of that v8 template hotness [19:35] pyrotechnick: does google c++ use templates? [19:35] Huvet: ehem, yeeess.... and now back to me :) [19:35] Huvet: <- [19:35] pyrotechnick: v8 compiles reasonably fast [19:35] sh1mmer has joined the channel [19:35] pyrotechnick: and has quite a flat structure [19:35] mjr_: V8 is C++ and uses templates all over the place. It's probably the best use of templates in C++ I've seen. [19:35] pyrotechnick: id be surprised if it makes heavy use of templates [19:35] pyrotechnick: really? [19:35] Huvet: I need my brain slapped into "this is how you should think about running client side scripts with node.js" [19:36] pyrotechnick: it must be nicely structured [19:36] mjr_: Yeah, I guess they have some smart guys working on V8 or something. [19:36] wink_: one or two im sure [19:36] maushu has joined the channel [19:36] pyrotechnick: Huvet: tj is using jsdom for his testing framework. cant say i've used it directly [19:36] pyrotechnick: yeah [19:36] pyrotechnick: probs just one [19:36] tjholowaychuk: yeah [19:36] tjholowaychuk: what [19:36] tjholowaychuk: lol [19:37] pyrotechnick: we're deciding how many devs google has on v8 [19:37] bingomanatee_: http://www.cafepress.com/MyLinkedFace [19:37] pyrotechnick: we think one or two [19:37] bingomanatee_: Done! [19:37] pyrotechnick: wats the @10:43 party [19:37] pyrotechnick: part* [19:38] Huvet: tjholowaychuk: where do I start learning how to run javascript written for the client-side in node.js? [19:38] pyrotechnick: is that when yehuda said he'd rather use async java? [19:38] aurynn: Handling commits asynchronously is complex. [19:38] pyrotechnick: http://lab.arc90.com/experiments/readability/js/readability.js [19:38] pyrotechnick: var document = require("jsdom").jsdom(), window = document.createWindow(), readability = require("./readability.js") [19:38] pyrotechnick: tjholowaychuk: [19:39] Huvet: ReferenceError: window is not defined [19:39] pyrotechnick: huvet: i havent used jsdom but i know that require wont have access to window [19:39] Huvet: an, was hoping for a way to throw in a context dict somehow [19:39] Huvet: ah* [19:40] tjholowaychuk: Huvet: this is my call this.window = jsdom.jsdom(wrap(html), null, options).createWindow(); [19:40] tjholowaychuk: lol jsdom.jsdom [19:40] tjholowaychuk: awesome api [19:40] bingomanatee_: pyrotechnick: the birth time of VIMM [19:41] pyrotechnick: bingomanatee: i remember when i first VIMMd [19:41] pyrotechnick: it was a rather warm monday night [19:41] bingomanatee_: pyrotechnick: I can design a custom T for your first VIMM if you like. [19:42] pyrotechnick: i was comfortably slouched over my laptop, mindlessly hacking away at some badass node when i noticed a new changelogshow in my rss feeds [19:42] pyrotechnick: what is this [19:42] pyrotechnick: i asked myself [19:42] Huvet: tjholowaychuk: that's awsome, I'll try it. [19:43] pyrotechnick: oh yehuda, this should be good, i didnt mind merb, *play* [19:43] Huvet: what's "wrap"? [19:43] bingomanatee_: its a bwack thing. [19:43] tjholowaychuk: Huvet htmlparser doesnt support frags I guess so you have to wrap with etc [19:44] Huvet: ah, so wrap just adds a bit of around the fragment, I see [19:45] cafesofie has joined the channel [19:50] x0xMaximus has joined the channel [19:53] pHcF: is there any way to create a global variable in nodejs? [19:55] sveimac has joined the channel [19:55] isaacs has joined the channel [19:55] bingomanatee_: any property assigned to global is a "global variable" [19:55] bingomanatee_: eg. global.foo = "bar"; [19:56] bingomanatee_: console.log(foo) // "bar" should work from anywhere [19:56] bingomanatee_: This and other gems can be found at http://nodejs.org/docs/v0.2.5/api.html [19:57] bingomanatee_: though that particular feature isn't quite clear in docs. [19:57] UHMA has joined the channel [19:59] springify has joined the channel [20:03] femtooo has joined the channel [20:04] jakehow has joined the channel [20:05] sh1mmer has joined the channel [20:06] yumike has joined the channel [20:07] Rixius has joined the channel [20:11] jpld has joined the channel [20:11] jimt has joined the channel [20:11] gnrfan has joined the channel [20:16] tekky has joined the channel [20:18] tek has joined the channel [20:23] Me1000 has joined the channel [20:25] isaacs has joined the channel [20:26] hunterloftis: Simplest way to get "whatever" from /some/path/to/whatever.ext? [20:27] pzich: regex [20:27] codehero: hey anybody got a strategy to keep the v8 garbage collector from killing my latency? [20:27] hunterloftis: pzich: guess so, was hoping for like... path(string).filename or something [20:28] pzich: perhaps there is, but I don't know of it if there is [20:28] _mql1 has joined the channel [20:28] dnolen has joined the channel [20:29] papandreou has joined the channel [20:30] codehero: hmm [20:31] codehero: my simulator was working great until I increased the load and the gc killed some of the response time intermittently [20:32] mraleph: do not allocate garbage [20:32] mraleph: it is the best strategy [20:32] jchris has joined the channel [20:32] mraleph: currently available [20:33] Me1000 has joined the channel [20:33] codehero: haha [20:33] codehero: what if you simulate garbage [20:33] mraleph: simulate garbage? [20:34] codehero: well I simulate regular communications and some garbage characters [20:34] hunterloftis: tjholowaychuk: weird jade question [20:34] hunterloftis: tjholowaychuk: in a script block: | var something = passed_jade_object.property (of course won't work) [20:34] softdrink: i wish macvim had a way to throw a webkit view in a split window [20:34] hunterloftis: tjholowaychuk: How do we get passed_jade_object to evaluate? [20:35] mraleph: o_O jokes aside: what is the heap size? what --trace-gc shows? [20:35] sh1m has joined the channel [20:36] hunterloftis: tjholowaychuk: Or is the best way just != "var something = " + passed_object? [20:36] sepehr has joined the channel [20:38] mraleph: codehero: --trace-gc --trace-gc-nvp together might be even more helpful to understand whats going on. [20:41] herbySk has joined the channel [20:43] foertel has joined the channel [20:43] foertel: hey ho [20:45] softdrink has joined the channel [20:47] tjholowaychuk: hunterloftis: hey back. use | var something = !{JSON.stringify(myobj)} [20:47] hunterloftis: tjholowaychuk: baller, thanks! [20:47] hunterloftis: other way seems to work also but could get hectic with all the string concatenation [20:52] tjholowaychuk: haha [20:52] tjholowaychuk: yeah [20:53] foertel: what's best way to make node.js talk to an usb-device? [20:53] aurynn: write node-usb! [20:54] vineyard has joined the channel [20:54] isaacs: aurynn, foertel: schakko already did. [20:54] isaacs: npm install usb [20:54] aurynn: listen to isaacs, for he is knowledgable of all things. [20:55] bingomanatee_: Yeah but he looks taller in IRC. [20:55] eee_c has joined the channel [20:55] devinus: am i just NOW learning about security, or what stops people from using man in the middle attacks against about every website that uses a cookie/token system out there...? o.O [20:56] devinus: time to put everything behind https.... [20:56] isaacs has joined the channel [20:56] foertel: ah, isaacs thanks [20:56] foertel: https://github.com/schakko/node-usb/ [20:56] foertel: will try that [20:56] nilcolor has joined the channel [20:57] tjholowaychuk: mjr_: for the redis errors do you not throw new Error() ? [20:57] tjholowaychuk: I get an error but its not instanceof Error and messing up some error reporting [20:58] tjholowaychuk: well i guess not throw, but new Error() :p [20:58] kolor has joined the channel [20:58] jbaron has joined the channel [21:04] foertel: ah isaacs see you had your issues with node-usb ;) [21:05] bingomanatee_: are there any IDEs that are particularly good with JS? [21:05] foertel: cloud9ide ;) [21:06] sh1m has joined the channel [21:06] kolor: komodo edit 6 [21:06] jetienne has joined the channel [21:08] mauritslamers has left the channel [21:08] ashb: tjholowaychuk: thanks again for giving us the 'markdown' namespace in npm [21:08] tjholowaychuk: ashb: no problem [21:09] fmeyer has joined the channel [21:09] pgte has joined the channel [21:14] beta__ has joined the channel [21:14] Alex3000 has joined the channel [21:14] JimBastard has joined the channel [21:14] robert_c has joined the channel [21:20] bingomanatee_: What do you have to do to create your own streaming class? [21:20] bingomanatee_: i.e., something that would work with sys.pump(r, w, c) [21:21] jimt_ has joined the channel [21:24] tswicegood: bingomanatee_: implement an object that's an EventEmitter [21:25] tswicegood: and end() for the WriteStream and destroy() for the ReadStream [21:25] foertel: isaacs: did you get this node-usb thing to work? [21:25] foertel: for me it worked with just soft-linking the libusb files to /usr/lib [21:25] pgte: bingomanatee_: read sys.pump and implement the needed methods of that class [21:26] tswicegood: bingomanatee_: https://github.com/ry/node/blob/master/lib/util.js#L335 <-- the code is pretty straight forward (note that that's the 0.3.x code) [21:26] bingomanatee_: thx. [21:26] isaacs has joined the channel [21:26] mjr_: tjholowaychuk: I do this.emit("error"), which should translate into a new Error if uncaught. [21:26] tswicegood: looks like 0.3.x and 0.2.x are the same though, just util.pump vs. sys.pump [21:26] jimt has joined the channel [21:27] riven` has joined the channel [21:27] tjholowaychuk: mjr_: but for example client.get('foo', function(err) ... err was not an Error for me [21:27] tjholowaychuk: I didnt typeof but I think it was just a string [21:27] mjr_: ohhh [21:28] hunterloftis: How do you guys feel about PUT/DELETE etc methods? Like, is there a real benefit from emulating delete with a hidden POST field, or is it better to just map POST to "/whatever/:id/delete"? [21:28] mjr_: tjholowaychuk: maybe I sent back a string in some cases? I'll have to look. [21:29] grim_fandango has joined the channel [21:29] mjr_: Which is probably the right thing to do. [21:29] tjholowaychuk: hmm I wouldnt think so [21:29] grim_fandango: Hi [21:29] mjr_: But shouldn't you check for err's truthiness or lack of being null? [21:29] pgte: hunterloftis: I prefer the first one [21:29] hunterloftis: pgte: What gives you your preference? [21:29] pgte: because you can use it with a client that implements a DELETE [21:29] tjholowaychuk: mjr_: yeah but a bunch of error handling related apis rely on .stack etc [21:30] tjholowaychuk: its not a HUGE deal I can just new Error(msg) them [21:30] hunterloftis: pgte: but in reality, you have to emulate delete anyway since many browser don't, right? [21:30] tjholowaychuk: just wanted to let you know [21:30] hunterloftis: browsers* [21:30] sudoer has joined the channel [21:30] grim_fandango: Folks, I'm wondering if anyone else has had problems with node_mailer? (aka mailer). I am using it to send a templated email but instead of actually connecting to the designated SMTP server mailer is just spitting out the (template-completed) email to the console. Is this a known problem? [21:30] mjr_: tjholowaychuk: yeah, thanks. I'll fix it up. Those err's should be actual Error objects. [21:30] pgte: hunterloftis: are you using express? [21:30] hunterloftis: pgte: yeah [21:30] foertel: ah ok node-usb is not working [21:30] foertel: :D [21:30] pgte: there is a middleware for that [21:30] foertel: for me on mac os x [21:31] pgte: that overrides the request method [21:31] hunterloftis: pgte: with methodOverride; but on the client side, I'll still need a hidden form field for delete, for example [21:31] pgte: \ [21:31] pgte: on browsers yes [21:31] pgte: but if you are providing a remote API [21:31] pgte: you get it for free [21:31] jimt_ has joined the channel [21:33] juye has joined the channel [21:34] pgte: hunterloftis: not convinced? [21:34] hunterloftis: pgte: lol well I'd be convinced if I were targeting anything other than browsers [21:34] hunterloftis: pgte: but this is 100% browser app [21:34] cardona507 has joined the channel [21:35] pgte: well, when designing routes I try to think about resources and try to build an API that has an HTML counterpart [21:35] cardona507 has joined the channel [21:36] hunterloftis: pgte: yeah everything is already resource-based, it's mostly the details I"m implementing now [21:36] hunterloftis: pgte: Like, DELETE /whatever/:id or POST /whatever/:id/delete [21:36] hunterloftis: pgte: Either way it's no big deal, just wanted to get other opinions [21:36] cardona507 has joined the channel [21:41] kriszyp has joined the channel [21:46] JimBastard: hey isaacs whats the command for showing installed npm packages? i always forget [21:47] isaacs: JimBastard: guess. [21:47] JimBastard: npm ls@installed? [21:47] isaacs: no @. just a space [21:47] isaacs: npm ls installed [21:47] JimBastard: i really need to make that npm cheat sheet [21:47] JimBastard: thanks isaacs [21:47] isaacs: you can also add on --no-reg and --no-desc to make it faster [21:47] JimBastard: all this snow has frozen my brain [21:48] JimBastard: isaacs: so i have like 4 versions of this one lib installed via npm link, is there any easy way in ls to determine the directory location of the package? [21:49] isaacs: npm explore [21:49] isaacs: then pwd -P [21:49] isaacs: then exit [21:49] foertel has left the channel [21:50] JimBastard: i think i gotta update for explore [21:50] JimBastard: one sec [21:50] admc has joined the channel [21:50] JimBastard: nice, that worked i think [21:50] JimBastard: isaacs: you rock [21:51] deepthawtz has joined the channel [21:51] sveimac has joined the channel [21:52] isaacs: ashb: hey, it looks like wrapping stuff in html tags gets escaped. that's not ideal. any easy way to make it respect existing html gruber-style? [21:52] ashb: write some code ;) i personally never put inline html in my markdown is why [21:53] isaacs: i see [21:53] isaacs: right now i'm wrapping text readme's in a
 tag, which then gets escaped out.
[21:53] tjholowaychuk: i do as well
[21:53] ashb: isaacs: wrapping it why?
[21:53] isaacs: i could also do "    "+doc.split(/\n/).join('    \n')
[21:53] isaacs: ashb: so that it doesn't parse the plain text as markdown
[21:54] isaacs: (which is usually just one big unhelpful paragraph)
[21:54] ashb: don't quite follow. got an example url?
[21:54] isaacs: ashb: http://ndoc.no.de/coffee-script
[21:54] ashb: and the raw markdown?
[21:55] isaacs: well, it's not markdown, that's the rub of it
[21:55] isaacs: it's just a plain text file
[21:55] isaacs: but it's simpler to kinda turn it into markdown rather than have a different renderer.
[21:55] ashb: oh but you just want to abuse the autolinkification basically?
[21:55] isaacs: well, not even that
[21:55] isaacs: i just wanna have a single code path for the view
[21:56] isaacs: rather than adding more to the logic in the template
[21:56] UHMA has joined the channel
[21:56] isaacs: but indenting 4 spaces is not any harder than wrapping in 
[21:56] ashb: short answer you'r going to have to write a bit of code somewhere or go back to discount i'm afraid
[21:56] JimBastard: hrmm looks like the new npm broke broodmother
[21:56] isaacs has joined the channel
[21:57] bronb has joined the channel
[21:57] sveimac has joined the channel
[21:57] ashb: isaacs: another option is to just create an ast with the single pre node in
[21:57] ashb: and bypass parsing entierly
[21:57] isaacs: yeah...
[21:57] ashb: thats a bit more of a if/else though
[21:57] isaacs: i really don't wanna know too much about this template.
[21:57] ashb: yeah
[21:57] isaacs: i want it to kinda Just Work.
[21:58] isaacs: and it *mostly* does, which is nice.
[21:58] ashb: right now the quickest is to just prepend '    '
[21:58] isaacs: yep
[21:58] isaacs: that works.  http://ndoc.no.de/coffee-script
[21:59] isaacs: hmm... er... not really, i guess...
[21:59] ashb: hmmm yeah its stopping half way through.
[21:59] JimBastard: isaacs: did you mess with npm.commands.list(['installed'], function (err, packages) { at all?
[22:00] isaacs: JimBastard: no, that should work, too
[22:00] naneau has joined the channel
[22:00] isaacs: JimBastard: as long as you do npm.load({config}, function (er) { ... })
[22:00] JimBastard: it keeps bombing out on  Object.keys(packages).filter , ill investigate vurther
[22:00] JimBastard: Object.keys called on non-object 
[22:00] JimBastard: but its totally returning
[22:00] JimBastard: odd
[22:00] isaacs: oh, weird
[22:01] ashb: isaacs: welcome to the world of markdown parser issues: http://bit.ly/hPeEOe
[22:02] ashb: though it seems like most of them treat it how it would be expected
[22:02] isaacs: yeah
[22:03] softdrink: what version of node does cloud9 require?
[22:03] isaacs: it looks like the empty line is making it break
[22:03] void_: how do I change port on which node starts? and which is defualt?
[22:03] grim_fandango: Folks, I'm wondering if anyone else has had problems with node_mailer? (aka mailer).  I am using it to send a templated email but instead of actually connecting to the designated SMTP server mailer is just spitting out the (template-completed) email to the console.  Is this a known problem?
[22:03] isaacs: void_: there is no default.  server.listen(port[, hostname])
[22:03] isaacs: hostname default is 0.0.0.0 (any)
[22:03] void_: oh sure
[22:04] void_: I just copy pasted some code and I thought I set port in command line like rails
[22:04] void_: now I see it's in js code
[22:04] ashb: isaacs: hmmm in the console doing m.parse("    foo\n    \n    bar\n") seems to DTRT
[22:04] ashb: [ 'markdown', [ 'code_block', 'foo\n\nbar' ] ]
[22:04] JimBastard: isaacs: it looks like the format that npm returns from list changed
[22:04] isaacs: JimBastard: yeah
[22:05] isaacs: JimBastard: it only returns *matched* packages now
[22:05] JimBastard: Object.keys(packages[package].versions) => Object.keys(packages[package].data.versions)
[22:05] isaacs: JimBastard: it used to return everything all the time
[22:05] JimBastard: the "data" attribute
[22:05] isaacs: that too
[22:05] JimBastard: thats the breaking change here i think
[22:05] isaacs: ahh
[22:05] isaacs: kewl
[22:05] JimBastard: is that old change? 
[22:06] softdrink: hey there's that jimbastard kid
[22:07] JimBastard: sup softdrink , kinda busy today
[22:07] softdrink: are you still involved with Faker.js?
[22:07] ashb: isaacs: oh actually its the =\n at the start that messes it up
[22:07] JimBastard: yeah i maintain that softdrink 
[22:07] softdrink: excellent.
[22:08] ashb: er wait thats me i think
[22:09] softdrink: soooo i ended up writing my own faker-like js lib because i needed *repeatable* random results.  do you want me to work that into faker?
[22:09] softdrink: (it'd be a bit of a refactor unfortunately)
[22:09] ashb: isaacs: i think you might be doing somthing wrong with your split/join as I can't reproduce that behaviour in the console
[22:09] JimBastard: softdrink: i dont understand repeatable random
[22:10] JimBastard: softdrink: is it a fork?
[22:10] mgutz has joined the channel
[22:10] JimBastard: the data part of faker is decoupled from the logic, so you could make your own "randomizer" if you wanted based on the data sets
[22:10] softdrink: well, Math.random() sucks in that it can't be seeded.  i needed the exact same results for given seeds
[22:10] softdrink: yeah i totally stole some of the data ;)
[22:10] JimBastard: softdrink: link? im not sure if i'd want to merge, but i'd like to see what you did
[22:10] JimBastard: stealing is good
[22:10] JimBastard: as long as the license says so
[22:11] softdrink: (i had to hack something together QUICK for something at work)
[22:11] JimBastard: i can see the benefit of what you are talking about i think
[22:11] softdrink: (and i do mean _hack_)
[22:11] softdrink: https://github.com/jocafa/Nonsense
[22:11] sh1mmer has joined the channel
[22:12] JimBastard: softdrink: this is a bit much for me to digest right now, but if you can think of an easy way to implement this into Faker.js I can assist with the merging / docs / release / etc
[22:14] softdrink: the short of it:  i needed to be able to instantiate nonsense generators arbitrarily, and instead of using Math.random() i'm using a pseudorandom number generator, and each instance of nonsense has its own generator
[22:14] JimBastard: i understand that part, its the implementation of the code i cant read though
[22:14] JimBastard: i like that idea though
[22:14] JimBastard: could be useful for testing
[22:14] softdrink: that's exactly why i needed it ;)
[22:15] JimBastard: fuck i shouldnt have updated npm lol
[22:16] softdrink: so basically, usage looks like:   var ns = new Nonsense();   var dude = ns.firstName()
[22:16] fly-away has joined the channel
[22:16] softdrink: and at any point, i can set the seed for a nonsense instance, so that i can get repeatable results
[22:17] JimBastard: yeah, it would be nice to be able to make the random seed configurable
[22:17] softdrink: fo sho
[22:17] softdrink: and no such luck for Math.random() :(
[22:19] jimt has joined the channel
[22:24] tilgovi has joined the channel
[22:26] softdrink: how do you search for packages with npm? i must be blind.
[22:27] yozlet has joined the channel
[22:27] isaacs has joined the channel
[22:27] devinus: softdrink: npm list  ?
[22:27] pgte has joined the channel
[22:28] isaacs: softdrink: http://search.npmjs.org/
[22:28] isaacs: softdrink: or npm ls
[22:30] c4milo has left the channel
[22:30] hunterloftis: tjholowaychuk: Weird partials question. Partial within a collection of partials. So like: page.jade -> partial(_listitem.jade, list) -> _partial('listitemobject.jade', listitem) ... doesn't work unless we use list.listitem in the final partial. Damn that's hard to explain
[22:31] tjholowaychuk: uhh
[22:31] tjholowaychuk: haha
[22:31] isaacs: softdrink: you could use srand
[22:31] isaacs: softdrink: npm install srand
[22:31] mape has joined the channel
[22:31] isaacs: softdrink: it doesn't affect Math.random() but then you can use srand.seed(0) and then srand.rand() will keep returning the same things in the same order
[22:32] tjholowaychuk: hunterloftis: based on those names you will have "listitem" and "listitemobject" lol
[22:32] tjholowaychuk: since you are not using { as: '' }
[22:32] tjholowaychuk: might wanna change it to partial('list
[22:32] tjholowaychuk: ') and partial('list/item')
[22:32] tjholowaychuk: to get "item" and "list"
[22:33] hunterloftis: tjholowaychuk: lol I think I didn't explain exactly right. It's difficult to convey
[22:34] tjholowaychuk: :D
[22:35] hunterloftis: tjholowaychuk: render('comments.jade', comments) -> partial('_comment.jade', comments) -> != comment.page (works) but partial('_page.jade', comment.page) -> works with page.page.property, but not page.property
[22:35] hunterloftis: Try saying that 5 times fast
[22:36] tjholowaychuk: ahahaha
[22:36] tjholowaychuk: hmm
[22:36] tjholowaychuk: are you 100% positive comment.page is proper?
[22:36] tjholowaychuk: because that looks fine to me
[22:36] hunterloftis: yep, comment.pag within _comment.jade outputs accurately
[22:36] hunterloftis: page*
[22:37] isaacs: ashb: ah, nvm about that bug.  i'm dumb.
[22:37] hunterloftis: and if we output inspect(page) at the last step, it's the same as when we output inspect(comment) in the second to last step. It's madness! ;)
[22:37] isaacs: '    \n' is not right.  needed to join with '\n    '
[22:37] isaacs: duh
[22:37] ashb: was equal chance there's an edge case in the parser
[22:37] ashb: we've got most of them but its hairy in places
[22:37] isaacs: sure
[22:38] isaacs: markdown is not optimized for parsing.
[22:38] isaacs: it's optimized for human writing, which pretty much means it's damn near impossible to parse properly
[22:38] ashb: aye
[22:38] JimBastard: fuck MD
[22:38] hunterloftis: tjholowaychuk: Is it possible that we're colliding with parent data? Like, could a child "_page" partial rendering "page" objects be colliding with comments.page objects above?
[22:38] isaacs: and also means that everyone will want to use it for everything.
[22:38] isaacs: because it's so nice to write :)
[22:38] hunterloftis: tjholowaychuk: Anyway, we're using page.page.properties for now but I hate not figuring stuff like that out
[22:39] tjholowaychuk: weird man let me know
[22:41] sh1mmer has joined the channel
[22:44] naneau has joined the channel
[22:45] eee_c has joined the channel
[22:48] hunterloftis: Jade is caching some of its partials, so changes to partials don't make changes to the rendered stuff... even in development mode. We must be doing something wrong.
[22:48] isaacs: Wanna know what version of a module npm installed?   require("some-module/package.json").version
[22:49] mscdex has joined the channel
[22:49] hunterloftis: lol nevermind, my crazy teammates...
[22:49] jimt_ has joined the channel
[22:49] mscdex: sure, blame it on the teammates!
[22:49] mgutz: tjholowaychuk: for Express, do you have example of how to plugin a template engine that has asynchronous rendering?
[22:52] Hello71 has joined the channel
[22:52] Hello71 has joined the channel
[22:53] hunterloftis: mscdex: usually, *I'm* the crazy teammate
[22:53] mscdex: :-D
[22:57] isaacs_ has joined the channel
[22:58] yozlet has joined the channel
[23:00] [[zz]] has joined the channel
[23:01] eee_c has joined the channel
[23:02] blueadept has joined the channel
[23:06] pHcF: why is that?
[23:06] pHcF: v8: parseInt('lorem ipsum')
[23:06] v8bot: pHcF: NaN
[23:06] pHcF: v8: parseInt('lorem ipsum') == NaN
[23:06] v8bot: pHcF: false
[23:12] sh1m has joined the channel
[23:12] Huvet: pyrotechnick, tjholowaychuk: Thanks for your help before... seems the magical line that does what I was looking for was: process.binding('evals').Script.runInNewContext(data, sandbox, script);
[23:13] ysynopsis has joined the channel
[23:13] Huvet: just fetch the script with readFileSync, make a dict with the context, and give the file path to your script as file
[23:14] Huvet: sandbox will be transformed into your new context
[23:14] Huvet: fantasticamundo
[23:14] Huvet: *jumps up and down*
[23:15] sonnym has joined the channel
[23:17] ossareh has joined the channel
[23:19] mraleph: pHcF: NaN is not equal to NaN by definition.
[23:20] perezd has joined the channel
[23:20] perezd: whats the best reading for diving deep into JS for node?
[23:20] perezd: JavaScript: The Good Parts?
[23:21] namelessnotion_ has joined the channel
[23:23] jimt has joined the channel
[23:24] softdrink: node-specific or js in general?
[23:24] isaacs_: perezd: JavaScript: The Definitive Guide
[23:24] isaacs_: perezd: or the ES5 spec
[23:26] eee_c has joined the channel
[23:27] isaacs has joined the channel
[23:32] perezd: softdrink: well there probably are no node books right?
[23:33] zentoooo has joined the channel
[23:34] softdrink: not that i'm aware of, but i wasn't thinking of physical books hehe
[23:35] perezd: softdrink: I was hoping for ebooks :)
[23:35] perezd: Definitive Guide seems good...there is an updated rough cut version that talks about ES5
[23:35] perezd: how does the good parts differ from definitive ? 
[23:35] perezd: if anyone knows lol
[23:36] jimt has joined the channel
[23:36] softdrink: the definitive guide is more of a reference… it's at least four times as thick ;)
[23:37] isaacs: perezd: the good parts is not intended as a guide to the language as a whole.  also, js:tdg goes through a lot of browser-specific stuff like the DOM api, etc.
[23:37] isaacs: and, i mean, that's a huge part of javascript, so it needs to be in the guide to be "definitive"
[23:37] softdrink: Ugh! Why in the  does the FileAPI working draft from the W3C show an example using document.forms*?
[23:39] perezd: isaacs: if you wanted to get really good at node, you'd recommend TDG?
[23:39] perezd: I am pretty proficient with JS today
[23:39] perezd: but want to master it more
[23:40] isaacs: perezd: i recommend going through the ES5 spec.  it's not very long (though it is QUITE dense), and it is free, and even more "definitive"
[23:40] softdrink: i actually end up using MDC as reference from time to time. it's not *great* but it has good info littered through it
[23:41] beta__ has joined the channel
[23:42] softdrink: perezd:  take apart libraries like MooTools and jQuery to learn what they did… then write your own lib.
[23:42] sh1mmer has joined the channel
[23:43] perezd: softdrink: I am fairly savvy with JS, I just want to make sure I get a good rounded knowledge of the edges 
[23:43] softdrink: *nod*
[23:44] softdrink: one of my biggest helps personally, was to implement my own 'classes' with just naked js
[23:44] namelessnotion has joined the channel
[23:45] RichardJ: the dom &c. are not a part of javascript
[23:45] RichardJ: yeah, you'd probably not use javascript without it but still
[23:46] beta__ has joined the channel
[23:46] softdrink: i meant more along the lines of taking apart how prototypal inheritance works, and digging deep into the darker corners of js
[23:46] isaacs: softdrink: that's exactly why teh spec is so special
[23:46] isaacs: especially section 10
[23:46] RichardJ: there's a lot of good info at http://javascript.crockford.com/
[23:46] unomi has joined the channel
[23:46] isaacs: http://sideshowbarker.github.com/es5-spec/
[23:48] RichardJ: the es5 spec is definitely more legible than the es3 spec
[23:49] mikew3c: isaacs: I am going to need to update that now to include the 5.1 stuff
[23:49] mikew3c: I don't know what all they added
[23:49] isaacs: mikew3c: that's yours?  cool.
[23:49] isaacs: mikew3c: i find it very handy :)
[23:49] mikew3c: glad to hear it
[23:50] mikew3c: there's another HTML version of the spec elsewhere
[23:50] mikew3c: ACTION looks for the URL
[23:50] jakehow has joined the channel
[23:51] Huvet: Question: I get: "Error: Cannot find module 'jsdom/level2/core'" when trying to run the html5 module, even though I have jsdom installed, and core.js is where that path says it should be. Any idea what to do next?
[23:54] beta__ has joined the channel
[23:57] dnolen has joined the channel
[23:58] isaacs_ has joined the channel