[00:00] secoif: I think that's the goal of things like coffeescript [00:00] secoif: to simpl [00:00] secoif: ify [00:00] mikeal: secoif: you could, but then you'd have to fucking compile [00:00] rauchg: secoif and then have inaccurate stack traces ? [00:00] secoif: yeah that's an issue [00:00] tjholowaychuk: secoif no [00:00] tjholowaychuk: CS is anything but simplify [00:00] tjholowaychuk: CS is clusterfuck central [00:00] tjholowaychuk: I would have called it clusterfuck [00:00] Bwen: I had a coffe crisp once [00:01] hij1nx: tjholowaychuk: agreed. i've actually heard some people even say that it looks more like a series of cryptic macros and symbols. [00:01] mikeal: there is a DSL called Brainfuck [00:01] mikeal: at least it's honest [00:01] tjholowaychuk: hij1nx it looks more like english [00:01] tjholowaychuk: and english sucks [00:01] mikeal: english is a terrible programming language [00:01] tjholowaychuk: i want to look at a series of context-free, explicit and obvious tokens [00:02] tjholowaychuk: yup [00:02] Draggor: sechrist: http://github.com/eisd/v8bot [00:02] jesusabdullah: clusterfuck would be an awesome programming project name [00:02] dguttman_ has joined the channel [00:02] tjholowaychuk: jesusabdullah: I can see it in the enterprise [00:02] tjholowaychuk: haha [00:03] jesusabdullah: Also, for those of you interested in the "english-esque" language failings, look no further than Inform 7 [00:03] ryah has joined the channel [00:03] hij1nx: im actually biased coming from a c/cpp background, i've acclimated to/even like the c-family syntax [00:03] SubStack: "We're using clusterfuck to manage all our customer records." [00:03] Draggor: sechrist: https://github.com/eboyjr/vbotjr <- newer version [00:03] SubStack: "When people hear 'clusterfuck' they think 'reliability'" [00:04] hij1nx: SubStack: hear hear [00:04] demastrie has joined the channel [00:04] Bwen has left the channel [00:05] beriberikix_: tjholowaychuk: what do you think of traceur? [00:05] dgathright: I failed English, twice. So, yeah, I vote it sucks as a programming language too. [00:05] demastrie has left the channel [00:05] jesusabdullah: SubStack: lolol [00:05] catshirt has joined the channel [00:06] jesusabdullah: Built Clusterfuck Tough [00:06] jesusabdullah: I'll have to keep an eye on that v8bot [00:06] jesusabdullah: Also, I need to play with ircrpc some more [00:06] jesusabdullah: I want to redo the api [00:07] jesusabdullah: Speaking of things I need to do [00:07] jesusabdullah: I'd better stop this whole IRC thing and do some real work [00:07] jesusabdullah: adios! [00:07] perezd: ryah: yt? [00:07] ryah: yes [00:07] ryah: but just for a sec [00:07] ryah: what'sup? [00:07] perezd: quickly, why is Http request maxSocket = 5 ? [00:08] perezd: and can I fix it? [00:08] perezd: erm [00:08] perezd: increase it [00:08] justinTNT: ACTION appreciates express [00:09] vikstrous has joined the channel [00:09] mjr_: ryah: mailed you an exception caught with console.trace, but it seems useless to me. I guess we should just work around this issue for now then? [00:10] jesusabdullah: Aack! If it's not irc it's twitter slurping my attentions! [00:10] ryah: perezd: you can increase it [00:10] perezd: what happens if I do that [00:11] ryah: more connections will be opened [00:11] ryah: mjr_: yeah, i guess [00:11] ryah: mjr_: im out of ideas - we need more info [00:11] perezd: ryah: cool, why is it so low by default? is it dangerous to increase? [00:11] ryah: mjr_: tj's assert was somewhat interesting [00:11] ryah: mjr_: probably not related though [00:12] mjr_: ryah: what kind of info do you need? I can hack up my version of node further to add more logging. [00:12] mjr_: I'm just not sure what else to log. [00:12] ryah: perezd: *shrug* 5 sounded like a good number [00:12] mcantelon has left the channel [00:12] perezd: ryah: okay cool, just checking [00:12] ryah: mjr_: gtg [00:13] mertonium has joined the channel [00:14] secoif_ has joined the channel [00:14] mjr_: perezd: I crank that number way the fuck up [00:14] perezd: how high? [00:14] mjr_: Oh, like 4,000 [00:14] mjr_: Why not [00:14] colinclark has joined the channel [00:14] ezl has joined the channel [00:15] mjr_: For my application, it made things a lot faster, and moved the bottleneck somewhere else. [00:15] [[zz]] has joined the channel [00:15] mjr_: Of course, the agent code is still not as fast as I'm expecting it to be. [00:15] mjr_: And deep queues of work make it particularly sad. [00:18] hlindset has joined the channel [00:18] hlindset has joined the channel [00:19] sechrist: jesusabdullah: clusterfuck is what I call my version of the Chaos Monkey [00:20] Zil has joined the channel [00:20] Yuffster_work has joined the channel [00:20] Zil: Hi, what is the equivalent of sys.puts in the new version? [00:20] bronson has joined the channel [00:21] ryah has joined the channel [00:21] mischief has joined the channel [00:22] mischief has joined the channel [00:22] ryah has left the channel [00:23] _Ecce_: Zil: console.log [00:23] rchavik has joined the channel [00:23] hij1nx: Zil: http://nodejs.org/docs/v0.4.7/api/ [00:23] eyesUnclouded has joined the channel [00:24] chalaschek has joined the channel [00:24] pyrotechnick has joined the channel [00:24] Zil: Thanks Ecce [00:24] pyrotechnick: does creationix come by here anymore? [00:25] kersny has joined the channel [00:25] TooTallNate: pyrotechnick: not often... [00:25] pyrotechnick: im just wondering about some of http://creationix.com/jack/public/index.html [00:26] pyrotechnick: like why does the square have a regular expression in it [00:26] willwhite has joined the channel [00:26] pyrotechnick: and why does curry not curry [00:26] azeroth__ has joined the channel [00:27] sherod has joined the channel [00:27] jdalton has joined the channel [00:28] Silly_Wabbit has joined the channel [00:28] sonnym has joined the channel [00:28] justinTNT: oh, high hij1nx. thanks for weld. I've taken it as a starting point, and extended to fuse data on to 'selector.property' and 'selector..attribute' . same code runs in server and browser: smooth. [00:30] zitchie has joined the channel [00:31] mikeal has joined the channel [00:32] secoif: got a c++ friend who wants an open source project to work on (???), is there anything I can tell him to start looking at RE shit that needs doing for node? [00:32] secoif: comes from networking background [00:37] mertonium has joined the channel [00:37] gtramont1na has joined the channel [00:38] mraleph has joined the channel [00:39] mjr_: secoif: I know ryah is looking for c++ coders to write tests for his new networking library [00:39] mjr_: The lib that bridges Windows and Unix networking. [00:39] mjr_: whatever it's called these days. [00:41] secoif: mjr_: thanks [00:41] secoif: good start [00:41] chjj: yeah, tell him to check out libuv [00:42] chjj: although, libuv is c [00:42] ryanfitz has joined the channel [00:44] baudehlo has joined the channel [00:45] secoif: rad [00:48] azeroth__ has joined the channel [00:49] samsonjs has joined the channel [00:50] SubStack: secoif: I don't understand why people want to "work on open source" apparently for its own sake [00:51] secoif: I agree [00:51] secoif: He comes from working on MS stacks [00:51] secoif: so open source is a novelty [00:52] SubStack: maybe tell him to find something that doesn't exist but should [00:52] SubStack: or exists but sucks [00:52] secoif: He is asking for me to tell him exactly that [00:53] secoif: "Somewhere that there's a gap, or the tools that exist are not sufficient (or crap... functionally or usability wise)" [00:53] SubStack: doesn't sound very motivating [00:53] secoif: no. [00:53] secoif: good programmer, but sheltered [00:54] SubStack: plus I don't see how somebody can make meaningful contributions without understanding the problem in the first place [00:54] ChrisPartridge: I was a lot the same.. never had much exposure to the "open" world.. [00:54] secoif: that's what i'm thinking [00:54] secoif: It'd be like me designing a tampon [00:54] SubStack: build stuff I saw [00:54] SubStack: *say [00:54] SubStack: doesn't even matter what it is [00:54] SubStack: just build enough stuff and you get crazy ideas for building more stuff [00:54] neoesque has joined the channel [00:55] secoif: ChrisPartridge: and what happened? [00:55] gmanika has joined the channel [00:57] montylounge has joined the channel [00:57] dguttman has joined the channel [00:58] sub_pop has joined the channel [00:59] Lorentz has joined the channel [01:00] ChrisPartridge: secoif: I found node :-) [01:02] avalanche123 has joined the channel [01:02] ChrisPartridge: (and a good employer) [01:02] piscisaureus: secoif: if he's from MS, tell him to work on coapp [01:02] sechrist: is there a trim function in the stdlib yet? [01:02] sechrist: I feel like I seriously re-implement this at least once a week [01:04] jesusabdullah: I thought there was a trim method for strings [01:04] jesusabdullah: I swear I've use it a jillion times [01:05] abraxas has joined the channel [01:06] Venom_X has joined the channel [01:07] justinTNT: secoif : sounds like testing. maybe stress testing? [01:13] invi has joined the channel [01:13] truedat101 has joined the channel [01:13] secoif: I think he wants to make a name for himself as a programmer [01:14] secoif: I think he will think along the lines of "name a famous tester" [01:14] secoif: ah well [01:14] bentruyman has joined the channel [01:14] secoif: i've put him onto node, hopefully he will see some opportunity [01:14] secoif: more likely he'll go off and reinvent some wheel [01:14] secoif: that helps noone [01:15] ChrisPartridge: secoif: Hype him up, get him excited.. [01:15] febits has joined the channel [01:16] truedat101 has joined the channel [01:16] invi: hi, is it possible to set the headers in a https request? [01:16] ChrisPartridge: show him some cool node stuff, throwing him into some internal c++ stuff straight up probably isn't the best approach [01:16] justinTNT: make sth useful while getting a grip on the environment, then go get famous [01:17] fmeyer has joined the channel [01:18] invi: ... seems it is not possible, or I don't know the way ;S [01:20] Emmanuel__ has joined the channel [01:20] ChrisPartridge: invi: using express? connect? or just https module? [01:20] secoif: invi I think it's the same as setting normal http headers isn't it? [01:20] invi: just https module [01:20] secoif: (in express anyway) [01:21] secoif: I have no idea about that [01:21] secoif: ACTION chimes out [01:21] ChrisPartridge: invi: writeHead(code) on the response? [01:21] dguttman has joined the channel [01:21] upNic has joined the channel [01:22] ChrisPartridge: invi: See here http://nodejs.org/docs/v0.4.7/api/http.html#response.writeHead [01:23] softdrink has joined the channel [01:23] invi: ChrisPartridge: mm.. I mean in a client request [01:24] invi: like http.ClientRequest [01:24] azeroth___ has joined the channel [01:26] arpegius has joined the channel [01:27] ChrisPartridge: invi: The client must send the headers then [01:27] davidascher has joined the channel [01:28] ryan0x2 has joined the channel [01:28] invi: ChrisPartridge: yes, but I can't find a way to set the headers [01:29] invi: ChrisPartridge: over https, with http is possible [01:30] ChrisPartridge: oh sorry invi, I read wrong... your using the https client [01:30] PhilK has joined the channel [01:30] invi: ChrisPartridge: thanks for your attention ;) [01:30] Marak has joined the channel [01:31] ChrisPartridge: invi: As per the docs on ClientRequest - " The header is still mutable using the setHeader(name, value), getHeader(name), removeHeader(name) API." [01:31] ChrisPartridge: This is for http.ClientRequest - assuming it would apply for https [01:33] invi: ChrisPartridge: seems there is not such a method with https [01:36] jhurliman: i need to get one of my developers up to speed on node.js. recommendations for an up to date node.js crash course? [01:36] azeroth__ has joined the channel [01:37] Yuffster has joined the channel [01:37] abraham has joined the channel [01:38] SubStack: jhurliman: tell them to build something amazingly ambituous, due friday [01:38] jhurliman: noted [01:38] SubStack: and then don't even look at it [01:39] ChrisPartridge: ACTION laughs [01:40] ChrisPartridge: jhurliman: do they have any experience with javascript? [01:40] ChrisPartridge: invi: I think you can pass the headers to .get method of https [01:41] ChrisPartridge: invi: Looking at the source, it uses a http.Agent internally [01:41] jhurliman: ChrisPartridge, yes they do [01:42] jhurliman: lots of basic JS and jquery experience doing frontend dev, and php backend experience [01:42] davidascher has joined the channel [01:42] skeevis has joined the channel [01:42] jhurliman: so i'm looking for a "node.js for programmers" crash course basically [01:44] aconbere has joined the channel [01:44] Zil: jhurliman:http://www.readwriteweb.com/hack/2011/04/6-free-e-books-on-nodejs.php [01:45] jhurliman: thanks Zil [01:45] meetar has joined the channel [01:45] Zil: jhurliman: I read most of them, some are better than others but if you do some effective cutting you should get around fact. [01:45] Zil: faast* [01:46] Zil: jhurliman: If you are a complete newbie then this http://net.tutsplus.com/tutorials/javascript-ajax/this-time-youll-learn-node-js/ can get you started, check out the comments if people might have added their links [01:46] Zil: Take care ;) [01:46] v8bot has joined the channel [01:47] jhurliman: this looks good: http://nodeguide.com/beginner.html [01:47] jhurliman: thanks again [01:47] invi: ChrisPartridge: yeah! works fine thanks ; ) now is common sense [01:48] Zil: jhurliman: Well nettuts is usually a good place to get a smooth intro, they offer screencasts to it's more dynamic than reading stuff [01:48] zentoooo has joined the channel [01:50] deedubs has joined the channel [01:51] colinsullivan has left the channel [01:52] justinTNT: +1 for nettuts. [01:52] mbrevoort has joined the channel [01:52] brownies has joined the channel [01:52] dhasenan has joined the channel [01:53] jtsnow has joined the channel [01:55] Viriix has joined the channel [01:57] sonnym has joined the channel [01:57] v8bot has joined the channel [01:58] aconbere has joined the channel [02:01] ChrisPartridge: invi: Excellent - glad it's working [02:02] wookiehangover has joined the channel [02:02] ChrisPartridge: jhurliman: also check out howtonode.org, some outdated articles now, but theres a fair few good reads in their [02:02] dnolen has joined the channel [02:05] jacter has joined the channel [02:06] jbpros has joined the channel [02:06] Torkn2U has joined the channel [02:06] ExsysHost has joined the channel [02:07] skyloid has joined the channel [02:07] ngs has joined the channel [02:08] hoax__ has joined the channel [02:14] nadirvardar has joined the channel [02:15] fthz has joined the channel [02:16] Jaike has joined the channel [02:16] Me1000 has joined the channel [02:16] zitchie has joined the channel [02:19] pifantastic has joined the channel [02:20] dgathright has joined the channel [02:20] dgathright has joined the channel [02:23] harth has joined the channel [02:23] a|i has joined the channel [02:23] jslatts has joined the channel [02:24] MikhX has joined the channel [02:24] k1ttty has joined the channel [02:24] F1LT3R has joined the channel [02:25] ezl has joined the channel [02:27] softdrink has joined the channel [02:28] softdrink: Anyone do much with safari mobile? [02:28] yokoaway has joined the channel [02:28] demastrie has joined the channel [02:28] softdrink: Especially with regards to layout when the orientation changes [02:29] Viriix has left the channel [02:29] demastrie has left the channel [02:31] bartt has joined the channel [02:32] Murugaratham has joined the channel [02:32] matyr has joined the channel [02:33] hij1nx has joined the channel [02:33] stepheneb has joined the channel [02:34] jslatts_ has joined the channel [02:34] dhasenan: Is there a way to change the local npm install directory? I don't really like having $HOME/node_modules sitting there and would prefer a hidden directory. [02:35] ChrisPartridge: dhasenan: npm help set [02:36] dhasenan: ChrisPartridge, thanks. [02:36] tonymilne has joined the channel [02:36] tonymilne: Hi all, so I'm using npm installed underscore.js - can i serve that to my client side code in a convenient manner? [02:36] tonymilne: (Using express?) [02:37] tonymilne: Maybe, kinda like what socket.io seems to do? [02:38] jslatts: tonmilne: i think you would have to serve it out of the node_modules/backbone/ directory [02:38] benmonty has joined the channel [02:38] gazumps has joined the channel [02:43] ChrisPartridge: tonymilne: check out browserify from SubStack [02:44] cce has joined the channel [02:44] cce has joined the channel [02:44] AddZero has joined the channel [02:46] Booster2ooo has joined the channel [02:46] mike5w3c has joined the channel [02:46] tonymilne: Thx, have you used it before? [02:46] kriszyp has joined the channel [02:46] ChrisPartridge: tonymilne: yup [02:46] tonymilne: Does: [02:46] tonymilne: server.use(require('browserify')({ require : [ 'traverse' ] })); [02:46] tonymilne: say what can be client side required? [02:47] tonymilne: E.g. Just traverse can be? [02:47] ChrisPartridge: tonymilne: correct [02:47] ChrisPartridge: you can then just script(src='/browserify.js') [02:47] ChrisPartridge: you can then just script(src='/browserify.js?traverse') [02:47] ChrisPartridge: var traverse = require('traverse'); [02:48] w_wilkins has joined the channel [02:48] tonymilne: i need two script tags before i can use require? [02:48] temp01 has joined the channel [02:48] ChrisPartridge: no [02:48] RIK_ has joined the channel [02:48] ChrisPartridge: two examples [02:48] tonymilne: ok, cool. [02:48] ChrisPartridge: first includes *all* packages included by browserify [02:48] ChrisPartridge: second includes just traverse [02:48] tonymilne: sweet, thanks buddy! [02:48] ChrisPartridge: so you can browserify everything your going to use, and just script() tag what you need :-) [02:49] RIK_: hi [02:49] rfay has joined the channel [02:49] ChrisPartridge: ACTION waves [02:50] Ree_: hi [02:50] Ree_: I have a question about node.js [02:52] justinTNT: well, Ree, you could keep it to yourself, or .... [02:52] ChrisPartridge: question horder [02:53] Ree_: node.js is still very abstract in my mind, the wiki is use big word such as asynchronous event driven model, it really is not easy to grasp [02:53] Ree_: what exactly is it in simple terms [02:55] jslatts: is someone writing a monster reply to that? [02:55] jhurliman: yes! [02:55] Emmanuel__: ahah [02:55] Emmanuel__: no, I'm thinking of a clever answer [02:55] Emmanuel__: but it's likely that I have no idea how to answer that [02:55] catshirt: i read a good ibm article this week [02:56] catshirt: jk [02:56] jhurliman: Ree_, you take javascript and put it on the server instead of in a browser. your node application runs with a single thread (only one line of your javascript is ever executing at once) but none of the calls block. any time you need to do work like read/write a file, fetch something from the database, fetch a webpage, etc you pass a callback function which will get called when the action completes. so in practice node code turns int [02:56] jhurliman: o lots of nested callbacks. [02:56] EM03 has left the channel [02:57] jhurliman: i think that covers the asynchronous event driven model part [02:57] ChrisPartridge: Ree_: in laymans terms... instead of.. $result = doThis(); it's doThis(function(result){}) [02:58] mikeal has joined the channel [02:58] justinTNT: ree: node.js : lean networking in javascript for the server. Asynchronous : non blocking. register callbacks instead of waiting for IO to complete. Event driven : instead of forking processes or creating threads, (eg to handle an http request) an event loop efficiently shares control with those registered callbacks. benefits? scales brilliantly. turns out javascript is a great fit to this event-loop model. [02:58] SubStack: ChrisPartridge: eh? browserify doesn't do that [02:58] justinTNT: +1 catshirt [02:59] zivester has joined the channel [02:59] ChrisPartridge: ACTION confused [02:59] SubStack: the query string to browserify just gets ignored [02:59] SubStack: but you can host up multiple browserified sources [02:59] ChrisPartridge: SubStack: i swear that was in one of the examples, no? [02:59] bingomanatee has joined the channel [03:00] SubStack: the examples have query strings in them but that's only to do with caching [03:00] SubStack: more of a debugging thing for me spot-checking [03:00] benmonty: Ree_: when I started learning node.js, I read an article that compared event driven programming to cooking. example: you set a timer to cook something for 5 minutes. Instead of sitting around and wasting that 5 minutes waiting, you can do other things. When the timer is done, it alerts you that it is time to do something with the food [03:01] ChrisPartridge: SubStack: My bad, most likely my brain making assumptions.. [03:02] Ree_: justinTNT: jhurliman : ok thank you. I know you tried your best to explain it in simple terms. if it was the simplest way to explain it means I have to be a good programer to get it, which im not. just a rookie [03:02] towski_ has joined the channel [03:02] Ree_: benmonty: interesting, I get the picture now :) [03:02] jhurliman: i could have used simpler terms, not sure what your experience level is sorry [03:02] SubStack: ChrisPartridge: you can however serve up multiple bundled sources at different mount points [03:03] benmonty: Ree_: in node, at least as far as I know, you can still get asynchronous code without managing threads or using mutexes/semaphores [03:03] Ree_: jhurliman: its ok im reading an article on mashable about it. should give me a good idea [03:06] puffpio has joined the channel [03:07] temp01 has joined the channel [03:09] alex_b has joined the channel [03:11] mykul has joined the channel [03:12] JackeyChan has joined the channel [03:12] JackeyChan: what the means of "exports = module.exports = createServer;" [03:13] Corren has joined the channel [03:14] bene has joined the channel [03:15] bene has joined the channel [03:15] sechrist has joined the channel [03:15] bingomanatee has joined the channel [03:15] Emmanuel__: yeah, got my blog post published : Cooking up some fresh Node recipes with Chef => bit.ly/kzPa3r [03:17] gavin_huang has joined the channel [03:18] hassox has joined the channel [03:19] davidascher has joined the channel [03:20] temp01 has joined the channel [03:21] tilgovi has joined the channel [03:23] Opaque has joined the channel [03:25] azeroth__ has joined the channel [03:26] dguttman has joined the channel [03:26] tshpaper has joined the channel [03:27] temp01 has joined the channel [03:28] arlolra has joined the channel [03:29] mbrevoort has joined the channel [03:29] edude03 has joined the channel [03:30] Ree_ has left the channel [03:33] abraham has joined the channel [03:33] temp01 has joined the channel [03:34] JackeyChan has joined the channel [03:35] jbpros has joined the channel [03:35] dgathright has joined the channel [03:35] piscisaureus has joined the channel [03:36] dguttman has joined the channel [03:37] jmoyers has joined the channel [03:37] Yuffster has joined the channel [03:38] abrahamwilliams has joined the channel [03:38] dguttman has joined the channel [03:39] ditesh|cassini has joined the channel [03:40] poseurtech has joined the channel [03:40] mikeal1 has joined the channel [03:41] abraham has joined the channel [03:42] jbpros has joined the channel [03:43] rfay has joined the channel [03:44] tilgovi has joined the channel [03:47] bbttxu has left the channel [03:49] temp01 has joined the channel [03:50] abrahamwilliams has joined the channel [03:51] harth has joined the channel [03:52] trcarden has joined the channel [03:52] themiddleman has joined the channel [03:53] rpflo has joined the channel [03:55] aaronblohowiak has joined the channel [03:55] aaronblohowiak: jesusabdullah: ahoy [03:55] seivan has joined the channel [03:56] jesusabdullah: aaronblohowiak: What up [03:56] aaronblohowiak: you didnt reply to my tweet :( [03:56] jesusabdullah: Oh! [03:56] aaronblohowiak: what do you find confusing about lazy lists [03:56] jesusabdullah: I'll get to it, really! I just haven't been on twitter [03:56] aaronblohowiak: s/confusing/underdocumented [03:56] jesusabdullah: Oh, I just don't know how to use any of the methods is all [03:56] aaronblohowiak: jesusabdullah: little things. [03:56] aaronblohowiak: ;) [03:56] jesusabdullah: There are a few of them where, last I checked, pkrumins didn't write up their use [03:57] jesusabdullah: I think if you were smart you could pick it up from his examples alone [03:57] jesusabdullah: but I'm not that smart :C [03:57] aaronblohowiak: jesusabdullah: :P [03:57] aaronblohowiak: jesusabdullah: cool. I need to start my toylanguage.com blog soon. [03:57] aaronblohowiak: maybe i'll cover lazy lists. [03:57] jesusabdullah: Sweet [03:57] jesusabdullah: I've played with lazy lists in haskell before [03:57] ryanfitz has joined the channel [03:58] jesusabdullah: I just don't know much past "take" is all [03:58] MikeMakesIt has joined the channel [03:58] JackeyChan has joined the channel [03:58] aaronblohowiak: jesusabdullah: lazy lists are better called "filtering streams" [03:58] blueadept has joined the channel [03:58] jesusabdullah: That *is* a pretty good name for them [03:58] mertonium has joined the channel [03:58] indutny has joined the channel [03:59] aaronblohowiak: jesusabdullah: except take and join kinda throw a wrench in that. [03:59] jesusabdullah: hah, sure [03:59] aaronblohowiak: take() specifies how much of the stream has to match your filter before you say you have enough and join() is called when you have enough. [03:59] aaronblohowiak: (with the "result") [03:59] wormphlegm has joined the channel [03:59] aaronblohowiak: but if you never use take() or join(), then it is an infinite stream filtering pipeline [04:00] jesusabdullah: Sure [04:01] jesusabdullah: I've been babied a bit by the way SubStack documents his modules, where it's always a) intro, b) overview example, c) details of every public method with example [04:01] jesusabdullah: <_< [04:01] jesusabdullah: I really want to play with node-lazy sometime, though [04:01] jesusabdullah: Maybe I should give it another look [04:01] jesusabdullah: I think the last time I wanted to play with it he was really busy so I wasn't able to ask questions, too [04:01] max_dev has joined the channel [04:02] aaronblohowiak: jesusabdullah: i suppose node-lazy doesnt have details of every public method with examples. [04:02] jesusabdullah: *nod* [04:02] zeade has joined the channel [04:02] langworthy has joined the channel [04:02] jesusabdullah: I ask for a lot. :P [04:02] mikeal2 has joined the channel [04:02] jesusabdullah: I could add "play with node-lazy and ask questions" to my TDL I guess [04:03] aaronblohowiak: tdl ? [04:03] jesusabdullah: to-do list [04:03] aaronblohowiak: ah [04:03] aaronblohowiak: lol [04:03] jesusabdullah: It's funny, no matter how many times I try to use a tdl application, I always end up going back to a text file of some kind [04:03] aaronblohowiak: who writes DailyJS? this seems like the kind of thing they would cover [04:03] jesusabdullah: atm I'm using a gist in markdown mode [04:03] jesusabdullah: and it's great! [04:04] aaronblohowiak: jesusabdullah: you should figure out a way to diff the versions so you can show a "completed" list [04:04] jesusabdullah: What do you mean? [04:04] aaronblohowiak: removed lines are marked as complete [04:04] jesusabdullah: ah! Yeah [04:04] aaronblohowiak: new lines are new items that are just added [04:04] jesusabdullah: I used thingsdonelater.com for a while [04:04] aaronblohowiak: get smart about indenting, if you wanna get funky [04:05] jesusabdullah: and that was pretty nice, but I didn't really like how it didn't let me "check off" items [04:05] tilgovi has joined the channel [04:05] aaronblohowiak: jesusabdullah: the cool thing about what i'm talking about is that it is still *just* a text file. [04:05] tilgovi has joined the channel [04:05] SubStack: jesusabdullah: I got that convention from perl modules which pretty much always have a synopsis section with a simple example [04:05] jesusabdullah: SubStack: I see! It's a good convention, if maybe a bit time-consuming if you're not a documentation guy [04:05] Corren has joined the channel [04:06] k1ttty has joined the channel [04:06] dgathright has joined the channel [04:07] Me1000 has joined the channel [04:08] SubStack: jesusabdullah: the documentation part doesn't take long for me [04:08] jesusabdullah: Yeah [04:09] SubStack: I just write an example and :r it into the README.markdown [04:09] jesusabdullah: I like doing it because it helps me think about just what I'm doing. During development, the README is just as much a sounding board as it is documentation. [04:09] materialdesigner has joined the channel [04:09] jtsnow has joined the channel [04:09] jesusabdullah: You can see it in https://github.com/jesusabdullah/dnode-python/tree/twisted in fact! [04:10] tonymilne has joined the channel [04:10] SubStack: I do the readme right before I npm publish [04:10] jesusabdullah: *nod* [04:10] SubStack: or sometimes I make a tiny stub [04:10] sechrist: Does felix hang out in here? [04:10] jesusabdullah: Sometimes, I think? [04:10] sechrist: wait [04:10] sechrist: dnode python [04:10] sechrist: nice [04:10] jesusabdullah: oshit, gotta get back2work [04:10] jesusabdullah: Yeah [04:10] sechrist: jesusabdullah++ [04:10] v8bot: sechrist has given a beer to jesusabdullah. jesusabdullah now has 9 beers. [04:10] aconbere has joined the channel [04:11] jesusabdullah: sechrist: Marak prematurely pimped it out so now I have to write it for real ;) [04:11] sechrist: :D [04:11] sechrist: I'm curious how you're going to do this cleanly [04:11] jesusabdullah: I'm pretty optimistic, though. Only downside is that twisted is too big, breaks PEP 8 and is kind of a brain scramble [04:12] jesusabdullah: sechrist: I'm curious as to how I'm going to do that, too XD [04:12] sechrist: jesusabdullah++ [04:12] v8bot: sechrist has given a beer to jesusabdullah. jesusabdullah now has 10 beers. [04:12] jesusabdullah: sechrist: I'm starting out by basically implementing a DNodeFactory and DNodeProtocol for twisted [04:12] Booster2ooo has joined the channel [04:12] ceej has joined the channel [04:12] brianseeders has joined the channel [04:12] hasenj has joined the channel [04:12] sion2k has joined the channel [04:12] gmgl has joined the channel [04:12] zined_ has joined the channel [04:12] mape has joined the channel [04:12] alek_br has joined the channel [04:12] rkioski has joined the channel [04:12] jesusabdullah: and then thinking about how to smooth out its use since, well, you shouldn't have to know twisted to use dnode-python imo [04:12] bentruyman has joined the channel [04:13] jesusabdullah: Or, at least, you shouldn't have to know *much* [04:13] SubStack: whatever 'DNodeFactory' is supposed to actually do [04:13] jesusabdullah: Anyways: Work calls [04:13] jesusabdullah: SubStack: Yeah, no joke. [04:13] SubStack: factories are a sign that your language blows [04:13] SubStack: thats right python what [04:13] jesusabdullah: XD [04:13] SubStack: I've seen it in ruby too [04:13] jesusabdullah: Yeah, that's kinda how I feel about Twisted. It does cool stuff---kinda like node.js---but because it's in python it has no choice to suck [04:14] jesusabdullah: even if they do everything right [04:14] jesusabdullah: imo [04:14] jesusabdullah: but yeah, enough of the python hating :P [04:15] aaronblohowiak: SubStack: i want to figure out a way to have my example code tested before being put in documentation [04:15] aaronblohowiak: SubStack: *shrug* maybe that is trying too hard [04:15] SubStack: tested? [04:15] SubStack: I dump it in ./examples [04:16] SubStack: then I just run it [04:16] fakewaffle_ has joined the channel [04:16] SubStack: :r!examples/moo.js [04:16] SubStack: then I just show the output too because that's useful to have [04:16] jesusabdullah: I don't think that's a completely unreasonable thing to do, but "weaving" and "unweaving" files automagically is definitely a non-trivial problem [04:16] ChrisPartridge: SubStack: what's :r? [04:16] SubStack: example programs should do stuff [04:16] jesusabdullah: The best way I've seen this done is with R's sweave [04:16] fakewaffle: i'm super excited! [04:16] SubStack: ChrisPartridge: :r includes a file in vim, :r! executes a command and dumps the output into the doc [04:17] jesusabdullah: I always forget about :r [04:17] jesusabdullah: which is a shame because it's probably one of vim's killer features [04:17] SubStack: vim has huffman-coded killer features [04:18] ChrisPartridge: I always tried to like vim, but the shortcuts felt too un-natural [04:18] exstrudel has joined the channel [04:18] gkatsev: vim is awesome [04:18] aaronblohowiak: ChrisPartridge: i like vico, but it is still pretty "beta" [04:18] jbpros has joined the channel [04:19] jesusabdullah: vico? [04:19] ryanallenbobcat has joined the channel [04:19] aaronblohowiak: vico is vikeys-ennabled native osx app that supports textmate bundles and is scriptable in a lisp-like language called nu [04:19] aaronblohowiak: *whew!* [04:19] jesusabdullah: Huh [04:19] ChrisPartridge: aaronblohowiak: osx only? [04:19] jesusabdullah: I'd like to see a text editor scriptable with js [04:19] jesusabdullah: or, Hell, lua [04:19] aaronblohowiak: ChrisPartridge: are there other operating systems? [04:19] jesusabdullah: I hear lua is nice [04:19] aaronblohowiak: ;) [04:19] gkatsev: jesusabdullah: ACE [04:20] gkatsev: ace.ajax.org [04:20] jesusabdullah: I've never heard of osx! [04:20] jesusabdullah: ACTION plugs his ears [04:20] ChrisPartridge: ACTION is not an OSX lover [04:20] jesusabdullah: gkatsev: Is that from the cloud 0 peeps? [04:20] gkatsev: though, that's pretty much a fancy textarea in HTML [04:20] ChrisPartridge: I grew up on a lean debian diet [04:20] SubStack: I only hear about osx from hipsterhacker [04:20] jesusabdullah: er [04:20] jesusabdullah: Oh, so it IS [04:20] gkatsev: jesusabdullah: yeah, cloud9 use it. [04:20] jesusabdullah: and by 0 I meant 9 [04:20] jesusabdullah: Cool! I'll have to give it a shot [04:20] gkatsev: :) [04:20] jesusabdullah: I like the cloud9 guys [04:21] gkatsev: jesusabdullah: mozilla's bespin/skywriter project was merged into ACE [04:21] jesusabdullah: but I'm not really an ide kinda guy [04:21] aaronblohowiak: ChrisPartridge: i grew up on shitty redhat releases.. =( [04:21] jesusabdullah: Hmm [04:21] jesusabdullah: I'll look into this further >:) [04:21] gkatsev: jesusabdullah: yeah, vim for me. [04:21] ChrisPartridge: aaronblohowiak: Oh don't worry, I've managed a plethora of RH and CentOS servers in my life [04:21] jesusabdullah: I actually use gedit most of the time [04:21] jesusabdullah: *shame* [04:21] aaronblohowiak: ChrisPartridge: i'm so sorry ;) [04:21] jesusabdullah: *embarrassment* [04:21] jesusabdullah: ;) [04:21] gkatsev: jesusabdullah: at least not pico :) [04:21] jesusabdullah: Ugh [04:22] ChrisPartridge: I like cloud9, but it seems too slow and chuggy already [04:22] jesusabdullah: I used that for a while when I only had a choice between that and vim, and I wasn't ready to learn vim [04:22] jesusabdullah: Sucked [04:22] ryan0x2 has joined the channel [04:22] jesusabdullah: but at least the cheat sheet was Right There [04:22] ChrisPartridge: I've been working on my own editor, with Ext4, DNode and CodeMirror [04:22] jesusabdullah: and by pico I mean nano [04:22] gkatsev: I would've taken nano over pico [04:22] jesusabdullah: ChrisPartridge: link? [04:22] gkatsev: jesusabdullah: haha [04:23] ChrisPartridge: jesusabdullah: not online yet, i've implemented FS tree and loading files into tabs, i'll get it on GH tonight [04:23] gkatsev: jesusabdullah: first you think that 9 is 0, now that nano is pico? [04:23] aaronblohowiak: ChrisPartridge++ [04:23] v8bot: aaronblohowiak has given a beer to ChrisPartridge. ChrisPartridge now has 2 beers. [04:23] jesusabdullah: gkatsev: I was having to run an extremely stripped-down Slackware install on a Pentium MMX laptop at the time. I was in pretty far over my head at the time, on a laptop where firefox 2.x was computationally taxing even with the most minimal of window managers (ratpoison) [04:24] jesusabdullah: Now that THAT's typed... [04:24] gkatsev: heh [04:24] jesusabdullah: gkatsev: I know, right? re: nano/pico [04:25] gkatsev: :) [04:25] gkatsev: but really, vim (or emacs, if you must) are definitely worth the time it takes to learn. [04:25] momoro has joined the channel [04:25] jesusabdullah: Yeah, I found that to be the case as well, once I figured out how to save and quit [04:25] aaronblohowiak: gkatsev: real men only use sed and awk [04:26] jesusabdullah: It's kinda like learning to drive stick [04:26] SubtleGradient has joined the channel [04:26] gkatsev: When you get started, you can spend most of your time in insert mode but as you start getting better and better with vim, you won't need to [04:26] jesusabdullah: Having trouble :q -ing is like stalling out the engine [04:26] aaronblohowiak: gkatsev: vimtutor!! [04:26] gkatsev: aaronblohowiak: meta-x meta-butterfly [04:26] aaronblohowiak: jesusabdullah: ZZ [04:26] aaronblohowiak: gkatsev++ [04:26] v8bot: aaronblohowiak has given a beer to gkatsev. gkatsev now has 6 beers. [04:27] jesusabdullah: and now I'm at the point where I can drive it, but I'm not amazing at it and I'm usually content with an automatic even though it's a bit nerfed in terms of control and ability [04:27] jesusabdullah: Oh, and emacs is like a semi [04:27] jesusabdullah: You can do damned near anything with it, but sweet jesus it has 24 gears what are you supposed to do with them O__O [04:27] gkatsev: jesusabdullah: I recommend listenening to this episode: http://thechangelog.com/post/4557774334/episode-0-5-6-vim-with-drew-neil-tim-pope-and-yehuda-kat [04:28] jesusabdullah: Honestly, I think if I just took the time to customize vim I'd be way happier with it [04:28] gkatsev: jesusabdullah: you build it up as you go along [04:28] jesusabdullah: I've never gotten around to setting up a sensible .vimrc [04:28] jesusabdullah: Oh, this *does* look cool [04:28] ditesh|cassini has joined the channel [04:28] jesusabdullah: I'll look into it when I'm done with this project [04:29] gkatsev: mine is : http://bitbucket.org/gkatsev/dotfiles [04:29] jesusabdullah: There *has* to be a better way of making inventory tables than spreadsheets >_< [04:29] gkatsev: vim-outline? [04:29] fakewaffle: Nexxy++ [04:29] v8bot: fakewaffle has given a beer to Nexxy. Nexxy now has 5 beers. [04:30] jesusabdullah: idk, maybe it *is* the best way [04:30] jesusabdullah: I think what I'd like is something that's a cross between csv's and markdown [04:30] aaronblohowiak: inventory tables? [04:30] jesusabdullah: Yeah, you know [04:30] jesusabdullah: Item | Location | Comments [04:30] aaronblohowiak: what is that used for? [04:30] fakewaffle: how do i run node as a "service?" ? [04:30] jesusabdullah: Stupid Thing | Rm. 204 | You need this to herp the derp, and if you lose it the university will be PISSED [04:31] aaronblohowiak: fakewaffle: what OS? [04:31] jesusabdullah: aaronblohowiak: It's for my old TA job. I need to detail what lab equipment we have, and where it is [04:31] fakewaffle: ubuntu [04:31] aaronblohowiak: jesusabdullah: oh. meatspace. [04:31] jesusabdullah: Yeah, meatspace [04:31] aaronblohowiak: fakewaffle: i like upstarter [04:31] aaronblohowiak: jesusabdullah: flesh is overrated [04:31] jesusabdullah: Heh [04:31] jesusabdullah: There is this kinda thing that's cool about The Internet, and really society in general [04:31] aaronblohowiak: good night! [04:32] jesusabdullah: in that we've abstracted human interaction and knowledge *so much* [04:32] fakewaffle: aaronblohowiak: ty [04:32] aaronblohowiak: :-) [04:32] jesusabdullah: Put *that* in your pipe and smoke it [04:32] gkatsev: jesusabdullah: but some of the things in that changelog episode is that you should just start using vim even with training wheels (ie, use arrow keys, don't bother with hjkl) and stuff like that [04:32] jesusabdullah: Yeah [04:32] tbranyen: its dumb to disable arrow keys when learning [04:32] jesusabdullah: It's dumb to not use the arrow keys if that's what's gonna stop you [04:33] tbranyen: heh [04:33] jesusabdullah: tbh, I'm still halfsies on arrow keys [04:33] gkatsev: tbranyen: well, some people learn that way [04:33] gkatsev: dive all the way in [04:33] gkatsev: I still rarely use hjkl [04:33] tbranyen: gkatsev: seems like a sure fire way of hating vim and never using it again [04:33] gkatsev: haha [04:33] jesusabdullah: I think if it's what's *stopping* you than, well, dip your toes in if that's what you need/want to do [04:33] tbranyen: i use home row all the time, but i sure as hell didn't start with it [04:33] jesusabdullah: Wading on the shallow end isn't really shameful, as long as you're self aware [04:34] tk has joined the channel [04:34] tbranyen: jesusabdullah: yeah but you need to really want to learn vim [04:34] tbranyen: and explore different commands and shit [04:34] gkatsev: tbranyen: are you going to the jquery meetup or the google io talk? It's annoying that they're both at the same time/day [04:34] SubStack: pkrumins wrote lots of vim articles [04:34] tbranyen: staying in insert mode sucks [04:34] gkatsev: tbranyen: the html5 game dev meetup is also that day [04:34] tbranyen: gkatsev: yeah its lame [04:35] tbranyen: if you don't go to the jquery meetup, i'll probably just go home and play video games [04:35] tbranyen: i'd like to discuss some node meetup crap after the jq meetup tho [04:35] gkatsev: I'm thinking of going [04:35] tbranyen: which reminds me, if any of you scrubs are in the boston area, join the meetup group [04:35] tk has joined the channel [04:36] jesusabdullah: I think I might actually have a bitbucket account [04:36] jesusabdullah: though I've never used hg [04:36] jesusabdullah: It'd be nice to have a good way to aggregate news feeds from bitbucket, github, launchpad and the like [04:36] gkatsev: I'm in the process of moving to github, at least the ones I want to be public [04:37] jesusabdullah: I see [04:37] ChrisPartridge: I'm a habitual hg user (by force) [04:37] gkatsev: but bitbucket has a nice free plan [04:37] tbranyen: we need a social coding site for darcs [04:37] aconbere has joined the channel [04:37] jesusabdullah: I don't necessarily think git is the be-all, end-all, or that hg is any better or worse (or bzr, fossil, darcs, etc. for that matter) [04:37] jesusabdullah: but I do love the social aspects of git [04:37] gkatsev: darcs? people use that? [04:38] tbranyen: well not without a fancy site like github [04:38] jesusabdullah: and the thing I wish everyone else would copy: CODE AND README ON THE FIRST PAGE YOU SEE [04:38] slickplaid: Wish there was a social group in Kansas City for node users/hackers [04:38] gkatsev: jesusabdullah: I like hg over git but you just can't beat github. [04:38] ChrisPartridge: jesusabdullah: hg works great here, and it plugs to fogbugz/kiln (bug tracking, w/GH style interface for repos) [04:38] jesusabdullah: That's the thing that raises my hackles about almost every other code host [04:38] tbranyen: slickplaid: yeah meetups are weird, only some areas take off [04:38] gkatsev: tbranyen: are you going to the django meetup next week? [04:38] jesusabdullah: ChrisPartridge, I believe you! [04:39] slickplaid: Copious amounts of alcohol usually make the meetings a bit more easy going :D [04:39] tbranyen: gkatsev: fuck no, i've had it up to here with django and their lame meetups no offense to them [04:39] jesusabdullah: gkatsev: Yeah, exactly. Truth be told, I think github is the biggest reason why git is winning right now. [04:39] ChrisPartridge: jesusabdullah: are you sure?! :-) [04:39] jesusabdullah: tbranyen: Why are their meetups lame? [04:39] gkatsev: tbranyen: lol, how come? [04:39] m64253 has joined the channel [04:39] tbranyen: jesusabdullah: i was not impressed with the people who showed up to them [04:39] gkatsev: it's going to be at bocoup [04:39] tbranyen: gkatsev: bs [04:39] tbranyen: is it? [04:39] jesusabdullah: ChrisPartridge: Nope! I mean, everyone knows that Sourceforge is still a major player! [04:39] gkatsev: tbranyen: yeah [04:40] tbranyen: well i'm having no part in it [04:40] jesusabdullah: The Forge knows how to make source control both easy AND fun! [04:40] gkatsev: http://www.meetup.com/djangoboston/events/16210200/ [04:40] ChrisPartridge: ACTION laughs [04:40] gkatsev: tbranyen: haha [04:40] hassox has joined the channel [04:40] tbranyen: last time i had to stay while people were taking their sweet to time to leave, so rude [04:40] jesusabdullah: They're without a doubt the code host of the 21st century and NOT stuck in 1999 like github! :v [04:40] gkatsev: tbranyen: nate and shimon are at least cool people. Idk about the rest [04:40] tbranyen: when everyone but three people are left and i'm turning off lights, that means gtfo [04:40] jesusabdullah: Okay, enough of that [04:40] jesusabdullah: ^__^ [04:41] jesusabdullah: tbranyen: You hosted? [04:41] tbranyen: jesusabdullah: I work at Bocoup, we host like 90% of the Boston meetups [04:41] tbranyen: :-p [04:41] gkatsev: almost, lol [04:41] jesusabdullah: I see! [04:41] gkatsev: tbranyen: pete helped plan it, apparently [04:41] ChrisPartridge: jesusabdullah: How about we chuck all our codes on hotscripts.com and leave it at that? [04:41] jesusabdullah: I used to have to tell my lab students to gtfo all the time after lab [04:42] tbranyen: gkatsev: all the django meetups are so basic [04:42] jesusabdullah: Oh shit ChrisPartridge I think you out-hipstered me [04:42] jesusabdullah: Why, yes you did [04:42] newy has joined the channel [04:42] gkatsev: tbranyen: I think I'm going to stop by next week for that meetup, see how it goes [04:43] jesusabdullah: ACTION wonders if hotscripts is better than http://www.mathworks.com/matlabcentral/fileexchange/ [04:43] tbranyen: oh gkatsev i won't even be on the east coast on that day [04:43] tbranyen: sister is graduating, going to colorado next week [04:43] jesusabdullah: high school or college? [04:43] jacter has joined the channel [04:43] jesusabdullah: My brother and I just graduated ourselves [04:44] jesusabdullah: He got his bachelors, me my masters [04:44] tbranyen: jesusabdullah: air force academy [04:44] jesusabdullah: The fam really liked that [04:44] jesusabdullah: Oh, awesome tbranyen! [04:44] gkatsev: tbranyen: haha. ah, nice, congrats [04:44] ChrisPartridge: jesusabdullah: or we go to http://www.dynamicdrive.com/ they host "DHTML scripts for the real world" [04:44] gkatsev: jesusabdullah: congrats. what degree? [04:44] jesusabdullah: My brother's going air force after this [04:44] jesusabdullah: gkatsev: mechanical engineering [04:44] yozgrahame has joined the channel [04:45] jesusabdullah: gkatsev: ...and now for something completely different: node.js programming in the bay [04:45] jesusabdullah: -heh- [04:45] tbranyen: 00:50 < wesbos> Highschool or univeristy? [04:45] gkatsev: I would've graduated this month with a CS degree if it was a normal program [04:45] tbranyen: woah weird [04:45] brownies has joined the channel [04:45] tbranyen: totally diff channel almost same question about something completely unrelated [04:45] jesusabdullah: Funny how that works [04:45] tbranyen: irc scares me [04:46] gkatsev: heh [04:46] gkatsev: I'm graduating next year! [04:46] jesusabdullah: Cool! Don't get senioritis! [04:46] gkatsev: too late :( [04:46] gkatsev: retaking calc 2 for the 2nd time [04:47] tbranyen: do what my old roommate did, wait till your last quarter dump your g/f drop out and check yourself into a hospital for mental illness [04:47] gkatsev: I had senioritis since sophomore year of highschool... [04:47] gkatsev: tbranyen: um... [04:47] tbranyen: best advice i can give [04:47] gkatsev: I'm going to go with a no [04:47] mbrevoort has joined the channel [04:48] jesusabdullah: Oh man, 9:00 almost. [04:48] gkatsev: tbranyen: I've been with my gf for 5.5 years... [04:49] jesusabdullah: That's a long time! [04:49] ryah has joined the channel [04:49] tbranyen: gkatsev: yeah he was with her for 4 years [04:49] tbranyen: don't want to scare you [04:50] tbranyen: but you're going to go insane [04:50] gkatsev: heh [04:50] gkatsev: lol [04:50] tbranyen: also the world ends this weekend [04:50] tbranyen: so w/e [04:50] skeevis has joined the channel [04:50] gkatsev: supposedly [04:50] gkatsev: or at the end of the year [04:50] jesusabdullah: I started having to take xanax my last semester [04:50] mjr_ has joined the channel [04:50] jesusabdullah: gained like 20 lbs [04:50] jesusabdullah: started abusing certain other substances [04:50] ryan0x2_ has joined the channel [04:50] jesusabdullah: umm [04:50] jesusabdullah: well, short story: I damned near lost my mind. [04:51] halfhalo: ACTION has finals tomorrow... good times... [04:51] tbranyen: jesusabdullah: yea i think that happens to most college students that partake in too much vending machine food [04:51] jesusabdullah: Well, I gained all that weight during my last semester, is the thing. [04:52] fakewaffle: anyone wanna look at my code and ask why the fuck did i write such shit? no hurries, just looking for feedback [04:52] jesusabdullah: This was my 6th year of college [04:52] tbranyen: fakewaffle: did you intentionally write bad code? [04:52] fakewaffle: tbranyen: lol no [04:52] jesusabdullah: I'd gained maybe 15, 20 lbs since high school prior to that [04:52] jesusabdullah: I was just under a shit-ton of stress [04:52] SubStack: jesusabdullah: just eat what I eat when you get here [04:52] gkatsev: fakewaffle: were you drunk and have not hit the ballmer peak? [04:52] fakewaffle: lol! [04:53] fakewaffle: im just preparing myself for the ridicule [04:53] SubStack: you'll lose 5 kilos the first month probably [04:53] jesusabdullah: SubStack: I probably will! Also going to ride my bike a lot probably [04:53] SubStack: that helps too! [04:53] gkatsev: eating healthy is good [04:53] yenz: SubStack: eat to live? [04:53] mscdex: jesusabdullah: are you going to take it off any sweet jumps? [04:53] gkatsev: also, sleeping well surprisngly helps a lot [04:53] yenz: or just your own brand of healthy eating [04:53] SubStack: protip: caffeine is a mild temporary appetite suppressant [04:53] tbranyen: i did not eat dinner [04:54] tbranyen: and my throat feels like cancer [04:54] gkatsev: which is why I'm going to sleep in 10 minutes [04:54] jesusabdullah: I will also hopefully be less stressed, cut back on energy drinks, and hopefully stop smoking ciggys....again. [04:54] SubStack: yenz: turns out eating when hungry works pretty well at not dying [04:54] gkatsev: jesusabdullah: get an electric cig [04:54] yenz: SubStack: no, i meant the "Eat to Live" style diet [04:54] yenz: not literally "you need food to not die" ;) [04:55] mscdex: i'm waiting for someone to write a stop smoking app with node [04:55] fakewaffle: https://github.com/fakewaffle/piejs - if anyone wants to give me feedback [04:55] mscdex: and then put it in the node app store [04:55] SubStack: all that evolutionary baggage about enduring famines works pretty well [04:55] jesusabdullah: gkatsev: I don't even like tobacco, though. It's just a response to anxiety [04:55] tbranyen: mscdex: node app store? [04:55] dilvie has joined the channel [04:55] fakewaffle: it's in rough development, but the core ideas are mainly there [04:55] gkatsev: jesusabdullah: even more of a reason for an electric cig [04:55] jesusabdullah: If I were to, say, pop xanax or smoke dope instead, I'd quit tobacco near instantly [04:55] mscdex: tbranyen: you heard it here first! someone make it! [04:55] tbranyen: lol [04:55] mscdex: seriously, that'd be cool [04:56] mscdex: like an npm for full apps [04:56] mscdex: ! [04:56] gkatsev: yeah, it'll be a frontend for npm and node-waf? [04:56] SubStack: jesusabdullah: just stop taking part in large organizations like universities and your stress will plummet [04:56] gkatsev: plus for actual apps [04:56] tbranyen: gonna be weird if node gets off waf [04:56] jesusabdullah: SubStack: That's my hope! :P [04:56] abraham has joined the channel [04:56] tbranyen: node-compile might have been better or something similar :-/ [04:56] tbranyen: build tool agnostic [04:57] SubStack: ACTION can barely muster enough motivation to leave the house most days [04:57] ChrisPartridge: fakewaffle: I'll check it out this evening [04:57] SubStack: oh today I walked 15m down to the convenience store to get some chips [04:57] tbranyen: SubStack: make up excuses like "its raining" or "i'm drunk" [04:57] gkatsev: is there a test framework that would tell you your tests's code coverage for node? [04:57] SubStack: it was raining! [04:57] jspiros has joined the channel [04:58] fakewaffle: ChrisPartridge: ok, thank you :) [04:58] ChrisPartridge: fakewaffle: I used CakePHP for too many years... :P [04:58] fakewaffle: ChrisPartridge: you like it? [04:59] ChrisPartridge: fakewaffle: I don't have a problem with it, just had plenty of scaling issues [04:59] fakewaffle: ahh [04:59] jesusabdullah: I think nodejitsu is supposed to include a marketplace kinda thing, at least eventually [05:00] tbranyen: fakewaffle: lots of code in here [05:00] sechrist: Anybody know any HTML5 uploaders (with progress) that fallback to flash for crappy browsers? [05:00] tbranyen: fakewaffle: were you a c/c++/java programmer prior to JS by any chance? [05:00] jesusabdullah: hmm [05:00] fakewaffle: tbranyen: js first, php second [05:01] tbranyen: fakewaffle: ah inflector.js isn't your code [05:01] fakewaffle: yeah, using it for now though lol [05:01] jesusabdullah: I have to admit, the giganto mvc organization model kinda brainfucks me a bit, but I think it's at least in part because I never actually worked with anything like Cake, django, RoR, etc [05:01] fakewaffle: tbranyen: i want to move that to a real module rather than string's prototype [05:01] sechrist: It's a way of organizing your code into separate pieces [05:01] tbranyen: fakewaffle: hard for me to give much feedback, no comments/documentation in the code [05:02] sechrist: you can think of the html completely different than the view code that powers it with variables [05:02] fakewaffle: tbranyen: ok [05:02] brettgoulder has joined the channel [05:03] SubStack: sechrist: tanepiper wrote one with dnode [05:03] eikaas has joined the channel [05:03] sechrist: SubStack: orly? [05:03] tbranyen: maybe module.exports = Model instead of a property? var Model = require( './model' ) [05:03] sechrist: I have zero intention of using dnode/websockets anywhere else in this application so dnode may be a bit bloat [05:03] polotek has joined the channel [05:03] SubStack: https://github.com/tanepiper/dnode-upload-example [05:03] SubStack: bloat pfft whatevs [05:03] sechrist: yes bloat [05:04] fakewaffle: tbranyen: ok [05:04] sechrist: because scaling socket.io is a bitch [05:04] indexzero has joined the channel [05:04] mjr_: scaling just about everything is a bitch, once you go to actually do it. [05:04] mjr_: Shit is hard, man. [05:04] fakewaffle: run down of it: dispatcher parses url (kinda limited now) to get the controller and the action, setups models and datasource [05:04] sechrist: Shit is hard. [05:04] mykul|Home has joined the channel [05:05] sechrist: The way i've scaled socket.io is with a messagequeue [05:05] SubStack: I should think that people uploading files to you would saturate your network capacity before your server scaling [05:05] sechrist: that's less the point [05:05] SubStack: socket.io doesn't do the uploading also [05:05] sechrist: unless I spin up instances specifically for uploading [05:05] sechrist: ah ok [05:05] SubStack: just communicates progress upstream [05:06] Murugaratham has joined the channel [05:06] fakewaffle: tbranyen: if you want to see example: http://www.fakewaffle.com/posts, http://www.fakewaffle.com/posts/add, http://www.fakewaffle.com/edit/1 [05:06] SubStack: sechrist: you can always prototype with tanepiper's thing too and if it turns out to actually matter in some consequential way scrap it later in favor of something custom [05:06] gkatsev: mjr_: then you must have a terrible time going to the bathroom everyday. [05:07] MikeMakesIt has joined the channel [05:07] fakewaffle: tbranyen: ops that last one should be http://www.fakewaffle.com/posts/edit/1 [05:07] sechrist: honestly the upload events streaming parallel to the upload is fine, but socket.io for that I believe is bloated [05:07] sechrist: a longpolling ajax call will work universally for this purpose [05:07] sechrist: without having to worry about multiple ports and crap [05:07] sonnym has joined the channel [05:09] boehm has joined the channel [05:09] jslatts has joined the channel [05:10] fangel has joined the channel [05:10] jslatts has left the channel [05:10] gkatsev: ACTION sleeps [05:10] gkatsev: tbranyen: see you tomorrow [05:10] tbranyen: later man [05:11] JackeyChan has joined the channel [05:13] zmbmartin has joined the channel [05:13] zmbmartin: is there something like jammit(asset packaging) for express/node? [05:15] nxzq has joined the channel [05:16] sh1mmer has joined the channel [05:16] mjr_: sechrist: don't forget about traversing various proxies. I've been finding all sorts of places where our simple HTTP streaming doesn't work because somebody put a transparent proxy in there that messed with streaming HTTP somehow. [05:16] tilgovi_ has joined the channel [05:16] tilgovi_ has joined the channel [05:16] sechrist: Telcos right? [05:16] sechrist: f them [05:16] mjr_: Like Verizon's 3G network, for example. [05:17] sechrist: I mean the crap is going to soundcloud [05:17] mjr_: If you use a Verizon mifi, which BTW I do and I love, you will get routed through their HTTP proxy if your traffic looks like HTTP. [05:17] fakewaffle: the more i code with node, the more a love callbacks :) [05:17] sechrist: I was originally going to write a multipart rec and send thing to proxy it to soundcloud so I can emit progress results [05:17] sechrist: but eh [05:18] barce has joined the channel [05:18] sh1mmer: mjr_: vpn? [05:18] barce: sup [05:19] mjr_: sh1mmer: we actually got Verizon to make an exception for us. [05:19] mbrevoort has joined the channel [05:19] sh1mmer: mjr_: nice [05:19] sechrist: nice [05:19] sh1mmer: how does that work, aren't you basically competing with them? [05:20] mjr_: But we are slowly moving everything to https, as soon as we can get rid of all of these damned TLS bugs. [05:20] sh1mmer: or do they not care about voice calls any more [05:20] chalaschek_ has joined the channel [05:20] mjr_: sh1mmer: well, they are a big company. Clearly some part of their organization wants to have a great IP network. [05:20] mjr_: Because they do have a great mobile IP network. It's fantastic. [05:20] sh1mmer: :) [05:21] mjr_: And another part of their company is desperately trying to figure out what comes after "phone calls", whose margins are rapidly dwindling. [05:21] mjr_: But voice+text globally is still a 2 TRILLION dollar / year industry, so they've got a ways to go before obselescence. [05:22] sechrist: with ridiculous pricing [05:22] ChrisPartridge: trillion... shit [05:22] sechrist: it's 2 trillion because it's so inflated [05:22] mjr_: maybe so, but they can take a shitload of discounts before their game is over [05:22] sh1mmer: sechrist: you only say that because you don't have a giant pan-global infrastructure [05:23] sechrist: of course! [05:23] sh1mmer: I'm not saying it isn't expensive but infrastructure investments are still a big sink for telcos [05:23] sechrist: softbank is pretty brilliant [05:23] mjr_: They money they spend on both spectrum and on buying specialized hardware is pretty astounding. [05:23] sechrist: in japan they are giving people microcells if you have a business [05:23] sh1mmer: if they charged as a commodity rather than what the market will bear they would have a 1/10 of the profit [05:24] sechrist: and if you have a business with no broadband, they GIVE you broadband to put the microcell on [05:24] ChrisPartridge: spectrum isn't cheap either [05:24] mjr_: Some kind of low power bases have got to be the long term solution to fast mobile data. It'll be interesting to see what we do as an industry between here and there. [05:24] mjr_: Maybe Japan has the user density that it makes sense now. [05:26] yozgrahame has joined the channel [05:26] mjr_: The carriers are trying to avoid becoming a commodity "dumb pipe", and meanwhile all of the internet people like me are longing for the day when they embrace their dumb pipe status. [05:26] springmeyer has joined the channel [05:26] sh1mmer: mjr_: if I cared about Erlang I could have done that 5+ years ago :) [05:27] SubtleGradient has joined the channel [05:30] m3nt0r has joined the channel [05:31] bluekite2000_ has joined the channel [05:31] isaqual has joined the channel [05:32] fakewaffle: michael jackson is dead?! [05:32] ChrisPartridge: not in my heart [05:32] mykul|Home: http://cdn.theurbandaily.com/files/2010/09/michael-jackson-eating-popcorn.gif [05:32] tbranyen: the actor on trailer park boys? [05:32] ChrisPartridge: ACTION moonwalks to toilet [05:32] fakewaffle: lol [05:33] fakewaffle: tonymilne: did you ever get your project on git? [05:33] tonymilne: fakewaffle: not yet. [05:33] fakewaffle: mykul|Home: i see that on f7u12 a lot now lol [05:34] sh1mmer has joined the channel [05:34] mikeal has joined the channel [05:35] superjudge has joined the channel [05:39] Adman65 has joined the channel [05:41] arlolra has joined the channel [05:42] gibybo has joined the channel [05:43] fakewaffle: goodnight all [05:43] fakewaffle: ChrisPartridge: ill be on in about 8 hours, let me know if you had a chance to look at pie? [05:44] Marak has joined the channel [05:44] gibybo: So I just installed node.js and I can't seem to get the demo server to respond to http requests with latencies under 250ms (to a remote server, but I can serve other http requests from python / apache servers in <50ms) - am I doing something wrong? [05:44] ChrisPartridge: fakewaffle: Will do, take it easy [05:44] Marak: ryah: the twitter bot should be way more quiet now, we implemented much more aggressive silencing of RTs, you wanna unban him? [05:45] ryah: ok [05:45] ryah: what was his nick? [05:45] Marak: cool, we are gonna implement a !STFU trigger too, that will just make him go quiet for a few minutes [05:45] Marak: ryah: "kohai" [05:45] wookiehangover has joined the channel [05:45] ryah: :/ [05:45] ryah: i forget how to unban [05:45] Marak: ahaha [05:45] Marak: noob [05:46] Marak: ./msg chanserv help [05:46] Marak: wait thats not right [05:46] tk: ryah: if its a regular ban /mode #channel -b [mask used to ban] [05:46] tk: ryah: or double click the channel if you are on a gui client :P [05:47] Marak: ive been using webchat.freenode for too long, where is mIRC when you need it [05:47] ryah: dont know what the mask was [05:47] beriberikix has joined the channel [05:47] beawesomeinstead has joined the channel [05:48] ryah: Marak: change his username [05:48] Marak: hrmm [05:48] ryah: i think that will fix it [05:49] ryah: sorry dont know how to unban [05:49] ryah: :) [05:49] Marak: its already hooked into chanserv and nickserv for various functions [05:49] Marak: with that nick [05:49] Marak: one sec [05:49] tk: ryah: if you want to +o me a sec i can clear it :P [05:49] ryah: Marak: do whatever [05:49] Marak: YES ULTIMATE POWER [05:49] materialdesigner: lol [05:49] Marak has joined the channel [05:49] Marak: lol [05:49] Marak: :-D [05:49] Marak: one more time ryah lol [05:50] Marak: okay thanks [05:50] ryah: ACTION goes back to work [05:50] Skola has joined the channel [05:50] tk: there are no bans... [05:50] aaronblohowiak has joined the channel [05:51] tk: unless they are set with chanserv against the registered nick... [05:51] Jaike has joined the channel [05:52] mscdex: there are 3 bans [05:52] ChrisPartridge: I see bans [05:52] tk: hmmmm interesting [05:52] kohai: ./msg chanserv unban #node.js [05:52] ChrisPartridge: 64.30.140.* ? [05:52] mscdex: *!*~nodebot*@*.static.cloud-ips.com [05:52] mscdex: that's the one that was set earlier today [05:52] kohai: mscdex: ++ [05:52] tk: now i see them too [05:53] powerj has joined the channel [05:53] mscdex: done [05:53] kohai has joined the channel [05:53] kohai: Twitter Connection Successful! [05:53] brettgoulder has joined the channel [05:53] tk: wow lagging [05:53] Marak: kohai: introduce yourself and be nice [05:53] Marak: kohai: introduce [05:54] tk: what about the other nodebot mask? [05:54] mscdex: that was set april 11th [05:54] Marak: grumble [05:54] mscdex: who knows [05:54] Marak: kohai: intro [05:54] Marak: i hate you kohai: worst bot ever [05:54] powerj has left the channel [05:54] mscdex: Marak: a disobedient bot! stop it before it initiates skynet! [05:55] konobi: ryah: no love for me!? [05:55] ChrisPartridge: stuborn bot... [05:55] tk: lol [05:55] Marak: !tweet test from the #nodejs irc room [05:55] konobi: anyone know of a tftp server for node? [05:55] konobi: ryah: =0P [05:55] ryah: konobi: you can just ask chanserv to op [05:55] wilken has joined the channel [05:55] konobi: ryah: chanserv hates me [05:56] konobi: forgot whatever password i had for identify, so it refuses to do anything [05:56] Marak: odd, okay brb [05:57] mscdex: konobi: why a tftp server? [05:57] konobi: mscdex: why not? =0) [05:57] mscdex: heh [05:57] konobi: mscdex: pxe stuff [05:58] mscdex: ah [05:58] kohai has joined the channel [05:58] kohai: Twitter Connection Successful! [05:58] newy_ has joined the channel [05:58] Marak: kohai: introduce yourself or ill forever stop you again [05:59] Marak: yeah, bad avianflu, its only outputting to one channel [05:59] gibybo: node.js seems to have incredibly high latency when responding to http requests, what sort of latencies should I be realistically expecting? [05:59] mscdex: tftp server should be pretty easy, since it's really simple compared to plain ftp [05:59] Marak: gibybo: sub 100ms ? [06:00] Marak: gibybo: 20ms? [06:00] gibybo: hm, I can't get under 250ms :( [06:00] Marak: gibybo: hello world? [06:00] Marak: gibybo: whats your app? [06:00] konobi: ryah: was it pgreiss or pquerna who did the tftp server example? [06:00] ryah: *shrug* [06:00] aaronblohowiak: woah lots of people are +o [06:00] gibybo: http://node.gibybo.com:8080/teststatic.html [06:00] konobi: ah ha... https://github.com/pquerna/node-examples/blob/master/udp/tftp.js [06:01] Marak: gibybo: whats your server-side code look like? [06:01] aaronblohowiak: gibybo: where is your server located? [06:01] gibybo: http://node.gibybo.com:8080/statictest.js that's the code it's running [06:01] ChrisPartridge: hm, where has isaacs disappeared too [06:01] gibybo: it's in northern california and so am i [06:01] gibybo: I am running other servers on the same machine that respond in~50ms [06:02] aaronblohowiak: gibybo: what version of node? [06:02] gibybo: downloaded it from nodejs.org tonight [06:02] gibybo: about 2 hours ago [06:02] konobi: pquerna: i see that that version is always opening the file per-block... any way around that? [06:02] Marak: gibybo: maybe try the last stable branch? 0.4.7 i think? you should still be seeing better response times then that [06:03] Marak: gibybo: you test locally? maybe its the network? [06:03] gibybo: it is 0.4.7 [06:03] Marak: gibybo: im getting about 50ms here [06:03] Marak: gibybo: between 50-100ms [06:03] Marak: ( hitting your site ) [06:04] gibybo: http://node.gibybo.com:8081/test.esp same machine, but python server [06:04] gibybo: don't have a linux/os x machine locally :( [06:04] pyrotechnick has left the channel [06:05] hassox has joined the channel [06:05] gibybo: really 50-100ms on :8080? :( [06:05] Marak: gibybo: http://node.gibybo.com:8080/teststatic.html that one right? [06:05] gibybo: yea [06:05] Marak: gibybo: yeah, im seeing pretty consistent here [06:06] gibybo: what do you get on http://node.gibybo.com:8081/test.esp ? [06:06] aaronblohowiak: gibybo: both are showing as about 200 ms from palo alto on comcast over wireless [06:07] Marak: gibybo: between 60-110 on the .esp link [06:07] gibybo: :8081/test.esp shows pretty consistent 50ms, statictest.html shows a pretty consistent ~280ms for me in both FF and Chrome, from sunnyvale comcast, this is very strange [06:07] mikeal has joined the channel [06:07] ryah: ACTION has not seen the tftp eample before [06:08] ryah: very nice [06:08] ryah: funky style [06:08] pquerna: konobi: huh? [06:08] pquerna: oh [06:09] pquerna: konobi: you could make a cache of recently active files i guess [06:09] pquerna: konobi: but you don't know if your client will just go away [06:09] pquerna: (cache of open files, ttl on them or something) [06:09] aaronblohowiak: gibybo: etag [06:09] aaronblohowiak: you are probably getting the 304 [06:10] gibybo: no I'm shfit-refreshing every time and verifying 200 in the consoles [06:10] aaronblohowiak: gibybo: hmm, in firefox i see 68ms for teststatic [06:10] gibybo: i envy you [06:10] beriberikix_ has joined the channel [06:10] SamuraiJack has joined the channel [06:10] JackeyChan: what's means of this.for(''); ???? look strange [06:11] aaronblohowiak: gibybo: i dont unsderstand why you would have that behavior.. so weird! [06:11] aaronblohowiak: JackeyChan: you need to give us more context if you want to be helped [06:11] gibybo: yea me neither... [06:11] JackeyChan: ok. [06:11] gibybo: gonna try another comp from the same network [06:12] gibybo: oh and maybe from a phone tether too [06:12] aaronblohowiak: lol [06:12] aaronblohowiak: phone latency [06:12] JackeyChan: I am reading socket.io source and on the manage.js. function Manager(server) { [06:12] JackeyChan: var sockets = this.for(''); [06:12] JackeyChan: } [06:12] gibybo: yea but it's gotta be better than 250ms right!? [06:12] ChrisPartridge: gibybo: i'm gettin 200ms.. but im in AU [06:12] pquerna: ryah: the tftp example was at nodecamp :) [06:13] ryah: oh yeah [06:13] gibybo: well I have two servers running on the same machine (one on 8080, one on 8081) so I would expect similar latencies [06:13] gibybo: which you guys seem to be getting, but I get a 5x difference [06:13] gibybo: i tried switching the ports so I don't think comcast is doing something crazy like throttling 8080 :( [06:13] pquerna: like a decade ago in node.js time [06:13] tilgovi has joined the channel [06:14] gibybo: yea I get ~50ms from the node.js server when I hit it from another machine on my same home network [06:14] gibybo: wtf is wrong with my main machine :( [06:14] gibybo: why would it do this to me [06:14] pquerna: wifi? [06:14] ryah: v0.2 days [06:14] ryah: good times [06:15] gibybo: yea, but the wifi machine gets 50ms, and the one that is plugged in to the same router gets 280ms [06:15] lukstr has joined the channel [06:16] knirhs has joined the channel [06:17] aaronblohowiak: JackeyChan: ah, i don't know.. some of the socket.io source is... interesting. [06:17] dhasenan: EventEmitter is awesome. [06:17] dhasenan: That is all. [06:18] eikaas: agreed. [06:18] aaronblohowiak: dhasenan: there are also browser implementations [06:18] gibybo: oh well, at least we have shown it's only affecting my pc - thanks for the help :) [06:18] aaronblohowiak: gibybo: you on windows? [06:18] gibybo: yea [06:18] aaronblohowiak: gibybo: ah, try running it on a different port. [06:19] aaronblohowiak: gibybo: i bet you have some kind of antivirus whatever that intercepts your http traffic on 80 and 8080 [06:19] gibybo: I tried 8000 previously, same issue [06:19] gibybo: will try 8082 [06:19] aaronblohowiak: or try swapping the python and node ports [06:19] aaronblohowiak: that would be best yet [06:19] gibybo: also, i ran a python server on 8080 and it responded in 50ms [06:19] aaronblohowiak: =) [06:19] aaronblohowiak: oh weird [06:19] aaronblohowiak: well, i dunno =) i blame windows [06:20] gibybo: swapped now [06:20] gibybo: yea same thing, node still slow [06:20] gibybo: must be something with the http headers my desktop doesn't like? [06:21] Nican has joined the channel [06:22] konobi: pquerna: yeah, that's what i thought [06:22] kohai has joined the channel [06:22] kohai: Twitter Connection Successful! [06:22] Marak: kohai: introduce yourself please [06:22] Marak: wait a minute.... [06:22] Marak has left the channel [06:22] Marak has joined the channel [06:22] Marak: kohai: introduce yourself, im not @ anymore [06:22] konobi: pquerna: no blksize negotiation in your example either... not to worry, i think i have some code kicking about for that [06:22] Marak: bastard [06:23] aaronblohowiak: gibybo: oooh that is interesting [06:23] FireFly|n900 has joined the channel [06:23] hassox has joined the channel [06:23] aaronblohowiak: gibybo: X-Hello ? [06:23] aaronblohowiak: lol [06:24] gibybo: was part of the demo I copy/pasted :) [06:24] kohai has joined the channel [06:24] kohai: Twitter Connection Successful! [06:24] Marak: kohai: introduce yourself [06:24] Marak: he really hates this room, working fine in every other room, fucking odd [06:24] kohai: @NodeKohai: @maraksquires hello [06:25] kohai: @maraksquires: #nodejs is the best, this is a test. [06:25] gibybo: maybe nodejs sends the httprequest differently than my other server at a lower level? maybe more/less tcp packets for the same request, or differen't expirations/other weird tcp stuff? [06:25] aaronblohowiak: Marak: i had issues with capitalization with my npm alerts bot [06:26] kohai has joined the channel [06:26] kohai: Twitter Connection Successful! [06:26] mykul has joined the channel [06:26] aaronblohowiak: Marak: node.js is not the same room as Node.js, but it will automatically /join you when you try to join node.js.. but if you /msg node.js it will fail [06:26] kohai: @elmanu: @mraible node.js look a lot more like a server than [06:26] Marak: aaronblohowiak: i bet that is it, since its just one part not the tweeter feed [06:27] aaronblohowiak: Marak: what is kohai going to do? [06:27] Marak: i think the old annoucer provided a link to every tweet too via bitly [06:27] Marak: i should add that back [06:27] aaronblohowiak: Marak: it is too noisy [06:27] Marak: aaronblohowiak: stfu, i just patched that so it wasnt [06:28] aaronblohowiak: Marak: my irc bot that was announcing every npm release was too noisy [06:28] Marak: aaronblohowiak: no more RTs [06:28] aaronblohowiak: -v -v [06:28] Marak: if it gets too noisy again i'll add more ways to reduce it [06:28] ChrisPartridge: create nodejs-announce for bots.... [06:28] indutny has joined the channel [06:28] aaronblohowiak: ChrisPartridge++ [06:28] v8bot: aaronblohowiak has given a beer to ChrisPartridge. ChrisPartridge now has 1 beers. [06:28] gibybo: god, nodejs responds in 125ms on my 3G PHONE, twice as fast as my desktop :( [06:28] aaronblohowiak: gibybo: change the header! [06:29] aaronblohowiak: gibybo: also, fuck windows =) [06:29] kohai: @augustl: @baekholt how good is python at not blocking the entire process when doing I/O? That's what pains me most about.. anything not node.js :) [06:29] ChrisPartridge: Woah, who stole my other beers [06:29] gibybo: removed the x-hello header, same thing [06:29] gibybo: ya ya windows is lpenty fun to beat up on [06:31] Marak: okay, added issue to kohai for adding shortlinks to tweet announcments [06:32] Marak: ill open-source the project later this week after i write up some install docs [06:32] `3rdEden has joined the channel [06:34] JackeyChan has joined the channel [06:36] kohai: @NodeKohai: avianflu rocks! [06:36] aaronblohowiak: ChrisPartridge: whole new day [06:36] kohai: @NodeKohai: @aaronblohowiak Did you get that thing I sent you? [06:37] Marak: :-p [06:38] matjas has joined the channel [06:39] emattias has joined the channel [06:40] kohai: @LaFermeDuWeb: Comment mettre en place un serveur linux avec #NodeJS & #Nginx sur Amazon EC2: http://fdw.lu/aSJ #fdw #linux #amazonec2 #cloud [06:41] Nexxy: omg someone hilighted me [06:42] jacobolus has joined the channel [06:43] TomY has joined the channel [06:44] TomY has joined the channel [06:45] ivanfi has joined the channel [06:47] gavin_huang has joined the channel [06:48] barce: sup [06:49] kohai: @Benjamin_Ds: Mettre en place un serveur linux avec #NodeJS & #Nginx sur Amazon EC2: http://fdw.lu/aSJ #fdw #linux #amazonec2 #cloud /via @LaFermeDuWeb [06:50] jonaslund has joined the channel [06:50] kohai: @alley_oop: The Node Beginner Book » A comprehensive Node.js tutorial - http://t.co/Ys25etQ [06:51] kohai: @contactVibe: I can hax kohai? node.js \x0D\x0AMODE #node.js o Nexxy [06:51] Nexxy: damn [06:51] kohai: @contactVibe: I can hax kohai? node.js &0xd;&x0amoe #node.js o nexxy [06:51] Nexxy: lol twitter filter [06:52] akshat[remote]: http://t.co/Ys25etQhttp://t.co/Ys25etQYs25etQ [06:52] akshat[remote]: uhh, fail [06:52] kohai: @contactVibe: kohai haxin' node.js %0d%0amode #node.js o nexxy [06:52] Nexxy: ;< [06:53] Marak: Nexxy: i dont see how that can work, its just gonna translate everything as a straight string i hope [06:53] gibybo: socket.io is awesome for running websocket servers in nodejs, but what are my options if I want to run a websocket client in nodejs? [06:53] Nexxy: well IRC is crlf terminated [06:54] Marak: gibybo: use dnode [06:54] Nexxy: so if I could get the bot to actually interpret something as crlf [06:54] Nexxy: I could potentially sploit it into executing arbitrary IRC commands [06:54] Marak: gibybo: https://github.com/substack/dnode [06:54] gibybo: marak: thanks, reading now [06:54] Nexxy: I did it to a lisp bot not long ago [06:54] groom has joined the channel [06:54] Marak: Nexxy: ill give you 5 dollars if you do :-D just try not to spam this room too much, im already on notice [06:54] Marak: Nexxy: watch this [06:55] Nexxy: hehe yeah that's all I got atm [06:55] Marak: v8bot: var f = this; f = f.toString(); f; [06:55] v8bot: Marak: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [06:55] Marak: v8: var f = this; f = f.toString(); f; [06:55] v8bot: Marak: "[object global]" [06:55] Marak: v8: var f = this; f = f.arguments.callee; f = f.toString(); f; [06:55] v8bot: Marak: TypeError: Cannot read property 'callee' of undefined [06:55] Marak: v8: var f = null; f = arguments.callee; f = f.toString(); f; [06:55] v8bot: Marak: "function (code){\nvar res\ntry{res=eval(code)}\ncatch(e){return e.name+': '+e.message}\nif(console.out.length)return console.out.join('\n')\nreturn pp(res)\n}" [06:55] Marak: :-D [06:56] ExsysTech has joined the channel [06:56] kohai: @anwajler: Representing @CodeQuest on #FalsyValues together with @ograbek. I'm on #NodeJS workshop. Let the fun begin! [06:56] kohai: @ikanusim: basic @nodejs support in @scalarium looks good so far (still staging), now teaching node.js app servers to talk to mysql and other neighbors [06:56] Marak: v8: var f = null; f = arguments.callee; f.apply('var f = ''); f; [06:56] v8bot: Marak: SyntaxError: Unexpected token ILLEGAL [06:57] Marak: v8: var f = null; f = arguments.callee; f.apply('var f = ""'); f; [06:57] v8bot: Marak: function (code){ var res try{res… [06:57] Marak: o well [06:57] Nexxy: ;o [06:57] gibybo: aw you are going to give up so easily? [06:57] kohai: @Truckzoom8: Real time monitoring PHP applications with websockets and node.js ... http://bit.ly/irKrLr [06:57] EvanCarroll: is there anyway to set a variable in the target view accessable from layout.jade? [06:57] dabailey has joined the channel [06:57] kohai: @zielun: node.js workshop ahead at Falsy Values. Hope I learn something cool. [06:58] openbala has joined the channel [06:58] ExsysHost has joined the channel [06:59] kohai: @SearchSpy: node.js [06:59] zomgbie has joined the channel [07:00] kohai: @lharper71: spent today working on my first c++ addon for #nodejs... slow progress, as my c++ is pretty rusty! [07:00] kohai: @eliime: Come on let's run JSLinux on top of Node.js and then install V8 on it. #Inception [07:00] kohai: @contactVibe: kohai hax node.js \r\nmode #node.js o nexxy\r\n [07:00] Nexxy: ;< [07:00] Nexxy: ACTION gives up [07:00] Marak: Nexxy: i can just give you the source if you want [07:00] Nexxy: lol [07:00] Nexxy: ok! [07:00] Marak: okay, ill add you to the group [07:01] mAritz has joined the channel [07:02] kohai: @anwajler: #falsyvalues #nodejs workshop http://yfrog.com/hsjftnmj [07:02] Marak: Nexxy: https://github.com/emilyrose added to nodejitsu/kohai [07:02] Nexxy: ACTION hax [07:02] Marak: Nexxy: lots of open issues on project, lots of things in flux, feel free to poke around [07:02] Nexxy: oki ;3 [07:02] Nexxy: ty [07:02] Marak: i'd OSS it to everyone now, but i dont want people seeing a half finished project on our public repos [07:02] Marak: at least we should have working installation docs [07:02] Nexxy: I'm the same way [07:02] Nexxy: but I use private repos rather than github [07:03] kohai: @NodeKohai: @eliime #NODECEPTION [07:03] Nexxy: lol [07:05] kohai: @bergie: arrived to #falsyvalues. Two days worth of Node.js coming up [07:08] fangel has joined the channel [07:08] aaronblohowiak: how do i ignore Kohai ? [07:09] Nexxy: aaronblohowiak, usually it's /ignore kohai!*@* [07:09] Murugaratham has joined the channel [07:09] Nexxy: but your client may be different [07:09] kohai: @sebbie1o1: #nodejs workshop @ #falsyvalues started :) [07:09] aaronblohowiak: Nexxy: im using webchat.freenode.net [07:09] aaronblohowiak: darn [07:09] ChrisPartridge: ew, webchat [07:10] Nexxy: ya and freenode has no silence list (Server-side ignore) [07:10] Nexxy: so you're sol ;P [07:10] kohai: @anwajler: #falsyvalues #nodeJS Up and Running with Node.js http://ofps.oreilly.com/titles/9781449398583/ [07:10] ewdafa has joined the channel [07:11] tdegrunt has joined the channel [07:13] pietern has joined the channel [07:13] brownies has joined the channel [07:15] maru_cc has joined the channel [07:16] kohai: @anwajler: http://yfrog.com/h3azspj ServerSide JS is THAT cool #falsyvalues #nodejs [07:16] Xano has joined the channel [07:17] kohai: @tlrobinson: So who will be the first person to get Node.js running on jslinux running on Node.js? /cc @ryah [07:17] Nexxy: lol [07:19] aliem has joined the channel [07:19] mike5w3c has joined the channel [07:19] kohai: @NodeKohai: @tlrobinson I'm not sure, but I bet it will be as widely used as Narwhal. [07:20] Marak: kohai seems to like tlrobinson [07:20] Marak: ;-) [07:20] kohai: @anwajler: #falsyvalues #NodeJS No DOM #foreveralone [07:20] kohai: @jdub: @tlrobinson I've been working on it, but cross-compiling #nodejs is fucking annoying! (with buildroot for minimal environment) @ryah [07:21] truedat101 has joined the channel [07:21] pquerna: konobi: sure, go for it, I wrote it purely for demo purposes / show the basics of udp & binary stuff more than a real tftp server :) [07:21] killfill has joined the channel [07:21] tlrobinson: Marak: yup, you're still a dickhead [07:21] Marak: :-) [07:22] kohai: @dotmariusz: Hey guys @ #falsyvalues #nodejs workshop, here's something for you: Felix's Node.js Style Guide http://nodeguide.com/style.html ;) [07:22] ryah has joined the channel [07:22] chandra_ has joined the channel [07:22] djcoin has joined the channel [07:23] bergie has joined the channel [07:23] kohai: @schakko: Und genau die Idee hatte ich auch schon gehabt: http://bit.ly/mzAyJs #kickertisch #statistik #nodejs [07:23] bergie has joined the channel [07:24] `3rdEden has joined the channel [07:24] kohai: @funkstop: Duostack Blog: Duostack Launches Public Beta of Our Node.js and Ruby Platform - dstk: http://tumblr.com/xaw2kmyz23 [07:25] zomgbie has joined the channel [07:26] yozgrahame has joined the channel [07:27] kohai: @EamonLeonard: lol @tlrobinson: So who will be the first person to get Node.js running on jslinux running on Node.js? /cc @ryah [07:28] brettgoulder has joined the channel [07:30] kohai: @cwaring: "Digital Foosball" - an open source kit to connect your analog table to the web: http://j.mp/kGOYGu #NodeJS #CouchDB #HTML5 #CSS3 [07:30] kohai: @bkenny: @EamonLeonard @tlrobinson @ryah I was playing around with Node.JS yesterday. Looks really cool. [07:30] grabarz has joined the channel [07:31] Prism has joined the channel [07:32] Tobsn has joined the channel [07:32] [AD]Turbo has joined the channel [07:32] littke_ has joined the channel [07:33] tedeh has joined the channel [07:33] aaronblohowiak: kohai: SHUT UP [07:33] aaronblohowiak: :( [07:33] eee_mk has joined the channel [07:33] aaronblohowiak: Marak: see how it is flooding the channel ? [07:33] galaxywatcher has joined the channel [07:33] [AD]Turbo: hi there [07:33] aaronblohowiak: bedtime! [07:33] Marak: aaronblohowiak: its operating normally, if you dont like it block it or complain more [07:34] Marak: thats all thats gonna happen [07:34] aaronblohowiak: Marak: what is the value to participants in the room to see the twitter feed? [07:35] kohai: @demius: The Node Beginner Book » A comprehensive Node.js tutorial - http://goo.gl/iSTeW [07:35] Marak: !tweet @aaronblohowiak because people who are white listed can respond to support issues and problems in real-time [07:35] stepheneb has joined the channel [07:35] JackeyChan has joined the channel [07:35] Marak: aaronblohowiak: we use to have this going and it was awesome, maybe before your time [07:36] aaronblohowiak: Marak: that tweet hasnt come through [07:36] kohai: @html5guy: "Digital Foosball" - an open source kit to connect your analog table to the web: http://j.mp/kGOYGu #NodeJS #Cou... http://bit.ly/lxweF5 [07:36] aaronblohowiak: Marak: i was here when that was going, back around the first KnockOut [07:36] kohai: @simonenko: Всю ночь снился какой-то бред перемешанный с #nodejs -- не понравилось. [07:36] kohai: @NodeKohai: @aaronblohowiak because people who are white listed can respond to support issues and problems in real-time [07:36] chapel: !tweet Node.js Rules! [07:36] hellp has joined the channel [07:36] knirhs has joined the channel [07:36] chapel: Marak: you should make it translate like the old one [07:36] Marak: seems to not be picking up input from this room atm, issue with #Node.js versus #node.js [07:36] chapel: :) [07:36] Marak: chapel: there is a ticket for that [07:36] chapel: :) [07:37] Marak: chapel: it has the code too [07:37] chapel: well maybe if you gave me access, I could work on it :) [07:37] aaronblohowiak: lol [07:37] kohai: @zielun: Node.js free e-book - j.mp/krDBpb #falsyvalues [07:37] aaronblohowiak: npm alerts will be open-sourced by the end of the week, i hope [07:37] chapel: cool [07:37] awenkhh has joined the channel [07:37] tlrobinson: hmm is there any way to get Uint8Array in Node? [07:38] tlrobinson: (and friends) [07:38] chapel: aaronblohowiak: I want to get restartr up to snuff, its still really rough around the edges [07:38] aaronblohowiak: i monitored the _changes feed for a little over a day and now i have a 5 MB (!!!) examples.json to seed my mock [07:38] Marak: what happened to http://twitter.com/#!/nodemodules [07:38] aaronblohowiak: chapel: yes, if the SIGINT fails, then the new process will try to take over the used port and will fail [07:38] aaronblohowiak: Marak: i dunno, not my project [07:39] chapel: yeah aaronblohowiak, that and I would like to make it look better, as far as the cli [07:39] chapel: anyways, I will get to it, just have some contract work to deal with, and other stuff [07:39] aaronblohowiak: Marak: I am working on a way to get email digests about the projects you care about --- so you can get an email whenever express releases a new version [07:39] aaronblohowiak: chapel: bah, paying work!! [07:39] chapel: haha, I know, and I still have a full time job [07:39] aaronblohowiak: chapel: making rent is overrated [07:40] aaronblohowiak: speaking of which, i gotta get up in 6 hours for work =/ [07:40] chapel: fun [07:40] chapel: better take care of that [07:40] aaronblohowiak: yea. [07:40] aaronblohowiak: thanks. [07:40] chapel: no problem, any time [07:41] Druide_ has joined the channel [07:42] aaronblohowiak: chapel: i am thinking about adding a webserver to restartr so you can view a webpage and see the output and restart history. lols [07:42] aaronblohowiak: chapel: a nice little debug view [07:42] aaronblohowiak: ;) [07:42] TomY has joined the channel [07:42] kohai: @ThibaultPlet: Il va falloir que je me mette très sérieusement à #NodeJS pour voir ce que cela vaut ! A première vue, plusieurs projets à baser dessus ! [07:42] chapel: hmm, that could work [07:42] aaronblohowiak: :P [07:42] chapel: or maybe, it could just keep logs, and it can output them as html [07:43] ryanseddon has left the channel [07:43] aaronblohowiak: chapel: v1 [07:43] phluffy has joined the channel [07:43] `3rdEden: y u do that [07:43] chapel: I mean, atm restartr is for development [07:43] kohai: @newsery3: Render the Mandelbrot Set in the Joyent Cloud with Node.js - http://bit.ly/mkXmoc - [Hacker News FH] [07:43] chapel: not really meant for production [07:43] chapel: where logs like that would be nice [07:44] asdfsafdsa: anyone know what this error means? "Error: Cannot call method 'next' of undefined" [07:44] asdfsafdsa: from the express library [07:44] Marak: asdfsafdsa: you are trying to call a method called "next" on a variable which is undefined [07:44] Marak: you prob borked a middleware [07:45] Marak: next() sounds like the next step in a middleware chain [07:45] Marak: trace the line number its bombing on and go backwards from there [07:46] asdfsafdsa: Marak: I found exactly what's causing it in my code but I still can't figure out why it's wrong [07:46] uchuff has joined the channel [07:46] asdfsafdsa: it's happens after a call to res.render [07:47] kohai: @demius: Node.js Windows binaries http://t.co/ylMzIMv [07:47] zomgbie has joined the channel [07:49] jemeshsu_ has joined the channel [07:51] mscdex: Marak: we need English translations! [07:52] Marak: mscdex: its coming [07:53] beawesomeinstead has joined the channel [07:53] chapel: Marak: add me, I will hack it in! [07:53] chapel: :P [07:53] admc has joined the channel [07:53] msucan has joined the channel [07:53] planetic has joined the channel [07:54] chapel: speaking of hacking, I am hungry [07:55] kohai: @jessyfurren: Render the Mandelbrot Set in the Joyent Cloud with Node.js http://bit.ly/mcokz7 [07:55] tobiassjosten has joined the channel [07:56] kohai: @ThibaultPlet: "We want to be to Eclipse what Google Docs is to Microsoft Word" C'est joliment dit ! #Cloud9 #NodeJS [07:56] Marak: chapel: i added you, was hoping you were gonna try out that cluster thing tonight [07:56] Marak: chapel: the irc bot is really not critical at all [07:56] troessner has joined the channel [07:56] chapel: I will [07:56] planetic: hello how can I modify the html string with node version of jquery like that "html_string -> do_something_with_aim_of_jquery -> html_string"? I can't figure out how to transform jquery object back to string [07:57] chapel: just saying, when I have free time, ie not right this moment, I want to hack on the irc bot :) [07:58] grabarz has joined the channel [07:58] kohai: @licoresse: Resten av denne måneden foregår i MacVim og Python, jeg som var så godt i gang med Node.js :-/ [08:00] kohai: @FGRibreau: restify - Easily create #nodejs web service APIs http://bit.ly/mQB2yf [08:01] mobius has joined the channel [08:03] kohai: @stevesandersonf: Render the Mandelbrot Set in the Joyent Cloud with Node.js http://goo.gl/fb/FpQTM [08:05] kohai: @anwajler: #nodejs #falsyvalues user-agent can be accessed under: req.headers['user-agent'] [08:05] aliem has joined the channel [08:05] kohai: @hutchike: Writing web apps just became fun again! https://github.com/mauricemach/zappa/ #zappa #nodejs (#sinatra clones anyone?) [08:07] mobius-: os what is the best framework to get multicore on node.js? cluster node-worker or webworkers? [08:07] aliem has joined the channel [08:07] mobius-: s/os/so [08:07] yokoaway has joined the channel [08:07] planetic: How to get string representation of DOM node in jsdom? [08:08] mjr_: mobius-: cluster seems pretty good. [08:09] kohai: @kewah: Web console with node.js http://ow.ly/4X7fl #nodejs [08:09] mobius-: mjr_, i am reading the api now, and I am pretty impressed on the implementation they have, but I've read that ryan mentions on his talks, node-worker and webworker [08:09] mobius-: mjr_, and it has got me wondering :) [08:09] mjr_: cluster is pretty new [08:10] aliem has joined the channel [08:10] zentooo has joined the channel [08:10] zentoooo has joined the channel [08:11] Esteb has joined the channel [08:12] mobius-: mjr_, I am gonna give it a go :) [08:12] mobius-: thanks [08:13] kohai: @skitsanostv: node.js presentation on #openhackeu by Reid Burke http://fb.me/QfvGj1Iu [08:13] jonaslund: Eh.. is the #node.js channel mirrored to twitter ? [08:14] kohai: @aassouad: setup a #nodejs server on #amazon #EC2 : http://bit.ly/l2998h #tutorial [08:15] Sami_ZzZ has joined the channel [08:15] FireFly|n900 has joined the channel [08:16] gibybo: hmm, but I would have to trust a foreign disk image? [08:16] seivan has joined the channel [08:18] liquidproof has joined the channel [08:19] ryah has joined the channel [08:20] shiawuen has joined the channel [08:20] emattias_ has joined the channel [08:20] planetic: How to get string representation of DOM node in jsdom? [08:20] Marak: planetic: same way you do in the dom? [08:21] Sami_ZzZ has joined the channel [08:22] planetic: Marak: want to apply some jquery transformations to already rendered html template and return send result to client [08:22] clee has joined the channel [08:22] seivan has joined the channel [08:22] Marak: planetic: if its a dom element, wouldnt you want to pass that to jquery instead of a string representations of the dom HTML fragment? [08:22] hassox has joined the channel [08:23] Marak: either way, you should be able to pass a dom element or an HTML string fragment into $() [08:23] Marak: right? [08:24] frega has joined the channel [08:24] planetic: Right, but I want to do it on server and send client rendered html string. [08:24] Marak: ok, so? [08:25] Marak: jquery should work the same on both ends [08:25] Marak: you should be able to use jquery server-side to manipulate some html fragments [08:26] planetic: rendertemplate = string => $(redered-template).transform() =?=> string [08:26] Marak: planetic: wtf is .transform() ? [08:26] planetic: $('
').append($myObject.clone()).remove().html() <= this trick doesn't work [08:27] JackeyChan has joined the channel [08:27] Marak: its been a while, you should be able to do something like... [08:27] planetic: Marak: It was just for example [08:27] Marak: $('
asdasd
').html() [08:27] Sami_ZzZ has joined the channel [08:27] planetic: Ok, I will try again [08:28] Marak: maybe not [08:28] Marak: theres an easy way to do it, i cant remember [08:28] Marak: time for sleep [08:28] temp01 has joined the channel [08:31] emattias has joined the channel [08:33] q_no has joined the channel [08:34] jonathantaylor has joined the channel [08:35] uchuff has joined the channel [08:36] datchap has joined the channel [08:36] viz has joined the channel [08:38] mehlah has joined the channel [08:38] eikaas_ has joined the channel [08:39] jesusabdullah: How hard is ec2 to work with? [08:40] mjr_: ec2 is pretty easy to work with [08:40] mjr_: Unless you want to figure out why it is randomly slow [08:40] mjr_: Then it is unworkably complicated. [08:43] MattJ has joined the channel [08:45] jesusabdullah: hah! [08:45] ewdafa has joined the channel [08:45] jesusabdullah: I'm kinda rolling around the idea in my head of using EBS to archive personal files [08:46] jesusabdullah: I don't think I'll end up doing it, but I kinda have a related idea there for a side project [08:46] jesusabdullah: but I'd want it to be a weekend thing, y'know? [08:48] gibybo: dropbox? ^^ [08:48] jesusabdullah: More or less ;) [08:48] jesusabdullah: But kind of a toy dropbox [08:50] mjr_: I like S3 for a toy dropbox [08:50] eldios has joined the channel [08:50] pen has joined the channel [08:51] `3rdEden: I use CouchDB as toy dropbox [08:51] `3rdEden: Supports binary, versioning, you can replicate accross different devices and servers [08:52] mjr_: CouchDB is a lot of fun. [08:52] `3rdEden: basically everything dropbox does, is supported in CouchDB :) [08:52] gibybo: but then you have to worry about setting up the hardware too [08:53] `3rdEden: Why? [08:53] `3rdEden: Why do you have to worry about it [08:53] `3rdEden: CouchDB `just works` [08:53] gibybo: well with S3 it's just a web service [08:53] gibybo: with couchdb you have to run your own servers [08:53] christophsturm has joined the channel [08:53] gibybo: or find someone to do it for you [08:54] `3rdEden: you can run couchdb on EC2 [08:54] mjr_: Or a cheapo VPS [08:54] `3rdEden: so there is no difference in that [08:54] davidbanham has joined the channel [08:54] `3rdEden: or even free from couchdb iris [08:54] gibybo: yes, setting up couchdb on EC2 with replication is about 10x harder than setting up S3 [08:55] mjr_: Do they have limits on iris yet? [08:55] `3rdEden: Have you ever used couchdb? [08:55] gibybo: or so I am guestimating, I haven't actually done iether [08:55] garrensmith has joined the channel [08:55] `3rdEden: mjr_ I don't think they do [08:56] mjr_: yeah, so, free bits. [08:56] johnnywengluu: do we have soda/selenium/saucelabs users here? [08:57] garrensmith: I use soda and selenium but not saucelabs [08:58] AntelopeSalad: i don't use iriscouch in production but for just messing around it's been really nice so far [09:00] johnnywengluu: garrensmith: soda doesn't work with selenium 2.0? [09:00] garrensmith: johnnywengluu: I'm using selenium-server-standalone-2.0b2 works fine with soda [09:02] johnnywengluu: garrensmith: "The examples provided in ./examples are intended to be run against Selenium RC, which can be downloaded here. Once installed simply execute the following command to start the selenium server:" [09:02] johnnywengluu: Selenium RC is Selenium 1 right? [09:02] johnnywengluu: or does Soda work now for 2.0 but they haven't updated the doc [09:03] garrensmith: johnnywengluu: no I dont think tho. I think RC is the new way selenium is packaged [09:03] johnnywengluu: hmm .. [09:03] johnnywengluu: 2.0 has no RC said someone [09:03] johnnywengluu: maybe im wrong .. i'll read up on it [09:05] jakeg has joined the channel [09:06] ditesh|cassini has joined the channel [09:07] fayce has joined the channel [09:07] bzinger has joined the channel [09:07] viz: i'm a bit confused regarding #urls and google bots. should i have a headless solution such as 'zombie' that serves those pages to bots or what? [09:08] jakeg: hi all. we're developing a web app in node and using npm to install modules, such as nowjs. our app is also in our own git repo. i.e. one of us will 'npm install now' then git add/commit now and it's dependencies into our own repo. is this generally not the recommended way to use npm? [09:08] bzinger has joined the channel [09:08] hellp has joined the channel [09:08] viz: i also read in google's ajax docs that it should be !# instead of the typical # (backbone routes for example) [09:09] jakeg: ... because it was working fine until installing now which as node-proxy as a requirement, and that is compiled with c on install rather than just being a js file [09:09] zomgbie has joined the channel [09:11] dies_el has joined the channel [09:12] ukev has joined the channel [09:13] quackslike has joined the channel [09:13] JackeyChan has joined the channel [09:14] Garo_ has joined the channel [09:14] roidrage has joined the channel [09:15] markwubben has joined the channel [09:18] Garo_: I'm using the Cluster package to spawn http workers. Is it somehow possible to stop accepting new connections inside a worker without disrupting the currently open connections? [09:22] shiawuen has joined the channel [09:23] jakeg: would my answer be to "npm install node-proxy -g" and ensure /usr/local/lib/node_modules is in the NODE_PATH ? [09:24] yokoaway has joined the channel [09:24] Wizek has joined the channel [09:24] FireFly|n900 has joined the channel [09:25] zentoooo has joined the channel [09:25] yokoe has joined the channel [09:26] Wizek: hi [09:26] `3rdEden: jakeg export NODE_PATH=$(npm root -g) [09:27] `3rdEden: maybe that will help :) [09:27] jakeg: is that what you do? [09:27] `3rdEden: its what I use to install ALLL npm module globally by default [09:28] `3rdEden: (combined with `npm config set global true` ) [09:29] jakeg: generally i install everything locally, but with node-proxy because it is compiled for the system it's installed on, if another of our developers pulls our git repo it won't work [09:29] jakeg: i see no reason to install lots of other modules we use globally, just this one (and e.g. node-dev) due to the compile thing [09:29] Wizek: Is it normal that Node won't update a file's timestamp when it writes to a file? Is it because of the async nature of writing? But can that happen for several secons as well? [09:31] Booster2ooo: Hi [09:31] thalll has joined the channel [09:32] Booster2ooo: Does anybody can point me a good IRC client lib for nodejs ? I saw the gf3 one but I can't npm install it, it's bugged [09:32] aliem has joined the channel [09:32] `3rdEden: npm install irc? [09:33] jacter has joined the channel [09:35] Booster2ooo: `3rdEden > I'm gonna try, where can I find the doc for this lib? [09:36] lorinc has joined the channel [09:36] `3rdEden: https://github.com/martynsmith/node-irc [09:36] Booster2ooo: Thank you very much, gonna check that out [09:39] rchavik has joined the channel [09:39] jesusabdullah: That's an awesome lib btw [09:39] jesusabdullah: It's by far the most quality irc lib for node.js [09:39] Booster2ooo: Ok cool :) [09:39] jesusabdullah: Also just got updated recently :) [09:40] Booster2ooo: Yes, I saw that, it's great :) [09:40] sherod has joined the channel [09:40] Booster2ooo: and it's seem easy to use [09:42] __tosh has joined the channel [09:48] mikedeboer has joined the channel [09:48] jesusabdullah: Yeah [09:48] jesusabdullah: It helps that it's in node. IRC bots and event loops go together like peanut butter and jelly. [09:50] SeyZ has joined the channel [09:50] liquidproof has joined the channel [09:52] mobius-: say you have an array that you want to process on a child worker process. does it make sense to emit on each array element and have a callback do the processing or process each one in during the iteration? [09:53] aliem has joined the channel [09:53] mobius-: (sorry I'am learning node.js :) [09:54] Votaguz has joined the channel [09:55] leeeb has joined the channel [09:55] emattias has joined the channel [09:56] jesusabdullah: I'm not sure what you mean. [09:56] jesusabdullah: I'm cool with helping of course, I'm just confused it all [09:56] jesusabdullah: It could be because I'm really tired. I just kicked ass at work today. [09:57] wica_ has joined the channel [09:57] wica_: Hello [09:58] wica has joined the channel [09:58] jesusabdullah: Sup dawg [09:58] wica_ has left the channel [09:58] jesusabdullah: mobius-: What did you mean by processing an array on a child worker process? [09:59] wica: Hi, I'm trying to install node.js from git on a ubuntu 11.04. But get the following error "node/deps/v8/src/conversions-inl.h:32:77: fatal error: float.h: No such file or directory" [09:59] jesusabdullah: I guess "process" makes me think, like, spawning another program with arguments or something, y'know, like, spawn('grep', ...) that kinda thing [09:59] jesusabdullah: hmmm [10:00] jesusabdullah: wica: I suck at this kinda thing, but, umm, here goes: [10:00] jesusabdullah: Did running ./configure say everything was a go? [10:00] jesusabdullah: Oh, wait [10:00] jesusabdullah: actually [10:00] jesusabdullah: wica: [10:00] jesusabdullah: wica: read the topic. [10:00] wica: Ahh [10:00] jesusabdullah: :) [10:01] wica: sorry [10:01] jesusabdullah: Hey, it's all good [10:01] jesusabdullah: Normally installing from git is a good idea [10:01] wica: jesusabdullah: And yes, configure says that everything is ok [10:02] wica: Will try to night to install it. looks like a cool project [10:04] aliem has joined the channel [10:04] monteslu has joined the channel [10:04] jesusabdullah: Yeah, it's pretty fun wica [10:05] wica: Willit also be posible to create a javascript unix shell. I think so [10:05] wica: jsh instead of bash :) [10:06] monteslu: funny, i just did a shell script in node :) [10:06] wica: monteslu: W00t :) [10:06] monteslu: just have to add #!/usr/local/bin/node to the top of the file [10:06] monteslu: and make the js file executeable [10:06] monteslu: makes me think all unixes should come with node installed [10:07] monteslu: no reason to have to mess with bash or korn or whatever for scripting [10:07] wica: :) [10:07] wica: It would indeed easy, to use a few languages instead of, php,javascript, bash, ksh ..... [10:08] saschagehlich has joined the channel [10:08] jeremyselier has joined the channel [10:08] monteslu: 5 years ago, I would have never guessed that javascript would take over every tier of applications [10:09] christophsturm has joined the channel [10:11] fayce has joined the channel [10:13] SamuraiJack_ has joined the channel [10:14] wica: monteslu: :) [10:16] Charuru has joined the channel [10:16] aliem has joined the channel [10:17] saschagehlich has joined the channel [10:18] saschagehlich has joined the channel [10:19] thalll has joined the channel [10:20] mobius-: jesusabdullah: you have a worker process (cluster/webworkers/node-workers etc) that processes an array. and each element of the array needs to be inserted after some processing into a database [10:21] mobius-: what should be the fastest (nonblocking) way of doing so? [10:21] zomgbie has joined the channel [10:21] cognominal has joined the channel [10:21] SamuraiJack_ has joined the channel [10:23] indutny1 has joined the channel [10:24] jesusabdullah: mobius-: I would worry less about the fastest way and more about the way that makes the most sense in your head [10:24] jesusabdullah: If, later, you find it's a bottleneck, you can try to rewrite it [10:25] jesusabdullah: I think a lot of it depends on what sort of system you're using to delegate jobs [10:25] ChrisPartridge has joined the channel [10:26] jesusabdullah: fwiw, it sounds like iterating through your array and passing each element to a callback is a reasonable thing to do [10:26] sherod has joined the channel [10:27] dyer has joined the channel [10:29] mobius-: jesusabdullah, thats what i've though also. it makes sense. [10:32] jesusabdullah: The only caveat I can think of is that if you had thousands of elements [10:32] jesusabdullah: that would mean thousands of processes [10:32] jesusabdullah: In that case it may be better to make a pool or something [10:32] jesusabdullah: unless by "processes" you just mean "things that node is thinking about at the moment" in which case you don't even really need to think about that kinda thing [10:35] tobiassjosten has joined the channel [10:38] aliem has joined the channel [10:39] JackeyChan has joined the channel [10:40] Prismattic has joined the channel [10:41] Prismattic has joined the channel [10:44] mobius-: jesusabdullah, I am thinking something like as-many-as-cpu's processes each one handling n requests with each request containing x array elements [10:44] m64253 has joined the channel [10:45] mobius-: where 1 < x < 50 [10:45] mobius-: something along these lines [10:46] temp02 has joined the channel [10:48] bryanrieger has joined the channel [10:53] littke_ has joined the channel [10:54] wica: http://bellard.org/jslinux/ lol, linux in je browser [10:55] jet18 has joined the channel [10:55] wica: Ops, wrong window :) [10:57] aliem has joined the channel [10:57] davidvanleeuwen has joined the channel [10:57] eldios: REPOOOOOOOOOOST! [10:57] eldios: :P [10:58] jesusabdullah: mobius-: Yeah, sure, that sounds reasonable. [10:58] jesusabdullah: LOL REPOST [10:58] jesusabdullah: Also, tl [10:58] jesusabdullah: er [10:59] jesusabdullah: tl;dr [11:01] towski has joined the channel [11:02] dgathright has joined the channel [11:05] herbySk has joined the channel [11:08] tedeh: tl;dr [11:11] emattias has joined the channel [11:12] avalanche123 has joined the channel [11:15] ardcore has joined the channel [11:15] ardcore has left the channel [11:16] eb4890 has joined the channel [11:17] demastrie has joined the channel [11:17] demastrie has left the channel [11:18] zitchie has joined the channel [11:19] jet18: I'm using node to run a query on MySQL every second and running a gttp.get on a url that is returned. Is there a better way than querying the database every second? [11:21] RushPL has joined the channel [11:22] tiagoa has joined the channel [11:22] aliem has joined the channel [11:23] sonnym1 has joined the channel [11:24] chris6F has joined the channel [11:24] chris6F: hey [11:24] RushPL has joined the channel [11:25] incon: chris6F: hey [11:25] poincare101 has joined the channel [11:26] bryanrieger has left the channel [11:26] zasd has joined the channel [11:30] FireFly has joined the channel [11:30] FireFly|n900 has joined the channel [11:31] temp01 has joined the channel [11:35] greg__ has joined the channel [11:39] aheckmann has joined the channel [11:40] ngs has joined the channel [11:40] udp has joined the channel [11:40] udp has joined the channel [11:40] unomi has joined the channel [11:41] ChrisPartridge has joined the channel [11:45] roidrage has joined the channel [11:51] neoesque has joined the channel [11:52] okuryu has joined the channel [11:52] demastrie has joined the channel [11:54] johnnywengluu: can someone login to twitter.com [11:54] johnnywengluu: i get internal server error [11:54] Xano has joined the channel [11:54] Lorentz: Works fine here [11:55] johnnywengluu: weird [11:55] johnnywengluu: must be selenium fucking it up [11:56] demastrie has left the channel [11:57] tiemonster has joined the channel [11:58] kmwallio has joined the channel [11:58] __tosh has joined the channel [11:58] mike5w3c has joined the channel [11:59] Lorentz: Or someone's sitting between you and twitter and trying to be like twitter but their server screwed up [11:59] Lorentz: [12:00] dyer has joined the channel [12:01] jarek has joined the channel [12:02] Prism has joined the channel [12:02] jarek has joined the channel [12:03] a|i has joined the channel [12:09] viz: i'd like to create a drag-and-drop multi file upload with node-formidable. are there any existing examples? i'm having a hard time wiring up the widget's ajax with node-formidable. [12:09] saschagehlich has joined the channel [12:10] materialdesigner has joined the channel [12:13] skeevis has joined the channel [12:17] maru_cc has joined the channel [12:18] tdegrunt has joined the channel [12:19] foobanooba has joined the channel [12:19] Torkn2U has joined the channel [12:20] foobanooba: hi all [12:21] chjj: my selector engine that i wrote in a night is faster than sizzle, ...clientside javascripters got nothin on us serverside guys [12:22] adnam: var mySelectorEngine = document.getElementById.bind(document) [12:23] chjj: sounds like a mess of ids [12:23] chjj: ! [12:23] adnam: T_T [12:23] foobanooba: I made a kind of .. colaborative spirograph i guess .. : http://nodepen.nodester.com/ not to original but quite fun [12:24] chjj: i love my bias against clientside js coders [12:24] chjj: or i should say, clientside-only [12:25] adnam: chjj: if someone has that as their job title then yes i would have my preconceptions as well [12:26] adnam: when we looked for front end devs we looked for "programmers" not "front end devs" [12:26] chjj: sometimes they travel in disguise! [12:26] adnam: sometimes they charge $200/h and barely finished high-school >:| [12:27] nerdfunk: baby got back ? :) [12:27] chjj: v8: 'baby got blink'.blink() [12:27] v8bot: chjj: "baby got blink" [12:27] nerdfunk: shouldnt that be [12:27] adnam: haha, i forgot about those string methods [12:27] chjj: v8: 'baby got blink'.blink().toUpperCase() [12:27] v8bot: chjj: "BABY GOT BLINK" [12:28] nerdfunk: i like all caps and i cannot lie [12:28] adnam: v8: 'bold' in String.prototoype [12:28] v8bot: adnam: TypeError: Cannot use 'in' operator to search for 'bold' in undefined [12:28] adnam: v8: 'bold' in String.prototype [12:28] v8bot: adnam: true [12:28] Lorentz: v8: 'baby got blink'.blink().blink().blink() [12:28] v8bot: Lorentz: "baby got blink" [12:28] bentruyman has joined the channel [12:28] chjj: be templating engine^ [12:28] chjj: best* [12:28] adnam: i remember those were the first lines of js i wrote [12:28] jetienne has joined the channel [12:29] VovaZaycev has joined the channel [12:29] nerdfunk: not alert("YOU HAVE A VIRUS"); [12:29] nerdfunk: ? [12:29] tokumine has joined the channel [12:29] chjj: i forgot about those methods until i was reading the v8 source [12:29] nerdfunk: alert("CLICK OK TO DELETE HARD DISK"); [12:29] chjj: and i see blink [12:30] chjj: i heard there was an async alert proposed! [12:30] chjj: you give a callback, it rules! [12:30] fumanchu182 has joined the channel [12:30] davidbanham has joined the channel [12:30] nerdfunk: hrm [12:30] nerdfunk: to use for .. ? [12:30] chjj: it spits in the face of like 16 years of blocking tradition with alert though [12:31] chjj: alert normally blocks everything [12:31] nerdfunk: yes [12:31] chjj: i dont understand the question [12:31] nerdfunk: just wondering out loud [12:32] Twelve-60` has joined the channel [12:33] chjj: i wanna do this: (function _alert() { alert('hello', _alert); })(); [12:34] mc_greeny has joined the channel [12:34] Xano has joined the channel [12:36] alex_b has joined the channel [12:36] jamey-uk has joined the channel [12:37] jamey-uk: I'm trying to install a module globally using "npm -g install", it installs but then my script doesn't know where to find that module. Do I have to set a global PATH for node modules? I'm on Linux [12:37] Mrfloyd has joined the channel [12:39] bshumate has joined the channel [12:39] bshumate has joined the channel [12:40] ezl has joined the channel [12:41] bryanrieger has joined the channel [12:43] no-gooder has joined the channel [12:44] benmonty has joined the channel [12:44] sambao21 has joined the channel [12:45] meetar has joined the channel [12:46] L_star has joined the channel [12:47] eldios has joined the channel [12:47] christophsturm has joined the channel [12:51] mahna has joined the channel [12:51] asabil has joined the channel [12:51] kmiyashiro has joined the channel [12:53] __tosh has joined the channel [12:54] maru_cc has joined the channel [12:56] broofa has joined the channel [12:57] jonasen has joined the channel [12:59] monokrome has joined the channel [12:59] monokrome: Hey. [12:59] monokrome: Does anyone here know good libraries for audio analysis in NodeJS? or maybe libraries for fourier transforms and the like? [13:00] fayce has joined the channel [13:00] AaronMT has joined the channel [13:00] kriszyp has joined the channel [13:02] mscdex has joined the channel [13:02] mlangenberg has joined the channel [13:02] galaxywatcher has joined the channel [13:03] emattias_ has joined the channel [13:03] mscdex has joined the channel [13:04] mlangenberg: I did a git checkout of tag v0.4.7, compiled and installed it. When I run node -v, the reported version is 0.1.17. Weird, right? [13:04] mscdex: mlangenberg: run `make distclean` first [13:04] mscdex: then build [13:05] mlangenberg: okay, let's try. [13:06] ngs has joined the channel [13:06] davidbanham has joined the channel [13:07] jlecker has joined the channel [13:07] emattias has joined the channel [13:08] mahna: Any idea why the debugger would start breaking on the first line of a script when no breakpoint ("debugger" statement) is set? [13:08] mahna: Even a simple test script is exhibiting this behavior now (not supposed to, right?). [13:09] mlangenberg: mscdex: wonderful! ty [13:09] garrensmith has joined the channel [13:10] mahna: Also, "info breakpoints" isn't giving me the structure described here: http://code.google.com/p/v8/wiki/DebuggerProtocol [13:10] Bj_o_rn has joined the channel [13:10] mahna: Instead, "breakpoints" just returns "[Object]". [13:11] thomblake has joined the channel [13:11] fermion has joined the channel [13:11] eikaas_ has joined the channel [13:12] ditesh|cassini has joined the channel [13:13] alcuadrado has joined the channel [13:13] mahna: So when I run a "hello world" in the debugger it stops on "breakpoint #1" and line 1 of the script--a simple require statement. [13:13] cce has joined the channel [13:13] cce has joined the channel [13:13] mahna: ...but I have no breakpoints set. [13:14] davidsklar has joined the channel [13:14] Miljar has joined the channel [13:14] sonnym1 has joined the channel [13:15] andi5 has joined the channel [13:15] avalanche123 has joined the channel [13:16] alcuadrado: anyone can give me a hand with the mongo native driver? The docs in github are outdated :( [13:16] catshirt has joined the channel [13:16] mahna: Output is: http://pastie.org/1921604 [13:17] galaxywatcher_ has joined the channel [13:20] arpegius has joined the channel [13:20] adambeynon has joined the channel [13:21] devdazed has joined the channel [13:21] jaket has joined the channel [13:21] weepy has joined the channel [13:22] weepy: hi - does anyone here know how to do an asynchronous callback style with a Websocket ? (Socket.IO) [13:23] jetienne: weepy: socket.io is already like that.. i dont get it. can you rephrase [13:23] weepy: jetienne - ok so i have an object i want to add [13:24] jscheel has joined the channel [13:24] jscheel has joined the channel [13:24] weepy: jetienne - I want to send - and receive back an id for the object [13:24] weepy: but as far as i can see - it looks like the API is fire and forget [13:24] jetienne: weepy: why not use closure to store it ? [13:25] weepy: jetienne - can you point me to an example ? [13:25] brolin has joined the channel [13:25] brettgoulder has joined the channel [13:26] jetienne: weepy: not sure what you want exactly [13:27] jetienne: weepy: https://github.com/LearnBoost/Socket.IO-node/blob/master/example/server.js#L47 this has a closure on buffer... [13:27] Poetro has joined the channel [13:28] unomi has joined the channel [13:28] weepy: if it was just a simple ajax call, i could send an object, process some result on the server, send it to the client and the result would be captured by a callback, where I could take the result and process it appropriately [13:29] mahna: Or more generally, how is "info breakpoints" (listbreakpoints) intended to be used? What I'm getting (as in the output above) is an [Object] instead of the structure described in the docs at: http://code.google.com/p/v8/wiki/DebuggerProtocol [13:29] weepy: jetienne - ill make a gist [13:29] jetienne: weepy: ok [13:31] Twelve-60 has joined the channel [13:31] ewdafa has joined the channel [13:32] weepy: jetienne: https://gist.github.com/978566 [13:33] eldios has joined the channel [13:34] jetienne: weepy: hmm i see a jquery ajax, and an express... where is the websocket in all that ? [13:35] taf2: has anyone done any work on a higher level express? like a express on rails :) [13:35] taf2: ACTION ducks [13:35] weepy: jetienne - thats the pattern i have now [13:35] jetienne: weepy: im lost :( [13:35] weepy: taf2 - there's something called railway [13:35] weepy: jetienne - i have this code now [13:35] taf2: is it built on express? [13:35] taf2: ACTION likes express [13:35] seivan has joined the channel [13:35] weepy: jetienne - i want to convert this to use websockets [13:36] weepy: rather than ajax [13:36] taf2: ah this is nice [13:36] mahna: taf2: Not sure how you'd categorize it, but check out Grasshopper: https://github.com/tuxychandru/grasshopper [13:37] Guest75743 has joined the channel [13:37] springify has joined the channel [13:38] taf2: neat [13:43] robhawkes has joined the channel [13:43] SoreGums has joined the channel [13:43] jacter has joined the channel [13:44] cbibler has joined the channel [13:45] Silly_Wabbit has joined the channel [13:45] ezl has joined the channel [13:47] timmywil has joined the channel [13:48] galaxywatcher has joined the channel [13:51] Maximosis has joined the channel [13:51] ceej has joined the channel [13:52] dnolen has joined the channel [13:53] azeroth___ has joined the channel [13:55] chjj: trying to debug code in ie is just fumbling around in the dark [13:55] chjj: ugh [13:55] _tfc has joined the channel [13:59] d0k has joined the channel [14:00] emattias_ has joined the channel [14:00] kmiyashiro: just say no [14:00] jacobolus has joined the channel [14:01] aconbere has joined the channel [14:02] jakehow has joined the channel [14:02] patcoll has joined the channel [14:02] ardcore has joined the channel [14:03] ardcore has left the channel [14:03] rfay has joined the channel [14:03] timmywil has joined the channel [14:03] mikedeboer has joined the channel [14:04] bentruyman has joined the channel [14:05] strmpnk has joined the channel [14:05] springmeyer has joined the channel [14:05] V1 has joined the channel [14:05] slaskis: anyone tried to use npm 1.0 on no.de? [14:07] galaxywatcher has joined the channel [14:07] nibblebot has joined the channel [14:07] stonebranch has joined the channel [14:07] chjj: so apparently IE cant Array.prototype.slice.call on a NodeList [14:08] chjj: so i wrote a "toArray" function [14:08] chjj: this is what i get: "Internet Explorer has closed this webpage to help protect your computer" [14:08] nibblebot has joined the channel [14:08] chjj: ... [14:08] adnam: :-D [14:08] chjj: what the hell [14:08] chjj: why cant it slice a nodelist [14:08] chjj: this is terribad [14:08] adnam: because nodelists are read only [14:08] philhawksworth has joined the channel [14:08] philhawksworth has left the channel [14:09] chjj: slice doesnt mutate anything though [14:09] adnam: you need to iterate [14:09] chjj: it merely creates an array [14:09] chjj: even on arrays, it doesnt mutate the original array [14:09] chjj: it creates a new one [14:09] adnam: right, but somehow it tries to write something that is readonly anyways [14:09] jtsnow has joined the channel [14:09] emattias has joined the channel [14:09] saschagehlich has joined the channel [14:09] chjj: well, now im iterating over it and trying to create an array out of it [14:09] chjj: and IE crashes [14:09] chjj: LOL [14:10] chjj: failure of a terrible browser written by terrible people who suck [14:10] adnam: are you on ie/mac or something T_T [14:10] chjj: no [14:10] alcuadrado: which ie chjj ? [14:10] chjj: ie8 [14:11] Venom_X has joined the channel [14:12] yhahn has joined the channel [14:13] alcuadrado: how are you creating the nodelist? [14:13] eyesUnclouded has joined the channel [14:13] chjj: document.querySelectorAll [14:13] jaket has joined the channel [14:13] chjj: if a do a for...in it crashes [14:13] chjj: amazing [14:13] chjj: i* [14:14] devdazed: hi all when, using require('url').parse(myUrl), when will hostname ever be different than host? [14:15] ralphholzmann has joined the channel [14:15] fakewaffle has joined the channel [14:15] bentruyman_ has joined the channel [14:15] chjj: at least a regular for loop works [14:16] trcarden has joined the channel [14:16] jaket has joined the channel [14:18] c4milo has joined the channel [14:18] tosh has joined the channel [14:19] Corren has joined the channel [14:19] aliem has joined the channel [14:20] catshirt has joined the channel [14:20] sourcode has joined the channel [14:21] yhahn has left the channel [14:21] Squeese has joined the channel [14:21] dcampano has joined the channel [14:21] garrensmith has joined the channel [14:21] jaket: Irssi 0.8.15 (20100403) - http://irssi.org/ [14:22] colinclark has joined the channel [14:23] pen has joined the channel [14:24] Aria has joined the channel [14:24] Kingdutch has joined the channel [14:25] pifantastic has joined the channel [14:25] jamey-uk has left the channel [14:26] alex_b has joined the channel [14:26] tedeh: Grant me the strength work work with SOAP [14:26] tedeh: ... to work [14:26] SubStack: soap a dope dope [14:27] mertonium has joined the channel [14:27] indutny has joined the channel [14:29] jaket: rub a dub dub [14:31] russbuelt has joined the channel [14:32] eldios: launch a launch launch [14:32] mynyml has joined the channel [14:33] paul___ has joined the channel [14:33] yhahn has joined the channel [14:33] tedeh: amusing [14:34] paul___: does anybody know sth about issues when compiling on windows with mingw? [14:35] bronson has joined the channel [14:36] paul___: when i try to configure, it doesn't find dl, util, rt, pthread and pthread_create [14:37] paul___: g++, gcc ... have been found [14:37] samsonjs has joined the channel [14:39] mhausenblas has joined the channel [14:39] Xano has joined the channel [14:40] ExsysTech has joined the channel [14:40] daveb has joined the channel [14:40] daveb: wow! busy. [14:40] skeevis has joined the channel [14:40] softdrink has joined the channel [14:41] skohorn has joined the channel [14:42] skohorn has joined the channel [14:43] BillyBreen has joined the channel [14:45] azeroth_ has joined the channel [14:48] russbuelt has left the channel [14:48] azeroth__ has joined the channel [14:49] Lorentz has joined the channel [14:49] copongcopong has joined the channel [14:49] frodenius has joined the channel [14:49] frodenius has joined the channel [14:51] bene has joined the channel [14:51] jbpros has joined the channel [14:52] jbpros_ has joined the channel [14:53] rgabo has joined the channel [14:54] sub_pop has joined the channel [14:54] daveb: any way to debug this type of error? [14:55] daveb: Error: Cannot find module 'connect/utils' at Function._resolveFilename (module.js:320:11) [14:55] daveb: installed connect with npm and npm ls shows it is there [14:56] febits has joined the channel [14:58] brianc has joined the channel [15:01] m64253_ has joined the channel [15:01] broofa has joined the channel [15:02] gazumps has joined the channel [15:04] matbee has joined the channel [15:05] guybrush- has joined the channel [15:06] squaretone has joined the channel [15:07] vipaca has joined the channel [15:07] vipaca has joined the channel [15:08] hybsch has joined the channel [15:08] trcarden has joined the channel [15:09] hoodow has joined the channel [15:10] swaj: I can't understand the "one var per function" rule in JSLint... It just seems archaic. [15:10] cloudhea1 has joined the channel [15:10] jacter1 has joined the channel [15:10] MooGoo: jslint is archaic [15:10] cloudhea1_ has joined the channel [15:10] lukegalea: anyone have a simple progress bar for commandline use in node? Like ruby's progressbar gem? [15:11] lukegalea: I might just fire up "dialog --gauge"... [15:12] swaj: I think a lot of JSLint's rules are good, but some are very silly. [15:12] piscisaureus has joined the channel [15:12] mkrecny has joined the channel [15:12] MooGoo: most of the good rules are common sense [15:12] daveb: ok so i habe node_modules and my code has require ('connect/utls') [15:13] mkrecny: does anyone have a preference for twitter clients that support the sitestream api? [15:13] daveb: according to the docs it should look for utils.js in node_modules/connect/utils.js [15:13] daveb: but utils.js is under node_modules/connect/node_modules/utils.js [15:13] daveb: am I going insane? Why the infinite regress? [15:14] stefounet has joined the channel [15:14] daveb: wait [15:14] stefounet has left the channel [15:14] daveb: node_modules/connect/lib/utils.js [15:15] mbrevoort has joined the channel [15:15] criswell has joined the channel [15:16] cloudhead has joined the channel [15:16] cloudhead_ has joined the channel [15:16] daveb: require('connect/lib/utils') works [15:16] blueadept: tj: do you use forever in production? [15:21] highermath_away has joined the channel [15:23] m64253_ has joined the channel [15:25] context: anyone seen TermKit [15:25] context: its pretty nice looking [15:25] context: hopefully it will someday replace my iTerm [15:26] adnam: c00l [15:26] sandropadin has joined the channel [15:26] baudehlo: It's more a replacement for Finder than terminal. [15:27] daveb: ok well [15:27] adnam: haven't used finder in 3 years >:| [15:27] daveb: bye [15:27] daveb has left the channel [15:27] baudehlo: well maybe Finder/Quicksilver [15:27] tg has joined the channel [15:28] adnam: bash+wdired-mode [15:28] context: just wish 'clear' would work [15:28] meetar: adnam: i'm stealing that line for my next nerd-off [15:28] rauchg has joined the channel [15:28] adnam: meetar: yw [15:30] ryanfitz has joined the channel [15:30] adnam: context: must-have, i get so confused when there's a bunch of old stuff on display [15:30] LowValueTarget has joined the channel [15:30] harth has joined the channel [15:31] nphase has joined the channel [15:31] nphase has joined the channel [15:32] akashiraffee has joined the channel [15:32] w_wilkins has joined the channel [15:33] matjas has joined the channel [15:34] alcuadrado has joined the channel [15:34] ezl has joined the channel [15:34] adnam: bah, have ssh on the nodekit port [15:34] prettyrobots has joined the channel [15:34] adnam: how'd that happen [15:34] prettyrobots: Wow. [15:34] prettyrobots: http://bellard.org/jslinux/tech.html [15:35] prettyrobots: I'm sure you're all aware of it, but I just stumbled upon it. [15:35] hoax__ has joined the channel [15:36] eyesUnclouded has joined the channel [15:36] gmanika: people have been asking ballard to have their babies all over the internet because of that [15:36] jtsnow has joined the channel [15:38] briznad has joined the channel [15:39] fmeyer has joined the channel [15:39] Adman65 has joined the channel [15:40] Me1000 has joined the channel [15:40] F1LT3R has joined the channel [15:40] norviller has joined the channel [15:41] akashiraffee: I'm trying to use http.request to POST data, as per: http://nodejs.org/docs/v0.4.7/api/http.html#http.request [15:41] akashiraffee: But the body is not being written. If anyone in the know has a minute or two: http://pastebin.com/SX7T3C7h [15:42] c4milo: akashiraffee: .end()? [15:43] slaskis: akashiraffee: maybe you need a content-type? [15:43] c4milo: akashiraffee: oh sorry I just saw the pastebin [15:43] alcuadrado: is there any way to manage configuration stuff in node? suppose I have module A that uses module B. and in the main App I want to config something that affects module B behavior (a log system maybe). How can I handle this? [15:44] akashiraffee: Will try content-type too... [15:44] alcuadrado: I don't want to pass a "configs" object to every constructor [15:45] stagas: alcuadrado: use a global [15:45] akashiraffee: ...same thing. The server receives an empty message. [15:45] jbpros has joined the channel [15:46] rgabo has left the channel [15:46] alcuadrado: oh, I think I'll create a config.js module [15:46] alcuadrado: which just exports the configs [15:49] criswell has joined the channel [15:50] christophsturm has joined the channel [15:50] kmiyashiro: akashiraffee: there's no error? [15:51] matbee: On one linux box, I can run https connections in node.js, but on another --it just doesnt work. [15:51] matbee: using the restler module [15:51] kmiyashiro: req.on('error', function (err) { console.log(err.message); }); [15:52] tjholowaychuk has joined the channel [15:52] akashiraffee: kmiyashiro. No. In the callback, I dump the reply, which is a json string version of the body sent back by the server. It's just {} [15:52] stephank has joined the channel [15:53] akashiraffee: will add error handler... [15:53] kmiyashiro: callback is only for success I think [15:54] samsonjs has joined the channel [15:54] febits has joined the channel [15:55] criswell has joined the channel [15:55] saschagehlich: V1: ping [15:55] saschagehlich: V1: http://www.filsh.net/fallblatt/ << socket.io love <3 (open up in chrome) [15:56] Yuffster_work has joined the channel [15:57] akashiraffee: okay, definitely no error, and the callback does fire. I'm pretty sure about the server side, as I've tested that with curl, but I'll try a drop dead cgi script and/or maybe a pcap sniffer [15:57] iori has joined the channel [15:57] ddollar has joined the channel [15:58] jonaslund has joined the channel [15:59] newy has joined the channel [16:00] norviller has joined the channel [16:00] TheDeveloper has joined the channel [16:01] rbranson has joined the channel [16:01] newy_ has joined the channel [16:01] TheDeveloper: how well does a write stream to a file perform under high write load [16:01] astropirate has joined the channel [16:01] TheDeveloper: appending write stream [16:03] astropirate: In designing a web application when is it appropriate to use events? Any thoughts on this subject? when to use conventional function calling and when to use events [16:04] JulioBarros has joined the channel [16:05] Renegade001 has joined the channel [16:05] donaldpcook has joined the channel [16:06] puffpio has joined the channel [16:07] boehm has joined the channel [16:07] kjeldahl has joined the channel [16:10] fostah has joined the channel [16:11] ivan has joined the channel [16:11] indutny has joined the channel [16:12] V1: saschagehlich ponggg [16:12] V1: ACTION opens [16:12] V1: saschagehlich thats quite hot :o [16:12] aberry has joined the channel [16:13] V1: saschagehlich it would be more awesome if you click on the thumbs [16:13] V1: and than show a media player ;$ [16:13] saschagehlich: yea and it opens up the video [16:13] saschagehlich: ill do that tonight [16:13] Opaque has joined the channel [16:13] coffeecup has joined the channel [16:14] springmeyer has joined the channel [16:14] V1: OMG SOMEONE IS UPLOADING PORN ON YOUR SERVER saschagehlich ;D [16:15] saschagehlich: V1: they download it from youporn & co ;) [16:15] V1: ;D [16:15] V1: but ye, cool stuff [16:16] V1: now you can submit a talk saschagehlich [16:16] saschagehlich: lol :P [16:16] saschagehlich: btw, guess I asked you that before, but do you know someone who could translate my german or english language file to dutch? [16:16] astropirate: yes google translate :p [16:16] V1: saschagehlich yeh and it said buy premium services [16:17] V1: or amazone turk it [16:17] saschagehlich: arrr. [16:17] saschagehlich: why should I pay a lot of money for it if there are people who do that for a few bucks :P [16:19] V1: saschagehlich because you want quailty content [16:19] criswell has joined the channel [16:19] liar has joined the channel [16:19] saschagehlich: V1: all supported languages have been translated by any native speakers I know - and they don't suck in quality [16:20] ryah has joined the channel [16:21] benmonty: Hi all. I have a question about C++ addon best practices. If you are exposing an object to JS from C++, should you follow this pattern? 1. make all C++ methods public and static, 2. expose only the truly public methods to javascript, 3. whenever a static method is called from JS, unwrap the C++ obj from the Arguments and do work using all of the public member functions [16:22] beldur has joined the channel [16:22] tbranyen: benmonty: well you're technically unwrapping the args.This() for the most part [16:22] Corren has joined the channel [16:22] tbranyen: unless you're passing a different object reference [16:22] tbranyen: benmonty: https://github.com/tbranyen/nodegit/blob/master/src/error.cc [16:22] tbranyen: i like the pattern i follow [16:23] benmonty: tbranyen: thanks, i'll check it out [16:24] criswell has joined the channel [16:24] jerrysv has joined the channel [16:25] philtor has joined the channel [16:26] c4milo: tjholowaychuk: do you have built in support for http digest auth in express or connect? [16:26] tjholowaychuk: c4milo: nope [16:26] tjholowaychuk: just basic [16:26] Renegade001 has joined the channel [16:26] jakeg has joined the channel [16:27] fmeyer_ has joined the channel [16:27] jerrysv has joined the channel [16:28] matjas has joined the channel [16:28] Mrfloyd has joined the channel [16:29] ezl has joined the channel [16:30] mertonium has joined the channel [16:30] criswell has joined the channel [16:30] samsonjs: ugh, is this really necessary to prevent connect-form and bodyParser from stomping all over each other? https://gist.github.com/906731 [16:31] n2liquid has joined the channel [16:31] n2liquid: hey, there's a performance question I really need to know [16:32] n2liquid: is switching from inside and out of V8 a performance problem? [16:32] jerrysv: n2liquid: yes [16:32] n2liquid: is it better to call a big external function instead of many small ones? [16:33] tjholowaychuk: samsonjs: yeah they dont play to well together, usually you know which forms will be multipart or not so you can just assume [16:33] n2liquid: why's that? it seems so simple to call a native function [16:33] awenkhh has joined the channel [16:33] mbrevoort has joined the channel [16:33] tjholowaychuk: though formidable will handle x-www-form-urlencoded as well [16:33] tjholowaychuk: it's just not as easy to use as bodyParser [16:33] akashiraffee has left the channel [16:34] jet18 has joined the channel [16:34] n2liquid: jerrysv, is it? [16:35] n2liquid: and could you give me pointers as to why? [16:36] samsonjs: tjholowaychuk: yeah it's manageable, I just found it surprising from an otherwise clean framework. I was hoping to just access req.files with bodyParser alone, so my expectations were just different from reality I guess [16:36] criswell has joined the channel [16:36] jerrysv: n2liquid: sorry, was doing work work :) [16:36] tjholowaychuk: samsonjs: well you could, but it would block the rest of the middleware [16:36] tjholowaychuk: samsonjs: bodyParser is fine to block since it's usually a very small amount of data [16:36] tjholowaychuk: but with files, that would be bad [16:36] jerrysv: n2liquid: there's a lot of data conversion that happens between v8 and node [16:36] piscisaureus: n2liquid: ping [16:36] n2liquid: jerrysv, nah, that's fine [16:36] n2liquid: piscisaureus, pong? [16:37] samsonjs: tjholowaychuk: right, some jackass uploads a 10M file and suddenly the server is hosed. makes sense [16:37] piscisaureus: n2liquid: I saw your blog entry about directx in node [16:37] piscisaureus: n2liquid: is there code anywhere? [16:37] n2liquid: piscisaureus, oh, cool [16:37] n2liquid: not yet [16:37] n2liquid: I have to polish it a bit yet [16:37] jerrysv: n2liquid: polotek just had a talk at nodeconf about c++ add-ons, i think he has his slides online [16:37] n2liquid: anything in mind? [16:37] lmorchard has joined the channel [16:37] piscisaureus: how are you doing the windows message pump in node [16:37] piscisaureus: ? [16:37] beriberikix_ has joined the channel [16:37] MikeMakesIt has joined the channel [16:38] lightcap has joined the channel [16:38] towski has joined the channel [16:38] n2liquid: piscisaureus, for now I just use setInterval and call gcore.update(), which does the pumping, which is a big hack [16:38] chrislorenz has joined the channel [16:38] jerrysv: n2liquid: and i have a benchmark of native vs non-native arrays that does a good job of showing the pain points [16:38] n2liquid: later on I'll hook it to node's main loop [16:38] tbranyen: n2liquid: can you run your own event loop for that with libev? [16:38] piscisaureus: n2liquid: hmm I don't think that'll work [16:38] n2liquid: piscisaureus, setInterval? sure like hell not XD [16:38] n2liquid: it's temporary [16:39] n2liquid: tbranyen, I'll take a look at libev later, but [16:39] piscisaureus: n2liquid: I think you should have the the message pump in a thread and use ev_async (uv_async in node .6) to wake up the main event loop [16:39] piscisaureus: anyway [16:39] n2liquid: I think that won't be useful for doing windows message pumping, right? [16:40] n2liquid: piscisaureus, what does ev_async does? [16:40] n2liquid: do* [16:40] n2liquid: notify the main thread of the events? [16:40] piscisaureus: yeah [16:40] n2liquid: yeah, that's a possibility [16:40] piscisaureus: you can use that to signal the main thread from another thread [16:40] n2liquid: uh huh [16:41] n2liquid: I'm just afraid of running two threads and DirectX using the window HWND at the same time [16:41] n2liquid: and fucking everything up [16:41] piscisaureus: hmm [16:41] tbranyen: meh might as well try [16:41] n2liquid: (come on, WinAPI even fucks stdlib if you include it before) [16:41] n2liquid: I'll try things out, yeah [16:41] systemfault: n2liquid: Like min/max :P [16:41] n2liquid: it's just that I'm more concerned with the game itself [16:42] n2liquid: systemfault, that's just the beginning, lol [16:42] systemfault: :) [16:42] criswell has joined the channel [16:42] hdon has joined the channel [16:42] mike5w3c has joined the channel [16:42] piscisaureus: n2liquid: threading is a problem indeed. Seems like you can use GetMessage only on the thread that created the window [16:43] n2liquid: piscisaureus, might as well create it on another thread, then.. [16:44] n2liquid: can anyone tell me if calling a native function really does any conversion like jerrysv said? it looks to me that the structures come directly from within the VM and that's it [16:44] jerrysv: n2liquid: it's not necessarily just calling a function, it's mostly getting data that you care about converted and getting your context back [16:44] n2liquid: sure I then have to convert stuff, but that's not such a big deal [16:45] n2liquid: jerrysv, converting the data is generally casting a void pointer, isn't it? [16:45] n2liquid: however I do am afraid of switching contexts [16:45] n2liquid: I don't know how much preparations V8 does before and after a native call [16:45] n2liquid: really hoping it's not too tough on it [16:46] jerrysv: n2liquid: trying to find the bcrypt example [16:46] blueadept: holy crap: https://github.com/unconed/TermKit [16:46] n2liquid: jerrysv, much appreciated [16:46] blueadept: anybody checked this TermKit out yet? [16:47] jerrysv: nsliquid: https://github.com/jonmaim/node.bcrypt.js/blob/master/src/bcrypt_node.cc [16:47] n2liquid: blueadept, seems cool; similar to Cloud9 IDE's terminal? [16:47] jerrysv: check out the scope.close(), and the args and ObjectWrap [16:48] V1: \o/! Finally got my hands on a good c++ book :D [16:48] n2liquid: V1, which book is it? [16:48] blueadept: n2liquid: i think so, honestly haven't run it yet, but damn it looks cool. installing it right now. it's built on node.js, jquery, socketio [16:48] V1: n2liquid: Overview of the New C++ (C++0x) :D [16:48] tjholowaychuk: blueadept i tried it [16:48] tjholowaychuk: some parts are cool [16:48] n2liquid: V1, oh, gonna take a look later [16:48] bzinger has joined the channel [16:48] criswell has joined the channel [16:48] V1: http://www.artima.com/shop/overview_of_the_new_cpp [16:48] V1: that one [16:48] lukstr: blueadept: not really functional if you're a hardcore terminal user, lots of stuff doesn't work the way you'd expect it [16:49] n2liquid: blueadept, looks really cool indeed; I always wondered why terminals were so stuck and restricted when they could be like this [16:49] Nican has joined the channel [16:49] lukstr: as an experiment it's neat though [16:49] jakehow has joined the channel [16:49] lukstr: ACTION moves farther from GUIs [16:49] blueadept: lukstr: ah really [16:49] n2liquid: lukstr, maybe if it's improved..? [16:49] blueadept: i'm just tired of terminal [16:49] blueadept: i need terminal with more options [16:50] blueadept: like shortcuts and shit [16:50] lukstr: n2liquid: maybe but I'm afraid of it moving away from what makes a terminal powerful. [16:50] blueadept: and i dont like visor [16:50] tjholowaychuk: shortcuts? [16:50] tjholowaychuk: use z [16:50] n2liquid: lukstr, like what? [16:50] tjholowaychuk: lukstr yeah it would have to be very smart to work properly [16:50] lukstr: mashing streams of text around [16:50] tjholowaychuk: like cat foo.js [16:50] n2liquid: I mean, terminal magic isn't essentially piping? [16:50] tjholowaychuk: is all highlighted n shit [16:50] tjholowaychuk: but if you pipe that it better not have linenos n shit [16:51] tjholowaychuk: haha [16:51] tjholowaychuk: and other things [16:51] n2liquid: lol, yeah [16:51] tjholowaychuk: it was clunky, but some of the ideas were neat [16:51] temp01 has joined the channel [16:51] lukstr: it's one thing to muck with stdout as the terminal sees it, but it should be ontop of a terminal rather than part of it [16:51] blueadept: oh hey tj was going to ask, you all at learnboost use 'forever' in production? [16:51] tjholowaychuk: blueadept nope [16:51] tjholowaychuk: cluster [16:51] blueadept: ah thats right [16:51] tjholowaychuk: + monit [16:52] blueadept: i need to check cluster out, been meaning to do that [16:52] n2liquid: lukstr, yeah, being on top of a terminal would probably be for the best; being on top of many terminals could be interesting, too [16:52] blueadept: using forever for small stuff atm, really like it [16:52] norviller has joined the channel [16:52] blueadept: plus http-proxy [16:53] blueadept: i think i'm getting the nodejitsu team mixed upwith the learnboost team [16:53] lukstr: if you wrote a new terminal that simply exposes hooks for all that crap, while completely leaving existing functionality alone, brilliant [16:53] blueadept: i seem to only use stuff from either of you guys [16:54] criswell has joined the channel [16:54] tjholowaychuk: lukstr totally [16:54] tjholowaychuk: lukstr i just want a js scriptable / css term [16:55] tjholowaychuk: that is otherwise very similar to what we all know [16:55] lukstr: you'd have to pretty much wrap everything in /bin [16:55] tjholowaychuk: blueadept i'm not sure forever is meant for servers [16:55] tjholowaychuk: could be wrong [16:55] tjholowaychuk: haven't used it but from what i saw it was just meant as a generic tool to respawn things [16:55] lukstr: tjholowaychuk: a terminal in node could be interesting... [16:55] n2liquid: maybe just a way to inform what output is being spit and letting the terminal add nifty styleable visualtions [16:55] halfhalo: doitdoitdoit [16:55] blueadept: yeah it keeps the process up, if it hangs, reboots it, also reloads on file change [16:56] blueadept: not for scaling an environment by any means [16:58] TheDeveloper has left the channel [16:58] sreeix has joined the channel [16:59] nadirvardar has joined the channel [16:59] criswell has joined the channel [16:59] mikeal has joined the channel [16:59] blueadept: logs as well [16:59] andi5 has joined the channel [17:00] n2liquid: terminals should just be more context aware or something [17:00] galaxywatcher has joined the channel [17:00] blueadept: i want a transmit type app for terminal [17:00] blueadept: at least on os x [17:00] pifantastic_ has joined the channel [17:00] n2liquid: one cool thing would be ability to hit tab and discover the possible arguments [17:00] steffkes has joined the channel [17:01] halfhalo: ohmyzsh [17:01] n2liquid: and see the explanation on a dropdown or something [17:01] halfhalo: gogogo [17:01] frodenius: that can be supported by applications [17:01] frodenius: see git [17:01] n2liquid: frodenius, git is just separated in many files [17:01] n2liquid: not as cool as it can get [17:01] frodenius: yea that is one way it can be implemented [17:01] n2liquid: sure [17:02] Mrfloyd has joined the channel [17:02] n2liquid: btw, random question [17:02] n2liquid: anyone here excessively irritated with autotools/makefiles in general? [17:02] n2liquid: and build systems [17:02] n2liquid: (even SCons and whatnot) [17:02] tjholowaychuk: make == <3 [17:02] halfhalo: bah [17:03] n2liquid: I really can get around understanding those things, they could be much simpler.. [17:03] rfay has joined the channel [17:03] tjholowaychuk: make is pretty simple [17:03] sooli has joined the channel [17:03] tjholowaychuk: it's just the fact that nothing works the same on each system [17:03] tjholowaychuk: that sucks [17:03] tjholowaychuk: but that's not make's fault [17:03] n2liquid: hm, maybe [17:03] DTrejo has joined the channel [17:03] perezd has joined the channel [17:03] n2liquid: I also think make is a bit too ugly, too [17:04] sooli: Hi there since I upgraded my node.js version (0.4.7) haml + expressjs don't work : I have this error: CALL_NON_FUNCTION [17:04] lukstr: n2liquid: I think make and autotools are pretty much the best thing ever [17:04] n2liquid: but that's a matter of taste, so I couldn't argue [17:04] sooli: with node 0.4.1 everything is ok [17:04] sooli: any ideas ? [17:04] tjholowaychuk: sooli i dont think tim's haml supports express 2.x [17:04] n2liquid: lukstr, would it be a crime to make a build system in Node for a project? [17:04] criswell has joined the channel [17:04] tsesame has joined the channel [17:05] tjholowaychuk: yes [17:05] n2liquid: (asking personal opinion) [17:05] lukstr: n2liquid: nope, look at Apache's Ant [17:05] tjholowaychuk: lol [17:05] tjholowaychuk: jk [17:05] sooli: tjholowaychuk: with express 2x and node 0.4.1 it works [17:05] lukstr: which I personally hate but it's pretty different [17:05] sooli: not with node 0.4.7 [17:05] tjholowaychuk: sooli hmm that's odd [17:05] lukstr: though if I went out to craft a make system I'd probably end up with make [17:05] smlefo has joined the channel [17:05] smlefo: hi all [17:05] lukstr: make with increased verbosity would be pretty much the best thing ever (verbosity regarding defining rules, etc, not output) [17:05] sooli: which haml plugin should we use within node 0.4.7 and express 2x ? [17:06] beriberikix has joined the channel [17:06] lukstr: all that weird autorules stuff is always nonobvious if I haven't looked at a makefile in a while [17:06] n2liquid: another crazy thing is there could really be some pkgconfig for Windows, couldn't it? I mean, something very general for the general community, and not tied to Cygwins of sorts [17:06] tjholowaychuk: yeah that stuff could be a bit more explicit [17:06] tjholowaychuk: i dont like things that guess for me [17:06] smlefo: is there a way to do a blocking (sync) http request? [17:06] n2liquid: something that would be compatible with linux, too [17:07] context: sooli: which ever one works with express? (so, probably any of them) [17:07] bzinger has joined the channel [17:07] lukstr: something yaml would make me happy too [17:07] tjholowaychuk: sooli: my haml (i think it's hamljs in npm) / jade etc work [17:07] context: sooli: jade is the default and is very similar if not the same as + more to haml [17:07] tjholowaychuk: not sure about tim's [17:07] tjholowaychuk: it just needs a .compile() function [17:08] n2liquid: anyway [17:08] sooli: ok thx [17:08] n2liquid: gotta get back to work [17:08] tjholowaychuk: sooli https://github.com/visionmedia/haml.js [17:08] steph021 has joined the channel [17:09] tjholowaychuk: jade was derived from that project [17:09] tjholowaychuk: it's much much different now but that's where it came from [17:10] smlefo: is there a way to do a blocking (sync) http request? [17:10] springmeyer_ has joined the channel [17:10] tjholowaychuk: smlefo why are you doing that [17:10] tjholowaychuk: s/doing/wanting/ [17:11] ericindc has joined the channel [17:11] smlefo: I'm using nodejs as a command line scripting tool, and want to perform a long series of GET's, and would rather not nest all my GET's one inside the other [17:12] febits has joined the channel [17:12] tjholowaychuk: just queue them up [17:12] n2liquid`afk: jerrysv, reading the bcrypt example, all I see are things that V8 would have to do when running JS code [17:12] n2liquid`afk: that's the cost of the language [17:12] tjholowaychuk: and shift them if they need to be sequential [17:12] puffpio has joined the channel [17:12] n2liquid`afk: it only looks heavy when you see it in C++ [17:12] smlefo: well, the GETs are dependent on the previous GETs results [17:12] n2liquid`afk: it's scary to see so much going on, but it just has to happen [17:12] MooGoo: lol [17:12] n2liquid`afk: it's a dynamic language where almost everything is heap-allocated [17:13] garrensmith: tjholowaychuk: where in the order in a expressjs config must favicon middleware go? [17:13] tjholowaychuk: garrensmith: doesnt matter [17:13] MooGoo: dont use node [17:13] tjholowaychuk: i usually put it first [17:13] n2liquid`afk: jerrysv, isn't it? [17:13] jeefers has joined the channel [17:13] tjholowaychuk: above logger() so that those requests dont show in the logs [17:13] garrensmith: tjholowaychuk: yeah I also put it first.. cool thanks [17:14] awenkhh has joined the channel [17:14] MooGoo: ver result; get('http://whatever.com', function(body) { result = body }); while (!result){}; more code... [17:14] MooGoo: there [17:14] MooGoo: that blocks [17:15] smlefo: MooGoo - don't think that will work because node is a single thread, correct? [17:15] n2liquid`afk: MooGoo, indeed, that crashes, doesn't it? [17:15] MooGoo: why would it crash? [17:15] springmeyer_ has joined the channel [17:15] MooGoo: it will just chew up cpu time [17:15] messju has joined the channel [17:15] messju has joined the channel [17:15] n2liquid`afk: MooGoo, because the event loop won't loop inside a JS loop [17:15] MooGoo: hm [17:15] MooGoo: possible [17:16] n2liquid`afk: that's why using a recursive eventemitter also crashes [17:16] tjholowaychuk: dont use node for that [17:16] MooGoo: be nice if there was a way to explicitly run the event loop [17:16] tjholowaychuk: or work around the callbacks [17:16] MooGoo: then you could [17:16] MooGoo: while (!result) process.runEventLoop() [17:16] MooGoo: or something [17:16] smlefo: that's silly... node has sync versions for lots of other funtions (lstat, readdir, etc)... why not http.request? [17:17] MooGoo: it just doesnt [17:17] tjholowaychuk: because it's way more work [17:17] smlefo: no it isn't [17:17] q_no has joined the channel [17:17] tjholowaychuk: then write it :p [17:17] MooGoo: could write a C++ extension to do it [17:17] smlefo: yeah and learn the 12 APIs... [17:17] MooGoo: this is why js needs continuations [17:17] sooli: ok hamljs works like a charm :) [17:17] tjholowaychuk: the posix bindings are like a single line so it's not a big deal to provide sync alts [17:17] tjholowaychuk: sooli cool man [17:18] felixge has joined the channel [17:18] felixge has joined the channel [17:18] felixge: ryah: ping [17:18] smlefo: even browsers have sync ajax requests... this isn't too crazy of an idea [17:18] m00p has joined the channel [17:19] ryah: felixge: pong [17:19] tjholowaychuk: smlefo and they probably shouldn't [17:19] MooGoo: hm [17:19] eb4890 has joined the channel [17:19] yhahn has joined the channel [17:19] smlefo: who are you to say? [17:19] MooGoo: some new ones have sync requests that dont block the entire app [17:19] MooGoo: just suspend the current function [17:19] tjholowaychuk: smlefo a guy that has never used a sync xhr [17:19] MooGoo: which is how it should always happen [17:19] jdalton has left the channel [17:20] tjholowaychuk: a guy that writes things he wants instead of complaining lol [17:20] smlefo: a guy who has never had a need for a sync function (FTFY) [17:20] context: smlefo: why do you want a sync http.request() so bad? [17:20] smlefo: doesn't mean there isn't a need [17:20] cryptix has joined the channel [17:20] MooGoo: you could look into node-fibers [17:20] context: smlefo: there isn't a need. [17:20] smlefo: because I want to perform a series of GET requests that are dependant on the results of the previous one, and would rather not have my code tabbed over 100+ [17:20] lukstr: smlefo: you still haven't really explained why you need this; perhaps you are using the wrong tool [17:20] MooGoo: smlefo: you don't have to indent [17:20] tjholowaychuk: smlefo like I mentioned already [17:20] context: smlefo: and you cant do that why ? [17:20] lukstr: smlefo: so encapsulate each callback in a method [17:20] tjholowaychuk: dont use node for that [17:21] tjholowaychuk: if you are lazy [17:21] tjholowaychuk: look at soda's chaining [17:21] context: if you can do it sync'ly and you do it async'ly [17:21] tjholowaychuk: you could do something similar [17:21] smlefo: I'm not saying it's impossible to do it async, I'm saying it makes more sense to do it sync [17:21] lukstr: smlefo: then you are using the wrong tool... [17:22] tjholowaychuk: then it probably makes more sense not to use node [17:22] tjholowaychuk: lol [17:22] smlefo: and it's silly to have this sort of religious attitude about it where nodejs is ONLY have async methods (when it clearly has Sync versions of many other functions) [17:22] MooGoo: it has sync for local IO [17:22] context: smlefo: just call some main function to get the next page in your list of pages afer http.request returns [17:22] lukstr: because it's written that way [17:22] context: and you do what you need to [17:22] context: or .tick() it [17:22] tjholowaychuk: smlefo: reality is the focus of node is async [17:22] lukstr: smlefo: if yo uwant sync that bad then rewrite whatever you're using for sync [17:22] tjholowaychuk: hense no one has written it [17:23] MooGoo: what you need to do is run all the http get operations async, and when they are all done, then process the results [17:23] tjholowaychuk: if it would even get accepted at all, which i doubt [17:23] lukstr: it's certainly doable, but all the libraries don't do it so they can be used in an async fashion [17:23] smlefo: MooGoo - the decision of what the next GET request is dependant on the results of the previous GET [17:23] n2liquid`afk: tjholowaychuk, why are there even synchronous functions? isn't it just like for testing and trying things out faster? [17:23] MooGoo: ok [17:23] n2liquid`afk: I always wondered [17:23] MooGoo: then use python/perl/ruby/php [17:23] MooGoo: or [17:23] MooGoo: rhino [17:23] kmwallio has joined the channel [17:23] thalll has joined the channel [17:23] n2liquid`afk: I thought synchronous stuff was banned from NodeJS from what I heard ryan saying in a talk someday [17:24] tjholowaychuk: n2liquid`afk: from what i've seen it's almost always just to overcome more complications with sync stuff [17:24] n2liquid`afk: were* [17:24] context: smlefo: 1: dont use node. or b: do it. it IS possible to do async'ly and would be more flexible in the future [17:24] harth has joined the channel [17:24] tjholowaychuk: n2liquid`afk i use fs.readFileSync (cached of course) in express [17:24] n2liquid`afk: tjholowaychuk, ah, I see [17:24] tjholowaychuk: it could be done async [17:24] tjholowaychuk: BUT [17:24] tjholowaychuk: it would be absolute hell [17:24] MooGoo: smlefo: you might want to check out node-fibers [17:24] tjholowaychuk: and a massive / slow hack [17:24] smlefo: tj - thanks for agreeing with me [17:24] context: tjholowaychuk: ouch. [17:24] smlefo: there are use cases where sync makes sense [17:24] bene has joined the channel [17:24] wadey has joined the channel [17:25] context: tjholowaychuk: how slow? depending on file size you are tieing up node from responding to other requests [17:25] nadirvardar has joined the channel [17:25] tjholowaychuk: context: it's a one hit thing, not a big deal [17:25] context: smlefo: sync may make the code a little easier. but sync is never 'the only option' [17:25] DTrejo has joined the channel [17:25] jet18 has joined the channel [17:26] tjholowaychuk: reality in this case is i would be caching the async results as well [17:26] tjholowaychuk: so it's irrelevant [17:26] MooGoo: this talk just points to the design flaw with this async callback shit [17:26] smlefo: context - no, I'm not saying it is the only option, I'm simply saying it's the better option for what I'm trying to do [17:26] MooGoo: a blocking IO function should only block the current function [17:26] MooGoo: not the entire app [17:26] tjholowaychuk: smlefo and we are saying no one has written it yet [17:26] tjholowaychuk: so write it [17:26] tjholowaychuk: lol [17:26] context: smlefo: define "better" [17:26] ericindc has joined the channel [17:27] smlefo: context - imagine a series of 1000 GET requests, each dependant on the result of the previous one... the only way to do it in node is to have 1000+ nested calls [17:27] context: smlefo: and no. "code being easier" != better. what you need can be done easily enough and cleanly async [17:27] context: smlefo: WRONG ! [17:27] smlefo: context - please correct me, I'm all for it [17:28] smlefo: code being easier = easier to understand = easier to debug = easier to maintain = better [17:28] tjholowaychuk: smlefo https://github.com/learnboost/soda [17:28] tjholowaychuk: view that api for example [17:28] tjholowaychuk: it's still all async stuff [17:28] dguttman has joined the channel [17:28] tjholowaychuk: but it needs to be sequentially executed like you mention [17:28] context: you have array of requests needed, array completed, and last page. call function, pop next page, call http.request. handle response, add to completed, call handle_next_page() [17:28] lukstr: woo linode referrals ftw, free money has never been so good [17:28] context: two functions. 2 arrays. done. [17:28] smlefo: context - the logic between GET requests is complicated [17:28] tsesame: Isn't the way middleware works an example of functions executed in serial, where one depend on the previous? [17:29] context: smlefo: get page, handle response, get next ? [17:29] smlefo: it's not like I'm just downloading a bunch of files... I am performing a series of complicated GET requests [17:29] context: how is that complicated [17:29] tjholowaychuk: tsesame yup [17:29] context: smlefo: its gonna be the same way sync'ly [17:29] smlefo: no it isn't [17:29] context: smlefo: what youa re saying makes no sense [17:29] tjholowaychuk: smlefo: use a shell script [17:29] context: smlefo: so. syncly, you are NOT doing: "get page, handle response, get next" ? [17:29] tjholowaychuk: or python [17:29] tjholowaychuk: or ruby [17:29] lukstr: smlefo: outline exactly what you need to do, and maybe we can help you solve it, but you're being really vague and saying everyone is wrong [17:30] smlefo: so what I'm hearing then is: nodejs can't do this... and the reason why doesn't really matter, or the reason why I'm looking to do sync requests [17:30] hij1nx has joined the channel [17:30] smlefo: whether my need is "right" or "wrong" doesn't matter... nodejs can't do it [17:30] context: smlefo: i just showed you how node can. [17:30] udp: smlefo: just make an array of functions for each request, then loop through it, performing each request with the next as a callback? [17:30] tjholowaychuk: smlefo the real question is why use node to do it, if you're not happy with callbacks? [17:30] smlefo: tj - nodejs is a great library... it's just not perfect [17:30] dgathright has joined the channel [17:31] n2liquid`afk: is it that bad to make 1000+ nested calls if each doesn't refer to the previous scope, or is V8 forced to keep referencees to the previous scope or can they be GC'ed in the middle of the calls? [17:31] tjholowaychuk: smlefo: what is your motivation for using node for this cli? [17:31] context: smlefo: you either cant see how to do it async. or dont want to accept that its possible [17:31] n2liquid`afk: pretty interesting question that arrised [17:31] Mrfloyd_ has joined the channel [17:31] context: smlefo: or just being vague about your requirements for the hell of it [17:31] seivan has joined the channel [17:31] smlefo: context - it is possible to do it sync? [17:31] context: stf [17:31] lukstr: smlefo: of course it's possible [17:31] context: wtf* [17:32] lukstr: smlefo: just more painful than any doing it async, likely [17:32] smlefo: how? I'm not seeing the response...? [17:32] n2liquid`afk: anyone? [17:32] liar has joined the channel [17:32] lukstr: n2liquid`afk: looking into it [17:32] context: are you trolling right now? [17:32] tjholowaychuk: Y U USE NODE FOR THIS [17:32] tjholowaychuk: lol [17:32] context: smlefo: you meant async. and i already told you how to do it async without 1000 nested calls [17:32] lukstr: smlefo: what are you using that uses async callbacks right now? [17:32] smlefo: no, I'm not trolling, I'm building command line tools (not web servers) using nodejs [17:33] tjholowaychuk: why? [17:33] smlefo: context- no, I want to do it sync [17:33] n2liquid`afk: BECAUSE JAVASCRIPT IS DAMN COOL AND NODEJS IS DAMN COOL AND I WANT TO USE IT EVERYWHERE MY BOSS ALLOWS ME [17:33] context: omfg! [17:33] context: smlefo: then go use !node and stop crying [17:33] n2liquid`afk: /lol [17:33] deepthawtz has joined the channel [17:33] context: smlefo: or make your own damn wrapper to do async calls. [17:33] context: [17:33] n2liquid`afk: context, what is !node? [17:33] context: god damn [17:33] context: n2liquid`afk: !1 , NOT ? [17:33] smlefo: node provides Sync calls to other functions, I was simply hoping for a Sync http.request or some way to accomplish it [17:33] smlefo: thanks anyways [17:34] eb4890 has joined the channel [17:34] lukstr: smlefo: the issue is there are a lot of libraries existing solely for async, not so much for sync. What you are asking is possible but you'd have to write everything, which is likely a non-trivial amount of work [17:34] lukstr: smlefo: you'd have it yourself, afaik [17:34] olauzon has joined the channel [17:34] n2liquid`afk: context, erm, I thought it actually existed [17:34] lukstr: smlefo: not a limitation of node, just not it's intended use so no one has written it yet. Feel more than free to [17:34] binarypie has joined the channel [17:34] context: smlefo: https://github.com/0ctave/node-sync [17:35] context: try that? google still works [17:35] context: smlefo: as been repeated. as is said with ALL languages/frameworks... one is never the answer for everything. [17:35] lukstr: context: perfect, smlefo: that looks like your solution [17:35] criswell has joined the channel [17:35] tjholowaychuk: why does that fiber thing [17:35] tjholowaychuk: still look as ugly as callbacks [17:36] smlefo: that looks very promising, thanks context [17:36] tokumine has joined the channel [17:36] lukstr: ACTION remembers the adage "Right tool for the right job" [17:36] prettyrobots: lukstr: It is a limitation of Node.js. Node.js is constrained by the design decision to not suck. [17:36] prettyrobots: It therefore does not do incredibly stupid things. [17:36] prettyrobots: Which limits it greatly. [17:36] scrogson has left the channel [17:36] context: smlefo: also as such. in the future maybe be willing to accept alternative ways of accomplishing something, or be blunt about what you want. and not beat around the bush [17:36] smlefo: lol, why do sync calls suck? async is useful, sync is useful... why do you have to be so religious about it? [17:36] zeade has joined the channel [17:37] lukstr: smlefo: because the religious choices node.js makes are async, so within the realm of node.js async is right, sync is wrong. [17:37] Tidwell has joined the channel [17:37] smlefo: luk - then why does node include sync functions at all? [17:37] n2liquid`afk: people generally did sync things because it was easier to do [17:37] lukstr: smlefo: legacy, they will probably disappear eventually [17:37] context: smlefo: for the future you if unwilling to look at alternative ways, rephrase: "how can i call http.request sync. i know i can async i need it sync.' [17:37] prettyrobots: Because mine is the one true way and you are heretic and I will have my my eternal reward and you will have stack overflow. [17:37] n2liquid`afk: and we got stuck with a lot of sync stuff that had to be wrapped around to make things asynchronous [17:37] n2liquid`afk: and it was painful [17:37] smlefo: I hope not, my library depends on them [17:37] n2liquid`afk: and NodeJS did it [17:37] n2liquid`afk: they likely don't want it to happen AGAIN [17:37] tauren has joined the channel [17:38] smlefo: context - fair enough, will do [17:38] prettyrobots: The sync functions are related to the filesystem, and generally used for initialization. [17:38] tauren: anyone know much about persevere? is it something that runs on node or something similar to node? [17:38] lukstr: As far as I understand it the current sync operations are intended to be used for atomic functionality, and if they fail bad stuff happens [17:39] prettyrobots: I use them when I'm writing command line programs in Node.js, where doesn't buy me anything. [17:39] mjijackson has joined the channel [17:39] prettyrobots: lukstr: Atomic functionality? [17:39] context: smlefo: its not that sync is also good. its in the context of nodejs development. sync is rarely if ever an option or should be. [17:39] javier__ has joined the channel [17:40] jbpros has joined the channel [17:40] context: smlefo: if im doing C development, im not gonna try doing duck typing. it's just not something you do. [17:40] astropirate has joined the channel [17:40] smlefo: context - depends on what you're trying to accomplish [17:41] prettyrobots: Like maybe you're trying to put hamsters in a can. Do you do that sync or async? [17:41] samsonjs: quick connect-form question, i'm expected to clean up temp files for uploads, correct? [17:41] lukstr: prettyrobots: probably the wrong word to use... I'm distracted -- I meant operations that expected to succeed without the negatives of synchronous calls, i.e. large files, infinite blocking, etc. [17:41] astropirate: Anyone here live in the Washington DC area? I want to get a node group going (gauging interest) [17:41] context: smlefo: no. if i need duck typing i dont use C. [17:41] smlefo: if you're building a scripting engine (for example, Lua), then you'll need duck typing capabilities in C [17:41] tjholowaychuk: samsonjs: yeah i dont think formidable touches them after that point [17:42] tjholowaychuk: though they are tmp [17:42] context: smlefo: no. Lua needs duck typing. not C [17:42] tjholowaychuk: so you could leave them, or yeah just unlink when you are done [17:42] ewdafa has joined the channel [17:42] samsonjs: perfect, thanks tj [17:42] prettyrobots: lukstr: Yes. I agree. Like reading in config file lazily. [17:42] smlefo: and where does Lua magically get it's duck-typing capability? via a C implementation [17:42] smlefo: c'mon [17:42] criswell has joined the channel [17:42] context: where does ruby? or python? [17:42] smlefo: exactly [17:42] lukstr: prettyrobots: exactly. They are hacks, if anything. Hell, they should emit annoying warnings. [17:42] context: smlefo: wtf does lua ruby or python have to do with C ? [17:43] context: ruby is written in C, C++, .NET, and Java [17:43] lukstr: smlefo: within the C implementation, yes, but you are not really duck typing _within_ c [17:43] m64253 has joined the channel [17:43] prettyrobots: I use sync to read in Locale files if a Locale is requested, a one time hit, and then the locale is loaded, but otherwise, the lazy initialization would expose an implementation detail by needing a callback. [17:43] smlefo: luk - C, the language, is strict typing... so you need to create an API to handle duck typing within the context of strict typing... [17:43] tjholowaychuk: lukstr: sure you are [17:43] prettyrobots: lukstr: No. No annoying warnings. [17:43] tjholowaychuk: ruby's VALUE [17:43] Marak has joined the channel [17:43] tjholowaychuk: etc [17:44] prettyrobots: That shows a lot of insecurity. I use sync calls confident in the decision. [17:44] smlefo: so should C explicitly forbid all duck typing? no, it provides the tools and freedom to the programmer, and the programmer makes it happen [17:44] smlefo: likewise, if I want to do a sync call in Node, I would hope that Node provides the tools, and trusts the programmer to use their best judgement of when to use sync/async [17:44] indutny1 has joined the channel [17:44] context: C does not have ducktyping. period. [17:44] prettyrobots: smlefo: You don't know what you're talking about, really. [17:44] chrisdickinson: smlefo: it pretty much does. it doesn't prevent you from creating and manipulating data structures that represent duck typing, though. [17:44] lukstr: smlefo: C explicitly forbids pretty much nothing, a lot of languages forbid a lot of stuff. [17:44] smlefo: pretty - no really, I do [17:44] context: you still have strict data structures.... PERIOD [17:45] lukstr: context: C has pseudo ducktyping but it's not a language feature, yes, I agree [17:45] chrisdickinson: smlefo: though if you want to get down to brass tacks about it, i guess you could say C has duck typing through type punning [17:45] norviller has joined the channel [17:45] tbranyen: javascript has native duck typing [17:45] tbranyen: Function.duckType(function() { }) [17:45] smlefo: ACTION shurgs [17:46] samsonjs: casting to void* (or VALUE, etc) is not duck typing imo, but this is basically just a semantic quibble [17:46] ezl has joined the channel [17:46] smlefo: the point is: different techniques for different jobs... sometimes async is great, sometimes sync is better [17:46] prettyrobots: samsonjs: Except that you're right and the others are being rediculous. [17:46] lukstr: yes, and different tools for different jobs. [17:46] context: and i wouldn't call type punning duck typing. you are still dealing with SOME strict type. [17:46] chrisdickinson: samsonjs: through type punning, you can emulate a form of duck typing. maybe best labeled "explosive duck typing" [17:47] chrisdickinson: "if it quacks like a duck and swims like a duck, in C, if you cast it to duck*, it still might explode violently" [17:47] tjholowaychuk: hahhaha [17:47] context: hahaha [17:47] lukstr: awesome [17:48] context: anyway. this is #node.js not #lets-argue-about-what-languages-can-and-cant-do-and-why-dont-node-have-sync [17:48] awenkhh has joined the channel [17:48] lukstr: yes, regardless, it's good to recognize an appropriate tool for a certain job. A lot of synchronous, single thread requests? Maybe node.js isn't for you. [17:49] ewdafa has joined the channel [17:49] prettyrobots: I wonder if, as more and more newbies come in saying they can't understand it, Node.js trys to offer sync alternative to everything. [17:49] Marv_ has joined the channel [17:49] lukstr: prettyrobots: I'm pretty sure that's not going to happen, I was under the impression there will be even less sync stuff in the future? [17:49] context: prettyrobots: EWE ! [17:49] samsonjs: prettyrobots: I doubt it, the people who have already invested in node do not want that, and they (rightfully) have the final say [17:50] prettyrobots: I mean, I think that Node.js has to accept the fact that it is going to be a little more difficult than Ruby, and that this will not change. [17:50] context: err [17:50] context: lukstr: * [17:50] context: err nm. [17:50] context: im a dork [17:50] liar has joined the channel [17:50] lukstr: context: you look like a duck though [17:50] barce has left the channel [17:50] context: i dont think node is really more complicated than ruby. just different. requires a different way of thinking [17:50] montylounge has joined the channel [17:51] context: lukstr: but i feel like a man [17:51] chrisdickinson: i've seen a lot of fellow programmers gag on callbacks, though. [17:51] astropirate has left the channel [17:51] prettyrobots: context: The async concept is much more difficult to understand, but not really. [17:51] bingomanatee has joined the channel [17:51] chrisdickinson: the biggest misconception i've seen thus far is that calling an async method somehow immediately yields back to the event loop [17:51] chrisdickinson: which probably comes from folk using gevent. [17:52] prettyrobots: It's not a huge barrier to understanding, but it takes extra effort, and I'm sure a lot of people coming from PHP will resent it. [17:52] prettyrobots: But, then, a lot of people understand the event model in the browser, so maybe not. [17:52] lukstr: prettyrobots: not so sure, once they see how little code they are writing the might smile [17:53] chrisdickinson: prettyrobots: i'm not really sure that a lot of folk actually understand the event model in the browser. [17:53] context: im with chrisdickinson on that note. i know i dont actually understand it [17:53] maushu has joined the channel [17:53] prettyrobots: lukstr: The community is still small. At some point it is going to get a lot of newbies. [17:53] markc has joined the channel [17:53] chrisdickinson: actually, learning node is what finally gave me the push to figure out how the browsers work. [17:54] prettyrobots: chrisdickinson: Do you mean in general, or all the gory details? [17:54] prettyrobots: Ah. Okay. Cool. [17:54] chrisdickinson: prettyrobots: the idea that there's a single thread that schedules events that may or may not run at the promised time based on whether the current stack is cleared. [17:54] lukstr: prettyrobots: well then hopefully there are enough good examples before that happens [17:55] chrisdickinson: the real broad strokes you don't need to pick up directly when you're just wiring up $('a').click(function() { .. }); stuff. [17:55] chrisdickinson: (but that come in ... incredibly handy once you start writing large javascript applications.) [17:55] prettyrobots: chrisdickinson: I never really thought about the event model until after Node.js. [17:55] prettyrobots: But, when I did, I realized that I'd been doing it right. [17:56] chrisdickinson: prettyrobots: same here; it was a real eye-opener. of course, now that i understand it, i miss it a lot in other languages. [17:56] prettyrobots: I mean, after all those years, I had the model in my head, even if I didn't understand it. Ugh, that sounds new agey. [17:56] superjudge has joined the channel [17:56] chrisdickinson: there's something tremendously nice about being able to say "after the current stack clears, run this." [17:56] ExsysTech has joined the channel [17:57] willwhite has joined the channel [17:57] prettyrobots: Not like I'm too cool for school, but just that I knew were all the hot parts were and how not to touch them, and even though I had a fair understanding of multi-threaded concurrency. [17:57] puffpio_ has joined the channel [17:57] chrisdickinson: prettyrobots: it didn't occur to me to really even start to understand how the event loop worked until i started working on my first template language in js [17:58] prettyrobots: chrisdickinson: Are you talking about "nextTick", the current stack clears? [17:58] Adman65 has joined the channel [17:58] mikegerwitz: chrisdickinson: The stack doesn't have to clear [17:58] chrisdickinson: prettyrobots: nextTick, setTimeout, setInterval and friends. [17:59] chrisdickinson: mikegerwitz: for other javascript to run in the same thread? I think it does -- there's a single thread and I don't think there's any co-opting [17:59] springmeyer has joined the channel [17:59] prettyrobots: mikegerwitz: I believe that chrisdickinson is right. [17:59] langworthy has joined the channel [17:59] context: mmm now you guys got me questioning the event model [18:00] context: so like http.request() when it gets a response, does it call your callback with nextTick() ? [18:00] chrisdickinson: context: so basically anything async will schedule something on the event loop. the current stack will continue to run until it clears out. [18:00] prettyrobots: But, chrisdickinson, don't you mean also, the current stack clear and this much time has elapsed? Or are you talking about "setTimeout(function () {}, 0)"? [18:00] prettyrobots: Because I see the value of your framing. [18:01] chrisdickinson: prettyrobots: yep. plus setTimeout is notorious for making "shaky" promises about when the scheduled function will actually run. [18:01] chrisdickinson: in node, at least, it does exactly what you'd think -- setTimeout(fn, 0) puts a function on the event loop, scheduled to run immediately after the current stack. [18:01] prettyrobots: That's a useful framing. Did you post about it somewhere? [18:01] chrisdickinson: in browser, it has a minimum resolution of 4-6ms [18:02] chrisdickinson: prettyrobots: apparently not! [18:02] context: mm. and i guess any IO events are gonna be handled in the event loop. [18:02] context: so request emitting is gonna be on next event loop anyway [18:02] tjholowaychuk: context yeah [18:02] tjholowaychuk: its not like it takes over [18:02] tjholowaychuk: as soon as you get a response [18:02] context: yeah [18:03] tjholowaychuk: and its like MOVE BITCH GET OUT THE WAY [18:03] flippyhead_ has joined the channel [18:03] context: haha [18:03] context: yeah ive had my share of playing with select() and poll() :x [18:03] chrisdickinson: context: the real fun that this presents is when you've got a event emitter api that does some sort of caching of prior results [18:03] Renegade001 has joined the channel [18:04] chrisdickinson: that's when you've got to remember to call setTimeout(eventEmitter.emit.bind(eventEmitter, 'data', cachedData), 0); return eventEmitter; [18:04] context: and calls your callback right away. haha [18:04] tjholowaychuk: i've only played with libev really, was building node in c++ [18:04] tjholowaychuk: and then got bored [18:04] prettyrobots: chrisdickinson: If you wrote that up somewhere, I'd bookmark it. [18:04] context: tjholowaychuk: interesting. gonna put that in my useful pasties [18:05] chrisdickinson: prettyrobots: cool -- I'll see what I can do about that :) my site is neversaw.us/ -- the one with the really crappy design. [18:05] tjholowaychuk: context https://gist.github.com/979135 [18:05] colinclark has joined the channel [18:05] prettyrobots: Did everyone see this? I pasted it earlier but then lost my IRC client. [18:05] prettyrobots: http://bellard.org/jslinux/tech.html [18:06] tjholowaychuk: that was all running fine, then got side tracked and never finished [18:06] tjholowaychuk: interesting to get a better feel for things though [18:06] m00p has joined the channel [18:06] lukstr: prettyrobots: yes, I hope it makes people take PNaCl seriously [18:06] mbrevoort has joined the channel [18:07] Mrfloyd has joined the channel [18:07] chrisdickinson: off-topic, but, i've got my little webgl terrain engine experiment sitting at (http://neversaw.us/terrain/). i was totally wowed at how much easier it was to work with webgl+javascript than opengl+C++. [18:08] lukstr: chrisdickinson: nice apis are nice [18:08] context: tjholowaychuk: thnx. time to head to lunch [18:10] galaxywatcher has joined the channel [18:12] prettyrobots: chrisdickinson: I've pretty much given up on writing code in languages other than CoffeeScript. I'm so much faster as a programmer, my code is fast enough. [18:12] hosh_work has joined the channel [18:12] markc has left the channel [18:13] prettyrobots: chrisdickinson: Where are you going with the terrain engine? [18:13] ezmobius has joined the channel [18:14] jonaslund: nothing happens in chrome ? [18:15] galaxywatcher_ has joined the channel [18:15] `3rdEden: Anyone here know Jade package for `espresso`? [18:15] jonaslund: ok now it works [18:15] tjholowaychuk: `3rdEden submods [18:16] tjholowaychuk: git submodule update --init [18:16] `3rdEden: My eyes will bleed if i don't use use syntax highlighting [18:16] chjj: goddamn, i was wondering how sizzle was optimizing the descendant selector so well. it was twice as fast as my selector engine, i look at the source - and its delegating to document.querySelectorAll [18:16] chjj: and then i facepalmed [18:16] `3rdEden: tjholowaychuk i'm talking about the IDE :$ [18:16] tjholowaychuk: oh [18:16] jonaslund: chrisdickinson: the skybox is broken ? [18:16] tjholowaychuk: why did you mention expresso [18:16] awenkhh has joined the channel [18:16] tjholowaychuk: that's an IDE? [18:16] chjj: on the bright side, now my selector engine is faster than sizzle in every aspect i think [18:16] `3rdEden: tjholowaychuk http://macrabbit.com/espresso/ [18:17] jbpros has joined the channel [18:17] tjholowaychuk: hm.. [18:17] chrisdickinson: jonaslund: yeahhh -- I messed that up pretty bad :) [18:17] chrisdickinson: prettyrobots: re: the terrain engine -- not much of anywhere. eventually i wanted to hook up websockets and see how that affected performance [18:18] chrisdickinson: it'd be amazing to do a browser-based FPS, but unfortunately without mouse capture, that's still a far-off dream [18:18] jonaslund: btw. comparing webGl to classic "opengl" with begin/end or the newstyle with pointers like in GLES ? :) [18:18] atmos has joined the channel [18:18] jonaslund: newstyle = openGL 2.0 and GLES [18:18] prettyrobots: Can you capture the keyboard? [18:18] jonaslund: (webGL is based on the streamlined GLES so well..) [18:18] robhudson has joined the channel [18:19] atmos: anyone know when 0.4.8 is planned to be released ? [18:19] chrisdickinson: jonaslund: i wrote a terrain engine about... 10 years ago in immediate mode with C++. i moved towards the VBO / pointer style towards the end of it [18:19] robhudson: what do people use for json + chunked encoding? [18:19] atmos: there's bugfixes on master that i need but don't wanna roll my own packages from it [18:19] jonaslund: chrisdickinson: ah [18:19] coreb has joined the channel [18:19] tjholowaychuk: atmos: i think he mentioned thursday [18:19] chrisdickinson: it took me... roughly 3 years to write a decent renderer in C++ -- of course, this was my first major project -- whereas the JS terrain renderer took me like... 3 days? [18:19] atmos: sweet, thanks [18:19] jonaslund: personally i don't find it that hard to work with C/C++ really, missing some stuff but it's just life. My style has changed with using alot of languages but i just see it as a benefit. [18:20] jonaslund: you'd prolly make it pretty quickly again in C++ [18:20] chrisdickinson: jonaslund: the biggest win I saw was that I didn't have to muck about with OS-specific apis [18:21] jonaslund: well there's tons of libs that handles that if you don't want to :) [18:21] jonaslund: anyhow, yeah webGL+JS is nice [18:21] chrisdickinson: jonaslund: true enough; but at the time i was writing the C++ version, I was modeling it off of the torque game engine [18:21] jonaslund: chrisdickinson: you're into gamedev ? [18:21] tisba has joined the channel [18:22] chrisdickinson: jonaslund: I was; it was my original M.O. for getting into programming. took a siesta from programming for a couple years while in college, started back into it when I started having to admin the local college radio website [18:22] merlinm has joined the channel [18:22] chrisdickinson: a couple of (hellacious) years in PHP, moved on to python and django, then a year or two ago I got really heavily into JavaScript [18:22] chrisdickinson: prettyrobots: you can capture the keyboard in JS, but not the mouse, unfortunately. [18:23] chrisdickinson: (or fortunately! JS mouse capture might prove to be a nightmare for the web in the hands of people who would abuse it.) [18:23] DTrejo has joined the channel [18:23] merlinm: hey, http://chat.nodejs.org/ has been hacked in some way -- if you tab complete a user name you are getting some very cross site scripty behaviors [18:23] merlinm: it tried to take me to a nsfw site [18:24] robhawkes has joined the channel [18:24] chrisdickinson: prettyrobots: also, belatedly re: coffeescript -- for some reason I still prefer plain-jane javascript; I think it may be because I've internalized the quirks so much that i actually lose time trying to figure out where coffeescript is making life easier for me. [18:24] prettyrobots: Sure. CoffeeScript is my preference. [18:25] tbranyen: debugging with coffeescript seems weird [18:25] chrisdickinson: I can totally see where it's appealing for others, though [18:25] chrisdickinson: ACTION is not a language zealot, by any stretch of the imagination [18:25] prettyrobots: Isn't there mouse capture in HTML5, and also you can certainly detect the mouse when it is over the browser. [18:25] tbranyen: not like you get debugging symbols [18:25] tbranyen: prettyrobots: wat [18:25] tbranyen: like locking in the mouse? [18:25] tbranyen: doubtful [18:25] chrisdickinson: prettyrobots: yes, you can grab mousemove i think, but you can still mouse out of the browser. this presents problems re: controlling a viewport [18:25] tbranyen: if you mean mouse events those have existed since javascript was invented [18:26] jetienne_ has joined the channel [18:26] chrisdickinson: notably: the moment you are about to make the sweetest frag of your gaming lifetime, you press the trigger, and oops, you've accidentally moused over the bookmarks bar and are now headed to reddit.com. [18:26] prettyrobots: chrisdickinson: It shouldn't keep you from designing a game. Oh, viewport, moving the viewport to the left or right by mousing out of the window? [18:26] prettyrobots: Hah. [18:27] prettyrobots: Go full screen. [18:27] prettyrobots: Or hell, you just gave you opponent a Reddit kill. [18:27] tbranyen: prettyrobots: fullscreen wont do anything if you have dual monitors [18:27] prettyrobots: You take these games very seriously. [18:28] chrisdickinson: for web games you kind of need mouse capture, unfortunately :) [18:28] prettyrobots: I doubt it. [18:28] prettyrobots: It sounds like one of those things you think you need, but you find that people learn to live without. [18:28] tbranyen: maybe if you have a single display [18:28] merlinm: maybe for shooters you need full mouse control [18:29] chrisdickinson: for webgl to compete with native games, you kind of need it [18:29] tbranyen: if you have dual monitors locking the mouse to a viewport is crucial [18:29] prettyrobots: I'm only saying this to encourage someone to create a Node.js FPS. [18:29] chrisdickinson: (thinly veiled appeal to authority) : http://blog.tojicode.com/2010/07/webgls-greatest-challenge-as-gaming.html [18:29] tbranyen: chrisdickinson: webgl needs a lot more than that to compete heh [18:29] duncanbeevers: Even fullscreen mousing near the top of the screen usually summons up some browser chrome. [18:29] dguttman_ has joined the channel [18:29] chrisdickinson: tbranyen: out of curiosity, what else were you thinking that it needs? [18:29] prettyrobots: chrisdickinson: You'll find a competitive advantage over native games. [18:29] tbranyen: chrisdickinson: for any major publisher to gain appeal it needs drm [18:30] systemfault: People don't want FPSs.. they want farmville and angry birds :/ [18:30] tbranyen: no drm, no games [18:30] halfhalo: farmville fps [18:30] tbranyen: well you'll get a lot of indie stuff [18:30] chrisdickinson: tbranyen: exactly. [18:30] tbranyen: which goes again the open web [18:30] tbranyen: they aren't really compatible atm [18:30] colinclark has joined the channel [18:30] jonaslund: tbranyen: the net is a perfect DRM compared to the crap they put out [18:30] jonaslund: tbranyen: pay for play [18:30] merlinm: indy games are thing people play for 10 minutes between porn sessions [18:30] chrisdickinson: i'm not exactly too concerned with, say, EA jumping on the webgl bandwagon [18:30] tbranyen: lol [18:30] dambalah has joined the channel [18:31] prettyrobots: jonaslund: You're right. [18:31] chrisdickinson: the next 2D Boy, yeah, I'd like webgl to open up a space for them [18:31] prettyrobots: Sounds like you're letting authority keep you from doing some cool things, ya'll. [18:31] tbranyen: does it? [18:31] prettyrobots: Fight the power. [18:31] jonaslund: webGL will enable us to make alot of games outside of FPS games [18:31] jonaslund: besides [18:31] tbranyen: what power? [18:31] jonaslund: doesn't flash support grabbing ? [18:31] merlinm: forget fps -- the great untapped market is multi user games [18:31] Marak: flash grabbed me once [18:31] jonaslund: (and fullscreen!) [18:31] prettyrobots: The conventional wisdom about mice and DRM. [18:32] chrisdickinson: jonaslund: i think it may. but it'd be nice to avoid having to require a flash plugin to play. [18:32] merlinm: flash is dead. move on [18:32] tbranyen: unity is in [18:32] tbranyen: woot [18:32] systemfault: Flash is here to stay imho.. [18:32] systemfault: (For videos at least) [18:32] helpMeWithVerbs has joined the channel [18:32] tbranyen: no udp for client side gaming either [18:32] prettyrobots: tbranyen: The conventional wisdom about mice and DRM. [18:32] merlinm: systemfault: maybe for a while [18:32] Shrink has joined the channel [18:32] jonaslund: merlinm: not until the very least IE supports webGL [18:32] tbranyen: jonaslund: you mean webdirectx [18:32] systemfault: merlinm: I wish as much as you that it will die :) [18:32] chrisdickinson: prettyrobots: i agree that designing around the limitations of the controls may lead to very interesting games; but i think a websocket enabled, mouse-capturing FPS would be a really great killer app for webgl [18:32] tbranyen: :3 [18:33] Renegade001 has joined the channel [18:33] prettyrobots: And above, the appeal to authority. [18:33] merlinm: sure, but i woudlnt be doing any hobby work around it thats for sure [18:33] jonaslund: tbranyen: I don't think they'll go there [18:33] tbranyen: chrisdickinson: yeah i have the wiimote nodejs bindings working just need someone to create a game [18:33] chrisdickinson: barring that, a nice, simple RTS. [18:33] jonaslund: tbranyen: i don't see it as impossible that they'll adobt Angle and build webGL on that [18:33] tbranyen: multiplayer wiimote enabled webgl fps [18:33] tbranyen: would be tits [18:33] prettyrobots: chrisdickinson: Okay, well, skip the mouse-capturing for now. [18:33] tbranyen: jonaslund: its microsoft [18:33] prettyrobots: Maybe you provide it as a browser extension. [18:33] jonaslund: tbranyen: I think you could access directX from IE6 via activesex [18:34] prettyrobots: Get started without it, but you're really into the game, here's a Google Chrome add on. [18:34] jonaslund: tbranyen: (that is how some PNG hack worked if i don't remember wrong) [18:34] tbranyen: jonaslund: thats not 3d then [18:34] tbranyen: thats direct2d or some shit [18:34] prettyrobots: After your first Reddit suicide, you're movitivated to do the reddit install. [18:34] jonaslund: tbranyen: but i think they know that their api's are unsecure enough to try it [18:34] merlinm: i take it you guys have already seen the js pc emulator? [18:34] helpMeWithVerbs: anybody PLEASE help - about backbone.js - im trying to fetch a model from a strict-REST server and it always tries with the OPTIONS http verb instead of GET :S PS: can u suggest a more appropriate channel for this? [18:34] jonaslund: merlinm: yeah. was just a matter of time [18:35] jonaslund: actually i think there was a previous X86 JS emulator [18:35] jonaslund: it just didn't support linux [18:35] merlinm: oh [18:35] jonaslund: (fabrice bellard is a pretty insane person so well.. ) [18:35] systemfault: Indeed. [18:35] chrisdickinson: helpMeWithVerbs: curious: is the rest site you're trying to grab data from on a different domain? [18:35] systemfault: But he already had experience with x86 emulators (qemu) [18:35] prettyrobots: jonaslund: Why is he insane? Ambitious or difficult to work with? [18:36] chrisdickinson: if so, XHR will preflight the request with an OPTIONS verb to make sure that the Access-Control-Allow-Origins allow the request to be made [18:36] jonaslund: prettyrobots: bellard.org and look at all the projects he started [18:36] helpMeWithVerbs: chrisdickinson: im appending the allow all origins header in all responses [18:36] chrisdickinson: ffmpeg, right? [18:36] systemfault: ffmpeg/qemu/TCC [18:36] prettyrobots: jonaslund: So, ambitious. [18:36] systemfault: he won 2 prized at the IOCCC [18:36] jonaslund: qemu, ffmpeg, tcc and shitloads of other stuff [18:36] systemfault: *prizes [18:36] jonaslund: one price was for the original tcc [18:36] prettyrobots: So, insane by cool? [18:36] chrisdickinson: helpMeWithVerbs: cool -- if it's sending OPTIONS, it's just making sure (beforehand) that that header exists. if it allows access, it'll send the GET afterwards. [18:37] prettyrobots: insane but cool? Insanely prolific? [18:37] systemfault: Last year, he calculated a a few trillions of PI digits with a new algo he inveted. [18:37] jonaslund: prettyrobots: insane by he probably never leaves his computer, being awesome at finishing projects and the scope [18:37] systemfault: (invented) [18:37] chrisdickinson: helpMeWithVerbs: https://developer.mozilla.org/En/HTTP_Access_Control#section_4 [18:37] merlinm: ya that pi thing was insane -- the fastest algo at the time [18:37] prettyrobots: The whole premise of REST if flawed at its very core because OPTIONS is not a verb. [18:37] jonaslund: I think he was involved in making a research java VM/jit in the 90s aswell [18:38] chrisdickinson: prettyrobots: i just OPTIONS'd the other day. totally a verb :) [18:38] Renegade001 has joined the channel [18:38] merlinm: 'java' [18:38] prettyrobots: Also, I don't believe REST will be ready for prime time until they support adverbs. [18:38] helpMeWithVerbs: chrisdickinson: sorry but didn't understand it. the server IS returning the header, and im not taking any other precautions on the client, am i missing something? fetch() only tries it once with the OPTIONS verb in the request [18:39] dgathright has joined the channel [18:39] chrisdickinson: helpMeWithVerbs: is there any error showing up in the console? what Ajax library are you using ($.ajax?) [18:39] helpMeWithVerbs: chrisdickinson: the response with the OPTIONS verb is wrong, but it totally works with GET [18:39] helpMeWithVerbs: chrisdickinson: jquery's [18:40] prettyrobots: jonaslund: Hah. Okay. You never know. When someone says someone on the Internet is insane, they might be working from home -- with a tether on their ankle. [18:40] chrisdickinson: helpMeWithVerbs: I'm not sure the specifics of how jQuery's ajax works. you might try just plain-jane XMLHttpRequest [18:40] merlinm: prettyrobots: curious about yourt statement 'Also, I don't believe REST will be ready for prime time until they support adverbs.' ... what do you mean by that ? [18:40] chrisdickinson: (just to compare results.) [18:40] merlinm: a loose definition of rest includes http which is pretty successful [18:40] prettyrobots: merlinm: I'm sorry. I'm being silly. Also, I think REST is silly. [18:41] merlinm: oh, right [18:41] merlinm: "Representational State Transfer (REST) is a style of software architecture for distributed hypermedia systems such as the World Wide Web." [18:41] helpMeWithVerbs: chrisdickinson: you can access the results directly in the browser, so im sure it works. the only problem is really the way backbone is fetching tghe request. the URL is OK. i just don't get where the OPTIONS are coming from. i've even trying ajaxSetup to define GET as the default verb... [18:42] prettyrobots: merlinm: Yes. HTTP is successful, and the original paper that defined the concept of representative state transfer is a great insight, but the subsequent verb fetishism is silly. [18:42] mraleph has joined the channel [18:42] merlinm: basically, making something more complicated than it really is [18:42] DTrejo has joined the channel [18:43] merlinm: sql->abstract interacitve interpretive hyper data exchange system [18:43] fakewaffle: dreams can come true [18:43] prettyrobots: merlinm: Yes. After the first paper it was a mixuture of bicycle shed and second system syndrome. [18:44] helpMeWithVerbs: let me put it in another way... this does not work: [18:44] helpMeWithVerbs: var Track = Backbone.Model.extend({ url:function(){ return resourceBaseURI + '/Track/' + this.id; } }); var t = new Track({"id":"1234"}); t.fetch(); [18:44] helpMeWithVerbs: shouldnt it just work? [18:44] merlinm: prettyrobots: 'xml' [18:44] prettyrobots: merlinm: XML makes me sad. [18:44] prettyrobots: I spent a lot of time with it. I feel used by it. [18:44] chrisdickinson: helpMeWithVerbs: I wonder if $.ajax.success is getting called based on the result of the OPTIONS request first and then isn't called for the ensuing GET [18:45] helpMeWithVerbs: XSL makes you sad [18:45] tilgovi has joined the channel [18:45] Swizec has joined the channel [18:45] merlinm: xsl: irregular expressions [18:45] skeevis has joined the channel [18:45] jerrysv: xsl makes me cry [18:46] merlinm: i dont see what all the fuss is. you get some database from the database, put it to text and give it to something (or vice versa) [18:46] merlinm: some data that is [18:46] prettyrobots: If you want a good cry, take a job mantaining an Apache Cocoon application. [18:46] prettyrobots: You'll never get the angle brackets out of your dreams. [18:47] yozgrahame has joined the channel [18:47] jerrysv: prettyrobots: i had to deal with mumps and cache' at one point [18:47] merlinm: ha ha -- i just started with node.js and have already decided to say goodbye to apache forever (dont even get me started on tomcat) [18:47] thalll: time for fika [18:48] merlinm: btw node.js is just great [18:48] prettyrobots: jerrysv: The last 10 years has been the open source guys trying to show the enterprise guys that they can create convoluted software bureaucracies too. [18:48] prettyrobots: GitHub saved us from all that. [18:49] jerrysv: prettyrobots: worked at one of those once [18:49] merlinm: i just took a job at actualyl [18:49] merlinm: at one even jeez [18:49] prettyrobots: merlinm: Yes. It is. I abandoned Java a year ago and I am just happier as a person. [18:50] jerrysv: merlinm: dare i ask where? [18:50] merlinm: jerrysv: realpage [18:50] prettyrobots: merlinm: That attitude you have about data, it is a pretty good attitude. [18:50] merlinm: im 100% databse guy, i work on postgres project a little bit [18:50] thomsonit has joined the channel [18:50] merlinm: the node.js pg library is pretty good [18:50] thomsonit has left the channel [18:51] prettyrobots: 10 years ago, cross platform was the rage, and objects were going to make that possible, so we programed to objects, and created ORM skyscrapers. [18:51] viz has joined the channel [18:51] boghog: i feel so sad maintaining php/mysql applications [18:51] prettyrobots: Now everyone is falling in love with DSLs and they have things like Linq and such to express queries. [18:51] prettyrobots: Um... Isn't SQL a DSL? [18:52] merlinm: if you know a little database history sql was invented to cure problems of data management in the application [18:52] dguttman has joined the channel [18:52] prettyrobots: And for the last ten years we've been pushing it back into the application, oh, no, I mean the "middleware". [18:52] merlinm: and almost managed to do t hat [18:53] merlinm: sure, i blame a lot of that on problems in sql, and poor education [18:53] prettyrobots: I believe that you gain a huge advantage if you abandon cross-platform for a platform commitment. [18:53] prettyrobots: And it is easier to switch platforms if you commit anyway. [18:53] merlinm: hm, thats debatable [18:54] merlinm: its a tradeoff [18:54] prettyrobots: Of course it is, but rather than debate, I'll take my huge advantage. [18:54] prettyrobots: I believe that cross-platform on the server side is moot given virtualization. [18:54] merlinm: if your platform goes belly up or gets obsolete you have a problem (think: borland delphi) [18:54] prettyrobots: Borland Delphi is a tool, not a platform. [18:55] merlinm: i was using platform broadly (agree on virt point) [18:55] prettyrobots: And, yes, probably not a good idea to commit to a closed source development tool. [18:56] merlinm: happens to open source too, tcl. although stale is better term [18:56] prettyrobots: I'm saying, oh, I can't trust PostgreSQL to be around in five years, and what if we can save 0.0034 USD a GB on MySQL hosting? Let's code to the LCD so we can use any database. [18:56] Mrfloyd_ has joined the channel [18:56] prettyrobots: I'd rather get to know my database inside and out and use its features to store data. [18:56] merlinm: well, pretty much 100% agree [18:56] prettyrobots: Delphi is open source? [18:56] merlinm: no, i mentioned tcl [18:56] prettyrobots: I remember those days, so long ago. [18:57] jerrysv: prettyrobots: off topic of the channel, but a lot of time is saved moving some aspects of code into the database [18:57] merlinm: there is opensource implementation of delphi or at least the vcl [18:57] atmos has joined the channel [18:57] merlinm: lazarus [18:57] prettyrobots: Oh, TCL. Yes. But, you're cross-platform solution can become stale as well. [18:57] prettyrobots: Like Apache Cocoon. [18:58] merlinm: sure -- apache has the dirty handprints of ibm all over it though [18:58] prettyrobots: I mean, Delphi is a bad example, because any component you chose can atrophy, so it kind of makes the point that trying to hedge is a wasted effort. [18:58] jonaslund: hehe [18:58] jonaslund: tomcat is a big reason why i moved to node.js :) [18:58] merlinm: dont get me wrong -- I do 100% postgres, all the time [18:59] jonaslund: basically i figured i should use something mature to focus on my app [18:59] merlinm: node.js is going to replace my backend web stack though, effective immediately [18:59] prettyrobots: merlinm: Yes. Exactly. As opposed to doing 100% JavaBeans or Hibernate. [18:59] jonaslund: turns out.. using async stuff in tomcat isn't mature at all [18:59] jonaslund: so... erm... yeah that's all out the window [18:59] jonaslund: fuck that.. it's my app so i can take my bets on something "unstable" [18:59] merlinm: our tomcat servers here regularly run themeselves out of memory and reboot [19:00] prettyrobots: Which is part of the agnosticism, but I find when I write SQL, it is portable enough that switching from MySQL to PostgreSQL is straight-forward. [19:00] prettyrobots: Hibernate always made for insane amounts of code. [19:00] jonaslund: merlinm: well usually that's traceable to bad habits and app code though [19:00] mikegerwitz: ORM is absolutely terrible [19:00] merlinm: thats where I disagree -- if you go deep sql, it isnt really portable [19:01] jerrysv: prettyrobots: i found mysql to pg a pain, but oracle to pg pretty straightforward [19:01] merlinm: well, from compatibility standpoint, there's mysql and then everyone else [19:01] jonaslund: ORM is a solution for static languages [19:01] prettyrobots: merlinm: It's translatable. [19:01] lukegalea: Hi all, what's the frontrunner in csv libs for node these days? [19:01] lukegalea: there's 4 or so in npm. [19:01] jerrysv: and odd behaviors (not case sensitive, silent failures, etc) [19:02] prettyrobots: And it is as pluggable as any patterinista contraption to replace queries. [19:02] merlinm: prettyrobots: not really, the postgres type system is much richer for example [19:02] lukegalea: just looking for a "this one worked for me". [19:02] mikegerwitz: jonaslund: ORM is a solution for lazy developers. A solution would be proper abstract that takes advantage of the db, as prettyrobots has been stating [19:02] mikegerwitz: abstraction* [19:02] prettyrobots: lukegalea: For serializing I just created a couple lines of CoffeeScript. [19:03] merlinm: im just gonna come out and say that orm, in fact inheratance heavy style oo programming, just complicates life without much benefit [19:03] jgv has joined the channel [19:03] jbpros has joined the channel [19:03] prettyrobots: One of the things that I like about Node.js is that the community has a healthy skepticism of abstractions and understands that they come at a price. [19:03] merlinm: there are limited exceptions of course [19:04] jonaslund: mikegerwitz: ORM lets you get rid of alot of typing (esp with Java) since it just doesn't allow for a good abstraction [19:04] lukegalea: prettyrobots: thanks. I'm not pro CoffeeScripts so I'm trying to avoid that. [19:04] prettyrobots: While in the Java community, it seemed like it was a race to build the tallest application stack. [19:04] jonaslund: mikegerwitz: In JS a row really naturally just any object.. so that only advantage becomes moot [19:04] merlinm: yup [19:04] cagdas has joined the channel [19:05] merlinm: its a dead end, trust me, i see it all around me [19:05] cagdas: hi [19:05] puffpio has joined the channel [19:05] prettyrobots: lukegalea: I am crazy CoffeeScript fan boy, but the point was that for serialization, I just loop through, escaping quotes, quoting, printing a joined array. A few lines of JavaScript. [19:05] merlinm: next thing you know, you have class factoryfactoryfactory [19:06] prettyrobots: merlinm: Yes. Yes you do. [19:06] mikegerwitz: jonaslund: The problem with ORM is primarily what it generates. There is no substitute to writing proper SQL (or whatever your DB supports). [19:06] mertonium has joined the channel [19:06] lukegalea: prettyrobots: ya, I'm more worried about parsing in this case. Serialization is easy :) I'll give a few of these npms a try and report back! [19:06] lukegalea: thanks! [19:06] merlinm: prettyrobots: to give you example of something you cant really transalte from pg to mysql, i cowrote this: http://libpqtypes.esilo.com/ -- i was playing with idea of using it to allow postgres to send complex json to node.js [19:06] prettyrobots: lukegalea: I figured as much, but I thought I'd say. Not helpful. Sorry. [19:07] jonaslund: mikegerwitz: i totally agree, but data serialization is something that people often get wrong and in those cases it had a "merit"... but ORM is really mostly a relic so.. well [19:07] merlinm: you could query out acyclic graph (tree) and stuff it into json mid-query [19:07] prettyrobots: merlinm: Now you've done it. I'm going to ask you PostgreSQL questions. [19:07] merlinm: the doctor is 'in' [19:08] jonaslund: merlinm: inhertiance as a tool just became useful because it provided for some abstraction for very low level languages .. now it became the primary abstraction in java that was supposed to be a higher level language that made much of the gains of that abstraction moot anyhow [19:08] norviller has joined the channel [19:08] jonaslund: with C++ inheritance "made sense" in a way [19:08] merlinm: jonaslund: inheritance was a horrible mistake in c++, realized far too late -- templates and closures are 'the way' [19:09] prettyrobots: Hah! Found it. [19:09] prettyrobots: http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server/RequestProcessorFactoryFactory.RequestSpecificProcessorFactoryFactory.html [19:09] jonaslund: yes, closures is far superior in most cases [19:09] jonaslund: i'm not really sure about templates though [19:09] merlinm: templates > inheritance because static type safety [19:09] merlinm: even java went to generics (kinda) [19:09] jonaslund: yeah.. java pre-generics was horrid [19:10] merlinm: although, c++ templates has other issues, like 60 page error messages [19:10] jonaslund: it actually kinda became useable afterwards if you used an ide [19:10] swaj: inheritance (at least in C#) saves me a lot of time and repetition [19:10] merlinm: you can get same savings with compositing ususally [19:10] prettyrobots: merlinm: Java Generics couldn't be used without pragmas to ignore unsafe casts. [19:11] jonaslund: swaj: most of what i used to use inheritance for (and struggle to get right) is done quite simply with duck typing and closures,etc.. [19:11] mikegerwitz: Classical inheritance and closures are two very different concepts, both of which have their merit depending on circumstance [19:11] swaj: When I can write a simple abstract class and then make 4 others inherit from it and implement/override as necessary, it's quite nice. [19:11] prettyrobots: It was the ulimate pedant's language feature. You couldn't ask questions about it without questioning the implementation, so people always told you that you were too stupid to use it. [19:11] jonaslund: swaj: what you do there is define a behaviour [19:11] mikegerwitz: Inheritance is misused, regardless. [19:11] merlinm: prettyrobots: still waiting on the question [19:12] prettyrobots: merlinm: They will come when you least expect them. [19:12] swaj: jonaslund: that's more or less what a base class + inheritance is (in C# at least) [19:12] merlinm: hah [19:12] swaj: jonaslund: I say "here's the default behavior, but any child classes either use it or override it" [19:12] tmedema has joined the channel [19:12] prettyrobots: I was just noting that it's cool to know that someone in Node.js is also using PostgreSQL and unafraid to bring the full force of PostgreSQL to bear on an application. [19:13] tmedema: With Express, how should you render a view with a specific status code such as 404? res.render('errorView',... ? [19:13] merlinm: my last project we exposed postgres database right to the internet (through pgbouncer) and C agents would dial in and do 100% data exchange through functions [19:14] mbrevoort has joined the channel [19:14] merlinm: from psql console I could make computers run tasks, list folders, etc [19:15] prettyrobots: At some point I learned how to do a lot of stuff in Generics without ignoring unsafe casts, but by then it was pretty obvious that I was generating twice as much code just to satisfy the compiler and that something had gone horribly wrong with my life. [19:15] MaxguN has joined the channel [19:16] tjholowaychuk: tmedema: pass { status: 404 } [19:16] tjholowaychuk: or res.statusCode = 404 [19:16] prettyrobots: merlinm: Madness. [19:16] merlinm: trust me, javascript is the way. asyncrhonous, closures, etc. i just wish it was more strongly typed [19:17] prettyrobots: Pretty cool, though. You were using PostgreSQL as an agent controller. [19:17] merlinm: yup. we just firewalled the sql in pgbouncer so only a whitelist of commands could go through [19:17] prettyrobots: You felt good about that? [19:17] tmedema: tjholowaychuk: ah so res.render('404', { status : 404 }); ? Did I miss this in the docs? [19:17] swaj: merlinm: that sounds really dirty to me... [19:17] prettyrobots: And I'm not implying that you shouldn't. [19:17] criswell has joined the channel [19:17] tjholowaychuk: tmedema: not positive if it's in the docs [19:17] tjholowaychuk: but node's regular res.statusCode = n [19:17] merlinm: suppose i wanted 10 comuters to restart: select agent_do(id, 'RESTART'), from agent where ... [19:17] tjholowaychuk: will work too [19:18] prettyrobots: Because there is no good way to do agents, and to my mind, the dumber the better. [19:18] tmedema: tjholowaychuk: alright, I don't think it is, thanks a lot [19:18] prettyrobots: And this sounds very dumb, and therefore very better. [19:18] merlinm: swaj: everyone always said that and then they used it [19:18] tjholowaychuk: tmedema might not be i've had question a few times this week [19:18] `3rdEden: ARGH jade is messing with my mind again [19:18] guybrush: tjholowaychuk: express.use also takes regexp's right? [19:18] guybrush: like .get() [19:18] tjholowaychuk: guybrush nope [19:18] guybrush: ah k [19:19] swaj: tjholowaychuk: in looking at the docs for res.render, the "options" object is not explained :P [19:19] tjholowaychuk: use() doesn't have :foo etc either [19:19] guybrush: i see [19:19] tjholowaychuk: swaj no? hmm, k i'll fix them up a bit [19:19] merlinm: there i go, talkikng about my work again [19:19] zeade: is there a node mailing list? [19:19] guybrush: zeade: did you look at nodejs.org? :p [19:20] merlinm: 'real' noders communicate directly with telepathy [19:20] guybrush: zeade: https://groups.google.com/forum/#!forum/nodejs [19:20] swaj: zeade: http://groups.google.com/group/nodejs [19:20] prettyrobots: node.js mailing list [19:20] zeade: righto, thanks :) [19:20] tjholowaychuk: guybrush think of it more as a "dumb" mount-point [19:20] prettyrobots: Google it. [19:20] tjholowaychuk: we could make it more complicated [19:20] tjholowaychuk: but [19:20] tjholowaychuk: not sure how useful that would be really [19:20] norviller has joined the channel [19:20] prettyrobots: merlinm: There is a desire to pour on the architecture when security is involved. [19:21] guybrush: tjholowaychuk: i will do that, just wanted to do some route-based auth with connect.basicAtuh [19:21] guybrush: and regexp-routes [19:21] merlinm: sure, but security scales in complexity with the architecture [19:21] prettyrobots: Yup. [19:21] tjholowaychuk: guybrush ah [19:21] niftylettuce has joined the channel [19:21] prettyrobots: You were sniffing the commands going out to the agents using the firewall? [19:21] guybrush: will try to find a way around this somehow ^^ [19:21] merlinm: typically, the only thing enterprisey stacks give you is really strong auditing [19:22] thomas has joined the channel [19:22] tjholowaychuk: guybrush app.all('/foo/*', middleware) etc should still work [19:22] tjholowaychuk: using the router [19:22] merlinm: prettyrobots: we had a text file: SELECT do_something($1,$2); etc. if the query didn't match one of those, it was bounced [19:22] prettyrobots: merlinm: Interesting. I worry about security, and I'm trying to find a workable mindset. [19:22] swaj: I'm strongly considering writing my own blog with express, just as a means to learn node.js better.... and get rid of the scourge that is PHP on my Linode :P [19:22] guybrush: tjholowaychuk: ahh nice, thx for the hint [19:22] tjholowaychuk: i know what you mean though, fundamentally everything path related in connect could be the same [19:22] guybrush: right [19:23] tjholowaychuk: just adds complexity and would slow regular cases down [19:23] tjholowaychuk: i have mixed feelings about that [19:23] merlinm: prettyrobots: thats why we wrote libpqtypes, '$1' could be complex nested set, (think big xml or json document) [19:23] guybrush: well if it is only for my special usecase, i wouldnt patch for that [19:23] tjholowaychuk: nah, but the express router [19:23] tjholowaychuk: essentially re-implements the dispatcher in connect [19:24] tjholowaychuk: so it would be nice in a way [19:24] prettyrobots: So libpqtypes allowed you to assert the types of the parameters to the functions? [19:24] merlinm: prettyrobots: on the server side, inside do_something, you had (for example): insert into foo select (unnest($1)).*; [19:24] thomas has joined the channel [19:24] tjholowaychuk: to bring that back to connect though routing is not really what connect is for [19:24] merlinm: libpqtypes allows you stuff entire box of stuff in single sql argument [19:24] merlinm: in either direction [19:24] merlinm: for example; [19:24] tmedema: tjholowaychuk: I was confused about what you meant with req.javascripts = []; - were you following up on laurie's suggestion to create a helper or did you mean to set this request param somewhere else? [19:25] swaj: tjholowaychuk: one of your comments from the rails + coffee github thread was in DHH's keynote yesterday. I thought it was funny how he was justifying CoffeeScript. :P [19:25] prettyrobots: swaj: Funny how? [19:26] bene has joined the channel [19:26] Squeese has joined the channel [19:26] swaj: Funny because CoffeeScript is not for me. I don't like losing line numbers when debugging. [19:26] swaj: (amongst other issues) [19:26] tbranyen: tjholowaychuk: urgh i want to use stylus on this project, but i'm wondering what the consequences will be during a hand off [19:26] tbranyen: getting sass installed is so much easier atm [19:26] tjholowaychuk: swaj haha ya i saw that, funny stuff [19:26] jakeg has joined the channel [19:26] merlinm: prettyrobots: create type foo_t as (a int, b int); create type bar_t as (foos foo_t[]); -- you now have a type bar_t that has internal array of stuff. libpqtypes sends that to client directly in binary [19:26] tjholowaychuk: tbranyen if it's not a node project sass might be better if it's easier to install [19:27] tbranyen: yeah its not a node proj [19:27] gf3: also compass [19:27] tbranyen: some day! [19:27] gf3: better docs [19:27] gf3: tjholowaychuk: you working on a nib site? [19:27] tbranyen: well compass i don't care too much about [19:27] tjholowaychuk: gf3 eventually [19:27] gf3: tjholowaychuk: I'd love to help [19:27] tbranyen: at least not for this project [19:27] gf3: tbranyen: WAT [19:27] swaj: prettyrobots: the SCSS thing makes sense. SCSS is nice, and it's for layout anyway. But using CoffeeScript for your app seems counter-productive. Debugging is a pain, and it just adds more complexity in the end. Not to mention it doesn't really save you from having to know javasciprt [19:27] tbranyen: gf3: its a mobile app geared to a single rendering engine [19:27] tjholowaychuk: sass is not as powerful but docs are certainly a win [19:28] gf3: tjholowaychuk: the compass docs are amazing [19:28] tjholowaychuk: yeah they are good [19:28] merlinm: prettyrobots: postgres=# select row(array[(1,2)::foo_t, (3,4)::foo_t])::bar_t; -> ("{""(1,2)"",""(3,4)""}") [19:28] tjholowaychuk: i dont have that much time [19:28] merlinm: all those nasty quotes [19:28] gf3: e.g.: http://compass-style.org/reference/compass/css3/images/ [19:28] tjholowaychuk: tmedema one sec [19:28] gf3: tjholowaychuk: I can help with a site [19:28] merlinm: i want to pop that data directly into node.js json object [19:29] tjholowaychuk: gf3 that would be helpful, nib doesnt even have a readme right now i dont think [19:29] tjholowaychuk: or nothing in it at least [19:29] tjholowaychuk: haha [19:29] gf3: tjholowaychuk: nope, haha, been browsing the source to use the mixins [19:29] tjholowaychuk: tmedema https://gist.github.com/62e9d1e4d4de9393bad5 [19:29] tjholowaychuk: is what we use [19:29] prettyrobots: I use LESS> [19:29] tjholowaychuk: we have jade do this transparently [19:29] tjholowaychuk: though [19:29] tjholowaychuk: one sec [19:29] prettyrobots: I use LESS. [19:29] guybrush: tjholowaychuk: passing req to basic.auth would be nice too, so one could check in the basicAuth-middleware against regexp [19:29] gf3: yuck [19:30] prettyrobots: I don't debug much, so I prefer CoffeeScript. [19:30] prettyrobots: I think SASS is yuck. [19:30] tjholowaychuk: guybrush you can [19:30] prettyrobots: If you're saying yuck to LESS. [19:30] systemfault: JS is fine, I just miss block scoping :( [19:30] guybrush: tjholowaychuk: monkeypatching? :p [19:30] tjholowaychuk: LESS is the worst one [19:30] prettyrobots: I think LESS is yum. [19:30] tjholowaychuk: by far [19:30] tjholowaychuk: guybrush what? [19:31] swaj: SCSS rocks :P [19:31] merlinm: prettyrobots: select unnest(($$("{""(1,2)"",""(3,4)""}")$$::bar_t).foos); (i'm not sure your interested at this point) [19:31] swaj: it's CSS with nesting and variables, which is all I care about :P [19:31] tbranyen: yeah i'm going wtih scss begrungingly [19:31] tbranyen: i want to try stylus soon [19:31] guybrush: tjholowaychuk: nvm [19:31] jakeg: for anyone on a Mac. When you run node, do you do it as a user or as root or using sudo? [19:31] tbranyen: jakeg: totally depends [19:31] prettyrobots: merlinm: I am. [19:31] gf3: tbranyen: why SCSS over the SASS syntax? [19:31] tbranyen: if you're on a lower port [19:31] tjholowaychuk: swaj haha yeah, they all have that [19:31] lukstr: I still don't understand why people are running node as root [19:32] tbranyen: lukstr: to gain access to restricted ports? [19:32] gf3: jakeg: for my dev machines, I use it as my user [19:32] lukstr: tbranyen: that's not the _right_ way to do it [19:32] felixge has joined the channel [19:32] felixge has joined the channel [19:32] merlinm: so in postgres, you receive data in functions, and process with unnest() directing the types directly to sql or another function [19:32] merlinm: its very fast, and very easy [19:32] AAA_awright: I can't ficure out why I would even want this Compass program [19:32] jakeg: lukstr: e.g. "Your node instance does not have root privileges. This means that the flash XML policy file will be served inline instead of on port 843. This will slow down initial connections slightly." [19:32] tbranyen: lukstr: can you enlighten me to an easier way? [19:32] merlinm: one downside is you have to define types strictly for purposes of transoport [19:32] AAA_awright: LESS seems like it has everything I would need [19:33] lukstr: tbranyen: easier? maybe not, better? yes, one sec. [19:33] gf3: AAA_awright: well then you've missed the point entirely [19:33] tbranyen: if running as root scares you on your own development box, you are probably suffering from paranoia [19:33] AAA_awright: gf3: That's my whole point [19:33] AAA_awright: I don't get it [19:33] tjholowaychuk: compass is good [19:33] yozgrahame has joined the channel [19:33] tjholowaychuk: sass is the limitation [19:33] AAA_awright: If I can't figure out what your project is about by looking at the front page, you need a new marketing team [19:33] gf3: AAA_awright: why would you want an abstraction that takes just as long to write code with as the parent platform? [19:34] AAA_awright: If you don't have one, you need one :p [19:34] jakeg: tjholowaychuk: how much work is there to get PDF output into node-canvas? [19:34] tmedema: tjholowaychuk: hmm, seeing a lot of compression related logic there -- not sure how exactly you add your client-side script files to views using this, and what did you mean with jade does it transparently? I am using Jade [19:34] blueadept: what's the comment syntax in stylus again? [19:34] blueadept: / doesn't work [19:34] blueadept: /* [19:34] tjholowaychuk: jakeg: not positive, shouldn't be tons maybe 100 lines or so [19:34] gf3: AAA_awright: or you're lazy ;) [19:34] tjholowaychuk: blueadept // [19:34] tjholowaychuk: or /**/ [19:34] jakeg: tjholowaychuk: thanks [19:34] tjholowaychuk: blueadept / is haml i believe [19:34] blueadept: hm, i tried both and it breaks the entire class or id [19:35] tjholowaychuk: blueadept can i see a gist? [19:35] patcito has joined the channel [19:35] hybsch has left the channel [19:35] ryah has joined the channel [19:35] merlinm: prettyrobots: for example: create function insert_foos(bar bar_t) returns void as $$ insert into foo select (unnest($1.foos)).*; $$ language sql; [19:35] merlinm: select insert_foos('("{""(1,2)"",""(3,4)""}")'::bar_t); [19:35] blueadept: http://pastie.org/private/onm5jxz65ycc7ko11vpmgg [19:35] lukstr: tbranyen: authbind, for example [19:36] merlinm: etc [19:36] blueadept: hm, it works if i make sure the comment is the last line [19:36] merlinm: only instead of farked up escaped text you have formal structure [19:36] tjholowaychuk: blueadept: oh i dont have a block comment [19:36] tjholowaychuk: so that's just one line [19:36] tjholowaychuk: like js [19:36] blueadept: aight [19:36] context: mmm delicious lunch [19:36] tbranyen: lukstr: interesting, i should look into that for production stuff although i tend to just proxy through nginx atm [19:37] hybsch has joined the channel [19:37] tjholowaychuk: blueadept in TM I just select and CMD+/ [19:37] tjholowaychuk: jade has block comments, could add them [19:37] lukstr: tbranyen: as do I. I realize most people _realize_ the consequences of running things as root. At least, I hope. But I fear they do not. [19:38] prettyrobots: merlinm: I need to look at this more later. [19:38] dabailey has joined the channel [19:38] prettyrobots: Basically, there is a type system in PostreSQL that I'm not familiar with yet. [19:39] tbranyen: lukstr: yeah but i hate all the fear people have around it [19:39] merlinm: sure, im sometimes on postgres irc [19:39] tbranyen: like omg i can't believe i need to go into root, gonna get hacked so bad! [19:39] jesusabdullah: ryah: That fucker/fuckee thing you found is hilarity [19:39] tbranyen: when they just need to run something for testing or shit [19:39] halfhalo: your gonna get hacked for just thinking about root! [19:39] tbranyen: haha [19:39] eldios has joined the channel [19:39] prettyrobots: But, I can see that the type system lets you bundle up queries into blobs, somehow. [19:40] merlinm: basically, yes [19:40] prettyrobots: Which is very interesting. [19:40] tjholowaychuk: i like turtles [19:40] lukstr: halfhalo: I like the way you think [19:40] halfhalo: who said I think? [19:40] dabailey has joined the channel [19:40] swaj: I don't remember the last time I used root... at least directly. I'm definitely a member of the "sudo" camp :P [19:40] merlinm: prettyrobots: i want to transmute those blobs into javascript [19:40] lukstr: swaj: semantics [19:40] merlinm: json objects that is [19:41] prettyrobots: jesusabdullah: What thing he found where? [19:41] merlinm: prettyrobots: but not textually, i want to get them in binary from postgres and use internal apis to set up .js objects. for certain types, like timestamps, this is much faster [19:41] prettyrobots: Want to? What you did above is just passing the blobs around, serializing them and deserializing them? [19:42] Tom-Tomaso has joined the channel [19:42] merlinm: pretty much. [19:42] prettyrobots: But, you want to make it so that you can transform from PostgreSQL not to blobs, but to JSON, and back again, using a PostgreSQL type to validate the JSON. [19:42] merlinm: prettyrobots: correct [19:42] prettyrobots: Yes, that would be cool. [19:43] merlinm: so you could pass json block to postgres which would receive as postgres type (if there was one), or json text (if there was not) [19:43] thomas has joined the channel [19:43] pifantastic has joined the channel [19:43] prettyrobots: Ah, or else say, hey someone is fishing with weird request payloads. [19:44] merlinm: as you can see, postgres types can nest and stack. this is *very* powerful for transport [19:44] dabailey has joined the channel [19:44] merlinm: the problem historically is lousy client side support [19:44] ericindc: New to node.js and basic at js...are there any preferred books and/or resources I should start with? [19:45] merlinm: yes. read the 'authoritative calvin & hobbes' [19:45] merlinm: then get coding [19:45] lukstr: we need an FAQ bot [19:46] jmoyers has joined the channel [19:46] merlinm: ACTION is not a fan of learning to program from books [19:46] tmedema: Is there a client-side require system that allows one to merge all modules into one big file for production deployment? [19:46] baudehlo: ericindc: I picked up "Javascript, the Good Parts". It wasn't too bad. [19:47] prettyrobots: I recently found out that it is impossible to teach someone how to program. [19:47] prettyrobots: Uh, for me to do it. [19:47] merlinm: you do by doing it [19:47] prettyrobots: I like Good Parts, but the last time I said that here, I got yelled at. [19:48] ericindc: baudehlo: thanks [19:48] pedrobelo has joined the channel [19:48] draginx1 has joined the channel [19:48] draginx1: f'in win for nodejs https://github.com/unconed/TermKit [19:48] ericindc: merlinm: yes, but doing it is different from doing it well; and learning from others is useful for that [19:48] tjholowaychuk: ericindc: just brush up on js with some tutorials or a quick book, but i can't recommend enough to just pick some "respected" people or projects you like and read all the code [19:48] merlinm: ericindc: true [19:48] tjholowaychuk: if you dont understand something, look it up, and keep reading [19:48] joeshaw: there was a good site making the rounds recently [19:49] ericindc: tjholowaychuk: agreed. just wasn't sure if there were some fundamentals before diving into the more complex stuff [19:49] tbranyen: draginx1: thats nodejs? [19:49] jerrysv has joined the channel [19:49] ericindc: Are there modules I should start looking at that fit the "respected" people requirement? [19:50] tjholowaychuk: ericindc totally depends on how much js you know i suppose, but even then i think it will make more sense seeing real code [19:50] draginx1: tbranyen: written in nodejs so it says but i also noticed i tjus said alpha still being dev'ed which sucks [19:50] DTrejo has joined the channel [19:50] lukstr: ericindc: by example is probably the best currently, just pouring through well commented code. Dig around on github for samples [19:50] draginx1: and 16 issues lawls [19:50] tbranyen: oh neato, thought i read somewhere it was something else [19:50] dabailey has joined the channel [19:50] draginx1: would be cool if this were a real app (how good is nodejs at making simple windows applications? Not microsoft windows but programs) [19:50] dabailey has joined the channel [19:50] Aria has joined the channel [19:51] lukstr: draginx1: the modules exist to do so on a variety of platforms, it's not terrible [19:51] draginx1: which modules? :D [19:51] joeshaw: ah, here it is [19:51] joeshaw: http://bonsaiden.github.com/JavaScript-Garden/ [19:51] ericindc: tjholowaychuk: my js needs some work; it's not entirely unfamiliar, but I've been focused on other languages for several years now [19:52] theycallmeswift has joined the channel [19:52] joeshaw: if you already know how to program, that's a helpful site for wrapping your head around JS [19:52] ericindc: joeshaw: great, thanks [19:52] draginx1: joeshaw: thanks for that link :D [19:53] zcopley has joined the channel [19:54] theycallmeswift: node takes like 9 years to install on my old ass work machine :\ [19:56] lukstr: draginx1: https://github.com/mscdex/node-ncurses ? :P [19:57] draginx1: of course mcsdex built one :P [19:57] garrensmith has joined the channel [19:59] mikeal1 has joined the channel [20:00] lukstr: draginx1: there are some in the works but nothing solid yet, mostly experimental. Sorry :/ [20:00] draginx1: no worries thanks for the ink :) [20:00] draginx1: link* u r not an octopus! :O [20:00] springmeyer has joined the channel [20:00] lukstr: you don't know me! [20:00] draginx1: lol [20:01] jakeg: i'm going mad here... can someone please help explain how to get $NODE_PATH set when running "sudo node". I have export NODE_PATH="/usr/local/lib/node_modules" in my user's .bash_profile and root's .profile. Works fine when running node as me, but not with sudo [20:01] context: are there any packages like capistrano for nodejs ? [20:03] jmoyers: you can use cap with nodejs. [20:03] jakeg: this gist shows what i mean: https://gist.github.com/80fd331a3eb86b42b47f [20:03] jmoyers: context: also cast, http://cast-project.org/ [20:04] context: jmoyers: thnx. yeah im actually learning cap now :/ [20:04] context: jmoyers: you know any good references/get-start guide for cap, i cant find crap anymore :x [20:05] jmoyers: context: not off the top of my head [20:05] mscdex: ncurses! [20:07] lukstr: mscdex: yes, ncurses [20:07] w_wilkins has joined the channel [20:07] mscdex: :-D [20:07] patrickarlt has joined the channel [20:07] cloudhead_ has joined the channel [20:08] Kryckan has joined the channel [20:08] tdegrunt has joined the channel [20:08] ncb000gt has joined the channel [20:08] cloudhead has joined the channel [20:09] yizzreel has joined the channel [20:09] jakeg: do people here set $NODE_PATH and run "sudo node" ? [20:10] Aria: Not often. [20:10] sechrist has joined the channel [20:12] TooTallNate has joined the channel [20:14] mikey_p: i try not to sudo package management on my dev machine [20:14] TooTallNate has left the channel [20:14] TooTallNate has joined the channel [20:14] Kryckan has left the channel [20:15] ncb000gt: jakeg: I've recently had to set $NODE_PATH for different things, but did it only for that process [20:15] liquidproof has joined the channel [20:15] ncb000gt: jakeg: NODE_PATH=$NODE_PATH:/some/path sudo node somescript.js [20:16] jakeg: thanks [20:17] ncb000gt: mikey_p: I don't usually either, but I've had global module issues before due to paths. [20:17] Nexxy: mikey_p, you should use sudo when installing stuff via npm [20:17] mikey_p: ACTION will not [20:17] colinclark has joined the channel [20:17] Nexxy: well it sandboxes the install scripts [20:17] Nexxy: sooo [20:18] ncb000gt: Nexxy: that's not true. you can locally install modules. [20:18] jakeg: not all modules [20:18] Nexxy: ACTION sighs [20:18] ncb000gt: locally to whatever project you are working on [20:18] jakeg: e.g. nowjs [20:18] Nexxy: ncb000gt, yes, that is the default behaviour [20:18] jakeg: ... compiles stuff, and thus we want to keep it out of our repo [20:18] Nexxy: but you should still use sudo ;3 [20:18] ncb000gt: Nexxy: I'm aware [20:18] mikey_p: i'd really rather keep my whole /usr/lib directory writeable [20:18] jakeg: so different users can have different versions of it (installed to their machines globally) [20:19] ncb000gt: Nexxy: Why should I use sudo if the modules are being installed locally to my project? [20:19] steph021_w has joined the channel [20:19] Nexxy: ncb000gt, so that npm can deescalate your privileges [20:19] Nexxy: and keep you save from potentially wayward modules! [20:19] luigi_fanatiker has joined the channel [20:20] ncb000gt: Nexxy: paranoid much? [20:20] ncb000gt: :) [20:20] Nexxy: ncb000gt, just acting on the authors suggestion [20:20] darshanshankar: wait jakeg what do you mean nowjs can't be installed locally? [20:20] mikey_p: i love how the duostack package is a ruby script [20:20] Nexxy: I refused to use sudo as well, then I asked for clarification [20:20] luigi_fanatiker: i love the way you code [20:21] jakeg: darshanshankar: it can. but it uses node-proxy which compiles stuff. so if we add it locally in our git repo, then another developer on a different environment pulls it, it doesn't work [20:21] Nexxy: jakeg, isn't that what .gitignore is for? ;o [20:21] ncb000gt: Nexxy: Yea. I get it. But, I don't see it as a requirement. [20:21] Nexxy: ncb000gt, enjoy your compromised system! [20:21] mjijackson has joined the channel [20:22] jakeg: Nexxy: surely it makes more sense for all developers on our repo to simply "npm install -g now" rather than all installing locally with .gitignore [20:22] wadey: tjholowaychuk: would you accept a patch that would make it possible to disable colors in cluster.debug()? (by passing {color: false}) [20:22] Nexxy: if you're only developing one application ever [20:22] Nexxy: sure [20:22] ncb000gt: Nexxy: yea...I haven't yet seen a malicious module. Additionally, I don't take modules at face value. I tend to research them before use (ie... look at the code). [20:22] jakeg: Nexxy: explain re one app ever? [20:22] Rodtusker has joined the channel [20:23] tjholowaychuk: wadey: if it's not ugly yeah [20:23] criswell has joined the channel [20:23] wadey: tjholowaychuk: it's not too bad, I'll do a pull request and you can check it out [20:23] Nexxy: jakeg, too many globally installed modules makes projects brittle [20:23] sridatta has joined the channel [20:23] Nexxy: suppose nowjs had an api change [20:24] Nexxy: and you install a new version for another project for some reason [20:24] jakeg: Nexxy: sure [20:24] Nexxy: it just seems more logical to keep a project's dependencies... you know... with the project [20:25] jakeg: Nexxy: so what do/would you do. you have an app. requires various modules inc node-proxy that requires compiling. do you locally install everything via npm into our repo and then simply .gitignore the ones that must be compiled separately for each system? [20:26] jakeg: Nexxy: or would you not put any npm installed modules in our own repo at all? [20:26] Nexxy: jakeg, ya somefin liek dat [20:26] Nexxy: imo it seems like [20:26] Nexxy: unless I'm missing something [20:26] Nexxy: maybe just ignoring node_modules all together? [20:26] jakeg: has anyone written a best practice guide for this? [20:27] Nexxy: jakeg, I think it's still kinda evolving [20:27] ncb000gt: it is [20:27] moz87 has joined the channel [20:27] Nexxy: so atm I'd say whatever works best for you [20:27] jakeg: Nexxy: but if you ignore node_modules all together, say you have to upgrade a module, you're then requiring all users (and your live app servers) to all have to npm install module@0.0 [20:28] Nexxy: "users" or developers? [20:28] jakeg: developers [20:28] Nexxy: that seems cleaner to me [20:28] moz87: guys, I'm really confused by installation, i am following the instructions at step 3a here https://github.com/joyent/node/wiki/Installation but whenever I reconnect to my server using putty, the node command is not found on the server, does anyone know why this is? [20:28] ncb000gt: both are users though [20:28] moz87: but the command is found, untill i reconnect [20:28] Nexxy: developers aren't people [20:28] Nexxy: therefore by definition they cannot be users [20:28] ncb000gt: true [20:29] jakeg: lol [20:29] ncb000gt: :) [20:29] jmoyers: im a little confused [20:29] jmoyers: if you distribute package.json [20:29] jmoyers: with your git repo [20:29] jmoyers: why cant you clone, and then npm install [20:29] jmoyers: it will make the node_modules for you, locally [20:30] jmoyers: its the equiv of clone && configure [20:30] Nexxy: atm there isn't a way to make npm analyze dependencies for an app [20:30] Nexxy: just for a module [20:30] Nexxy: afaik [20:30] Nexxy: I think that's what the dependency analyzer was for [20:30] jmoyers: sure there is [20:30] jmoyers: dependences:{} [20:30] jbpros has joined the channel [20:30] Nexxy: ooh [20:30] patrickarlt has joined the channel [20:30] Nexxy: I thought we talked about this earlier [20:30] jakeg: quick survey then - when working in your own git repo for your app, who here adds the contents of node_modules to their git repo, and who .gitignore's them? [20:31] Nexxy: jakeg, I'm pushing my node_modules to my repo [20:31] darshanshankar: i .gitignore [20:31] jmoyers: i have them in there [20:31] Nexxy: but I'd eventually like to make hooks for upgrading modules locally instead [20:31] duncanbeevers: .gitignore /node_modules [20:31] jmoyers: fully aware that if someone knows what they are doing, they rm -rf node_nodules, and npm install locally [20:32] duncanbeevers: And heavy use of npm link [20:32] darshanshankar: i mean we have compiled binaries in there... we have to .gitignore [20:32] jmoyers: if they need to be rebuilt [20:32] hoax__ has joined the channel [20:32] Nexxy: that's kinda my reasoning behind it [20:32] jakeg: darshanshankar: for compiled binaries sounds like the best thing to do. but for those that aren't, just seems a bit pointless [20:32] Nexxy: iz a directory that potentially has binaries [20:33] Nexxy: jakeg, it may be an extra step or two [20:33] Nexxy: but IMO consistency is more important [20:33] jakeg: hmm [20:33] Nexxy: since you will most likely be iterating frequently [20:33] Nexxy: why not make your work flow more predictable [20:33] Nexxy: instead of checking for special cases [20:33] col3 has joined the channel [20:34] jakeg: Nexxy: so basically i change some code. it requires a new module. i then have to tell all developers to "npm install blah" after their pull? hmm [20:35] zivester has joined the channel [20:35] nexxy has joined the channel [20:35] nexxy: wtf bluetile [20:36] ncb000gt: jakeg: that's normally how it works... [20:36] CarterA has joined the channel [20:36] jakeg: ncb000gt: sounds sucky [20:36] ncb000gt: if people are upgrading modules/code/deps they have to expect to do some things [20:36] ncb000gt: typically version numbers are an idication of how much suck will be involved [20:37] jakeg: anyone know roughly what % of actively used modules compile binaries on install? [20:37] context: jakeg: you update package.json and release it. so they can npm install [20:37] ncb000gt: jakeg: there are quite a few, but I don't have a specific number for you. [20:38] nexxy: jakeg, 42% [20:38] jakeg: context: i'm just talking about an in-house web-app here, not a module being released using npm [20:38] nexxy: hoarder! [20:38] jmoyers: jackeg: package.json is quite useful for unpublished modules. [20:38] ncb000gt: lol [20:38] ncb000gt: jmoyers: +1 [20:39] ezl has joined the channel [20:39] thomas has joined the channel [20:39] gazumps has joined the channel [20:39] jakeg: jmoyers: not really a module but a whole app/site/business [20:39] jmoyers: i dont get it [20:39] jmoyers: whats the difference? [20:40] jmoyers: multi server environment? [20:40] hellp has joined the channel [20:40] jmoyers: then something like cast, cap, plus package.json [20:40] jakeg: umm, well i'm expecting to just 'git pull; node app.js' on the server to pull in and run the new app [20:40] MattMueller has joined the channel [20:40] MattMueller: Hey guys, [20:40] jmoyers: that.. doesn't work [20:40] jmoyers: if you have a multi OS environment [20:41] mc_greeny has joined the channel [20:41] jmoyers: if you have built modules [20:41] jmoyers: it just doesn't work [20:41] jmoyers: you could use cake and cakefiles [20:41] ncb000gt: jakeg: the point is that deployment of apps is made easier with package.json [20:41] jmoyers: and set up something easy like [20:41] ncb000gt: MattMueller: howdy [20:41] jmoyers: cake rebuild, which would update the modules and compile [20:41] jmoyers: or rebuild.sh etc etc [20:42] jmoyers: and with package.json [20:42] jakeg: [20:42] jmoyers: its git pull && npm install . && node app.js [20:42] jmoyers: i *think* its npm install . [20:42] MattMueller: I'm working with npm 1.x and I'm trying to get a global bin file to "require" certain modules... for example eco. I've installed eco globally and locally, but require ("eco") seriously cannot be found.. any ideas? [20:42] jmoyers: i cant remember exact syntax [20:43] ncb000gt: MattMueller: I had issues with that as well. Did eco get installed to /usr/local/lib/node_modules or /usr/local/lib/node? [20:43] ncb000gt: and what does your require.paths look like? [20:44] ncb000gt: Also, I only had that issue in Linux, not on a Mac [20:44] Lorentz has joined the channel [20:44] moz87: guys, I'm really confused by installation, i am following the instructions at step 3a here https://github.com/joyent/node/wiki/Installation but whenever I reconnect to my server using putty, the node command is not found on the server, does anyone know why this is? [20:44] moz87: but the command is found, untill i reconnect [20:45] ncb000gt: moz87: is your path screwy? [20:45] mikegerwitz: moz87: export PATH=$HOME/local/node/bin:$PATH [20:45] mikegerwitz: moz87: Put that in your .bashrc or whatever your shell uses [20:45] MattMueller: @ncb000gt: um.. well I tried it in both the global place: ~/local/bin/ and locally in PROJECT/node_modules. That depends on if you add the -g [20:45] MattMueller: @ncb000gt: it's not just eco though, it's any module I try to require [20:46] ncb000gt: MattMueller: The point is that your NODE_PATH is likely screwy [20:46] ncb000gt: if the require() doesn't work then you need to make sure the path that you installed the module to is available to node [20:47] MattMueller: @ncb000gt: Hmm.. I wouldn't be surprised.. how do I fix it? [20:47] ncb000gt: NODE_PATH=$NODE_PATH:/path/to/module node script.js [20:47] sechrist: wait you can checkout a module off of the gittubs and do "npm install ." in your clone? [20:47] sechrist: sick [20:47] AntelopeSalad_ has joined the channel [20:47] ncb000gt: heh [20:47] CarterA has left the channel [20:48] bartt has joined the channel [20:48] ncb000gt: moz87: what mikegerwitz said. when you just do export in the shell it means that the variable is available for the duration of that session. [20:48] MattMueller: @ncb000gt: Yah, it looks a bit off... where do I put that in? [20:48] ncb000gt: when you close the session the var is gone. [20:48] plyons has joined the channel [20:49] moz87: thanks i understand :) [20:49] ncb000gt: cool [20:49] ncb000gt: :) [20:49] moz87: if i run that line again, it works, obviously [20:49] moz87: so i need to put it in the startup [20:49] moz87: new to linux [20:49] ncb000gt: moz87: yep, which is typically .bashrc or .bash_profile unless you're using a different shell [20:49] piscisaureus has joined the channel [20:50] CiRlE has joined the channel [20:50] ncb000gt: MattMueller: You'd type that in when you want to run your script [20:50] ncb000gt: if you want to alter it perm. you'd do the same thing suggested to moz87. [20:50] sechrist: http://nextbigfuture.com/2011/05/henry-markram-and-human-brain-project.html [20:50] sechrist: man these are exciting times [20:50] ncb000gt: modify your .bashrc [20:50] moz87: do you guys know what the best way would be to completely remove all installations or node.js, i think i have installed it mor e than one different ways, not good [20:51] moz87: using https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager and https://github.com/joyent/node/wiki/Installation [20:51] jakeg: jmoyers: with you now re "git pull && npm install . && node app.js" - thanks! Am writing a package.json for our app now [20:51] nsolsen has joined the channel [20:51] jmoyers: cool [20:52] plyons: So node's http.js is throwing: throw new Error("Can't use mutable header APIs after sent."); within the getHeader() function. the get function isn't a mutator, so I don't see why it's throwing this error. Seems like a bug to me. Anyone agree? [20:52] hij1nx has joined the channel [20:52] tdegrunt has joined the channel [20:52] caike has joined the channel [20:52] m64253 has joined the channel [20:53] gmonnerat has joined the channel [20:53] ncb000gt: plyons: you sure it's in the getHeader function? [20:53] ncb000gt: also, link/gist? [20:53] colinclark_ has joined the channel [20:53] ncb000gt: and, if that is happening, that would be strange [20:53] ncb000gt: :) [20:54] plyons: yup line 543 https://github.com/joyent/node/blob/master/lib/http.js [20:54] beldur has left the channel [20:54] gmonnerat has left the channel [20:55] cloudhead_ has joined the channel [20:56] cloudhead has joined the channel [20:56] viz has joined the channel [20:57] plyons: ncb000gt: do that seem fishy to you? [20:58] ncb000gt: plyons: What I suspect is that it's doing this check to make sure that what is sent to the server is what is stored locally, probably for house keeping reasons. [20:58] ncb000gt: It maintains the integrity of the headers that were sent along [20:58] plyons: this is a read-only API call though? [20:58] plyons: I just want to see what value has been set for a header [20:58] saschagehlich has joined the channel [20:58] nibblebot has joined the channel [20:59] plyons: as opposed to setHeader, where such an error makes perfect sense [20:59] Renegade001 has left the channel [20:59] ncb000gt: Sure, but if you have tried to change the headers after they were sent, then in theory you're values are out of sync [20:59] ncb000gt: I don't know that I agree with it being there [20:59] ncb000gt: It should def. be in setHeader [20:59] ncb000gt: and it looks like it is with "Can't set headers after they are sent." [21:00] plyons: if you tried to change the headers with setHeader after they were sent, you would get a legitimate exception [21:00] plyons: right [21:00] ncb000gt: yea [21:00] ncb000gt: Yea. I'm not really sure why it's there. [21:00] ncb000gt: Maybe it's time to ping ryah? :) [21:00] plyons: OK, interesting. It's causing me grief. Will have to look for a workaround. [21:00] ryah: ACTION looks up [21:01] yizzreel has left the channel [21:01] puffpio_ has joined the channel [21:02] pskept has joined the channel [21:02] plyons: ryah we're wondering why http.js OutgoingMessage.getHeader throws an error if its called after the headers have been sent. Seems like an error is not appropriate since this is a read-only API call. [21:02] ncb000gt: ryah: basically, is there a reason that OutgoingMessage.getHeader throws an error about mutable headers when the setters are checking whether someone tries to mutate an already sent header? [21:02] ncb000gt: haha [21:03] sherod has joined the channel [21:03] MattMueller has left the channel [21:03] Venom_X_ has joined the channel [21:03] ryah: ncb000gt, plyons: probably not [21:03] ryah: sounds like a bug [21:04] plyons: OK, I'll file a github issue for it [21:04] plyons: I think the fix is just to delete the relevant code [21:04] mikl_ has joined the channel [21:04] ryah: mention @creationix in the issue [21:04] plyons: OK [21:05] stonebranch has joined the channel [21:05] plyons: looks like there is an open issue https://github.com/joyent/node/issues/752 [21:05] _fat has joined the channel [21:06] mraleph1 has joined the channel [21:06] ncb000gt: ryah: thanks! [21:08] ncb000gt: I tagged creationix in the ticket. [21:08] c4milo: hey guys, haproxy or node-http-proxy? [21:08] mjijackson has joined the channel [21:09] c4milo: for reverse proxy and load balancing [21:09] igl has joined the channel [21:09] mattly has joined the channel [21:10] febits[0] has joined the channel [21:10] udp has joined the channel [21:11] udp: with the new IOCP node stuff, will we be able to add our OVERLAPPED-s and be notified when they complete? [21:12] beriberikix has joined the channel [21:12] mscdex: c4milo: node-http-proxy will allow you to proxy websockets easily, haproxy forces you to use tcp mode to proxy them, which means you can't inspect http headers and such first [21:13] mscdex: otherwise haproxy works pretty good for load balancing and such [21:15] jacter has joined the channel [21:15] mikeal has joined the channel [21:16] dabailey has joined the channel [21:17] MattMueller has joined the channel [21:17] MattMueller has left the channel [21:17] mikeal: can we get code in to 0.5 yet? [21:18] dabailey has joined the channel [21:18] dabailey has joined the channel [21:18] zmbmartin: Is there a textile parser for node? [21:19] zmbmartin: somethat that works with expressjs [21:19] mkrecny: ran up against maxSockets:5 today using twitter's site stream api [21:19] mikeal: i would think that with the stream api from twitter you would just hold one connection [21:19] mkrecny: you can only follow 100 users per connection [21:20] mkrecny: that's a limit on their end [21:20] mikeal: oh i see [21:20] mikeal: just create an account, follow them, and then grab the chirp stream from your user [21:20] a|i has joined the channel [21:20] a|i has joined the channel [21:20] mkrecny: isn't that one connection per user? [21:21] mkrecny: oh i see what u mean [21:21] mikeal: the chirp stream for a user has all the tweets they are following [21:21] mkrecny: does the api expose 'follow'? [21:21] mikeal: yup [21:21] udp: who's writing the new windows stuff for node? [21:22] mikeal: a bunch of people [21:22] tbranyen: all me [21:22] mikeal: haha [21:23] zomgbie has joined the channel [21:24] Poetro1 has joined the channel [21:24] temp01 has joined the channel [21:25] fakewaffle has joined the channel [21:25] dabailey has joined the channel [21:26] hdon has joined the channel [21:26] mkrecny: mikeal: I'm wondering what's the point of the site stream api now...? haha [21:26] mikeal: site stream? [21:27] mkrecny: it's the twitter api for multiplexing user streams [21:28] mikeal: you get *everything* [21:28] mikeal: if you're following someone [21:28] mikeal: you won't see @ replies to people you don't follow [21:30] b_erb has joined the channel [21:30] tanepiper: mikeal: just saw watch - quick q, does it output empty dirs in the watch output, or does it ignore empty dirs? [21:31] mikeal: i'm pretty sure you'll get a removed event [21:31] mikeal: cause it's handler is on the directory [21:35] mikeal: dude [21:35] mikeal: i almost have this working [21:35] mikeal: request.get('http://blah.com/image.png').pipe(request.put('http://mysite.com/image.png')) [21:35] mikeal: with content type and length handling [21:36] jbpros has joined the channel [21:37] springmeyer has joined the channel [21:38] tanepiper: mikeal: sweet! over secure as well? [21:39] jerrysv: ooo neat [21:40] patrickarlt has joined the channel [21:40] adnam has joined the channel [21:41] markwubben has joined the channel [21:41] dabailey has joined the channel [21:41] niftylettuce has joined the channel [21:41] catch has joined the channel [21:42] mikeal: request doesn't care about secure vs insecure [21:42] mikeal: it uses whatever node supports under the hood [21:42] ruquay has joined the channel [21:42] herenowcoder has joined the channel [21:43] sorens3n has joined the channel [21:45] jakeg: hmm... anyone written a script so when i run e.g. "npm install blah" it adds/amends ./package.json with blah as a dependency? saves having to write a package.json [21:45] jmoyers: i believe npm can generate a skeleton for you [21:45] jmoyers: or used to [21:45] patrickarlt has joined the channel [21:45] jmoyers: not sure if it lists local deps though [21:46] tbranyen: that would probably be trivial to do with a wrapper around npm install jmoyers [21:46] tbranyen: er jakeg [21:46] Swizec: jakeg wouldn't taht mean EVERYTHING you have gets listed as dependancy? [21:46] Swizec: seems pretty lame [21:46] tbranyen: Swizec: i think he means when you install a module in a package you already have [21:46] tbranyen: it will automatically add it as a dep [21:46] tbranyen: that seems incredibly useful [21:47] jmoyers: agree [21:47] tbranyen: especially if it removes it if you npm uninstall as well [21:47] jmoyers: since today i do [21:47] Swizec: I'd prefer npm add X [21:47] Swizec: I often install from random directories [21:47] tbranyen: if npm can figure out where to put the modules locally i'm sure it can find the package.json too [21:47] jakeg: say i'm creatng a quick demo. i would normally npm install 4 or 5 things. but i want to add them all to a new package.json so i can give it to other developers to easily do too [21:47] bengl has joined the channel [21:48] Swizec: maybe with an optional flag [21:48] Swizec: then again, talk is cheap, first guy who implements it, their way will stick [21:48] Swizec: ;) [21:48] tiglionabbit has joined the channel [21:48] Swizec: I"m sure such a pull request would quickly get accepted [21:48] jakeg: jmoyers: yeah, basically a skeleton [21:49] Squeese has joined the channel [21:49] konobi: you can add to package.json and then run an npm command to install all your dependencies [21:50] dabailey has joined the channel [21:51] jakeg: konobi: ya, so i'm basically saying making writing the package.json as easy as "npm json-install blah" to add to/amend ./package.json with dependency version set to >= current version of that module [21:51] Opaque has joined the channel [21:52] patcito_ has joined the channel [21:52] chapel: jakeg: you should checkout jitsu [21:52] chapel: `v git jitsu [21:52] v8bot: chapel: ilkka/jitsu - GitHub - https://github.com/ilkka/jitsu [21:52] chapel: hmm thats not the right one [21:52] chapel: `v git jitsu node [21:52] v8bot: chapel: More verbose reporting of 500 errors - Issues - nodejitsu/jitsu ... - https://github.com/nodejitsu/jitsu/issues/8 [21:52] jakeg: k [21:52] eyesUnclouded has joined the channel [21:52] chapel: well anyways, it is meant for the nodejitsu service, but it has package creation based on what you require [21:52] zmbmartin: How do I do an updated_at column with mongoose. I tried using a setter but updated_at is not being persisted? [21:53] dabailey has joined the channel [21:53] konobi: jakeg: edit package.json to add your dependency... then `npm install` in your project folder... done [21:54] jakeg: konobi: ya... but i have to create the package.json file first [21:54] F1LT3R has joined the channel [21:54] jmoyers: jak [21:54] dabailey has joined the channel [21:54] tbranyen: konobi: you'd also have to know the specific version and shiz too [21:54] jmoyers: you could write that script trivially [21:54] jmoyers: it would wrap npm [21:54] konobi: jakeg: sure... but to you want to include all teh sub-dependencies as well? [21:54] jmoyers: you could even write it in node [21:54] jmoyers: ^ why include sub dependencies, npm handles that [21:54] jakeg: bit annoying package.json requires a 'name' and 'version' line if all you want to use it for is to install dependencies [21:54] tbranyen: jmoyers: yeah def [21:55] jmoyers: jak, it doesn't 'require' it [21:55] jmoyers: i think you can leave version blank [21:55] jmoyers: not sure of behavior though [21:55] jmoyers: maybe pulls the bleeding edge [21:55] tsesame has joined the channel [21:55] jmoyers: thats bad for reliable behavior though, so most people list a version [21:55] jakeg: well, you need a line for version and name anyway, else npm install . craps out [21:55] dabailey has joined the channel [21:56] jakeg: version needs to be x.y.z or it doesn't work [21:56] patcito has joined the channel [21:56] calebc has joined the channel [21:56] AntelopeSalad has joined the channel [21:56] konobi: jakeg: it can be blank [21:56] chapel: `v git require-analyzer [21:56] v8bot: chapel: nodejitsu/require-analyzer - GitHub - https://github.com/nodejitsu/require-analyzer [21:56] konobi: see npm's package.json for example [21:57] chapel: jakeg: there you go [21:57] chapel: what you need [21:57] mikeal has joined the channel [21:57] chapel: just wrap that up in a script that outputs a package.json file for you [21:58] jakeg: nah, name and version x.y.z are both required [21:58] ruquay has joined the channel [21:58] konobi: https://github.com/isaacs/npm/blob/1.0/package.json [22:00] jakeg: e.g. in order to use package.json simply to install a dependency you need at least https://gist.github.com/979679 [22:00] konobi: so npm can't install itself you say? [22:01] jakeg: eh? [22:01] dabailey has joined the channel [22:02] josephboyle has joined the channel [22:04] hexmare has joined the channel [22:05] Aria: Yagh. There's no way with npm to get at just parts of a dependency. Grr. [22:05] Aria: You have to go in through the main file. [22:05] jmoyers: use case? [22:05] mikeal has joined the channel [22:05] Aria: require('jsdom/level2/core') [22:05] jakeg: https://github.com/isaacs/npm/issues/942 <- my use case [22:06] JacobSingh has joined the channel [22:06] jmoyers: those are.. two fields [22:06] jmoyers: i dont get it [22:06] jmoyers: its less than 30 seconds [22:06] JacobSingh: So, with the request module, it should only fire the callback once the response is totally finished right? [22:06] JacobSingh: (If I don't provide any options) [22:06] ruquay has joined the channel [22:06] jakeg: jmoyers: they serve no purpose for non-published modules [22:07] jmoyers: only if its a top level application. [22:07] jmoyers: private non-top level applications need [22:07] jmoyers: sounds like a grip of complexity for two lines [22:08] jakeg: yup, which it is. as per our chat earlier about whether in a team of developers on an in-house app should be adding node_modules to their repo or gitignoring it and npm install'ing modules instead [22:08] sonnym1 has joined the channel [22:09] jakeg: i want to tell my team not to "npm install xxx" and instead make a package.json file for it instead [22:09] jmoyers: yes.. [22:09] jmoyers: so add teh name and version [22:09] jmoyers: 0.0.0 [22:09] Aria: Yeah. I'd rather have npm install (either by default or with an option) add it to the list of dependencie. [22:09] jmoyers: two different issues [22:10] jmoyers: what if your node_modules is two directories down [22:10] jmoyers: because you are using it for 5 different projects? [22:10] jakeg: not necessarily.... "npm install blah -json" could add it to ./package.json as well :D [22:10] jmoyers: do you add the dep to all 5 projects deps? [22:10] mscdex: node.js rules! [22:10] mscdex: still! [22:11] mscdex: can't wait until 0.6 :-D [22:11] jakeg: jmoyers: surely it would be better to have a package.json file for each of those projects (seeing as they may all use different versions of the modules anyway) and make creating that package.json file as simple as possible [22:12] davidbanham has joined the channel [22:14] Aria: https://github.com/isaacs/npm/issues/943 [22:15] Aria: https://github.com/tmpvar/jsdom/issues/211 [22:15] piscisaureus_ has joined the channel [22:15] piscisaureus_ has joined the channel [22:15] mendel_ has joined the channel [22:16] jakeg: Aria: cheers [22:17] Aria: Cheers! [22:18] uchuff has joined the channel [22:18] criswell has joined the channel [22:19] insin has joined the channel [22:21] hybsch has left the channel [22:21] skyloid has joined the channel [22:23] wadey: tjholowaychuk: the docs for cluster say "SIGUSR2: restart workers", but it in fact restarts the master too [22:23] wadey: that caught me by surprise when the master pid changed [22:24] tjholowaychuk: wadey ah, yeah i should change that to just "restart" or something [22:24] tjholowaychuk: but yeah [22:24] tjholowaychuk: master restarts to re-load config etc [22:24] wadey: the source code says "`SIGUSR2` graceful restart" [22:24] wadey: so thats probably a better way to document in the markdown file [22:25] tjholowaychuk: i probably just didnt update the site [22:25] SubStack: mape: mind fixing this? https://github.com/mishoo/UglifyJS/issues/152 [22:25] SubStack: should be super easy [22:25] jakeg: Aria: https://github.com/isaacs/npm/issues/914 <- omg almost identical! [22:25] troessner has joined the channel [22:25] jakeg: should really have done a quick search first. oops [22:25] _fat has joined the channel [22:26] Hamms has joined the channel [22:26] Aria: Oh fun! [22:28] jakeg: Aria: did you do anything special in github to mark them as dups, or just added a comment to both threads with #issue_num ? [22:29] MaxguN has left the channel [22:29] criswell has joined the channel [22:29] Wa has joined the channel [22:30] uchuff has joined the channel [22:31] uchuff has joined the channel [22:31] shimondoodkin has joined the channel [22:32] robhudson: what do people use for json + chunked encoding? [22:32] shimondoodkin: is there html like haml template engine? [22:32] jakeg: shimondoodkin: jade [22:32] jakeg: and it's great! [22:33] shimondoodkin: thanks [22:33] shimondoodkin: i want to try it with dojo [22:33] tjholowaychuk: and it's 5th on google for "jade" [22:33] tjholowaychuk: for some reason [22:33] jakeg: Aria: https://github.com/isaacs/npm/issues/944 [22:33] tjholowaychuk: sorry 7th [22:33] jmoyers: i find most node projects are like that [22:33] jmoyers: try finding 'cast' [22:33] jmoyers: or something [22:33] jmoyers: i always say ' nodejs' [22:34] draginx1 has left the channel [22:34] rfay has joined the channel [22:35] jakeg: well... jade *is* a pretty common word! [22:35] shimondoodkin: jade isnt what i am looking for, [22:35] josephboyle has joined the channel [22:35] shimondoodkin: i want like [22:35] shimondoodkin: [22:35] shimondoodkin: [22:35] shimondoodkin: [22:35] shimondoodkin: title [22:35] shimondoodkin: <body> [22:35] shimondoodkin: <h1>Jade - node template engine</h1> [22:35] shimondoodkin: <div id="container"> [22:35] shimondoodkin: <p>You are amazing [22:36] jmoyers: you want.. [22:36] jmoyers: html? [22:36] jakeg: lol [22:36] shimondoodkin: htmalol [22:36] shimondoodkin: html without closing tags [22:36] shimondoodkin: with ident [22:36] tjholowaychuk: can't you already do that with html? <li>foo\n<li>bar\n [22:36] jmoyers: html.. without closing tags [22:37] jmoyers: if you're going to do something like this [22:37] shimondoodkin: with dojit it becomes messy [22:37] jakeg: shimondoodkin: just use jade. seriously. tj made it pretty awesomely [22:37] jmoyers: why not use jade etc [22:37] adnam: scribe is pretty hot [22:37] tjholowaychuk: im pretty sure regular html lets you do that [22:37] tjholowaychuk: maybe not xhtml [22:37] tjholowaychuk: but html [22:38] shimondoodkin: if i use some non htmlish synax i will have to rewrite many dojo examples [22:38] ardcore has joined the channel [22:38] briznad has joined the channel [22:38] ryanallenbobcat has joined the channel [22:38] jeremyselier has joined the channel [22:38] shimondoodkin: *syntax [22:39] tjholowaychuk: shimondoodkin you could quickly tweak jade [22:39] justinTNT has joined the channel [22:39] tjholowaychuk: shouldnt be more than a few lines to allow that [22:40] shimondoodkin: yes i am reading the source now [22:43] timmywil has joined the channel [22:44] b_erb has left the channel [22:45] eyesUnclouded has joined the channel [22:46] gqlewis has joined the channel [22:46] Pif|2 has joined the channel [22:47] shimondoodkin: are there inbrowser javascript template engines? [22:47] zitchie has joined the channel [22:47] tjholowaychuk: millions [22:48] shimondoodkin: :) [22:48] shimondoodkin: yes i remember jqtemplate [22:48] tjholowaychuk: if there's a test framework [22:48] tjholowaychuk: there is 10 template engines [22:49] shimondoodkin: how they store they template, whats your idea [22:49] shimondoodkin: in atextarea [22:50] shimondoodkin: i rememebr i saw one does in a script tag [22:50] shimondoodkin: *does it in [22:50] Adman65 has joined the channel [22:51] shimondoodkin: what could be a good way to do it [22:52] shimondoodkin: can jade work client side? [22:52] truedat101 has joined the channel [22:53] shimondoodkin: ACTION got an idea to use html2jade [22:53] kmiyashiro: wouldn't assembling the view on the server be faster? [22:53] jmoyers: one usually goes the other way [22:53] jmoyers: caches the generated html on the server [22:54] kmiyashiro: so you send the final markup to the server? [22:54] kmiyashiro: seems odd to me, what's the benefit? [22:54] jmoyers: im talking shims question [22:54] jmoyers: not your response [22:55] benmonty has joined the channel [22:55] jmoyers: i agree -- render on the server, cache, and send to the clients [22:55] shimondoodkin: at the moment i have some simple html, no templates [22:55] shimondoodkin: ok [22:55] shimondoodkin: ill add templates [22:55] shimondoodkin: :0 thanks [22:55] shimondoodkin: :0 [22:55] shimondoodkin: :) [22:56] Squeese has joined the channel [22:58] vipaca_ has joined the channel [22:59] Marak has joined the channel [22:59] Marak: hey maushu you alive? [22:59] maushu: zombie [22:59] Marak: maushu: you a bot now? [22:59] maushu: zombie bot [23:00] Marak: was that you who was using levenshtein distance for calculating if something was a RT or not? [23:00] maushu: zombie ninja vampire robot [23:00] pyrony has joined the channel [23:00] maushu: Hmmm. [23:00] maushu: Yes, I believe so. [23:00] justinTNT: jsmf [23:00] samsonjs has joined the channel [23:00] maushu: Why? [23:00] mikeal has joined the channel [23:00] Marak: maushu: we rebuilt announcer bot and twitter bot, gonna OSS the whole thing soon [23:01] roar1 has joined the channel [23:01] Marak: we've got it ignoring RTs based on some static analysis, as well as the retweet property [23:01] Marak: but sometimes they still get through if someone does a copy paste [23:01] maushu: And you want the levenshtein algorithm or something? [23:01] Marak: do you think the levenshtein approach will stop that? [23:01] Marak: not really, i can find it easy enough [23:01] maushu: Don't base it on the retweet property. [23:01] Marak: curious as to how that would actually work [23:01] jerrysv: i *heart* levenshtein distance [23:01] maushu: It doesn't work. [23:01] AvianFlu has joined the channel [23:01] Aria: retweet + detect the rest via lev? Awesome. [23:01] maushu: Most (and by most I mean like 99.99%) people just copy & paste. [23:02] Aria: Or use apps that don't set the retweet bit. [23:02] Marak: so yeah maushu, do you think you could gist the snippet or the general approach? did it work well? [23:02] maushu: Or their clients do, I have no idea. [23:02] jasonmcleod has joined the channel [23:02] maushu: Yes, it worked pretty well. [23:02] Marak: i'll give you credit in the app if you'd like [23:02] Marak: if not, we can just mash together something and hope it works [23:02] jasonmcleod: Holy mess! So many people! [23:03] maushu: It only checked for the last 100 tweets though. [23:03] maushu: And it used the algorithm every time, so it was a little heavy. [23:03] Marak: maushu: anything you have would be cool, AvianFlu and I are just curious how it works, seems like a cool application of levenshtein [23:03] Marak: :-D [23:03] maushu: But worked perfectly only with the exception were the urls. [23:04] Marak: hey jerrysv , you are the leet hacker from portland right? [23:04] AvianFlu: the shortened urls are random, so that's its own problem anyway [23:04] maushu: What you need is the value for the algorithm, lets see if I find it. [23:04] Marak: thanks maushu , you rock [23:04] sherod has joined the channel [23:04] AvianFlu: srsly [23:04] maushu: To fix the url problem I was going to check the url target and compare at the same time using the lev algorithm. [23:04] Aria: Instead of levenshtein distance, could do a Diff::LCS, then compare URLs and things like that to see. [23:05] maushu: Got busy with other stuff so I never did. [23:05] Marak: maushu: the new project will be all OSS, so hopefully we can set you up in a nice place to make changes should you feel like taking a few minutes to hack around [23:05] maushu: Aria, I don't know if diff will work. [23:06] aconbere has joined the channel [23:06] Aria: Nah? [23:06] boogyman has joined the channel [23:07] Aria: It'd highlight the not-same parts, and you could flatten that into a list, see that it gives you basically [+ RT, - oldURL, + newURL] ... that looks like a retweet to me, one with a URL that got reshortened. [23:07] ryanfitz has joined the channel [23:07] Vertice has joined the channel [23:07] mikeal has joined the channel [23:09] sherod has joined the channel [23:09] maushu: Marak, https://gist.github.com/979790 [23:10] maushu: The value I used was 25, check if its less than that and you found a retweet. [23:10] jerrysv: marak: wouldn't go *that* far :) [23:10] maushu: I think I got that value with lots of experimentation. [23:11] zitchie has joined the channel [23:11] jerrysv: marak: but yeah, i'm the portland guy [23:12] maushu: I also just checked the last 100 tweets for performance. [23:12] maushu: And the bot is still here: http://www.graphnode.com/stuff/ircbot.js [23:13] maushu: Feel free to rip anything you want. No credit needed. [23:13] pedrobelo has joined the channel [23:14] jaket has joined the channel [23:16] itsTodd has joined the channel [23:16] ezl has joined the channel [23:17] balaa has joined the channel [23:19] tahu has joined the channel [23:19] itsTodd: I have a client with a dedicated server that hosts about 125 websites using cPanel/PHP etc... I really want to start moving toward using Node.js for our projects but I don't know if you could host over 100 websites with node.js on a single server. What do you guys think? [23:19] puffpio has joined the channel [23:19] squaretone_ has joined the channel [23:20] temp01 has joined the channel [23:20] itsTodd: Most of the websites have very little traffic [23:20] Aria: You sure could. [23:20] Aria: Might not be the perfect tool, but there's no reason you can't use multiple tools. [23:20] jerrysv: itsTodd: what sort of backing store do you have? what sorts of problems could cause bottlenecks? [23:20] niftylettuce has joined the channel [23:21] Marak: maushu: peeping [23:21] Marak: jerrysv: 10-4 [23:21] Marak: jerrysv: hello also :-) [23:21] itsTodd: My biggest concern is running 100 instances at the same time on one server. I was thinking of building something that kind of offloads apps as they are not used then loads them back up when they are requested again until they go idle [23:21] maushu: Oh, you pervert. [23:21] jerrysv: marak: hola! [23:21] donaldpcook has joined the channel [23:21] Aria: You could do that. Though if they're truly idle, they could swap out, too. [23:22] jerrysv: 100 instances? why? [23:22] itsTodd: I admit that most of the projects don't really require too much async but I just wanted to start using JS in our projects rather than PHP [23:22] derencius has joined the channel [23:23] ChrisPartridge has joined the channel [23:23] jerrysv: itsTodd: no reason why a single instance couldn't serve up data for more than 1 domain [23:23] itsTodd: jerrysv: because I have 100 websites hosted on the same machine and I am very ignorant to how node.js works so I am just doing some research :-) [23:23] Marak: maushu: have you seen this module yet by gf3 ? https://github.com/gf3/Levenshtein [23:23] Marak: gf3: does that shit work or what? https://github.com/gf3/Levenshtein I'm too stupid and lazy to download it and run the tests. [23:23] maushu: That module was way after announcer was built. [23:24] Marak: maushu: of course [23:24] jerrysv: itsTodd: since the node.js instance can also be the webserver, you should be able to bind to multiple interfaces and/or check the http headers for the host to serve traffic for [23:24] Marak: itsTodd: we've got some solutions @nodejitsu for running multiple node.js applications on various hosts / ips / ports / cores / etc [23:24] Schmallon has joined the channel [23:24] maushu: Hmm. No idea if Array.forEach is faster. [23:24] Marak: itsTodd: http://github.com/nodejitsu [23:24] Marak: itsTodd: http://github.com/nodejitsu/haibu [23:25] Marak: itsTodd: http://github.com/nodejitsu/node-http-proxy [23:25] itsTodd: Marak: Thank you! I was the one who asked you if you thought cloudfoundry was a competitor on twitter the other day ;-) [23:25] jerrysv: marak: that stuff can be kind of heavy weight for a newbie [23:25] Marak: itsTodd: ahh cool! [23:25] Marak: jerrysv: we are working on making it a little more friendly, espically haibu [23:25] itsTodd: I didn't realize nodejitsu was open source [23:25] Marak: jerrysv: we opt'd to release early on that project [23:26] jerrysv: marak: haibu looks awesome, btw [23:26] itsTodd: jerrysv, I appreciate you looking out for the newbie but I can catch on pretty quick [23:26] Marak: itsTodd: yeah, most of our stack is OSS, we've been working on this stuff since 2009 :-) [23:26] Marak: jerrysv: thanks...CLI tool coming soon... [23:26] Marak: jerrysv: the CLI and web interface should really make it easy for people to use haibu [23:26] Marak: :-D [23:26] mikey_p_ has joined the channel [23:27] pifantastic_ has joined the channel [23:27] frewsxcv_ has joined the channel [23:27] frewsxcv_ has joined the channel [23:27] novumordo has joined the channel [23:27] jhford_ has joined the channel [23:28] monokrom1 has joined the channel [23:28] itsTodd: Marak: haibu looks like exactly what I need. Thank you! I can't wait to dig in [23:29] tiglionabbit: how do you handle templates that need to be both on the server side and the client side? [23:29] w_wilkins has joined the channel [23:29] Marak: itsTodd: its not even v0.2.0 yet, so its not going to be very friendly, but the code is very solid and we'll be improving the usability nonstop all year [23:29] Marak: itsTodd: please feel free to open up an issue / comment on issues, the more feedback the better [23:29] Marak: :-) [23:29] mikey_p_: was just going to ask, why not use haibu? [23:29] itsTodd: Marak: This is all research for me right now so that is totally fine. I can't wait to play with the code [23:30] itsTodd: It is going to take a long time to convince the people in charge to let me migrate our new projects to Node.js rather than PHP anyway [23:30] itsTodd: It might not even be a good idea, I just want to do it for fun [23:31] materialdesign-1 has joined the channel [23:31] mikey_p_: someone just asked me what my favorite new PHP framework was [23:31] gmanika_ has joined the channel [23:31] mikey_p_: i said node.js [23:31] Aria: ACTION smirks. [23:31] mikeal: oh hell yeah son [23:31] mikeal: https://github.com/mikeal/request/commit/63125a33523e72e449ceef76da57b63522998282 [23:32] sivy_ has joined the channel [23:32] Swizec has joined the channel [23:32] yozgrahame1 has joined the channel [23:32] boaz_ has joined the channel [23:33] gqlewis has joined the channel [23:33] mikeal: i'm so glad i got the damn pipe event in to core [23:33] mikeal: none of this shit would be possible :) [23:33] criswell has joined the channel [23:34] ezmobius has joined the channel [23:34] sechrist: people are still using request? :) [23:34] mikeal: hehe [23:35] mikeal: it's the 5th most depended on library :) [23:35] mikeal: http://search.npmjs.org/ [23:35] sechrist: yep I use it [23:35] sechrist: what is underscore [23:35] sechrist: and why are people using it that much [23:35] mikeal: functional programming tools ripped out of prototype [23:35] sechrist: I must have been out of the loops [23:36] mikeal: http://documentcloud.github.com/underscore/ [23:36] sechrist: oh hot [23:36] mikeal: it can actually be really useful [23:36] DoNaLd` has joined the channel [23:37] squaretone_ has joined the channel [23:37] Marak: mikeal: sechrist i think i have commit access to 30+ projects using request [23:37] tiglionabbit: hey guys? How do you handle templating html on the client and server side? [23:37] Marak: maybe 20 [23:37] mikeal: haha [23:37] Marak: most of those deps are from us i think [23:38] mikeal: tiglionabbit: to be honest, i usually just use jquery templates [23:38] Marak: all the pool stuff in core too, thank god for mikeal [23:38] tiglionabbit: mikeal: yeah but I mean how do you re-use the same template on both sides? [23:38] sechrist: wait.. you're doing real work with clientside templating? [23:38] sechrist: I assumed nobody actually used this outside of proof of concepts [23:38] Wa has joined the channel [23:38] Apeiron` has joined the channel [23:38] Marak: sechrist: dude, not cool [23:38] tiglionabbit: do you put it in a file and ajax request it? Do you put it in a variable and include that file both places? [23:38] Marak: sechrist: ive built single page apps that would make your head explode lol [23:39] sechrist: yeah proof of concepts [23:39] Marak: sechrist: and the only thing that gets sent via the wire is JSON, no html aside from an empty <body> tag yo [23:39] Marak: sechrist: nope.... [23:39] tiglionabbit: sechrist: how can you do anything decent in javascript without client-side templating? [23:39] Marak: sechrist: i did some SPA with over 100k users [23:39] Marak: /s/some/one [23:39] sechrist: $('#billing-invoice-count').text('1827119'); [23:39] dnolen has joined the channel [23:39] Marak: tiglionabbit: there are many approaches to share your templates [23:39] sechrist: but uhm [23:39] colinclark has joined the channel [23:39] sechrist: yeah sure [23:39] jeefers has joined the channel [23:39] Marak: tiglionabbit: are you starting from scratch or are you using a legacy app? [23:40] tiglionabbit: from scratch [23:40] sechrist: I guess that's it [23:40] tiglionabbit: I was looking at mustache because it works both in python and javascript, but I still don't really know how to share that [23:40] mikeal: tiglionabbit: i don't [23:40] Marak: tiglionabbit: i'd recommend checking out https://github.com/hij1nx/weld , but im bias since two members of our team made it [23:40] tomy409 has joined the channel [23:40] tiglionabbit: at work I do python stuff but in my spare time I'm looking at node and express [23:40] cagdas has joined the channel [23:40] sechrist: I mean for most stuff I set specific dom element's inner content [23:40] sechrist: if it needs to be dynamic [23:41] sechrist: and it wasn't set in the actual server-rendered html [23:41] Marak: tiglionabbit: express has a bunch of tjholowaychuk built in stuff for doing templates, if you are into relearning css and html [23:41] tjholowaychuk: no it doesnt [23:41] tjholowaychuk: express does not ship with anything [23:41] sechrist: not even ejs [23:41] tiglionabbit: Marak: express just chooses a templating language based on your file extension [23:41] tjholowaychuk: you can use css,less,stylus,etc html, jade, mustache, ejs, etc [23:41] cagdas has joined the channel [23:41] Marak: tjholowaychuk: there isnt like a jade / stylus / socket.io magic thing you made? [23:41] tjholowaychuk: no [23:42] Marak: lies [23:42] tiglionabbit: anyway I think jade is pretty cool. I've used haml before [23:42] mikeal: tjholowaychuk: do you include any of them as deps? [23:42] sechrist: wait people use socket.io for websites that don't need realtime bidirectional communication? [23:42] tjholowaychuk: mikeal nope [23:42] tjholowaychuk: none [23:42] sechrist: like for shipping assets? [23:42] tjholowaychuk: dev deps [23:42] mikeal: cool [23:42] tjholowaychuk: but that's it [23:42] jiggliemon has joined the channel [23:42] mikeal: right, so that your tests for the integration can run [23:42] jiggliemon: Heyo! Anyone see that Node.js book from Oriley? [23:42] tiglionabbit: sechrist: I don't see why you'd use socket.io for not-real-time things [23:42] mikeal: +1 for using devDependencies [23:43] jmoyers: define real time [23:43] mikeal: i'm honestly angry about vows being in the "most depended on" list [23:43] gf3: Marak: yes, it works [23:43] jiggliemon: http://oreilly.com/catalog/9781449308582/ [23:43] jiggliemon: This one. [23:43] Marak: gf3: roger that [23:43] tiglionabbit: jmoyers: server pushes data to client [23:43] mikeal: because each one of those is a mistake :) [23:43] gf3: Marak: it's not optimised, but it has fancy inspection for debugging [23:43] gf3: and it's hella easy to use [23:43] tjholowaychuk: test frameworks are overrated [23:43] jmoyers: then yes [23:43] sechrist: I guess I haven't written any application where javascript templates make sense for me, or maybe I just don't get it [23:44] tjholowaychuk: the last 4 or 5 projects i've written just use their own more specific framework [23:44] Marak: tiglionabbit: regardless, you should look at weld's approach for dual sided templating, its nice [23:44] sechrist: I'll XHR json, or provide it in a script tag, and then $().text(); the crap [23:44] tiglionabbit: Marak: k [23:44] mikeal: tjholowaychuk: all my tests are little executable files that have their own system [23:44] Marak: tiglionabbit: you just write regular html and weld data onto the dom, server-side or browser-side, same code [23:44] sechrist: but leave most of my html rendered by the server [23:44] Marak: tiglionabbit: uses JSDOM internally for server [23:44] jiggliemon: sechrist: Gross [23:44] mikeal: it's easier to figure out than someone's random test framework [23:44] sechrist: creating html objects with javascript just screams performance retardnesses [23:45] Marak: sechrist: hrmmm? [23:45] duncanbeevers: Marak: Are you guys using to push node modules client-side? What other techniques are people using to use the same code server and client side? [23:45] jmoyers: little confused about that.. [23:45] jmoyers: its not performance retarded [23:45] mikeal: sechrist: at the moment, yes, but we're working on it [23:45] willvincent has joined the channel [23:45] itsTodd has left the channel [23:45] Marak: duncanbeevers: browerify? [23:45] mikeal: we'll have a fast DOM some day [23:45] duncanbeevers: using browserify [23:45] jmoyers: imagine, you get a tweet update every 10 seconds [23:45] itsTodd has joined the channel [23:45] sechrist: I still support ie6 [23:45] Marak: duncanbeevers: browserify [23:45] sechrist: so I'm skewed [23:45] jiggliemon: Unless you need to add functionality to your XHR content [23:45] Marak: sechrist: ive written SPAs that support IE6 [23:45] Marak: sechrist: using nothing but jQuery and raw will [23:45] sechrist: that aren't slow as crap? [23:45] mikeal: most webpages take like .5 seconds to parse with jsdom [23:45] Marak: sechrist: hell no, im gangster [23:45] sechrist: .5 seconds is crazy [23:46] Marak: sechrist: virtual scrolling, only rendering the view panes on screen [23:46] jiggliemon: tjholowaychuk: What do you think of this book http://oreilly.com/catalog/9781449308582/ [23:46] mikeal: yeah, it's not great, but it's getting better [23:46] Marak: sechrist: using proper databinding, never touching the DOM structucture until im ready to write [23:46] tjholowaychuk: jiggliemon: no clue haven't seen it until now [23:46] Marak: sechrist: you'd be surprised what you can pull off [23:46] sechrist: eh, I guess I need to see an example where this is insanely difficult to do without clientside templating [23:46] jiggliemon: Let me rephrase: Can a book be written on Node.js yet? [23:46] mikeal: jiggliemon: i think Tom Hughes Croucher wants to get famous :P j/k [23:46] mikeal: i love Tom [23:46] mikeal: it's a good book [23:46] itsTodd: Is it wise to use NVM for each new project kind of like RVM in the ruby world? [23:46] jiggliemon: This Shit is on v.0.4 or [23:47] mikeal: itsTodd: npm defaults to local package installs, so it's encapsulated quite a bit already [23:47] mikeal: you don't usually need nvm [23:47] jiggliemon: Has the API stabilized enough to be written about? [23:47] sechrist: Marak: I've done stuff like that too, and it didn't require a templating engine [23:47] Marak: mikeal: thankfully, i was famous before node.js [23:47] indexzero has joined the channel [23:47] mikeal: you might, but modules and packages in node are nearly as bad of a clusterfuck as they are in Python/Ruby [23:48] mikeal: famous = 'in' + famous [23:48] mikeal: :P [23:48] Marak: mikeal: semantics! [23:48] sechrist: So let me get this straight.. you're sending html to the browser with crap like <div>{{blahblah}}</div>.. Parsing it back (in the client) with jsdom, and then replacing those instances with what you want? [23:48] sechrist: that's ridiculous [23:48] guilherme__ has joined the channel [23:48] mikeal: wow, no sechrist [23:48] sechrist: oh ok [23:48] jmoyers: yea... no [23:49] jiggliemon: sechrist: Just render the dom nodes! [23:49] hij1nx has joined the channel [23:49] jmoyers: look at jquery .templ or underscore .template implementation [23:49] mikeal: parsing a packge from the fs in node, using jquery or whatever to manipulate the content server side, dumping that out as an html page to the browser [23:49] mikeal: s/packge/page [23:49] sechrist: that sounds like server side templating [23:49] sechrist: I was thinking about inside the browser [23:49] sechrist: nevermind I guess [23:49] mikeal: it is :) [23:50] sorens3n: i have the habbit of using jade for server side templating, and mustache for client [23:50] sorens3n: if thats the thread you guys are on [23:50] Marak: I just write HTML [23:50] sechrist: jade is whack [23:50] sechrist: Marak: I like this [23:50] Marak: sechrist: weld? [23:50] mikeal: actually, i kind of suck at this, and write really big strings with lots of +'s in between [23:50] mikeal: then append it to the dom [23:51] sorens3n: html is just so boring anymore [23:51] mikeal: it's ugly as hell, but sometimes it's better to be fast and sloppy than spend a lot of time writing templates [23:51] sechrist: <div id='myId'></div> $("#myId").html("blam-o!!"); [23:51] sechrist: I've been doing that for years [23:51] sechrist: what is wrong with that [23:51] Marak: mikeal: i was about to say the same thing, but i decided i didnt want to get yeleld at [23:51] mikeal: sorens3n: i only render pages in CoreAnimation :P [23:51] sorens3n: whaaaa [23:51] Marak: mikeal: but yeah, 12 lines of JS and + and one dom insertion, no issues there [23:51] mikeal: it was a joke [23:51] jmoyers: sechrist, Marak: what do you do on push updates from socket? [23:51] sorens3n: :P [23:51] duncanbeevers: sechrist: If you haven't encountered the need for more sophisticated templating than that, then there's nothing wrong with that. [23:52] jmoyers: do you send down rendered html? [23:52] Marak: jmoyers: i never send down HTML frags [23:52] mikeal: usually [23:52] sechrist: I don't understand a usecase where you need more sophisticated templating [23:52] sechrist: unless you have lazy loading datasets [23:52] mikeal: an update over socket.io will mean *new* content [23:52] sechrist: and even then! [23:52] boogyman_ has joined the channel [23:52] jmoyers: Marak: so you send json, and then use a template? [23:52] mikeal: rarely do you change existing content [23:52] Marak: jmoyers: only JSON over the wire [23:52] sechrist: you would just create new elements in jquery and feed the data in [23:52] jmoyers: Marak: so, this presumes client side templating. [23:52] duncanbeevers: Well, if you have a JSON object with a number of fields you'd like to populate some piece of markup with... [23:52] Marak: jmoyers: for the most part yes, some template or renderer. weld looks good though [23:52] tsesame_ has joined the channel [23:53] mikeal: $('selector').append('ugly thing' + udpate + ' cause im lazy') [23:53] Marak: jmoyers: yes, but with JSDOM and things like weld. you can render on either the server or the client using the same code [23:53] sechrist: oh wiat [23:53] sechrist: wait [23:53] tjholowaychuk: jquery on the server == ew [23:53] sechrist: what [23:53] duncanbeevers: sechrist: $('#field1').html(jsonPayload.field1);$('#field2').html(jsonPayload.field2); is ridiculous. [23:53] sorens3n: i havnt found the need to use JSDOM, not sure if i'm missing something [23:53] jerrysv: jquery on the server === huge memory leak [23:54] jmoyers: thats not ridiculous [23:54] jmoyers: thats a fine approach [23:54] sechrist: duncanbeevers: that's what i've seen, and every other person i've encountered that uses jquery with systems like django/rails [23:54] jmoyers: the only reason to use templates is to make your markup encapsulated for use on different pages [23:54] jmoyers: its your view [23:55] admc has joined the channel [23:55] duncanbeevers: Even Rails people use Prototype's Template object. [23:55] jmoyers: so, maybe you create a template using _.template('<div class="imagine I am more complex">{{ some sweet tweet }}</div>'); so you can reuse it elsewhere [23:55] jmoyers: that way you take the json you get off the wire [23:55] sorens3n: jmoyers: love doing that [23:55] sechrist: yeah that makes sense [23:55] sorens3n: underscore + mustache [23:55] sorens3n: :D [23:55] zmbmartin: tjholowaychuk: can I call a haml partial from within jade? [23:55] sechrist: situations where you don't need this [23:55] sechrist: it seems ridiculously bloated [23:56] zmbmartin: I got a can not find module haml [23:56] tjholowaychuk: zmbmartin with express? [23:56] zmbmartin: tjholowaychuk: yes [23:56] tjholowaychuk: yeah [23:56] duncanbeevers: Anyway, if you haven't felt the pain, I don't know how to convince you. Please carry on poking datum one-at-a-time into their hopefully-still-present little holes. [23:56] jmoyers: its pretty simple [23:56] tjholowaychuk: zmbmartin: if you are using mine it's hamljs in npm [23:56] tjholowaychuk: so you need to do what it says in the readme [23:56] jmoyers: if you already have jquery or underscore in your site [23:56] jmoyers: its just nice encapsulation [23:56] tjholowaychuk: there is one line to "register" the template engine [23:56] sechrist: duncanbeevers: I'm open to seeing a situation where it's painful to do it another way [23:56] sechrist: I haven't seen one [23:56] sechrist: because for situations like i've heard in here, it's for crap like lazy-loaded data [23:57] tjholowaychuk: zmbmartin but yeah you can do partial('whatever.haml') in jade or ejs etc [23:57] sechrist: that loads well after the page runtime [23:57] Marak: I think someone told me once that picking a templating language based on speed is like buying a race car to drive to your kitchen and back. [23:57] Aria: Hah. [23:57] jmoyers: sechrist: thats true [23:57] jmoyers: nobody is advocation you do a sweet template for the whole page [23:57] jerrysv: marak: there's a racecar, and there's a wheelchair [23:57] Aria: Those people never used amrita. [23:57] jmoyers: and send down json ;-) [23:57] Marak: jerrysv: Or if could just have three square meals a day at a regular time. [23:57] Marak: engrish flail [23:57] jmoyers: i think its a way to do data binding for real time application such that your view, the transport, the model etc are all seperate constructs [23:57] sechrist: okay, and how would server-rendered html work? You XHR the chunk and innerhtml it? [23:58] mikeal: tjholowaychuk: jQuery in node has some great use cases, but until the perf issues in jsdom are fixed it's impractical for web servers. in the meantime it's awesome in shit like spider [23:58] Marak: lets all bike shed about templating guys [23:58] Marak: ACTION goes back to work [23:58] Marak: :-D [23:58] tjholowaychuk: mikeal i just think jquery is ugly [23:58] jmoyers: haha INDEED sir [23:58] tjholowaychuk: gets the job done [23:58] mikeal: haha [23:58] gazumps has joined the channel [23:58] tjholowaychuk: i like that it handles browser bullshit for me [23:58] mikeal: i like jQuery [23:58] mikeal: the selector interface is great for manipulation and extraction in pages [23:59] Aria: sechrist: XHR chunks and innerhtml? Google 'pson' [23:59] mikeal: in spider i use it for scraping websites [23:59] sechrist: granted implementing lazyloaded data binding yourself is a bitch and you don't need to [23:59] sechrist: but for situations where you don't need that [23:59] sechrist: I fail to see the value [23:59] mikeal: it's so much nicer than anything else i've used [23:59] tjholowaychuk: i did a lot of scraping with nokogiri [23:59] mikeal: so, this is a little off topic [23:59] tjholowaychuk: but not much with node [23:59] tjholowaychuk: haha [23:59] mikeal: but i was messing with IndexedDatabase [23:59] mikeal: cause i have this CouchDB implementation on top of it [23:59] zmbmartin: tjholowaychuk: awesome thanks