[06:22] frigg: VERSION [06:23] nodelog has joined the channel [06:24] matyr_ has joined the channel [06:25] samcday: tmzt_, Yeah, a FCGI/CGI response is simply just a whole HTTP response sans the HTTP/1.1 header line [06:25] samcday: But that's just sent out verbatim [06:25] samcday: I dunno about putting some of that stuff in process.env though [06:25] samcday: Don't forget that you can have multiple requests happening in one instant [06:26] met_ has joined the channel [06:26] tmzt_: true [06:26] tmzt_: so process.env wouldn't work, req.fastcgi.records would be better [06:26] tmzt_: or whatever you want to call it [06:29] samcday: Yeah that sounds like a great idea actually [06:29] samcday: Then again, writing stuff specifically for fastcgi is kinda pointless [06:30] tmzt_: okay, but there aren't really any cgi implmentations for node either [06:30] tmzt_: so there isn't a precedent for that stuff passed as env vars [06:30] samcday: I kinda envision this fcgi proxy as being completely transparent. Other than changing the app.listen() line, nothing else should change to make your server "just work" inside an FCGI process manager [06:30] tmzt_: though if uri going ot be parsed later you don't need request_uri or script_name [06:30] tmzt_: right [06:30] samcday: Yeah exactly [06:31] samcday: And don't really need that middleware I was talking about anyway [06:31] tmzt_: although script name is useful for figuring out what script your running as, like $0 [06:31] tmzt_: but not really in node [06:31] zakabird has joined the channel [06:31] samcday: Since if your server has mod_fcgid, it's guaranteed to have mod_rewrite [06:31] tmzt_: what middleware? [06:31] samcday: The one I thought might be cool, that uses pathinfo to generate request.url; [06:32] tmzt_: ah [06:32] tmzt_: well, now I get to suffer the pain of wsdl in node [06:33] samcday: Oh jesus :p [06:33] tmzt_: on there theory that writing a proxy in node will be faster than making magento work with rest in the php [06:33] tmzt_: and using rewrite to ensure that requests go to the right place [06:34] reid has joined the channel [06:35] skm has joined the channel [06:36] skm has joined the channel [06:36] samcday: Fun :D [06:37] twodollarz has joined the channel [06:37] luke` has joined the channel [06:38] tilgovi has joined the channel [06:39] muhqu has joined the channel [06:41] nivoc has joined the channel [06:42] flippyhead has joined the channel [06:42] bergie has joined the channel [06:43] luke`_ has joined the channel [06:43] SamuraiJack has joined the channel [06:45] groom has joined the channel [06:46] ph^ has joined the channel [06:48] harth has joined the channel [06:49] Kryckan has joined the channel [06:50] atiti has joined the channel [06:50] __tosh has joined the channel [06:51] SubStack: ACTION wrote a blog post about browserify! http://substack.net/posts/24ab8c  [06:52] dominictarr has joined the channel [06:52] dominictarr has joined the channel [06:53] SubStack: upboats on HN if you like it! http://news.ycombinator.com/item?id=2381679 [06:54] emattias has joined the channel [06:54] matjas has joined the channel [06:55] blkcat: SubStack: that's pretty slick! browserling, too. :) [06:56] SubStack: thanks! [06:56] SubStack: it's pretty much an insane amount of features for a browser-side require lib, I've noticed! [06:57] SamuraiJack has joined the channel [06:57] marlun: In https://gist.github.com/891911 I feel that I'm starting to get deep into callback nesting now (after the compiled line I want to write it back to a file which will ad even more depth) but if I change the anonymous functions to function pointers I loose access to the variables files, compiled and name. How should I solve this? [06:59] SubStack: marlun: named functions or flow control libs are useful for that sort of problem [07:00] beawesomeinstead has joined the channel [07:00] mhooker: marlun: are you using hard tabs? if you are, you might find it easier to read the code with soft tabs of 2-4 spaces [07:01] SubStack: marlun: lots to choose from! https://github.com/joyent/node/wiki/Modules#async-flow [07:01] SubStack: you might try starting with step [07:01] twodolla_ has joined the channel [07:01] mhooker: for example, https://gist.github.com/891920 [07:02] SubStack: actually my own lib seq might be more useful here [07:02] SubStack: it's got array processing primitives [07:03] skm_ has joined the channel [07:03] meso has joined the channel [07:05] fangel has joined the channel [07:07] mape: Best unit testing framework for browser js? [07:09] nyholt has joined the channel [07:09] marlun: SubStack: With named functions you mean just adding names which will make it easier to debug or do you mean moving the function away from the current code into it's own function below? [07:10] harth has joined the channel [07:10] marlun: I would really like to improve it as much as possible without any libs to start with. If that is possible :) [07:10] wadey has joined the channel [07:12] luke` has joined the channel [07:12] darshanshankar has joined the channel [07:12] SubStack: marlun: I mean breaking out the functionality into top-level functions is sometimes useful [07:12] marlun: mhooker: Thanks but I actually like the indenting. I don't think that is the solution I'm looking for. [07:12] SubStack: in your case it seems like a flow control lib would be more useful however [07:13] mAritz has joined the channel [07:13] SubStack: marlun: my own flow control lib happens to be pretty good for chaining together list operations like you've got https://github.com/substack/node-seq [07:13] muhqu has joined the channel [07:15] fly-away has joined the channel [07:16] skm has joined the channel [07:16] skm has joined the channel [07:17] mikeal has joined the channel [07:18] astropirate: are events asynchronous in node? [07:18] mraleph has joined the channel [07:19] jetienne has joined the channel [07:19] codivan has joined the channel [07:19] johnnywengluu: what is the best way to automatically run jslint for your js files? [07:22] mytrile has joined the channel [07:22] admc has joined the channel [07:23] saschagehlich has joined the channel [07:23] mAritz: johnnywengluu: if you're using cloud9, it automatically does jshint (the less extreme version) :) [07:24] johnnywengluu: mAritz: cool .. but im not using cloud9=) [07:24] mAritz: johnnywengluu: if you're using komodo there's a plugin for that [07:24] johnnywengluu: atleast not yet [07:25] johnnywengluu: waiting for it to become more stable and feature rich for phonegap/sproutcore/ruby development [07:25] johnnywengluu: im using webstorm [07:25] johnnywengluu: which is the best ide for the desktop at the moment =) [07:25] johnnywengluu: but kinda bloated [07:26] johnnywengluu: i was thinking about having a pre commit hook in git [07:26] johnnywengluu: but i don't want to copy paste git hook scripts between projects [07:26] ajnasz has joined the channel [07:26] tfe_ has joined the channel [07:26] tfe_ has joined the channel [07:27] Kenosis has joined the channel [07:28] mlncn has joined the channel [07:29] troessner has joined the channel [07:32] a_t has joined the channel [07:33] marlun: SubStack: Thanks I'll take a look :) [07:34] dominictarr has joined the channel [07:36] tmzt_: johnnywengluu: I wonder if submodules could handle your scripts [07:36] [AD]Turbo has joined the channel [07:37] [AD]Turbo: hi there [07:37] msucan has joined the channel [07:38] pietern has joined the channel [07:41] mikedeboer has joined the channel [07:42] jetienne: johnnywengluu: do "make jslint" with jslint `find . -type f -name "*.js"` [07:44] littke has joined the channel [07:45] johnnywengluu: maybe i should just wait for cloud9ide to be more mature for real dev workflow [07:46] johnnywengluu: dont want to hack a quick and dirty solution together. [07:47] markc_ has joined the channel [07:48] Lorentz has joined the channel [07:50] Kenosis has left the channel [07:53] kal-EL_ has joined the channel [07:59] twodollarz has joined the channel [08:01] TomY_ has joined the channel [08:02] Kenosis has joined the channel [08:03] meso has joined the channel [08:05] nils_r has joined the channel [08:06] adambeynon has joined the channel [08:09] skm has joined the channel [08:10] twodolla_ has joined the channel [08:10] skm has joined the channel [08:11] skm has joined the channel [08:14] asabil has joined the channel [08:16] ajnasz has joined the channel [08:16] luke`_ has joined the channel [08:16] aklt has joined the channel [08:18] nivoc has joined the channel [08:22] fjakobs has joined the channel [08:25] tmzt_: does jsdom work for xml or just html? [08:25] tbassetto has joined the channel [08:26] ntelford has joined the channel [08:36] mikedeboer_ has joined the channel [08:36] saschagehlich: tmzt_: Currently Implemented: * DOM Level 1 (html/svg/xml) [08:37] markwubben has joined the channel [08:37] tmzt_: I'm trying to see if it's completely insane to attempt a soap client [08:38] tmzt_: ah, not too bad [08:39] fjakobs has joined the channel [08:42] ElDios has joined the channel [08:49] dominictarr has joined the channel [08:50] ntelford has joined the channel [08:51] ntelford has joined the channel [08:53] MikeMakesIt has joined the channel [08:56] mikedeboer has joined the channel [08:57] fjakobs has joined the channel [08:57] bzinger has joined the channel [08:57] drunknbass has joined the channel [09:00] MikeMakesIt has left the channel [09:00] beawesomeinstead has joined the channel [09:00] twodollarz has joined the channel [09:00] ntelford has joined the channel [09:00] mikl has joined the channel [09:01] drunknbass has joined the channel [09:03] twodolla_ has joined the channel [09:04] simme has joined the channel [09:04] xla has joined the channel [09:06] zentoooo has joined the channel [09:09] hadashikick has joined the channel [09:09] drunknbass has joined the channel [09:12] mhausenblas has joined the channel [09:12] ajnasz has left the channel [09:14] markwubben has joined the channel [09:16] nivoc has joined the channel [09:21] dcelix has joined the channel [09:22] tisba has joined the channel [09:23] drunknbass has joined the channel [09:26] __tosh has joined the channel [09:28] hellp has joined the channel [09:30] atiti has joined the channel [09:31] lukus has joined the channel [09:33] ntelford has joined the channel [09:36] asabil has joined the channel [09:40] suckerpunch has joined the channel [09:43] incon has joined the channel [09:43] aho has joined the channel [09:45] asabil has joined the channel [09:46] Throlkim has joined the channel [09:48] eb4890 has joined the channel [09:49] d0k has joined the channel [09:50] mike5w3c_ has joined the channel [09:50] kawaz_home:   [09:51] huntz0r has joined the channel [09:52] drunknbass has joined the channel [09:54] twodollarz has joined the channel [09:55] V1 has joined the channel [09:55] raphdg has joined the channel [09:56] luke` has joined the channel [09:59] FireFly has joined the channel [10:04] bergie has joined the channel [10:11] skm has joined the channel [10:11] skm has joined the channel [10:12] twodolla_ has joined the channel [10:12] skm has joined the channel [10:13] skm has joined the channel [10:13] skm has joined the channel [10:14] skm has joined the channel [10:14] mlncn has joined the channel [10:16] fermion has joined the channel [10:17] davidcoallier: markc_: hehe thanks for the fix ;-) [10:20] matyr has joined the channel [10:21] jano has joined the channel [10:21] jimt has joined the channel [10:21] teemow has joined the channel [10:21] dominictarr has joined the channel [10:21] MrTopf has joined the channel [10:22] Levi has joined the channel [10:25] edude03 has joined the channel [10:27] twodollarz has joined the channel [10:28] mytrile has joined the channel [10:30] shaunau has joined the channel [10:32] christophsturm has joined the channel [10:32] ivanfi has joined the channel [10:32] noocx has joined the channel [10:32] noocx: hi [10:35] shaunau: hi noocx [10:38] lukus has joined the channel [10:39] gg411 has joined the channel [10:39] prof-freud has joined the channel [10:45] littke has joined the channel [10:49] vckt has joined the channel [10:51] EmmaCroix has joined the channel [10:51] EmmaCroix: Anyone alive? :) [10:52] EmmaCroix: I tried to update my nodejs to the latest version with: sudo add-apt-repository ppa:jerome-etienne/neoip && sudo apt-get update && sudo apt-get install nodejs [10:53] EmmaCroix: but still i get nodejs 0.3.8 when i type node in console [10:53] EmmaCroix: I'm using ubuntu 10.10. What am I doing wrong? [10:56] shaunau: Emma, i dont use linux anymore, but i would have thought it would be apt-get update nodejs [10:57] EmmaCroix: i think there is a problem with two versions of nodejs running beside eachother [10:58] shaunau: peronally, i just always start fresh and install locally ~/local using a script that pulls from nodejs.org i think the script was on npm.prg [10:58] mzx has joined the channel [10:58] shaunau: oh, you're installing it seperatly - not upgrading. [10:58] EmmaCroix: ok [10:58] shaunau: maybe it's just your path that needs to chnage [10:59] stagas: yay javascript world of soccer https://github.com/stagas/jwos [10:59] EmmaCroix: yeah i think that will solve it, how to change the path? [10:59] shaunau: which node [10:59] nivoc has joined the channel [10:59] shaunau: if you type that command it will tell you where node is in your path [10:59] EmmaCroix: great! thnx :) [11:00] EmmaCroix: "/home/ubuntu/local/node/bin/node " [11:00] shaunau: then, you need to change your path, possibly the file ~/.bashrc (if your're using bash) [11:00] EmmaCroix: Win! [11:00] EmmaCroix: :D [11:00] shaunau: ok so thats where its running the node binary [11:00] EmmaCroix: That was the thing I forgot [11:00] okuryu has joined the channel [11:01] EmmaCroix: Now I remember that i setup that bashrc thing way back during 0.3.8, I'll change it to the correct path [11:01] shaunau: cool :) [11:01] EmmaCroix: thanks a lot shaunau :) [11:02] jasong_at_apache has joined the channel [11:02] shaunau: thats how it finds the progams you're running from the command line :) [11:02] shaunau: you're welcome [11:02] EmmaCroix: :D [11:02] shaunau: if you want, you can create aliases in ~/.bashrc and run mulitple versions of node at the same time [11:02] mraleph has joined the channel [11:02] vckt has joined the channel [11:02] SvenDowideit has joined the channel [11:03] shaunau: but i'll leave that up to you to figure out :) [11:03] EmmaCroix: No problem, I'll digg the manual [11:03] shaunau: node3.8 myapp etc. [11:03] shaunau: cool [11:03] EmmaCroix: yeah [11:03] shaunau: i think there is something to actually manage that for you.. [11:04] shaunau: nvm? maybe.. i cant remember [11:04] EmmaCroix: never heard of nvm [11:04] EmmaCroix: but i'll google it [11:05] atiti has joined the channel [11:06] shaunau: i'm not sure if thats what its called.. (i dont remember) [11:06] shaunau: you could search for it in npm :) [11:06] EmmaCroix: ok :) [11:06] vckt has joined the channel [11:07] MrTopf has joined the channel [11:08] shaunau: ah sorry, i was wrong its not a node app its a set of shell scripts [11:08] shaunau: https://github.com/creationix/nvm [11:08] shaunau: worth a look still.. [11:10] EmmaCroix: Looks nice shaunau [11:10] EmmaCroix: I'll bookmark it [11:10] EmmaCroix: Going to need that for sure to test new versions before i upgrade [11:11] prettyrobots has joined the channel [11:11] errumm has joined the channel [11:12] ph^ has joined the channel [11:13] ph^ has joined the channel [11:13] samcday: tbranyen, are you around? [11:13] andrewfff has joined the channel [11:15] mikedeboer has joined the channel [11:15] framlin: EmmaCroix: did you try nodejs -v too? [11:15] atiti has joined the channel [11:15] galaxywatcher has joined the channel [11:15] EmmaCroix: framlin: that's actually strange, i get [11:15] EmmaCroix: "The program 'nodejs' is currently not installed. You can install it by typing: sudo apt-get install nodejs " [11:15] EmmaCroix: framlin: node -v works and gives the 0.3.8 [11:16] framlin: in my installations, there is a src-make-installation and one from apt-get istall ... the last installs nodejs [11:16] eee_c has joined the channel [11:16] jetienne: sudo add-apt-repository ppa:jerome-etienne/neoip && sudo apt-get update && sudo apt-get install nodejs <- to install node.js 0.4.4 on ubuntu [11:16] EmmaCroix: framlin: when i do: sudo apt-get install nodejs --> nodejs is already the newest version. [11:17] EmmaCroix: jetienne: I get 'nodejs is already the newest version. ' [11:17] jetienne: sudo add-apt-repository ppa:jerome-etienne/neoip && sudo apt-get update && sudo apt-get install nodejs <- with this ? [11:17] EmmaCroix: that's why I'm confused, why does it start the old node and not the new one (in other words, where is the new one installed?!) [11:18] EmmaCroix: jetienne: same respone, nodejs is already the newest version. [11:18] jetienne: EmmaCroix: sudo apt-get remove nodejs [11:18] jetienne: EmmaCroix: and do it again. [11:18] EmmaCroix: jetienne: The program 'nodejs' is currently not installed. [11:18] EmmaCroix: lol [11:18] framlin: I found thie "nodejs-solution" strage, too, because to get npm running, I had to "re-link" /usr/local/bin/node to nodejs (with ln -s ....) [11:18] jetienne: EmmaCroix: your configration is broken [11:18] EmmaCroix: yeah pretty broken indeed [11:19] EmmaCroix: Any suggestions? [11:19] EmmaCroix: ah wait [11:19] EmmaCroix: /usr/local/bin/node -v gives v0.4.4 [11:20] void_ has joined the channel [11:20] errumm: @EmmaCroix : do you have npm installed? [11:20] Clooth has joined the channel [11:21] EmmaCroix: yes i have npm [11:21] errumm: what v is that showing? [11:21] EmmaCroix: 0.2.19 [11:21] errumm: I had this same issue. [11:21] EmmaCroix: What did you do to solve it? [11:21] samcday: Man, http://mongly.com/ is cool [11:22] errumm: tbh I ended up restarting my terminal and resinstalling [11:22] EmmaCroix: hahaha [11:22] EmmaCroix: ouch, that sucks [11:22] Nexxy has joined the channel [11:22] Nexxy has joined the channel [11:22] errumm: worked second time around and I just assumed that I need not worry :| [11:23] vckt has joined the channel [11:24] EmmaCroix: k [11:24] Sembiance: good morning everyone :) [11:27] fairwinds has joined the channel [11:29] astropirate has joined the channel [11:30] EmmaCroix: I'm off, thanks everyone for the help! [11:30] EmmaCroix: Have a great day [11:34] Fullmoon has joined the channel [11:35] someguy has joined the channel [11:35] someguy: Test [11:36] piscisaureus has joined the channel [11:39] fjakobs has joined the channel [11:43] MikhX has joined the channel [11:46] jamescarr has joined the channel [11:47] some1else has joined the channel [11:54] mc_greeny has joined the channel [11:55] xla has joined the channel [11:57] zomgbie has joined the channel [11:58] eb4890 has joined the channel [12:00] misterncw has joined the channel [12:00] tiagoa has joined the channel [12:07] muhqu_ has joined the channel [12:10] Booths has joined the channel [12:11] onre has joined the channel [12:13] mikedeboer has joined the channel [12:16] hij1nx has joined the channel [12:16] alex_b has joined the channel [12:19] charlenopires has joined the channel [12:23] unomi has joined the channel [12:24] jroes: seems like a lot of the non-minimalist nodejs web frameworks are abandoned, what does the typical dev stack look like? a minimal api backend using express, expresso, and vows, and something like backbone or knockout to drive calls to the api? [12:25] thegreatape has joined the channel [12:25] thegreatape has left the channel [12:25] piscisaureus has joined the channel [12:27] jeromegn: jroes: sounds about right. here's mine: express, mongoose, socket.io, backbone [12:28] piscisaureus: mraleph: here? [12:28] jroes: ah, cool, sounds logical. I'm coming from Rails and I feel a bit disorganized :) [12:28] sjbreen has joined the channel [12:29] caolanm has joined the channel [12:29] Bogh has joined the channel [12:30] Sembiance: jroes: mine is nginx -> fugue -> express -> node_redis -> redis [12:30] jroes: fugue -- the icons? :) [12:30] Sembiance: jroes: https://github.com/pgte/fugue~ [12:30] jroes: ah, unicorn [12:31] Sembiance: err without the tilde [12:31] jroes: gotcha [12:31] Sembiance: ahh yah, your coming from rails, so you've heard of unicorn ;) [12:31] jroes: yeah :) [12:32] scoates has joined the channel [12:32] mscdex: fugue in d minor? :p [12:32] Sembiance: I switched my production web server over to node.js back in december. I've been amazingly impressed with it's stability and low CPU usage. [12:32] Sembiance: my single node.js server handles about 3.9 million requests a day, with no problems at all [12:33] vilhonen_: Sembiance: what did you use before [12:33] Sembiance: vilhonen_: before it was apache -> php -> postgres now it's nginx -> node.js -> redis [12:33] mraleph: piscisaureus: who is calling for me from the depths of python build systems? [12:34] dominictarr has joined the channel [12:34] piscisaureus: mraleph: ... if not the dungeons of cygwin support [12:35] fumanchu182 has joined the channel [12:35] vilhonen_: Sembiance: did you also port your application from php to node.js? [12:35] mscdex: heh [12:35] piscisaureus: mraleph: yes, awesome that you did the review. You are right about the dependency resolution being a bit overkill [12:36] Sembiance: vilhonen_: the PHP scripts were very simple before, they basically just responded to AJAX requests and either saved or retrieved data from postgres. Very little actual back end logic. So converting to node.js was very simple, didn't have to change much of the front end at all, just re-implemented each ajax end point in node.js instead [12:36] piscisaureus: mraleph: what I need is a way to iterate over SIMPLE_OPTIONS in guaranteed order [12:36] Sembiance: vilhonen_: also converted the postgres tables into redis objects (as it made sense, the data model changed a bit of course) [12:36] piscisaureus: mraleph: but I couldn't find out how to do that on python or if it was even supported [12:36] kal-EL_ has joined the channel [12:37] mraleph: piscisaureus: if you split it into two parts and iterate first part first then you'll get guaranteed order :-)) [12:37] piscisaureus: mraleph: yes but we need to split in three parts then [12:37] mraleph: piscisaureus: why? [12:39] Sembiance: About a week ago I updated from node v0.2.5 to v0.4.3 I was a bit worried about making such a huge jump, but things have turned out just great, no problems at all :) [12:39] jelveh has joined the channel [12:40] piscisaureus: mraleph: heh. oh no, I'm thinking about an earlier version where toolchain dependend on OS, but that is no more [12:40] piscisaureus: mraleph: so, ok, I'll split it in two parts [12:41] piscisaureus: mraleph: you happen to know how isolates breaks cygwin? is that something trivial? [12:42] modular has joined the channel [12:42] Booths: I really hate all of Microsoft. https://github.com/LearnBoost/Socket.IO/pull/125 makes no sense, but it's happening to me too. [12:42] mraleph: I heard it does not compile [12:43] mraleph: should be pretty trivial copy and paste from platform-windows/platform-linux [12:44] Nevtus has joined the channel [12:44] Nevtus has joined the channel [12:44] no-gooder has joined the channel [12:45] no-gooder: woww. has anybody seen or used "php.js" before ?? [12:45] piscisaureus: yes. it's no good. [12:45] meso has joined the channel [12:45] no-gooder: piscisaureus, why is that ?? [12:45] V1: Booths: Just add comment to the pull request with more information about the issue. Because I would love to find a way to ditch try{}catch statements in the code [12:45] dominictarr has joined the channel [12:46] kriszyp has joined the channel [12:46] V1: it's optimized for browser, not a webserver no-gooder [12:46] piscisaureus: no-gooder: tell me what php functions you need that have no more-elegant equivalent in JS [12:46] piscisaureus: there are maybe a few like htmlentities() or levenstein() [12:47] alex_b has joined the channel [12:47] piscisaureus: but the implementation of these algorithmic function ususally suck [12:47] Booths: V1: Yeah, I'm looking at it, but it's still irritating that IE does that... :P [12:47] dominictarr has joined the channel [12:49] eyesUnclouded has joined the channel [12:49] no-gooder: piscisaureus, i don't have any exact sample on my mind.But i'm sure there are some functions not exist in js but php.. javascript is new on serverside... [12:50] jtsnow has joined the channel [12:51] no-gooder: V1, oh ok [12:52] heavysixer has joined the channel [12:52] skm has joined the channel [12:53] skm has joined the channel [12:53] skm has joined the channel [12:54] skm has joined the channel [12:54] skm has joined the channel [12:55] skm has joined the channel [12:56] skm has joined the channel [12:56] dnolen has joined the channel [12:56] SvenDowideit has joined the channel [12:56] piscisaureus: no-gooder: there are maybe a few that are not php-specific (strnatcmp, htmlentities, md5). Yes, you can use the php.js implementation if you need a quick fix. But be careful, I've seen examples where the php.js implementation was actually wrong. And often the php.js implementation relies on _other_ php.js function so you end up copying a lot of them. [12:56] skm has joined the channel [12:56] dnolen has joined the channel [12:57] piscisaureus: ACTION brb [12:57] no-gooder: piscisaureus, i was just checking to see what it is. :) [12:59] davidsklar has joined the channel [12:59] piscisaureus: no-gooder: allright :-) I didn't mean to insult you. Try it anyway if you like [12:59] piscisaureus: this was just my humble opinion [13:01] vckt has joined the channel [13:01] rfay_afk has joined the channel [13:02] namelessnotion_ has joined the channel [13:02] matyr_ has joined the channel [13:02] skm has joined the channel [13:03] F1LT3R has joined the channel [13:03] skm has joined the channel [13:04] piscisaureus: mraleph: so, the first group should be PLATFORM_OPTIONS = { os, arch, toolchain } ? [13:06] mraleph: probably. [13:07] jlecker has joined the channel [13:07] Sbioko has joined the channel [13:07] skm has joined the channel [13:08] ryanfitz has joined the channel [13:08] piscisaureus: mraleph: the other thing is, env['CCVERSION'] does not work on mingw for me [13:08] skm has joined the channel [13:08] mraleph: bugger [13:09] mraleph: what does it contain? [13:09] piscisaureus: mraleph: does not exist. keyerror [13:09] mraleph: fuuuuuuu [13:09] skm has joined the channel [13:09] pauls has joined the channel [13:09] mraleph: is your scons new enough? [13:09] piscisaureus: mraleph but we could use CCVERSION if it is set, otherwise fall back to shelling out [13:09] darshanshankar has joined the channel [13:10] saschagehlich has joined the channel [13:10] skm has joined the channel [13:10] willwhite has joined the channel [13:10] piscisaureus: mralpeh: I have 2.0.1.r5134 [13:10] SubStack: /sb end [13:10] skm has joined the channel [13:10] SubStack: >_< [13:11] piscisaureus: mraleph: on cygwin I have only 1.3.1 and there it is defined ... [13:11] skm has joined the channel [13:11] piscisaureus: could be that is is not set because it autodetects msvc and needs an override to use gcc [13:11] doki_pen: is there a generic way to sort by providing a comparator function? [13:11] SubStack: doki_pen: sort() does that! [13:12] doki_pen: ah, cool. but no way with objects? [13:12] doki_pen: never mind [13:12] doki_pen: that doesn't make sense [13:12] SubStack: v8: 'qrxuzdcyaopb'.split('').sort(function (a,b) { return a.charCodeAt(0) - b.charcodeAt(0) }) [13:12] v8bot: SubStack: TypeError: Object b has no method 'charcodeAt' [13:13] SubStack: erm [13:13] doki_pen: any way to get the length of a string in bytes? [13:13] SubStack: v8: 'qrxuzdcyaopb'.split('').sort(function (a,b) { return a.charCodeAt(0) - b.charCodeAt(0) }) [13:13] v8bot: SubStack: ["a","b","c","d","o","p","q","r","u","x","y","z"] [13:13] matschaffer has joined the channel [13:13] doki_pen: SubStack: thanks! [13:13] SubStack: doki_pen: you can convert to a buffer and check the length of that [13:13] Sembiance: so peeps :) [13:14] Sembiance: what's up :) [13:14] c4milo has joined the channel [13:14] doki_pen: SubStack: you rock [13:14] SubStack: > new Buffer('π').length [13:14] SubStack: 2 [13:14] jonaslund has joined the channel [13:14] SubStack: seems to work! [13:14] Sembiance: SubStack++ [13:14] v8bot: Sembiance has given a beer to SubStack. SubStack now has 20 beers. [13:15] doki_pen: hmm.. unicode '?'? [13:15] Sembiance: must be, it's all jibberish in my IRC client :) [13:15] BillyBreen has joined the channel [13:15] SubStack: it's pi! [13:15] doki_pen: oh! [13:15] doki_pen: irssi converted to '?' [13:17] davidvanleeuwen has joined the channel [13:18] xandrews has joined the channel [13:19] zzak has joined the channel [13:19] zzak has joined the channel [13:20] samcday: doki_pen, there's also Buffer.byteLength(str) [13:20] samcday: Not sure how it works internally, but it might be less expensive than creating a buffer [13:20] Sembiance: I should probably enable UTF-8 in my irssi config :) [13:21] fmarceau has joined the channel [13:22] Sembiance: or maybe it's my eterm or font choice [13:22] arpegius has joined the channel [13:23] doki_pen: samcday: right, thanks [13:23] doki_pen: samcday: for me, it's definitely irssi. urxvt displays unicode fine [13:23] herbySk has joined the channel [13:25] j0shua has joined the channel [13:26] dyer has joined the channel [13:26] amacleod has joined the channel [13:27] Poetro has joined the channel [13:27] sonnym has joined the channel [13:28] matjas has joined the channel [13:31] mikegerwitz: /set term_charset utf-8 and if you use screen, `screen -U`...or do `screen -Ux` if you're already in a session [13:32] timmywil has joined the channel [13:32] bitmonk has joined the channel [13:33] digitalsatori has joined the channel [13:37] arpegius has joined the channel [13:37] eventi has joined the channel [13:39] rolando_ has joined the channel [13:40] nonnikcam has joined the channel [13:40] darshanshankar has joined the channel [13:40] nivoc has joined the channel [13:41] no-gooder has joined the channel [13:41] sub_pop has joined the channel [13:43] jano has joined the channel [13:44] MikhX has joined the channel [13:45] boaz_ has joined the channel [13:46] Sembiance has joined the channel [13:47] Sembiance: there, now I think UTF-8 encoded characters will show up in my irssi :) [13:48] kuya has joined the channel [13:48] SubStack: μ [13:48] Sembiance: or not rofl [13:48] Sembiance: I see a funny 'I' then a 1/4 symbol [13:48] kuya: hello, is there any function to load and run a script in the current context? im sure there used to be - but maybe im just mad [13:49] mikegerwitz: heh, supposed to be mu [13:49] SubStack: kuya: there's require('vm').runInThisContext [13:49] SubStack: or runInNewContext takes a context object [13:50] mikegerwitz: http://unicodesnowmanforyou.com/ <- can paste that into the irssi input area to test without sending/receiving :) [13:50] davidwalsh has joined the channel [13:50] mytrile has joined the channel [13:51] Sembiance: SubStack: was that symbol an upside down u? [13:51] Sembiance: SubStack: err, I mean a funny looking u [13:51] bwinton: Sembiance: Yep. [13:51] prof-freud has joined the channel [13:52] Sembiance: hrm, so it works with xterm/default font, but noth with Eterm/terminus font [13:52] Sbioko has left the channel [13:53] aheckmann has joined the channel [13:54] micheil has joined the channel [13:54] ralphholzmann has joined the channel [13:55] eee_c has joined the channel [13:56] zomgbie has joined the channel [13:56] kuya: ACTION got himself very confused  [13:57] montylounge has joined the channel [13:57] kmiyashiro has joined the channel [13:59] vckt has joined the channel [14:01] chester has joined the channel [14:03] bradleymeck has joined the channel [14:03] tiagoa has joined the channel [14:05] JianMeng1 has joined the channel [14:07] yhahn has joined the channel [14:07] arpegius_ has joined the channel [14:08] brianmario has joined the channel [14:09] Vladimir1 has joined the channel [14:10] davidvanleeuwen has joined the channel [14:10] timmywil has joined the channel [14:11] Sami_ZzZ_ has joined the channel [14:12] sivy has joined the channel [14:12] vipaca has joined the channel [14:15] tiagoa has joined the channel [14:16] micheil: ryah: you about? [14:17] mraleph: piscisaureus: :-( then lets leave it with subprocess *sigh* [14:17] piscisaureus: mraleph: allright [14:18] mraleph: piscisaureus: did you test it one something like solaris/linux etc? [14:18] micheil: anyone know which would be faster: creating a buffer using: var buf = new Buffer([byte1, byte2, byte3, byteN]) [14:18] piscisaureus: mraleph: i'll add a comment. It has been in node core for some time now and I have never heard anybody complain about it [14:18] stagas_ has joined the channel [14:18] Yuffster has joined the channel [14:18] mraleph: nice [14:19] kuya: can anyone explain whats happening here - its clearly not what i think should be happening http://dpaste.com/526665/ [14:19] ceej has joined the channel [14:19] micheil: or whether using an integer and then populating the array; which would be quicker? [14:19] dylang has joined the channel [14:19] saschagehlich: kuya: what is context.z? it's not defined ;) [14:19] kuya: saschagehlich: should be set when y() is called [14:20] micheil: kuya: maybe this.z? [14:20] saschagehlich: kuya: ah yeah but it's not defined inside your testscript [14:20] saschagehlich: sorry, was confused. now I get it. micheil is right [14:20] kuya: micheil: that gives undefined [14:20] mraleph: only measurement can show :-) creating and populating might be faster, especially on the most recent version of V8 [14:20] mwdev has joined the channel [14:20] micheil: so, the testScript should read: [14:20] bradleymeck: kuya what really happens is a shallow copy of your sandbox [14:21] kuya: `this` inside runInNewContext doesnt seem to work quite right [14:21] ralphholzmann: hey friends - working on a node.js dropbox app - dropbox api says it assumes all file uploads are interpreted as "literal bytes". How would I output a file buffer in "literal bytes" ? someBuffer.toString('binary') fails. [14:21] micheil: "y(); console.log(this.z);" [14:21] kuya: micheil: that prints undefined [14:21] kuya: bradleymeck: i wondered if something like that was happening [14:21] bradleymeck: kuya your sandbox != the context sadly :( [14:22] k1ttty has joined the channel [14:22] micheil: ralphholzmann: there's no such thing as toString('binary') [14:22] micheil: iirc. [14:22] mikegerwitz: ralphholzmann: You can simply write the buffer to the stream. Make sure you specify binary encoding when writing. e.g. write( buffer, 'binary' ) [14:22] kuya: bradleymeck: is there any way around it? [14:23] ralphholzmann: mikegerwitz: thanks, I'll give it a try [14:23] bradleymeck: kuya, not sure, (function(){return this})().z = 1 might work, but that would be funky [14:23] kuya: ACTION blinks [14:23] Gruni has joined the channel [14:24] kuya: seems no [14:24] kuya: *not [14:25] mwdev: Any helpful folks here have some time to help me get up and running with node.js? I have one of two ways I'm 'almost' there. 1. I've implemented https://github.com/rsms/ec2-webapp to get an ec2 instance up. I think I've finished the process, but now I have no idea how to start actually writting code and where to put it. 2. I have cygwin on my machine and when I try to ./configure I get [14:25] mwdev: that it can't find a cxx compiler although I know one is installed. [14:25] willwhite has joined the channel [14:27] NinjaFox has joined the channel [14:27] ricklon has joined the channel [14:28] davidwalsh has joined the channel [14:28] daskog has joined the channel [14:28] MarcosBL has joined the channel [14:29] MarcosBL: lo all [14:29] dominictarr has joined the channel [14:29] XakBooT has joined the channel [14:29] dantalizing has joined the channel [14:29] dantalizing has joined the channel [14:30] mwdev: no one? sigh. I don't understand how it can be so hard to get a piece of software running. I've been trying for 2 weeks. [14:30] XakBooT: please help me [14:30] MarcosBL: any idea on how to get proper utf8 encoding out of the response.writes(data,"utf8") commands from createserver() ? [14:30] colinclark has joined the channel [14:30] trotter has joined the channel [14:30] MarcosBL: already set response.writeHead(200, {"Content-Type": "text/html; charset=UTF-8"}); | already doing responde-write(data,'utf8'); | already set document itself to UTF8-NoBOM [14:30] XakBooT: i want to make an node extension that will build HTML5 Code Just-In-Time [14:31] babykangaroo has joined the channel [14:31] XakBooT: please help me with that extension [14:31] bradleymeck: mwdev no idea where ec2-webapp came from and as for cygwin, install gcc4 stuff [14:31] MarcosBL: headers come fine from request (as seen in firebug) but accented chars just show as square boxes :E [14:31] piscisaureus: mwdev: @1: I don't know. @2 Install gcc4 and g++4, if it is not detected look at build/configure.log [14:32] XakBooT: i must make node to serve 8 websites and with NoSQL DB Redis 2.x.x [14:32] dantaliz1ng has joined the channel [14:32] mwdev: should I uninstall gcc? [14:32] mwdev: I have both gcc and gcc4 installed and maybe it is getting confused? [14:32] jakehow has joined the channel [14:32] Sor3nsen has joined the channel [14:33] XakBooT: so you just need a good programmer+Sysadmin [14:33] losing has joined the channel [14:33] ph^ has joined the channel [14:33] eee_c has joined the channel [14:33] dantalizing has joined the channel [14:33] bradleymeck: mwdev have you rebased and you have g++4 installed as well? [14:34] mwdev: here is a new one:Checking for library dl : 4 [main] python 8680 C:\cygwin\ [14:34] mwdev: bin\python.exe: *** fatal error - unable to remap \\?\C:\cygwin\lib\python2.6\li [14:34] mwdev: b-dynload\time.dll to same address as parent: 0x360000 != 0x3A0000 [14:34] mwdev: Stack trace: [14:34] mwdev: Frame Function Args [14:34] mwdev: 1AD89988 6102792B (1AD89988, 00000000, 00000000, 00000000) [14:34] mwdev: 1AD89C78 6102792B (6117DC60, 00008000, 00000000, 6117F977) [14:34] mwdev: 1AD8ACA8 61004F3B (611A6FAC, 6124A274, 00360000, 003A0000) [14:34] mwdev: End of stack trace [14:34] mwdev: 4 [unknown (0x1BC8)] python 3312 fork: child 8680 - died waiting for dll l [14:34] mwdev: oading, errno 11 [14:34] mwdev: not found [14:34] thorsteinsson has joined the channel [14:34] piscisaureus: yes, rebase [14:34] bradleymeck: mwdev rebase [14:34] babykangaroo: I've been looking into three.js and node.js for web game development. How do people here feel about where web game development will be in the next couple years? I personally feel that it could be pretty awesome. I ask this because I'm wanting to invest in learning a new platform for game dev but trying to decide between mobile and web. [14:34] XakBooT: PEOPLE PLEASE HELP ME I WANT TO MAKE A NODE EXTENSION THAT WILL BUILD HTML5 CODE WITH JUST-IN-TIME TECHNIQUE [14:34] mwdev: what does rebase mean? Start cygwin from scratch? [14:35] bradleymeck: xakboot not sure what you mean html5 code JiT [14:35] mwdev: start the install I mean? [14:35] piscisaureus: mwdev: https://github.com/joyent/node/wiki/Building-node.js-on-Cygwin-%28Windows%29 [14:35] k1ttty has joined the channel [14:35] XakBooT: yes [14:35] piscisaureus: mwdev: rebasing is explained in the build problems section [14:35] mwdev: awesome! [14:35] XakBooT: i want to build an extension to make easier to past html code into node scripts [14:35] bradleymeck: babykangaroo i think after talking to the IE9 crew at SxSW you will be stuck with canvas and not webgl, or everyone will be using chromeframe [14:35] mwdev: I had read this but wasn't getting it. [14:35] XakBooT: i need to serve 8 websites [14:36] trotter has joined the channel [14:36] bradleymeck: http://badassjs.com/post/4064873160/webgl-2d-an-implementation-of-the-2d-canvas-context-in might speed it up [14:36] XakBooT: bradlemeck do you understand me [14:36] babykangaroo: bradleymeck: that blows [14:36] montylounge has joined the channel [14:36] vckt has joined the channel [14:36] jonaslund: piscisaureus: hee [14:36] jonaslund: hey [14:37] bradleymeck: xakboot, yes, but it more sounds like you want to use expressjs ontop of node for its templating engine / built in stuff [14:37] babykangaroo: bradleymeck: cool I'll check that out [14:37] piscisaureus: jonaslund: long time no see :-) [14:37] matjas has joined the channel [14:37] XakBooT: ok [14:37] ralphholzmann: mikegerwitz: !!! THAT DID IT! [14:37] ralphholzmann: OMG OMG OMG I've been trying to fix this issue for like 5 days [14:37] ralphholzmann: sooo many hearts!!! [14:37] jonaslund: piscisaureus: yes, sorry about that. i forced myself offline because i felt that i had to focus on my companys legal obligations [14:37] ralphholzmann: <3 <3 <3 THANK YOU [14:37] arpegius_ has joined the channel [14:37] aho: webgl 2d canvas got a fairly high per draw call overhead, but the drawing itself is fast [14:37] piscisaureus: jonaslund: np [14:37] XakBooT: bradleymeck, it is ok [14:38] jonaslund: piscisaureus: little did i know that me and all in my family would run into a ton of sickness for a month [14:38] mikegerwitz: ralphholzmann: I'll admit, that startled me a bit. Was passively writing notes, heh [14:38] mikegerwitz: ralphholzmann: np. Glad I could help [14:38] aho: so, drawing few big transformed images is faster [14:38] jonaslund: piscisaureus: stomach sickness, puking sickness, chickenpox, seasonal flu.. you name it :) [14:38] piscisaureus: ouch. [14:38] indutny1 has joined the channel [14:38] piscisaureus: well I hope you're allright now [14:38] aho: drawing many small things (e.g. lots of 1x1 and 2x2 rects) is slower [14:38] jonaslund: piscisaureus: : yeah getting up to speed [14:39] bradleymeck: aho, good to note [14:39] jonaslund: piscisaureus: what's new on the node (esp win?) front since january ? [14:39] aho: globalAlpha also doesnt work [14:39] aho: or things like #fff [14:39] aho: (shorty) [14:39] XakBooT: but i want to node understand that http packets come with different hostname and i want to node understand and handle and answer it [14:39] ralphholzmann: mikegerwitz: haha, sorry, just been working on this for quite a long time and its been a blocker for, well, basically the entire app [14:39] piscisaureus: jonaslund: well erm, no very concrete results. Ryan and I are refactoring parts of the event loop to support iocp on windows [14:39] kenbolton has joined the channel [14:40] XakBooT: bradleymeck: but i want to node understand that http packets come with different hostname and i want to node understand and handle and answer it [14:40] bradleymeck: xakboot, just check the host header [14:40] jonaslund: piscisaureus: ah cool [14:40] Me1000 has joined the channel [14:40] aho: the webgl build of opera is interesting, by the way [14:40] aho: *everything* is drawn via opengl [14:40] mikegerwitz: ralphholzmann: haha, nah you woke me up :) [14:40] XakBooT: bradleymeck: it is like ports.conf in apache or what ?? [14:40] aho: 2d canvas included [14:40] aho: it's bloody fast [14:40] mwdev: It is looking like that worked guys! Thanks for pointing me to it. [14:40] MrTopf has joined the channel [14:40] sirkitree has joined the channel [14:40] piscisaureus: jonaslund: but we're still working on that. But since two weeks I get paid by cloudkick/rackspace so that might help to speed things up [14:41] XakBooT: bradleymeck, are you pro programmer on node.js [14:41] bradleymeck: xakboot not exactly, it is a header sent by clients saying the hostname they want to connect to [14:41] bradleymeck: perhaps, but i tend to stay busy [14:41] jonaslund: piscisaureus: that's awesome! [14:41] XakBooT: bradleymeck, yes i understand it and i want to make node recognize it [14:41] ralphholzmann: mikegerwitz: in case you're interested, it seems that both the buffer and the request needed to be written in binary. e.g. while building the "post body" I needed to do buffer.toString('binary') as well as request.write(postBody, 'binary') [14:42] XakBooT: bradleymeck, what extension do i need [14:42] mwdev: has anyone here deployed node to an ec2 instance? [14:42] markc_ has joined the channel [14:42] bradleymeck: it will be included in requests, ie. function(req,res) {req.headers.host//this is the value you want} [14:42] pdelgallego has joined the channel [14:42] jonaslund: piscisaureus: i think i'm gonna try to take a stab at learning git properly since my msvc work is prolly really outdated by now so i need to try to rescue as much work as possible :) [14:43] paulrobinson has joined the channel [14:43] paulrobinson has left the channel [14:43] ralphholzmann: although, now im worried about the fact that 'binary' is deprecated and will be removed in future versions of node :/ [14:43] piscisaureus: jonaslund: awesome! I still want this msvc stuff (finally got my MSDN ultimate subscription, yay) but atm I cannot really wrap my head about so much projects at once. So I'm going to finish iocp first before working on msvc. [14:43] jonaslund: piscisaureus: so is mingw on par with cygwin now ? [14:44] piscisaureus: not really [14:44] piscisaureus: well it depends [14:44] jonaslund: i mean FUNCTIONALLY.. not in regards to performance [14:44] bradleymeck: do you have a donation point for your mingw work? [14:44] jonaslund: bradleymeck: well rackspace pays him so well :D [14:45] dyer has joined the channel [14:45] piscisaureus: jonaslund: well most stuff works but cygwin nicely overloads signals, kill, ansi coloring, symlinks etc and we didn;t really finish that yet [14:45] jonaslund: piscisaureus: or do we have unix:isms and win:isms mucking up mingw functionally compared to cygwin ? [14:46] jonaslund: hmmm.. feels like details or like things that are trouble enough on windows as:is [14:46] piscisaureus: jonaslund: yes, that's true [14:46] jonaslund: hmmm [14:46] jonaslund: does multi-node work with cygwin and/or mingw ? [14:47] jonaslund: (do you binarify the pipes?) [14:47] piscisaureus: jonaslund: quite some stuff is also fairly easy to implement but just isn't so far [14:47] piscisaureus: yes pipes are binarified [14:47] jonaslund: nice [14:47] piscisaureus: they're sockets atm actually, will be named pipes [14:47] piscisaureus: in the future [14:47] dguttman has joined the channel [14:47] jonaslund: not std pipes ? [14:48] jonaslund: or maybe they're not std pipes on *nix either ? [14:48] piscisaureus: jonaslund: I think on *nix they're ususally domain sockets [14:48] jonaslund: oh ok [14:49] gozala has joined the channel [14:49] ralphholzmann: Does anyone know why Buffer.toString('binary') is being deprecated? [14:49] piscisaureus: jonaslund: should not matter, the only thing that matters is that whatever you stuff in there comes out unaltered at the other end :-) [14:49] mscdex: ralphholzmann: because most core functions can deal with Buffers directly now [14:49] jonaslund: ralphholzmann: the point is that you can write the bytes manually to a buffer ie: aBuffer[0]=byteOne [14:50] ralphholzmann: gotcha. So what if I app depends on that functionality [14:50] ralphholzmann: am I stuck on v0.4 ? [14:50] piscisaureus: bradleymeck: I have no donation point, and money is not really an issue atm. But if you can donate me some time that'd be awesome, I feel 168 hours a week is quite tight [14:50] ralphholzmann: or is there a way I'll be able to get data in that format in the future? [14:51] frieza_ has joined the channel [14:51] kevwil has joined the channel [14:51] bradleymeck: piscisaureus if you throw me some tickets / issues to work on i can learn the mingw base and start up on small stuff [14:51] unomi has joined the channel [14:52] jonaslund: bradleymeck: you can help me test the new build system once i get it up to par again [14:52] bradleymeck: k [14:52] piscisaureus: ^-- :-) [14:52] jonaslund: bradleymeck: last i worked on it was around the release of 4.0 , been busy with other stuff since then [14:53] jonaslund: so i need to track alot of changes [14:53] jonaslund: i should begin with some separate commits with regards to small compiling fixes [14:53] jonaslund: because i have a faint memory of me doing something like 30 small changes in c++ files just to get msvc compilation [14:54] jonaslund: what git clients do you guys use btw ? [14:55] jonaslund: i used a git client on a linux VM but now i'm sitting at uni and the network setup is different from home [14:55] MarcosBL has left the channel [14:55] jonaslund: (on windows thatis) [14:55] mwdev: guys....I ran node on my ec2 box....typed in some stuff and now my putty window has ... [14:55] ElDios: guys where do I head to learn jade? (obviously other than reading directly in the code) :) [14:56] mwdev: and everytime I type something I just get ... [14:56] mwdev: any idea how to stop that? [14:56] bradleymeck: cygwin's git generally [14:56] jonaslund: bradleymeck: you have a pointer on how to fix the cygwin certificates? i remember looking at something about that but never getting it working [14:57] bradleymeck: idk i havent had an issue yet [14:57] jonaslund: hrrm [14:57] bradleymeck: win7 64 ult [14:58] mscdex: mwdev: it means the interpreter is expecting more input [14:58] beawesomeinstead has joined the channel [14:58] beawesomeinstead has joined the channel [14:58] mscdex: mwdev: you can do ctrl+c or enter ".break" to get out of it [14:59] mwdev: thank you! [14:59] mwdev: now how do we quite node? [15:00] piscisaureus: jonaslund: I use msysgit and (sometimes) tortoisegit [15:00] V1: OMFG, 5'o clock. FREEEDOM [15:01] jonaslund: $ git clone https://github.com/joyent/node.git [15:01] jonaslund: Cloning into node... [15:01] marienz has joined the channel [15:01] jonaslund: error: SSL certificate problem, verify that the CA cert is OK. Details: [15:01] jonaslund: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify faile [15:01] jonaslund: d while accessing https://github.com/joyent/node.git/info/refs [15:01] timcosgrove has joined the channel [15:01] piscisaureus: *suck [15:01] timcosgrove has left the channel [15:01] jonaslund: hmm [15:01] jonaslund: what's the git: protocol link ? [15:01] jonaslund: git://github.com/joyent/node.git [15:02] strmpnk has joined the channel [15:02] tfe_ has joined the channel [15:02] kmiyashiro has joined the channel [15:02] jonaslund: ah that works [15:03] jonaslund: let me go shame myself a bit :) [15:03] dominictarr has joined the channel [15:03] blkcat has joined the channel [15:03] briznad has joined the channel [15:03] paulrobinson_ has joined the channel [15:04] tilgovi has joined the channel [15:04] gerad has joined the channel [15:05] tbranyen: samcday_away: ping [15:05] dominictarr has joined the channel [15:06] no-gooder has joined the channel [15:06] paulrobinson__ has joined the channel [15:08] davidascher has joined the channel [15:08] arpegius has joined the channel [15:09] jonaslund: piscisaureus: ssl state on win32 ? (cygwin/mingw) [15:09] piscisaureus: jonaslund: works on either. [15:09] jonaslund: ok cool [15:10] piscisaureus: jonaslund: to build on mingw, c https://github.com/joyent/node/wiki/Building-node.js-on-mingw [15:10] piscisaureus: jonaslund: on mingw node needs to be able to find openssl [15:10] jonaslund: ok cool [15:11] flou has joined the channel [15:11] matyr has joined the channel [15:12] jonaslund: oohh [15:12] jonaslund: i see you found a good solution for the msvc troubles [15:12] mattrobenolt has joined the channel [15:13] jonaslund: (atleast alot cleaner that those early hacks that was around) [15:14] dominictarr has joined the channel [15:15] XakBooT has left the channel [15:17] BillyBreen has joined the channel [15:17] useware has joined the channel [15:18] bitmonk has joined the channel [15:18] bjtitus has joined the channel [15:19] k1ttty has joined the channel [15:19] ohtogo has joined the channel [15:21] jtrally has joined the channel [15:21] seanouimet has joined the channel [15:28] yinkei has joined the channel [15:28] tokumine has joined the channel [15:28] liquidproof has joined the channel [15:29] prettyrobots has joined the channel [15:30] mif86 has joined the channel [15:32] jonaslund: gotta move home now [15:32] jonaslund: back tonight [15:32] jakehow has joined the channel [15:32] chapel: http://substack.net/images/browserify/browserify.png https://github.com/substack/node-browserify [15:33] SubStack: ACTION adds some art to the readme [15:35] yozgrahame has joined the channel [15:37] softdrink has joined the channel [15:37] sprout has joined the channel [15:38] arpegius has joined the channel [15:38] tjholowaychuk has joined the channel [15:39] lukus has joined the channel [15:41] yhahn: h [15:41] bradleymeck: i [15:42] sprout has joined the channel [15:43] lukus has joined the channel [15:44] stephank has joined the channel [15:44] atiti has joined the channel [15:44] Sbioko has joined the channel [15:45] Me1000 has joined the channel [15:45] Sbioko: hi [15:45] fangel has joined the channel [15:45] wilmoore has joined the channel [15:47] lukegalea has joined the channel [15:50] f1lt3r_bocoup has joined the channel [15:50] mytrile has joined the channel [15:52] piscisaureus: mraleph: 1 down [15:52] mraleph: \o/ [15:53] matjas has joined the channel [15:54] paulrobinson has joined the channel [15:54] prettyrobots: piscisaureus: You're working on Windows? [15:54] piscisaureus: yes [15:54] prettyrobots: piscisaureus: Node.js Windows? [15:55] piscisaureus: yes [15:55] prettyrobots: piscisaureus: Do you have a repo or a blog or something to look at? [15:56] piscisaureus: prettyrobots: my git fork is at http://github.com/piscisaureus/node but there's not much interesting stuff to see there [15:56] noahcampbell has joined the channel [15:56] piscisaureus: no blog, mayble I'll do one on blog.nodejs.org one day [15:56] paulrobinson has left the channel [15:56] piscisaureus: I think people would be interested but often I feel more like coding that writing about coding :-) [15:57] piscisaureus: is more time-efficient too ;-) [15:57] prettyrobots: I know. [15:57] Yuffster_work has joined the channel [15:58] indutny has joined the channel [15:58] willwhite has joined the channel [15:58] dyer_ has joined the channel [15:59] prettyrobots: It's hard. [15:59] McMAGIC-- has joined the channel [15:59] prettyrobots: To write about it. [15:59] paulrobinson_ has joined the channel [15:59] prettyrobots: I've read through: http://tinyclouds.org/iocp-links.html [15:59] prettyrobots: That's well written. [16:00] dyer__ has joined the channel [16:00] EyePulp has joined the channel [16:00] devinus has joined the channel [16:01] prettyrobots: I'd been reading Windows Systems Prorgamming. [16:01] prettyrobots: ryah summed it up pretty good, the parts that I'd researched, socket and file I/O. [16:02] piscisaureus: prettyrobots: yes that's written by ryah while he was trying to understand what I was doing [16:02] robotarmy has joined the channel [16:02] piscisaureus: it's not 100% accurate but pretty close :-) [16:02] fjakobs has joined the channel [16:02] KellyM has joined the channel [16:03] codivan has joined the channel [16:03] Vladimir1 has joined the channel [16:03] prettyrobots: Wow. So, development is on your local machine? [16:04] mojodna has joined the channel [16:04] ryanfitz has joined the channel [16:05] marcosvm has joined the channel [16:05] hornairs has joined the channel [16:05] prof-freud has joined the channel [16:05] bitmonk has joined the channel [16:06] sh1mmer has joined the channel [16:06] jtsnow has left the channel [16:06] eresair has joined the channel [16:06] piscisaureus: prettyrobots: a fair share is on github by I did not care to polish it and it is all utterly unfinished [16:06] RushPL: I know it's not a specifically node.js question but I wonder if any of you know of a .NET implementation of Socket.IO? [16:07] kmiyashiro has joined the channel [16:07] Evet has joined the channel [16:08] prettyrobots: piscisaureus: How are you building? MinGW? [16:08] arpegius_ has joined the channel [16:08] sivy has joined the channel [16:09] dingomanatee has joined the channel [16:09] MikhX has joined the channel [16:10] whatcodecraves has joined the channel [16:10] bradleymeck: rushpl there is not one, there is a websocket impl though somewhere [16:10] saikat has joined the channel [16:10] eb4890 has joined the channel [16:11] lessthanzero has joined the channel [16:11] prettyrobots: piscisaureus: or Cygwin? [16:12] micheil: RushPL: I'd actually recommend looking at things like pusher.com for using websockets in your traditional stack [16:12] mAritz: javascript:(function(){$("img:visible").each(function(){var a=$(this),b=a.height(),c=a.width();c>30&&b>30&&a.attr("src","http://placekitten.com/"+c+"/"+b)})})() [16:12] bradleymeck: aaaah [16:12] mAritz: post it to your addressbar :D [16:12] s0urce has joined the channel [16:12] s0urce: hi [16:12] dmcquay has joined the channel [16:13] ilya has joined the channel [16:13] bradleymeck: mAritz, add ;undefined to the end for some oddities [16:13] mAritz: huh, what's that supposed to fix? [16:13] bradleymeck: IE6 [16:13] piscisaureus: prettyrobots: erm, I'm now working on mingw but in the future we targe msvc [16:13] piscisaureus: *target [16:13] mAritz: ie6... pfffft :P [16:14] ilya: Hi all. Does anybody know how to specify cookie path in response.setHeader()? [16:14] prettyrobots: piscisaureus: Yes. I'm sure. But, you're using mingw now because that's where it builds. [16:14] bradleymeck: mAritz IE's javascript url handling is a bit odd if done in the address bar returns are treated as values even if undefined (forget the exact situation) [16:14] gozala has joined the channel [16:14] RushPL: bradleymeck: yeah I know .. but I need fallback. I was considering rewriting socketio-java to C# ... micheil: I'll see that link, thanks. [16:14] dragunov11 has joined the channel [16:14] prettyrobots: piscisaureus: Thanks. [16:14] mAritz: bradleymeck: okay, thanks :) [16:14] bradleymeck: ilya cookie path would be set like in the rfc, some helper libs are around [16:15] micheil: RushPL: simply because things like websockets generally work best in an asynchronous style environment, also, to scale them you can hit issues, better to let others solve them for you. [16:15] ilya: bradleymeck: I'd prefer to use node's defaul libs, though. And thanks, I'll check out RFC. [16:15] k1ttty has joined the channel [16:16] mike5w3c has joined the channel [16:16] micheil: RushPL: that is, unless of course your server needs to act on the messages being sent to it by clients [16:16] micheil: in which case, most of the current WebSockets as a Service or Platform providers fall short [16:17] RushPL: micheil: of course it does. ;) [16:17] ilya: bradleymeck: I'm doing response.setHeader("Set-Cookie","Path=/"]); but it doesn't affect the path. [16:17] RushPL: micheil: but it is always good to know your options. We still evaluate them. [16:18] Sbioko has left the channel [16:18] bradleymeck: ilya the path of cookies need the name of the cookie you are setting the path on, it is not a global thing [16:18] flippyhead has joined the channel [16:18] mikeal has joined the channel [16:19] isaacs has joined the channel [16:20] ilya: bradleymeck: and I would do that by setting name in the same header? [16:21] bradleymeck: you need to set a full cookie in the header (name / value / path / etc) that you want on that cookie [16:21] bradleymeck: rest should be defaulted [16:22] liar has joined the channel [16:22] tytsim has joined the channel [16:23] dnyy has joined the channel [16:23] ilya: I only need to set 1 thing in the cookie: response.setHeader("Set-Cookie", ["id=123", "Path=/"]); [16:24] davidascher has joined the channel [16:25] markc__ has joined the channel [16:25] pyrony has joined the channel [16:25] dominictarr has joined the channel [16:25] norviller has joined the channel [16:25] bradleymeck: setHeader is treating the id and path as 2 different headers, use setHeader("Set-Cookie",["id=123; Path/"]) [16:26] synkro has joined the channel [16:26] bradleymeck: ilya^ [16:26] synkro: hi [16:26] ilya: oooooooooooooooooh [16:26] ilya: damn it [16:26] ilya: thanks! [16:26] dominictarr has joined the channel [16:27] kmiyashiro has joined the channel [16:27] eee_c has joined the channel [16:27] tbranyen: sup ilya [16:27] ilya: tbranyen: lol, hey :) [16:27] ilya: just working on that session stuff [16:28] ilya: ...still... [16:29] tbranyen: >_< [16:29] ilya: yeah, i know, ridiculous [16:31] willwhite has joined the channel [16:31] broofa has joined the channel [16:32] davidascher has joined the channel [16:34] tfe_ has joined the channel [16:34] tfe_ has joined the channel [16:34] sprout has joined the channel [16:34] perezd has joined the channel [16:35] fjakobs has joined the channel [16:36] siculars has joined the channel [16:37] mike5w3c has joined the channel [16:38] gnagno has joined the channel [16:38] arpegius has joined the channel [16:38] no-gooder has joined the channel [16:38] admc1 has joined the channel [16:39] MattJ has joined the channel [16:40] Kenosis has left the channel [16:41] emattias_ has joined the channel [16:42] no-gooder: i'm trying to build chat application with node. what kind of way should i follow to build dynamic chat rooms? has anybody ever did that tih kind of thing? [16:42] brianmario has joined the channel [16:42] no-gooder: this* tih [16:43] EyePulp: no-gooder: it's been done a few different ways. What's your target userbase have for clients/browsers? [16:43] datapimp has joined the channel [16:43] creationix has joined the channel [16:44] no-gooder: browsers [16:44] mikegerwitz: https://github.com/ry/node_chat is a very basic example, if you like http://chat.nodejs.org [16:45] tilgovi has joined the channel [16:46] vckt has joined the channel [16:46] mhooker has joined the channel [16:46] dmcquay has joined the channel [16:47] steph021 has joined the channel [16:47] JianMeng1 has left the channel [16:47] dgathright has joined the channel [16:47] bradleymeck: i would use socket.io instead of doing it the hard ways [16:47] micheil: no-gooder: try looking into websockets, there's two modules for that: node-websocket-server and socket.io [16:48] micheil: ACTION is actually working on node-websocket-server 2.0.0 [16:48] bradleymeck: just be sure if you are doing broadcasts of some kind you need to track the clients yourself [16:48] micheil: current stable is 1.4.03 [16:48] no-gooder: mikegerwitz, these are simple chat examples. the problem in this examples every "entry" goes to every clients. [16:48] perezd: in node, whats the cleanest way to resize images? [16:49] micheil: perezd: use something like imagemagick? [16:49] micheil: or transload.it [16:49] bradleymeck: no-gooder, just keep a list of client ids var rooms = {"myroom":{clientid:ClientObject (generally a websocket)}} [16:49] bradleymeck: s/ids/ids, [16:49] perezd: micheil: yeah, was wondering what specific library was recommended [16:50] micheil: no-gooder: it's actually a fairly trivial thing to do; you need to a) have a concept of a room, b) have a concept of a room manager [16:50] micheil: although, I wouldn't recommend storing websocket instances or connection instances in your rooms object [16:50] fairwinds has joined the channel [16:51] micheil: just assign the connections a connection id, then store that ID [16:51] mcantelon has joined the channel [16:51] bradleymeck: pff [16:51] micheil: (node-websocket-server does this for you) [16:51] luke` has joined the channel [16:51] dominictarr has joined the channel [16:51] JohnnyL has joined the channel [16:52] JohnnyL: have any of you implemented an Actor based concurrency model with js? [16:52] luke`_ has joined the channel [16:52] aklt has joined the channel [16:52] mikedeboer_ has joined the channel [16:52] davida has joined the channel [16:53] technoweenie has joined the channel [16:53] dguttman has joined the channel [16:53] dominictarr has joined the channel [16:54] gmci has left the channel [16:54] mAritz has joined the channel [16:54] bradleymeck: johnnyl not really, closest is still workers right now [16:55] dominictarr has joined the channel [16:55] NinjaFox has joined the channel [16:57] NinjaFox: anyone know how to kill a socket connection in socket io server side ? [16:57] bradleymeck: tjholowaychuck, does cluster support basic routing (for host name in particular?) [16:57] tjholowaychuk: bradleymeck: nope [16:57] bradleymeck: bleh [16:57] tjholowaychuk: its not a proxy [16:57] pquerna: tjholowaychuk: hey, i've got a question about how a middleware should... well, let two people parse the body. [16:58] doki_pen: I have a socket.io server running with HTTP on port 8000, but I put the normal http stuff behind a proxy and the public port is 80. [16:58] doki_pen: the client is trying to connect to localhost:8000 instead of mypublichost:80 [16:58] some1else has joined the channel [16:58] doki_pen: anyway to fix/ [16:58] pquerna: tjholowaychuk: https://gist.github.com/497ed27276a286d029ca [16:59] mikl has joined the channel [16:59] davidascher has joined the channel [16:59] pquerna: tjholowaychuk: specifically, if you want to watch the length of a body that is being pushed in, but i've already called next(), because i wanted to let the next middleware parse the body too [16:59] tjholowaychuk: pquerna: I have a limit() middleware [16:59] CIA-1: node: 03Ryan Dahl 07v0.4 * r1768c72 10/ doc/api/tls.markdown : Add doc note about STARTTLS - http://bit.ly/hnbrZk [16:59] pquerna: tjholowaychuk: oh? [17:00] tjholowaychuk: pquerna: but the problem is that node keeps emitting "data" events [17:00] tjholowaychuk: so you're not really helping much in that sense [17:00] piscisaureus: mraleph: still with us? [17:00] yozgrahame has joined the channel [17:00] mraleph: piscisaureus: a bit busy [17:00] tjholowaychuk: pquerna: I was pumping a 1G movie through node to test the limit() thing, and realized it wasn't helping at all because all that data was still going through node [17:00] tjholowaychuk: and I crashed it pretty easily [17:00] mikeal has joined the channel [17:01] tjholowaychuk: so all you can really do is close the connection [17:01] pquerna: tjholowaychuk: sigh [17:01] JohnnyL: bradleymeck: k [17:01] tjholowaychuk: I really wanted to respond 413 [17:01] FireFly has joined the channel [17:01] doki_pen: nevermind [17:01] doki_pen: ACTION dumb [17:01] pquerna: tjholowaychuk: okay, but mostly, I wanted a way to stop the rest of the processing [17:01] pquerna: like the other middlewares/handler etc [17:01] pquerna: but i guess just doing req.transport.close() [17:02] piscisaureus: mraleph: This error known to you? [17:02] piscisaureus: src/preparser-api.cc: In function ‘v8::PreParserData v8::Preparse(v8::UnicodeInputStream*, size_t)’: [17:02] piscisaureus: src/preparser-api.cc:195: error: ‘ScannerConstants’ was not declared in this scope [17:02] piscisaureus: A simple yes or no will suffice for now :-) [17:02] tjholowaychuk: pquerna: looks fine, or is it not working? [17:02] pquerna: tjholowaychuk: the only other option i could think of, is to buffer it to disk, and don't call next() until you know its smaller than your limit [17:03] pquerna: tjholowaychuk: well, it calls next() before parsing the body, so whatever else is running will keep running [17:03] tjholowaychuk: right [17:03] j0shua has joined the channel [17:03] Sembiance has joined the channel [17:03] tjholowaychuk: pquerna: yeah unfortunately there is no easy way currently to "branch out" and hit the end-point when everything async is ready [17:03] tjholowaychuk: it would be a complex map of dependencies almost [17:03] JohnnyL has left the channel [17:04] tjholowaychuk: if something async say needs a session first etc [17:04] tjholowaychuk: it would be awesome, but I think to confusing for people in general [17:04] pquerna: yeah, almost need a better way to pause in general though [17:04] pquerna: well, a pause that worked [17:04] tjholowaychuk: I have a utility in connect [17:04] tjholowaychuk: it works fine, I should probably be actually pause()ing in there too though [17:04] tjholowaychuk: as well as the memory buffer [17:05] tjholowaychuk: I'm using that for session() and a few others I think [17:05] tjholowaychuk: might just be session [17:05] tjholowaychuk: pquerna: https://github.com/senchalabs/connect/blob/master/lib/middleware/limit.js [17:05] tjholowaychuk: pquerna: I was going to check for content-length as well, but got lazy since the whole thing kinda barely works [17:05] tjholowaychuk: haha [17:05] tjholowaychuk: well doesn't work nice at least [17:06] pquerna: right, evil people ignore it, but anyways [17:06] mraleph: piscisaureus: hmm [17:06] qFox has joined the channel [17:06] zakabird has joined the channel [17:06] st-14247 has joined the channel [17:06] pquerna: i guess it just means leaving nginx or whatev in front for longer time [17:06] mraleph: piscisaureus: I think preparser currently is non-buildable. there should be an issue for that. let me grep my inbox [17:07] tjholowaychuk: pquerna: if you have any ideas let me know, I would love to fix that too [17:07] piscisaureus: mraleph: if you're busy don't bother. I can't build the cygwin fix because I get that error. But this tells me it is not related to my code :-) [17:08] mraleph: piscisaureus: I can't find the issue. but I think preparser author is working on fixing it [17:08] dash has joined the channel [17:08] st-14258 has joined the channel [17:09] arpegius_ has joined the channel [17:09] piscisaureus: mraleph: thnx [17:10] steffkes has joined the channel [17:11] mjr_ has joined the channel [17:12] vckt has joined the channel [17:12] tokumine has joined the channel [17:14] dash: howdy. i'm not very familiar with node but I'm trying to use some code that depends on it: https://github.com/veged/ometa-js [17:14] gkatsev: is there a something like node-canvas for svg? [17:14] dash: this is supposedto be a version of the ometa parser generator that works as a commonjs module [17:14] qFxo has joined the channel [17:14] sh1mmer has joined the channel [17:15] dgathright has joined the channel [17:16] dash: problem is, it's generating JS that refers to names in ometajs.js that aren't exported. [17:16] sh1mmer has joined the channel [17:17] dash: i'm not familiar with how node handles modules/code loading; is this something that I should expect to work? I generally know how commonjs modules are supposed to work and I don't know if this is supposed to work in a context I don't know about or if it's just Busted [17:18] vyvea has joined the channel [17:18] Horofox has joined the channel [17:18] blueadept has joined the channel [17:19] pyrony has joined the channel [17:20] harth has joined the channel [17:20] ralphholzmann: back [17:20] adamroderick has joined the channel [17:21] V1 has joined the channel [17:21] rjbs has joined the channel [17:23] V1 has left the channel [17:23] softdrink has joined the channel [17:23] mhooker has joined the channel [17:24] ExsysHost has joined the channel [17:25] c4milo: does anybody use virtualhost with nodejs? [17:25] c4milo: reading the HTTP Host header [17:26] brianmario has joined the channel [17:26] tiemonster has joined the channel [17:26] ricklon: Anyone had worked with node-serial, and had problems ready a continuous stream of serial data from a port? [17:26] dyer has joined the channel [17:26] saikat has joined the channel [17:27] dominictarr has joined the channel [17:29] kmiyashiro has joined the channel [17:31] seanbeausoleil has joined the channel [17:31] http402 has joined the channel [17:33] davidascher has joined the channel [17:35] steph021 has joined the channel [17:35] steph021 has joined the channel [17:37] mattmcmanus has joined the channel [17:37] qFxo has joined the channel [17:38] daniellindsley has joined the channel [17:38] shajith has joined the channel [17:38] dve has joined the channel [17:39] tfe_ has joined the channel [17:39] tfe_ has joined the channel [17:39] arpegius has joined the channel [17:39] evanmeagher has joined the channel [17:40] qFox has joined the channel [17:42] sunnyohno has joined the channel [17:42] jonaslund has joined the channel [17:43] colinclark has joined the channel [17:44] mike_miller has joined the channel [17:44] dominictarr has joined the channel [17:46] dominictarr has joined the channel [17:47] mjijackson has joined the channel [17:47] creationix has left the channel [17:47] CIA-1: node: 03Ryan Dahl 07v0.4 * r038306a 10/ (lib/buffer.js test/simple/test-buffer.js): Closes GH-843. Fix SlowBuffer.prototype.slice - http://bit.ly/gAuyUO [17:48] bart has joined the channel [17:48] sunnyohno: Hi folks. I'm looking to get started with node, coming from Python. I'm a 3rd year csci student with minimal javascript experience (but years of Java)...Is there a node.js resource out there that might be geared towards someone like me? Or should I first quickly 'master' javascript, while I wait for a true node book to come out (Up & Running in June/July)? [17:48] bartmax has joined the channel [17:49] drunknbass has joined the channel [17:49] Country has joined the channel [17:49] Spion has joined the channel [17:50] bartmax: sunnyohno: try this: http://jqfundamentals.com/book/index.html [17:50] devinus has joined the channel [17:51] sunnyohno: Thank you, bart [17:52] bartmax: sunnyohno: nm, it's not strictly js but It will give a great insight into it. You may skip that last 2-3 chapters if you don't want to know specifics to jquery tho. [17:52] prettyrobots: tjholowaychuk: I'm getting an error from connect. [17:52] sunnyohno: Ok. From what I understand, though, jquery is pretty powerful/user-friendly, so I'm sure it'll all be useful [17:52] tjholowaychuk: prettyrobots: k, what is it [17:53] prettyrobots: I've upgraded an app from v0.2.6 to v0.4.4 so connect jumped versions as well. [17:53] prettyrobots: Connect is version 1.1.5. [17:53] maushu has joined the channel [17:54] tjholowaychuk: prettyrobots: you will likely have lots of errors, read the migration stuff in the readme [17:54] tjholowaychuk: prettyrobots: 1.x is a bit different [17:55] synisma has joined the channel [17:55] vckt has joined the channel [17:56] dominictarr has joined the channel [17:56] drunknbass has joined the channel [17:56] prettyrobots: tjholowaychuk: Yes, but this app is very simple. I've made the name changes. I'm not doing anything very special. [17:56] prettyrobots: tjholowaychuk: https://gist.github.com/892862 [17:57] tjholowaychuk: prettyrobots: that's not necessarily connect [17:57] prettyrobots: Ah. It could be MySQL. [17:57] tjholowaychuk: yeah [17:57] prettyrobots: Thanks. [17:58] langworthy has joined the channel [18:01] prettyrobots: tjholowaychuk: My MySQL server wasn't running. Sorry to bother you. [18:01] mikl has joined the channel [18:01] prettyrobots: And thanks for the help. [18:01] tjholowaychuk: prettyrobots: np [18:01] tjholowaychuk: some day those errors might not be so vague haha [18:01] tjholowaychuk: I hope [18:01] softdrink has joined the channel [18:04] Gigawatt has joined the channel [18:04] mikedeboer has joined the channel [18:04] drunknbass has joined the channel [18:04] Gigawatt: How efficiant would node be at running a system such as shoutcast ? [18:05] Vladimir1 has joined the channel [18:05] mlncn has joined the channel [18:05] pyrony has joined the channel [18:08] mscdex: Gigawatt: https://github.com/TooTallNate/NodeFloyd [18:08] eyesUnclouded has joined the channel [18:08] qFxo has joined the channel [18:09] couchquid has left the channel [18:09] arpegius_ has joined the channel [18:09] astropirate has joined the channel [18:11] dgathright has joined the channel [18:11] paulrobinson_ has left the channel [18:12] drunknbass has joined the channel [18:16] hosh_work has joined the channel [18:17] jpick has joined the channel [18:17] vckt has joined the channel [18:18] perlmonkey2 has joined the channel [18:19] alessio_alex has joined the channel [18:19] perlmonkey2: ryah: Why do you dislike fancy js pages? I thought node was a little about attracting all those client side js devs to the server? [18:20] patcito has joined the channel [18:20] kawaz_work has joined the channel [18:20] marlun: How would I esacpe all single quotes in a string? I've tried with .replace("'", "\'") but it doesn't seem to have any effect. [18:20] caolanm has joined the channel [18:20] alessio_alex: isaacs are you online? [18:20] kristsk has joined the channel [18:20] isaacs: meeting [18:20] alessio_alex: ok [18:21] mjr_: ryah: any updates on that TLS memory leak? [18:21] zzak has joined the channel [18:21] zzak has joined the channel [18:21] alessio_alex: is multipart-js still functional? I couldn't install it with npm install multipart [18:21] isaacs: no, probably not [18:21] nonnikcam has joined the channel [18:21] tjholowaychuk: alessio_alex: check out formidable [18:22] alessio_alex: tjgillies, connect-form is ok? [18:22] alessio_alex: tjholowaychuk i meant [18:22] isaacs: alessio_alex: yeah, it's deprecated. use formidable [18:22] troessner has joined the channel [18:22] tjholowaychuk: alessio_alex: yeah, connect-form just wraps formidable in a nice way for connect [18:22] isaacs: multipart-stack looks pretty ok, to [18:23] alessio_alex: would it be ok to create a CMS based on Express atm .. or should I wait (functions may change?)? [18:23] synkroBBQ has joined the channel [18:23] tjholowaychuk: alessio_alex: it wont be changing until 3.0 [18:23] timcosgrove has joined the channel [18:24] timcosgrove has left the channel [18:24] tjholowaychuk: alessio_alex: > 1.0 means I'm committing to the api [18:24] Max-Might has joined the channel [18:25] alessio_alex: ok [18:25] alessio_alex: Just a small advice, don't change the function names if they are doing the same thign [18:25] tjholowaychuk: haha [18:25] alessio_alex: eg. body.staticProvider = body.static [18:25] tjholowaychuk: connect was < 1.0 [18:25] tjholowaychuk: so meh [18:25] alessio_alex: :P [18:25] tjholowaychuk: I wont take your advice :p [18:25] alessio_alex: god :P [18:26] tjholowaychuk: "provider" is lame [18:26] tjholowaychuk: and "decoder" is lame [18:26] dash has left the channel [18:26] alessio_alex: erm... ok but... can you at least point the old function to the new one ?:D [18:27] tjholowaychuk: I could have, but then people wouldn't change it, and they would be gone shortly after [18:27] mikegerwitz: var old = function() { console.log( 'old() is deprecated; use new()' ); new.apply( this, arguments ); }; ? [18:27] tjholowaychuk: anyways, done talking about that [18:27] alessio_alex: great, I' [18:27] alessio_alex: I [18:27] alessio_alex: damn keyboard [18:28] alessio_alex: I meant to say : "great, I'll buy you a bier' [18:29] Evet: tjholowaychuk: do you know a module like jade, stylus; but for "javascript"? [18:30] tjholowaychuk: Evet: coffeescript? [18:30] Evet: tjholowaychuk: is it yet stable to use in production? [18:30] tjholowaychuk: Evet: I dunno I dont use it [18:30] tjholowaychuk: I'm fine with js [18:30] Evet: allright [18:31] Ezku\: Evet: yes. [18:31] Evet: Ezku\: which one? [18:31] chrisdico has joined the channel [18:32] charlenopires has joined the channel [18:32] Ezku\: Evet: coffeescript is at 1.0 and I personally would be more than willing to use it even in client projects [18:32] Evet: Ezku\: then i give a try [18:32] julienXX has joined the channel [18:32] julienXX has joined the channel [18:33] Ezku\: I highly recommend it, many consider it addicting. [18:34] zylo has joined the channel [18:38] teemow has joined the channel [18:39] markwubben has joined the channel [18:39] dingomanatee has joined the channel [18:39] arpegius_ has joined the channel [18:41] thegreatape has joined the channel [18:41] matyr has joined the channel [18:41] thegreatape: anyone been bitten by this bug when trying to build v0.4.4 on Fedora 14? http://code.google.com/p/v8/issues/detail?id=1244 [18:41] BigWookie: ;_; but what about the beautiful braces [18:42] pomodoro has joined the channel [18:43] frieza_ has joined the channel [18:45] insin has joined the channel [18:48] swaj has joined the channel [18:49] montylounge has joined the channel [18:50] indutny has joined the channel [18:50] Sorens3n has joined the channel [18:51] V1 has joined the channel [18:51] pquerna: isaacs: hmm. maybe silly question, but is there a way to show 'outdated' things in a bundle/dependency. [18:52] isaacs: pquerna: npm outdated (or npm bundle outdated in pre-1.0) [18:52] pquerna: isaacs: like `npm bundle outdated` that would look at the package.json and say, your package.json requests Express 2.0.0, but 2.1.0 is available now [18:52] isaacs: pquerna: in 0.x, "bundle" can prefix any npm command [18:52] Booths has joined the channel [18:52] pquerna: ahh [18:52] frieza_ has joined the channel [18:52] isaacs: pquerna: i don't know if it's actually savvy about the reqs in package.json, though [18:52] pquerna: the help docs for bundle don't talk about outdated [18:52] isaacs: 1.0 definitely is [18:52] pquerna: okay [18:53] mostlygeek has joined the channel [18:53] isaacs: like, if you require 2.x, and you have 2.1 which is hte most recent 2.x, but 3.0 is out, it'll think that 2.1 is outdated, when it's really not [18:53] tiemonster: I'm trying to POST from one Node server to another. I'm sending urlencoded POST parameters with req.write() correct? [18:53] eyesUnclouded has joined the channel [18:53] isaacs: pquerna: 1.0 is smarter. it'll only consider the ones that work for you [18:54] pquerna: well, what i'm trying to figure out.. is an easy way to know when 1 of 10 things I pull in gets upgraded [18:54] pquerna: right now i'm pegging on exact versions in my package.json [18:55] Booths: Hoping someone can help me out with this. I've got a problem with forwarding XML Packets. I've built a front end to intercept and store into a database in case the web server is down, but it seems like I'm not getting some of the packets. [18:55] tjholowaychuk: pquerna: we peg explicit versions too [18:55] bradleymeck: tiemonster yes + content-type [18:55] tjholowaychuk: way less issues that way [18:55] Booths: http://pastebin.com/1GeDcQeq is the code [18:55] tiemonster: bradleymeck: what's the content-type for good old post data? [18:55] mostlygeek has left the channel [18:55] tjholowaychuk: tiemonster: application/x-www-form-urlencoded [18:55] reid has joined the channel [18:55] mostlygeek has joined the channel [18:55] tiemonster: tjholowaychuk: thanks! [18:56] tschundeee has joined the channel [18:57] Booths: The log shows that it's posted for the longer results, but I never see the listener being hit on the other end [18:57] tiemonster: I've never really tried to unit test web services like this. Pretty neat. [18:58] bingomanatee: Are there any noders with multiplayer game demos that want to present (even remotely) at the SF IGN Node.js meetup on the 28th of April? [18:58] mike_miller has joined the channel [18:59] tiemonster: I'd love to. I don't think we'll be ready. [19:00] bingomanatee: Ready is relative. [19:00] tiemonster: ready == working demo [19:00] bingomanatee: Developers understand work in process. [19:00] tiemonster: server is rock solid, ui had to be redone from scratch [19:01] bingomanatee: If you can tie it together in a month - I have a guy who can help you with UI for $1000 or so if you want. [19:01] tprice has joined the channel [19:01] tiemonster: we were going to try HTML5, but the memory usage for Google Maps API was too large for mobile development [19:01] tiemonster: so we're going native Android now [19:01] bingomanatee: oh [19:02] bingomanatee: Could you demo that on Skype? [19:02] swaj: having trouble building node-0.4.4. Getting a strange error: http://www.pastie.org/1732179 any insight? [19:02] tiemonster: don't know. is it possible to screencast on the Android platform? [19:02] hornairs has joined the channel [19:02] tschundeee: hi guys... is there an explicit irc channel for express.js? [19:02] tjholowaychuk: tschundeee: nope, feel free to ask me or ask on the mailing list [19:03] frieza_ has joined the channel [19:03] bingomanatee: are you testing on the browser or doing all your testing through mobile? [19:04] tiemonster: bingomanatee: when would you have to know for sure? could you e-mail some info about the event? [19:04] dominictarr has joined the channel [19:04] tschundeee: tjholowaychuk: ah nice to hear that from the sensei himself :) [19:04] bingomanatee: http://www.meetup.com/Node-js-Serverside-Javascripters-Club-SF/events/16674393/ is the URL [19:04] chrisdickinson: tjholowaychuk: quick question re: express. I've got a template language I'd like to integrate with Express, but it's designed such that there is no synchronous api for it (rendering implies a callback must be given). Where would I start to integrate this? [19:04] DTrejo has joined the channel [19:04] bingomanatee: Its four weeks away - if you can let me know by the end of the week that would be great. Feel free to reach out via the meetup site. [19:05] chrisdickinson: I took a look through the view code and it looked like the template language integration expects an immediate result from template.render() [19:05] wink_: tiemonster: you could demo from the emulator [19:05] tjholowaychuk: chrisdickinson: depends, is it actually async? or just future-proofed with a callback? [19:05] Booths: Anyone able to help? I'll send you pictures of women I googled and pretend to be them if that helps. [19:05] chrisdickinson: tjholowaychuk: actually async [19:05] wink_: it'd just be slow as hell [19:05] tiemonster: wink_: theoretically [19:05] bingomanatee: there you go. thanks wink_ [19:05] tjholowaychuk: chrisdickinson: would be tough then,,,,,,,,,,,,,, [19:05] tjholowaychuk: woah [19:05] tjholowaychuk: haha [19:05] bingomanatee: you can always pre-film the demo of the actual game and show the admin layer on skype. [19:06] unlink has joined the channel [19:06] unlink has joined the channel [19:06] tiemonster: Booths: never seen that. weird as heck. [19:06] tschundeee: tjholowaychuk: I am coming from rails... and I want to build a site similar to stackoverflow for an instead of an internal wiki... could you recommend nodejs for this purpose? [19:06] tjholowaychuk: chrisdickinson: currently it's not setup to be async, and doing so would slow express down a bit since we would need to complicate the logic massively to allow for async views [19:06] tschundeee: tjholowaychuk: plus express of course... [19:06] bingomanatee: tschundee: I have an MVC "Starter kit" using mongoose on git. [19:06] chrisdickinson: tjholowaychuk: that was what I thought :P it's actually called "plate": (http://github.com/chrisdickinson/plate), and it's designed so that you can pass callback functions into the context and have them evaluate inside the template render cycle [19:06] tiemonster: bingomanatee: we would prefilm no matter what. you don't want it to go down during a presentation like that. ;-) [19:06] tjholowaychuk: chrisdickinson: the argument is in this issue https://github.com/visionmedia/express/issues#issue/512 [19:07] bingomanatee: its essentially a fork of the express demo with a form and model suite added [19:07] chrisdickinson: tjholowaychuk: cool, I'll follow that topic :) thanks [19:07] V1 has left the channel [19:07] tschundeee: bingomanatee: that sounds interesting... you have the link? [19:07] tjholowaychuk: chrisdickinson: yeah, we do that with mongoose queries, but we just override render() [19:07] Booths: tiemonster: It's weird because some go through fine and the others don't. On the receiving end all it does is res.writeHead(200);res.end();console.log(req.url); [19:07] swaj: anyone having issues building node 0.4.4? I've got a strange compilation error on my Debian 6.0 system [19:08] tjholowaychuk: tschundeee: it really depends [19:08] tjholowaychuk: on if you want to spend the time [19:08] tjholowaychuk: for something like that you might be better off with rails/drupal [19:08] Booths: tiemonster: I'm lead to believe it's the sending side because when I send from another server bypassing the front end they get thruogh and the packet is much longer. [19:08] tjholowaychuk: if you are not familiar with node at all [19:09] perlmonkey2 has joined the channel [19:09] tschundeee: tjholowaychuk: I read the both apis (node.js and express.js) and I played around a bit [19:09] tjholowaychuk: tschundeee: personally I would use node for just about anything these days, because I enjoy it more, but time-wise for a intranet project you might be better off with something else [19:09] Bonuspunkt: swaj gcc version? [19:09] Booths: tiemonster: also, as promised, this is totally me: http://webmarketingxpert.com/wp-content/uploads/2010/01/Web-Feb-hot-chick.jpg [19:09] bingomanatee: https://github.com/bingomanatee/MVC [19:09] chrisdickinson: what I'd really like to get towards is an event emitting template language (versus a callback one), so you could just do: "render = template.render(context); render.on('data', resp.write.bind(resp)); render.on('end', resp.end.bind(resp));" [19:09] swaj: Bonuspunkt: gcc version 4.4.5 (Debian 4.4.5-8) [19:10] bingomanatee: tschundee: its stil pretty rough - and its MongoDB based so you need to toss that in to use it - but I've been developing a private label game on the back of MVC and its been pretty reliable. [19:10] tjholowaychuk: chrisdickinson: yeah it will surely evolve in the future [19:10] tjholowaychuk: it will take some time though [19:10] arpegius has joined the channel [19:10] softdrink has joined the channel [19:10] tschundeee: bingomanatee: thx mate [19:10] chrisdickinson: tjholowaychuk: cool. I'll probably be adding that to a branch of plate, soon -- once the itch gets bad enough. [19:10] tjholowaychuk: chrisdickinson: it would be cool to do event based stuff, and support rendering the same templates via the SS / socket.io [19:10] bingomanatee: Let me know if you run into any issues/questions. [19:11] rfay has joined the channel [19:11] vckt has joined the channel [19:11] tschundeee: bingomanatee: thx :) I already installed mongodb and mongoose and I was about to start something like this :) [19:11] tiemonster: tjholowaychuk: it's high time for a high-level framework for node.js [19:12] tjholowaychuk: chrisdickinson: my issue with the async stuff in views, is that I dont want views to become a form of flow control [19:12] tjholowaychuk: tiemonster: haha yeah [19:12] tjholowaychuk: issue is you can't really solve everyones problems with a high level framework [19:12] tschundeee: http://geddyjs.org/ looked promising [19:12] tjholowaychuk: IMO they render themselves relatively useless [19:12] bingomanatee: Yeah - its kind of the natural "Next step thing" - not as sexy as mobile but it needs to get done. [19:12] tschundeee: but somehow these guys stopped developing [19:12] tiemonster: tjholowaychuk: I'm totally willing to contribute, as long I can find a superstar willing to collaborate [19:13] chrisdickinson: tjholowaychuk: understandable. I'm mostly of the mind that for view logic, the asynchronous bits either have to move up or down a layer -- either up into middleware, or down into the template language [19:13] tiemonster: you don't have to solve every use case, just the common ones [19:13] tiemonster: Django strikes a good balance there [19:13] Bonuspunkt: swaj link to error messages and hope mscdex sees it :) he helped some guys the last few days ^^ [19:13] chrisdickinson: I like moving them into the template language, personally, since that's (usually) where the data is going to be needed [19:13] bingomanatee: Plan "B" is to use Backbone and develop around that. It has a bigger user base. [19:13] tiemonster: provides lots of batteries included, and an awesome plugin architecture [19:13] chrisdickinson: tiemonster: (+1 on django) [19:13] bingomanatee: But I do very much like express and mongoose and so thats where I'm going. [19:14] tschundeee: bingomanatee: I also read the backbone.js api [19:14] swaj: my build errors are here: http://www.pastie.org/1732179 [19:14] tbranyen: having used django on two large projects i can say without hesitation, never again [19:14] tjholowaychuk: haha [19:14] tiemonster: the raw materials are all there [19:14] tjholowaychuk: ya i didnt like django at all [19:14] Gigawattz has joined the channel [19:14] tschundeee: backbone seems to be interesting and it should be somehow married with express.js [19:14] chrisdickinson: django's very opinionated on where things go, and until you put things where django wants them, it'll be a pain. [19:14] Gigawattz: is ncb000gt about ? [19:14] tiemonster: chrisdickinson: how so? [19:14] bingomanatee: I do like Backbone but I also like the idea of tying all the leading independant projects like mongoose, express, socket et all into a larger suite for developers. [19:15] insin: models.py and templatetags/, isn't that it? [19:15] davidascher has joined the channel [19:15] chrisdickinson: tiemonster: it starts to be second nature in decision making in django: "I want something available to all my templates" -> "ContextProcessor", I want something to happen on all of my views, "Middleware", etc [19:15] tiemonster: right - saves a lot of time [19:16] chrisdickinson: definitely. but until you grok how those bits work, it can be painful to get things done [19:16] chrisdickinson: the big win of django is that they've got great documentation. [19:16] tschundeee: anyone knows what happened to the geddy.js guys? were they killed or did they just suddenly loose interest?? [19:16] tiemonster: the jargon isn't that different from most other full-feature frameworks [19:16] tbranyen: chrisdickinson: i especially like how if you want to use email addresses as usernames in django it becomes a nightmare from hell... want to subclass User good luck! [19:16] bingomanatee: I mean - really, Rails "Solved" MVC, bluntly speaking. [19:17] F1LT3R has joined the channel [19:17] chrisdickinson: tbranyen: yeah, the contrib.auth set of models can be a pain. [19:17] bingomanatee: But node is about scaling and a more open architecture. [19:17] tiemonster: Rails is very rigid, IMHO [19:17] tbranyen: bingomanatee: bingo [19:17] chrisdickinson: of course, you could also solve it by adding an auth backend that checks email instead of username. [19:17] tbranyen: I like options [19:17] javaanse_jongens has joined the channel [19:17] tiemonster: if it's too open, though, it turns into PHP [19:17] tbranyen: chrisdickinson: thats like 1% of the problem [19:17] tiemonster: that ecosystem is a nightmare [19:17] tbranyen: auth backend is a piece of cake [19:18] tbranyen: but username is a primary key [19:18] tjholowaychuk: I like that node is just a pick your parts and go kinda env [19:18] tbranyen: so something needs to be stored there [19:18] tbranyen: and its limited to like 16 characters [19:18] bingomanatee: Thats kind of the point. I mean - who picks up a framework named "Rails" and then complains about how rigid it is? They warn you in the name! [19:18] tjholowaychuk: haha [19:18] tiemonster: tjholowaychuk: but that makes it hard to build non-trivial applications [19:18] bingomanatee: When you think of a system that gives you flexibility does a locomotive on iron tracks come to mind? [19:18] swaj: Rails' rigidity is part of why it's so good. Convention is a good thing. [19:18] tjholowaychuk: tiemonster: no way [19:18] tbranyen: tiemonster: it does? shouldn't that be the opposite? [19:19] vckt has joined the channel [19:19] tjholowaychuk: it makes it harder to write trivial things [19:19] tjholowaychuk: but that is what drupal is for [19:19] chrisdickinson: tbranyen: yeah -- I think it's 40 or so; just have the backend shove a hash of the email into the username. but yeah, generally I agree -- contrib.auth is kind of a pain in the ass [19:19] tiemonster: drupal isn't for anything [19:19] bingomanatee: Sure. However convention doesn't have to be exclusive. [19:19] tjholowaychuk: if you are writting something trivial it shouldn't really be on node [19:19] tiemonster: but not to get off-topic [19:19] tjholowaychuk: you dont need a node powered blog etc lol [19:19] bingomanatee: Drupal is for application prototyping. [19:19] tbranyen: chrisdickinson: yeah thats what i did, our client was pissed because they were seeing hashes [19:19] frieza_ has joined the channel [19:19] tbranyen: so i rewrote the admin [19:19] icebox has joined the channel [19:19] tbranyen: and that was a pain in the ass too [19:19] bingomanatee: You can develop a site, get funding, and run with it for months before you have to build the whole thing up again from scratch. [19:19] chrisdickinson: tbranyen: oof. yeah. ): [19:19] swaj: tjholowaychuk: I want to write a blog in node just as a learning exercise though. I think it would be fun and easy. [19:20] bingomanatee: Or weeks if you're "lucky" [19:20] tjholowaychuk: swaj: for sure, for fun is totally different [19:20] tiemonster: my point is that if you are developing a lot of applications, there is a lot of shared functionality that must be rewritten [19:20] swaj: but first I need it to build :( [19:20] tbranyen: unless you write it to be modular in the first place [19:20] tiemonster: I think a blog is a perfect use case for Node.js [19:20] tiemonster: if you think about it, they are I/O-bound applications [19:20] tjholowaychuk: not unless you are uber famous [19:20] icebox: tjholowaychuk: with 2.1.1 npm update and I get tar "-mvxpf" "-" "-C" "/usr/local/lib/node/.npm/express/2.1.1" tar: Unexpected EOF in archive [19:21] tjholowaychuk: icebox: woah [19:21] tiemonster: or any content-driven web site [19:21] bingomanatee: its a perfect use case for learning node.js :D [19:21] tjholowaychuk: icebox: works for me [19:21] tiemonster: twitter clone, etc etc [19:21] bingomanatee: I think games are the best use cases for node.js at this point. And moile. [19:21] bingomanatee: mobile. [19:21] chrisdickinson: and file uploads! [19:21] icebox: tjholowaychuk: ok :) any idea? on cygwin and node 0.4.3 [19:21] bingomanatee: Oh and it is a great platform for DDOS attacks [19:21] bingomanatee: IMHO [19:22] bingomanatee: uh ... in theory .... [19:22] chrisdickinson: haha [19:23] tbranyen: bingomanatee: its a good general purpose scripting language too [19:23] bingomanatee: But it is also probably a lot more DDOS resistant than anything else out there. [19:23] tiemonster: bandwidth is bandwidth [19:23] bingomanatee: Yeah you could do fun bash stuff with it. [19:23] tbranyen: we need to create opengl bindings in node [19:23] tbranyen: start doing native apps [19:24] mikegerwitz: tbranyen: I think that's the goal of the web browser [19:24] bingomanatee: I think there is more momentum for client slide 3D in the community. But that sort of thing is more likely to be backed by a game company [19:24] Evet: npm install nodegtk [19:24] CIA-1: node: 03Jorge Chamorro Bieling 07v0.4 * re35b2d9 10/ doc/api/fs.markdown : docs: fs.read/write() cb()s now receive buffer - http://bit.ly/ik7w5L [19:24] fly-away has joined the channel [19:24] tbranyen: mikegerwitz: web browser has no concept of UDP [19:24] mikl has joined the channel [19:24] ryah: udp in the web browser would be pretty hot [19:24] tbranyen: so when you're stuck with tcp websockets [19:25] tiemonster: node is great for chatty servers: smtp, irc, etc [19:25] tiemonster: jabber [19:25] wao: hm udp in browser :] [19:25] tbranyen: ryah: tell me about it would <3 udp multicast for html5 video streaming [19:25] dominictarr has joined the channel [19:26] ryah: would be good for games [19:26] tiemonster: tjholowaychuk: I guess I don't want to risk getting hoards of PHP script kiddies on board with Node.js [19:26] tiemonster: I just think there is a better way to do common sorts of things [19:26] tjholowaychuk: tiemonster: it's already begun lol look at all the ruby -> coffeescript ppl [19:26] tjholowaychuk: for sure [19:26] tjholowaychuk: it will evolve [19:26] tbranyen: yeah i've been having issues with sending wiimote data to the client via websockets [19:26] tjholowaychuk: when people agree on which common things should be added [19:26] micheil: the problem with UDP in the browser is that the browser would have to open up a port [19:27] tiemonster: perhaps a framework centered on web services instead of content-driven web sites [19:27] tbranyen: end up having to throttle it [19:27] softdrink: mmm. new imac at work [19:27] tiemonster: micheil: flash does... [19:27] tbranyen: micheil: there has been dicussion on adding in udp support in the past, just nobody has done it [19:28] micheil: then you have to do a bunch of other things as well, like NAT traversal and shit [19:28] tbranyen: http://www.jnext.org/ [19:28] tbranyen: ^^ saw that yesterday [19:28] tschundeee: how should an express.js webapp be hostet? just by executing "node app.js" ? [19:28] tbranyen: udp plugin basically [19:28] tschundeee: hosted [19:28] prettyrobots: tjholowaychuk: I should write a blog post on how I write web applications. [19:28] tjholowaychuk: tschundeee: usually people use something like upstart + (cluster|multi-node|fugue) [19:28] tschundeee: sry for my bad english... germany is playing football against australia :) [19:28] tjholowaychuk: + monit [19:28] tiemonster: tschundeee: for production or development? [19:28] swaj: hmm [19:28] prettyrobots: Because its basically connect for handling, and eco for templates. [19:29] swaj: so it's building just fine on my OSX install, but Debian cries :( [19:29] tschundeee: tiemonster: production [19:29] tiemonster: yeah - I let Joyent handle that ;-D [19:29] prettyrobots: The frameworky bits are three functions, sendObject, sendTemplate, sendText. [19:29] prettyrobots: And that's about it. [19:29] frieza_ has joined the channel [19:29] tiemonster: I've been thinking about an app that creates upstart scripts for Node.js applications [19:30] prettyrobots: Far less code than Rails, and no framework beyond "connect". [19:30] tiemonster: prettyrobots: authentication is the first thing I thought of [19:30] tiemonster: HTTP basic auth, HTTP digest auth, OAuth2 [19:30] prettyrobots: tiemonster: But, there are things that do that. [19:30] prettyrobots: tiemonster: There is an oauth library out there. [19:30] tiemonster: not plugable [19:30] shafire has joined the channel [19:30] shafire: hi [19:30] prettyrobots: And if you use it, you don't need the other two. [19:30] tiemonster: library != express.js middleware [19:30] prettyrobots: Why does it need to be pluggable? [19:31] tiemonster: so you don't have to rewrite that middleware every time [19:31] prettyrobots: When are you going to unplug oauth and plugin in basic auth. [19:31] tiemonster: you're missing the point [19:31] tjholowaychuk: then make connect-oauth or w/e [19:31] bingomanatee: Even though I do like MVC for backend personally I think you can probably do a fine app with everything in the public folder and a singluar web service gateway. [19:31] shafire: http://pastie.org/private/jjixqcn52h6sqamdh2w4a <-- what i am doing wrong? :( [19:31] tjholowaychuk: or send a pullrequest and have require('oauth').middleware etc [19:31] tiemonster: what about a cross-database ORM? [19:31] prettyrobots: tiemonster: Yeah, well, my point is that rewriting the middleware is under ~100 lines of code. [19:32] icebox: tjholowaychuk: I updated npm, connect and, at last, express. It is ok. [19:32] tjholowaychuk: icebox: interesting [19:32] tiemonster: prettyrobots: it all adds up [19:32] prettyrobots: tiemonster: No, it doesn't. [19:32] bingomanatee: tiemonster: I am going to bring that up in the noSQL meetup on the fifth. [19:32] tiemonster: an abstracted cache layer would be great (redis, memcached, database, fs, etc) [19:33] tiemonster: an abstracted messaging layer (AMQP) [19:33] marlun: Where can I find documentation about writing connect middleware? :) [19:33] prettyrobots: I'm writing SQL again. It is so much more effective than Hibernate / ActiveRecord, to simply use a DSL to express queries, an mature DSL at that. [19:33] tiemonster: I should have to reinvent authentication every time I sit down to write an application [19:33] bingomanatee: I think the problem is that it is very simple to abstract get/put [19:33] tjholowaychuk: marlun: it's a function that accepts (req, res, next){} you call next() with an optional exception [19:33] tjholowaychuk: that's all there is to it [19:34] bingomanatee: however searches and finds are very custom to the repo system. [19:34] tjholowaychuk: next() will pass control to the next "layer" [19:34] bingomanatee: For instance Mongo is a freewheeling system that lets you search dynamically. [19:34] prettyrobots: tiemonster: You don't have to reinvent it, but it doesn't need to be "pluggable". [19:34] bingomanatee: Couch requires your views be predefined. [19:34] prettyrobots: I can't unplug "eco" and plug in "mustache". [19:35] f1lt3r_bocoup has joined the channel [19:35] tiemonster: most frameworks don't support NoSQL because they are so "freewheeling" [19:35] tiemonster: there is no shared api [19:35] prettyrobots: I just use "eco", and I write a ~10 line function to do it, and it usually has some specialization for the application, and ~10 lines of code is about as complicated as ~10 lines of pluggable configuration files. [19:35] bingomanatee: Doctrine is the only exception I can think of. [19:36] m00p has joined the channel [19:36] bingomanatee: Honestly I like the idea in practice - I think however that the reality is that you would discover fairly soon that the net result is a system that doesn't respect the unique strengths of the system [19:36] tjholowaychuk: yeah I agree [19:37] prettyrobots: So, get an "oauth" library I'm sure you can use it with connect with about as much complexity as a "pluggable" framework (less complexity, probably an order of magnitude, it's just that the complexity is buried in the framework.) [19:37] bingomanatee: For instance the Couch guys would be saying, "why do you need an ORM for a system that is 100% REST based?" [19:37] mraleph has joined the channel [19:37] tjholowaychuk: bingomanatee: it's like trying to get every template engine to behave the same haha, it totally defeats the purpose [19:37] bingomanatee: so then you make an ORM that is REST based and the Mongo guys bitch that "You lose all the efficiency of Mongo if you don't use binary bindings" [19:38] bingomanatee: And I'll tell you what the other guys would bitch about after the 5th :D [19:38] tiemonster: but what if six months into a project, I find that MongoDB is going to meet my needs better than Couch - I have rewrite [19:39] bingomanatee: Mongoose takes a bout 3 days to "get" [19:39] bingomanatee: (if yoiu read my missing manual anyway) [19:39] bingomanatee: If you get that deep into a project and find out that your repo's fucked you are basically some degree of fucked. [19:39] tjholowaychuk: tiemonster: you would most likely have to if you are going to actually utilize the features anyway [19:39] tiemonster: but Mongoose is only for MongoDB. What if I jump head-long into Mongoose and code it all up, then decide that Redis is going to work better because of how my data looks? [19:40] eyesUnclouded has joined the channel [19:40] prettyrobots: tiemonster: You love you some frameworks. [19:40] Gigawatt: Why was the HTTP Server not made using the event emitter, or does it have it built on ? [19:40] tiemonster: prettyrobots: sure I do [19:40] bingomanatee: Yes. Thats why we do test projects to try out technology before sticking it to our clients :D [19:40] frieza_ has joined the channel [19:40] Gigawatt: such as http.on("connection") [19:40] arpegius_ has joined the channel [19:41] mikegerwitz: Gigawatt: It was. http://nodejs.org/docs/v0.4.4/api/all.html#event_connection_ [19:41] bingomanatee: There's always (VIMM) SQL to fall back to. [19:41] ivanfi has left the channel [19:41] mikegerwitz: Gigawatt: The callback you give is simply shorthand to using the eventemitter [19:41] hornairs has joined the channel [19:41] shafire: hi, I installed node, npm, express and jade. but if I want to start an app, it fails because of express... :( http://pastie.org/private/jjixqcn52h6sqamdh2w4a why? [19:42] bingomanatee: Honestly - before I even started trusting Mongoose I had a lightweight ORM working in mongo native that was reasonably good. [19:42] tjholowaychuk: shafire: hmm seems like npm might be doing something wrong [19:42] tiemonster: speaking of Mongoose, when is that going to be properly documented? [19:42] bingomanatee: looks like you didn't istall express, [19:42] jamescarr has joined the channel [19:42] bingomanatee: I have done that already. [19:43] bingomanatee: http://www.wonderlandlabs.com/wll_drupal/node/mongoose/index.html [19:43] bingomanatee: let me know whats missing from the missing manual and Ill write more. [19:43] charlenopires has joined the channel [19:43] shafire: bingomanatee: i installed express (with npm) [19:43] bingomanatee: is your full stack in git? [19:44] matjas has joined the channel [19:44] tbranyen: shafire: you need to set your NODE_PATH [19:44] tbranyen: export NODE_PATH=/usr/local/lib/node/ or something [19:44] tbranyen: and then run it [19:44] shafire: i will check [19:44] bingomanatee: are you using node 0.4.x? [19:44] pr2012: w/r/t mongoose- love it btw. ty. [19:44] shafire: bingomanatee: yes [19:45] bingomanatee: thanks. feel free to hang comments on it if you hit something that you need help on. [19:45] kuya_ has joined the channel [19:45] tfe_ has joined the channel [19:45] tfe_ has joined the channel [19:45] bingomanatee: if you have a node_modules folder in your project, do npm install express FROM INSIDE YOUR PROJECT FOLDER and it will stick express (and co. ) in your node_modules folder. [19:46] bingomanatee: Which is pretty neat. [19:46] bingomanatee: then you have your stuff "bundled" in your project. [19:46] pr2012: very easy to use, can't imagine needing much help with actually. The only issue I ran into was w/ $near and that was easily resolved. [19:47] isaacs has joined the channel [19:49] bingomanatee: I am still having odd issues such as the sort() method on query objects not seeming to work properly. [19:49] ajpiaNOU has joined the channel [19:49] bingomanatee: tj: you are part of Mongoose aren't you? [19:49] matyr_ has joined the channel [19:50] tjholowaychuk: bingomanatee: not really no [19:50] bingomanatee: sorry. [19:51] bingomanatee: I've got to stop believing everything dingomanatee tells me. [19:51] tjholowaychuk: i was helping with it for a while but it was a mess [19:51] tjholowaychuk: so guillermo rewrote it all [19:51] bingomanatee: oh okay then. [19:51] tiemonster: haha [19:51] tjholowaychuk: haha [19:51] bingomanatee: Good on him! [19:51] Sean_away has joined the channel [19:51] tjholowaychuk: fuck refactoring, rewrite [19:51] tjholowaychuk: haha [19:51] bingomanatee: I declare Gulliermo the New Hero of the Revolution! [19:51] bingomanatee: I was wondering what happened with their promised November release :D now we know. [19:52] bingomanatee: I love how scared people get about rewriting code. [19:52] Sean_away: i'm finding it seriously challenging to access cookies (that are already in the session) using node.js and socket.io. [19:52] beawesomeinstead has joined the channel [19:52] Sean_Colombo: anyone have any experience w/accessing cookies? [19:52] gmci|brb has joined the channel [19:52] bingomanatee: ACTION wants a cookie. [19:52] bingomanatee: TO LUNCH! [19:53] bingomanatee: If you see Guillermo on line tell him that LearnBoost is welcome to rip and add my missing manual stuff to their documentation. I have no idea why they just documented schema and called it a day but there is more missing than manual on the site. [19:54] Jonasbn_ has joined the channel [19:55] tiemonster: bingomanatee++ [19:55] v8bot: tiemonster has given a beer to bingomanatee. bingomanatee now has 2 beers. [19:55] s0urce: i still try to get hbs working : [19:55] frieza_ has joined the channel [19:56] s0urce: can i install it without npm too? [19:56] s0urce: or how can i upgrade npm? [19:57] tiemonster: tjholowaychuk: if a route exists in express, but not a handler for a defined method, shouldn't it return 405 Not Implemented instead of 404 Not Found ? [19:57] kuhrt: how do I direct nodejs to listen to locahost instead of a specific port? for instance I have my domain name work like this `http://thievishfilms.ca:8000/` but not this http://thievishfilms.ca/ [19:58] tjholowaychuk: tiemonster: the 404 is from connect [19:58] tjholowaychuk: if it has nothing left to do it's 404, but yeah we could possibly use something else [19:58] tiemonster: tjholowaychuk: patches welcome? ;-) [19:58] tjholowaychuk: tiemonster: maybe 400 [19:59] dominictarr has joined the channel [19:59] tjholowaychuk: tiemonster: for what you are saying 405 sounds good, but they are all treated the same ATM [19:59] tiemonster: If I have app.get('/test', ... and I PUT to /test I should get 405 [19:59] tjholowaychuk: we dont check and say "oh hey this route is defined but not for this method" [19:59] tjholowaychuk: connect just says "oh shit, I've not been handled, do something" [19:59] tjholowaychuk: haha [20:00] tiemonster: so does this need to be altered in connect or express? [20:00] tjholowaychuk: to do otherwise would consider end-points "special" [20:00] tjholowaychuk: not just regular middleware [20:00] tjholowaychuk: you would have to couple connect to the router middleware [20:00] tjholowaychuk: which I'd rather not do [20:00] tiemonster: hmm. I have an idea. [20:01] tjholowaychuk: you could do it yourself, just add a middleware at the bottom that catches anything unhandled [20:01] vckt has joined the channel [20:01] tjholowaychuk: i want to refactor the router sometime to make it easier to do stuff like app.get('/foo') to grab the handler for that [20:01] tjholowaychuk: if defined [20:02] tjholowaychuk: app.all('/foo') => [function, function] etc [20:02] tjholowaychuk: reflection ftw [20:02] BradleyS has joined the channel [20:02] dgathright has joined the channel [20:03] tschundeee: bingomanatee: why did you include a _mongoose_patch in your MVC example? [20:03] jacobolus has joined the channel [20:04] tiemonster: tjholowaychuk: yeah - that's what I'm proposing [20:04] Sean_Colombo has left the channel [20:04] tiemonster: tjholowaychuk: http://pastie.org/1732458 [20:05] BradleyS has left the channel [20:05] tiemonster: so that would be something added to express [20:05] tjholowaychuk: I dont disagree [20:05] tjholowaychuk: it's just a bit more complicated by the implementation details [20:05] tjholowaychuk: I try my best to not consider any middleware "special" [20:05] tjholowaychuk: even a route is just a regular callback [20:05] davida has joined the channel [20:06] tiemonster: is it something you would consider putting in core, or should I create a plugin? [20:06] tjholowaychuk: I have express-resource already [20:06] tjholowaychuk: which reminds me, had a pull request for that [20:06] tiemonster: o rly? [20:07] tjholowaychuk: its super basic [20:07] tjholowaychuk: https://github.com/visionmedia/express-resource [20:07] softdrink: do i win something? remote: Compressing objects: 100% (777/777), done. [20:07] piscisaureus: felixge: u here? [20:08] tiemonster: tjholowaychuk: ah - so you attempt to map the routes instead of using the raw HTTP verbs? [20:09] kevwil has joined the channel [20:09] tjholowaychuk: tiemonster: it's just using "actions" instead of http methods [20:09] tjholowaychuk: there is a list below of what they translate to [20:10] tiemonster: yeah - I see that [20:10] tbranyen: git submodule update --init << woah this will init and update submodules? [20:10] tbranyen: never knew that shortcut [20:10] alessio_alex has joined the channel [20:10] tiemonster: tjholowaychuk: that's sort of what I was talking about. Does it return 405 if it doesn't find the expected method? [20:10] tjholowaychuk: tiemonster: cant remember, i dont think so, it will just pass through like anything else in express [20:10] tjholowaychuk: which has benefits [20:11] alessio_alex: tjholowaychuk hello, this code doesn't work anymore: var MemStore = require('connect/middleware/session/memory'); [20:11] tjholowaychuk: alessio_alex: require('connect').session.MemoryStore [20:11] alessio_alex: thanks! [20:11] tiemonster: tjholowaychuk: I'll just make a generic method for returning not implemented, and plugin it in where it makes sense [20:11] gmci has left the channel [20:12] tiemonster: eventually, it would be nice to have something like Enunciate for express [20:12] mostlygeek has left the channel [20:12] mde has joined the channel [20:12] tiemonster: but then again, that would be a framework ;-P [20:12] alessio_alex: erm.. [20:12] alessio_alex: Error: connect.session({ secret: "string" }) required for security [20:12] alessio_alex: at Object.session (/usr/local/lib/node/.npm/connect/1.1.4/package/lib/middleware/session.js:202:11) [20:13] bradleymeck: one of these days imma patch together all my crap and compete w/ express [20:13] bradleymeck: and fail [20:13] tjholowaychuk: I have a connect-ish replacement I'd like to prototype [20:14] tjholowaychuk: not really a replacement [20:14] tjholowaychuk: but alternative I guess [20:14] tiemonster: bradleymeck: lol [20:14] tjholowaychuk: mmm git-pull-request [20:15] eb4890 has joined the channel [20:18] MatthewS has joined the channel [20:18] nciagra has joined the channel [20:18] nils_r has joined the channel [20:19] frieza_ has joined the channel [20:20] jimt_ has joined the channel [20:20] micheil: anyone here good with Streams? Care to have a look at: https://github.com/miksago/node-websocket-server2/blob/master/lib/protocols/draft76.js [20:21] halfhalo has joined the channel [20:21] halfhalo has joined the channel [20:22] MatthewS: has anyone done any work instrumenting express for node? [20:22] codivan_ has joined the channel [20:22] halfhalo has joined the channel [20:22] codivan_ has left the channel [20:22] tjholowaychuk: MatthewS: instrumenting in what way? [20:22] admc has joined the channel [20:22] tjholowaychuk: profiling? [20:22] MatthewS: i'm looking at a project going live soon and wanted to find out how hard it would be to build in detailed logging of requests coming through the server [20:23] tjholowaychuk: ah [20:23] Gigawatt: Anyone know why i can't call the metho start in my object? [20:23] Gigawatt: http://pastebin.com/fwAxyjrK [20:23] Gigawatt: it says that the HttpServer has no method start ! [20:23] MatthewS: well, getting to the point of having the equivalent of a few features i use in apache logging would be a start [20:23] tjholowaychuk: MatthewS: what I do is have // debug: foo etc within my files, and with those you can strip the "// debug :" portion conditionally using node's extension registration api [20:23] tiemonster: MatthewS: it's pretty trivial to implement as a middleware [20:23] tjholowaychuk: but [20:23] tjholowaychuk: something built-in as a middlware would be nice [20:23] tiemonster: we did so for a while [20:23] tjholowaychuk: to wrap other middlware perhaps [20:23] visa has joined the channel [20:23] mikegerwitz: Gigawatt: ( new HttpServer() ).start() [20:24] tiemonster: async goodness [20:24] Gigawatt: mikegerwitz, im instaantiating the object correctly, im not doing new require() [20:24] ohtogo has joined the channel [20:25] tiemonster: one of the projects I've been tossing around for a while is a remote telemetry (logging) system for multiple applications [20:25] halfhalo has joined the channel [20:26] Gigawatt: tiemonster: its so hard to get used to async when the majority of languages are synchronous [20:27] tiemonster: you get used to it [20:27] tiemonster: I get mad at my wife now because she is synchronous [20:27] Gigawatt: yea but only by overly using the event emitter :/ [20:27] Evet: ryah: feature request: libnodejs [20:28] mike_miller has joined the channel [20:30] tbranyen: anyone know how hp is integrating node into their webos? [20:30] Gigawatt: i think we should have a simpler way to reload modules, i would like to use require('./cache' + x,true) and it to reload the cache [20:30] tbranyen: the api has changed quite a bit [20:30] tbranyen: Gigawatt: you can't just make a reload function and overwrite the variable with a new require? [20:30] springify has joined the channel [20:31] Gigawatt: no because the new require fetches the data from the cache right [20:31] Gigawatt: meaning it does not get updated [20:31] tbranyen: oh it does? [20:31] Gigawatt: console.log(require.cache) [20:31] tbranyen: interesting [20:31] tbranyen: Gigawatt: hmmm probably not advisable to alter that cache in the reload function either? [20:31] techwraith has joined the channel [20:32] Gigawatt: i would like to soo something like: require.cache.reload('custom_config') [20:32] techwraith: Gigawatt - that would be pretty cool. I can think of a couple use cases for that. [20:33] jimt has joined the channel [20:33] tbranyen: Gigawatt: or even just an easy way to clear out based on a module [20:33] tbranyen: require.remove('s.io'); sio=require('s.io') [20:33] Gigawatt: well yea, but only use defined files, all native modules such as util,http,https etc would not get reloaded [20:33] tbranyen: Gigawatt: from what i see they don't get stored in the cache anyways [20:34] Gigawatt: yup, i have tested the other day, you can remove them by getting the full path to your module and doing: [20:34] Gigawatt: delete require.cache[full_path_to_module]; [20:34] j0shua has left the channel [20:35] kuhrt: has anyone deployed nodejs to a joyent smartmachine? [20:35] Gigawatt: and then require after that, but then you have to use util and resolve etc, its a little unrequired [20:35] dominictarr has joined the channel [20:35] admc1 has joined the channel [20:35] Sean_Colombo has joined the channel [20:37] MikhX has joined the channel [20:37] hij1nx has joined the channel [20:38] jonaslund has joined the channel [20:38] techwraith: kuhrt: I've done no.de but not their smartmachine [20:39] kuhrt: techwraith: nm, thanks, I just realized i need to listen(80) with nodejs, to make the domainname ww.something.com resolve. I was listening on another port before wondering how I could get the url without the port # to work, ha [20:39] Gigawatt: does Ryan ever come in here, or does he use an alias ? [20:39] frieza_ has joined the channel [20:39] jonaslund: he's here most of the time [20:39] tbranyen: Gigawatt: he's in here all the time [20:40] dmcquay has joined the channel [20:40] jonaslund: tbranyen: i do presume he sleeps and stuff :) [20:40] tbranyen: more than most large project maintainers [20:40] Gigawatt: whats his username [20:40] tbranyen: ryah [20:40] Gigawatt: ooh yea [20:40] some1else: Highlight bomb has been dropped [20:40] Gigawatt: what's his timezone? [20:40] tbranyen: the only opped username heh [20:40] pquerna: pst [20:41] pquerna: (the best one) [20:41] ChrisOnNode has joined the channel [20:41] some1else: Pst, I'm in ur timezones [20:41] some1else: (Not really) [20:41] Gigawatt: well im GMT [20:42] some1else: jimt [20:42] some1else: +1 [20:42] ChrisOnNode: Another Cycle [20:42] ChrisOnNode: Ops [20:42] Sean_Colombo: can handlers be removed from a client w/socket.io? or do we just have to remember the state of the app and make a single function act like the dispatcher? [20:42] dominictarr has joined the channel [20:42] ChrisOnNode: Is anybody using redis on node.js? [20:42] Sean_Colombo: ChrisOnNode: i am [20:43] ChrisOnNode: Do you use blocking command like blpop ? [20:43] davidascher has joined the channel [20:43] ChrisOnNode: I am trying to implement a cross process queue. [20:44] ChrisOnNode: Node should listen for events on the queue and execute the command when something is there. [20:44] ryah: Gigawatt: what's up? [20:44] Sean_Colombo: ChrisOnNode: i don't think i use any blocking commands atm [20:44] Gigawatt: ryah, Nothing i was jsut wondering about you [20:45] Gigawatt: how active you are with the guys in here etc [20:45] ChrisOnNode: Unfortunately client.brpop does not block on the command.. [20:45] gmci has joined the channel [20:45] seanbeausoleil has joined the channel [20:45] ryah: Gigawatt: i hang out here [20:45] jtrally: i personally don't care how active you are with any guys in here. [20:45] jtrally: :) [20:45] jtrally: wrong room [20:45] Gigawatt: yea its kool :) [20:46] Gigawatt: So what's this about Windows support being pushed ? [20:46] Gigawatt: your going to make me go back to windows :( [20:47] tiagoa_ has joined the channel [20:47] ChrisOnNode: What would be the best way to wait that something is on a redis queue and execute when ther eis something. [20:47] ChrisOnNode: ? [20:47] Gigawatt: ChrisOnNode: are you talking about a callback ? [20:48] jonaslund: Gigawatt: node still works best on *nix systems and probably will work as well there. most of the recent changes are just to make it "sane" on windows aswell [20:48] ryah: Gigawatt: discussing windows currently [20:48] ryah: privately [20:49] Sean_Colombo: ChrisOnNode: redis probably isn't the best place to hold a queue [20:49] Gigawatt: ryah, yea i think it was in a lecture you was giving, its not a problem just interested in the roadmap [20:49] Sean_Colombo: ChrisOnNode: *to hold an event queue [20:49] ChrisOnNode: I am talking about having a process written in anothe language (ex: PHP or C++) that passa task to NODE.js and node execute when there is work to do. [20:50] Sean_Colombo: ChrisOnNode: maybe rabbitMQ or something would be better suited if you have a lot of data going through [20:50] ChrisOnNode: I am thinking of use a redis' list to do that [20:50] eyesUnclouded has joined the channel [20:50] devaholic has joined the channel [20:50] ryah: Gigawatt: in a few months windows support should be very good [20:50] Sean_Colombo: doesn't sound scalable. Redis is a storage engine rather than a queueing system, so it's very likely to get locked up if you're using it that way [20:51] Sean_Colombo: ChrisOnNode: are you going to have a lot of data going through this? [20:51] jbergstroem: buildbot (still) down? [20:51] Gigawatt: ryah: that's great (that your not leaving *windows* users out) [20:52] ChrisOnNode: Not too much data... I am using redis for other things and I though that brpop and blpop where designed for this purpouse. [20:54] Gigawatt: ChrisOnNode: i think you should should be using sockets to pass information around processes [20:54] frieza_ has joined the channel [20:55] useware has joined the channel [20:56] dominictarr has joined the channel [20:56] mjr_: ChrisOnNode: you can use redis blocking pop for that, sure [20:57] Gigawatt: ryah: have you thought about the management of the require.cache? it would be helpful if we can require a fresh copy of a js config for, and specify the update_cache with the 2nd param on require [20:57] ChrisOnNode: mjr_: How does it work? [20:57] ChrisOnNode: in node.js [20:57] ryah: Gigawatt: i think you can just clear require.cache, then it will load a fresh one. [20:58] Gigawatt: new_copy = require('./configs/dynamic_config' [, update_cache = true]) [20:58] mjr_: ChrisOnNode: you get a callback when an item is ready. It works the way you'd want and expect. [20:58] Gigawatt: ryah, yea but that requires the full path, meaning that we have to use several other lines to get the full URI Path etc, i thought it would be nice if we could just specify the update of cache [21:00] ChrisOnNode: mjr_: it does not seem to work for me. This is my code: [21:00] ChrisOnNode: client.brpop("tasks", 0, function(err, res){ if (err) if (res =="null") { mylog("The task is "+res); } else { mylog("null task: do nothing"); } [21:00] mjr_: ChrisOnNode: here are a couple of examples of using blpop: https://github.com/mranney/node_redis/blob/master/test.js#L999 [21:01] jimt has joined the channel [21:01] ChrisOnNode: mjt_: Thanks, I will take a look at that. [21:01] micheil: mjr_: hey, do you have a minute to spare? [21:02] mjr_: What's up micheil? [21:02] micheil: mjr_: I'm working on new parsers for node-websocket-server (2.0.0) [21:02] mjr_: 2.0. Very exciting. [21:02] micheil: as such, I've gone with buffering incoming data before parsing it after a nextTick, https://github.com/miksago/node-websocket-server2/blob/master/lib/protocols/draft76.js [21:02] Hello71 has joined the channel [21:02] Hello71 has joined the channel [21:03] teemow has joined the channel [21:03] micheil: mjr_: I'm wondering if it makes sense to buffer outgoing data as well, and then stream it [21:03] micheil: so, when you call outgoing.write, it goes to a queue then get's flushes in a series of "data" events [21:03] kenbolton has joined the channel [21:04] mjr_: Can't you just use node's output buffering for that? [21:05] micheil: well, I need to add in certain pieces of information, currently in 76 it's just prepend the data with 0x00 and append it with 0xFF [21:05] zylo has joined the channel [21:05] micheil: but in future versions of the protocol, I need to know the data's length [21:05] tschundeee: is there something like caching in express.js? [21:05] malkomalko has joined the channel [21:06] mjr_: micheil: sure, but either way, what's the advantage of doing multiple writes yourself? [21:06] micheil: well, for instance, would it make sense to be able to pipe() to a websocket connection? [21:07] micheil: say a user sends a message via websockets that requests a file, in response, we send that file. [21:07] kmiyashiro has joined the channel [21:07] bingomanatee: tschundee: because mongoose at the moment has a design flaw [21:08] bingomanatee: It does not return the newly created record's ID to the save() callback. [21:08] micheil: fs.createReadStream('file', {paused: true}); [21:08] micheil: then we stream it using .pipe(connection.outgoing); [21:09] frieza_ has joined the channel [21:11] hellp has joined the channel [21:12] Gigawatt: i lvoe how when MJ Died the the big developers at Nintendo seen $$$, what has humanity come to :( [21:12] vckt has joined the channel [21:12] Gigawatt: love* [21:13] dgathright has joined the channel [21:15] bingomanatee: Yeah what are those bastards going to do when Mario dies? [21:16] m501 has joined the channel [21:16] tbranyen: use a game genie next time [21:17] marlun: tjholowaychuk: thanks the middleware is working now :) [21:17] marlun: tjholowaychuk: (late answer) [21:17] tjholowaychuk: marlun: which one? [21:17] bingomanatee: To be brutally honest I think a living Michael Jackson was too dangerous to build a property around. I'm not trying to imply I have an opinion about what he may have done - [21:18] marlun: tjholowaychuk: My own for compiling javascript templates for use on client side with backbone.js. [21:18] bingomanatee: but a dead Michael Jackson is quite marketable. [21:18] tjholowaychuk: marlun: ohh cool cool :) [21:18] tbranyen: dead jesus was quite marketable too [21:18] tbranyen: coincidence, i think not [21:18] Gigawatt: but they did not make games of him dancing on holy water did they lol [21:19] bingomanatee: actually it took christians like 3-400 years to get their marketing plan together. [21:19] tbranyen: Gigawatt: there is a theme park [21:19] Gigawatt: haha [21:19] Gigawatt: really [21:19] eee_c has joined the channel [21:19] bingomanatee: ACTION has a new mission to make.  [21:19] mscdex: swaj: ping [21:20] sunnyohno has joined the channel [21:20] Gigawatt: msdex: ping msdex.internal -t [21:20] Gigawatt: :) [21:20] bingomanatee: If I have any time before the game meetup I will bring it with the Jesus rockband Michael Jackson game. [21:20] matyr has joined the channel [21:20] bingomanatee: "Ebony and Irony" [21:21] mscdex: swaj: if you're still having problems compiling, apply this patch and you should be good to go: https://gist.github.com/844883 [21:21] bingomanatee: with a break dancing Bruce Lee. [21:21] jimt_ has joined the channel [21:21] hornairs has joined the channel [21:21] dominictarr has joined the channel [21:21] bingomanatee: "Immortal COMMMMBAAAAAT!" [21:22] Gigawatt: bingomatatee: i think your ADHD :/ [21:22] Gigawatt: or at least A.D.D [21:23] bingomanatee: Quite possible. I just like to think of myself as pre IPO but your argument is defensible. [21:23] Gigawatt: hehe [21:25] Poetro: isaacs: I update npm to 0.3.18, but the cygwin issue still stands... when i want to update multiple modules, it errors, when i do individual it succeeds https://gist.github.com/893343 [21:25] isaacs: Poetro: yeah, i made it a bit better on 1.0.1rc1 [21:25] isaacs: Poetro: but the 0.3 family will probably continue to suck on cygwin a lot forever. [21:25] datapimp has joined the channel [21:25] Poetro: isaacs: tnx ;) [21:25] isaacs: Poetro: the 1.0 family will suck, but not quite as much [21:26] isaacs: what we really need is a native windows nodejs [21:27] Gigawatt: isaacs you work along side ryan dahl don't you ? [21:27] brianc has joined the channel [21:28] brianc: tjholowaychuk: per our discussion the other day, I'm almost finished porting blueprint.css to stylus https://github.com/brianc/stylus-blueprint (documentation obviously NOT finished) [21:28] tjholowaychuk: brianc: sweet! will check it out in a minute [21:29] swaj: mscdex: thanks! It worked like a charm :) [21:29] Astro has joined the channel [21:29] TooTallNate has joined the channel [21:30] mscdex: thegreatape: the problem is with gcc 4.5.x. the fix in in v8 bleeding_edge i believe, but until v8 makes a release and node incorporates it, you'll have to downgrade to gcc 4.4.x [21:31] mscdex: thegreatape: unless you manually apply the fix in that issue thread [21:31] swaj: mscdex: is there any adverse effect to that patch you had me apply? [21:32] jimt has joined the channel [21:32] mscdex: swaj: no [21:32] swaj: mscdex: sweet, thanks again :) [21:32] TheIronWolf has joined the channel [21:33] malkomalko: challah [21:33] ChrisOnNode: mjt_: Are yo ustill therE ? [21:34] xandrews has joined the channel [21:35] mnbvasd has joined the channel [21:35] malkomalko: tjholowaychuk: I see some graphics libs from LB.. I'm writing a lex/parser to go through some of my code and I want to draw some pretty graphs and stuff to analyze code, would one of them work for rendering out graphics in a tree type fashion? [21:36] tjholowaychuk: malkomalko: I would use dot for that [21:36] tjholowaychuk: but yeah you could use node-canvas [21:36] dominictarr has joined the channel [21:36] malkomalko: dot? [21:37] jesusabdullah: Tell me about dot. [21:37] jesusabdullah: I must know. [21:37] tjholowaychuk: jesusabdullah / malkomalko: http://en.wikipedia.org/wiki/DOT_language [21:37] malkomalko: department of transportation? [21:38] tjholowaychuk: graphviz [21:38] jesusabdullah: Oh, you mean graphviz [21:38] sivy_ has joined the channel [21:38] jesusabdullah: Why didn't you SAY so silly goose? ;) [21:38] tjholowaychuk: it's one of the executables lol [21:38] bradleymeck: node canvas needs to expose its cairo surface to c++ addons~ wooo~ [21:38] jesusabdullah: DAMMIT why doesn't my boss have build-essential installed? [21:38] malkomalko: yah, I couldn't find any node graphvis packages though [21:38] malkomalko: I don't want to type anything manually :) [21:39] malkomalko: I want to introspect my code and automatically build up a graph [21:39] malkomalko: I guess I could just use some command line client if it exists [21:39] bingomanatee: ACTION is developing software that types what you smell like.  [21:39] softdrink: tjholowaychuk: you're really three people, aren't you? [21:39] mjr_: micheil: sorry, had to step away for a bit. I guess it'd make sense to stream into a WS response, but it seems like an unlikely use case. For bulk data transfer, why not use regular HTTP? [21:39] jesusabdullah: HOLY SHITDICKS THIS BOX HAS 16 PROCESSORS [21:40] bingomanatee: I'm sure once I make it, I'll be able to find a practical application. [21:40] micheil: mjr_: I guess. [21:40] davidascher has joined the channel [21:40] Gigawatt: jesus lol most boxes have around 18 cores [21:40] saschagehlich: is there a way to calculate how "large" (in bytes) an object is? [21:41] mjr_: micheil: The throttling I think would be useful is to potentially drop messages when the outgoing queue is too large [21:41] Gigawatt: our DC's that we supply to education establishments have 12 and thats for around 200 users on an internal network [21:41] sivy has joined the channel [21:41] jesusabdullah: Gigawatt: What boxes are YOU working with? [21:42] jesusabdullah: My advisor bought a box with more juice than a typical workstation so we could run sims more fasters [21:42] jesusabdullah: I knew it had a ton of RAM but I didn't know it rocked 16 cores! [21:42] mscdex: thegreatape: ping [21:42] Gigawatt: internal servers, acting as DC with ActiveDirectory,Print Server, File Storage, And used as an Cache for the Proxy Box [21:42] jesusabdullah: well SHIT [21:43] jesusabdullah: I hate software licensing -_-; [21:43] atmos has joined the channel [21:43] mjr_: I just got a few more computers that are dual hex core + HT = 24 processors. [21:43] stonebranch has joined the channel [21:43] jesusabdullah: Sweet [21:44] jesusabdullah: Someday I will buy a bitchin' box like this [21:44] Gigawatt: All i want for XMas is 16GB Of ram and neeeeeewwwwww iiiiiiii sev-en [21:44] mscdex: i just got an amiga 1000 that is one core 68000 [21:44] mscdex: :-D [21:44] slaskis: mscdex: but what an awesome core that is [21:44] atmos: tjholowaychuk: around ? [21:44] jesusabdullah: I want an excuse for running relatively difficult simulations so I can justify such a box to myself [21:44] tjholowaychuk: atmos: kinda yeah what's up? [21:44] atmos: have you had anyone mention issues with connect-auth and express 2.0 ? [21:44] jesusabdullah: but I don't actually really like doing FEA, so [21:45] mjr_: jesusabdullah: I was surprised how inexpensive such beastly computing power is these days in a desktop form factor at least. [21:45] micheil: :/ [21:45] jesusabdullah: Yeah. This one's a server FF so it was even cheaper [21:45] tjholowaychuk: atmos: no clue, I haven't touched it, but I think I heard a few issues [21:45] micheil: '\xff' != 0xff [21:45] Gigawatt: Has anyone seen the snapshot of windows 8 :O [21:45] tjholowaychuk: atmos: not sure if they have been fixed to work with 2.0 though [21:45] jesusabdullah: There's a windows 8? :o [21:45] atmos: k, i get weird header errors and my apps lock up over time and have to be restarted [21:45] atmos: i kinda wanna stay on 2.0 but i'm debating downgrading until i get the time to fix it [21:45] Gigawatt: jesus they have been working on windows 8 since the end of 2009 [21:45] atmos: i'll bug ciaranj, thanks [21:46] tjholowaychuk: atmos: let me know if it seems to be a connect issue [21:46] jesusabdullah: Why do I always feel like I just stepped out of a time machine? [21:46] brianc: SubStack: you there? [21:46] mjr_: Also got an SSD in these new computers. If this doesn't make CouchDB fast, then nothing will. [21:46] jesusabdullah: What day is it? "Late March?" "WHAT YEAR" [21:46] Gigawatt: 2029 [21:46] jesusabdullah: mjr_: Buddy of mine wrote a thing for cacheing with SSDs [21:46] Gigawatt: caching* [21:47] brianc: I <3 connect [21:47] Lorentz: Why not just do it in RAM [21:47] jesusabdullah: http://bcache.evilpiepirate.org/ [21:47] jesusabdullah: I think he got a job at Google because of it [21:47] jakehow has joined the channel [21:48] Gigawatt: you *think*, was he an internetz buddy ? [21:48] mjr_: oh, that's pretty cool, assuming it works. [21:48] jesusabdullah: Naw, irl buddy, but he moved a year or two ago [21:48] mjr_: bcache, I mean. [21:48] jesusabdullah: so I don't hear from him very often [21:48] frodenius: just get more ram, so you can have a huge kernel cache [21:49] mjr_: The problem I have is that my RAM keeps getting erased when my computer reboots. Does that happen to you guys too? [21:49] lupomontero has joined the channel [21:49] jesusabdullah: I wish this beastly-ass machine was more quiet [21:49] Gigawatt: If your getting a new processor its all about the L1,L2 cache [21:49] jesusabdullah: mjr_: Yeah, I can't figure it out dude it's nuts [21:49] Gigawatt: the difference a large cache makes is amazing [21:50] frodenius: mjr_: you reboot your machine? [21:50] bradleymeck: lots of cache lots of ram, trashy processor [21:50] mjr_: not on purpose [21:50] bradleymeck: windows demands it [21:50] micheil: :/ stream.pipe() doesn't work with binary data. [21:51] Horofox_college has joined the channel [21:51] mjr_: micheil: sure it does. I use it all the time to stream binary files from disk to http responses. [21:51] micheil: so what is the source emitting as 'data'? [21:52] pr2012 has left the channel [21:52] micheil: oh, wait, it emits buffers.. [21:52] astropirate has joined the channel [21:53] reid has joined the channel [21:53] bradleymeck: riddle me this "soap is safer than https" [21:54] atmos: security by obscurity, man [21:54] CarterA has joined the channel [21:54] Gigawatt: bradleymeck, Soap is not a transport layer? Soap sits on top of HTTP ? [21:54] dgathright has joined the channel [21:55] jimt has joined the channel [21:55] bradleymeck: idk just something work just told me [21:55] Gigawatt: naa talking shit [21:55] Gigawatt: lmao [21:55] frodenius: soap can sit on a lot [21:55] frodenius: it's xml [21:55] frodenius: wait, i was just trolled [21:56] frodenius: ACTION goes back to watching tv [21:56] dominictarr has joined the channel [21:56] micheil: mjr_: does this make more sense? https://github.com/miksago/node-websocket-server2/blob/master/lib/protocols/draft76.js#L153-175 [21:56] tjholowaychuk: brianc: looks good man, I'll fork and send anything over that I change [21:56] Gigawatt: ye ait also can sit on SMTp etc [21:57] brianc: tjholowaychuk: killer. I haven't done the IE module really yet, since I didn't have access to an IE box while I was putting it together. It allows the same sort of 'semantic grid' as compass [21:57] tjholowaychuk: isaacs: Permission denied: '/home/ec2-user/learnboost/node_modules/drawback/node_modules/canvas' [21:58] brianc: except..you know...with stylus [21:58] tjholowaychuk: any idea why I get tons of those [21:58] tjholowaychuk: isaacs: with rc1 i believe [21:58] tjholowaychuk: "1.0.1rc1" [21:58] isaacs: right [21:58] isaacs: hm. [21:58] isaacs: what are you installing? [21:58] tjholowaychuk: our app [21:58] cha0s has joined the channel [21:58] cha0s has joined the channel [21:59] isaacs: tjholowaychuk: can you gist the npm-debug.log file? [21:59] tjholowaychuk: sure one sec [22:00] tjholowaychuk: isaacs: https://gist.github.com/4db3393c9aae255523eb [22:03] bradleymeck: ugg how do i get the socket.io original request object (http headers / url etc) [22:03] tjholowaychuk: isaacs: actually now that I look closer it seems to be the preinstall scripts that dont have sufficient permissions or something [22:04] isaacs: tjholowaychuk: that'll do it [22:04] tjholowaychuk: hm [22:04] isaacs: WOW you guys depend on a lot of stuff [22:04] tjholowaychuk: yep [22:05] tjholowaychuk: sucks, all the preinstall scripts fail [22:06] bradleymeck: anyone seen rauch recently? [22:06] nciagra has left the channel [22:06] davidascher has joined the channel [22:06] no-gooder has joined the channel [22:07] isaacs: tjholowaychuk: tha's really weird [22:07] isaacs: are you logged in as root? [22:07] tjholowaychuk: isaacs: i was sudoing, im not now, and it seems to be working [22:07] isaacs: right ok.. [22:07] isaacs: hmm... [22:08] tjholowaychuk: i guess the downgrade messes that up [22:08] isaacs: tjholowaychuk: yeah, seems like it. it's wokring for me, though [22:08] tjholowaychuk: weird :s [22:09] c4milo: take a look at this gem http://www.fark.com/vidplayer/6066437 [22:10] c4milo: tjholowaychuk: [22:10] matyr_ has joined the channel [22:10] tfe_ has joined the channel [22:10] tfe_ has joined the channel [22:11] dyer has joined the channel [22:11] MrWarGames1 has joined the channel [22:11] tjholowaychuk: c4milo: what's that [22:12] c4milo: tjholowaychuk: let's share the air [22:12] tjholowaychuk: hahaha [22:12] synisma has joined the channel [22:12] c4milo: tjholowaychuk: ahahah [22:12] c4milo: tjholowaychuk: let's sell it in bottles [22:12] c4milo: tjholowaychuk: that's a great idea heheh [22:12] tjholowaychuk: woot [22:14] mike5w3c_ has joined the channel [22:15] micheil_mbp has joined the channel [22:16] bradleymeck: looking for ideas/comment on making a new request router that is *somewhat* protocol agnostic if all url fields can be determined, https://gist.github.com/raw/893458/6aa131382a67591729d6fa976698ce6205e73d0d/site.js [22:17] aheckmann has joined the channel [22:18] st-16473 has joined the channel [22:19] micheil_mbp has joined the channel [22:19] dominictarr has joined the channel [22:20] tk has joined the channel [22:21] jpick has left the channel [22:23] ParadoxQuine has joined the channel [22:24] dgathright has joined the channel [22:25] tim_smart has joined the channel [22:27] nivoc1 has joined the channel [22:31] matschaffer has joined the channel [22:34] tim_smart: Someone should do a node port of https://github.com/jugyo/earthquake :p [22:35] eventi has joined the channel [22:37] TheIronWolf has joined the channel [22:38] tim_smart: bradleymeck: Would be pretty easy to make a middleware for biggie-router that did that. [22:39] mscdex: tim_smart: it wouldn't be that difficult i wouldn't think to do that [22:39] mscdex: re: earthquake [22:40] tim_smart: mscdex: Yeah shouldn't be hard, I was going to attempt to do one a while back with node-ncurses; but it doesn't work on my ubuntu machine [22:40] mscdex: it doesn't? [22:40] tim_smart: Nope [22:40] davidcoallier has joined the channel [22:41] mscdex: what's the problem? [22:41] Metapony has joined the channel [22:41] bradleymeck: tim_smart, yea routing protocols to different things, could be neat [22:41] tim_smart: Can't remember now [22:42] tim_smart: bradleymeck: You could do something like: router.module('websocket').bind(function (request, response, next) { ... }); [22:42] gazumps has joined the channel [22:42] Sorens3n has joined the channel [22:42] tim_smart: And it would only execute the handler if it was a websocket request. [22:43] bradleymeck: idk i personally was working an a small lib to make all the endpoints the same for a couple protocols i am using so i also wanted the pathing [22:43] hij1nx has joined the channel [22:43] bradleymeck: cause things like socket.io requests arent really websockets all the time, but i want them to be honored as ws: [22:44] m501 has left the channel [22:45] tim_smart: mscdex: Getting "Error: /home/tim/Projects/node-ncurses/ncurses.node: wrong ELF class: ELFCLASS32" with my other Ubuntu laptop [22:45] mscdex: tim_smart: 32-bit or 64-bit? [22:45] tim_smart: 64 [22:45] mscdex: tim_smart: where/when does it come up with that error? [22:46] Gigawatt: anyone know why this is not working ? http://pastebin.com/VQAtjrMh [22:46] jimt_ has joined the channel [22:46] Gigawatt: the test function is undefined ? [22:46] mscdex: Gigawatt: you have to do .inherits() BEFORE you define your prototype [22:46] tim_smart: mscdex: When I try to run any of the examples after compiling. [22:46] dominictarr has joined the channel [22:46] mscdex: well, add to your protoype i mean [22:46] st-16714 has joined the channel [22:46] mscdex: tim_smart: hrmm.. [22:47] mscdex: tim_smart: is this the npm version or the latest from github? [22:47] tim_smart: latest from github [22:47] colinclark has joined the channel [22:47] Gigawatt: mscdex: Thanks, Why is that ? [22:48] mscdex: Gigawatt: because .inherits() changes the prototype [22:49] matyr has joined the channel [22:49] tim_smart: Oh wow http://google-opensource.blogspot.com/2010/06/introducing-google-command-line-tool.html [22:49] Gigawatt: ahhh, so it becomes the prototype of EventEmitter [22:50] eventi has joined the channel [22:50] no-gooder: hey, i'm trying to build a chat application with rooms. i'm following this article : http://nowjs.com/bestpractices . on "How to build rooms" section there is a variable name "targetRoomId". where should i set this varaible? i mean on the client side or the server side ?? [22:50] no-gooder: i want the chatrooms dynamicly created by client side. [22:52] Schmallon has joined the channel [22:52] mscdex: tim_smart: huh... weird... [22:53] mscdex: tim_smart: what if you do `ldd ncurses.node` ? [22:53] eventi has joined the channel [22:53] dgathright has joined the channel [22:53] mscdex: my main node-ncurses dev machine is 64-bit ubuntu server 10.04... [22:54] mscdex: :S [22:55] mscdex: it sounds like it's using a 32-bit version of the addon somehow, but it shouldn't build for 32-bit on 64-bit... [22:55] gozala has joined the channel [22:56] mscdex: tim_smart: if you get a chance, post/send me the output of `node-waf configure build` on that machine [22:58] dyer has joined the channel [22:58] brianc: tjholowaychuk: couldn't figure out a way to get jade to do tabbed & newlined html...I'm trying to do a demo page for stylus-blueprint and being able to view the semantic html is a bit nicer when said html is on more than 1 line. :) [22:59] tjholowaychuk: brianc: haha yeah I'm not sure if the compiler logic would be super easy or not [22:59] unlink has joined the channel [22:59] unlink has joined the channel [22:59] tjholowaychuk: to avoid extra whitespace [22:59] tjholowaychuk: shouldn't be to brutal but I remember a few edge cases last time [23:00] st-16793 has joined the channel [23:00] brianc: tjholowaychuk: no worries. I'll clean this html after it's generated [23:00] tjholowaychuk: brianc: I just released 0.10.0 (stylus), has some new goodies [23:00] no-gooder: no answer??? [23:01] hsoj_ has joined the channel [23:02] brianc: tjholowaychuk: oohh kwargs! niiice [23:02] tjholowaychuk: brianc: :D really easy to implement [23:02] tjholowaychuk: i should close the issue now, forgot [23:02] tschundeee_ has joined the channel [23:03] tjholowaychuk: I hate how python's looks like regular assignment though lol [23:03] tjholowaychuk: not a fan [23:04] tjholowaychuk: brianc: I also want to expose the test runner i have in stylus [23:04] tjholowaychuk: so you would just go require('stylus').test(__dirname + '/tests') or something [23:04] MatthewS has joined the channel [23:04] brianc: that would be nice [23:04] tjholowaychuk: even though sometimes you need a visual component [23:04] brianc: yeah, for sure, but having at least some level of automatic testing for stylesheet stuff is nice [23:05] brianc: espesh when you get into the madness of css grids and so on [23:05] tjholowaychuk: haha yeah [23:05] sunnyohno has joined the channel [23:05] brianc: my nasty little blueprint module has no tests other than visual tests right now *shame* [23:06] brianc: tjholowaychuk: I was really excited when this selector worked: "* html &" inside a mixin, and it referenced the parent tag [23:06] lurcio has joined the channel [23:06] brianc: blue my mind [23:07] jimt has joined the channel [23:07] tjholowaychuk: ahaha [23:07] tjholowaychuk: that is resolved in the compiler [23:07] mikeal has joined the channel [23:07] tjholowaychuk: I would like to eventually somehow move it to the evaluator [23:07] tjholowaychuk: and allow mixins etc to reflect on their usage position [23:08] tjholowaychuk: based on the selector or parts of the selector etc [23:08] wbailey has joined the channel [23:08] davidcoallier has joined the channel [23:08] brianc: yes would be _awesome_ [23:08] tjholowaychuk: so you could for example have reset() in an li call reset-li(), or that same reset() call in say... h1, h2, h3 and have it call reset-headers() etc [23:08] kawaz_work has joined the channel [23:08] tjholowaychuk: powerful stuff [23:09] tjholowaychuk: not a great example, but hey [23:09] brianc: yeah hard to think of examples sometimes [23:09] tjholowaychuk: I usually dont do it until I can at least think of a few real use-cases haha [23:09] tjholowaychuk: but kwargs is a given [23:10] tjholowaychuk: I cant stand stuff like button(#eee, .5) you are like wtf.. is .5.. button(#eee, intensity: .5) is better [23:10] ohtogo has joined the channel [23:10] brianc: there was something w/ blueprint.css porting I'm not sure I figured out yet, but on the 'ie' compat stylesheet they add extra attributes to all their span-* classes [23:11] tjholowaychuk: hmm [23:11] brianc: so it'd be nice to be able to generate the 'ie' compat stylesheet somehow within the normal sheet [23:11] Shrink has joined the channel [23:11] Shrink has joined the channel [23:11] tjholowaychuk: some of the hacks i dont support in the grammar itself [23:11] tjholowaychuk: *foo: bar; for example [23:11] brianc: but I really can't formulate the requirements in my mind yet [23:11] Tekerson has joined the channel [23:12] tjholowaychuk: {'*foo'}: bar; works [23:12] tjholowaychuk: the interpolation just takes the string value and unquote()s it [23:12] st-16890 has joined the channel [23:13] markwubben has joined the channel [23:15] stephen_mcd has joined the channel [23:15] rolando__ has joined the channel [23:16] brianc: this be working, yay [23:16] brianc: http://explodemy.com:3001/grid.html [23:17] tjholowaychuk: brianc: in your opinion should "50 + 50% == 75" [23:17] tjholowaychuk: or 100 [23:17] tjholowaychuk: it currently disregards the %, but I might change it [23:18] hosh_work has joined the channel [23:18] ckknight has joined the channel [23:18] morgabra has joined the channel [23:18] bradleymeck: 75 [23:18] tjholowaychuk: k, cool [23:18] bradleymeck: lol im not brianc tj but thanks [23:19] brianc: haha, the addition might make sense [23:19] tjholowaychuk: haha [23:19] brianc: but might start getting crazy w/ multiplication [23:19] tjholowaychuk: yeah i know, just wanted an opinion [23:19] tjholowaychuk: yeah + / - might be the only ones making sense there [23:19] brianc: 50% * 2 [23:19] jacobolus has joined the channel [23:19] brianc: what that be? 1? 100%? [23:19] tjholowaychuk: 50% * 2 would be 100% [23:19] tjholowaychuk: 2 * 50% would be 3 [23:20] brianc: sweetness [23:20] brianc: i must leave office now [23:20] tjholowaychuk: but 50 > 50% etc should probably disregard the % [23:20] brianc: yea [23:20] ParadoxQuine has joined the channel [23:21] brianc: "greater than 50%.....of what? I accidentally the whole 50%" [23:21] gazumps has joined the channel [23:21] tjholowaychuk: haha yeah exactly [23:21] tjholowaychuk: same with colors [23:21] tjholowaychuk: I allow color + 50% [23:22] ippa has joined the channel [23:22] vckt has joined the channel [23:24] ckknight: do people recommend any particular testing frameworks for node.js? [23:25] markwubben has joined the channel [23:25] atmos: ckknight: i've had the most success with vows [23:25] jesusabdullah: ckknight: In my experience, people seem to either like expresso or vows [23:25] jesusabdullah: I've used expresso for some things, it's nice and lightweight [23:26] jesusabdullah: I'd look at both and choose the one that makes you most happy [23:26] tjholowaychuk: ckknight: vows == better looking, nodeunit == easy / slower, expresso == ugly / faster [23:26] tjholowaychuk: most people use one of those three [23:26] jesusabdullah: orite, nodeunit too [23:26] jesusabdullah: idk much about nodeunit [23:26] ckknight: good tips [23:27] tjholowaychuk: ckknight: what are you testing? [23:27] tjholowaychuk: expresso is better suited for testing frameworks etc, not really apps, but it depends [23:27] ckknight: I haven't started yet, still assessing, but it'll be a facebook game running on top of node.js [23:27] Me1000 has joined the channel [23:27] ckknight: (if I decide to go with node.js) [23:28] sprout has joined the channel [23:29] sveisvei has joined the channel [23:29] jimt_ has joined the channel [23:30] ckknight: so for such an app, vows would be better than expresso, tjholowaychuk? [23:30] tjholowaychuk: ckknight: expresso would probably be fine for that [23:31] tjholowaychuk: though call, they all have pros/cons [23:31] atmos: best bet for unbiased answers, ask the author of one of them [23:31] tjholowaychuk: haha [23:31] jesusabdullah: ckknight: You should definitely go with node.js. [23:31] atmos: :) [23:31] jesusabdullah: ;) [23:31] tjholowaychuk: im not pushing expresso :p [23:31] matyr_ has joined the channel [23:31] ckknight: tjholowaychuk: but are you the author? :P [23:32] tjholowaychuk: just saying vows looks better, expresso has potential to be faster but less managable (depending on what you are testing) [23:32] ckknight: jesusabdullah: why do you say that? ;-) // flame war commence [23:32] tjholowaychuk: and nodeunit is kind of a combination, but runs serially so its slower [23:32] jesusabdullah: v8: function steve() {return "DEVELOPERS" + steve()' } [23:32] v8bot: jesusabdullah: SyntaxError: Unexpected token ILLEGAL [23:32] jesusabdullah: tssch [23:32] ckknight: extra ' there [23:32] jesusabdullah: oh, that's right [23:33] jesusabdullah: Also, can you add strings? I've been doing a lot of python lately [23:33] jesusabdullah: v8: function steve() {return "DEVELOPERS" + steve() } [23:33] v8bot: jesusabdullah: undefined [23:33] jesusabdullah: v8: function steve() {return "DEVELOPERS" + steve() }; steve() [23:33] v8bot: jesusabdullah: RangeError: Maximum call stack size exceeded [23:33] ckknight: v8: function steve(count) {return count <= 0 ? "" : "DEVELOPERS" + steve(count - 1) }; steve(10) [23:33] v8bot: ckknight: "DEVELOPERSDEVELOPERSDEVELOPERSDEVELOPERSDEVELOPERSDEVELOPERSDEVELOPERSDEVELOPERSDEVELOPERSDEVELOPERS" [23:33] jesusabdullah: There we go [23:33] jesusabdullah: I'm cool with a broken stack size ;) [23:33] jesusabdullah: Man I really need to play with node-lazy [23:33] jesusabdullah: I love making infinite lists [23:34] losing has joined the channel [23:35] meandi2 has joined the channel [23:36] c4milo has joined the channel [23:36] jesusabdullah: Oh, umm, but ckknight, you asked why node? Personally, I like that it's javascript (and with facebook, I believe their javascript API is one of the more complete ones), and that it's fast [23:36] jesusabdullah: It also has some really cool modules, and npm is awesomely lightweight. [23:36] ckknight: "fast" is relative [23:37] ckknight: also, the concept of going to a non-RDBMS solution after using them (RDBMSes) for so long is slightly frightening to wrap my head around [23:37] jesusabdullah: Well [23:37] jesusabdullah: sure it's relative [23:37] techwraith has joined the channel [23:37] jesusabdullah: but relative to a lot of your other likely choices. I mean, are you considering java? >_< [23:37] jesusabdullah: Anyways [23:37] ChrisOnNode: Quick questio: Do I need to require somethign to use JSON.Stringfy... and what is the opposite? I cannot find in the documentation [23:38] jesusabdullah: What do you mean by a RDBMS solution? [23:38] atmos: ChrisOnNode: nope they're there by default [23:38] isaacs: ckknight: your choice of tool should depend on the job you have. [23:38] atmos: JSON.stringify and JSON.parse [23:38] ckknight: my dayjob is working in C#, jesusabdullah, and I've been able to get 10k pages served per second off a single development box :P [23:38] jesusabdullah: Ah [23:38] isaacs: ckknight: the biggest things about node, why you'd choose it, imo, come down to the community, the language, and the way that it handles IO. [23:38] ChrisOnNode: Thanks [23:38] ckknight: I doubt node.js could match that, but I accept that [23:38] jesusabdullah: Yeah, sure [23:39] isaacs: ckknight: i've seen node do more than double that on my macbook [23:39] tjholowaychuk: god damn coffeescript man [23:39] ckknight: isaacs: my job in this case will be a hobby project where I made a facebook game for fun. [23:39] tjholowaychuk: its everywhere [23:39] isaacs: ckknight: but i mean, that's a hello world thing [23:39] jesusabdullah: isaacs is someone good to listen to here. [23:39] ckknight: isaacs: not a hello world thing, a full app that varies from user-to-user. [23:39] ChrisOnNode: Is there a way to find the current function name ? [23:39] atmos: hello world performance metrics ftw! [23:39] isaacs: ckknight: in real life, you're usually bound by something that *isn't* going to be able to manage 10k rps [23:39] ckknight: too true. [23:39] isaacs: node makes it easy to have a lightweight app server in front of multiple things, and not be blocked by them [23:40] jesusabdullah: I guess my confusion re: RDBMS is that you can use databases from node without too much hassle, but maybe I misunderstand what you mean by rdbms [23:40] ckknight: my ultimate goal will be to support 100k users per month doing around 1 request every 10 seconds for a total of 15 minutes each per day or so [23:40] isaacs: the single-threaded evented approach to asynchronous IO is pretty easy to wrap your brain around, compared with threads or coroutines (MY OPINION! omg get the fire extinguishers out...) [23:40] jesusabdullah: I agree. [23:41] ckknight: jesusabdullah: traditional SQL servers are RDBMS if used properly, e.g. PostgreSQL, SQL Server, or *shudder* MySQL [23:41] isaacs: ckknight: so, what you have is: a primarily javascript frontend, and a bunch of data flying around the place? [23:41] johnnywengluu: anyone knows how this type of documentation is generated? https://github.com/cloudhead/vows [23:41] isaacs: ckknight: and you're doing it for fun. [23:41] atmos: roflscale discussion imminent [23:41] jesusabdullah: It actually makes me go "wtf" inside when I see python people decry callbacks [23:41] isaacs: ckknight: i dunno, seems like a really good fit for node. [23:41] ckknight: isaacs: yep, one-page app, all JSON-driven data [23:41] johnnywengluu: actually i meant this one: http://vowsjs.org/ [23:41] johnnywengluu: and htis one: http://lesscss.org/ [23:41] scrogson has joined the channel [23:41] ckknight: and I'd horizontally scale it by having multiple node.js nodes communicating through a load balancer (if I reach that point of traffic) [23:42] isaacs: ckknight: (for fun) you want a good community that's active, (js frontend) so having a js backend is a nice win, native JSON parsing, etc., and (lotta data) that's sorta what node is *for* [23:42] johnnywengluu: is it a template engine that is converting a markup lang (markdown, textile) into html? [23:42] altamic has joined the channel [23:42] isaacs: ckknight: there are very few load balancers that can keep node servers maxed out [23:42] ckknight: isaacs: well, the "for fun" thing basically means that I won't be doing it for pay, but if it becomes successful, I'd totally sell out. [23:42] willwhite has joined the channel [23:42] isaacs: ckknight: you'd be better off writing a load balancer in node. [23:42] jesusabdullah: cloudhead: How did you make vowsjs.org and lesscss.org look so pretty? johnnywengluu wants to know. [23:43] isaacs: ckknight: :) won't we all [23:43] ckknight: isaacs: perhaps, or maybe nginx with port redirection or something [23:43] johnnywengluu: jesusabdullah: good initiative =) [23:43] ckknight: I dunno [23:43] ckknight: far off. [23:43] jesusabdullah: johnnywengluu: He may have done it by hand [23:43] altamic has left the channel [23:43] isaacs: ckknight: also, while there's only one thread per server process, you can easily have multiple processes that share a file descriptor, and then the kernel does your load balancing for you. what's what cluster does. [23:43] isaacs: ckknight: and, incidentally, it's also part of how nginx gets such good performance. [23:44] isaacs: ckknight: nginx is a good file server, but not a great proxy. no web sockets, no streaming data, etc. [23:44] jesusabdullah: The truth is, I just think node.js is *fun*. [23:44] jesusabdullah: Oddly enough [23:44] isaacs: ckknight: if you absolutely must use a proxy, i'd go with haproxy, varnish, or squid [23:44] jesusabdullah: for some reason, I find it fun to work with [23:44] ckknight: well, ideally, I'd want the same user (or even IP) to hit the same process over and over [23:44] isaacs: you could put the sessions and such in redis [23:44] ckknight: rather than round-robining [23:44] isaacs: then it wouldn't matter which 'server" process they hit [23:44] dgathright has joined the channel [23:44] jesusabdullah: I don't really care much about performance and shit, with what I do, so that's seriously all it comes down to. Fun. *shrug* [23:44] ckknight: yeah, potentially [23:44] isaacs: they'd get the first one to read() from the socket [23:45] ckknight: I'm currently only in the design stages, trying to research as much before diving in head-first [23:45] jesusabdullah: Hmm [23:45] jesusabdullah: I think it's hometime [23:46] ckknight: any recommendations for short-term caching with node.js? [23:46] ckknight: I've used memcached in the past when I did python and ruby work [23:46] ryah: redis [23:47] ryah: has a nice cache-warmer too [23:50] ckknight: What IDE do people recommend using if I were to do development on OS X? I've pretty much just used TextMate in the past. [23:50] Sorens3n: cloud9 :D [23:50] eyesUnclouded has joined the channel [23:51] ckknight: ooh, creepy [23:51] johnnywengluu: ckknight: but its not fully qualified yet [23:51] atmos: ckknight: i think that most people just use vim, emacs or textmate [23:51] johnnywengluu: imho .. give it 6 months more [23:51] Sorens3n: yeah i'm half teasing, i dont have a mac [23:51] ckknight: johnnywengluu: referring to cloud9? [23:51] johnnywengluu: ckknight: yeah [23:51] johnnywengluu: use WebStorm in the mean time [23:51] Sorens3n: im running around with n++ [23:51] johnnywengluu: i mean meanwhile [23:52] st-17178 has joined the channel [23:52] isaacs: ckknight: I used TextMate until switching to Vim a few months ago [23:52] eee_c has joined the channel [23:52] ckknight: WebStorm looks pretty snazzy [23:52] isaacs: if cloud9 gets vim bindings, i'll take a closer look ;) [23:52] johnnywengluu: cause you will need more cloud9 support of details like running ruby (a lot of gems i use in development) [23:53] isaacs: ckknight: i think there's some plugin love for Eclipse, too [23:53] isaacs: can do debugging and stuff in it [23:53] isaacs: but it's no visual studio [23:53] tjholowaychuk: ckknight: I use textmate as well, but plan on switching to vim when I have time to learn it better [23:53] johnnywengluu: ckknight: its the best ide on the dsktop [23:53] tjholowaychuk: and if my eyes dont explode from staring at black all day [23:53] johnnywengluu: with its auto indexing .. so hot .. you just click on a method or class it'll jump to that one [23:53] ckknight: Vim seems great if this were still the 90s [23:53] ckknight: flamewar, commence! [23:53] johnnywengluu: also great auto formatting [23:53] useware: johnnywengluu: you can install cloud9 locally and run ruby [23:54] johnnywengluu: useware: yeah that is one option [23:54] johnnywengluu: but still they dont have indexing like webstorm [23:54] johnnywengluu: why i said give it some couple of months if not 1 year =) [23:54] useware: johnnywengluu: sure [23:54] johnnywengluu: since webstorm has been in the market a looooooong time they have almost every feature you can think of [23:55] ckknight: what database do people normally use when running node? mongodb or something else? [23:55] johnnywengluu: indexing is a real time saver ... you dont get it til you use it .. just fucking click =) [23:55] Sorens3n: has anyone tested dnode + browserify lately? [23:56] johnnywengluu: ckknight: couchdb is pretty awesome [23:56] ChrisOnNode: Hi [23:56] johnnywengluu: json, http restful api, javascript, map reduce [23:56] ChrisOnNode: Other quick question [23:56] isaacs: ckknight: depends on your needs. [23:56] ChrisOnNode: I am trying to use http.request [23:56] johnnywengluu: also web gui [23:56] ChrisOnNode: And I get : node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: socket hang up at Socket. (http.js:1265:45) at Socket.emit (events.js:64:17) at Array. (net.js:825:12) at EventEmitter._tickCallback (node.js:126:26) [23:56] isaacs: ckknight: if you need your all of your data, then you probably want something other than mongodb [23:56] isaacs: ;) [23:57] ChrisOnNode: What does it mean ? [23:57] johnnywengluu: isaacs: =) [23:57] ckknight: isaacs: what do you mean need all of my data? [23:57] dominictarr has joined the channel [23:57] isaacs: ckknight: i mean, if you want to know that every write succeeded, and be able to recover in the event of a crash, even at scale. [23:57] johnnywengluu: ckknight: mongodb is kinda good for logging stuff [23:57] isaacs: ckknight: there are very many use cases where that is not the case, i'm not being facetious [23:57] ckknight: isaacs: I know about eventual consistency and all that :P [23:57] isaacs: well... that's the thing... [23:58] isaacs: "eventual consistency" is only an actual guarantee if it's a guarantee. [23:58] ckknight: if some writes don't go through, I plan on accomodating for it, not breaking because of it [23:58] [[zzz]] has joined the channel [23:58] isaacs: ckknight: right, just be careful. don't pull a 4square [23:58] ckknight: so I realize that downfall to the typical NoSQL implementations [23:58] ckknight: oh, what happened with them? [23:58] isaacs: ckknight: they had a node go down, then all their nodes went down as a result [23:58] twodollarz has joined the channel [23:58] whatcodecraves has joined the channel [23:59] ckknight: sounds like poor architecting [23:59] isaacs: ckknight: if you actually need all your data, and especially if you are doing more reads than writes, then couchdb is pretty much perfect. [23:59] st-17217 has joined the channel [23:59] ckknight: mine will be pretty write-heavy [23:59] isaacs: riak is also quite nice, if you have gaziggabytes of data that needs to be super available always everywhere