[00:00] tmzt: right ,same here [00:00] tmzt: I check for req.session.userauth which is a small data structure [00:00] jpstrikesback: which is a crap explanation of what is happening…but yeah, same [00:01] muk_mb: do any of you live in nyc/boston? [00:02] AphelionZ: muk_mb: me [00:02] drudge: i live in NY, upstate though [00:03] muk_mb: AphelionZ: have any nerd-points-of-interest for me to add to my map? [00:03] pedrobelo has joined the channel [00:03] muk_mb: I'm moving to Boston/NYC is like 2 weeks [00:03] tmzt: tjholowaychuk: it seems to be replacing the cookie everytime, could be a problem with the hmac or whtever is used to find the sesionID [00:03] AphelionZ: haha hmmm [00:03] AphelionZ: I'd just start by signing up for all the meetups [00:03] muk_mb: electronic stores, whatever [00:04] AphelionZ: do you have a car? [00:04] muk_mb: nope, and the longer I can go without one the better [00:04] AphelionZ: haha aww, well i was gonna say [00:04] AphelionZ: Do It Yourself Electronics in Needham is pretty cool [00:04] AphelionZ: if you can get somebody to drive you [00:04] Neil has joined the channel [00:05] ttpva has joined the channel [00:05] piscisaureus: ryah: here? [00:05] muk_mb: AphelionZ: this one? http://www.youdoitelectronics.com/aboutus.html [00:05] pedrobelo has joined the channel [00:05] piscisaureus: is there some node meeting fun going on? or else why is it so silent here? [00:06] AphelionZ: muk_mb: that's the one [00:06] muk_mb: cool, I'll mark it just in case [00:06] tmzt: firecookie time [00:07] piscisaureus: isaacs: ^- you know that? [00:07] isaacs: know if ryan's here? not sure. [00:07] isaacs: i'm wfh today [00:07] piscisaureus: oh [00:11] tjholowaychuk: isaacs: npm is fine with RCs / betas right? [00:12] isaacs: tjholowaychuk: yeah, it's pretty agnostic about that stuff [00:12] tjholowaychuk: k great thanks [00:12] isaacs: tjholowaychuk: if you publish with --pre on the command line, it won't tag it, though [00:12] dominictarr_ has joined the channel [00:12] isaacs: won't tag it as "latest" [00:12] FireyFly|n900 has joined the channel [00:12] gozala has joined the channel [00:12] isaacs: if you wanna know if a version is valid, you can do `npm install semver` and play around with teh "semver" bin command [00:13] zzen: hi guys. I'm trying to sell away 3 tickets to NodeConf (in Portland) since I won't be able to go after all [00:14] bwinton has joined the channel [00:14] zzen: anybody interested? I'll sell them with $50 discount [00:15] rburhum has joined the channel [00:15] tjholowaychuk: isaacs: cool, nice little executable :) [00:15] ryanfitz has joined the channel [00:15] isaacs: yep. that's the actual code that npm and the registry share, too. [00:15] isaacs: so it's authoritative :) [00:17] jpstrikesback has joined the channel [00:17] jennings has joined the channel [00:20] tmzt: tjholowaychuk: oh, it doesn't seem to be sending the connect.sid cookie anymore [00:20] tmzt: I've got firecookie installed [00:20] tjholowaychuk: tmzt: weird man :s all my examples work [00:21] abraham has joined the channel [00:21] tmzt: the writeHead hook in session? [00:22] tjholowaychuk: the new stuff is end(), but yeah if you are using old connect writeHead() [00:22] skm has joined the channel [00:23] tmzt: the version of connect I have still has it on writeHead [00:24] tmzt: or both [00:24] tjholowaychuk: upgrade to 0.5.7 or whatever it is [00:26] tmzt: commit 2796a2fdeb48874a56d2c4a9930bcfdbd04875da [00:26] tmzt: Author: Tj Holowaychuk [00:26] tmzt: Date: Wed Mar 2 15:25:43 2011 -0800 [00:26] tmzt: that's what I'm on, there's nothing about Set-Cookie in the end proxy in middleware/session.js [00:27] tjholowaychuk: tmzt: in later versions it is [00:27] tjholowaychuk: older it is in writeHead [00:27] tmzt: there's something other than git master? [00:27] tmzt: newer [00:27] zentoooo has joined the channel [00:28] tjholowaychuk: oh, so you are using 1.0.1 then, from the repo [00:28] malkomalko has joined the channel [00:28] tmzt: yes [00:28] tmzt: everything is HEAD [00:28] tjholowaychuk: and node 0.4.x? and express master as well? [00:28] tmzt: yes [00:28] shachaf has joined the channel [00:29] tjholowaychuk: because im using that as well, and its fine [00:29] bwinton has joined the channel [00:29] tmzt: jpstrikesback: what are you on? [00:29] malkomalko: tjholowaychuk: what version am I suppose to use right now with node 0.4.1 of connect/express.. :) I'm trying to piece together your last few days of commit logs on github [00:29] tjholowaychuk: malkomalko: nothing right now really, connect 1.x and express 2.x right away [00:29] tjholowaychuk: tmzt: make sure connect's examples/session.js works for you [00:30] tmzt: just run it with node? [00:30] tjholowaychuk: tmzt: yeah [00:30] dyer has joined the channel [00:31] tmzt: TypeError: Cannot read property 'prototype' of undefined at Object. (/srv/home/jobitr/development/node_modules/express/lib/http.js:36:48) [00:31] malkomalko: I'm using 0.4.1 with 1.0.8 and 0.5.10 of express/connect.. no bueno? [00:31] MikhX has joined the channel [00:31] tjholowaychuk: malkomalko: old versions kinda work on 0.4.x [00:31] [[zz]] has joined the channel [00:31] tjholowaychuk: tmzt: that doesnt look like the node one [00:31] malkomalko: I've noticed some weird things, but I wasn't sure if it was just me [00:32] tjholowaychuk: nope, i think everyone is [00:32] tmzt: ? [00:32] malkomalko: so does master of connect/express work together now with 0.4.1 or was that your comment about not right now really? I don't mind waiting it out [00:33] malkomalko: or if you need help with anything, let me know and I'll try to fix a few bugs [00:33] tktiddle has joined the channel [00:33] [[zz]] has joined the channel [00:33] adamholt has joined the channel [00:33] tjholowaychuk: malkomalko: yeah master/master are fine [00:33] tjholowaychuk: with 0.4.x [00:34] Horofox has joined the channel [00:34] malkomalko: gonna try that up, I switched my sessions over to redis as per your suggestion [00:34] malkomalko: working like a charm [00:34] tmzt: I'm on node 0.4.0 [00:34] tjholowaychuk: tmzt: oh [00:34] tjholowaychuk: that explains it [00:34] tjholowaychuk: i should make 0.4.1 required actually [00:34] tjholowaychuk: it has some patches that are needed [00:34] tmzt: so I need to go to 0.4.1 [00:35] tjholowaychuk: writeHead() didnt previously merge header fields with the progressive api [00:35] orls has joined the channel [00:35] Horofox: whats the hottest framework for web dev(in case, something productive as rails)? [00:35] arpegius has joined the channel [00:36] tjholowaychuk: tmzt: 10$ says that solves your issue [00:36] malkomalko: canadian or american? [00:36] tjholowaychuk: i didnt think of that right away [00:36] tjholowaychuk: forgot about those patches [00:36] ChrisPartridge: Horofox: Check out express [00:39] Horofox: ChrisPartridge: express looks sinatra-like [00:39] Horofox: well, I'm going to give it a go, maybe it turns out to be awesome. [00:39] SubStack: rails sucks [00:39] tjholowaychuk: Horofox: yeah it is like sinatra [00:39] SubStack: ACTION ducks [00:39] Horofox: SubStack: why? [00:39] tjholowaychuk: we dont havea rails [00:39] tjholowaychuk: and no one seems to want one [00:39] Horofox: tjholowaychuk: why? [00:39] SubStack: geddy is a little bit railsy [00:40] tjholowaychuk: Horofox: because what you gain in productivity, you later lose when you try to tear it apart haha [00:40] tjholowaychuk: it goes either way [00:40] Bloudermilk has joined the channel [00:40] malkomalko: rails feels bloated to me now after smaller frameworks that you put in your own pieces [00:40] Horofox: tjholowaychuk: I get your point [00:40] malkomalko: I haven't played around much with Rails 3 admittedly though [00:41] SubStack: the rails model is really bad for just sharing some state between requests [00:41] sprout has joined the channel [00:41] SubStack: you either have to used shared memory, rpc, or hit the database [00:41] SubStack: when in simpler web libraries you can just do `var state = {}` [00:41] ChrisPartridge: Horofox: once you get the hang of express/connect, you won't look back :-) [00:41] malkomalko: you should've renamed cookieDecoder to cookieMonster, which is now all I can think about when I see cookieParser [00:41] tjholowaychuk: ahahaha [00:42] tjholowaychuk: I will alias it [00:42] colinsullivan has joined the channel [00:42] malkomalko: please do :) [00:42] Bloudermilk: malkomalko: Rails 3 didn't get any less bloated [00:42] SubStack: awesome [00:42] zzen has left the channel [00:43] malkomalko: TypeError: Object # has no method 'set', at HTTPServer.use (/Users/malkomalko/scratch/js/n360u/vendor/express/lib/http.js:141:20) after upgrade to express/connect master [00:43] malkomalko: looks like it's coming from connect-auth, what type of stuff should I be looking for when migrating a plugin that might not conform? [00:44] tjholowaychuk: woah [00:44] tjholowaychuk: it should have set still [00:44] malkomalko: blammo, I love breaking software [00:44] ngs has joined the channel [00:45] markstory has joined the channel [00:46] breccan has joined the channel [00:46] malkomalko: brb [00:46] tmzt: session exapmle is working with 0.5.0 pre [00:47] tjholowaychuk: tmzt: and not 0.4.1? [00:50] malkomalko has joined the channel [00:52] davidascher has joined the channel [00:52] skm has joined the channel [00:55] daveluke has joined the channel [00:56] willwhite has joined the channel [00:56] Emmanuel__ has joined the channel [00:58] flow3r has joined the channel [00:58] flow3r has left the channel [00:59] c4milo1 has joined the channel [01:00] mackry has joined the channel [01:00] malkomalko: brianc: just an fyi, we should be releasing our postgres orm that sites on top of your driver in the next few days to npm [01:01] orls: anyone know of a change to how module.parent reports between 0.4.0 and 0.5.0 ? [01:02] maushu has joined the channel [01:02] skm has joined the channel [01:06] galaxywatcher has joined the channel [01:06] kawaz_home has joined the channel [01:07] tbranyen: NODE_PROTOTYPE_SET_METHOD is cool but is there one for property too? [01:08] zemanel has joined the channel [01:09] saikat has joined the channel [01:09] tbranyen: basically i have some properties on my EventEmitter I want to read from node [01:10] vonkow has joined the channel [01:10] eventi has joined the channel [01:13] edude03 has joined the channel [01:13] vilsonvieira has joined the channel [01:14] kevinliu: anyone out there using backbone.js? [01:15] jacobolus has joined the channel [01:19] sveimac: kevinliu: played some with it... [01:20] kevinliu: i've got a specific question regarding models. it's a fun framework but not a whole lot of others using it, i feel.. [01:20] atoi has joined the channel [01:20] atoi: hey all. [01:21] jeromegn: kevinliu: maybe I can help [01:22] kevinliu: thanks jerome! just wondering how to handle errors in models. for example, i have a model named Nick [01:22] kevinliu: so i've got: [01:22] kevinliu: model.Nick = Backbone.Model.extend({ [01:22] kevinliu: .. [01:22] kevinliu: .. [01:22] kevinliu: url: function() { [01:22] kevinliu: return '/api/nick/' + this.get('nick'); [01:22] kevinliu: } [01:22] kevinliu: }); [01:22] kevinliu: })(); [01:22] kevinliu: that url is a restful endpoint and typically returns JSON [01:22] cognominal has joined the channel [01:22] kevinliu: i am trying to figure out how to handle a 404 or 500 returned [01:22] jimt has joined the channel [01:23] jeromegn: kevinliu: oh, that's a good one... I haven't used it in that manner. you should ask in #documentcloud [01:23] kevinliu: thanks for the tip! /joining it now.. [01:26] eventi has joined the channel [01:28] devrim1 has joined the channel [01:28] Spion has joined the channel [01:29] warz has joined the channel [01:31] Aikar: wow.... ive got firefox alot slimmer than chrome lol. http://aikar.co/dropbox/firefoxslim.png - minus tab size, since chrome cant have side tabs on linux (wtf?) its still a good 10 px more [01:32] WRA has joined the channel [01:32] WRA: heya, how do you use npm to run an installed module? [01:34] Bloudermilk has joined the channel [01:34] apoc has joined the channel [01:34] throughnothing has joined the channel [01:34] dgathright has joined the channel [01:35] bnmrrs has joined the channel [01:35] Neil: has anyone managed to get cloud9 running on ubuntu 10.10? [01:36] WRA: yeah I'm doing that right now Neil [01:37] Neil: what version of node? i can get everything up and running but get a segmentation fault when i connect via the browser [01:37] jimt_ has joined the channel [01:37] atoi has left the channel [01:37] mattikus has joined the channel [01:38] edude03 has joined the channel [01:39] onar has joined the channel [01:41] SubStack: beep boop [01:42] Neil: @WRA, can you tell me what version of node you're running? [01:42] geoffeg has joined the channel [01:42] AAA_awright: Aikar: "Maybe no symlinks at all"? I'm writing a "dependency manager" that uses only symlinks, as to not use the rediculous require.paths hacking npm does [01:43] abraham has joined the channel [01:43] Yuffster has joined the channel [01:43] muk_mb has joined the channel [01:43] lgl has joined the channel [01:43] nonnikcam has joined the channel [01:43] c4milo has joined the channel [01:43] sechrist has joined the channel [01:43] jtrally has joined the channel [01:43] sveimac has joined the channel [01:43] votz has joined the channel [01:43] phiggins has joined the channel [01:43] Twelve-60` has joined the channel [01:43] btipling has joined the channel [01:43] versificator has joined the channel [01:43] caligula_ has joined the channel [01:43] Bonuspunkt has joined the channel [01:43] xSmurf has joined the channel [01:43] vilhonen has joined the channel [01:43] Aikar: AAA_awright: when i first started that it was before isaacs had really published his ideas for next npm, and before node .4. the new .4 stuff with node_modules really solves the issue of dependencies w/o symlinks or shims [01:43] Aikar: note that the post is from 1/31 [01:43] eee_c has joined the channel [01:43] AAA_awright: symlink node_includes/(require name) ->./(package).src/lib ; ./(package).src/lib/index.js -> (main.js) [01:44] mm2001 has joined the channel [01:44] eyesUnclouded has joined the channel [01:44] WRA: @Neil I had it running a montha go [01:44] WRA: I'm trying to run it via NPM now [01:44] WRA: do you know the command? I'm an NPM noob. [01:45] WRA: or atleast the npm command to locate package directories [01:45] Aikar: AAA_awright: no real reason for any require.paths juggling with .4x now, or symlinks or shims [01:45] WRA: ah nevermind [01:45] tmzt: hmm, so view won't append jade any more it tries to update view/index.jade? [01:45] mm2001: anyone else seeing this problem with expresso trying to test multiple assert.response(...) for server testing? https://github.com/visionmedia/expresso/issues#issue/62 - any preferred testing environments over expresso? [01:45] AAA_awright: Aikar: It was *never* necessary and still isn't if you want to have your libraries in one directory [01:46] wilmoore_ has joined the channel [01:46] Aikar: yeah isaacs doesnt want to flush left but id really prefer that, so i may update bpm to handle it [01:46] ceej has joined the channel [01:46] jiveb has joined the channel [01:46] charlenopires has joined the channel [01:46] sprout has joined the channel [01:47] Aikar: dunno what ill do it with it tho, i started that before i knew most of that stuff was coming anyways [01:47] tmzt: it also seems to have changed where it looks for partials [01:47] tmzt: not in views/partials anymore [01:49] kordless has joined the channel [01:49] everton has joined the channel [01:50] Neil: WRA, yeah i'm a noob at all this, i'm installing cloud9 via npm install cloud9 [01:50] Neil: which seems to work it's just a matter of it crashing when a client connects to the cloud9 node instance [01:51] abraham has joined the channel [01:51] Yuffster has joined the channel [01:51] muk_mb has joined the channel [01:51] lgl has joined the channel [01:51] nonnikcam has joined the channel [01:51] c4milo has joined the channel [01:51] sechrist has joined the channel [01:51] jtrally has joined the channel [01:51] sveimac has joined the channel [01:51] votz has joined the channel [01:51] phiggins has joined the channel [01:51] Twelve-60` has joined the channel [01:51] btipling has joined the channel [01:51] versificator has joined the channel [01:51] caligula_ has joined the channel [01:51] Bonuspunkt has joined the channel [01:51] xSmurf has joined the channel [01:51] vilhonen has joined the channel [01:51] piscisaureus has joined the channel [01:53] ChrisPartridge: Neil: you need to compile the o3 modules from source [01:53] dguttman has joined the channel [01:54] piscisaureus has joined the channel [01:54] losing has joined the channel [01:57] piscisaureus: isaacs: how do I get a no.de coupon code? [01:58] perezd has joined the channel [01:59] piscisaureus: nvm. need to read the smallprint [02:00] Neil: ChrisPartidge, thanks i had assumed i didn't need to as https://github.com/ajaxorg/cloud9 states that ubuntu binaries are included [02:02] brianmario has joined the channel [02:02] WRA: @Neil: how are you running it? [02:03] langworthy has joined the channel [02:04] Neil: cloud9> node bin/cloud9.js -l 0.0.0.0 [02:04] Neil: i think, i don't have the shell open atm [02:05] Neil: i'm using nvm and node v0.4.1 [02:05] tmpvar has joined the channel [02:07] fmarceau has joined the channel [02:07] marcello3d has joined the channel [02:08] marcello3d: hallo [02:08] fmarceau: lo [02:12] sleeplessinc has joined the channel [02:13] Bloudermilk: Can somebody provide me their opinion on how well suited Node is for VoIP? Where you have the control protocol (SIP), which is obviously well suited, but you also have a lot of CPU heavy audio transcoding and mixing? [02:14] Lorentz: Nodejs can hook to external libs via C++, no? [02:14] skm_ has joined the channel [02:14] mikegerwitz: Bloudermilk: If the lib is written in C++ then there's not really any downside [02:14] doubletap has joined the channel [02:15] Bloudermilk: mikegerwitz: So I could go with the traditional multi-threaded transcoding/mixing approach for my audio, and still keep SIP async? [02:15] ryanj has joined the channel [02:16] wilmoore_ has joined the channel [02:17] davidwalsh has joined the channel [02:18] KRBssa has joined the channel [02:19] possibilities has joined the channel [02:20] mikegerwitz: Bloudermilk: I'm not sure I'm the best to answer that question. But I can't imagine v8/node impose any sort of restrictions that flat out prevent you from doing so. [02:20] doubletap: what was the big news last night at Joyent? I dont see anything on the site. [02:20] TheEmpath has joined the channel [02:21] Bloudermilk: mikegerwitz: I suppose that's true. Glad to hear it's not frowned upon or anything [02:21] Bloudermilk: let the hacking begin [02:22] micheil has joined the channel [02:22] isaacs has joined the channel [02:23] jakehow has joined the channel [02:23] marcello3d: balderdash! [02:24] TheEmpath: hail nodites [02:24] SubStack: nodelings [02:25] TheEmpath: ACTION steals. [02:25] doubletap has left the channel [02:25] Me1000 has joined the channel [02:26] WRA: What unit test frameworks do you guys use? [02:26] SubStack: expresso [02:26] skm has joined the channel [02:27] fmarceau: somebody tried the story-based testing framework for node ? [02:27] fmarceau: forgot the name :/ [02:27] WRA: well I need a testing framework that works on both the backend and frontend [02:28] fmarceau: yui-test ? [02:28] WRA: "fuck yui" [02:28] fmarceau: :/ [02:28] fmarceau: why so much hatred ? :| [02:28] WRA: jQuery has better syntax [02:28] WRA: ;) [02:28] fmarceau: maybe [02:29] fmarceau: tried them both [02:29] fmarceau: go WAY better results with yui3 [02:29] bwinton has joined the channel [02:29] fmarceau: something dynamic like JS needs a opinionated framework [02:29] WRA: $('.message').html('noyui'); [02:29] SubStack: WRA: you can wrap your backend stuff so it works on your frontend and then you can test on the backend [02:29] SubStack: that's what I do with browserify [02:29] luke`_ has joined the channel [02:30] fmarceau: SubStack: without a tool? [02:30] WRA: so the frontend stuff is HTML5 driven, but I'm mostly testing that the calls actually work/etc [02:30] WRA: so that may work [02:31] marcello3d: <- hates jquery's syntax [02:31] WRA: really? [02:31] marcello3d: really [02:32] marcello3d: I forget why. but every time I have to use it I'm reminded [02:32] WRA: $('but marcello3d, I love you'); [02:32] mikegerwitz: fmarceau: I've used node's built-in assertions to test server-side and was able to test client-side by simply implementing the needed assertion methods and wrapping it in a closure (so require, etc work). But SubStack's solution is useful if you don't need a standlone thing. [02:32] marcello3d: I think it has something to do with inconsistency and super loose commands that have multiple purposes [02:32] mikegerwitz: standalone meaning, your project requiring no external libs [02:33] marcello3d: I don't like foo() being both a getter and a setter [02:33] WRA: you mean like html() vs html('') ? [02:33] WRA: yeah [02:33] WRA: I actually like that [02:33] WRA: but what I mostly like is binding arbitrary events to objects [02:33] marcello3d: yea [02:34] marcello3d: that's a good idea [02:34] marcello3d: though not unique to jquery [02:34] WRA: definately not. [02:35] WRA: but I've almost completely switched over to event driven applications now [02:37] KRBssa has joined the channel [02:37] ezmobius has joined the channel [02:38] SubStack: fmarceau: I just do the testing server-side [02:40] marcello3d: does anyone know how git sub modules work? [02:40] SubStack: marcello3d: I'm increasingly convinced that nobody does. [02:41] redmind has joined the channel [02:41] marcello3d: k [02:41] SubStack: it seems like such a wrong way to handle reuse [02:41] fmarceau: jquery is great for 95% of the JS front-end job [02:42] fmarceau: but to build an entire screen in JS.. yui3 is great [02:42] fmarceau: with its sandboxing concept [02:42] marcello3d: I want to make a node module for npm, is there a recommended folder structure? [02:42] fmarceau: what kind of module? [02:42] fmarceau: ACTION is searching for an ORM :/ [02:42] marcello3d: mongodb driver [02:42] fmarceau: ah :| [02:43] isaacs: marcello3d: http://howtonode.org/how-to-module [02:43] arnorhs has joined the channel [02:43] TheEmpath: mongoose [02:43] SubStack: isaacs: hah beat me to the draw [02:43] thorsteinsson has joined the channel [02:43] SubStack: I guess you did write it :p [02:44] WRA: rofl [02:44] WRA: Hey Isaacs, you looking for work? [02:44] WRA: (jk jk) [02:44] isaacs: WRA: nah, i'm good. [02:44] isaacs: :) [02:44] WRA: So the problem was that you made NPM [02:45] dnyy has joined the channel [02:45] SubStack: I never want a real job [02:45] colinclark has joined the channel [02:45] marcello3d: isaacs: cheers [02:45] SubStack: s/want/$& to get/ [02:45] fmarceau: what defines a real job? [02:45] fmarceau: making money ? :/ [02:46] SubStack: fmarceau: pretty much [02:46] fmarceau: k [02:46] montylounge has joined the channel [02:46] SubStack: I now have all of this ephermal "equity" [02:46] SubStack: people tell me it's valuable [02:46] fmarceau: I love real jobs then :D [02:46] rfay has joined the channel [02:46] SubStack: but my other problem is that I don't even know how to spend money correctly [02:47] SubStack: since for the past 5 years I've lived just fine on <$10k [02:47] fmarceau: erf. [02:47] fmarceau: I have 5 kids [02:47] fmarceau: so I live "ok" with 100K$CAD :/ [02:47] SubStack: paying tuition too and I even saved up some money at that rate [02:47] marcello3d: do I want a "main" js file? [02:47] hipe: "What is Spidermonkey? SpiderMonkey is the code-name for the Mozilla's C implementation of JavaScript. You can get the engine via CVS" [02:47] marcello3d: if it's a library? [02:47] marcello3d: is that what gets imported by require('mymodulename') ? [02:48] hipe: (oops wrong window sorry but still funny) [02:48] fmarceau: they use spidermonkey in gnome3-shell [02:48] fmarceau: nice [02:51] darshanshankar has joined the channel [02:51] sivy has joined the channel [02:52] throughnothing has joined the channel [02:53] mikegerwitz: marcello3d: What do you need to know about submodules? [02:53] Emmanuel__ has joined the channel [02:54] marcello3d: oh I just wrote this library inside my local project (with a local git) and I want to push the library to github... but I think I'm just going to pull it out and use it via npm link or whatever [02:55] isaacs: marcello3d: you could also submodule it to ./node_modules like npm does with semver [02:55] isaacs: but submodules are a pita [02:59] micheil has joined the channel [02:59] CarterA has joined the channel [03:00] severla has joined the channel [03:00] severla: what's the diff bewteen .addListerner() and on() ? [03:01] NowjsTester has joined the channel [03:01] CarterA: Hey guys...I'm planning out a virtual hosts system using node, and I'm thinking I could have each vhost be served by a separate process, spawned by the parent server process. If doing that, I'd want to be able to chroot the subprocess to the vhost's home directory. Any suggestions on how to do that (chroot a child? [03:03] marcello3d: woot. wrote my first package.json. let's see if it works ;D [03:03] Apes has joined the channel [03:03] jakehow has joined the channel [03:03] Aria has joined the channel [03:04] thebard has joined the channel [03:04] marcello3d: how do I know if it worked... [03:04] marcello3d: guess I just try to use it [03:04] c4milo1 has joined the channel [03:06] Ond has joined the channel [03:07] mikegerwitz: severla: https://github.com/joyent/node/blob/master/lib/events.js#L115 [03:07] mikegerwitz: severla: on() is an alias to addListener :) [03:07] marcello3d: wow [03:07] marcello3d: it worked [03:07] marcello3d: first try [03:07] marcello3d: that's awesome :D [03:07] severla: :) [03:07] mbrochh has joined the channel [03:07] mbrochh has joined the channel [03:08] dthompson has joined the channel [03:08] mattyf has joined the channel [03:09] matschaffer has joined the channel [03:09] mattyf: cant remember, whats the name of the de facto nodejs package manager? [03:09] throughnothing: npm [03:09] throughnothing: (nodejs package manager) [03:09] isaacs: marcello3d: :D [03:09] throughnothing: :P [03:10] mattyf: lol, of course it is [03:10] marcello3d: style preferences? Mongolian DeadBeef vs Mongolian (dead)Beef [03:10] isaacs: mattyf: a lot of node programs have beautifully simple names like that [03:10] amerine has joined the channel [03:11] isaacs: marcello3d: style of what? [03:11] marcello3d: the title [03:11] isaacs: title of what? a package you publish? [03:12] CarterA: So no ideas on chrooting a child process? [03:12] mikegerwitz: isaacs: I'm curious of the story behind npm. Was it just accepted by the community or did you work with ryan/others? [03:12] marcello3d: the full title of the module [03:13] isaacs: marcello3d: oh, well... i mean, i guess whatever. [03:13] isaacs: marcello3d: but typically it's lower-case. [03:13] isaacs: since it maps to a filename [03:13] isaacs: and it's case-sensitive in some places and insensitive others [03:14] marcello3d: naw [03:14] marcello3d: not for that [03:14] marcello3d: I'm just using "mongolian" for the npm name [03:14] isaacs: oh, then literally whatever you like [03:14] Yuffster_work has joined the channel [03:15] marcello3d: do you think one looks better, though? [03:15] marcello3d: maybe I'm asking the wrong crowd :) [03:16] isaacs: mikegerwitz: i was the only user for a while, and then mikeal started using it, and for a while there were a few different ones. i guess i just kept developing npm, and the folks doing the other ones moved on to other things. [03:16] isaacs: mikegerwitz: there wasn't any "official" recognition per se until node 0.4 [03:16] mikegerwitz: isaacs: Ahh, interesting :) [03:16] tbranyen: i'm so glad the npm sudo warnings are gone [03:16] tbranyen: :) [03:17] eventi has joined the channel [03:19] CarterA: Guess I need to write a chroot binding then. [03:20] strmpnk_ has joined the channel [03:20] eyesUnclouded has joined the channel [03:20] SubStack: somebody sent me a pull request with a package.json months ago [03:20] SubStack: that's how I learned about npm [03:21] mikegerwitz: :) [03:21] sechrist: so is npm root safe now? [03:21] mikegerwitz: Yeah when I first saw it months back I wasn't sure if it was a standard or not. Then once I saw it on nodejs.org, I figured it was a safe bet. [03:22] sechrist: I haven't seen a sudont in awhile [03:22] Aria: In a different way, yes. [03:22] sechrist: So is it now impossible to compromise a system with an npm package alone? [03:23] sechrist: without running a node instance as root (other than npm) [03:23] Aria: I believe so. [03:23] sechrist: neato [03:23] broofa has joined the channel [03:23] isaacs: sechrist: if you're running as root, then it'll setuid down to "nobody" before doing any package scripts [03:24] sechrist: uhh [03:24] sechrist: then my modules are owned by nobody? [03:24] jacobolus has joined the channel [03:24] isaacs: sechrist: yep. [03:24] sechrist: is that.. bad? [03:24] isaacs: sechrist: not in the cache or main folders, just in the package folders themselves [03:24] isaacs: sechrist: nah, it's fine [03:25] isaacs: sechrist: kind of a pita to juggle the who-owns-what-how stuff, but that's kind of settled out. it's stable-ish now. [03:25] brapse has joined the channel [03:25] sechrist: could compromise other users running node modules with a nobody account [03:25] sechrist: woo [03:25] sechrist: but nobody shouldn't have a shell [03:26] CarterA: isaacs: Could the "nobody" trick be somehow used to emulate chroot? [03:27] isaacs: sechrist: exactly [03:27] mm2001 has joined the channel [03:27] bbwharris has joined the channel [03:28] isaacs: sechrist: and if you install it globally, as sudo, then it's wrapped up in a nobody-owned subfolder in a root-owned folder structure. [03:29] isaacs: CarterA: it's not as secure as chroot [03:29] marcello3d: https://github.com/marcello3d/node-mongolian [03:29] marcello3d: it's up! [03:29] marcello3d: go check it out :D [03:29] isaacs: w00t [03:31] Ikaros has joined the channel [03:31] marcello3d: aww [03:32] broofa has joined the channel [03:33] Ikaros: Hey - if a child process runs exec like 'cd ~/' is it possible to get the directory it changed to? [03:33] Aria: Not os-independent. [03:33] Aria: (also, cd is a special command in general, being a shell builtin.) [03:34] Ikaros: Well, on linux/ubuntu. The command works fine but I'd like to be able to get what it changed to as well [03:34] Bloudermilk has joined the channel [03:34] mikegerwitz: Ikaros: If you can get the output of a command (I haven't run shell commands from node), you can just do `pwd`. [03:35] Ikaros: yea - I was hoping to avoid that but I think it may be the only option [03:36] NowjsTester has joined the channel [03:36] mikegerwitz: Is it possible to use process.cwd on child processes? [03:37] Ikaros: not that I can tell from console.log - it may be a function? [03:37] Aria: That's the reliable option. Otherwise you have to inspect /proc/thepid/cwd [03:38] mikegerwitz: Aria: execing `pwd`, or process.cwd? [03:38] mediacoder has joined the channel [03:38] gf3 has joined the channel [03:38] Aria: execing `pwd` [03:38] Aria: process.cwd can't work cross-platform. [03:38] Ikaros: can I run that on an existing child process that's already run exec? [03:38] Aria: Well, what do you mean by 'run exec'? [03:39] Aria: You can run multiple commands. You can start an interactive shell. There's several options. What are you trying to accomplish? [03:39] Ikaros: require('child_process').exec [03:39] Ikaros: but that kinda answered my question [03:40] NowjsTester has joined the channel [03:40] pborenstein has left the channel [03:41] NowjsTester has joined the channel [03:45] NowjsTester has joined the channel [03:45] pkrumins has joined the channel [03:46] pkrumins: a million requests per second is cool, but you know what's cooler? [03:46] NowjsTester: a million requests per second is cool, but you know what's cooler? [03:46] pkrumins: what! [03:46] NowjsTester: what! [03:46] pkrumins: oh. [03:46] NowjsTester: oh. [03:46] yhahn has joined the channel [03:47] Lorentz has joined the channel [03:47] darshanshankar: sry for NowjsTester guys [03:47] NowjsTester: sry for NowjsTester guys [03:47] Evet has joined the channel [03:47] Evet has joined the channel [03:47] robotarmy has joined the channel [03:47] darshanshankar: im testing something and its clearly got a bug :) [03:47] NowjsTester: im testing something and its clearly got a bug :) [03:48] rchavik has joined the channel [03:48] zachsmith has joined the channel [03:49] Spion_ has joined the channel [03:51] AphelionZ has joined the channel [03:53] NowjsTester has joined the channel [03:54] kei has joined the channel [03:54] AphelionZ: how do I combine https://github.com/aphelionz/Tweue/blob/master/server/tweue.js with the socket stuff in https://github.com/aphelionz/Tweue/blob/master/server.js [03:55] AphelionZ: im hitting one of those closure things where both of my objects need to be enclosed within one another [03:56] Aria: So put them in a function together? [03:56] marienz has joined the channel [03:56] Aria: (function() { var sharedvar; .... thing 1... thing 2.... })() [03:57] AphelionZ: i guess i could move the socket stuff to the tweue module, yeah.. [03:57] tmzt: anybody know how to do a reverse loop in jade? [03:57] SubStack: elements.reverse() [03:57] tmzt: thanks [03:58] AphelionZ: Aria: is that still compatible with exports or module.exports? [03:58] Aria: Sure. You just set the exports inside the function [03:58] jpstrikesback: tmzt: did you get the session stuff figured out? for me it was the connection string not being valid…suddenly... [03:59] Aria: They keep the link to that shared closure. [03:59] AphelionZ: oh, very nice! [03:59] AphelionZ: thanks, I think this will unblock me [04:01] sigue has joined the channel [04:01] AphelionZ: and will also keep me up for another 3 hours even though I should be sleeping... [04:03] matschaffer has joined the channel [04:06] zentoooo has joined the channel [04:06] Level1 has joined the channel [04:07] matschaffer has joined the channel [04:09] ryah: so sick :( [04:09] vnguyen has joined the channel [04:10] gkatsev: how long does no.de usually take for giving a coupon code? [04:11] marienz has joined the channel [04:11] SubStack: also I hate how .reverse() mutates the list [04:12] zpao has joined the channel [04:12] SubStack: have to .slice().reverse() it to use it inline [04:12] Ikaros: @gkatsev I got mine in a couple of weeks but I imagine it depends on the size of the queue and the number they wish to add support for [04:12] ajnasz has joined the channel [04:12] marcello3d: anyone checkout node-mongolian yet? [04:13] gkatsev: Ikaros: makes sense [04:13] mlncn has joined the channel [04:14] darshanshankar has joined the channel [04:14] sechrist has joined the channel [04:14] daveluke has joined the channel [04:14] AphelionZ: Aria: that doesn't work because then I end up with a horrible mess like this: http://pastie.org/1627345 [04:14] AphelionZ: actually wait.. [04:15] redmind has joined the channel [04:16] ceej has joined the channel [04:16] kkaefer: will node js apply to gsoc? [04:17] tmzt: so is serving html created from a jade template working now or do I need something like jade-serial? [04:17] marcello3d: all the cool no.de subdomains are taken :( [04:18] tmzt: SubStack: what do you mean? I'm pretty sure this is out of order [04:19] SubStack: v8: var xs = [ 7, 8, 9 ]; var ys = xs.reverse(); xs === ys [04:19] SubStack: v8bot >_< [04:19] SubStack: anyways it's true [04:19] SubStack: and that is annoying [04:20] gkatsev: v8bot has the flu, try js: [04:20] SubStack: it would be much nicer if instead of mutating xs, .reverse() merely returned a new array (or better, a list!) with the elements in xs reversed [04:21] Ikaros: @Aria (or anyone else) - the problem I'm having is that child_process.exec does not return anything I can rerun exec on so every call to exec is a new child process and has its cwd reset [04:21] gkatsev: js: var xs = [ 7, 8, 9 ]; var ys = xs.reverse(); xs === ys [04:21] gbot2: gkatsev: true [04:21] SubStack: or if there were some nice way of annotating mutable functions like how ruby has the ! convention [04:22] SubStack: because immutable interfaces are easier to reason about [04:22] SubStack: although often it's handy to have mutable functions [04:23] SubStack: but there's no way of telling beyond memorization whether a function is mutable or immutable [04:23] marcello3d: isn't it scheme that uses ! for mutable? [04:23] SubStack: could be, I don't know scheme [04:23] SubStack: but ruby does that for sure [04:23] marcello3d: ah [04:23] SubStack: at least for the most part, it's only a convention [04:24] marcello3d: anyone know how long it takes to provision something on no.de? [04:24] Ikaros: about 30 min, give or take [04:24] marcello3d: oh ok [04:24] dthompson has joined the channel [04:25] SubStack: informal purity conventions are a pretty good compromise between pure functional programming and stateful procedural programming [04:26] marienz has joined the channel [04:26] darshanshankar has left the channel [04:27] darshanshankar has joined the channel [04:27] gkatsev: marcello3d: scheme has boxes and set! [04:28] eventi: anyone know of a good example of an express app using authentication, so I can use -u with curl? [04:28] gkatsev: no.de :) [04:29] robotarmy has joined the channel [04:29] marcello3d: no mongodb users here? [04:30] mikegerwitz: marcello3d: I use mongo...but infrequently [04:30] jimt has joined the channel [04:30] gkatsev: there are plenty of mongo users here, I'm sure. [04:31] eventi: ACTION can answer almost any mongodb questions, unless they're about node.js drivers [04:31] Ikaros has left the channel [04:31] gkatsev: lol [04:32] eventi: i'm a sysadmin - running a few big mongo instances [04:32] eventi: but as far as connecting to the with node... eh [04:35] zorzar_ has joined the channel [04:36] CIA-125: node: 03koichik 07v0.4 * r452df69 10/ doc/api/net.markdown : Correct net.createServer() API docs - http://bit.ly/ethkms [04:37] marcello3d: alright. I'm out for the night, but if anyone has a chance to check out this module I just published (more of a preview than a release), it'd be great to get some feedback: https://github.com/marcello3d/node-mongolian [04:37] CIA-125: node: 03Ben Noordhuis 07master * r1d5ff15 10/ (4 files in 4 dirs): fs.utimes() and fs.futimes() support. - http://bit.ly/ik5wlP [04:38] marcello3d: basically it's a mongodb node.js api sitting on top of mongodb-native, and hopes to abstract all the annoyingness away :) [04:38] marcello3d: modeled after the mongodb shell [04:38] robotarm_ has joined the channel [04:38] marcello3d: night [04:38] mikegerwitz: Speaking of documentation...I noticed that crypto.createCipheriv and crypto.createDecipheriv are both undocumented...I had to hunt them down in the source files. Are they unsupported, or just forgotten? I make heavy use of them in my production code at work. And IV is certainly a requirement. [04:40] ryah: mikegerwitz: undocumented [04:40] eyesUnclouded has joined the channel [04:41] mikegerwitz: ryah: So they're safe to use, then? I was going to add it to the docs initially but I'm unsure if there's a reason it's undocumented to begin with :) [04:41] marienz has joined the channel [04:41] extrastring has joined the channel [04:41] ryah: mikegerwitz: that api will probably get a face lift in the not-so-distant future [04:42] mikegerwitz: ryah: I was wondering that simply by the function name (IV isn't camel-cased). Alright, I'll keep an eye out for that. Id on't mind an API change as long as there's some way to specify an IV [04:43] shaver: ryah: you recommended at one point that we shim spidermonkey with the shared V8/JSC API that webkit uses [04:43] shaver: ryah: would node run atop that, with a bit of effort? [04:43] shaver: I thought you got all intimate with the heap and stuff, for buffers [04:44] ryah: shaver: i've been thinking about that [04:44] tekky has joined the channel [04:44] ryah: it would be a good API to target [04:44] ryah: i think it will be a large effort though [04:45] randallagordon_ has joined the channel [04:45] shaver: yeah [04:45] jimt has joined the channel [04:45] zpao: shaver: ohai [04:45] shaver: I wouldn't want to do it if we were going to have to chase node [04:45] shaver: ryah: but if we were helping node converge on it [04:46] shaver: ryah: mostly, I want to be able to try out harmony/etc. proposals as we implement them in SM (proxies, generators, simple modules, etc.) on node to see how they map to non-browser contexts [04:46] Remoun has joined the channel [04:47] ryah: shaver: what's that API look like anyway? [04:48] shaver: ryah: I dunno, I haven't bothered to look until I asked you :-) [04:48] robarnold has joined the channel [04:49] rflint has joined the channel [04:50] mike5w3c has joined the channel [04:51] ryah: shaver: so let's just say that i'm interested in investigating it futher. [04:51] ryah: :) [04:51] peeps has joined the channel [04:51] Level1_ has joined the channel [04:51] shaver: ryah: that's fair [04:54] skrug has joined the channel [04:54] lstoll has joined the channel [04:54] ChrisPartridge has joined the channel [04:54] MaSch has joined the channel [04:56] marienz has joined the channel [04:56] adamholt has joined the channel [05:00] CIA-125: node: 03Tom Hughes 07v0.4 * rcf7b680 10/ lib/tty_posix.js : newline should also be treated as "enter" key. - http://bit.ly/gQE4kK [05:04] darshanshankar has joined the channel [05:10] pkrumins has joined the channel [05:10] pkrumins has joined the channel [05:11] marienz has joined the channel [05:12] jimt has joined the channel [05:12] aphelion has joined the channel [05:12] ajpiano has joined the channel [05:13] mike5w3c has joined the channel [05:15] TheEmpath2 has joined the channel [05:19] Spion__ has joined the channel [05:19] andrewfff has joined the channel [05:22] isaacs has joined the channel [05:22] ryah: http://arlolra.no.de/ is down :( [05:23] isaacs: ohnoes! [05:23] TheEmpath2: hail nodelings [05:23] abraham has joined the channel [05:24] SubStack: heil! [05:25] sivy has joined the channel [05:26] ryah: http://nodejs.org/dist/node-v0.4.2.tar.gz [05:26] ryah: please test [05:27] Bemmu has joined the channel [05:29] wadey has joined the channel [05:29] Aria: ACTION builds [05:29] tekky has joined the channel [05:29] isaacs: ryah: lgtm: https://gist.github.com/852280 [05:30] Aria: Ah, there's my patch applied. &removefromrpm; [05:30] razvandimescu has joined the channel [05:35] Aria: Working here, ryah [05:38] robotarmy has joined the channel [05:39] pkrumins has left the channel [05:41] TheEmpath2: ACTION reads up on CACHE.MANIFEST for HTML5...sees a nifty way to update it automatically with node.js >:D [05:45] ceej has joined the channel [05:47] everton_ has joined the channel [05:50] lakin has joined the channel [05:54] redmind has joined the channel [05:56] harth has joined the channel [05:58] theslipper has joined the channel [06:03] theslipper has left the channel [06:06] meso_ has joined the channel [06:06] kevin_yb has joined the channel [06:06] briznad has joined the channel [06:07] ryah: isaacs: it's applied [06:07] isaacs: great [06:09] kevin_yb: noob here: any generous person mind helping me debug what i think is paths problem? [06:10] SubStack: kevin_yb: gist it [06:10] kevin_yb: will do [06:11] nornagon_ has joined the channel [06:11] nornagon_: How do I get stuff added to the node.js modules page? I'd like to add https://github.com/nornagon/node-zap [06:11] nornagon_: ... oh, it's a wiki. [06:11] nornagon_: durr :) [06:11] SubStack: nornagon_: best to add it to npm [06:12] nornagon_: it's already in npm [06:12] nornagon_: :) [06:12] Odey has joined the channel [06:13] unomi has joined the channel [06:13] mrkurt has joined the channel [06:13] zemanel has joined the channel [06:13] sstephenson has joined the channel [06:14] kevin_yb: @substack https://gist.github.com/852417 [06:14] nornagon_: SubStack: btw, i wrote a sequential processing helper thing based on Seq: https://github.com/nornagon/node-conseq [06:15] SubStack: neat [06:15] SubStack: everybody should write their own flow control lib at some point [06:15] CIA-125: node: 03isaacs 07master * r11a06fe 10/ (lib/fs.js lib/tty_win32.js): [06:15] CIA-125: node: Closes GH-85 Emit error rather than throwing. [06:15] CIA-125: node: Since "error" events will throw when unhandled anyhow, it makes no sense [06:15] CIA-125: node: to throw from an EventEmitter's method, especially for such a minor [06:15] CIA-125: node: misdemeanor as attempting to write to a non-writable stream. - http://bit.ly/frZEzD [06:16] CIA-125: node: 03Ryan Dahl 07v0.4 * r14475c7 10/ (94 files in 9 dirs): Upgrade V8 to 3.1.8 - http://bit.ly/edKkhk [06:16] CIA-125: node: 03Ryan Dahl 07v0.4 * rfbe36a7 10/ (lib/fs.js lib/tty_win32.js): [06:16] CIA-125: node: Revert "Closes GH-85 Emit error rather than throwing." [06:16] CIA-125: node: This reverts commit f3d364122dc12f13cbfb848576a8b152849452ea. [06:16] CIA-125: node: Landed in master instead. - http://bit.ly/gcOTA6 [06:16] CIA-125: node: 03Bert Belder 07v0.4 * rb3884c5 10/ (deps/v8/SConstruct deps/v8/src/SConscript): [06:16] CIA-125: node: Autodetect no-strict-aliasing, propagate toolchain option to SCons [06:16] CIA-125: node: BUG=v8:884 - http://bit.ly/gLhgxc [06:16] CIA-125: node: 03Ryan Dahl 07v0.4 * r39280e1 10/ (ChangeLog doc/index.html src/node_version.h wscript): Bump version to v0.4.2 - http://bit.ly/ft9mY2 [06:16] CIA-125: node: 03Ryan Dahl 07v0.4 * rca8be39 10/ (2 files in 2 dirs): [06:16] CIA-125: node: Disable test-http-agent2.js for the moment [06:16] CIA-125: node: Still broken. - http://bit.ly/eSNMtz [06:16] SubStack: super fun and you get a good handle on how to manage async complexity [06:16] tpryme has joined the channel [06:17] nornagon_: SubStack: it was very educational :) the main reason i wrote my own was because I wanted to be able to handle .on('success',cb).on('error',eb) as well as the combined cb(err,res) behaviours [06:18] SubStack: yeah I have a few methods that sort of could be used for that purpose but I forget what they are so I never use them [06:18] SubStack: and I don't talk about them in the docs [06:18] meso_ has joined the channel [06:19] andrewfff has joined the channel [06:19] nornagon_: ah, heh [06:20] SubStack: kevin_yb: did you upgrade node or npm on top of an existing installation? [06:20] SubStack: also what is your $NODE_PATH? [06:20] nornagon_: Step also looks interesting: https://github.com/creationix/step [06:21] kevin_yb: SubStack: node path is unset... not managed by nvm? [06:21] nornagon_: next thing i want to do is make it easy to splice in modular bits into a command flow. [06:22] nornagon_: I find a lot of the time I'm doing things like Seq().seq(someHelper()), and in someHelper() there's code like var that = this; Seq().seq(...).seq(function () { ... that.next() }) [06:22] SubStack: you can nest stuff with .do() [06:23] SubStack: chainsaw lets you do crazy nesting tricks like that [06:23] SubStack: nornagon_: also if you want an explicit handle on `this` you can use the underscored methods [06:23] SubStack: seq_(function (next) { next(null, 55) }) === seq(function () { this(null, 55) }) [06:24] SubStack: that just landed a few days ago so I can use seq in coffee script [06:24] SubStack: since coffee doesn't rock the `this` [06:27] nornagon_: ah [06:27] kevin_yb: SubStack... what should node_path be set to? [06:27] nornagon_: now i know why that's there :P [06:28] tbranyen: am i the only one who likes callbacks :( [06:28] nornagon_: the underscored methods don't really catch my fancy, but i see the value [06:28] SubStack: kevin_yb: make sure it agrees with `npm -s config get root` [06:28] tbranyen: seems everyone has a library out there to make flow "better" [06:28] zemanel has joined the channel [06:28] nornagon_: tbranyen: i just { [06:29] nornagon_: get a bit { [06:29] nornagon_: sick of { [06:29] kevin_yb: kevins-macbook:basic kevinolsen$ npm -s config get root [06:29] kevin_yb: kevins-macbook:basic kevinolsen$ echo $NODE_PATH [06:29] nornagon_: this. [06:29] kevin_yb: shit [06:29] tbranyen: nornagon_: you must hate if statements and classes [06:29] nornagon_: tbranyen: the difference is that those things are actually hierarchical [06:29] nornagon_: i want to think about flow as being linear [06:30] kevin_yb: SubStack: https://gist.github.com/852431 [06:30] nornagon_: this, then that, then the other [06:30] tbranyen: yeah thats exactly why i love callbacks [06:30] tbranyen: do this and once its done encapsulate the next action [06:30] nornagon_: yes [06:31] SamuraiJack has joined the channel [06:31] nornagon_: now try writing something that has to do 10 steps [06:31] SubStack: tbranyen: there's no obvious solution I think is why there are so many flow control libraries [06:31] tbranyen: break it out into named functions like you would if you had any code that went 10 steps deep [06:32] SubStack: named functions is sometimes appropriate but not all problems break down that way [06:32] nornagon_: agree [06:32] tbranyen: SubStack: I'm not sure what you mean [06:32] tbranyen: are you talking about losing closed vars in a higher scope or something? [06:32] SubStack: you really do just need a good toolbox of approaches to manage async flow [06:33] SubStack: tbranyen: not just losing scope but also having to come up with names for every trivial step [06:33] tbranyen: seems like a contrived excuse [06:33] SubStack: it really isn't [06:33] SubStack: naming is really hard [06:33] brianmario has joined the channel [06:33] tbranyen: oh i agree [06:33] tbranyen: but its hard for most things [06:34] tbranyen: come up with a naming convention and stick to it [06:34] SubStack: no [06:34] SubStack: :p [06:34] tbranyen: naming sucks, i hate naming temp vars too [06:34] SubStack: I like structuring linear operations linearly [06:34] tbranyen: end up using _ [06:34] fmarceau has joined the channel [06:34] nornagon_: tbranyen: i hope i never have to read your code :P [06:35] tbranyen: nornagon_: next week i'm releasing a node module [06:35] tbranyen: i hope you find lots wrong with it [06:35] nornagon_: function _() { ... }; function __() { ... } ;-p [06:35] tbranyen: since i'm disconnected from the community :-p [06:35] SubStack: tbranyen: yeah your code sounds terrible [06:35] tbranyen: SubStack: mind taking a look at it? [06:35] SubStack: abstractions can be nice [06:36] tbranyen: you don't have to look at the code just the readme [06:36] tbranyen: sec i'll gist [06:36] dominictarr has joined the channel [06:37] isaacs: ryah: https://gist.github.com/852441 [06:37] isaacs: w00t [06:37] tbranyen: SubStack: https://gist.github.com/852442 [06:37] tbranyen: hahaha isaacs [06:37] tbranyen: well its not funny but i had the next gist id :-/ [06:38] isaacs: oh, nice :) [06:38] tbranyen: ah shit i did js instead of markdown [06:38] tbranyen: SubStack: the api has since changed a little, but the concept is still the same [06:38] tbranyen: no need for flow imo, seems to look nice as-is [06:39] mape: what happened to the v0.4.2 tag? [06:39] nornagon_: tbranyen: did you really put // If success will return 0, if an error message throw it as an error string. before every single if (err) { throw err }? [06:39] tbranyen: yeah copy and paste is hard [06:40] amerine has joined the channel [06:40] nornagon_: but that's not even correct :P [06:40] tbranyen: of course it is [06:40] tbranyen: what do you mean? [06:40] nornagon_: 'if success will return 0' [06:40] tbranyen: yeah 0 indicates success [06:40] tbranyen: in most libraries [06:40] tbranyen: for err codes [06:40] nornagon_: you mean 'if the operation succeeded, err will be null'? [06:40] tbranyen: works really with if statements like this too, since 0 is the only number that evaluates falsy [06:41] tbranyen: no err is literally the errcode 0 [06:41] nornagon_: i see [06:41] tbranyen: if you do git.error().strError( 0 ); it will be // Unknown error aka success [06:41] tbranyen: glad i put that comment in xD [06:41] nornagon_: nothing's "returning" though [06:42] tbranyen: yeah, that terminology could be tweaked [06:42] tbranyen: return/be? [06:42] nornagon_: / err will be 0 if the operation succeeded [06:43] nornagon_: or something [06:43] tbranyen: yea, less confusing wording [06:43] nornagon_: also you don't really need to put "// lookup commit" before a line that says commit.lookup(...) [06:43] nornagon_: like saying "// loop from 1 to 5" "for (var i = 1; i <= 5; i++) { ... }" [06:44] andrewfff has joined the channel [06:45] tbranyen: so... no issues with anything that is actually executed :D [06:45] nornagon_: well [06:45] nornagon_: personally i don't like having to put if (err) { throw err } at the beginning of every callback [06:45] nornagon_: 1. because it's noise [06:45] tbranyen: then don't [06:46] tbranyen: its not like the code will break if you don't [06:46] nornagon_: sure it will [06:46] nornagon_: 2. because if that throws out of the cb, it will kill the whole node process [06:46] nornagon_: not good in, say, a webserver which is serving 1000s of queries per second :P [06:47] nornagon_: in fact that code could break very badly if you don't check err [06:47] tbranyen: that convention was pulled directly from the node docs iirc [06:47] nornagon_: consider "fs.rename(path.join(p, 'etc'))" [06:47] nornagon_: if p == null [06:47] nornagon_: because there was an err [06:48] nornagon_: that will just rename some random directory called etc somewhere [06:48] tbranyen: and everything you are pointing out is not a flaw in my api, its trivial banter that is easily corrected with a try/catch or process.uncaughtException [06:48] olegp has left the channel [06:48] nornagon_: process.uncaughtException has its own problems [06:48] olegp has joined the channel [06:48] nornagon_: the point is that flow control libraries can make all this stuff a lot easier [06:48] tbranyen: nornagon_: http://nodejs.org/docs/v0.4.2/api/fs.html#fs.readFile [06:49] nornagon_: yes, i know that's the node convention [06:49] tbranyen: i don't see how a flow control library would help anything you've just pointed out [06:49] tbranyen: that you couldn't easily do on your own [06:49] nornagon_: sure it's easy [06:49] nornagon_: sure you can do it every time you need to [06:49] tbranyen: nobody is putting a gun to the endusers head to throw on every error [06:49] tbranyen: log it some other way [06:49] nornagon_: but you can get a library to help you [06:50] nornagon_: and that frees up your brain so you can think about other things [06:50] Sebmaster has joined the channel [06:50] tbranyen: hmmm i guess that doesn't really sell it for me [06:50] nornagon_: i'd just rather be writing the code that's actually interesting [06:51] nornagon_: instead of if (err) { throw err } [06:51] nornagon_: in every single callback [06:51] tbranyen: i'm not sure i can alter this api to accomodate that [06:51] tbranyen: not sure how a flow approach would help that much either [06:51] nornagon_: in the outward-facing api it doesn't matter [06:51] nornagon_: i can easily use my flow control library to wrap your api [06:52] nornagon_: because i designed it for exactly that [06:52] nornagon_: so you can do whatever [06:52] nornagon_: and i can use it in a nice way :) [06:52] tbranyen: how will it know if an error occurred? [06:52] mikeal has joined the channel [06:52] nornagon_: did you read the readme? [06:52] nornagon_: because it says there :) [06:52] tbranyen: no i just know my code [06:52] nornagon_: https://github.com/nornagon/node-conseq [06:54] kevin_yb: SubStack: any ideas? nothing doing with exporting NODE_PATH [06:54] kevin_yb: node seems to be able to see my nvm directory just fine [06:54] tbranyen: nornagon_: that's interesting, not sure if it really "frees" you from the clutter [06:54] tbranyen: seems like you're stuck still adding that on('error', err) [06:54] nornagon_: sure [06:55] nornagon_: but i can handle all the errors for the flow in one place [06:55] nornagon_: and that on('error') thing is to deal with apis that use eventemitters [06:55] tbranyen: yeah i can write a function called handleError and do the same thing [06:55] nornagon_: if you're using the cb(err, res) convention [06:55] nornagon_: you can use this.combined instead of this.next [06:55] SubStack: kevin_yb: is it a fresh install? [06:55] nornagon_: and it checks the err for you [06:56] tbranyen: ha didn't realize you wrote that [06:57] nornagon_: also have fun running several things in parallel and calling a callback when all of them have completed without some kind of 'flow control library' [06:57] kevin_yb: SubStack: dude i totally rebooted like 3 times, killed a chicken, offered it to satan, etc... [06:57] SubStack: kevin_yb: that's not what I mean [06:57] tbranyen: nornagon_: i will, its called deferreds ;-) [06:57] SubStack: rebooting? what the fuck [06:58] tbranyen: i don't need a whole library to handle that [06:58] kevin_yb: whats fucked is i can require everything but express [06:58] kevin_yb: all other packages installed by npm are cool [06:58] SubStack: npm rm express@version [06:58] SubStack: then install it again [06:59] SubStack: the reason why I asked if your node+npm combo was a fresh install was because shim modules went away and if you have them around still then your shit will break [06:59] kevin_yb: all fresh as of this evening [06:59] dustym has joined the channel [06:59] isaacs: kevin_yb: old versions of express do not work with new versions of npm [07:00] kevin_yb: rm'ed installed 1.0.7 and its all good [07:00] isaacs: great [07:00] SubStack: it's also rather easy to think that you've uninstalled everything [07:00] kevin_yb: thanks man! seriously stumped for about 2 hours now. [07:00] SubStack: but then fragments linger and fuck up your packages [07:01] kevin_yb: i had a pretty clean environment starting out, but yeah. churning will get you into weird states. [07:01] kevin_yb: thanks all! [07:01] wilmoor__ has joined the channel [07:02] skm has joined the channel [07:04] Validatorian has joined the channel [07:05] garrytan has joined the channel [07:10] jeromegn has joined the channel [07:12] unomi has joined the channel [07:14] gozala has joined the channel [07:16] razvandimescu has joined the channel [07:19] jakehow has joined the channel [07:20] kal-EL_ has joined the channel [07:22] mattikus has joined the channel [07:23] rflint has left the channel [07:27] fly-away has joined the channel [07:29] blaines has joined the channel [07:32] pau|c has joined the channel [07:33] redmind_ has joined the channel [07:34] ttpva_ has joined the channel [07:35] wvl has joined the channel [07:37] ph^ has joined the channel [07:38] luke` has joined the channel [07:40] ericzz has joined the channel [07:40] ph^ has joined the channel [07:42] ph^ has joined the channel [07:42] neshaug has joined the channel [07:43] andrewfff has joined the channel [07:43] ttpva has joined the channel [07:46] nornagon_ has joined the channel [07:54] groom has joined the channel [07:56] gredman has joined the channel [07:56] emattias has joined the channel [07:58] morganallen has joined the channel [07:59] fangel has joined the channel [08:00] KungFuHamster has joined the channel [08:03] MikhX has joined the channel [08:05] bergie has joined the channel [08:08] aabt has joined the channel [08:08] mraleph has joined the channel [08:09] langworthy has joined the channel [08:14] mAritz has joined the channel [08:14] morganallen has joined the channel [08:18] skohorn has joined the channel [08:20] seivan has joined the channel [08:20] redmind has joined the channel [08:21] snearch has joined the channel [08:22] yozgrahame has joined the channel [08:23] nivoc has joined the channel [08:23] jbpros has joined the channel [08:25] Druid_ has joined the channel [08:29] pascalopitz has joined the channel [08:31] Sebmaster has joined the channel [08:31] Country has joined the channel [08:32] Level1 has joined the channel [08:32] mike5w3c has joined the channel [08:32] adambeynon has joined the channel [08:34] ph^_ has joined the channel [08:34] vnguyen: if i have an object like: `var myObject = new Object()` and I have a string obj = `myObject` and I want to do `new myObject` but using the string, is that possible? [08:34] [AD]Turbo has joined the channel [08:35] [AD]Turbo: hi there [08:37] garrytan: @vnguyen: sounds like you want to do an eval [08:37] vnguyen: garrytan: eeew, there's no other way? [08:38] garrytan: new eval(obj)() [08:38] KungFuHamster has joined the channel [08:41] vnguyen: garrytan: i had to do: eval("new " + obj + "(inputs)") [08:42] vnguyen: have to escape/secure obj tho [08:43] froak has joined the channel [08:43] kristsk has joined the channel [08:43] slaskis: anyone has tried to migrate from express 1.0 to express 2.0-pre? [08:43] slaskis: i find that partials behaves very oddly [08:43] slaskis: compared to before [08:44] altamic has joined the channel [08:44] altamic has joined the channel [08:44] hwinkel has joined the channel [08:47] andrewfff has joined the channel [08:48] daveyjoe has joined the channel [08:49] herbySk has joined the channel [08:51] msucan has joined the channel [08:52] jbergstroem: Does anyone know if there's a plan to stop bundling dependencies and let your os take care of that (os/package manager); or at least work against 'stable' versions? [08:53] muhqu has joined the channel [08:53] jbergstroem: nothing bad in running bleeding edge, but it's hard to keep up if you want to follow other upstreams [08:59] CrazyGoogle has joined the channel [08:59] Aria: OSes will start packaging as time goes on, I'm sure. As things stabilize, that gets easier. [09:00] Aria: I'm starting to make RPMs for my own OS. [09:00] Aria: Node builds against a system libev and v8 if you tell it to. [09:00] Aria: (libev has one gotcha if you're not careful, though) [09:01] Aria: (Since it has a compile time define that changes its API and ABI both) [09:02] __tosh has joined the channel [09:05] mape: So v0.4.2, it isn't on github? [09:06] unomi has joined the channel [09:07] brianmario has joined the channel [09:07] MikhX has joined the channel [09:07] TomY has joined the channel [09:08] darkredandyellow has joined the channel [09:09] AphelionZ has joined the channel [09:10] slaskis: mape: it's in the 0.4 branch isnt it? [09:10] astoon has joined the channel [09:11] framlin has joined the channel [09:11] hwinkel has joined the channel [09:12] pngl has joined the channel [09:12] keyvan- has joined the channel [09:13] Fuu` has joined the channel [09:14] mape: hmm k [09:15] aklt has joined the channel [09:16] dguttman has joined the channel [09:17] ntelford has joined the channel [09:21] stalled has joined the channel [09:24] gozala has joined the channel [09:26] Druid_ has joined the channel [09:28] MrTopf has joined the channel [09:29] tbassetto has joined the channel [09:33] incon has joined the channel [09:34] pastak has joined the channel [09:34] jetienne has joined the channel [09:37] tmzt: slaskis: yeah. I'm just using relative paths now, hopefully there can be a set('view partials') or something [09:39] muhqu_ has joined the channel [09:39] Polysics has joined the channel [09:39] Polysics has left the channel [09:41] Polysics has joined the channel [09:41] Polysics: hello [09:41] mnot has joined the channel [09:41] Polysics: i need to writer a combination crawler/scraper [09:41] Polysics: *write [09:41] Polysics: would yo urecommend node? ruby solutions i tried are very slow [09:42] tmzt: there was htmlparse or soemthing like that [09:45] Polysics: i think i could even just use jquery to run selectors [09:45] venom00ut has joined the channel [09:46] Polysics: i am more interested in the crawler part [09:49] dewey_ has joined the channel [09:49] nornagon_ has joined the channel [09:53] keyvan- has joined the channel [10:00] seutje has joined the channel [10:03] mjr_ has joined the channel [10:06] altamic has joined the channel [10:06] altamic has joined the channel [10:07] tc77 has joined the channel [10:08] floby has joined the channel [10:08] bzinger has joined the channel [10:09] lukus has joined the channel [10:13] xla has joined the channel [10:16] hwinkel has joined the channel [10:16] froak_ has joined the channel [10:17] binspace has joined the channel [10:19] ttpva has joined the channel [10:20] garrytan has joined the channel [10:21] tanepiper: anyone ever seen a RangeError: Maximum call stack size exceeded [10:21] tanepiper: thrown? [10:21] saikat has joined the channel [10:22] AAA_awright: tanepiper: You're probably recursing where you should be iterating or something like that [10:22] tanepiper: all i'm doing is generating a string :/ [10:22] tanepiper: it's not even that complex [10:22] AAA_awright: What are you calling? [10:23] tanepiper: hmm acually, sems to be in express app.set [10:23] tanepiper: i have a setting in there that is an object [10:23] tanepiper: app.set('facebook.app_id') [10:24] tanepiper: i have to do foo = app.set('facebook') app_id = foo.app_id [10:25] AAA_awright: v8: (function(){arguments.callee();})(); [10:25] AAA_awright: Where's the bot bah [10:25] SubStack: unbounded recursion is pesky [10:25] AAA_awright: tanepiper: Run that [10:25] SubStack: js: (function f () { f() })() [10:25] gbot2: SubStack: Error: InternalError: too much recursion [10:25] temp01 has joined the channel [10:26] AAA_awright: hmm [10:26] KungFuHamster_ has joined the channel [10:26] AAA_awright: So what is "Maximum call stack size exceeded" I thought that was the same [10:27] markwubben has joined the channel [10:27] sth has joined the channel [10:30] piscisaureus has joined the channel [10:30] SubStack: seems to be some bot idiosyncrasy [10:30] AAA_awright: That error message seems to pre-date V8, is gbot2 V8? [10:31] AAA_awright: js: process [10:31] gbot2: AAA_awright: Error: ReferenceError: process is not defined [10:31] jetienne: v8: process [10:32] SubStack: js: this [10:32] jetienne: process is node, not js [10:32] gbot2: SubStack: {} [10:32] SubStack: js: Object.getOwnPropertyNames(this) [10:32] gbot2: SubStack: ["Function","Object","eval","PerfMeasurement","version","revertVersion","options","load","readline","print","putstr","dateNow","help","quit","assertEq","assertJit","gc","gcparam","countHeap","makeFinal... [10:32] AAA_awright: jetienne: That's exactly what I was checking for [10:32] jetienne: AAA_awright: is there a bot supporting node ? [10:32] SubStack: js: global [10:32] gbot2: SubStack: Error: ReferenceError: global is not defined [10:36] lgl has joined the channel [10:38] eventi has joined the channel [10:38] mjr_ has joined the channel [10:40] zum has joined the channel [10:40] matyr has joined the channel [10:47] tanepiper: oh great - facebooks auth key breaks v8 JSON.parse [10:49] tanepiper: v8: JSON.parse("access_token=153882141336407|85e2ca767110cd277c3e420c-799000000|fsd2hdh1eyUmcEg3zRhoPGVBITc") [10:49] tanepiper: v8: console.log(JSON.parse("access_token=153882141336407|85e2ca767110cd277c3e420c-799000000|fsd2hdh1eyUmcEg3zRhoPGVBITc")) [10:49] sth: why would that parse? [10:49] sth: It's not json [10:50] tanepiper: do'h your right :D [10:50] boucher_ has joined the channel [10:50] tanepiper: their error returns as JSON, not their token [10:50] sth: you want querystring.parse with | instead of & [10:50] pascalopitz has joined the channel [10:51] abracsi has joined the channel [10:52] tanepiper: not enough coffee yet :D luckly i didn't spend too long on that bit yet ;) [10:52] markwubben has joined the channel [10:57] rjrodger_ has joined the channel [10:59] FireFly|n900 has joined the channel [11:02] Sorella has joined the channel [11:04] omac has joined the channel [11:05] liquidproof has joined the channel [11:06] atiti has joined the channel [11:07] dewey__ has joined the channel [11:07] ossareh has joined the channel [11:07] nook has joined the channel [11:09] Andi5 has joined the channel [11:10] eventii has joined the channel [11:11] Gruni has joined the channel [11:12] d0k has joined the channel [11:13] MikhX has joined the channel [11:15] xla has joined the channel [11:17] jpstrikesback has joined the channel [11:24] altamic has joined the channel [11:24] altamic has joined the channel [11:24] eventi has joined the channel [11:26] saikat has joined the channel [11:29] matyr_ has joined the channel [11:30] okuryu has joined the channel [11:30] eventii has left the channel [11:34] ukev has joined the channel [11:34] gormer has joined the channel [11:37] jetienne: what is the recommended way to test if my js is running in node or in a browser ? [11:37] liquidproof has joined the channel [11:40] broofa has joined the channel [11:41] jpstrikesback has joined the channel [11:42] AAA_awright: jetienne: Defined global variables, Node.js won't have "window" defined, the browser won't have "process" defined [11:42] altamic has joined the channel [11:42] altamic has joined the channel [11:42] dsirijus has joined the channel [11:43] AAA_awright: That should work at least [11:44] AAA_awright: jetienne: Even better, just define browser=true when compressing your code for a browser (and Node.js code remains uncompressed) [11:44] jetienne: this.inBrowser = typeof window === "object"; <- so something like this ? [11:45] AAA_awright: That should work, but why do you need to make the check at all? [11:46] jetienne: AAA_awright: i got the same code in node and browser. some part need to be disabled in browser [11:46] unomi has joined the channel [11:46] jetienne: like display on canvas is browser onlmy [11:47] swistak has joined the channel [11:47] markc has joined the channel [11:48] AAA_awright: jetienne: I would build seperate versions, including building the browser code into a single, compressed file [11:48] broofa_ has joined the channel [11:49] fermion has joined the channel [11:49] AAA_awright: with a Makefile or something [11:49] jetienne: my brain is small, i like a single version :) [11:49] AAA_awright: Considering it's going over the network it's a good practice for loading times anyways [11:50] AAA_awright: But in any event that should work, testing for window [11:51] mscdex: i would just test for process and maybe process.versions too [11:52] mscdex: or window [11:52] jetienne: mscdex: so more robust but same principle [11:52] matyr has joined the channel [11:53] jetienne: maybe we should add a process.yesitisconfirmedthisisnode() :) [11:53] jetienne: this is impossible to conflict with that :) [11:53] malkomalko has joined the channel [11:54] tmzt: what's wrong with using Accept: ? [11:55] McMAGIC-- has joined the channel [11:56] jetienne: tmzt: ? is this about node/browser detection ? [11:56] tmzt: yes [11:56] jetienne: tmzt: i dont understand accept: can you give details [11:56] mr_daniel has joined the channel [11:56] tmzt: you would supply a list of mime types and options, compressed could be one of those [11:56] jpstrikesback has joined the channel [11:56] tmzt: it's up to the server to send the right version [11:57] tmzt: it's not User-Agent: sniffing, it's pretty sound, though compressed js is the same as normal js [11:58] jetienne: tmzt: i think there is a misunderstanding. im just willing to know how to detect when my js is running from js. like if inbrowser, dont read local config file, but on node, do it [11:58] tmzt: oh [11:58] tmzt: yeah there is a misunderstanding [11:58] nivoc has joined the channel [11:58] tmzt: from what AAA_awright said, I thought he wanted to server compressed or non compressed [11:58] FireFly|n900 has joined the channel [11:58] tmzt: isn't require('fs') enough? [11:59] activeindian has joined the channel [11:59] daveluke has joined the channel [12:00] AAA_awright: tmzt: Compressed, like, YUI compresser or the Google Javascript compiler thing [12:00] AAA_awright: Not gzip stream compression (which you probably should setup Nginx to do or something) [12:02] hwinkel has joined the channel [12:02] lolninja has joined the channel [12:03] hij1nx has joined the channel [12:04] lolninja: Hey, I'm working on a framework that I intend to be pretty modular, and to accommodate this I think dependency injection would fit best, so I've written a quick block of demo code, and was hoping I could get a sanity check on the code? I've pasted it to http://pastebin.com/XATmMCtC [12:06] broofa has joined the channel [12:09] andrewfff has joined the channel [12:10] eventi has joined the channel [12:11] matyr_ has joined the channel [12:13] masahiroh has joined the channel [12:13] abracsi has joined the channel [12:16] Gruni has joined the channel [12:16] stagas_ has joined the channel [12:18] Gruni has joined the channel [12:18] redmind has joined the channel [12:18] edude03 has joined the channel [12:19] Rv has joined the channel [12:19] Rv: hi [12:19] Rv: anyone use express-forms? [12:19] eee_c has joined the channel [12:20] andrewfff has joined the channel [12:25] Rv: anyone? [12:25] Ezku\: nope, but looks interesting. [12:26] Utkarsh has joined the channel [12:27] Ezku\: lolninja: I dabbled with dependency injection myself over the holidays: http://github.com/Ezku/coffee-injector [12:28] Ezku\: my point was that if your resource access is asynchronous, your dependency injection should likely be as well [12:29] lolninja: ah right, makes sense [12:29] aways|bnc has joined the channel [12:29] Ezku\: I'm not an authority of any kind on this and it was just an experiment, so feel free to refute anything and everything :) [12:29] lolninja: I'm trying to write some code that'll work both in nodejs and inside a browser, which is why I was trying to make a nice big fat object I can pass around :S [12:31] Rv: when i use express-form i dont know how to validate fields with name like user[age] i can only validate fields with name: age but no user[age] [12:33] altamic has joined the channel [12:36] Rv: any advice? [12:37] hwinkel has joined the channel [12:38] jpstrikesback: lolninja: have you seen grasshopper? [12:38] jpstrikesback: https://github.com/tuxychandru/grasshopper [12:39] tomaw has joined the channel [12:41] lolninja: jpstrikesback: looks cool, but I'm not needing an mvc with request routing, trying to write a really simple multi user game, and was hoping to have client and server side validation, which is why I wanted the code to just work on both sides of the connection so to speak. [12:41] altamic has joined the channel [12:42] kawaz_air has joined the channel [12:43] daveluke has joined the channel [12:43] matyr has joined the channel [12:44] jpstrikesback: sounds interesting [12:44] isaqual has joined the channel [12:45] Ezku\: lolninja: check out browserify [12:45] Ezku\: might solve some of your problems. [12:46] matyr_ has joined the channel [12:47] astralab has joined the channel [12:47] astralab has joined the channel [12:47] SubStack: lolninja: also dnode [12:47] SubStack: ACTION wrote both of those, incidentally [12:49] lolninja: Ezku\: ah cool ty [12:49] Ezku\: SubStack: :) [12:50] lolninja: SubStack: ah cool browserify looks ace [12:50] fly-away has joined the channel [12:51] jpstrikesback: yeah I was thinking dnode might work that out for you (passing the fat object around)… [12:52] jpstrikesback: but I haven't used it yet so I was hoping SubStack was awake :P [12:52] jpstrikesback: SubStack++ [12:52] SubStack: well in building a game you'll have different sorts of trade-offs depending on the type of event [12:53] SubStack: if you need low-latency object access you can use browserify to use some of your server-side model and validation code on the browser [12:53] SubStack: and then when you want to push data to and from the server you can use dnode [12:54] lolninja: ah cool [12:55] lolninja: so is dnode RMI over socket.io? [12:56] SubStack: socket.io or regular tcp sockets [12:56] SubStack: dnode is more about the protocol than the transport [12:57] SubStack: the v0.6 branch has a better readme https://github.com/substack/dnode/tree/v0.6 [12:57] SubStack: it will land once socket.io gets a tiny update [12:57] lolninja: ok cool, looks like its git clone time :D [12:58] SubStack: I do feel like dnode has an especially high inferential distance though [12:59] SubStack: and that is a very hard problem to solve [12:59] SubStack: explaining things is hard >_< [12:59] hwinkel1 has joined the channel [13:00] lolninja: yeah, I think I understand the problem its trying to solve, will take a deeper look once I get back from lunch, and with that bbiab [13:01] mraleph has joined the channel [13:02] Fullmoon has joined the channel [13:02] jpstrikesback has joined the channel [13:02] mraleph: piscisaureus: SunSpider is bad benchmark. It was OK when all engines were slow like turtles, but nowadays SunSpider score has little real meaning. [13:03] piscisaureus: mraleph: yeah I saw the tweet from erik too [13:03] piscisaureus: mraleph: maybe it should be ran five times or so [13:03] piscisaureus: *run [13:03] riven has joined the channel [13:03] riven has joined the channel [13:04] mraleph: well. they run it several times, but each time they load script in a new iframe [13:04] mraleph: some tests run for 11 freaking ms. [13:05] piscisaureus: I wonder why this has so much effect why when crankshaft landed on x32 initally almost no improvement was visible [13:05] mraleph: hmm. [13:05] mraleph: no it was visible. [13:06] piscisaureus: yeah but not like almost double v8 score [13:06] mraleph: there was no nice drops on AWFY because it was not working at that moment. [13:06] mraleph: actually it doubled v8 score :-) [13:07] omac has left the channel [13:07] mraleph: "Overall, Crankshaft boosts V8’s performance by 50% on the V8 benchmark suite." this is quote from release blog post from December. [13:07] mraleph: and since that time we did a lot of work. [13:08] argb has joined the channel [13:08] orls has joined the channel [13:08] mraleph: initial version of Crankshaft did not even optimize closures. [13:09] piscisaureus: mraleph: but to be honest, I barely noticed any perf increase in december and I kinda dismissed that 50% increase statement as PR bs [13:09] piscisaureus: no intent to hurt your feelings [13:09] piscisaureus: I the x64 bench shows that crankshaft does live up to its promise [13:10] meso_ has joined the channel [13:10] piscisaureus: Could be there were (are?) some issues with crankshaft not working well for node [13:11] argb: Node will be able to fork new processes (using the Web Workers API ) which fits well into the current design. when will implement the promise? [13:12] skohorn has joined the channel [13:13] mraleph: piscisaureus: without profiling it's hard to say what really happens. it can be that really hot functions in node are non-(yet)-optimizable by crankshaft. e.g. they contain dreaded try-catch. [13:14] mraleph: piscisaureus: or it might be that node profile is actully to flat so the real time is spent in C++. [13:14] piscisaureus: mraleph: there are some benchmarks now that test raw JS performance I believe [13:15] mraleph: can haz benchmarks? [13:15] darkred has joined the channel [13:16] mraleph: I am preparing some slides for nodecamp.eu (it's not completely decided yet that I will go, but I hope I will) and I did some profiling of node simple http bench. [13:16] altamic has joined the channel [13:16] altamic has joined the channel [13:16] piscisaureus: mraleph: syntax error. I don't understand 'can haz benchmarks' :p [13:16] piscisaureus: mraleph: you should come! [13:17] piscisaureus: and I think that could be very interesting [13:17] Poetro has joined the channel [13:17] piscisaureus: http perf is very hot though the parser is in c so that may not be the most interesting thing to look at [13:17] jetienne: mraleph: dtrace will be included in v8 ? [13:18] arnorhs has joined the channel [13:18] piscisaureus: mraleph: you should look at node-mysql. It's performance is very much js-bound and there are perf issues with it that nobody understands [13:19] mike5w3c has joined the channel [13:19] mraleph: on the top of the profile there are lookups in of Object properties performed in C++ runtime. It seems that node is either using some object(s) as a hashtable on a fast path or it some pretty important objects went slowcase for some reason. [13:19] mraleph: this is not good for performance. [13:19] mraleph: piscisaureus: http://images.icanhascheezburger.com/completestore/2008/9/9/iistehjookit128654615148700607.jpg [13:19] mraleph: jetienne: nobody submitted any patches with dtrace support. [13:20] piscisaureus: :-O [13:20] piscisaureus: the benchmarks site is down. I should tickle arlo when he wakes up [13:21] throughnothing has joined the channel [13:21] jetienne: mraleph: oh i asked because joyent made big announce on dtrace to monitor node early this week [13:21] mraleph: piscisaureus: well. if I remember correctly felixge promised to create pure JS benchmark that would illustrate node-mysql problems but he did not complete it yet AFAIK. [13:21] piscisaureus: ahaa [13:21] piscisaureus: felixge: ping [13:21] mraleph: both I and Erik are waiting for this benchmark so we can try to understand wtf is going on. [13:22] mraleph: jetienne: dtrace is Solaris specific is not it? [13:23] aheckmann has joined the channel [13:25] mikegerwitz: mraleph: Not anymore. http://en.wikipedia.org/wiki/DTrace [13:26] eventi has joined the channel [13:28] olivier has joined the channel [13:28] skm has joined the channel [13:28] mraleph: mikegerwitz: last time I saw freebsd was 10 years ago in school :-) [13:29] mike5w3c has joined the channel [13:30] argb has joined the channel [13:30] piscisaureus: mraleph: I believe there was some problem with buffer.toString that prevented felixge from making a pure-js benchmark [13:30] piscisaureus: too bad he's not around, I'll prod him [13:30] mraleph: piscisaureus: but I really think that Crankshaft has a great potential and it should improve perf of some node.js applications. [13:31] mikegerwitz: mraleph: Heh, never actually used it :) Only OpenBSD briefly [13:31] mraleph: piscisaureus: he told me he had some wierd perf results recently [13:31] ineation has joined the channel [13:31] matyr has joined the channel [13:31] piscisaureus: yeah I believe he said that buffer.toString was very fast in a standalone benchmark but very slow in node-mysql context [13:32] mraleph: piscisaureus: so I said that I really need to look at the code and he replied that he will ping me. but nothing. I think he has his hands full with transloadit [13:32] piscisaureus: good for him. Bank the money [13:32] mraleph: :-) [13:32] piscisaureus: I wondered whether it could be that v8 doesn't do fastapi optimization in a particular context [13:33] piscisaureus: I know for sure that the first few times that buffer.toString is called in your node app it goes slow-case [13:34] piscisaureus: well, that was a few months ago anyway. I saw it when stepping through v8 code with a disassembler. [13:34] piscisaureus: that were sucky times [13:34] mraleph: piscisaureus: btw about ia32 Crankshaft launch. I found a link that show that drop: http://www.arewefastyet.com/awfy2.php?machine=9&view=individual&runs=8000 takes a while to load it though. [13:35] eyesUnclouded has joined the channel [13:36] willwhite has joined the channel [13:36] marienz has joined the channel [13:37] piscisaureus: mraleph: yeah now I see. Pretty impressive too indeed. (and it makes me wonder what happened around january 6th -.-) [13:38] mraleph: ah that was a bug we did some bad cleanup in type feedback routines [13:40] matyr_ has joined the channel [13:40] piscisaureus has joined the channel [13:40] piscisaureus: about:crashes [13:41] mraleph: piscisaureus: I really want to see felixge benchmarks... [13:41] piscisaureus: like, from node? [13:42] FireFly|n900 has joined the channel [13:42] piscisaureus: Ah. felixge just tweeted something, so I think he has time :-) [13:42] mraleph: like what the magic happens with this toString or whatever. [13:44] mraleph: *sigh* macbook battery life sucks lately… guess I need to replace it. [13:44] mhausenblas has joined the channel [13:44] Aikar: http://www.arewefastyet.com/awfy2.php?runs=8000&machine=8 64bit v8 is showing a huge speed imprvement [13:45] mscdex: replace the macbook? [13:45] mscdex: :D [13:45] Aikar: just a few days ago [13:45] mraleph: Aikar: that's crankshaft for you! just turned it on by default for x64 and arm today :-) [13:45] ryanfitz has joined the channel [13:45] Aikar: ahh :OO [13:46] Aikar: so its been on for 32bit and the benchs for 32 are still at 7000? [13:46] lolninja: SubStack: I've had a quick read of the documentation on your .net, and I think dnode will be ideal for my eventual server/server and server/client code. I think I understand most of whats going on, but I'll need to dig deeper so I understand how the remote callbacks are working and if there are any related security issues. Thanks for the heads up. [13:46] mraleph: mscdex: I see no reason to replace macbook (well it is small and niceish and only 2 years old). [13:46] Aikar: cause the 32bit graph isnt showing a drop [13:46] aphelion has joined the channel [13:46] aphelion has joined the channel [13:46] dyer has joined the channel [13:46] mraleph: Aikar: for ia32 we turned it in early December. [13:46] mraleph: Aikar: http://www.arewefastyet.com/awfy2.php?machine=9&view=individual&runs=8000 [13:47] matclayton has joined the channel [13:47] mraleph: Aikar: then we started porting it to arm and x64 [13:47] Aikar: so 64bit is drastically faster than 32? [13:47] mraleph: I don't think so. It probably depends on the usage. [13:47] mscdex: is crankshaft enabled by default with node? [13:47] Aikar: wait hld on these graphs are not the same o.o [13:48] mraleph: :-) [13:48] Aikar: oh ok i thought lower was at bottom [13:49] Aikar: so 32 is faster atm [13:50] Aikar: anyways afk gotta get out door, good to know bout cs on x64 [13:50] petefoth has joined the channel [13:51] davidsklar has joined the channel [13:51] matyr has joined the channel [13:51] rjrodger_: what is the difference between exports and module.exports? [13:52] mscdex: rjrodger_: it's the same object [13:53] xandrews has joined the channel [13:53] rfay has joined the channel [13:54] mraleph has joined the channel [13:54] mraleph: sorry freaking paid wifi expired [13:54] rjrodger_: see that's that what I though - but it behaves differently - e.g. module.exports = function() {} works just fine, but exports = function() {} does not - TypeError: object is not a function at Object.CALL_NON_FUNCTION (native) [13:54] jlecker has joined the channel [13:54] jbergstroem:  [13:54] mraleph: argh. when communism finally wins and wifi will be free everywhere? [13:55] rjrodger_: used as: myfunc = require('./mymodule') [13:55] mscdex: rjrodger_: yeah, if you're overwriting exports you have to use module.exports = {foo: 'bar'} [13:55] saschagehlich has joined the channel [13:55] mscdex: but if you just want to attach stuff you can use exports.foo = 'bar' [13:56] rjrodger_: ok - any idea why? does plain exports just create a local object? [13:57] altamic has joined the channel [13:57] MikhX has joined the channel [13:58] mikegerwitz: rjrodger_: All node does is wrap your module in a function. The exports argument passed to that function is a reference to module.exports [13:59] mscdex: rjrodger_: yeah, exports is a local variable [13:59] mikegerwitz: rjrodger_: Setting exports removes that reference. [13:59] rjrodger_: makes sense! tx [14:00] rjrodger_: serves me right for believing in magic [14:00] mikegerwitz: Speaking of which - is it ever frowned upon for replacing module.exports with a function? I'm unaware of the implications, but I've wanted to do it in the past. Just want to make sure it won't break anything in the future. [14:01] SubStack: I do that all the time [14:01] mikegerwitz: SubStack: Oh, great :) [14:01] rjrodger_: mikegerwitz: i've seen it done it quite a few modules [14:02] SubStack: another fun thing is that functions are objects too so you can set attributes [14:02] rjrodger_: as a convenience [14:02] willwhite has joined the channel [14:02] petefoth has left the channel [14:02] rjrodger_: SubStack: +1 for that - makes you API very easy touse [14:03] colinclark has joined the channel [14:04] fumanchu182 has joined the channel [14:04] jmar777 has joined the channel [14:05] razvandimescu has joined the channel [14:05] trotter has joined the channel [14:06] FireFly|n900 has joined the channel [14:06] altamic has joined the channel [14:06] pdelgallego has joined the channel [14:08] davidwalsh has joined the channel [14:10] dnolen has joined the channel [14:11] alex_b has joined the channel [14:11] sivy has joined the channel [14:12] tk has joined the channel [14:13] KungFuHamster_ has left the channel [14:13] skm has joined the channel [14:15] skohorn has joined the channel [14:16] eventi has joined the channel [14:18] unomi has joined the channel [14:18] mraleph has joined the channel [14:19] daveluke has joined the channel [14:20] skm_ has joined the channel [14:21] Bastinat0r has joined the channel [14:21] mlncn has joined the channel [14:23] strmpnk has joined the channel [14:23] jmar777 has joined the channel [14:24] tk has joined the channel [14:24] nonnikcam has joined the channel [14:25] eventi: hey - using some old code I found, and it's doing foo = http.createClient( port, host ) ... I can't find this in the docs, so I assume there's a new way to do it, but what did this used to do? [14:27] Gruni has joined the channel [14:27] jmar777: eventi: it created an http client for the specified port/host. look here: http://nodejs.org/docs/v0.2.6/api.html#http-client-183 [14:28] mikegerwitz: eventi: Likely http://nodejs.org/docs/v0.4.1/api/http.html#http.request is what you want now [14:28] eventi: old docs are so pretty :) - Thanks [14:29] mikegerwitz: eventi: Heh, I do prefer the old docs myself. I develop in a terminal and a very dark gvim theme, so the new documentation is blinding ._. [14:29] jmar777: eventi: the new stuff is better - has a much simpler API and handles connection pooling for you [14:29] kristsk: moar like -.- [14:29] eventi: jmar777: looks like it [14:29] AnimaSana has joined the channel [14:29] skm has joined the channel [14:29] AnimaSana has left the channel [14:31] asabil has joined the channel [14:31] mike5w3c_ has joined the channel [14:31] AnimaSana has joined the channel [14:32] eventi: mikegerwitz: which browser, can't you change it with some greasemonkey-ish thing? [14:32] AnimaSana: is anyone looking for someone to collaborate with on any kind of game project? [14:32] isaqual has joined the channel [14:33] atiti: lol, that question is somewhat wide [14:33] AnimaSana: yes it is :P [14:33] eventi: i would say YES [14:33] atiti: ive been planning to make an MMO browser game [14:34] AnimaSana: like the ones bigpoint makes? [14:34] Me1000 has joined the channel [14:34] atiti: not sure what kind they make [14:35] atiti: but my idea was a 2d bomberman like, with one huge world [14:36] AnimaSana: that sounds cool [14:36] AnimaSana: the only realtime game I have seen so far, is wordsquared (previously knows as scribb.ly) [14:36] AnimaSana: the only one using node.js, I guess there are more [14:36] Venom_X has joined the channel [14:37] atiti: ive got a very very crude javascript+html5 implementation so far [14:37] atiti: just for a 20x20 map and two players [14:37] mikegerwitz: eventi: I use Chrome. Yes I could alter the CSS [14:37] AnimaSana: well, that is a start. do you have a public url? [14:37] mikegerwitz: eventi: But that doesn't change the fact that the old docs are still better looking ;) [14:38] eventi: lol [14:38] mikegerwitz: eventi: Though these are more professional. [14:38] Bastinat0r has left the channel [14:38] AnimaSana: this post is pretty interesting for anyone wanting to make MMO games http://www.startupmonkeys.com/2010/09/building-a-scrabble-mmo-in-48-hours/ [14:39] rwaldron has joined the channel [14:39] cnu has joined the channel [14:42] atiti: the backend is in php so far [14:42] atiti: it was just a quick hack tho, im planning to rewrite it [14:42] AnimaSana: using node.js this time? [14:43] atiti: maybe ;) [14:43] atiti: also need some websockets or some server push [14:44] atiti: cos polling is ugllyy [14:44] AnimaSana: true... so pusher or socket.io or something else right? [14:44] atiti: ye i guess [14:44] AnimaSana: why do I get the feeling that node.js + websockets is what Flash Media Server has been doing years ago? :P [14:45] atiti: im rather new to node.js [14:45] AnimaSana: has anyone worked with FCS or FMS before? [14:45] jetienne: AnimaSana: still true on firefox :) [14:45] jetienne: AnimaSana: socket.io uses flash on firefox. and the ping time is the same as real websocket [14:45] aabt has joined the channel [14:46] AnimaSana: jetienne: yeap it falls back on flash if the browser does not support websockets [14:46] davidc_: websockets "can" use flash rather. [14:46] davidc_: AnimaSana: precisely. [14:46] atiti: sounds like what i need [14:47] MrSteve has joined the channel [14:47] jetienne: davidc_: ? websocket are websocket. no flash in there [14:47] davidc_: And websockets are essentially polling :P Only difference is that they aren't standardized yet [14:47] davidc_: jetienne: exactly :) [14:47] davidc_: Oh sorry I thought you said websockets use flash on firefox, but I see you mentioned "socket.io" [14:48] jetienne: atiti: if you condere using a external service, you can use pusher or easywebsocket [14:48] jetienne: considere [14:48] SubStack: AnimaSana: and java applets before that [14:48] eee_c has joined the channel [14:48] SubStack: the nice thing about design is you can scrap tech and start over now and then [14:48] pascalopitz: I thought websocket != polling? [14:48] davidc_: java applets had a great potential for distributed computing, shame that they sucked so much :P [14:48] AnimaSana: SubStack: the thing with Flash Media Server is that it was always well built, java applets sucked [14:49] jetienne: pascalopitz: websocket is a tcp connection. this is bidirectional and remain established [14:49] SubStack: a media server doesn't sound terribly composable [14:49] pascalopitz: exactly [14:49] davglass has joined the channel [14:49] SubStack: and probably cost money to get licensing for [14:49] matyr_ has joined the channel [14:49] davidc_: jetienne: so does a polling request over http 1.1 [14:49] Muon has joined the channel [14:49] Muon has joined the channel [14:50] SubStack: barriers to entry kill products [14:50] davidc_: I just want websockets to become standardized. [14:50] pascalopitz: can socket.IO do comet for FF, as websocket fallback? [14:50] Muon: pascalopitz: yes [14:50] jetienne: pascalopitz: many transport are available [14:50] c4milo has joined the channel [14:50] pascalopitz: nice [14:50] lolninja has left the channel [14:51] AnimaSana: is pusher something far different than socket.io? is it socket.io provided as a service? [14:51] jetienne: 'websocket', 'flashsocket', 'htmlfile', 'xhr-multipart', 'xhr-polling' <- dunno which one is called "comet" [14:51] SubStack: I don't care how stuff works underneath, I just want to be able to achieve certain ends [14:51] jetienne: AnimaSana: they handle the service for you [14:51] zachsmith has joined the channel [14:51] pascalopitz: davidc_: I thought websockets was a standard? [14:51] jetienne: pascalopitz: it is [14:51] stalled has joined the channel [14:51] jetienne: http://dev.w3.org/html5/websockets/ [14:51] pascalopitz: davidc_ is confusing me [14:52] pascalopitz: ACTION is confused by davidc_ [14:52] davidc_: jetienne: it's an unfinished standards afaik. [14:52] davidc_: Widely used agreed. [14:52] AnimaSana: jetienne: so you pay pusher, to have websockets as a scalable service [14:52] jetienne: AnimaSana: i dont. but yep this is the principle [14:53] jetienne: AnimaSana: i dont because i run a free alternative to pusher :) http://easywebsocket.org [14:53] marcello3d has joined the channel [14:53] AphelionZ has joined the channel [14:54] AnimaSana: jetienne: so we can use your service? :) [14:54] Gruni has joined the channel [14:54] davidc_: pascalopitz: jetienne: Both the API and the protocol aren't standardized yet. The W3C is still working on standardizing the API while the IETF is still standardizing the protocol. [14:54] jetienne: AnimaSana: you can use it. or clone it and run the server yourself. [14:55] miketaylr has joined the channel [14:55] AnimaSana: jetienne: in the second case, what benefits do I have over socket.io? [14:55] atiti: hmm [14:55] atiti: jetienne, how come www.easywebsocket.org points to a different site than easywebsocket.org ? [14:56] davidc_: Should you need more information: WebSockets protocol draft—last updated 25th Feb—http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-06, and http://dev.w3.org/html5/websockets/ is the W3C API draft edited last on 28th Feb. [14:56] jetienne: AnimaSana: easywebsocket got 2 versions. google appengine or node. the node version is basically a wrapper on top of socket.io [14:56] AnimaSana: interesting... [14:56] jetienne: AnimaSana: with websocket api. so you get not to write/maintain the code [14:56] jetienne: atiti: because im a bad admin :) [14:57] fmarceau has joined the channel [14:57] jetienne: AnimaSana: and not to run the server, if you use the service instead of running it on your own server [14:57] AnimaSana: jetienne: I abandoned GAE a few months ago, BigTable was making me sad :P [14:57] jetienne: AnimaSana: the perf on top of GAE are real slow compared to actual websocket [14:57] matschaffer has joined the channel [14:58] bergie has joined the channel [14:58] jetienne: AnimaSana: like gae ~= 10 slower than node [14:58] marcello3d has joined the channel [14:58] pascalopitz: davidc_: I think there's little point in waiting for the Wc3 to formalize the standard officially when it's already incorpotrated in webkit and will be in mozilla [14:58] jetienne: AnimaSana: gae did a choise of using wellknown tech, aka a http get every 100ms or so [14:58] seivan has joined the channel [14:58] davidc_: pascalopitz: It's so ready taht Firefox pulled out last November because of some security issues discovered in the protocol. [14:59] jetienne: http://easywebsocket.org/contrib/monitor/ for current perf [14:59] AnimaSana: jetienne: I think using node and hosting on Joyent no.de is the best way to go, or one of the best ways to go [14:59] MrTopf has joined the channel [15:00] jetienne: davidc_: api is ready, security issue is being worked out. [15:00] jetienne: AnimaSana: i got my no.de coupon 2days ago. currently hosted on my own server. i will provide easy way to push on no.de and nodester [15:00] davidc_: jetienne: I'm not disputing the fact that websockets is ready to use but one can't say that the API or the protocol is already a standard. [15:01] davidc_: I use websockets and I love them. [15:01] davidc_: LOVE [15:01] jetienne: davidc_: most html5 isnt tho :) [15:01] davidc_: Exactly :) [15:01] jetienne: AnimaSana: i expect to port to no.de this weekend [15:01] pascalopitz: but at the same time w3c have a history of being late when it comes to formalizing a standard [15:01] jetienne: pascalopitz: yep no worry about the api. it will not change [15:01] stagas_ has joined the channel [15:02] pascalopitz: oh, i'll just use socket.IO and don't worry about the abstraction [15:02] pascalopitz: :p [15:02] jetienne: pascalopitz: and the security issue is onpaper only. nobody spotted it on the field [15:02] Muon: pascalopitz++ [15:02] Muon: hm [15:02] davidc_: pascalopitz: That's what I do :) Use socket.io and hope for the best for the future. [15:02] AnimaSana: jetienne: I will keep an eye on your work, looks interesting :) [15:02] Muon: where's v8bot? [15:03] jetienne: AnimaSana: thanks [15:03] eventi: jetienne: when you say port to no.de - what do you mean? What's required? [15:03] eventi: ACTION is still waiting for my coupon [15:03] jetienne: eventi: websocket may be trouble. in theory, nothing special is needed. except playing with the url [15:04] pascalopitz: ACTION is pissed off that node doesn't compile on my CentOS 4.8 cpanel server [15:04] Muon: how so? [15:04] jetienne: eventi: e.g. on nodester, you need to address your app directly (and not the http proxy) so you need the tcp port from your account [15:04] marcello3d: looking for feedback on this mongodb module/package I'm writing: https://github.com/marcello3d/node-mongolian [15:04] jetienne: eventi: it is likely easy to port. it has to be done tho [15:05] kal-EL_ has joined the channel [15:05] jetienne: marcello3d: fyi "mongolian" == dumb in french [15:05] mhausenblas has joined the channel [15:05] eventi: jetienne: thanks [15:05] Astro has joined the channel [15:05] pascalopitz: Muon: how so @ why it doesn't compile? [15:06] jmar777: are there any open source "robust" connect implementations available? basically anything more complex than the provided examples? [15:07] ajashton has joined the channel [15:08] mhausenblas_ has joined the channel [15:10] Muon: pascalopitz: yes [15:10] pascalopitz: Oh, I filed a bug report ages ago, but it seems to have vanished ... [15:11] pascalopitz: it basically breaks if I do make [15:11] pascalopitz: lemme redo it [15:11] Muon: are you sure you're running python 2? [15:11] pascalopitz: [pascal@vps ~]$ python -V [15:11] pascalopitz: Python 2.4.3 [15:12] zachsmith: marcello3d: on the mongolian_trainer what's happening with the finds? where are the results? [15:12] Muon: what's the error? pastebin it [15:12] sivy has joined the channel [15:12] pascalopitz: ah, I might have a gist from when it happened [15:12] pascalopitz: it's not an acute problem, it was a while ago and I dismissed the idea [15:12] pascalopitz: basically [15:12] pascalopitz: but hang on [15:13] lakin has joined the channel [15:13] pascalopitz: https://gist.github.com/618149 [15:15] Muon: ah, compile error [15:15] pascalopitz: let me try with latest version of node and see whether it still exits [15:15] marcello3d: zachsmith: right now they're just being console.logged [15:15] zachsmith: Oh, I see [15:15] zachsmith: cool [15:15] EyePulp has joined the channel [15:16] Muon: sorry, not acquainted with the demonic source of all evil^W^W^W^W^W^WNode's source [15:16] marcello3d: let me gist the output [15:16] marcello3d: https://gist.github.com/852909 [15:16] EyePulp: yo ho ho [15:17] matyr has joined the channel [15:17] Muon: and a bottle of rum! [15:17] pascalopitz: Muon: compiling .... [15:17] mhausenblas has joined the channel [15:17] marcello3d: jetienne: it's ok if it's dumb, dumb as in easy ;D [15:18] jetienne: marcello3d: nah... this is more dumb as in morron ... [15:18] mhausenblas has joined the channel [15:18] jetienne: marcello3d: so dont expect big adoption in france :) [15:18] marcello3d: alright [15:19] garrytan has joined the channel [15:19] marcello3d: racists ;D [15:19] jetienne: :) [15:19] pascalopitz: Muon: yep. still doesn't compile [15:20] redmind has joined the channel [15:20] pascalopitz: https://gist.github.com/852915 [15:20] Bastinat0r has joined the channel [15:21] jlecker has joined the channel [15:21] Bastinat0r has left the channel [15:21] AnimaSana has left the channel [15:21] pascalopitz: ah, found the original issue: https://github.com/joyent/node/issues/334 [15:22] strmpnk has joined the channel [15:22] AnimaSana has joined the channel [15:22] marcello3d: jetienne: and it's "moron" in english ;) [15:24] ceej has joined the channel [15:25] pascalopitz: argh ... can one re-open an issue in github? [15:25] pascalopitz: ACTION is a moron [15:25] pascalopitz: ACTION est morron [15:26] hij1nx has joined the channel [15:26] blueadept has joined the channel [15:27] Nietecht has joined the channel [15:29] dwww has joined the channel [15:29] teemow has joined the channel [15:31] stagas: wtf france is attacking one of my sites [15:31] stagas: is there a conference or something in france? [15:31] pascalopitz: szarkozy himself? [15:32] EyePulp: Mon deiu! [15:32] pascalopitz: that's why it's called freedom fries! [15:32] jetienne: mon tailleur est riche. [15:32] EyePulp: er, mon dieu [15:33] EyePulp: =) [15:33] Aikar: llol [15:33] EyePulp: I speak no french, but I do read agatha christie & poirot [15:33] BillyBreen has joined the channel [15:33] skohorn_ has joined the channel [15:34] pascalopitz: he's from belgium [15:34] EyePulp: by gum, you're right [15:34] stagas: http://dl.dropbox.com/u/396087/2011-03-03_173434.png [15:35] Me1000 has joined the channel [15:35] EyePulp: ACTION wonders why there were french exclamations in one of the stories... another character perhaps? [15:35] briznad has joined the channel [15:35] bentruyman has joined the channel [15:36] pascalopitz: nice map ... what app is that? [15:36] jetienne: stagas: what is the referrring site ? [15:36] stagas: a broken one [15:36] stagas: http://hwknd.com [15:36] rfay has joined the channel [15:36] stagas: oh the referring is twitter [15:36] stagas: but I don't know the actual link [15:37] jetienne: stagas: maybe an url of your hit a french speaking site [15:37] halfhalo: tweetweet [15:37] Lorentz has joined the channel [15:38] jetienne: http://twitter.com/#!/HACKERS09/status/42388522103095297 <- stagas [15:39] Spion_ has joined the channel [15:39] losing has joined the channel [15:39] EyePulp: wow - nice find [15:40] aways|bnc: ACTION Good afternoon :D [15:40] matyr_ has joined the channel [15:41] ajashton has joined the channel [15:42] willwhite has joined the channel [15:42] stagas: pascalopitz: http://github.com/stagas/maptail but it's broken for new node, SleepTillSeven is updating it but it's not finished [15:42] pascalopitz: nice, will watch that [15:43] stagas: jetienne: google translate sucks, what does it say? [15:44] jetienne: stagas: amis qui travaille dans la programmation ou pas j'ai un bon site pour trouvé des info en tous genre ici http://hwknd.com/ == "friends working in programming or not, i found a good site to find info of any kind. here http://hwknd.Com' [15:45] pascalopitz: you beat me to it [15:45] stagas: jetienne: cool :) [15:45] pascalopitz: my french is rusty though [15:45] jetienne: yep :) [15:45] pascalopitz: so not so much an attack as more of a normal usage? [15:46] stagas: well normal usage was 2-3 people a day :P [15:46] stagas: it's strange to see just one country lighten up [15:46] pascalopitz: I hope it scales beyond that [15:46] pascalopitz: :p [15:47] stagas: it caches the views in memory, should be a few K/s [15:47] mraleph has joined the channel [15:49] figital has joined the channel [15:50] ncb000gt has joined the channel [15:51] Yuffster has joined the channel [15:52] marcello3d: maptail looks hot! [15:52] marcello3d: does it support multiple servers? [15:52] marcello3d: or remote servers [15:53] stagas: it tails a log file and searches for ip addresses [15:53] stagas: I use nohup.out [15:53] bingomanateeIpho has joined the channel [15:54] marcello3d: what's that? [15:54] stagas: but you can give it any kind of log file [15:54] pascalopitz: could it work for apache even? [15:54] stagas: yes [15:54] pascalopitz: nice! [15:54] Venom_X has joined the channel [15:54] mike5w3c has joined the channel [15:54] ncb000gt: marcello3d: that is pretty awesome, I hadn't seen it before. Thanks! [15:54] pascalopitz: if I only could compile node on that box, this would be very handy [15:55] stagas: nohup lets you run a command that doesn't die when you log out [15:55] stagas: and also sends all output to a file, nohup.out [15:55] msch has joined the channel [15:55] ncb000gt: pascalopitz: why can't you? [15:56] pascalopitz: https://github.com/joyent/node/issues/334 [15:56] pascalopitz: doesn't compile on my VPS [15:56] pascalopitz: shitty VPS [15:56] nu- has joined the channel [15:57] dguttman has joined the channel [15:58] bingomanateeIpho has joined the channel [15:59] marcello3d: ncb000gt: don't thank me, stagas just linked it :) [15:59] marcello3d: (and wrote it?) [16:00] stagas: I only did the tail -f part of it, mape did the whole ui for wargamez http://github.com/mape/node-wargames [16:00] jetienne: 0.4.2 is out for real ? https://github.com/joyent/node how come there is no v0.4.2 tag in joyen/node repo ? [16:01] mape: jetienne: seems they hid it in the v4.0 branch [16:01] ph^ has joined the channel [16:02] warz has joined the channel [16:02] tmpvar has joined the channel [16:02] marcello3d: stagas: you know what'd be awesome? [16:02] marcello3d: a map of all the pages on your site [16:03] marcello3d: and those little line loopy things to show navigation from one page to another [16:03] jetienne: mape: in v0.4.0 you mean ? https://github.com/joyent/node/commit/eb155ea6f6a6aa341aa8c731dca8da545c6a4008 this is the last commit i got on v0.4.0 [16:03] sleeplessinc_ has joined the channel [16:03] mape: jetienne: https://github.com/joyent/node/tree/v0.4 [16:04] jetienne: mape: sorry im blind [16:04] Me1000 has joined the channel [16:04] marcello3d: I out. [16:05] aphelion has joined the channel [16:05] aphelion has joined the channel [16:06] ryan_gahl has joined the channel [16:06] MikhX has joined the channel [16:09] softdrink has joined the channel [16:10] stalled has joined the channel [16:12] sveimac has joined the channel [16:12] briznad has joined the channel [16:14] tfe_ has joined the channel [16:14] tfe_ has joined the channel [16:14] dthompson has joined the channel [16:14] jetienne: node0.4.2 .deb will be ready shortly, compiling on servers [16:15] Sebmaster has joined the channel [16:15] muk_mb has joined the channel [16:16] mr_daniel has left the channel [16:16] tracker1 has joined the channel [16:16] muk_mb has joined the channel [16:17] daniellindsley has joined the channel [16:20] ncb0000gt has joined the channel [16:20] muk_mb has joined the channel [16:21] isaacs has joined the channel [16:21] tbassetto has joined the channel [16:21] kristsk has joined the channel [16:22] darkredandyellow has joined the channel [16:22] aconbere has joined the channel [16:22] matschaffer has joined the channel [16:26] erabuj has joined the channel [16:26] eb4890 has joined the channel [16:27] jmar777: ryah: do you think you could commit a v04.2 tag? it would give us warm fuzzies about compiling the right version [16:28] colinsullivan has joined the channel [16:29] atiti has joined the channel [16:30] colinsullivan has joined the channel [16:31] christophsturm has joined the channel [16:34] zemanel has joined the channel [16:35] daveluke has joined the channel [16:35] sprout has joined the channel [16:35] fangel has joined the channel [16:36] keyvan- has joined the channel [16:38] zombified has joined the channel [16:38] AphelionZ has joined the channel [16:38] tjholowaychuk has joined the channel [16:40] bingomanateeIpho has joined the channel [16:41] MikhX has joined the channel [16:41] bingomanateeIpho: ACTION <3 node wargames [16:45] strmpnk has joined the channel [16:46] AphelionZ has left the channel [16:47] davidwalsh has joined the channel [16:47] [ADTurbo] has joined the channel [16:48] skm_ has joined the channel [16:49] pascalopitz has joined the channel [16:49] sugardave has joined the channel [16:49] willwhite has joined the channel [16:49] dguttman has joined the channel [16:49] eresair has joined the channel [16:49] jetienne: sudo add-apt-repository ppa:jerome-etienne/neoip && sudo apt-get update && sudo apt-get install nodejs <- to install node.js 0.4.2 on ubuntu [16:50] JimBastard has joined the channel [16:50] Utkarsh_ has joined the channel [16:51] EyePulp: anyone seen very recent problems with the master of socket.io - I get a cookie specifying xhr-polling, but the client is nearly doubling it's connections and using both xhr-multipart & xhr-polling. it's odd. [16:52] Utkarsh has joined the channel [16:53] lakin has joined the channel [16:55] bradleymeck has joined the channel [16:55] mscdex_ has joined the channel [16:56] Croms has joined the channel [16:56] stephank has joined the channel [16:57] gmci_ has joined the channel [16:57] viirya has joined the channel [16:57] dispalt has joined the channel [16:57] dylang has joined the channel [16:58] TheCowboy has joined the channel [16:58] jeromegn has joined the channel [16:58] jwm has joined the channel [17:00] webben has joined the channel [17:01] raz_ has joined the channel [17:01] stagas_ has joined the channel [17:01] raz has joined the channel [17:01] eee_c has joined the channel [17:01] meder has joined the channel [17:01] rbranson has joined the channel [17:02] samcday has joined the channel [17:02] mattikus has joined the channel [17:02] MikhX has joined the channel [17:03] addisonj has joined the channel [17:07] real_ate__ has joined the channel [17:07] malkomalko has joined the channel [17:07] pastak_ has joined the channel [17:07] piscisaureus_ has joined the channel [17:07] kawaz_h has joined the channel [17:07] Poetro1 has joined the channel [17:07] throughnothing_ has joined the channel [17:07] meder: how can i grab BLAH from "node foo.js BLAH" ? [17:07] gmci_ has joined the channel [17:07] ncb000gt: meder: process.argv [17:07] amerine has joined the channel [17:07] KRBssa has joined the channel [17:08] qFox has joined the channel [17:09] vnaren has joined the channel [17:10] mikeal has joined the channel [17:10] Su-Shee has joined the channel [17:10] Su-Shee: hi. [17:10] matyr has joined the channel [17:10] jpstrikesback1 has joined the channel [17:12] meder: ncb000gt: thx [17:14] thecarlhall has joined the channel [17:14] ncb000gt: meder: np [17:14] ncb000gt: Su-Shee: hey [17:16] kevinliu has joined the channel [17:16] mAritz: how could i do something like a countdown via console.log() that doesn't put newlines and just updates the same line? [17:16] eventi has joined the channel [17:17] stagas: mAritz: util.print() [17:17] ackernaut has joined the channel [17:17] mAritz: stagas: thanks :) [17:17] brianc: mAritz: process.stdout.write( [17:18] stagas: mAritz: you need to enter some weird escape codes to go back to the start of the line [17:18] mAritz: \r :) [17:18] mAritz: i knew that much from the last time i had to do it in php :D [17:18] stagas: :P [17:19] MrNibbles: original gentlemen [17:20] liquidproof has joined the channel [17:20] aconbere has joined the channel [17:20] Apes has joined the channel [17:20] zpao has joined the channel [17:21] quirkey has joined the channel [17:22] robotarmy has joined the channel [17:24] alex_b has joined the channel [17:24] brianmcd` has joined the channel [17:24] gukov has joined the channel [17:24] kollektiv has joined the channel [17:24] kollektiv has joined the channel [17:29] sth_ has joined the channel [17:29] yenz_ has joined the channel [17:29] chewbran1a has joined the channel [17:29] zilt_ has joined the channel [17:29] chrisdico has joined the channel [17:29] Blackguard1 has joined the channel [17:29] gwoo` has joined the channel [17:29] jstritar__ has joined the channel [17:29] kloeri_ has joined the channel [17:29] ryan[WIN] has joined the channel [17:29] astralab_ has joined the channel [17:29] ackernaut has left the channel [17:29] jetienne: Math.random() is impossible to seed. correct ? [17:29] stagas: yup [17:29] jetienne: ok [17:30] ikaros_daedalos has joined the channel [17:32] ikarosdaedalos has joined the channel [17:33] gwoo has joined the channel [17:34] temp01 has joined the channel [17:35] sprout has joined the channel [17:37] real_ate__ has joined the channel [17:37] Apes has joined the channel [17:37] steffkes has joined the channel [17:38] blueadept has joined the channel [17:38] bmcd has joined the channel [17:38] eb4890 has joined the channel [17:38] jimmmyz2_ has joined the channel [17:39] DoNaLd`_ has joined the channel [17:39] sprout has joined the channel [17:40] aabt has joined the channel [17:40] unfo-ninja has joined the channel [17:40] jpstrikesback has joined the channel [17:40] TheCowboy has joined the channel [17:42] dylang: Any reason why 0.4.2 wasn't tagged in git? [17:42] yozgrahame has joined the channel [17:44] morganallen has joined the channel [17:44] Poetro has joined the channel [17:46] warz has joined the channel [17:46] teemow has joined the channel [17:46] temp02 has joined the channel [17:46] temp02 has joined the channel [17:47] Poetro has joined the channel [17:48] binarypie has joined the channel [17:49] jbpros has joined the channel [17:49] tfcoding has joined the channel [17:49] eee_c has joined the channel [17:50] Horofox has joined the channel [17:51] dylang_ has joined the channel [17:51] perezd has joined the channel [17:51] liquidproof has joined the channel [17:51] KRBssa has joined the channel [17:51] lakin has joined the channel [17:51] eresair has joined the channel [17:51] zombified has joined the channel [17:51] muk_mb has joined the channel [17:51] ncb000gt has joined the channel [17:51] dthompson has joined the channel [17:51] Venom_X has joined the channel [17:51] Nietecht has joined the channel [17:51] c4milo has joined the channel [17:51] cnu has joined the channel [17:51] razvandimescu has joined the channel [17:51] zum has joined the channel [17:51] wao has joined the channel [17:51] PyroPeter has joined the channel [17:51] mmso has joined the channel [17:52] jpstrikesback1 has joined the channel [17:52] kollektiv` has joined the channel [17:54] matyr_ has joined the channel [17:54] rfay has joined the channel [17:56] fmarceau_ has joined the channel [17:58] Nietecht has joined the channel [17:58] sechrist has joined the channel [17:59] DTrejo has joined the channel [17:59] muk_mb has joined the channel [17:59] ncb000gt has joined the channel [18:00] zombified has joined the channel [18:00] mhausenblas has joined the channel [18:00] dthompson has joined the channel [18:00] Venom_X has joined the channel [18:00] jeromegn has joined the channel [18:00] razvandimescu has joined the channel [18:00] KRBssa has joined the channel [18:00] lakin has joined the channel [18:00] erabuj has joined the channel [18:01] redmind has joined the channel [18:01] pifantastic_ has joined the channel [18:01] eb4890: When using express do I need to use node 0.39? Or can I get away with using later versions if I am not doing anything complex (https and the like) [18:02] FireFly has joined the channel [18:02] ryanfitz has joined the channel [18:02] rwaldron_ has joined the channel [18:02] tjholowaychuk: eb4890: the 2.0 beta will be out today [18:02] tjholowaychuk: that will work with 0.4.x [18:02] markc has left the channel [18:03] jimmyz2 has joined the channel [18:03] warz_ has joined the channel [18:03] kristsk has joined the channel [18:03] ikarosdaedalos has joined the channel [18:04] steffkes^ has joined the channel [18:04] aho has joined the channel [18:04] paulrollo has joined the channel [18:05] davidsklar1 has joined the channel [18:05] anno^da has joined the channel [18:05] gozala has joined the channel [18:06] dyer has joined the channel [18:06] Venom_X_ has joined the channel [18:07] christophsturm has joined the channel [18:07] real_ate has joined the channel [18:07] jacobolus has joined the channel [18:07] matschaffer has joined the channel [18:07] ajpiano has joined the channel [18:07] anno^da_ has joined the channel [18:08] Stan____ has joined the channel [18:08] matclayton has joined the channel [18:08] markwubben has joined the channel [18:08] binarypie has joined the channel [18:08] matclayton has left the channel [18:08] figital has joined the channel [18:08] thecarlhall has joined the channel [18:08] anno^da_: hello [18:08] ntelford has joined the channel [18:08] sstephenson has joined the channel [18:08] temp01 has joined the channel [18:09] jlecker has joined the channel [18:09] ncb000gt: anno^da: hey [18:10] anno^da_: can someone tell me why the following test "express" application is rendering the layout.html when trying to open /scrape (I would expect the scrape.html getting rendered from the view folder) - https://gist.github.com/44f9f4a642969042b017 [18:10] eb4890 has joined the channel [18:11] ncb000gt: anno^da: are you sure that you're in the /scape callback? [18:11] stagas: anno^da: it always looks for a layout view, you need to to res.render('scrape', { layout: false }) [18:11] tjholowaychuk: anno^da_: by default there is always a layout, use app.set('view options', { layout: false }) if you never/rarely want one [18:11] abraham has joined the channel [18:12] stagas: tjholowaychuk: hm can you pass locals in there too? [18:12] tjholowaychuk: stagas: in 2.x yup [18:12] drudge: what's the 0.4.2 changelog? [18:13] piscisaureus: ola [18:13] drudge: the one linked from the website is 0.4.1 [18:13] ncb000gt: Isn't Rocket Page partially built on node? [18:13] stagas: tjholowaychuk: I think I saw a res.locals looking through the code was that there before? [18:14] piscisaureus: ryah: you are here today? [18:14] themiddleman_ has joined the channel [18:14] tjholowaychuk: stagas: res.local(k,v), nope that is new too [18:14] FireFly|n900 has joined the channel [18:15] liar has joined the channel [18:15] GriffenJBS has joined the channel [18:15] GriffenJBS: is there a const in node like INADDR_ANY? [18:15] ncb000gt: actually yea it is [18:15] ncb000gt: in which case [18:15] ncb000gt: http://www.gamasutra.com/view/news/33344/Disney_Acquires_HTML5_Game_Engine_Startup_Rocket_Pack.php [18:15] ph^ has joined the channel [18:15] daveluke has joined the channel [18:15] __tosh has joined the channel [18:15] dylang has joined the channel [18:15] colinclark has joined the channel [18:15] gf3 has joined the channel [18:16] shachaf has joined the channel [18:16] zcopley has joined the channel [18:16] christophsturm has joined the channel [18:16] Utkarsh_ has joined the channel [18:16] fmarceau- has joined the channel [18:16] brianmcd` has joined the channel [18:17] FireFly|n900 has joined the channel [18:17] paulrobinson has joined the channel [18:17] broofa has joined the channel [18:17] wao has joined the channel [18:17] c4milo has joined the channel [18:17] zum has joined the channel [18:17] malkomalko has joined the channel [18:17] anno^da_: stagas tjholowaychuk : thank you very much [18:17] cnu has joined the channel [18:18] stagas: tjholowaychuk: another one: if I do res.local('session', req.session) will it update the reference for different users? [18:18] reid has joined the channel [18:18] dylang: doh... github master is v0.5.0-pre. is github tag v0.4.1 === release v0.4.2? [18:18] GriffenJBS has left the channel [18:18] tjholowaychuk: stagas: all of those locals are relative to the response so yeah they will be unique [18:18] paulrobinson has left the channel [18:18] anno^da_: So the default "layout" would be seen as the frame [18:18] rwaldron_ has left the channel [18:19] gormer has joined the channel [18:19] tjholowaychuk: anno^da_: yeah, a 'layout' in express is wrapper code for 'page' views [18:19] tmpvar has joined the channel [18:22] tjholowaychuk: even though they are all rendered with the same logic [18:22] mikegerwitz: dylang: I don't believe the tag has been pushed yet. Been waiting for it myself. [18:22] anno^da_: ok I think I got it. Thank you very much tjholowaychuk . [18:22] sh1mmer has joined the channel [18:22] PyroPeter has joined the channel [18:22] zombified has left the channel [18:22] dylang: mikegerwitz: ah, okay, my lack of knowing the tag process. i assumed the tag would happen before the web site update and changelog/annoucement are pushed. [18:22] Benn has joined the channel [18:22] piscisaureus: GriffenJBS: just use "0.0.0.0" or undefined [18:22] harth has joined the channel [18:22] Poetro1 has joined the channel [18:22] mikegerwitz: dylang: I would expect that to be the case too :) Perhaps ryah did tag, but forgot to do a $ git push --tags [18:22] zylo has joined the channel [18:22] adelcamb1e has joined the channel [18:22] aabt has joined the channel [18:23] doffm has joined the channel [18:23] jdub has joined the channel [18:23] larsemil has joined the channel [18:23] viirya has joined the channel [18:23] jbergstroem has joined the channel [18:23] tg` has joined the channel [18:23] zaiste has joined the channel [18:23] ekes has joined the channel [18:23] barodeur has joined the channel [18:24] Yuffster_work has joined the channel [18:24] hassox has joined the channel [18:24] msucan has joined the channel [18:25] RichardJ has joined the channel [18:25] doki_pen has joined the channel [18:25] markwubb_ has joined the channel [18:25] Kryckan has joined the channel [18:25] davidascher has joined the channel [18:26] sstephenson_ has joined the channel [18:26] MikhX has joined the channel [18:26] real_ate_ has joined the channel [18:26] binarypie2 has joined the channel [18:26] dylang_ has joined the channel [18:27] vnguyen has joined the channel [18:27] binarypie2 has left the channel [18:27] binarypie has joined the channel [18:27] xandrews_ has joined the channel [18:27] mrkurt_ has joined the channel [18:28] tmpvar_ has joined the channel