[00:00] craiggles has joined the channel [00:00] mjr_: well, it's tricky [00:01] mjr_: Actually, I'll bet you can figure out how to do it reliably. [00:01] mjr_: But I haven't worked through the details. [00:01] Anti-X: this is why people who grew up with C hates everyone [00:01] mjr_: If you multiple 8.5 by 10, you'd expect that to be 85 [00:01] echosystm: yep [00:01] mjr_: you've moved the floaty bit into the integery bit. [00:01] echosystm: and then set the float bit manually [00:01] echosystm: i see [00:02] echosystm: ok, i should be able to work this out, thanks [00:02] craiggles: been trying to get into nodejs, so was thinking of making an mp3 id3 parser, but googling isn't going so well, most google results give you a program, not example of how to parse. [00:03] Anti-X: > 9.99999999999999999 * 10 [00:03] Anti-X: 100 [00:03] Anti-X: though that should be more than * 10 [00:03] Anti-X: but you get the point [00:03] kixxauth has joined the channel [00:03] echosystm: yep [00:04] echosystm: while (x % 1 != 0) { count++; x *= 10; } [00:04] echosystm: :P [00:04] echosystm: DODGY [00:04] dandean has joined the channel [00:04] Anti-X: did you also get the point that it's not reliable? [00:05] Anti-X: 9.999... * 10 ISNT 100 [00:05] echosystm: yeah [00:05] Anti-X: even if converted to an integer, that should be 99 [00:08] oncenull has joined the channel [00:09] echosystm: hmm [00:09] ctp_ has joined the channel [00:09] echosystm: what if i converted to string, took out the ".", parsed int, and went from there? [00:10] echosystm: oh wait sorry [00:10] echosystm: i see the problem [00:10] echosystm: >9.99999999999999999 [00:11] Zeph\k0d3: craiggles: http://en.wikipedia.org/wiki/ID3 the wiki page is pretty much all you need... just open the file, find the id3 tag and parse. [00:11] echosystm: > 9.99999999999999999 [00:11] echosystm: > console.log(9.99999999999999999); [00:11] craiggles: cheers Zeph\k0d3 [00:11] _Utkarsh has joined the channel [00:12] ajsie has joined the channel [00:12] ajsie: damn have you seen cloud9 [00:12] ajsie: one sexy beast: http://cloud9ide.posterous.com/ [00:12] tanepiper: yea, it's nice [00:12] ajsie: Webstorm is soooo out =) [00:12] craiggles: i'm thinking of just messing with that, and after that i've got a few projects i'd like to tackle, but a lot of them require advanced parsing, basically i'm wanting text-style math to content mathml convertor, asciimathml is pretty nice but it produces presentationial mathml, not content [00:13] Zeph\k0d3: craiggles: the length of the tag is fixed, so either at the end or the start of the file you can find the 3 chars "TAG" to tell you its there.. then mangle some bytes in a buffer to find the right attributes [00:13] ajsie: many IDEs will be out of business in the future :) [00:13] ajsie: Cloud9 will be the new Eclipse [00:14] tj: eclipse is brutal [00:14] eee_c has joined the channel [00:14] echosystm: cloud9 needs vim bindings [00:14] dquestions has joined the channel [00:14] echosystm: D: [00:14] Zeph\k0d3: cloud9 is shaping up real nice :-) cant wait for the official release [00:15] ajsie: echosystm: vim =) [00:15] ajsie: Zeph\k0d3: and it will just get better [00:15] Zeph\k0d3: ajsie: I know, I share my secret basement lab with 1 of the main devs [00:16] ajsie: really? [00:16] Zeph\k0d3: yep :) [00:16] ajsie: cool [00:16] ajsie: you two know each other? [00:16] Zeph\k0d3: yeah.. been coding some backend stuff for them too [00:17] ajsie: Zeph\k0d3: cool [00:17] ajsie: Zeph\k0d3: have they said when the hosted variant will come? [00:17] ajsie: cant wait for it [00:18] mbrochh has joined the channel [00:18] mbrochh has joined the channel [00:19] Zeph\k0d3: I think they were talking about getting the first hosted version online in about a month [00:20] Spookz has joined the channel [00:20] ajsie: okay .. then it means roughly after new year =) [00:20] Utkarsh has joined the channel [00:21] Zeph\k0d3: no idea actually.. they are generally quite good at hitting targets :) [00:21] Zeph\k0d3: I will do my very best not to distract them too much with interesting sideprojects ;) [00:21] altamic has joined the channel [00:22] ajsie: let them be! [00:22] ajsie: nothing can beat Cloud9 [00:22] ajsie: nothing! [00:23] ajsie: Zeph\k0d3: what side projects are you doing btw? =) [00:24] Zeph\k0d3: we are working on some microscopy algorithms, CNC-routers/lathes, 3d printers, robotic arms, audiosoftware (www.blokmodular.com), trying to hack the kinect etc [00:24] Zeph\k0d3: and I am involved with the amsterdam dont-do-it-yourself movement.. getting freelancers and artists to work for free for eachother 1 day a month as a networking + practical event [00:27] craiggles: You guys seem so..brilliant [00:27] ajsie: Zeph\k0d3: work with what? [00:27] ajsie: coding? [00:28] Zeph\k0d3: coding, building, designing [00:28] ajsie: okay [00:28] voodootikigod has joined the channel [00:28] ajsie: cool [00:29] ajsie: blok looks cool [00:29] ajsie: even if i dont understand it [00:29] davidascher has joined the channel [00:29] Zeph\k0d3: :) [00:30] craiggles: I doubt i'll ever be as fluent with programming as yous are, heh. [00:31] shimondoodkin: Zeph\k0d3: i like your ideas [00:31] Utkarsh has joined the channel [00:31] shimondoodkin: Zeph\k0d3: "work for free" = social etc is there anything else? [00:32] Zeph\k0d3: shimondoodkin: how do you mean? [00:32] ooooPsss has joined the channel [00:32] Zeph\k0d3: www.doehetnietzelf.org [00:32] shimondoodkin: i thought about it long time about creating new religion book for freelancers to how to self orgenize [00:32] Zeph\k0d3: ah :) [00:33] sechrist has joined the channel [00:33] Zeph\k0d3: this certainly helps with that yes.. it fills in the gaps that a one-man-company cant fill. The jobs that are too small to hire an external professional for [00:34] Zeph\k0d3: I often get legal advice there from lawyers that need something else in return (like an update for their website, a brainstorm session or technical background on some case) [00:34] siculars has joined the channel [00:35] sh1mmer has joined the channel [00:35] shimondoodkin: my friend is also starting to develop a rep rap project [00:35] Zeph\k0d3: nice :D [00:35] davida has joined the channel [00:36] SubStack: rap! [00:36] SubStack: what [00:36] Zeph\k0d3: reprap.org [00:36] shimondoodkin: thouse 3d printers are facinating [00:36] Lorentz: I saw one in person [00:37] SubStack: neat! [00:37] Lorentz: It's pretty cool. And since I saw it years ago, it's probably even further advanced now. [00:37] Zeph\k0d3: 3d printers are really becoming amazing.. at shapeways.com they can even print stainless steel now [00:37] SubStack: my university had one of those but never really used it for anything [00:38] Lorentz: iirc they could also do circuits. [00:38] jesusabdullah: Yeah, it's in Duckering 333 now SubStack [00:38] Zeph\k0d3: the whole production workflow is sadly "tedious" at best still :( needs a lot of software-tweaks before it is really design-and-go [00:38] jesusabdullah: They use it for CAD/CAM class [00:38] ajsie: why are there people like caolan: https://github.com/caolan/async [00:38] jesusabdullah: It's old though. Takes ages to warm up [00:39] jesusabdullah: but it's kinda fun--like a cross between a printer and an easy-bake oven [00:39] ajsie: that are god damn genius [00:40] sudoer has joined the channel [00:40] shimondoodkin: i wonder is it possible to print (little oversized but working) micro elements to mold a fully working printer [00:40] Zeph\k0d3: there are a few 3d printers that can almost print all their own parts [00:41] ajsie: i didnt know could type Object.create(Person); [00:41] ajsie: is that better than new Person [00:41] tj: ajsie: slower [00:41] Zeph\k0d3: http://www.youtube.com/watch?v=Biggn0GBlJw <-- take a look at this.. apart from the motors & electronics, all printed plastic [00:41] ajsie: tj: so bad i guess [00:41] Utkarsh has joined the channel [00:42] davidascher has joined the channel [00:42] ajsie: people are vouching for it though [00:42] tj: ajsie: not necessarily.. different use-cases but in an ideal world we would not have "new" [00:42] Zeph\k0d3: for a working xy stage.. adding z-stage is "trivial".. just the hot end of the printer is too hot to print out of plastic [00:42] ajsie: tj: what do you mean? [00:43] sarmiena_ has joined the channel [00:44] shimondoodkin: Zeph\k0d3: v=Biggn0GBlJw - humm they solved it [00:44] sarmiena_ has left the channel [00:45] shimondoodkin: ajsie: i have my version too https://github.com/shimondoodkin/node-inflow [00:45] charlenopires has joined the channel [00:46] BHSPitMonkey has joined the channel [00:51] Utkarsh has joined the channel [00:53] zentoooo has joined the channel [00:54] shimondoodkin: anyone can want to discuss an idea: https://github.com/shimondoodkin/gitonnode/raw/master/Git%20Drag%20And%20Drop%20Manager.ppt (need power point or the like) [00:54] housetier has joined the channel [00:56] jesusabdullah: eww ppt :( [00:56] jesusabdullah: It's okay, I've used ppt many a time [00:57] tanepiper: hey! PPT is awesome! http://www.minecraftforum.net/viewtopic.php?f=3&t=58874 [00:57] SubStack: latex ftw [00:59] shimondoodkin: tanepiper: the ppt @minecraftforum.net is 100MB... [01:00] jesusabdullah: beamer ain't bad [01:00] shimondoodkin: i have an idea to make a git manager with drag and drop to do merges [01:00] shimondoodkin: like draggind one repository to another todo merge [01:01] jesusabdullah: This game looks :( [01:01] jesusabdullah: Surprised that you can do that with ppt [01:02] jesusabdullah: My question is: Macros? [01:02] shimondoodkin: http://www.minecraftforum.net/viewtopic.php?f=3&t=58874 << lol [01:02] eee_c has joined the channel [01:02] shimondoodkin: http://www.minecraftforum.net/viewtopic.php?f=3&t=58874 << lol MINECRAFT is a ppt [01:03] yeevgen has joined the channel [01:04] ajsie: shimondoodkin: i have looked at it .. it seems more difficult to use than async [01:05] shimondoodkin: ajsie: what is better in async? [01:05] ajsie: the doc i guess .. and the structure .. i just get it right away [01:05] ajsie: shimondoodkin: but ill run some tests from your lib and see what is better [01:09] muk_mb has joined the channel [01:11] ajsie: shimondoodkin: there are no examples for flow [01:12] shimondoodkin: ajsie: ok thanks [01:12] ajsie: and parallel...i just dont get it right away .. make good docs and people will get it .. use Capital letters =) [01:13] housetier has joined the channel [01:13] grahamalot has joined the channel [01:13] shimondoodkin: ajsie: "use Capital letters" where? [01:14] shimondoodkin: in functions? [01:14] tekky has joined the channel [01:14] ajsie: i want to do some async .. there are 15 libraries for it..i give every lib 30 secs...i look at if its active maintained..then the doc .. some libraries have many watchers...the documentation is empty or horrible..how am i supposed to get it...doc doc doc! [01:15] amerine has joined the channel [01:15] ajsie: in these days documentation seems to be a feature ... cause not everyone has good documentation [01:15] ajsie: code with no good doc is code that no one understands =) .. if async had bad doc i wouldnt use it [01:15] ajsie: even if the code is the same [01:16] springmeyer has joined the channel [01:16] bpot has joined the channel [01:16] ajsie: in all your sentences =) [01:16] shimondoodkin: :) [01:16] ajsie: shimondoodkin: your lib seems to be powerful .. but i just dont get it =) [01:17] shimondoodkin: if you like i can explain [01:17] ajsie: shimondoodkin: you wont if you have good doc! [01:17] ajsie: then you would have far more than 5 watchers .. doc is everything [01:17] ajsie: its your marketing [01:17] ajsie: code + doc [01:17] themiddleman has joined the channel [01:17] Booths has joined the channel [01:18] shimondoodkin: ajsie: i see what you mean i did arealy confusing doc [01:19] Booths: Anyone using cloud9ide? I'm getting a segmentation error when I connect, not finding anything indicating what it's coming from. [01:19] shimondoodkin: s/arealy/a really [01:19] ajsie: shimondoodkin: yeah .. do a good doc so i understand why i want to use it .. there is no luck in programming .. good code + doc will get the most attention [01:20] ajsie: just look at node.js .. he explained it very well what the problem was .. why we want to use it [01:20] ajsie: shimondoodkin: and let me know when the doc is there .. i would like to try it and see if its better than async =) [01:20] ajsie: i love good stuff =) [01:20] Knutty has joined the channel [01:21] Knutty: Hey guys [01:21] Knutty: How goes it [01:21] SubStack: shit I need to remember to write some docs for my modules :| [01:21] shimondoodkin: SubStack: waht modules? [01:22] SubStack: the ones on my github :p [01:22] ajsie: shimondoodkin: i always point to this as an example in good doc: http://codeigniter.com/user_guide/ [01:22] ajsie: a lot of people uses it not because its the most powerful framework for php, but its so god damn simple to understand because of the doc [01:22] rikarends has joined the channel [01:23] rikarends: Booths: what version of node? [01:24] shimondoodkin: ajsie: I think it is both [01:24] Knutty: How hard do you think it would be to get a web host to intall nodejs? [01:25] rikarends: Knutty: very hard if its a shared hoster [01:25] sechrist: how would I read/write /dev/tty? [01:25] Knutty: As in serial interface? [01:25] sechrist: as in to send/receive data from ssh [01:25] sechrist: you can't just open and read/write stdin/stdout [01:25] sechrist: it apparently uses /dev/tty [01:25] sechrist: can't just popen ssh* [01:26] Knutty: rkarends: figured as much. I pay for my hosting, i guess ill just convert an old pc into a server [01:26] rikarends: Knutty: just grab one of those cheap vpsses [01:26] ajsie: shimondoodkin: if you have used both symfony, yii and rails, codeigniter pretty much doesnt give you anything [01:26] rikarends: Knutty: and then there are those fancy new nodejs hosters [01:26] ajsie: just MVC .. then some helpers [01:26] Knutty: Oooooo nodejs hosters? Ill take a look into that [01:27] ajsie: its nothing powerful , beginners just get it right away [01:27] ajsie: look at symfony's doc [01:27] ajsie: those guys dont know anything about what is simple and what is bloated [01:27] banjiewen_ has joined the channel [01:28] rikarends: sechrist: look at the -T argument for SSH [01:28] aheckmann has joined the channel [01:28] ajsie: shimondoodkin: wait for my backend framework! it'll be ready in 6 months maybe =) [01:28] ajsie: ill show you what simplicity from all aspects =) [01:28] ajsie: _is_ [01:28] rikarends: Booths: ping [01:28] shimondoodkin: ajsie: i am working also on a framework [01:28] ajsie: what kind of? [01:29] shimondoodkin: https://github.com/shimondoodkin/nodejs-mongodb-app [01:29] shimondoodkin: like phpmaker [01:29] shimondoodkin: if you used it [01:29] shimondoodkin: it has admin instantly [01:30] sechrist: rikarends: trying it -- not working for me :\ [01:30] shimondoodkin: ajsie: what is your idea for a framework? [01:31] sechrist: actually ssh -T just hangs [01:31] sechrist: :\ [01:31] shimondoodkin: ajsie: https://github.com/shimondoodkin/nodejs-mongodb-app/blob/master/module_example.js [01:32] shimondoodkin: ajsie: it is not perfect but i have solved many issues [01:32] Utkarsh has joined the channel [01:33] jameshome_ has joined the channel [01:33] rikarends: sechrist: sorry then i dont know, google it [01:33] dnolen has joined the channel [01:33] sechrist: yeah I'm trying [01:34] rikarends: sechrist: i remember some odd things needed, and its not really in the spirit of ssh [01:34] rikarends: sechrist: i think it will only allow stdin style control 'after' the ssh connection has been esteblished using certificates or things like that [01:34] tmpvar has joined the channel [01:35] shimondoodkin: ajsie: i use mongo db because of type of my project, mongodb sometimes surprises with its power. couchdb and other sql databases seems to be much simpler to use databases [01:36] rikarends: sechrist: http://en.wikipedia.org/wiki/Expect [01:37] sechrist: i'm not trying to preload commands [01:37] sechrist: I'm trying to put node.js ontop of the ssh client for logging [01:37] ajsie: shimondoodkin: okay cool never used phpmaker [01:37] rikarends: sechrist: then get an ssh login via certificates going, then you can probably just use stdin/out [01:37] ajsie: shimondoodkin: yeah couchdb is a good db , dont use sql dbs if you dont have too [01:37] sechrist: rikarends: I have certs going -- and that's not working [01:37] ajsie: =) [01:38] sechrist: nothing is coming out of stdin/stdout [01:38] sechrist: just hangs [01:38] rikarends: sechrist: odd. well keep trying and reading. Maybe you can see some stuff expect does. strace -f is your friend. [01:38] cardona507_ has joined the channel [01:38] ajsie: shimondoodkin: do you know what is actually good [01:38] ajsie: shimondoodkin: a video that is showing quickly what a framework can do [01:39] shimondoodkin: ajsie: =) [01:39] ajsie: like cloud9 videos .. 1-2 minutes .. short enough for me to watch [01:39] shimondoodkin: i hate half hour blog creation videos [01:39] ajsie: and i dont have to read and set up everything .. screencasts are very good =) [01:40] ajsie: yeah [01:40] ajsie: 1-2 minutes [01:40] ajsie: or 3-5 if its a lot [01:40] shimondoodkin: ajsie: what is your idea for a framework? [01:40] ajsie: split them up per feature .. i'll do that with my framework [01:40] ajsie: modular app building [01:40] ajsie: like LEGO [01:41] shimondoodkin: ajsie: i am now thinking about a method of how to do development in paralell teams [01:41] ajsie: and also reading like english [01:41] inimino has joined the channel [01:41] rikarends: the best frameworks are built for actual use, not academically tho. make something big with it see if it holds up [01:42] rikarends: and then refactor it 50 times :) [01:42] ajsie: shimondoodkin: User['deletes']['file']('Picture.jpg')['between'](2001-10-10)['and'](2010-10-10) [01:42] murz has joined the channel [01:42] ajsie: i know it looks silly at first because we are not VERY used to that kind of coding [01:42] Knutty: So nodejs [01:42] Knutty: Is it a server? [01:42] rikarends: is it a bird? [01:43] rikarends: a plane? [01:43] Knutty: Or does it interpret the js files [01:43] ajsie: but by having it modular it could be broken down or you could add parts into the sentence so it could give another logic [01:43] ajsie: rikarends: yeah agreed [01:43] rikarends: NodeJS is a google V8 instance with Async IO API's [01:43] SubStack: ewww DSLs for SQL [01:43] ajsie: ill make a screencast and show you why you want to use it [01:43] shimondoodkin: ajsie: you can write it User.deletes.file('Picture.jpg').between(2001-10-10).and(2010-10-10) your syntax sems better [01:43] softdrink has joined the channel [01:44] ajsie: shimondoodkin: yeah i know .. in other examples i have spaces in methods [01:44] shimondoodkin: ajsie: do you have it on github? [01:44] ajsie: shimondoodkin: no .. not at the moment .. i just began with it .. working on the validation [01:45] ajsie: Resource('Validation handler')['expects'](value)['to have'](3)('characters') [01:45] ajsie: Resource('Validation handler')['expects'](value)['to have'](3)('words') [01:45] ajsie: Resource('Validation handler')['expects'](value)['to be equal to'](1) [01:45] Utkarsh has joined the channel [01:45] ajsie: Resource('Validation handler')['expects']('GET')('search')['to render status code'](404) [01:45] tlrobinson_ has joined the channel [01:46] ajsie: some examples [01:46] ajsie: i hit some wall though .. node.js is asynched =) [01:46] ajsie: that added some more thoughts about the coding .. far more than what i expected [01:46] ajsie: but i thinks its doable =) [01:48] tlrobinson__ has joined the channel [01:48] jesusabdullah: Interesting idea for a DSL--what's it for exactly ajsie? [01:49] ajsie: jesusabdullah: my framework? [01:49] jesusabdullah: Yeah, ajsie [01:49] ajsie: for creating apps in the speed of light [01:49] ajsie: i focus on understandable framework .. every part is a pattern [01:49] ajsie: repeated all over .. the core is just like a LEGO [01:50] ajsie: your code is LEGO [01:50] rikarends: ajsie: you can actually chain async operations. look at fabians async.js, it might work for your syntax [01:50] ajsie: everything is following the same pattern .. i call it a grammar .. eg. we have the alphabet [01:50] jesusabdullah: Has anyone tried and compared learnboost's node-canvas and ajaxorg's node-o3-canvas? [01:50] rikarends: yes ours is still slower. [01:50] rikarends: :) [01:50] rikarends: but rapidly advancing [01:50] jesusabdullah: I haven't had time, but I'd love to see a comparison write-up [01:51] rikarends: we'll do a write up when we are atleast equal in speed :) [01:51] ajsie: we have Swedish and English that are using the same (almost) alphabet .. but they have different grammar right? everyone uses javascript but we dont have any grammar at all [01:51] jesusabdullah: rikarends: Certainly there are other things to compare than just speed though? [01:51] rikarends: jesusabdullah: i think feature wise we are now nearly equal [01:52] jesusabdullah: Hmm [01:52] rikarends: jesusabdullah: check it out in a few days, i havent recompiled an update in a while. [01:52] jesusabdullah: Alright [01:52] jesusabdullah: Yeah, if I have time I'll give both a shot [01:52] rikarends: jesusabdullah: i think actually both api's will behave almost identically now. [01:52] tlrobinson_ has joined the channel [01:52] ajsie: people just throw some methods here, some methods there .. there are no what i call grammar (aka structure) .. i am working on my grammar .. lets call it grammar X ... so when im done and people are using my grammar X I will understand their code [01:53] shimondoodkin: rikarends: why are you making all this server side components? [01:53] rikarends: jesusabdullah: except node-canvas is now about twice as fast and node-o3-canvas is easier to install because it comes precompiled [01:53] ajsie: even if based on same foundation (alphabet) if i said something like: "Cars Red like I" then you probably wont understand it .. and that is the problem with programming languages today [01:54] Booths: Sorry rikarends, I missed your message, I'm running the latest version of node. just installed it on a new host. [01:54] jesusabdullah: Twice as fast? >:O [01:54] ajsie: we dont have grammars..just the "alphabet" [01:54] rikarends: Booths: how do you start cloud9 [01:54] mbrochh has joined the channel [01:54] jesusabdullah: Kinda sucks for you rikarends, in that your thunder kindasorta got stoled [01:54] sudoer has joined the channel [01:54] rikarends: jesusabdullah: nah :) its just a challenge. When we started we didnt even know we'd go use it on nodeJS [01:55] Booths: node bin/cloud9.js -w /var/www -l [01:55] rikarends: jesusabdullah: we started with canvas more than a year ago, when cairo was still slower than AGG. i think they have improved it a lot in the meantime [01:56] dguttman_ has joined the channel [01:56] rikarends: jesusabdullah: its been gathering dust for a long time, we just decided to finish it [01:56] Booths: I'm getting the UI coming up, it's giving me the segfault as soon as socket.io prints the client connection [01:56] rikarends: jesusabdullah: which accidentally coincided with TJ's release [01:56] ajsie: rikarends: where can i get fabians async.js [01:56] rikarends: https://github.com/fjakobs/async.js [01:57] rikarends: Booths: could you try running with nodejs thats been packaged? bin/cloud9.sh -w... [01:57] rikarends: Booths: cloud9 has binary modules compiled for 0.2.4 so that could be a segfault [01:59] rikarends: 0.2.4 to 0.3.x has a bit of binary incompat in v8 i think [01:59] ajsie: rikarends: thanks [01:59] sudoer has joined the channel [01:59] Booths: Ah, weird. I had it working w/ the latest node.js on Mac, but server is running ubuntu, appears to be working. I appreciate it. [01:59] rikarends: Booths: binary compat and Linux is even more fun :) [01:59] ajsie: rikarends: https://github.com/caolan/async seems to be good too .. having a little bit more [02:00] Booths: lol so I'm finding out, glad I got it working though. [02:00] rikarends: ajsie: its just an idea how to write a chained api that is still async. [02:00] ajsie: yeah [02:00] Zeph\k0d3: jesusabdullah: http://blokmodular.com/dev/test26.htm [02:00] ajsie: rikarends: arent they using observer pattern? [02:00] zentoooo has joined the channel [02:00] Zeph\k0d3: that is the latest test from the o3-canvas [02:01] ajsie: register a function as callback for an event .. then fire that one when action function is finnished [02:01] Zeph\k0d3: I am currently working on adapting the blending algo to fix the "darker colors when blended on a transparent background" issue [02:01] ajsie: passing the data [02:01] rikarends: Zeph\k0d3: with tests thanks to TJ, almost feature complete. [02:01] rikarends: nice. [02:01] Knutty: Oh.... so node.js is a set of bindings to allow JS to act as a server language........ [02:02] pquerna: why do people use websockets to talk between node processes? [02:02] ajsie: Knutty: yeah [02:03] Knutty: Ah. And it gets set up like one would set up PHP on a server too? [02:03] ajsie: Knutty: its very powerful and simple to use [02:03] ajsie: Knutty: not quite [02:03] ajsie: Knutty: PHP uses a web server .. with node.js you create the web server [02:03] ajsie: with javascript [02:03] Knutty: ajsie: Oh, ok. So it is more like.... an apache web server? [02:03] jesusabdullah: Looks nice Zeph [02:04] Knutty: Sorry this is all very new to me [02:04] Zeph\k0d3: pquerna: possibly to allow scalability? [02:04] echosystm: Knutty: with PHP, you bind your PHP program to a web server [02:04] echosystm: with node.js, your program IS the webs erver [02:04] Zeph\k0d3: jesusabdullah: still some minor kinks to work out [02:04] ajsie: PHP uses Apache .. node.js runs javascript .. basically you write : "Run server on port 80" but in javascript [02:04] rikarends: pquerna: websockets are half a protocol already. You could also just use plain sockets, but websockets are hardly overhead for having it run over http [02:04] Zeph\k0d3: and then I'll add the next batch of testcsaes [02:05] Zeph\k0d3: cases [02:05] pquerna: Zeph\k0d3: group communication != protocol for group communication [02:05] ajsie: Knutty: i know its a bit confusing .. i didnt get it the very first time either .. you have to look at an example to get it and run an example .. install it .. use it nodejs.org [02:05] Zeph\k0d3: well no, but "possibly" [02:05] indutny has joined the channel [02:05] pquerna: I guess I don't understand why the group communication protocol is not just plain http [02:05] Knutty: Ok. Will to that [02:05] Knutty: Need to set up ubuntu again :p [02:06] ajsie: Knutty: look at the first example .. and you will get it right away then playing with the documentation .. also look at expressjs.org [02:06] rikarends: Plain HTTP is not bidirectional (as in how browsers implemented it) so you need to get inefficient polling connections [02:06] rikarends: Websockets are an extension on HTTP to pretty much be a bidirectional pipe over http [02:06] Knutty: ajsie: Thanks for your help, I'll do that [02:06] pquerna: i'm not talking about browser communication; just node to node communication. [02:06] rikarends: hence websockets are nearly the same as sockets except they start over http [02:06] ajsie: Knutty: dont do everything from scratch .. express.js is good to learn node.js i think in a quick way [02:07] Knutty: Use express.js.... will do [02:07] rikarends: pquerna: http has a bunch of thinks going for it already. why not use it as the foundation for a protocol [02:07] rikarends: pquerna: beats reinventing another binary like socket protocol [02:07] shimondoodkin: for what is it useful node-canvas / node-o3-canvas [02:08] rikarends: shimondoodkin: rendering pics on the server with canvas. for whatever reason [02:08] pquerna: rikarends: well, thats my point; If you need to communicate between N node node's, why would you use websockets; It is just yet another binary socket protocol, but sigh. nevermind. [02:08] Zeph\k0d3: shimondoodkin: imagine creating downloadable/mailable imagery.. or pdfs [02:08] Zeph\k0d3: or generate a theme for your site on the fly and store it on the server as pngs [02:08] Zeph\k0d3: or whatever [02:08] rikarends: pquerna: well because of what i said. you have to reinvent less [02:08] rikarends: pquerna: but maybe thats not the reason. ask the people that made it [02:09] langworthy has joined the channel [02:09] shimondoodkin: does it supports pango and html layouting? [02:10] Zeph\k0d3: right now it supports canvas, you can do whatever magic you want on top of that [02:10] rikarends: openCV! [02:11] shimondoodkin: openCV :) [02:13] Utkarsh has joined the channel [02:13] mjr_ has joined the channel [02:14] tlrobinson__ has joined the channel [02:15] rikarends: shimondoodkin: actually what we started with was a plain 'image' component with support for Twain scanners and a barcode analysis api and PDF output. But that then got extended with a basic version of canvas to also render charts. Now canvas gets completed [02:19] shimondoodkin: rikarends: wow does it really supports scanenrs and barcode analysis and pdf , is the code public? [02:19] rikarends: the component actually started life as a browser plugin not a server component [02:19] rikarends: shimondoodkin: yep its in the repo, after canvas is complete i will make builds of that too [02:19] shimondoodkin: i can build staff [02:19] rikarends: shimondoodkin: PDF output is image based btw, not vector. just fyi. [02:20] shimondoodkin: hah thanks [02:20] Zeph\k0d3: vector based pdf could be an option later.. not too hard now that I've read the damn spec. [02:20] rikarends: oh yeah you did :) [02:20] rikarends: we'll see what the demand is. [02:20] Zeph\k0d3: everything I never wanted to know and was preparing to never ask about pdf... [02:20] Zeph\k0d3: 1400 fucking pages [02:21] ajsie: anyone: http://pastie.org/1283370 [02:21] rikarends: hey it probably is less crap than parsing PSD files ;) [02:21] Zeph\k0d3: quite possibly :) [02:21] ajsie: why does he use defineProperty [02:21] Zeph\k0d3: fun fact about the pdf spec -> the examples dont work. [02:21] Yuffster has joined the channel [02:21] rikarends: Zeph\k0d3: hey why help competitors? :) Adobe is smart like that. [02:22] Zeph\k0d3: the insanity of merging a text-based format with absolute byte offsets [02:22] rikarends: the PSD spec is even more fun. its like an inconsistent object tree with binary offsets calculated differently for all sorts of tastes of subtrees [02:22] Zeph\k0d3: raaah [02:23] rikarends: What you just said sound a bit like PSD tho ;) [02:23] tlrobinson_ has joined the channel [02:23] Zeph\k0d3: also, some lines have a mandatory length in the file [02:23] rikarends: I actually parsed PSD's with a sort of scheme that could get 'lost' and just say 'fuck it' lets skip to the next chunk approximately :) [02:24] Zeph\k0d3: would not surprise me if this is the way we finally end up at self-aware AI [02:24] Zeph\k0d3: "yeah I was just trying to parse this file.. and now it is sulking and asking for its teddybear" [02:24] rikarends: yeah webstandards are overrated. the early AI's can probably already parse PSD's [02:24] rikarends: who cares about RDF [02:25] rikarends: I really wonder when they can read Word files though [02:25] rikarends: that format is like a binary dump of the evolution of Office [02:26] Zeph\k0d3: :) [02:26] twoism has joined the channel [02:27] Utkarsh has joined the channel [02:27] rwaldron__ has joined the channel [02:27] rikarends: whats the neat part is that they bulk converted that to XML and then wrote up a paper calling it a standard :) [02:28] Zeph\k0d3: that is almost like 0x450x14 [02:28] rikarends: whats that.. crap from office xml? [02:29] Zeph\k0d3: just how I imagine it to be [02:29] Zeph\k0d3: but it is probably worse somehow [02:29] rikarends: most likely is [02:29] MattDiPasquale has joined the channel [02:30] rikarends: yeah it allows RLE compression too ;) [02:31] Zeph\k0d3: ok. this templating has reached the limit of what visual studio can manage [02:31] Zeph\k0d3: I can NOT actually trace my way to the pixel loop without tracing the disassembly [02:32] rikarends: ajsie: read the defineProperty docs, its probably read only or something [02:32] sprout has joined the channel [02:32] ajsie: rikarends: okay [02:33] rikarends: Zeph\k0d3: uh. ah. crap :) [02:33] derferman has joined the channel [02:34] shimondoodkin: Zeph\k0d3: tastes like microsoft's solution [02:34] Zeph\k0d3: dunno.. this templating is just too deep [02:34] jimt_ has joined the channel [02:34] Zeph\k0d3: I dont know any compiler/IDE that behaves any better than this [02:35] Zeph\k0d3: just as a hint -> C0F5E jle o3::agg::agg::renderer_base,o3::agg::agg::row_accessor,unsigned int> >::blend_solid_hspan+35h (8C0F65h) [02:35] Zeph\k0d3: this is the type of templating [02:35] rikarends: it can be a nice way to write polyfillers, but i can also be crap to debug [02:35] rikarends has left the channel [02:36] shimondoodkin: whan does MPL means to me? [02:37] shimondoodkin: can i sell it?, can they sue me? [02:37] shimondoodkin: will they be able to takeover my proprietery code? [02:37] Zeph\k0d3: you mean that line? [02:37] Aria has joined the channel [02:39] shimondoodkin: no [02:39] shimondoodkin: i am baout MPL licanse [02:39] shimondoodkin: about [02:39] benburkert has joined the channel [02:39] Zeph\k0d3: no idea.. get a legalteam ;) [02:40] mbrochh: Hey folks. Has anybody here worked with express.js and the connect-assetmanager already? [02:40] quirkey has joined the channel [02:40] Guest82825 has joined the channel [02:45] Tobsn has joined the channel [02:45] ecounysis has joined the channel [02:47] ecounysis: k [02:47] bradleymeck has joined the channel [02:50] steve_agalloco has joined the channel [02:53] evanmeagher has joined the channel [02:54] slaskis_ has joined the channel [02:56] teemow has joined the channel [02:57] tlrobinson_ has joined the channel [02:59] jasondavies has joined the channel [02:59] jasondavies has joined the channel [02:59] tapwater_ has joined the channel [03:00] ecounysis has left the channel [03:01] Utkarsh has joined the channel [03:02] MattDiPasquale has joined the channel [03:05] twoism has joined the channel [03:07] noahcampbell has joined the channel [03:08] MattDiPasquale has joined the channel [03:09] sechrist has joined the channel [03:10] langworthy has joined the channel [03:13] sudoer has joined the channel [03:14] BillyBreen has joined the channel [03:14] mbrochh: is there any IDE recommended for development with node.js? [03:14] inimino: vim [03:15] yenz: mbrochh: you could try this? http://thechangelog.com/post/1186042992/cloud9-node-js-powered-ide-in-the-sky [03:18] Utkarsh has joined the channel [03:19] aurynn has joined the channel [03:20] sechrist has joined the channel [03:20] springmeyer has joined the channel [03:22] justin_ has joined the channel [03:23] Aria: I use vi, but all I care about is startup time and decent search by regexp [03:27] AAA_awright_ has joined the channel [03:28] jamescarr_ has joined the channel [03:28] jamescarr_: hmmmm [03:29] jamescarr_: is there someway to make a method in a module just return the module.exports again? [03:29] Utkarsh has joined the channel [03:29] jamescarr_: when I return module.exports, the module requiring it cant access properties on it [03:31] SubStack: I usually just set properties on the function I export [03:31] boaz_ has joined the channel [03:31] SubStack: module.export = Moo; Moo.Moo = Moo [03:32] SubStack: then require('moo') == require('moo').Moo [03:32] tapwater has joined the channel [03:35] indutny: SubStack: i like function properties :) Just one point: do not use 'name' as property ;) [03:35] MattDiPasquale has joined the channel [03:35] SubStack: yep! [03:35] SubStack: also length [03:35] SubStack: had that one result in a confusing bug once [03:37] tapwater_ has joined the channel [03:38] indexzero has joined the channel [03:38] indexzero: I told an auditorium full of people today at Columbia University that "node.js is the future of web development" [03:38] jashkenas has joined the channel [03:38] Knutty: Cool, get the word out [03:39] Knutty: I love the concept [03:39] Utkarsh has joined the channel [03:39] indutny: indexzero: Congrats [03:39] indutny: :) [03:40] indexzero: indutny: Thanks, so very close to nodejitsu release [03:40] sh1mmer has joined the channel [03:40] indexzero: I have a good feeling about tonight [03:40] alexfner has joined the channel [03:40] elijah-mbp has joined the channel [03:40] Knutty: I got a feelin... [03:40] Knutty: Ohh ohhh ohh ohhhh [03:41] Knutty: That tonights gonna be a good night..... [03:41] AAA_awright has joined the channel [03:41] marshall_law_ has joined the channel [03:42] indexzero: Knutty: I like where your mind's at, but I HATE that song [03:42] Knutty: Haha i had to [03:43] Knutty: ACTION gouges eyes out wiht forks [03:44] Knutty: Installing ubuntu server [03:44] Knutty: I love fast progress bars [03:44] springmeyer has joined the channel [03:45] Aria: I'd trade you. CS5 takes 1.2 hours. [03:45] Knutty: Lucky. My conn is only 1.5 MBPS [03:45] indexzero: ACTION has installed node.js 1000 times this month .... [03:45] Knutty: I live like on a farm [03:46] Knutty: indexzero: woah [03:46] indexzero: Knutty: Don't worry, it's all automated at this point [03:46] indexzero: but you gotta test the cluster somehow [03:46] indexzero: I really should make an image, but I can get a provision a server and install / configure everything I need in ~8 min [03:47] Knutty: haha yea automated sounds more... believable. [03:47] Knutty: Cant image? [03:47] indexzero: http://github.com/nodejitsu/node-cloudservers [03:47] Knutty: Ah [03:47] indexzero: Knutty: Rackspace cloud images are a little awkard atm [03:47] indexzero: they will be better in like 6 weeks [03:47] indexzero: right now they live with the server [03:47] jashkenas: what happens in 6 weeks? [03:47] indexzero: so unless I want image servers floating around that do nothing [03:47] Knutty: Ok, by that point this shouldent be so over my head [03:48] indexzero: they're adding the ability to store images in cloudfiles [03:48] indexzero: so you won't have to keep the image servers around [03:48] indexzero: it'll be more like AWS [03:48] Knutty: I'm stull getting used to how the prog is actualy the server, but i think i get what your saying [03:48] jashkenas: why'd you pick rackspace over AWS to start? [03:48] indexzero: jashkenas: We've been working on this since before micro instances were around [03:49] Knutty: HOLY CRAP [03:49] Knutty: GOOD IDEA [03:49] jashkenas: indexzero: micros are shite. [03:49] Knutty: I'll do this for my sophmore writing project [03:49] indexzero: ah, well the 256mb provisioned servers at Rackspace are pretty good [03:49] Knutty: on emerging technologies [03:49] Utkarsh has joined the channel [03:49] Yuffster has joined the channel [03:50] indexzero: we didn't want to run a hypervisor on top of another hypervisor so we opt to slice small [03:50] indexzero: jashkenas: I need to do more benchmarking. Also, I think Rackspace has something to prove, and I'm hoping to get some sweet deals from them [03:51] indexzero: I'm sure Github probably did [03:52] MattDiPasquale has joined the channel [03:53] rcy` has joined the channel [03:54] mbrochh has joined the channel [03:54] mbrochh has joined the channel [03:54] mbrochh: anybody here familiar with jade.js? [03:54] mbrochh: script(src="/static/js/#{cacheTimestamps.js}/client.js", type="text/javascript") <-- why is it that #{cacheTemplate.js} is not beeing replaced by the variables value? i [03:55] Blackguard has joined the channel [03:56] SubStack: mbrochh: do script(src="/static/js/" + cacheTimestamps.js + "/client.js") [03:56] mbrochh: d'oh [03:57] mbrochh: thank you! [03:57] mbrochh: it works. so happy :) [03:59] springmeyer has joined the channel [03:59] Yuffster has joined the channel [03:59] Knutty: How long ago about did nodejs come out? [03:59] Knutty: Less than a yr? [04:00] temp02 has joined the channel [04:01] necrodearia has joined the channel [04:01] twoism has joined the channel [04:01] MattDiPasquale has joined the channel [04:02] admc has joined the channel [04:02] twoism has joined the channel [04:02] AAA_awright_ has joined the channel [04:03] Utkarsh has joined the channel [04:04] necrodearia has joined the channel [04:08] micheil: feb 2009 [04:08] micheil: Knutty: ^ [04:14] ajsie: are there libraries for observer pattern? [04:14] ajsie: rather than me trying to figure out everything myself [04:14] ajsie: or event dispatching? [04:14] Aria: how about emit('changed') ? [04:14] Aria: How about emit('event') ? [04:14] Utkarsh has joined the channel [04:15] Knutty: micheil: thanks. I think that will work for the project [04:15] ajsie: Aria: like http://components.symfony-project.org/event-dispatcher/ [04:16] ajsie: back when i was using php that was a really good library to use [04:16] Aria: holey moses that's complicated. [04:17] Aria: That's like ... 2 lines in node. [04:17] Aria: anEventEmitter.emit('event', parameters) [04:17] Aria: anEventEmitter.on('event', function(parameters) { }) [04:17] Aria: And if you need cancelable processing, that's not hard either. . . [04:19] ajsie: where do you get emit from? [04:20] Aria: events.EventEmitter [04:21] ajsie: what is events.EventEmitter? [04:21] ajsie: are there some docs? [04:22] temp01 has joined the channel [04:22] tmpvar: hello [04:22] ajsie: Aria: found it thanks [04:23] Aria: Woot. [04:23] micheil: ajsie: http://static.brandedcode.com/node-doc/events.html [04:25] mikew3c_ has joined the channel [04:26] ajsie: Aria: didnt think Node.js had it built in .. thats why i looked for a library [04:26] rbranson: any backbone.js users alive? [04:26] Aria: Hehe. It's pretty much what node.js /is/ [04:27] ajsie: Aria: hehe [04:28] matt_c has joined the channel [04:32] matt_c has joined the channel [04:39] jdalton has joined the channel [04:40] jashkenas: rbranson: yup. [04:41] necrodearia has joined the channel [04:49] ctp has joined the channel [04:50] Me1000 has joined the channel [04:50] Utkarsh has joined the channel [04:52] rbranson: jashkenas: what's convention for collections nested in models? I'm just adding a method to the model that builds a new collection class with model and url set and instantiates it [04:53] bartt has joined the channel [04:54] smtlaissezfaire has joined the channel [04:54] jashkenas: rbranson: that works ... I tend to use nested collection properties that lazy-load their models when the UI needs them. for example: [04:55] jashkenas: Document.first().notes.fetch() [04:55] jashkenas: rbranson: But whatever works ... a lot of folks that use document-dbs like Mongo already have their nested child models included in the initial request, and just need to deserialize them. [04:55] robotarmy has joined the channel [04:56] rbranson: jashkenas: are they doing that in parse() ? [04:56] rbranson: also, this.url() doesn't work inside of the Model initialize :/ [04:57] rbranson: Backbone.Collection.extend({ [04:57] rbranson: model: Task, [04:57] rbranson: url: this.url() + "/tasks" [04:57] rbranson: }); [04:57] rbranson: nice because of RESTful URLs [04:57] jashkenas: eh, ... there's no "this" there... [04:57] rbranson: well the this is scoped to the Model [04:58] rbranson: so it's the model's URL + "/tasks" [04:58] jashkenas: gotcha. [04:58] jashkenas: you can also instantiate it and *then* set the URL, if it makes things easier. [04:58] jashkenas: what sort of app are you building? [04:59] rbranson: i'm experimenting with a rebuild of an app for task management [05:00] jashkenas: rbranson: the proper room for backbone questions is #documentcloud, btw. [05:00] rbranson: ah shweet, guess I'll lurk in there :) [05:01] rbranson: lots of random JS stuff goes on in here [05:01] kloeri has joined the channel [05:02] jashkenas: indeed. [05:04] mbrochh: is it possible to use connect-asset-manager in conjunction with express.compiler({ src: pub, enable: ['sass'] }), and express.staticProvider ? [05:13] robmason has joined the channel [05:13] superjudge has joined the channel [05:14] indutny: v8: console.log(123); [05:14] v8bot: indutny: CONSOLE: [123], OUTPUT: undefined [05:15] indutny: v8: i=1000;while(i--) console.log(i + ' '); [05:15] v8bot: indutny: CONSOLE: ["999 ", "998 ", "997 ", "996 ", "995 ", "994 ", "993 ", "992 ", "991 ", "990 ", "989 ", "988 ", "987 ", "986 ", "985 ", "984 ", "983 ", "982 ", "981 ", "980 ", "979 ", "978 ", "977 ", "976 ", "975 ", "974 ", "973 ", "972 ", "971 ", "970 ", "969 ", "968 ", "967 ", "966 ", "965 ", "964 ", "963 ", "962 ", "961 ", "960 ", "959 ", "958 ", "957 ", "956 ", "955 ", "954 ", "953 ", "952 ", "951 [Output truncated...] [05:15] indutny: v8: i=100;setInterval(function() { console.log(i-- + ' '), 100); [05:15] v8bot: indutny: SyntaxError: Unexpected token ) [05:15] indutny: v8: i=100;setInterval(function() { console.log(i-- + ' '); }, 100); [05:15] v8bot: indutny: ReferenceError: setInterval is not defined [05:15] indutny: v8: +new Date [05:15] v8bot: indutny: 1289279728309 [05:18] blaines has joined the channel [05:19] blaines has joined the channel [05:22] mape: mbrochh: just put it infront of them and it should work fine [05:23] mape: mbrochh: if the asset maanger doesn't match the path it just passes it through [05:26] jiggliemon has joined the channel [05:26] mbrochh: mape, many thanks for your answer! what do you mean by "it" and "them"? [05:27] a_meteorite has joined the channel [05:27] mape: mbrochh: it would be the asset manager, them would be express.compiler and express.staticProvider [05:28] mbrochh: hmm ok... [05:28] a_meteorite has joined the channel [05:28] mape: note that you can also create a hook for the asset manager to compile the sass files if you want those files to be handled [05:29] saschagehlich has joined the channel [05:30] sh1mmer has joined the channel [05:30] mbrochh: mape, that sounds like exactly what i want to do [05:31] mape: mbrochh: take a look at https://github.com/mape/connect-assetmanager-handlers to get an idea of how to create hooks [05:31] smtlaissezfaire has joined the channel [05:32] mape: should only be a couple lines of code if you couple if with a sass module [05:32] hdon has joined the channel [05:32] mbrochh: mape, would I need to write my own assetHandler? [05:33] mape: Well, only a preManipulate hook [05:35] mr_daniel has joined the channel [05:39] sechrist has joined the channel [05:40] jchris has joined the channel [05:44] nsolsen has joined the channel [05:44] ajsie: how do i create an object that is an EventEmitter in node.js? [05:44] sideshowcoder has joined the channel [05:44] SubStack: var em = new EventEmitter [05:45] indutny: ajsie: function obj() {}; [05:45] indutny: sorry [05:45] indutny: arjsie: function obj() { [05:46] indutny: arjsie: EventEmitter.call(this); [05:46] indutny: arjsie: }; [05:46] indutny: arjsie: sys.inherits(obj, EventEmitter); [05:46] indutny: arjsie: var test = new obj(); [05:46] indutny: arjsie: test.on('event', function(){ ... }); [05:46] indutny: arjsie: test.emit('event'); [05:46] jiggliemon has left the channel [05:47] ajsie: so var em = new events.EventEmitter; is for creating a new one [05:47] ajsie: and indutny's method is for extending an existing object? [05:47] indutny: yep [05:47] ajsie: okay thx [05:48] ajsie: indutny: what does sys.inherits mean? isnt sys replaced by util? [05:49] AAA_awright has joined the channel [05:53] jakehow has joined the channel [05:54] indutny: oh [05:54] indutny: sorry [05:54] indutny: really [05:54] indutny: forgot :) [05:54] indutny: this adds changes prototype of object [05:54] indutny: to second argument [05:54] mbrochh has joined the channel [05:55] mbrochh: re [05:55] mbrochh: mape, would it be possible to call the express.compiler somehow? Or do I have to import sass.js and compile the file manually? [05:56] davidascher has joined the channel [05:57] tilgovi has joined the channel [05:58] ajsie: indutny: sorry i dont get it .. could you explain these 2 lines: http://pastie.org/1283709 [05:59] mape: mbrochh: You would have to do it manually, unless you can pipe it through express.compiler in some way [05:59] mape: I'm off to work but I'll be back in 15min [05:59] chakrit has joined the channel [06:00] indutny: ajsie: first line is calling eventemitter constructor on current object (initialize EventEmitter) [06:00] chakrit has left the channel [06:00] ajsie: indutny: like super in ruby i guess? [06:00] indutny: ajsie: Second one is changing 'prototype' attribute of obj to EventEmitter instance [06:00] indutny: yes [06:00] indutny: something like [06:00] indutny: but not equal [06:00] ajsie: why does it pass this? [06:01] ajsie: oh i get it now =) [06:01] indutny: it's not passing [06:01] ajsie: it was a call() [06:01] ajsie: yes [06:01] indutny: :) [06:01] fangel has joined the channel [06:02] mbrochh: mape, in the asset-managers files array I would add styles.sass, right? Then in preManipulate I would do sass.render somehow and write it to another file styles.css - but how does the asset-manager know that this new file should be taken into consideration for merging / minifying now? [06:02] mbrochh: mape, oh ok [06:02] indutny: v8: function a() {}; function b(){}; a.prototype.x = 1; b.prototype.y = 1; var _proto = new b(); _proto.constructor = a.constructor; a.prototype = _proto; var test = new a(); console.log(test); [06:02] v8bot: indutny: CONSOLE: [{}], OUTPUT: undefined [06:02] indutny: v8: function a() {}; function b(){}; a.prototype.x = 1; b.prototype.y = 1; var _proto = new b(); _proto.constructor = a.constructor; a.prototype = _proto; var test = new a(); console.log(test.x, test.y); [06:02] v8bot: indutny: CONSOLE: [undefined, 1], OUTPUT: undefined [06:02] indutny: v8: function a() {}; function b(){}; a.prototype.x = 1; b.prototype.y = 1; var _proto = new b(); _proto.constructor = a.constructor; a.prototype = _proto; var test = new a(); console.log(test.x, test.y, _proto, a, b); [06:02] v8bot: indutny: CONSOLE: [undefined, 1, {"constructor": function Function() { [native code] }}, function a() {}, function b(){}], OUTPUT: undefined [06:03] hdon has joined the channel [06:04] indutny: v8: function a() {}; function b(){}; b.prototype.y = 1; var _proto = new b(); _proto.constructor = a.constructor; a.prototype = _proto; a.prototype.x = 1; var test = new a(); console.log(test.x, test.y); [06:04] v8bot: indutny: CONSOLE: [1, 1], OUTPUT: undefined [06:04] indutny: v8: function a() {}; function b(){}; b.prototype.y = 'y'; var _proto = new b(); _proto.constructor = a.constructor; a.prototype = _proto; a.prototype.x = 'x'; var test = new a(); console.log(test.x, test.y); [06:04] v8bot: indutny: CONSOLE: ["x", "y"], OUTPUT: undefined [06:04] indutny: ajsie: that's it [06:07] mde has joined the channel [06:11] shreekavi has joined the channel [06:12] ajsie: indutny: i found an easier way [06:12] ajsie: em = Object.create(new events.EventEmitter); [06:12] ajsie: :) a one liner [06:14] JimBastard has joined the channel [06:16] mbrochh: sass.render(my_sass_file) always returns an empty string [06:16] mbrochh: i included it like so: var sass = require('sass'); [06:16] mape: mbrochh: you get the path in the function [06:17] mbrochh: mape, yep i know [06:17] mape: so if(path.match(/\.sass/)) {convertSassToCss(file)} else {callback(file);} [06:17] mbrochh: mape, yep.. but even when i call sass.render('body'), which should be a valid sass file (right?) it returns an empty string [06:18] mape: mbrochh: Hmm that I wouldn't know anything about I'm afraid [06:19] JimBastard: sass.render('body') means you are sending the string"body" [06:19] JimBastard: as the argument [06:19] mbrochh: mape, shouldnt your example be like [...] {callback(convertSassToCss(file))} [...] ? [06:20] mape: mbrochh: Yes, sorry, early in the morning here :) [06:20] mbrochh: JimBastard, on github they say under usage: [06:20] mbrochh: var sass = require('sass') [06:20] mbrochh: sass.render('... string of sass ...') [06:20] mbrochh: 'body' should be a valid string of sass, shouldn't it? [06:21] mape: perhaps it needs properties to be valid? [06:21] JimBastard: i actually dont know sass very well [06:22] mbrochh: mape, of course i have a real valid sass file which works when i use serveStatic and the express.compiler [06:22] tlrobinson_ has joined the channel [06:22] mape: Check how express.compiler does it? [06:23] mape: Hmm npm seems down :( [06:23] mbrochh: i did :) https://github.com/senchalabs/connect/blob/master/lib/connect/middleware/compiler.js [06:23] mbrochh: i don't get it :( [06:24] mape: Hmm yeah.. Seems easy enough [06:25] mbrochh: they just call sass.render(str), don't they? [06:25] mape: Yeah [06:26] jimt has joined the channel [06:27] matjas has joined the channel [06:27] tlrobinson_ has joined the channel [06:28] beawesomeinstead has joined the channel [06:28] beawesomeinstead has joined the channel [06:28] mbrochh: funny... sass.collect seems to work [06:40] Utkarsh has joined the channel [06:42] smtlaissezfaire has joined the channel [06:42] micheil: JimBastard: "author is moderated" is there a good reason for that? [06:43] JimBastard: micheil: where? [06:43] micheil: on the node-dev mailing list. [06:43] micheil: :P [06:43] JimBastard: i think thats the default action [06:43] micheil: yeah [06:43] micheil: ACTION has marked as "always allowed" [06:46] JimBastard: NOW IM GONnA POST PRON [06:46] JimBastard: >.< [06:49] intacto has joined the channel [06:50] SINPacifist has joined the channel [06:50] jimt_ has joined the channel [06:56] rcy` has joined the channel [06:56] shreekavi has left the channel [06:58] ngw has joined the channel [07:01] mikeal has joined the channel [07:01] derferman has joined the channel [07:04] yeevgen has joined the channel [07:07] shouvik has joined the channel [07:07] shouvik: hi [07:07] shouvik: when I install node.js and socket.io [07:07] shouvik: am I installing some sort of server too? [07:08] shouvik: I am confused coz I am always being asked what server am I hosting on local host! [07:08] shouvik: to the best of my knowledge I never installed any server [07:08] shouvik: so whats the deal?/ [07:09] SubStack: shouvik: "servers" are just processes that listen on a port [07:09] mbrochh: mape, i'm trying to get replaceImageRefToBase64 flying... is it correct to just put something like this into the css file: background:data-url(/public/img/bg.png); [07:10] mape: mbrochh: without public [07:11] mbrochh: mape, in app.js it will look like this, , assetHandler.replaceImageRefToBase64(__dirname + '/public') correct? [07:11] mape: yeah, that sets the root path it uses [07:12] mbrochh: ok when i reload the page now, i can see the image [07:12] jimt has joined the channel [07:13] mape: :) [07:13] Utkarsh has joined the channel [07:14] mbrochh: however chrome shows that bg.png has been loaded as a ressource and the css file looks like this: body{background:url(/img/bg.png)} [07:14] mape: Could the css be cached? [07:14] jacobolus has joined the channel [07:15] mbrochh: mape, i added some bullshit like test: 1 [07:15] mbrochh: and i can see it in chrome [07:15] mape: ad if you check the actual css? [07:15] mape: *and [07:15] mbrochh: hw do you mean? [07:15] mape: open the actual css [07:15] mape: through the browser [07:16] mape: or curl [07:16] mbrochh: body{background:url(/img/bg.png);test:1} [07:16] mape: Oh, guess I should document that [07:16] mape: if the file is larger then 32KB it won't be inlined [07:16] mbrochh: oh [07:16] mape: IE doesn't like that :S [07:16] mbrochh: hmm... should be super small, lemme check [07:17] mbrochh: 98kb [07:17] mbrochh: duh! [07:17] mbrochh: so inlining only works for REALLY small images, like icons or so? [07:20] tekky has joined the channel [07:21] mbrochh: mape, doesn't seem to work with 25kb as well :( [07:21] jfd1 has joined the channel [07:21] mape: Well 32KB is a lot for UI images, should work for most [07:22] mape: Hmm k, that is strange, seeing how it does replace data-url to url the only issue should be size [07:22] mikeal has joined the channel [07:23] mbrochh: guess i will just use sprites as usual in the future [07:23] mbrochh: what a bloody waste of time... sass doesn't work, inline images don't work :~( whole day wasted :) [07:23] mape: Why not debug the issue then? [07:24] mbrochh: which editor do you suggest? [07:24] mape: Doesn't really matter, just open the files and start checking where stuff breaks? [07:25] mbrochh: wouldn't it be cool to be able to set breakpoints? :) [07:25] mape: https://github.com/mape/connect-assetmanager-handlers/blob/master/lib/handlers.js#L102 [07:26] mape: console.log(base64string.length) [07:26] mape: see if that fires [07:26] mape: and what the image size it [07:26] mape: *is [07:28] mbrochh: i have two jades in my /usr/local/lib/node ... one called jade and one called jade@0.5.5 [07:28] mbrochh: could it be that the 0.5.5. one came with express.js? [07:29] mbrochh: same applies to many other packages [07:29] mbrochh: just curious... [07:29] sechrist: SubStack: ping [07:30] SubStack: pong [07:30] sechrist: I see your fork of dnode-py [07:30] sechrist: is it semi-functional? [07:31] SubStack: not yet [07:31] SubStack: ^ jesusabdullah [07:31] ajsie: i want to chain methods .. why do i encounter an error telling me that there is no such method: http://pastie.org/1283817 [07:31] sechrist: hehe I wish my company would sponsor node projects [07:32] sechrist: I have to write something really kickass in it before the CTO goes 'ok, do it' [07:32] SubStack: yeah I would be hacking on dnode-python right now but I'm in the middle of launching a product [07:33] mbrochh: mape, where are the source files... can't find em :) [07:33] sechrist: yep, np, any efforts on it are appreciated. I'm sure i'll use it once it's working. [07:33] sechrist: Anybody here have any experience with the nodejs protocol buffer implementation? [07:33] mape: mbrochh: console.log(require.paths) [07:34] Throlkim has joined the channel [07:34] mbrochh: sweet [07:36] SamuraiJack has joined the channel [07:42] themiddleman has joined the channel [07:44] derferman has joined the channel [07:48] mbrochh has joined the channel [07:48] mbrochh has joined the channel [07:51] ph^ has joined the channel [07:51] tlrobinson_ has joined the channel [07:53] jacobolus has joined the channel [07:54] MrTopf has joined the channel [07:56] margle has joined the channel [08:00] evanmeagher has joined the channel [08:01] Nohryb has joined the channel [08:02] shreekavi has joined the channel [08:03] pquerna: fun fact. the 'standard' lua json parser has a bug handling \u decoding in strings. [08:03] pquerna: like if you have the string 'uaa' (without the \), it will decode it as a raw byte [08:04] mraleph has joined the channel [08:04] shreekavi has left the channel [08:06] micheil: ha. [08:07] Utkarsh has joined the channel [08:07] mikeal has joined the channel [08:07] mikedeboer has joined the channel [08:09] sideshowcoder has joined the channel [08:12] shouvik has joined the channel [08:12] rogermar has joined the channel [08:13] Utkarsh has joined the channel [08:13] pquerna: the pain. arrg. [08:15] margle: How many of you guys are using coffeescript? [08:15] indutny: i'm definitely no [08:16] pquerna: nope. [08:16] FLYBYME has joined the channel [08:17] simme has joined the channel [08:17] micheil: not I [08:17] micheil: although, I know a few from the ruby community really like it. [08:17] qFox has joined the channel [08:19] sideshowcoder has joined the channel [08:19] JimBastard: no coffee here atm [08:19] JimBastard: but maybe in the future for something [08:22] shouvik: how you guys with js? [08:22] faust45 has joined the channel [08:23] JimBastard: return true; [08:23] indutny: v8: console.log(NaN === NaN); [08:23] v8bot: indutny: CONSOLE: [false], OUTPUT: undefined [08:23] shouvik: cool [08:23] shouvik: :) [08:23] shouvik: lol [08:24] shouvik: Hey guys, I am running into some trouble [08:24] shouvik: could use ur help [08:24] indutny: you can try [08:25] virtuo has joined the channel [08:26] Utkarsh has joined the channel [08:30] jankoprowski has joined the channel [08:34] shouvik: have a look at the setDims function here [08:34] shouvik: https://github.com/Mtillmann/mootools-canvas-lib/blob/master/Source/CanvasItem.js [08:35] shouvik: I would like to select a hexagon [08:35] shouvik: right now it recognises only squares [08:35] shouvik: could you tell me what parameters I could include so it recognizes a hexagon? [08:36] teemow has joined the channel [08:36] shouvik: rickogden : so it is essentially for selecting items right? just items in an array [08:37] shouvik: sorry different forum :P [08:41] sideshowcoder has joined the channel [08:42] jrockjiggz has joined the channel [08:44] shouvik: >;-) [08:45] Druid_ has joined the channel [08:45] faust45 has joined the channel [08:46] sideshowcoder has joined the channel [08:52] nsolsen has joined the channel [08:54] path[l] has joined the channel [08:56] adambeynon has joined the channel [09:01] rnewson has joined the channel [09:05] sixtus42 has joined the channel [09:06] twoism has joined the channel [09:13] Utkarsh has joined the channel [09:15] shouvik has left the channel [09:17] aubergine_ has joined the channel [09:17] MrTopf has joined the channel [09:19] karboh has joined the channel [09:20] aliem has joined the channel [09:27] markwubben has joined the channel [09:30] mikedeboer has joined the channel [09:31] mytrile has joined the channel [09:33] Wizek has joined the channel [09:33] TomY has joined the channel [09:34] mikedeboer has joined the channel [09:35] rnewson has joined the channel [09:35] slaskis has joined the channel [09:35] zemanel has joined the channel [09:36] aubergine has joined the channel [09:36] sechrist: JimBastard: ping [09:36] indutny: sechrist: JimBastard: ping [09:37] AAA_awright_ has joined the channel [09:37] sechrist: indutny: sechrist: JimBastard: ping [09:37] indutny: that how ping becomes tracert [09:37] indutny: :D [09:37] sechrist: hahah [09:38] mape_ has joined the channel [09:38] Wizek: Hi there! how can request.write() be read on the server side? [09:38] Wizek: the request object doesn't seem to include the data transfered. [09:39] indutny: request.on('data', function(chunk) { ... }); [09:39] indutny: request.on('end', function() {...}); [09:39] MaSch_ has joined the channel [09:40] indutny: did it helped? [09:40] jackowayed_ has joined the channel [09:40] rajab has joined the channel [09:41] rubydiamond_ has joined the channel [09:41] Wizek: indutny: Yea, now I receaved a buffer [09:41] indutny: ok [09:41] slpsys has joined the channel [09:41] jesusabd1llah has joined the channel [09:42] sadiq_ has joined the channel [09:42] Wizek: indutny: ty. but how do I make it string? [09:42] broquain1 has joined the channel [09:42] beppu_ has joined the channel [09:42] frodeniu1 has joined the channel [09:42] floyd___ has joined the channel [09:42] mde_ has joined the channel [09:42] Noya_ has joined the channel [09:42] jwm_ has joined the channel [09:42] tjgillies: is there a way to use a public rsa key for verifier in crypto lib rather than a certificate? [09:43] Utkarsh has joined the channel [09:45] Zzzeph has joined the channel [09:45] jvolkman-work_ has joined the channel [09:46] skohorn_ has joined the channel [09:47] L_star has joined the channel [09:47] bpadalin_ has joined the channel [09:48] rudebwoy has joined the channel [09:48] danslo has joined the channel [09:49] indutny: Wizek: are you here? [09:49] LionMade0fLions has joined the channel [09:49] indutny: Wizek: Just do yourBufferVar.toString() [09:49] indutny: sorry, I was afk [09:50] ivan has joined the channel [09:50] Wizek: indutny: Yes, I also tried that, and it worked :) [09:50] indutny: :) [09:50] indutny: ok [09:51] Wizek: What is the idea behind streaming contetns between client and the server? Each party should do .write()s, and the other one has to listen for incoming chunk data? [09:53] agnat has joined the channel [09:53] indutny: yes [09:53] indutny: but not only [09:53] indutny: in ideal app [09:53] indutny: you should listen for errors, or client disconnection [09:54] Wizek: like request.on("error [09:54] Wizek: ? [09:55] mbrochh has joined the channel [09:55] zomgbie has joined the channel [09:55] sth: Anyone know if JS supports named regex match groups? [09:55] indutny: yes [09:55] sth: It does? [09:55] indutny: but with some restrictions [09:55] xla has joined the channel [09:56] aubergine has joined the channel [09:56] indutny: oh [09:56] indutny: no [09:56] indutny: sorry [09:57] sth: :/ [09:57] sth: I didn't see anything about it when I read JavaScript Cookbook, so I didn't know if it was possible [09:58] sth: Thanks though [09:59] rubydiamond_ has joined the channel [10:00] dquestions has joined the channel [10:00] jesusabd1llah: named regexp match groups? What do you mean by that, sth? [10:00] jesusabd1llah: ACTION likes learning [10:01] tek has joined the channel [10:01] sth: jesusabd1llah: in pcre, one can name capture groups using (?P[a-z-0-9]) [10:02] sth: And when you go to use the matches, they're stored in an assoc. array under the names you gave [10:04] Wizek: Is there a limit on how long a request path in an URL can be? [10:04] sth: Yes. [10:04] sth: It's different in each browser [10:04] sth: Apache probably doesn't care though [10:05] Wizek: And what if a http.createClient() connects to a http.createServer(), so both are Node.js [10:05] Wizek: ? [10:06] indutny: you probably need to dig RFCs [10:06] indutny: to find it [10:06] Wizek: RFC? [10:06] indutny: looks like there're no limit in nodejs [10:07] MrTopf has joined the channel [10:07] Wizek: So I can send megabytes of data with request url? :D [10:07] Wizek: how safe can that be? [10:08] Anti-X: more than 9000! [10:09] Wizek: Is that it's power level, or safetyness level? [10:09] indutny: :) [10:10] Wizek: I mean, I don't know how tcp and http handles info with request, how does it treat lost packages etc. [10:11] omarkj has joined the channel [10:13] robmason has joined the channel [10:17] sechrist: So I have a child process spawn that dumps stdout and stderr into a file [10:17] sechrist: I'd like to also stream stdout and stderr into my stderr and stdout [10:17] sechrist: kind of like tee I guess [10:17] sechrist: any way to do this? [10:20] jetienne has joined the channel [10:20] hellp has joined the channel [10:22] nsolsen has joined the channel [10:23] zomgbie has joined the channel [10:23] saschagehlich has joined the channel [10:25] mikew3c_ has joined the channel [10:38] aubergine has joined the channel [10:39] StanAngeloff has joined the channel [10:40] stagas has joined the channel [10:43] mr_daniel: When searching the current directory for file with a specific suffix, for example '*.txt', is there any difference between if( file.lastIndexOf('.txt')!==-1 ){...} and if( file.match(/\.txt$/) ){...} ? [10:44] mr_daniel: should I use the .lastIndexOf(str) or the .match(regexp) approach to check if a filename ends with a specific suffix? [10:45] Rixius has joined the channel [10:46] Rixius: what library does the nodejs twitter chatter use for IRC connection? [10:47] indutny: mr_daniel: regexp is better [10:47] indutny: because lastIndexOf catches last occurence of phrase in string, not checking if it's on the end of string or not [10:47] spetrea: can't believe this, I wrote a jabber bot in node.js [10:47] spetrea: very fast, couple of days at most, and it's pretty complex to be honest [10:48] echosystm has joined the channel [10:48] stagas has left the channel [10:49] echosystm: if you need to work with binary data and it isn't a stream.... what can you do? [10:49] mr_daniel: you are totally right about indutny , I totally forgot that also "file.txt.exe".lasIndexOf('.txt')!==-1 would be a match to [10:50] mr_daniel: so I'll use regexp with $, thanks for the top indutny [10:50] echosystm: earlier today i had the problem of needing to convert a float to a series of bytes [10:50] echosystm: but because of the way javascript casts to integer on all bitwise ops, its been a pain [10:50] echosystm: just wondering if node.js has some thing to help out with things like this [10:51] agnat has joined the channel [10:51] vandenoever has joined the channel [10:52] stride: nope, don't think so [10:52] stride: you needed the byte representation of the ieee 754 float? [10:53] echosystm: i needed to take a js float and convert it to ASN1 [10:53] Sami_ZzZ has joined the channel [10:53] saschagehlich has joined the channel [10:53] echosystm: i'm writing an SNMP module for nodejs [10:53] stride: oh, okay :) sweet [10:54] echosystm: it's been pretty easy up until now [10:54] echosystm: lol [10:57] echosystm: i was hoping to give my colleagues the hard sell and get nodejs used on some of our projects [10:57] echosystm: but i'm getting a bit worried if it will be suitable now [10:57] erlnoob has joined the channel [10:58] InsDel has joined the channel [10:58] tisba has joined the channel [10:59] AAA_awright has joined the channel [10:59] stride: heh, yeah I know that feeling.. try to sell node to a perl guy.. :)) [10:59] indutny: hahahahahaha [10:59] stride: what's your concern? the whole number thing? [10:59] echosystm: yeah [10:59] erlnoob: hi, i'm using expressjs, and added a custom middleware like so: app.use(function(req,res,next) {console.log("foo");}); just above the route handler for "/" [10:59] echosystm: we do a lot of networking type stuff and we use bitwise ops very often for marshalling/unmarshalling [10:59] erlnoob: the weird thing is, the middleware function executes twice [11:00] indutny: favicon.ico [11:00] indutny: erlnoob [11:00] erlnoob: one before the route handler and another after [11:00] indutny: erlnoob: do you have favicon? [11:00] agnat has joined the channel [11:00] erlnoob: nope, i'm just outputting a string in the "/" route handler [11:00] Rixius has left the channel [11:00] indutny: ok [11:00] echosystm: (we are almost exclusively perl users) [11:00] indutny: so browser is trying to load favicon.ico too [11:00] jetienne: erlnoob: you tried with curl ? [11:00] indutny: try console.log(req.url); [11:01] stride: echosystm: yeah, sadly that whole every-number-is-a-float thing is part of the language itself [11:01] echosystm: yeah [11:01] erlnoob: but, if i move the middleware declaration below the "/" route handler, it only executes once [11:01] indutny: yep [11:01] indutny: :) [11:01] echosystm: well its not so much the fact that every number is a float that is the problem [11:01] indutny: because / is handled [11:01] indutny: while /favicon.ico is not [11:01] echosystm: its more the fact that i cant access the bits [11:02] echosystm: the whole cast to integer thing is a bit of a pickle [11:03] stride: hmh [11:03] erlnoob: indutny: hmm, it requests "/" as well as "/favicon.ico" (using safari btw) [11:03] indutny: erlnoob: of course [11:03] indutny: browser is always requesting favicon [11:03] indutny: :D [11:03] stride: elinks2 doesn't *cough* [11:03] erlnoob: i still don't understand why the order matters tho' [11:04] indutny: because if it catches / [11:04] indutny: it will not go further [11:04] indutny: stop processing [11:04] indutny: that's the soul of middleware [11:05] echosystm: im not very familiar with express, but from my understanding your routes are converted to regexs when you create them erlnoob [11:05] erlnoob: yeah, i'm still getting used to this middleware stuff (coming from simple php) [11:05] erlnoob: you gotta admit the docs is a little light [11:05] echosystm: eg. so if uri =~ /\// happens first, its going to catch everything [11:06] erlnoob: and what's up with the color scheme, dark gray on black? come on.. [11:06] aubergine has joined the channel [11:07] echosystm: nodejs is for programmers, not superficial center-of-the-universe designers :P [11:07] mraleph has joined the channel [11:08] erlnoob: i'm talking about this awful color scheme: http://expressjs.com/guide.html [11:09] erlnoob: whatever happened to good ole' black on white? [11:09] echosystm: i know [11:10] echosystm: i dunno, beauty is in the eye of the beholder [11:10] echosystm: personally i like grey/white on black [11:10] echosystm: or green on black if possible, it makes me feel like morpheus [11:11] erlnoob: haha [11:11] echosystm: :-D [11:11] Lorentz: I prefer rainbows [11:11] Lorentz: It has to be good rainbows though, not just any colours [11:12] echosystm: why stop at the visible spectrum? infra red has feelings too [11:14] zorzar has joined the channel [11:15] Artem_S has joined the channel [11:15] Artem_S: Hi guys, can please someone explain this weirdnes: [11:15] Artem_S: > typeof global [11:15] Artem_S: 'object' [11:15] Artem_S: > typeof global.parseInt [11:15] Artem_S: 'undefined' [11:15] Artem_S: > typeof parseInt [11:15] Artem_S: 'function' [11:16] echosystm: well, global is an object [11:16] echosystm: global.parseInt doesnt exist [11:16] echosystm: and parseInt is a function [11:16] echosystm: :-D [11:16] Artem_S: strange, 'cause it's listed byt the node's console auto-suggestion [11:16] echosystm: hmm [11:16] Artem_S: when i go 'global.[tab]' [11:17] Artem_S: it lists all those global guys [11:17] Artem_S: like console etc [11:17] echosystm: yeah [11:17] echosystm: that is odd [11:17] Artem_S: Hmm [11:17] pTa_armi has joined the channel [11:17] Artem_S: Another weird one is that going like [11:17] Artem_S: global.myNamespace = {}; [11:17] Artem_S: does nothing [11:18] Artem_S: i.e. it doesn't modify the global [11:18] pTa_armi: good morning @all =) [11:18] Artem_S: im using 0.3.1-pre [11:18] Artem_S: any ideas why? [11:18] stride: morning pTa_armi [11:18] Artem_S: morning pTa_armi [11:21] faust45 has joined the channel [11:21] pTa_armi: some guys there who know something about nodejs and mongodb native? I have a question about building a mongodb "ignorecase" query. Is there a simple way to do that? [11:24] echosystm: i doubt theres any good reason for it Artem_S [11:25] echosystm: i imagine it is just a js idiosyncrasy [11:25] jdalton has left the channel [11:27] Artem_S: asked it on SO http://stackoverflow.com/questions/4133114/global-object-in-node-js [11:27] Artem_S: please feel free to contribute if you're after some karma :) [11:28] mr_daniel: IIRC, it is usually a good idea to 'schedule' function for execution and let node.js decide when to execute a specific function. [11:28] mr_daniel: I have a simple example to print the contents of an array recursively: http://pastebin.com/f2DNfpAg [11:28] mr_daniel: the problem: the function is blocking [11:29] mr_daniel: blocking in the sense that the outer function needs to wait for the inner function to complete on line 7 before it can go on and finish. [11:29] mr_daniel: Is this is a bad think? How can I schedule the execution of foo(arr) instead of calling it directly, so that I don't need to 'wait' for the function to execute. [11:30] mr_daniel: btw: the output of the script is http://pastebin.com/35P99kFh [11:30] echosystm: thats normal mr_daniel [11:30] everzet has joined the channel [11:31] linkwright_away has joined the channel [11:31] echosystm: theres nothing wrong with having one function call another and "block" [11:31] mr_daniel: in my opinion the output should 'not* be in sequence like in http://pastebin.com/35P99kFh but node should adhoc decide which call to execute when [11:31] echosystm: the problem arises when one of those functions goes to do IO or some other long process [11:32] echosystm: we dont consider RAM-only processing "blocking", only slow disk/network/whatever IO [11:33] mr_daniel: that makes sense echosystm , thanks for explanation [11:33] echosystm: that said, if you're doing folding or generating primes, then you could consider that the outer function would be blocked [11:33] echosystm: you would separate such things into a worker [11:34] mr_daniel: ...and in that case webworkers would be a good 'workround' [11:34] mr_daniel: yes [11:34] echosystm: yup [11:34] mr_daniel: folding? what is folding? [11:34] echosystm: i meant as in protein folding [11:35] echosystm: (complex processing) [11:35] echosystm: just an example [11:36] delapouite has joined the channel [11:36] mr_daniel: I know this is a little off-topic, but because the topic is so interating: why is protein folding such a complex process? I mean IIRC then folding is based on the 'lowest energy level', that is a protein/molecule wants to go into a state where most electrons are in a low orbital, for example a p instead of a d orbital [11:37] echosystm: i dont know anything about it, i just know it's CPU/RAM intensive :P [11:38] mr_daniel: btw: I am not chemist, but a computer science guy, but my brother is a chemist and we talk a lot about those thinks, I want to implement such thinks, because that sound *very* interesting [11:38] Aikar has joined the channel [11:38] mr_daniel: ok echosystm :) [11:38] Lorentz: Hmm, I'm not sure why either [11:39] Lorentz: http://en.wikipedia.org/wiki/Protein_structure_prediction [11:39] Lorentz: That's a pretty long and confusing read for someone who doesn't know what's going on, like me [11:40] HerrTopf has joined the channel [11:42] mr_daniel: Just like for me Lorentz , but despite that, the problem sounds *very* interesting. For example: why not implement a Foldit client for JavaScript http://en.wikipedia.org/wiki/Foldit so it is not necessary to install any software on the computer [11:42] vandenoever: mr_daniel: i did phd in that and can explain it a bit [11:42] Lorentz: mr_daniel: Probably because although it's do-able, they probably want every bit of performance out, as well as GPGPUs being a lot more efficient and browser-based JS can't use htem yet? [11:42] vandenoever: mr_daniel: the reason that it is so hard is because of combinatorial explosion [11:42] mr_daniel: don't know, maybe I am going to do this :) because JavaSript and browsers are very mature these days: webwrkers, communicaton with websocket,... a perfect envionment in my opinion [11:43] vandenoever: mr_daniel: suppose you have a protein of 100 amino acids [11:43] vandenoever: mr_daniel: assume that each amino acid can take 4 positions wrt the previous one [11:43] mr_daniel: Lorentz: GPUGPUs? this is so great, because WebGL is available! so even this is no problem anymore :) [11:43] vandenoever: then you have 99^4 possible ways of folding [11:43] vandenoever: sampling those is, in a nutshell, the hard part [11:44] vandenoever: s/99^4/4^99/ [11:44] vandenoever: and the 4 is just a low simplistic assumption [11:44] mr_daniel: 100 acids, 4 positions for each acid => thats 4^100 possible combinations, you are right vandenoever , that is a combinatorical explotion [11:45] vandenoever: mr_daniel: usual approach in the field to solve it is to prod the protein, see if energy is lower, if not, unprod [11:45] vandenoever: loop this until lots of prodding has no more effect [11:45] mr_daniel: I wonder if there are some theoretical studioes or proofs, how can minimize the space of possible solutiosn; I know that people like Till Tantau (a *very* smart guy) worked on such problems [11:45] Lorentz: mr_daniel: Well, if webgl can do it, why not then [11:46] vandenoever: mr_daniel: did you try FoldIt ? [11:46] mr_daniel: I think I will program such client, when I have the the time to do, but I don't have much time the next weeks :( [11:46] mr_daniel: vandenoever: I read something about it, but no, I didn't try it out yet [11:47] vandenoever: mr_daniel: it's a program to let humans help with the folding [11:47] vandenoever: it's like a puzzle, quite fun [11:47] mr_daniel: I heard that it is like a game, and that the program tries to learn how humans deal with the problem, so that better algorihms and heuristics can be found, but I am not sure [11:47] Ezku\_: vandenoever: what exactly was your phd about? that sounds extremely interesting. [11:48] vandenoever: Ezku\_: doing protein folding with self-consistent field models (roughly) [11:48] vandenoever: so not the common approach [11:48] Ezku\_: is the current state of the art about brute forcing the solutions or applying heuristics? [11:48] vandenoever: turns out the common approach is better [11:49] vandenoever: Ezku\_: many heuristics and never brute-forcing, that's impossible [11:49] vandenoever: the coarsest method is monte carlo [11:49] vandenoever: which is the prodding i mentioned earlier, with a twist [11:50] vandenoever: the twist is, sometimes if the energy after prodding is not lower, it does not unprod [11:50] Ezku\_: i was just thinking about applications of monter carlo to that problem space, having read of go AIs that do the same [11:50] Ezku\_: -r [11:51] vandenoever: Ezku\_: a simple beads on a lattice problem with monte carlo is a nice model to see how this works [11:51] vandenoever: esp if you connect the beads [11:54] Gruni has joined the channel [11:54] Utkarsh has joined the channel [11:54] Wizek has joined the channel [11:55] mbrochh has joined the channel [11:55] Wizek: How do I pass an object with request.write()? [11:57] Wizek: should I convert it to string? [11:58] slaskis has joined the channel [11:58] Anti-X: request.write(JSON.stringify(obj)) [11:59] fermion has joined the channel [12:01] Wizek: Anti-X: and why is stringify better than toString? [12:02] micheil: because, toString will give you: [12:03] micheil: v8: {}.toString() [12:03] v8bot: micheil: SyntaxError: Unexpected token . [12:03] micheil: v8: {test: "test"}.toString() [12:03] v8bot: micheil: SyntaxError: Unexpected token . [12:03] micheil: v8: ({test: "test"}).toString() [12:03] v8bot: micheil: "[object Object]" [12:03] micheil: that. [12:03] Wizek: Ic [12:03] micheil: where as .stringify will give you: [12:03] micheil: v8: JSON.stringify({test: "test"}) [12:03] v8bot: micheil: "{"test":"test"}" [12:04] micheil: (gotta love how v8bot uses the wrong quotes) [12:04] Wizek: :) [12:05] pTa_armi: nobody here who have ever made a query with an ignoreCase? I tried to add regex-like things to the find() param... aCollection.find(email: "/"+someMail+"/i") but this doesn't work [12:05] Wizek: micheil: And, after stringification, how do I convert if so it can be an object again? [12:05] micheil: JSON.parse [12:06] micheil: v8: JSON.parse('{"test": "test"}') [12:06] v8bot: micheil: {"test": "test"} [12:06] micheil: v8: JSON.parse('{"test": "test"}').test [12:06] v8bot: micheil: "test" [12:06] Wizek: good [12:06] Wizek: ty [12:08] Utkarsh has joined the channel [12:12] erlnoob: on a related note, stringify is not a word.. why can't we just use encode/decode? why do some people try too hard to be cute? [12:13] ooooPsss has joined the channel [12:15] Wizek: erlnoob: If we used encode or decode, our conversation would have been less clear, as we were talking about 3 dadta types: buffer, string and JSON object, and converting from one, to another. [12:15] yhwh has joined the channel [12:15] yhwh: hi [12:15] micheil: erlnoob: go talk to someone on the v8/mozilla/etc teams [12:15] micheil: erlnoob: JSON is not something provided by node, but rather by the javascript engine, V8 [12:16] eee_c has joined the channel [12:16] erlnoob: micheil: i did actually, years ago on a blog (presumably by the guy responsible), he asked for opinions, and i said what i just said [12:16] erlnoob: only to be ignored [12:16] micheil: that happens. [12:17] Wizek: can I create tcp client simmilar to http.createClient() in Node? [12:19] micheil: uhh, yes. [12:19] micheil: net.createConnection [12:19] MattJ has joined the channel [12:19] yhwh has joined the channel [12:19] micheil: http://static.brandedcode.com/node-doc/net.html#net_createConnection [12:19] yhwh has left the channel [12:19] micheil: (those are 0.3.X docs) [12:20] micheil: but that api hasn't changed. [12:20] Wizek: micheil: So I have to listen for 'connect' within inside. And what else? This is quite basic info. [12:20] micheil: Wizek: something like: [12:21] zmack has joined the channel [12:22] micheil: https://gist.github.com/669023 [12:22] trochala has joined the channel [12:23] micheil: (also, mind, I do plan on improving the documentation pages over the coming weeks) [12:24] liar has joined the channel [12:25] Wizek: micheil: That sounds good :) [12:25] Akufen has joined the channel [12:25] Akufen has joined the channel [12:29] zmack: hey gents, sorry to intrude, but is there any reason why i'd get an empty response when doing xhr long polling on node and actual content when using curl and such ? :[ [12:30] robinduckett has joined the channel [12:30] robinduckett: hmm [12:30] robinduckett: irssi doesn't work well with tmux [12:31] robinduckett has joined the channel [12:31] robinduckett: better [12:32] robinduckett: Anyone around can give me tips on socket.io? [12:33] Utkarsh has joined the channel [12:38] mr_daniel: I wrote a little script, which does some file IO, but is 'blocking', becaseu a outer function needs to wait for a outer function; is this bad? http://pastebin.com/HjFDetWT [12:39] mr_daniel: I am concerned especially with line 15 [12:39] mr_daniel: ...where the outer function needs to wait for the inner function. Is there a way to 'schedule' the call to the inner function 'foo(files.slice(0,-1));' ? [12:40] Wizek: Can I somehow get input from the console node runs in? [12:42] Ezku\_: mr_daniel: so you're looping over a set of files, running asynchronous operations over them, then looping over the set of files less the first one again? what's the point in that? [12:43] micheil: Wizek: yes, although, it's slightly complicated [12:43] micheil: look in the documentation for the process.openStdin [12:44] johngbrooks has joined the channel [12:44] Ezku\_: mr_daniel: unless you're concerned about the order of operations, you should be fine with what you have right there. [12:44] mr_daniel: Ezku\_: what I don't like about the code is that foo(['file1.txt','file2.txt','file3.txt','file4.txt']) will *always* be executed before foo(['file1.txt','file2.txt','file3.txt']) starts, so there is some sort of 'blocking' in this code in the sense that a sequentiel execution is introduced, which is not necessary [12:45] mr_daniel: and when it is not necessary, why not 'remove' it by scheduling the function calls instead of calling them directly [12:45] Ezku\_: mr_daniel: that's only due to in which order you add the operations in the queue and when they become unblocked [12:46] mr_daniel: I want to know if there is a way 'schedule' function calls instead of calling them directly [12:46] Wizek: micheil: ty, not I g2g [12:46] Ezku\_: setTimeout(f, 0) defers execution for the next available cycle in the event loop [12:46] abstractj has joined the channel [12:47] micheil: I wouldn't recommend doing setTimeout(ƒ, 0) [12:47] Ezku\_: micheil: really? I've seen that done in libraries before :o [12:47] mr_daniel: yeah, I am not sure why setTimeout(f,0); is a bad idea, but I read on many pages that nextTick(f); is better, but I don*t know why [12:47] micheil: if you need a form of flow-control (to know that every async operation has completed), try Step by tim caswell/creationix [12:48] Utkarsh has joined the channel [12:48] Ezku\_: micheil: I thought of step as well, but as I understand daniel specifically does not wish to care about the order of operations [12:48] micheil: Step can just run a bunch of things and tell you when it's done. [12:49] micheil: https://github.com/creationix/step [12:49] micheil: see this.parallel() [12:49] Ezku\_: mr_daniel: http://documentcloud.github.com/underscore/#defer that's odd, I'll need to look into it. [12:49] mr_daniel: micheil: this is very usefule, most of time a counter is needed and checked to know when parallel jobs are finished [12:50] mr_daniel: ...for example like here where 'countFolder' is used http://utahjs.com/2010/09/16/nodejs-events-and-recursion-readdir/ [12:50] micheil: Ezku\_: watch out there, filesystem calls in node are always asynchronous, unless they are something ending in Sync [12:50] Ezku\_: micheil: I know. :o [12:51] Ezku\_: just discussing based on what daniel's telling us about his use case [12:51] micheil: also, in that case, I don't think there's really a need for a deferrable here [12:51] micheil: as defer won't tell you when something is done [12:52] mr_daniel: I agree with you micheil in this very special case http://pastebin.com/HjFDetWT [12:52] micheil: mr_daniel: although, what exactly does that foo() function achieve? [12:53] Ezku\_: micheil: wondering about that too... [12:53] kriszyp has joined the channel [12:53] mr_daniel: well its just a example to motivate why someone maybe needs a way to schedule function calls instead of calling them directly [12:54] mr_daniel: exactly the code and foo() isn't useful at all :) [12:54] micheil: something like: http://pastebin.com/mAE4ed9z [12:54] micheil: should work fine. [12:54] mr_daniel: I know there is nextTick(...), but maybe there are also another ways which I am not aware of [12:54] Anti-X: why doesn't global.foo = 'bar'; add foo to the global object? [12:54] micheil: although, if you really care about order, then it'd be best to use something like Step [12:55] micheil: (or write your own flow control library, isaacs has slides on that) [12:55] micheil: Anti-X: because globals are kinda weird? [12:55] Anti-X: yeah, but it's nowhere [12:55] mr_daniel: I just want to push my node and JavaScript skills, because in a couple of weeks I want to start a new web project and I want to use node for the first time for web project and don't want to make bad mistakes [12:56] micheil: mr_daniel: best to do something practical then :) [12:56] Anti-X: it's not in global.foo, it's not in foo, it's not listed in global [12:56] JimBastard: wow that was a 3 hour rebase [12:56] JimBastard: break time [12:56] mr_daniel: micheil: true :) [12:57] mr_daniel: Anti-X: what exactly are you trying to achieve? I am not sure, but I have a guess: do you want to create a global variable in a local function scope? [12:57] Anti-X: no [12:58] Anti-X: i'm asking why the global object isn't changed when i change it [12:58] Anti-X: it's empty [12:58] Anti-X: always [12:58] Anti-X: what's the point of that [12:58] micheil: because the global object is kind of weird. [12:58] Anti-X: that's not an answer, oz [12:58] micheil: it's not what you think it is, necessarily [12:59] Anti-X: well if you can't use it, then why is it even available [12:59] micheil: I have no idea. [12:59] micheil: put it this way, it's generally a bad idea to be using globals. [12:59] Anti-X: i know this [12:59] Anti-X: i wasn't born yesterday [13:00] micheil: Anti-X: I'm not saying you were born yesterday [13:00] Anti-X: i'm just wondering why this pinky toe of a useless feature is in there [13:00] mr_daniel: true Anti-X , I just tested it: global.hi='hello'; console.log(global.hi); [13:00] mr_daniel: the result is undefined [13:00] micheil: in the node repl it'll be even weirder, I assure you. [13:00] Anti-X: yeah it doesn't even say undefined [13:00] Anti-X: just nothing [13:01] Anti-X: so is the global ever used, even internally? [13:01] mr_daniel: Anti-X: why you don't use a simple and plain var hi='hello'; console.log(hi); ? [13:01] Anti-X: it's not a problem i'm having [13:01] Anti-X: it's theoretical question [13:01] mr_daniel: Anti-X: ok, I understand [13:01] micheil: Anti-X: yes, global is used internally, within the scope of a global closure. [13:02] herbySk has joined the channel [13:02] mr_daniel: Anti-X: it seems like your not the only one with this question in mind http://stackoverflow.com/questions/4133149/modifying-global-object-in-node-js [13:02] Anti-X: that's where i found it [13:03] Anti-X: thought i'd pass it on [13:04] mape has joined the channel [13:04] robinduckett: has anyone actually got sockets.io working on a project? [13:04] robinduckett: I'm having huge trouble [13:05] robinduckett: out of three attempts to use socket.io i've given up every time [13:05] sixtus42: Anti-X: are you trying this from REPL or from script? [13:05] mr_daniel: I can understand you concern about teh global namespace object Anti-X and I have the same concern, but maybe it is a good idea why 'global' is not modifiable. [13:05] Anti-X: robinduckett, what's the problem? [13:05] Anti-X: did you remember to do io.connect() ? [13:05] mr_daniel: for example what if the goal is to move library or helper code from the client side to the server side, or vice versa [13:05] robinduckett: Anti-X: yes [13:06] robinduckett: I copypasta'd the example from socket.io [13:06] mr_daniel: then it wouls be necessary to remove or introduce maybe a lot of 'global.' at the beginning of of variables names; this is also the case 'window.' is used [13:06] micheil: global == v8::Context::GetCurrent()->Global(); [13:06] Anti-X: robinduckett, that example doesn't have io.connect() as far as i remember... [13:07] Anti-X: maybe they changed it [13:07] Blink7 has joined the channel [13:07] Anti-X: nope, still not there [13:07] robinduckett: Anti-X: just tried it with and without and same [13:07] robinduckett: result each time [13:07] robinduckett: the files are being served correctly and no errors in firebug [13:08] robinduckett: tried it with firefox 3.6 and 4.0 and chrome [13:08] JohnDav has joined the channel [13:08] Anti-X: did you run the chat example? [13:08] robinduckett: yes [13:08] Anti-X: and it worked? [13:09] robinduckett: okay it works now, I'm obviously a moron, put domain:port as the server on the clientside, you only need domain [13:09] Anti-X: i think port is a separate argument [13:09] robinduckett: how cross browser is this? [13:09] Anti-X: could be wrong [13:09] robinduckett: does it work on IE at all? [13:10] Anti-X: yes [13:10] Anti-X: works on ie back to 4 i think [13:10] robinduckett: good stuff [13:10] Anti-X: that is, if they're doing MSXMLHTTP checking [13:10] Anti-X: i didn't study the code that much [13:11] robinduckett: v8: global [13:11] v8bot: robinduckett: ReferenceError: global is not defined [13:11] robinduckett: oh yeah it's in a script sandbox [13:11] Artem_S: mr_daniel, Anti-X, I opened an issue for that https://github.com/ry/node/issues/issue/407/#comment_528705 [13:12] Anti-X: micheil, at least write a better description for it in the docs is what i'm getting at... :p [13:12] micheil: Anti-X: hmm, email the mailing list about it, see what ryah says about it. [13:13] Anti-X: "the global namespace object" doesn't really say what it is, when in fact it isn't the global namespace object [13:14] Artem_S: I don't actually agree that global namespaces are bad idea [13:14] altamic has joined the channel [13:15] Artem_S: it's way more convenient accessing a global object in properly laid-out hierarchy than having to go 'require' every time [13:15] Anti-X: convenience over maintenance is what you're saying? [13:15] Artem_S: what's the problem with maintainability? [13:15] path[l] has joined the channel [13:15] Anti-X: if you change the global variable somewhere, how do you know all the places that are affected by it? [13:16] Anti-X: simply because it's available anywhere, it could be used anywhere [13:16] Artem_S: umm, grep? [13:16] Anti-X: yeah tell that to windows programmers [13:16] Artem_S: what's windows? :) [13:17] Artem_S: plus, it's a nice way of augumenting things [13:17] JohnDav: what is the best approach for cross-domain long polling? [13:17] Anti-X: jsonp? [13:17] Artem_S: when you see code like [13:17] Artem_S: myKickAssNamespace.views.show_porn vs views.show_porn [13:18] Artem_S: you can instantly tell that's internall stuff versus some third-party lib you loaded [13:18] Fullmoon has joined the channel [13:18] Anti-X: yeah but that's the example of a decent developer doing global variables [13:18] Artem_S: ok, i'm arguing on the internet, I must admit it... [13:19] Artem_S: anyhow, it'd be nice to have this ability, and 'global' doesn't seem to be doing that, and there's no other 'global' [13:19] Anti-X: for every developer there's 1 that is better, 1 that is equal, and 98 that are worse [13:20] micheil: Artem_S: you can create a module that requires other modules, you know? [13:20] Anti-X: so imagine what havoc these 98 morons can do with globals [13:20] Artem_S: Anti-X you have reasearch data to support that? :) [13:20] Anti-X: yeah [13:20] Anti-X: life! [13:20] Artem_S: sorry, that's anecdotal evidence! [13:20] Anti-X: it's empirical data [13:21] Anti-X: in your face [13:21] Artem_S: micheil, not sure I understand how that helps [13:21] Utkarsh has joined the channel [13:21] Artem_S: Anti-X, yeah, like, what's your control group [13:21] micheil: Artem_S: well, if all your asking for is to be able to namespace stuff, just set exports in one module to the values: [13:21] Anti-X: control group? i'm not testing for true or false here [13:22] micheil: mynamespace.js == "exports.myclass = require("./myclass.js")" [13:23] Artem_S: micheil I guess it's better to have just one require for everything [13:23] mbrochh has joined the channel [13:24] Artem_S: Anti-X I know what you saying, it's just I don't think this is the right numbers [13:24] Artem_S: like it could be way more than 98 [13:25] Anti-X: yeah, but for EACH developer [13:25] Anti-X: that adds up [13:25] Anti-X: sure it's endless upwards and downwards, but that's where you use common sense [13:25] Artem_S: even for each one from those 98? [13:26] Anti-X: think of it as logarithmic or exponential.. it keeps going ,and eventually you reach a point where people aren't really developers, so they stop counting [13:26] fbits has joined the channel [13:27] Anti-X: logarithmic with those that are better, than you, and exponential with those that are worse.. the further down the totem pole you go, the more people are worse, and the further up you go, the less people are better, until one day you don't have enough people to put on top, so you end up as The One. [13:28] micheil: Anti-X: hmm, I don't think there is actually a "global" accessible to the modules [13:29] Anti-X: so it's not even global global [13:30] matt_c has joined the channel [13:31] Artem_S: Anti-X I think that feels right, yes [13:32] Anti-X: and it's not really measurable [13:33] beawesomeinstead has joined the channel [13:33] beawesomeinstead has joined the channel [13:34] Anti-X: people are born all the time and a bunch of them will claim to be developers at some point, even though they started just two weeks ago, and they're doing plain html in dreamweaver. talk to them about functions and their head will explode. [13:36] robinduckett: I don't use global to be honest [13:36] robinduckett: there's really no need [13:37] robinduckett: no need for amateur dramatics Anti-X :D [13:37] Anti-X: BUT I LOVE DRAMA, MOTHERBITCHES! [13:37] Artem_S: Please keep it coming [13:38] robinduckett: yeah we need time for the trace to complete [13:38] robinduckett: so we can pinpoint the exact location the whaaaaambulances need to go to. [13:38] Anti-X: :p [13:39] Artem_S: I'd rather send some publishers after him [13:39] Artem_S: surely we can make more money that way [13:40] robinduckett: chyea. Anti-X becomes a playwright and we continue being poor. [13:40] Anti-X: actually i do write screenplays [13:40] Artem_S: dang [13:40] robinduckett: Anti-X: You know how I know you're gay? [13:40] Anti-X: the cocks in my mouth? [13:40] robinduckett: That'll do. [13:41] robinduckett: Obviously you haven't seen 40 year old virgin, and I'm not okay with this. [13:41] Anti-X: i have [13:41] Anti-X: i just tend to forget shitty movies [13:41] robinduckett: The "You know how I know you're gay" scene should have been nominated for several oscars. [13:41] FLYBYME: why do i only get one http.on('connection',function(stream){ [13:42] FLYBYME: its the first client that connects to the server [13:42] Anti-X: because they don't grow on trees!§ [13:42] robinduckett: "You know how I know you're gay?" "No, how?" "Because you have a rainbow bumper sticker on your car which says: 'I love it when balls are in my face'." [13:42] Anti-X: yeah that's right up there on the "should-have-been-oscars" list right next to dude where's my car [13:43] robinduckett: Pfft, you have no taste. I bet you don't like Primer either. [13:43] robinduckett: Just no pleasing some people. [13:43] Anti-X: i enjoy the movies, but i don't go around quoting them all the time! [13:43] robinduckett: Neither do I, except for all of them. [13:44] Anti-X: sweet! [13:44] robinduckett: Bung. [13:44] Anti-X: see what i did there? [13:44] robinduckett: Continued to act like a jackass? [13:44] Anti-X: no i quoted a movie [13:44] Anti-X: more precisely dude where's my car [13:44] robinduckett: kk [13:44] robinduckett: I've not actually seen it. [13:44] Anti-X: you must [13:44] Anti-X: you're missing so many references [13:44] robinduckett: I will put it on my netflix queue. [13:44] Anti-X: it's like not having seen star wars [13:45] Anti-X: even though it's shit [13:45] Anti-X: i totally get what people are on about now [13:45] FLYBYME: is a connection only imited once? on a http server? [13:45] robinduckett: FLYBYME: not usually [13:45] Anti-X: don't you on('connect'... [13:45] Anti-X: use* [13:45] Anti-X: use on('request' [13:46] robinduckett: anyway brb [13:46] ben_alman has joined the channel [13:46] FLYBYME: is it conect or connection? [13:46] Anti-X: there's no real need to do anything with the socket of an http request, just handle the request [13:46] Anti-X: if you need actual sockets, use streams [13:47] stagas has joined the channel [13:49] ysynopsis has joined the channel [13:51] Ari-Ugwu has joined the channel [13:53] Tprice: so i chould use request.connection for the infomation then? [13:53] ctp has joined the channel [13:54] mbrochh has joined the channel [13:55] JimBastard: mustache seems okay for email templates yeah? [13:57] saschagehlich has joined the channel [13:59] robinduckett: lol [13:59] robinduckett: Maximum call stack size exceeded [13:59] robinduckett: NODE CRASH DEATH DIE WHOOOOO [13:59] robinduckett: ffs [13:59] ysynopsis has joined the channel [14:00] Anti-X: it dieded? [14:00] robinduckett: aye [14:01] robinduckett: how do I found out what causes that shit [14:01] robinduckett: gdb? [14:01] Anti-X: u haz 2 use uncaughtException and prevent the death of the dying node! [14:01] Anti-X: :p [14:01] Throlkim has joined the channel [14:01] Anti-X: i did a pillz-e there [14:01] robinduckett: fucking squirrels. [14:01] sivy has joined the channel [14:02] robinduckett: hah forgot a this. [14:02] abstractj has joined the channel [14:03] fbits has joined the channel [14:06] c4milo has joined the channel [14:07] zemanel has joined the channel [14:10] bradleymeck has joined the channel [14:12] eee_c has joined the channel [14:12] deepthawtz has joined the channel [14:14] Utkarsh has joined the channel [14:16] Artem_S has left the channel [14:16] Spookz has joined the channel [14:21] altamic has joined the channel [14:23] davidsklar has joined the channel [14:25] SamuraiJack has joined the channel [14:28] fbits has joined the channel [14:29] pTa_armi has joined the channel [14:29] emmanueloga has joined the channel [14:30] EyePulp has joined the channel [14:31] jherdman has joined the channel [14:34] marshall_law has joined the channel [14:34] d3x7r0 has joined the channel [14:35] aheckmann has joined the channel [14:39] JimBastard: yeah! mustache templates landed https://github.com/Marak/node_mailer [14:40] herbySk has joined the channel [14:40] bruse: did you get your ninja on yet? [14:41] Nohryb has joined the channel [14:42] JimBastard: 24/7 [14:42] JimBastard: i just added those templates so i can make a template to send to people for invites [14:42] JimBastard: right now i can send a big string with +'s [14:42] JimBastard: :p [14:43] bruse: do you sleep in your ninja suit? [14:44] JimBastard: yes :-( [14:44] c4milo: :s [14:44] JimBastard: standing up, holding my sword [14:44] JimBastard: coding [14:44] c4milo: is nodejitsu public now ? [14:44] JimBastard: c4milo: kinda! [14:45] JimBastard: not really [14:45] c4milo: :/ [14:45] JimBastard: we have a nice sized pool of slave servers running [14:45] JimBastard: we can deploy 1 drone to each slave [14:45] JimBastard: a drone represents one instance of one node.js app [14:45] c4milo: drone ? sounds like dyno [14:45] JimBastard: slowly gonna start deploying apps [14:45] JimBastard: broodmother! [14:45] JimBastard: drones! [14:45] c4milo: haha [14:45] JimBastard: overlord! [14:45] JimBastard: slaves! master! [14:45] JimBastard: carapace! [14:45] JimBastard: its a giant game of starcraft over here [14:46] JimBastard: and dota [14:46] cferris has joined the channel [14:46] JimBastard: (broodmother is the name of our application deployer) [14:46] sriley has joined the channel [14:46] c4milo: all nodejitsu is coded in javascript ? [14:46] JimBastard: it launches drones by wrapping node.js applications in carapaces [14:46] JimBastard: no joke [14:46] JimBastard: c4milo: and C and bash script, yes [14:47] JimBastard: some couchdb [14:47] c4milo: are you hiring ? [14:47] matheeeny has joined the channel [14:47] JimBastard: :-D i wish [14:47] c4milo: ahahaha [14:47] JimBastard: if we had enough money id start paying tmpvar asap [14:47] JimBastard: and make him quit his day job [14:47] JimBastard: he's part time right now [14:47] JimBastard: i mean, part-time tmpvar is like full-time 10 people [14:48] c4milo: impressing [14:48] c4milo: impressive [14:49] JimBastard: im excited, i'll tell you that much! [14:53] JimBastard: hrmm, npm seems to not want to publish https://gist.github.com/669180 [14:53] JimBastard: any ideas? [14:54] JimBastard: nm, got it [14:54] jchris has joined the channel [14:55] bruse: is tmpvar a bunch of high professional developers hiding behind one alias? [14:55] bruse: -high [14:56] c4milo: ahaha [14:57] matheeeny has joined the channel [14:58] stagas has joined the channel [14:58] oal has joined the channel [15:03] jakehow has joined the channel [15:04] BillyBreen has joined the channel [15:05] JimBastard: bruse: tmpvar is a beast [15:05] JimBastard: :-D [15:05] JimBastard: he can drink me under the table too [15:05] d0k has joined the channel [15:06] c4milo: o_O [15:06] serard has joined the channel [15:06] serard: hello [15:06] stagas: hi serard [15:07] serard: I've just ./configure && make && sudo make install && make test, and got this : http://pastebin.com/xXUrcsDn [15:07] hoodoos has joined the channel [15:07] hoodoos: hello people [15:08] JimBastard: rror: Command failed: /bin/sh: curl: not found [15:08] hoodoos: any step users around? [15:08] JimBastard: serard: install curl? [15:08] JimBastard: hoodoos: sure, why not [15:08] hoodoos: i'm a bit confused that I have to right if(err){... return;} in each chain function. what am I doing wrong? :) [15:08] hoodoos: *right = write [15:09] JimBastard: i dont understand the question hoodoos [15:09] hoodoos: let me make an example [15:09] EyePulp has joined the channel [15:09] JimBastard: k [15:09] saschagehlich has joined the channel [15:10] eee_c has joined the channel [15:10] TheEnd2012 has joined the channel [15:11] hoodoos: http://pastebin.com/9rS3976B [15:11] hoodoos: JimBastard, here it is ^^ [15:12] c4milo: hoodoos: that's because nodejs async functions return some kind of error if something bad happen. You need to check that [15:12] JimBastard: hoodoos: i dont think its able to figure out the event source [15:12] JimBastard: im not sure about that though [15:12] JimBastard: you need to know which async event threw the error right? [15:12] hoodoos: ehm well, right you are.. [15:13] JimBastard: there is global exception error [15:13] hoodoos: i was thinking about case of sync exception.. [15:13] JimBastard: thats not really advised [15:13] hoodoos: but with async yes, I will lost trace.. [15:13] hoodoos: loose.. [15:13] hoodoos: :) [15:13] johngbrooks has joined the channel [15:13] stagas: hoodoos: maybe you need to return err ? [15:14] vandenoever: how do people use 'throw' in callbacks? is there a best practice (such as 'avoid throws' ;-) ? [15:14] c4milo: the first argument is always the error of the previous state, if there was one [15:15] everzet has joined the channel [15:15] hoodoos: ehm, what do you mean? I wanted to have same callback for any error occurs during chain, but now I see it's bad since I won't be able to find source of err callback, not exception [15:15] hoodoos: of async err callback [15:16] hoodoos: vandenoever, some times it just happen :) [15:16] hoodoos: vandenoever, i guess nobody throwing it for real [15:16] danslo has joined the channel [15:16] vandenoever: hoodoos: ok, so always catch and try to pass as err in a callback [15:16] AAA_awright_ has joined the channel [15:17] JimBastard: added simple mustache templates to node_mailer [15:17] JimBastard: http://blog.nodejitsu.com/sending-emails-in-node [15:17] JimBastard: boom ! [15:17] c4milo: ahaha [15:17] hoodoos: thanks :) [15:18] stephank has joined the channel [15:19] vandenoever: ACTION should really look into using node as adhoc http server for testing [15:19] vandenoever: is there a node script that does that and understands range requests? [15:19] JimBastard: vandenoever: that does what? [15:19] vandenoever: JimBastard: serve files of http and support Range: header [15:19] SINPacifist has left the channel [15:20] hoodoos: is it for video streaming? [15:20] smtlaissezfaire has joined the channel [15:20] trotter has joined the channel [15:20] vandenoever: hoodoos: no [15:20] hoodoos: just wander :) [15:20] vandenoever: hoodoos: i have js that unzip in the client [15:20] vandenoever: hoodoos: but if a zip has a lot of files, i do not want to send them all [15:22] hoodoos: i thought about responses :) never ever tried something like that with requests [15:26] meandi has joined the channel [15:26] JimBastard: im testing the new server cluster with a bunch of HN and Proggit traffic right now [15:26] JimBastard: just started [15:26] deepthawtz has joined the channel [15:26] JimBastard: :-) [15:26] JimBastard: stress testing the fun way [15:27] matt_c has joined the channel [15:27] tj has joined the channel [15:27] jtsnow has joined the channel [15:27] c4milo: Proggit [15:27] c4milo: ? [15:27] serard: Someone could help me decide which web framework to use to use node.js ? :) [15:27] c4milo: serard: I use expressjs [15:28] c4milo: serard: many people use it actually [15:28] DoNaLd`: i also [15:30] hoodoos: and I will move to it too :) [15:30] serard: okay [15:30] serard: I have a symfony background (php framework) [15:30] Me1000 has joined the channel [15:30] serard: if someone knows it to tells me if it is similar or not (just to have some clues; will give it a try anyway) [15:30] dshaw has joined the channel [15:31] bradleymeck has joined the channel [15:32] charlenopires has joined the channel [15:34] Zzzeph: ok.. up next -> fixing the counterclockwise arc-generator in o3-canvas http://blokmodular.com/dev/test27.htm [15:34] softdrink has joined the channel [15:34] Zephd\k0d3: http://blokmodular.com/dev/graphics-tests-in-browser.html supposed to look like this [15:35] pTa_armi has left the channel [15:35] miccolis has joined the channel [15:37] fangel has joined the channel [15:37] serard: Someone have gave a try to this one : http://geddyjs.org/ ? [15:39] podman has joined the channel [15:40] faust45 has joined the channel [15:40] tj has joined the channel [15:42] figital has joined the channel [15:43] tlrobinson_ has joined the channel [15:43] rwaldron has joined the channel [15:44] thejefflarson has joined the channel [15:44] thejefflarson: d [15:44] tj: why is Unref() protected? :( [15:45] tj: hmm I can Ref() [15:46] StanAngeloff_ has joined the channel [15:46] bradleymeck: tj, because unref is taken care of for you [15:47] serard: Is there any good tutorial to use expressjs ? :) [15:47] tj: serard: expressjs.com for guide and the examples directory has about 10 examples [15:47] serard: thank you [15:48] killfill has joined the channel [15:48] tj: bradleymeck: but via eio callback should you not Ref() and then Unref() on your after hook? [15:48] tj: in * [15:49] gkatsev: tj: any awesome features in the lineup for express? [15:49] bradleymeck: the way objectwrap works it should extend objectwrap giving you access to unref when you need eio [15:49] bradleymeck: most addons dont need it so i think it is fine [15:49] tj: gkatsev: nothing crazy right now nope [15:49] tj: just pushing towards 1.0 [15:49] gkatsev: cool [15:49] deepthawtz has joined the channel [15:49] boaz_ has joined the channel [15:50] tj: bradleymeck: damn, yeah I need it [15:50] tj: I can re-expose it I guess [15:50] bradleymeck: extend it then [15:50] tj: but that is sorta lame [15:50] gkatsev: tj: also, tried out the node-boilerplate, it is pretty nifty. You can get a simple site working in minutes. [15:50] tj: gkatsev: nice :) I have not tried it yet [15:50] dnolen has joined the channel [15:50] gkatsev: it uses express and ejs and socket.io-node and html5-boilerplate [15:51] tj: sweet [15:51] tj: I will have to check it out some time [15:53] cognominal has joined the channel [15:53] c4milo has left the channel [15:54] Utkarsh has joined the channel [15:54] meandi has joined the channel [15:54] JimBastard: i swear i just saw an npm instance taking up a gig of ram on our balancer [15:54] JimBastard: i might be tripping [15:55] podman has left the channel [15:55] JimBastard: o.O [15:55] daniellindsley has joined the channel [15:56] bradleymeck: how long has it been running, and how much junk you got on there? i thought the backend was mostly couch [15:56] jamund has joined the channel [15:56] killfill has joined the channel [15:57] ceej has joined the channel [15:58] serard: well, express loooks powerfull [15:58] Yuffster has joined the channel [15:58] bpot has joined the channel [16:00] HAITI has joined the channel [16:02] tj: I need to get around to adding a socket.io example to express [16:06] ctp has joined the channel [16:06] gwoo has joined the channel [16:07] serard: Are there some sql persistency frameworks for node.js ? (and pluggable with expressjs) ? [16:07] serard: Just found this http://sequelizejs.com/ [16:07] serard: will give it a try :D [16:08] tj: id recommend mongoose [16:08] tj: mongo is a nice natural fit for ssjs IMO [16:08] tj: depends on your needs [16:08] muk_mb has joined the channel [16:09] sixtus42: tj: on the scale of natural fit, couch would rate much higher than mongo [16:09] eee_c has joined the channel [16:09] tj: i dont really like couch [16:09] ehaas has joined the channel [16:09] tj: just a personal thing, but I would go with mongo [16:09] sh1mmer has joined the channel [16:10] sixtus42: tj: really depends on what you are trying to do, but mongo doesn't tick with me at all. [16:10] tj: fair enough [16:10] sixtus42: serard: do the eval yourself [16:10] tj: just making some recommendations [16:10] sixtus42: and I am just giving 2nd opinions [16:10] sixtus42: :-) [16:11] tj: all good :D [16:11] dmcquay has joined the channel [16:12] serard: ;) Yeah I understand you all [16:13] serard: MongoDB is a goot fit because it talks JSON. But I'm making business tools, which needs real ORM, querying, views, etc. Such things are now really best made using orm-rdbms (I think) [16:13] serard: Anyway I really do like nodejs and expressjs [16:15] sriley: well both mongo and couch talk in json, theyre fairly similar depends on your needs [16:17] steadicat has joined the channel [16:18] tapwater has joined the channel [16:19] JimBastard: tj: are you in SF? or still canada ? [16:19] tj: JimBastard: canada [16:21] Utkarsh has joined the channel [16:22] ianward has joined the channel [16:25] yenz: tj: feel like elaborating on why you dislike couch / prefer mongo? just curious :) [16:25] bencc has joined the channel [16:25] mikew3c_ has joined the channel [16:27] tj: yenz: I dont like how couch starts with such a high level protocol [16:27] gkatsev: mongo is faster [16:27] tj: but I dont want to get into all that lol [16:27] tj: busy [16:27] yenz: tj: hehe, i figured, thanks :) [16:27] yenz: mongo is indeed faster [16:27] gkatsev: some guy did some benchmarks comarping mysql, couch, mongo and memcached, memcached won, mongo was second and mysql and couch were third. [16:28] gkatsev: but third by far [16:28] faust45: but mongo can lose data [16:28] gkatsev: lose data? [16:28] faust45: yes [16:28] gkatsev: how so? [16:28] gkatsev: ACTION havent actually used either mongo or couch extensively yet [16:29] gotys has joined the channel [16:29] gkatsev: and I am looking at either mongo/couch [16:29] faust45: as i know mongo i not single server durability, http://blog.mongodb.org/post/381927266/what-about-durability [16:30] yenz: gkatsev: i did/am doing a similar eval [16:30] yenz: i chose couch because i like its scaling model better [16:30] gotys: Hello everyone. I cannot solve a problem of memory leak with Request handeling. Can someone PLEASe help me ? [16:30] yenz: i don't need balls-blazing speed [16:30] yenz: and couch is fast too if you structure the views and data properly [16:30] femtoo has joined the channel [16:31] yenz: but you really need to think hard about it, and it's really different than traditional RDBMS style data modeling [16:31] overra has joined the channel [16:31] gwoo has joined the channel [16:31] gotys: How do I clean up un-finished HTTP requests? When I hold CTRL+R in Chrome, it keeps opening new connections (without successfull "end" event) and the memory usage just keeps going up and up. Please help [16:31] sriley_ has joined the channel [16:32] smtlaissezfaire has joined the channel [16:34] gotys: arrrggg... :( someone please help me with memory leaks when handeling HTTP connections :( [16:37] sudoer has joined the channel [16:40] bpot has joined the channel [16:42] springmeyer has joined the channel [16:42] pTa_armi has joined the channel [16:43] Nohryb has joined the channel [16:43] stride: gotys: can't reproduce that, what node version and system are you running? [16:44] stride: gotys: my test scenario was https://gist.github.com/669352 and holding down ctrl+r in chrome :) does the last value there grow on your system? [16:45] frodenius has joined the channel [16:48] slaskis has joined the channel [16:49] mape: mikeal: Is there any good way of fetching non UTF8 text with request? [16:50] thecoon has joined the channel [16:50] eee_c has joined the channel [16:53] benburkert has joined the channel [16:53] meandi2 has joined the channel [16:55] gwoo has joined the channel [16:56] hsuh has joined the channel [16:57] tlrobinson_ has joined the channel [16:59] jetienne has joined the channel [17:00] pTa_armi: somebody there who can help me with nodejs and mongodb native? I am searching for hours for a solution.... the collection.remove() method ignors all my params. If I try somecollection.remove({someField: someValue}) mongodb removes all the entities and not just the specific one. Does anybody know a fix for this behaviour? [17:01] pTa_armi: I am using mongodb native 0.7.9 [17:02] Max-Might has joined the channel [17:03] pTa_armi: hmm =( [17:03] EyePulp has joined the channel [17:03] StanAngeloff has joined the channel [17:05] stephank has joined the channel [17:05] tlrobinson__ has joined the channel [17:05] yamafaktory has joined the channel [17:06] abstractj has joined the channel [17:07] pTa_armi: =/ [17:07] davidascher has joined the channel [17:07] Nomon: pTa_armi: could you paste the bit somewhere ? [17:07] devinus has joined the channel [17:07] Nomon: pTa_armi: the failing one [17:07] matheeeny has joined the channel [17:08] pTa_armi: http://pastebin.com/JwQjD7Dz [17:09] pTa_armi: oops.. my bugfixing console.logs aren't removed...sorry for that =) [17:10] Aikar: o.o is it normal for system to report very high "Virtual" memory for node? i sorta understand its due to shared resources, is node accessing that many shared system objs to report 630mb of virtual memory lol? [17:10] Aikar: my RES is only 10mb tho [17:11] mjr_: RSS is the only thing that matters, as long as you aren't swapping [17:11] Aikar: figured, i was just curious how it ammounted to so high [17:11] Aikar: and yeah sorry meant RSS* [17:11] Aikar: htop lists column as "RES" [17:12] pTa_armi: as I said, Nomon ... If I try to delete something by this remove() method it seems that this method is just ignoring my param which should specify a subset of the entities within the db [17:13] jherdman has joined the channel [17:13] Nomon: pass it a callback after the selector [17:15] trentm has joined the channel [17:16] ooooPsss has joined the channel [17:17] technoweenie has joined the channel [17:17] TomY has joined the channel [17:18] Nomon: pTa_armi: if you take a look at the remove here http://pastebin.com/L4eudkYM I think you see what happens with .remove({sessionid: session_id}); [17:19] superjudge has joined the channel [17:19] pTa_armi: thank you [17:20] ajpiano has joined the channel [17:25] EyePulp has joined the channel [17:28] Yuffster_work has joined the channel [17:30] dguttman has joined the channel [17:32] superjudge has joined the channel [17:34] tlrobinson_ has joined the channel [17:35] trotter has joined the channel [17:35] omarkj has joined the channel [17:35] hornbeck has joined the channel [17:35] ezmobius has joined the channel [17:37] sriley: am i being daft or do i for some reason not have access to post vars using expressjs 1.0.0rc4 [17:37] tj: sriley: using bodyDecoder? [17:38] sriley: nope, im guessing i maybe should be? [17:38] SubStack: yep [17:38] SubStack: app.use(express.bodyDecoder()) [17:38] tj: sriley: by default express does not mess with request bodies [17:41] noahcampbell has joined the channel [17:41] robinduckett: is express better / easier than connect? [17:41] sriley: ill give it a try cheers [17:41] tj: robinduckett: express is built on connect now [17:41] tj: connect was derived from what express used to be [17:41] robinduckett: tj: but does that make it better? [17:42] eee_c has joined the channel [17:42] tj: robinduckett: well.. "better" is subjective, but it makes many things easier [17:42] robinduckett: hmm [17:42] robinduckett: i will look into it. [17:42] tj: it really depends on what you are doing [17:43] robinduckett: serving static content, and doing some socket.io stuffs [17:43] robinduckett: themed site / user account registration [17:44] tristanoneil has joined the channel [17:45] tj: then yeah I would say so [17:46] gotys has joined the channel [17:47] vandenoever has left the channel [17:47] BHSPitMonkey has joined the channel [17:47] tristanoneil: Does anyone here have experience with expresso and express session handling. I'm running into a problem where my expresso test just hangs it seems to be running my assertions but never finishes. The problem seems to be caused by express session handling though because when I comment out express.cookieDecoder() and express.session() in my codebase the tests finish. [17:49] tj: tristanoneil: you can use a memory store, and pass the option { reapInterval: -1 } [17:49] tj: to disable the timer [17:49] tj: otherwise you have to disconnect from what ever your sess store is [17:50] tristanoneil: tj: something like this: connect.session({ store: new MemoryStore({ reapInterval: -1 })? [17:50] tj: yeah [17:50] tj: chuck that in configure('test', function(){ .. }) [17:50] tj: NODE_ENV=test [17:50] banjiewen has joined the channel [17:52] ajsharp has left the channel [17:52] admc has joined the channel [17:53] tristanoneil: tj: alright thanks I'll try that [17:53] pTa_armi: Nomon: you saved my day.... thanks a lot. This missing method param caused all the problems. I am done for now... I knock it off for today. Ciao all [17:55] sechrist: Anybody this morning any have any idea how I could spawn ssh client as a subprocess, have it take over the current node process's stdin/stderr/stdout -- and have node able to process the session for logging etc? [17:56] sechrist: I managed to get ssh running but that was with using the same fds as the parent process and I couldn't figure out a way to get a stream of that [17:56] sechrist: post-spawn [17:56] pTa_armi has left the channel [17:57] pengwynn has joined the channel [17:58] jakehow has joined the channel [18:04] bpot has joined the channel [18:04] femtooo has joined the channel [18:06] bartt has joined the channel [18:06] tlrobinson_ has joined the channel [18:09] twoism has joined the channel [18:10] davidascher has joined the channel [18:10] kixxauth has joined the channel [18:11] tlrobinson__ has joined the channel [18:11] ajsie: JimBastard: howdy [18:11] JimBastard: morning [18:12] ajsie: how is it going? [18:12] JimBastard: pretty good, we are pluggin away [18:13] tristanoneil: tj: So this is correct right? app.configure('test', function() { [18:13] tristanoneil: var MemoryStore = connect.session.MemoryStore; [18:13] tristanoneil: connect.session({ store: new MemoryStore({ reapInterval: -1 }) }); [18:13] tristanoneil: }); [18:13] gsmcwhirter has joined the channel [18:13] tj: tristanoneil: yeah that should be fine [18:14] tj: you dont have to use the memory store, but its nice for testing since you dont need redis etc running [18:14] tristanoneil: any other suggestions expresso still seems to be hanging I'm running it like NODE_ENV=test expresso [18:14] mjr_ has joined the channel [18:15] tj: you probably have open database connections [18:16] tristanoneil: yes that's a possibility. so then it's a problem with the codebase? have to close database connections? [18:16] tj: yeah [18:18] mjr_: are you wondering why node doesn't exit when you think it should? [18:19] abstractj has joined the channel [18:19] dgathright has joined the channel [18:20] bpot_ has joined the channel [18:20] bpot_ has left the channel [18:20] langworthy has joined the channel [18:21] aurynn: It would be endlessly amusing to have node-canvas use SDL. [18:22] tj: aurynn: it will come lol [18:22] tj: lots of cool things we can support through cairo [18:23] tristanoneil: tj: Could this still be a problem when I'm using couchdb? Since it's not really a database connection. [18:23] aurynn: tj, well, cairo can support animation, right? with the correct display server support [18:23] tj: aurynn: course [18:23] tj: it supports many backends [18:24] pinhao has joined the channel [18:24] pTa_armi has joined the channel [18:24] mootoh has joined the channel [18:24] aurynn: does node-canvas support that yet? :) [18:24] mjr_: tristanoneil: you can run "lsof -p nodepid" and look for any open sockets/files. That's a pretty likely culprit. [18:24] tj: aurynn: nope not yet, I only really use the image surface [18:24] tj: aka byte array [18:25] pinhao: hy building node.js latest stable version on mac os x fails [18:25] pinhao: can anyone help? [18:25] jherdman has joined the channel [18:25] pinhao: i'm running mac os x 10.6.4 [18:26] aurynn: fails how? [18:27] pinhao: can i past a long line? [18:28] pinhao: it fails when linking [18:28] pinhao: ld: warning: in /opt/local/lib/libssl.dylib, file is not of required architecture [18:28] pinhao: ld: warning: in /opt/local/lib/libcrypto.dylib, file is not of required architecture [18:28] pinhao: ld: warning: in /opt/local/lib/libz.dylib, file is not of required architecture [18:29] pinhao: and then it prints a bunch of undefined symbols [18:29] pinhao: and build exists [18:30] sprout has joined the channel [18:30] cromney has joined the channel [18:33] mjr_: pinhao: sounds like your openssl libs are broken [18:33] mjr_: Do you have macports or similar? [18:34] Benvie has joined the channel [18:37] JojoBoss has joined the channel [18:40] ryah: pinhao: port upgrade openssl-dev [18:41] rpflo has joined the channel [18:41] brianmario has joined the channel [18:41] sechrist has joined the channel [18:42] bentruyman has joined the channel [18:43] davidascher has joined the channel [18:43] davidascher has joined the channel [18:44] gf3 has joined the channel [18:45] davida has joined the channel [18:47] superjudge has joined the channel [18:47] indexzero has joined the channel [18:49] dysinger has joined the channel [18:49] hsuh has joined the channel [18:51] hamsterspider has joined the channel [18:53] cardona507 has joined the channel [18:54] tristanoneil: tj: I really don't think my issue with expresso is caused by my database connection as it is a couchdb connection which you can't really close. Anything else that comes to mind that could be keeping the node process running? [18:55] vmamidi has joined the channel [18:57] thejefflarson has joined the channel [18:57] agnat has joined the channel [18:58] stalled has joined the channel [18:59] JohnDav: anyone got any idea why socket.io clients get disconnected often [18:59] JohnDav: ? [18:59] tristanoneil has joined the channel [19:00] Aikar: JohnDav: peoples browsers dont support web sockets and its using comet? [19:00] tisba has joined the channel [19:00] cferris has joined the channel [19:00] sriley has joined the channel [19:02] JohnDav: Aikar: i have all transports enabled [19:02] jimt_ has joined the channel [19:02] dnolen has joined the channel [19:03] tristanoneil has joined the channel [19:04] craiggles has joined the channel [19:05] Aikar: JohnDav: yes but socket.io has "fallback" support. if a person comes with an older browser, itll still work using other transports [19:05] Aikar: if a client cant use websocket or flash websocket, itll use AJAX, which will open and close connections alot [19:05] JohnDav: Aikar: hmm [19:05] Aikar: google "ajax comet" [19:05] JohnDav: i know about comet [19:06] JohnDav: but [19:06] femtoo has joined the channel [19:06] JohnDav: socket.io has heartbeats [19:06] JohnDav: and timeouts [19:06] pinhao: ryah mjr_ I have macports but I don't have any openssl package installed [19:07] pinhao: ryah I tried what you said just in case I had and didn't remember Error: openssl-dev is not installed [19:07] robmason has joined the channel [19:07] pinhao: the previous version of node [19:07] pinhao: compiled just fine [19:08] pinhao: I've tried with the version available on git and I get the same error [19:10] Aikar: well imo you should install openssl lol [19:10] Aikar: its used by alot [19:11] vnguyen has joined the channel [19:12] cardona507 has joined the channel [19:12] robotarmy has joined the channel [19:13] terite has joined the channel [19:13] cardona507 has joined the channel [19:14] tilgovi has joined the channel [19:15] rauchg_ has joined the channel [19:15] h03ru has joined the channel [19:15] Moominpapa: Anyone got any advice on running the default test that express makes? [19:15] Moominpapa: I just get ECONNREFUSED [19:16] Moominpapa: Which is strange, because I can curl http://localhost:3000/ perfectly well. [19:16] ddollar has joined the channel [19:17] tj: Moominpapa: using node 0.3.x? [19:17] Moominpapa: I am... [19:17] h03ru has joined the channel [19:17] tj: then that is why [19:17] Moominpapa: Ah, ok. Thanks. [19:18] tj: the http client changed in some way so assert.response() wont work [19:18] Aikar: Moominpapa: chec k the .listen line, is it .listen(3000,'127.0.0.1') ? [19:18] Moominpapa: ouch [19:18] Aikar: if so itll only be accessible to localhost, change it to listen(3000) [19:18] jb55 has joined the channel [19:19] Aikar: i know some test app i tried was set to local onry [19:19] sh1mmer has joined the channel [19:19] Moominpapa: Aikar: it's already reading listen(3000), thanks. Pretty sure TJ has nailed the problem. [19:22] bengl has joined the channel [19:23] terite: Anyone have any experience using querystring.stringify on objects? [19:24] aubergine has joined the channel [19:25] benburkert has joined the channel [19:25] pquerna: simple/test-child-process-double-pipe failing? [19:26] tapwater_ has joined the channel [19:27] terite: I'm having some problems with querystring, it doesn't behave at all like I expect it to [19:27] twoism has joined the channel [19:27] terite: http://pastebin.com/cT7SK1QE [19:27] JohnDav: saikat: are you around? [19:27] terite: What am I missing? [19:29] twoism has joined the channel [19:29] davidc_ has joined the channel [19:29] cardona507 has joined the channel [19:29] davidc_: Hey all. Is there something similar to jquery's extend({}) in node by any chance? [19:30] Aikar: its not too hard to replicate [19:31] Aikar: if you simply want to replace properties with same name its just a few lines of code [19:31] davidc_: I know was just wondering. [19:31] Aikar: question - nothing in node by default is sloppy with for(x in y) that makes you end up with problems extending the object prototype does it? [19:31] davidc_: I already have the Object.extend overriden [19:32] davidc_: but wanted to check :) [19:33] tisba has joined the channel [19:33] tj: Aikar: only unless you use Object.defineProperty (enumerable defaults to false) [19:33] admc has joined the channel [19:34] Aikar: tj: i mean like people not using hasOwnProperty when using for x in y, ending up getting the prototype-added methods in their results [19:35] stagas has joined the channel [19:35] tj: Aikar: not if you define non-enumerable props on Object.prototype [19:35] JohnDav: Is there a way to see number of connected sockets ? [19:36] teemow has joined the channel [19:36] femtooo has joined the channel [19:36] deepthawtz has joined the channel [19:37] davidc_: Aikar, wouldn't it make sense to have something like a "module-toolkit" or something along those lines? [19:37] davidc_: Be it a module on it's own if it has to be.. [19:39] aconbere has joined the channel [19:39] bartt has joined the channel [19:39] Aikar: yeah i know having a func do it is just as viable, i just think it sucks that a really neat feature of JS to be able to do stuff like var foo = {bar: "baz"}.extend({foo: 'bar'}); simply due to people being sloppy with code [19:40] saikat: JohnDav: hey [19:40] davidc_: Aikar, what's sloppy about that? [19:41] Aikar: i worded that bad, i meant people recommending to not prototype in new functions due to others not correctly using for x in y (ie other peoples code breaking because they were not expecting your prototyped in "extend" method) [19:41] davidc_: Oh right, I'm doing it right then. [19:41] dgathright has joined the channel [19:43] Aikar: i was asking, since node is sorta a diff beast, is Object.prototype safe to use in Node since were not loading those 'common libraries' that like to blow up on prototyped functions [19:43] Aikar: on the client side of life* [19:43] shaver: if you add things to prototypes, make them non-enumerable [19:43] Aikar: how do you do that? [19:43] pedrobelo has joined the channel [19:43] brianc: Object.defineProperty [19:43] shaver: 14:33 < tj> Aikar: only unless you use Object.defineProperty (enumerable [19:43] shaver: defaults to false) [19:43] shaver: tj knows all, sees all [19:43] Aikar: ah ok so dont use Object.prototype.foo = function [19:44] brianc: shaver: indeed [19:44] Aikar: good to know [19:44] Aikar: client side of things that doesnt work in older browsers right? [19:44] charlvn has joined the channel [19:44] brianc: Aikar: correct [19:46] miccolis: I'm looking at a line of code in expressjs that I really don't understand, and could really use an explanation of: `options.locals.__proto__ = helpers;` [19:47] miccolis: I'm completely at a loss for what the __proto__ attribute does there [19:48] charlvn has left the channel [19:48] abstractj has joined the channel [19:49] davidc_: shaver, would it be bad to do [19:49] davidc_: Object.defineProperty(Object.prototype, 'extend', ...)? [19:49] charlenopires has joined the channel [19:50] shaver: no [19:50] Aikar: so Object.defineProperty(Object.prototype, "extend", { value: function(parent) { /* code */ } }); [19:50] Aikar: would be the proper way to add {}.extend({}); ? [19:51] jchris has joined the channel [19:51] Aikar: since enum defaults to false* [19:51] mjr_: ryah: you around? [19:51] MikhX has joined the channel [19:51] mjr_: Hey look, 400 members [19:51] ryah: mjr_: hey [19:52] mjr_: ryah: any thoughts on why this would be happening? https://github.com/mranney/node_redis/issues#issue/36 [19:52] mjr_: Before I call stream.write(), should I need to check stream.writable? [19:52] mjr_: Seems odd. [19:52] indexzero has joined the channel [19:53] ryah: mjr_: yes [19:53] mjr_: ryah: I'm certainly listening for close/end, and usually things shut down cleanly. [19:53] richcollins has joined the channel [19:53] ryah: it's just that currently write() executes the write syscall [19:54] mjr_: That is a surprising API [19:54] ryah: and that may be the first to discover that the connection has been severed [19:54] programble has joined the channel [19:54] programble has joined the channel [19:54] mjr_: ohhh, so it's not like I missed the event or anything, it was just detected by write itself [19:54] ryah: i.e. the callback on the stream becoming readable hasn't fired yet [19:54] mjr_: write(2), that is [19:54] ryah: if you had waited until the next tick, you'd probably get an 'end' event [19:55] richcollins: Why might the data sent by the http client get truncated? [19:55] ryah: mjr_: so, i think when we move to the writev branch - if we get epipe we'll just emit 'end' [19:55] richcollins: https://gist.github.com/09276c55e427a4406f7a [19:55] richcollins: The last 2 characters get cut off [19:56] ryah: mjr_: since the writev wont happen (uh, missing the word here) 'inline'... [19:56] mjr_: ryah: I was surprised that the stream writable property had changed, but that no event was emitted. [19:56] ryah: yeah, i agree [19:56] ryah: i've never liked that [19:56] ryah: but currently one should really be checking to see if stream is writable [19:56] mjr_: I wonder why I'd never noticed this before. [19:56] ryah: rare event [19:56] davidc_: So shaver seems clean enough for you? https://gist.github.com/669703 [19:57] creationix has joined the channel [19:57] twoism has joined the channel [19:58] mjr_: somehow this guy is getting them all the time. [19:58] gbot2 has joined the channel [19:58] mjr_: ryah: hopefully in the new writev way we won't require checking the writeablity before writing. It goes against all of the other magical buffering that we do. [19:58] bradleymeck has joined the channel [19:58] ryah: yeah [19:58] norviller has joined the channel [19:59] ryah: agreed! [19:59] mjr_: You can start writing to a stream before it is even connected [19:59] mjr_: Which is awesome! [19:59] aurynn: Yep. You can buffer stuff away. [19:59] mjr_: I'm doing write without checking stream.writable all over the place. Guess I need to change a bunch of stuff. [20:00] richcollins: Ah, it appears to be related to the Content-Length header: https://gist.github.com/09276c55e427a4406f7a [20:00] ryah: this writev branch is taking a long time [20:01] ryah: it's actually really difficult because i have to traverse these lists in both js and c++ [20:01] ryah: but they're js objects [20:01] ryah: (lists of sockets and data queued to sockets) [20:01] ryah: but it should be awesome once it's working [20:02] richcollins: How do I get the number of bytes in a string? [20:02] richcollins: hrm I don't see why it should be different than the length of the string in this case [20:02] richcollins: since they are all ascii characters [20:02] richcollins: ah maybe the ellipsis [20:03] richcollins: nope those are just dots [20:03] mjr_: ryah: I'm sure it is way more complicated than it sounds. There is a whole huge base of stuff that depends on it and has to keep working. [20:06] bradleymeck has joined the channel [20:06] pquerna has joined the channel [20:06] ryah: richcollins: Buffer.byteLength(string) [20:06] MikhX has joined the channel [20:07] richcollins: ryah: Awesome ... thanks [20:07] ryah: richcollins: Buffer.byteLength(string, 'utf8') [20:07] pquerna: yeah, the .writable thing kinda sucks. [20:08] eisd has joined the channel [20:08] eisd has left the channel [20:09] ryah: EPIPE in the writev should force the socket to emit 'close' (not 'end') [20:09] ryah: full hangup [20:10] mjr_: that'll be nice. EPIPE is annoyingly abrupt. [20:11] ryah: it should emit 'error' too [20:12] jfd1 has joined the channel [20:12] intacto has joined the channel [20:13] bmizerany has joined the channel [20:15] mogilny has joined the channel [20:15] dquestions has joined the channel [20:16] sechrist_ has joined the channel [20:19] bnoordhuis has joined the channel [20:19] aubergine has joined the channel [20:22] davidc_: Ah I think I got it correctly now: https://gist.github.com/669703 [20:24] teemow has joined the channel [20:25] matt_c has joined the channel [20:26] ryah: botnets. [20:26] altamic has joined the channel [20:27] davidc_: I'll take this as a yes :) [20:27] karboh has joined the channel [20:28] twoism has joined the channel [20:29] xAFFEE has joined the channel [20:29] altamic has joined the channel [20:30] xAFFEE has left the channel [20:33] femtoo has joined the channel [20:33] davidsklar has joined the channel [20:33] strmpnk has joined the channel [20:33] Tprice has joined the channel [20:34] ngw has joined the channel [20:35] TomsB has joined the channel [20:35] davidsklar has joined the channel [20:35] V1 has joined the channel [20:35] ph^ has joined the channel [20:36] dnolen_ has joined the channel [20:36] davidascher has joined the channel [20:39] Validatorian has joined the channel [20:39] jacobolus has joined the channel [20:42] davidsklar has joined the channel [20:42] vandenoever has joined the channel [20:42] vandenoever: what's the best way to escape chars when writing html? [20:43] dquestions has joined the channel [20:43] dquestio1s has joined the channel [20:46] tj has joined the channel [20:46] path[l] has joined the channel [20:46] xAFFEE has joined the channel [20:47] SamuraiJack: is `npm` server down? [20:47] mjr_: Seems up to me [20:47] rauchg_: we need a npm health bot [20:48] mjr_: curl -v http://registry.npmjs.org/ [20:48] mjr_: rauchg_: we also need the server failover stuff that isaacs is working on [20:49] SamuraiJack: I'm getting this: http://pastie.org/1285309 [20:50] mjr_: Did you do npm adduser? [20:50] SamuraiJack: sure [20:50] SamuraiJack: any major changes after 2.3 version? [20:51] mojodna has joined the channel [20:51] mjr_: "Failed PUT response undefined" sounds bad. [20:51] SamuraiJack: that just worked previously [20:51] SamuraiJack: aha.. [20:51] jimt has joined the channel [20:51] SamuraiJack: could someone else try to release something? [20:51] mojodna: mjr_: i was looking for you in #nodejs ;-) [20:52] mjr_: mojodna: yeah, that gets a lot of people. [20:52] mjr_: Sometimes there is a redirect bot in there. [20:54] mjr_: mojodna: would proxying the drain event from the underlying stream work for you? [20:54] mojodna: mjr_: i think so... i'm trying to remember how fictorial's worked. [20:55] Gruni has joined the channel [20:55] mojodna: it seems like it would make sense to emit a drain event when command_queue is empty and all expected responses have been received [20:55] davidsklar has joined the channel [20:56] mjr_: mojodna: yeah, that's a bit different, but not any harder. [20:56] mjr_: I wonder which is more useful though. [20:56] mojodna: mjr_: probably the "idle" state [20:56] mjr_: drain on the underlying stream lets you adapt to backpressure, and 0 command queue length lets you detect idle. [20:57] xAFFEE has left the channel [20:57] eee_c1 has joined the channel [20:57] mojodna: maybe what i'm looking for is an "idle" event, not a "drained" event [20:58] mjr_: I like that name a lot more. [20:59] mojodna: "idle" would never be triggered w/ outstanding pubsub subscriptions active [20:59] mjr_: mojodna: I'll put them both in there. Maybe you could test it out in a minute before I publish? [20:59] mraleph1 has joined the channel [20:59] mojodna: but it would trigger every time the command queue empties (since it auto-reconnects anyway) [21:00] mojodna: i'll try it out, though my test suite doesn't work with your client just yet [21:00] benburkert has joined the channel [21:02] rauchg_ has joined the channel [21:04] creationix has joined the channel [21:05] tisba has joined the channel [21:07] tristanoneil: tj: As a test I created a very basic app basically the app @ http://expressjs.com just a simple res.send('Hello World'); app added session handling and expresso hangs remove session handling and expresso finishes. I tried adding your MemoryStore configuration as well to this test app and it still hangs. Is this a bug in expresso? [21:08] tj: tristanoneil: hmm, nope just updated expresso in connect (we do this with MemoryStore) and it is fine [21:11] tristanoneil: tj: you mind looking at my sample app and see if I'm doing anything blatantly wrong? https://gist.github.com/669819 [21:11] tj: I dont have time sorry man [21:12] tj: remind me tomorrow if it doesnt work [21:13] murz has joined the channel [21:13] tristanoneil: tj: alright thanks [21:14] tisba has joined the channel [21:14] mjr_: mojodna: https://github.com/mranney/node_redis/commit/1eb3f6a1aaf4c92b0042042cc9daebcb24078ae1 [21:14] mojodna: mjr_: dude, you rock! [21:15] mjr_: thanks. Let me know if it works for you. [21:15] mojodna: thank you thank you [21:15] mojodna: definitely [21:16] mjr_: SamuraiJack: I just published with npm without error. [21:16] sprout has joined the channel [21:17] ezmobius: ryah http://nodechat.vcloudlabs.com [21:17] ezmobius: running node apps on our new PaaS: https://gist.github.com/669585 [21:18] SamuraiJack: mjr_: weird.. [21:18] SamuraiJack: still got the same error [21:20] SamuraiJack: mjr_: whats your npm version? [21:20] mjr_: npm info using npm@0.2.7-2 [21:21] BHSPitMonkey has joined the channel [21:21] derren13 has joined the channel [21:21] SamuraiJack: oh, with 2.7 it work [21:21] SamuraiJack: mjr_: thanks [21:21] SamuraiJack: (I was using 2.5) [21:24] benburkert has joined the channel [21:29] jpld has joined the channel [21:30] creationix: ryah: did you ever merge your http_parser fix into node? [21:30] dnolen has joined the channel [21:31] eee_c has joined the channel [21:33] crodas has joined the channel [21:36] bencc has left the channel [21:40] cardona507 has joined the channel [21:40] isaacs has joined the channel [21:41] stagas has joined the channel [21:42] deepthawtz has joined the channel [21:42] prettyrobots has joined the channel [21:42] ryah: creationix: i have not yet done that. will do it now. [21:42] ryah: ezmobius: wow aweseom [21:43] ryah: ezmobius: dns not resolving here for nodechat [21:43] pedrobelo has joined the channel [21:43] ezmobius: let me push it back up again [21:43] ezmobius: one second [21:43] creationix: ryah: awesome, thanks [21:43] rnewson has joined the channel [21:44] ezmobius: ryah ok it should be back up [21:44] ezmobius: https://gist.github.com/669877 [21:44] ezmobius: check it out [21:44] ryah: ezmobius: :D [21:44] ezmobius: ;) [21:44] ezmobius: not all node apps work yet [21:44] ezmobius: and we have somne work to do to make it seamless [21:44] ezmobius: but our PaaS supports 5 languages now [21:45] ezmobius: and many more to come [21:45] mAritz has joined the channel [21:45] ezmobius: https://gist.github.com/669585 [21:46] mikeal has joined the channel [21:46] richcollins has joined the channel [21:47] jpld: is there any workable solution to ssl/basic http auth in node yet? [21:48] AAA_awright: jpld: SSL no, HTTP Basic is incredibly simple [21:48] jpld: AAA_awright: hmm, maybe some connect middleware already floating around, else i'll give the spec a look [21:50] AAA_awright: jpld: You are just sending a WWW-Authenticate header to the client, which tells the client to re-request the page with an Authenticate header, you simply check the value of that header for a certain value, a realm and a base64-encoded username+":"+password [21:50] AAA_awright: It's hardly secure by itself, you want SSL [21:50] davidc_: You definitely want SSl [21:51] davidc_: There's a module for http-digest for node as well [21:51] davidc_: worked quite well when I played with it and you could do that over ssl for extreme happiness [21:51] jpld: hmm ssl, which isn't well supported in node yet [21:51] AAA_awright: HTTP Digest will prevent an eavesdropping attack, but not a MITM attack [21:52] AAA_awright: It has to be pretty sophisticated to attack HTTP Digest, and you aren't going to get the password [21:52] BillyBreen has left the channel [21:52] jpld: but ideally it would still be over ssl [21:52] AAA_awright: (actually an attacker could just rewrite the request as HTTP basic) [21:53] jpld: i just have a basic logging tool since my application runs client side, easy enough to post logs but getting them i wanted to require authentication [21:53] BillyBreen has joined the channel [21:56] jchris has joined the channel [21:57] rcy` has joined the channel [21:58] stagas has joined the channel [22:00] jfd1 has joined the channel [22:02] bradleymeck has joined the channel [22:02] charlenopires has joined the channel [22:05] jchris has joined the channel [22:08] dnolen_ has joined the channel [22:10] stagas has joined the channel [22:11] derren13 has left the channel [22:13] dguttman has joined the channel [22:15] bradleymeck has joined the channel [22:16] evanmeagher has joined the channel [22:16] eisd has joined the channel [22:19] tj: isaacs: npm bundle is pretty cool :) [22:19] tj: i like it [22:20] isaacs: tj: thanks [22:20] isaacs: tj: i need to make it awesomer. [22:20] tj: juuust tried it, but I will let you know if I have any suggestions [22:20] isaacs: i'm gonna set up the shims so that it adds the bundled node_modules dir to the require path [22:20] tj: a default directory *might* be nice, but probably best not to assume that sort of thing [22:20] hassox has joined the channel [22:20] isaacs: tj: it uses a default dir of "node_modules" now [22:20] isaacs: (now == 0.2.7-2) [22:21] serard has joined the channel [22:21] serard: hello [22:22] isaacs: hi [22:23] serard: In my app.js (using express.js), I have this : require.resolve('./config/config'); [22:23] serard: oops [22:23] serard: So, in my app.js I have this : require('./config/config'); [22:23] serard: in this config/config.js file, I want to use the app defined in app.js, how can I do that ? [22:23] serard: using exports.app ? [22:26] mikew3c_ has joined the channel [22:26] confoocious has joined the channel [22:27] tj: serard: you can do many things, but one sec I will show you an example [22:27] tj: if you want to avoid an "app" global or similar [22:28] tj: serard: https://gist.github.com/669962 [22:28] serard: Well, basically what I'm trying to do is to create configuration files for environments [22:28] tj: its just an object :p you can chuck it around as you wish [22:28] serard: for my dev env, I want a ./config/dev.js [22:29] micheil: tj: hmm, that's still an interesting issue [22:29] tj: theny you can do something like require('./config/' + app.settings.env)(app) [22:29] micheil: tj: is there a framework yet which will automatically require() various files from the directory that it's run in? [22:29] tj: micheil: haha yeah, verrrrry common question holy [22:29] serard: yes, for sure, your code is exactly what I'm doing :) [22:29] serard: but I want a ./config/all.js, then a ./config/$env.js [22:29] dguttman has joined the channel [22:30] serard: so I can somehow (don't know yet) merge configs [22:30] tj: micheil: a few boilerplate repos out there, I just leave that up to the user, I have lots of one file mini apps [22:30] twoism has joined the channel [22:30] serard: all will get overridden by $env config [22:30] aho has joined the channel [22:30] micheil: tj: yeah, so far everything I've done with express has been a single file app, just wondering about other techniques [22:30] tj: micheil: many lol i guess that is the problem [22:30] italic has joined the channel [22:31] italic: how can you set a cookie and redirect in a single response? [22:32] StanAngeloff has joined the channel [22:33] ShiZWeaK has joined the channel [22:33] serard: Also, is there a way to override the template of an express application skeleton generation ? [22:33] tj: serard: yup, check --help [22:34] herbySk has joined the channel [22:34] tj: you can use --template ejs --css sass [22:34] tj: etc [22:34] tj: but that is from HEAD not rc4 [22:35] serard: hmm, when I execute "express" within a directory, it creates a skeletin app for me. I guess it is using some skeleton and copy there [22:35] tj: yeah.. that is what it is supposed to do :p [22:36] serard: lol ok [22:36] hocamcom has joined the channel [22:37] cardona507 has joined the channel [22:38] bradleymeck has joined the channel [22:39] eee_c has joined the channel [22:45] necrodearia has joined the channel [22:47] jspiros has joined the channel [22:48] serard: this is sooo great :) thank you tj [22:48] tj: serard: np [22:48] serard: Is there any tool to compile routes from yaml for example to, say, app.get(...), etc ? [22:48] serard: (or from any other format) [22:48] tj: yaml?? [22:48] mojodna: mjr_: it works! [22:49] serard: writting routes in js is cumbersome [22:49] tj: why yaml [22:49] tj: oh lol no [22:49] mjr_: mojodna: great! Glad to hear it. [22:49] tj: i wouldnt suggest that ... [22:50] serard: why ? [22:50] bradleymeck: writing routes in js is nice and simple compared to many things [22:50] bradleymeck: django decorators ftl [22:50] serard: ok, will see. I'm coming from symfony-project.org, here we declare routes using yaml format (a simple text format) [22:51] tj: what about the logic [22:51] bradleymeck: simple, but detached. might i ask what you gain from the yaml? [22:51] tj: not sure i follow [22:51] bradleymeck: tj, i think he wants to separate logic and code path [22:52] tj: bradleymeck: oh I see [22:52] tj: serard: if you wanted you could define the callbacks somewhere else, and just pass them to app.get() etc [22:52] tj: I like to keep things explicit though, I dont like chasing definitions around [22:53] tj: so personally I inline them [22:53] tj: but you dont have to [22:53] serard: ok [22:54] serard: Here's an example doc page for symfony routing definition in yaml http://www.symfony-project.org/jobeet/1_4/Doctrine/en/05 [22:55] tj: ah [22:55] tj: I am not personally a fan of that approach, but there is no reason you could not do that with express [22:56] serard: The main reason is to be able to "declare" things instead of coding them (sure, you have to code something anyway) [22:57] tj: like I said though you can just do app.get('/user/:id/edit', app.user.edit) etc [22:57] tj: whatever you want [22:57] serard: okay [22:57] serard: sounds great too btw [22:57] serard: :) [23:02] ctp has joined the channel [23:03] richcollins has joined the channel [23:03] noahcampbell has joined the channel [23:03] abstractj has joined the channel [23:04] dberlinger has joined the channel [23:05] stagas has left the channel [23:11] Utkarsh has joined the channel [23:11] Zephd\k0d3: whee, the new o3-canvas alphablender algo seems correct now http://www.blokmodular.com/dev/blendertest.html [23:12] shimondoodkin has joined the channel [23:12] CIA-93: node: 03Ryan Dahl 07master * r8285f12 10/ (4 files): Upgrade http-parser - http://bit.ly/aIXPP1 [23:12] ryah: creationix: --^ [23:15] robmason has joined the channel [23:19] ircretary has joined the channel [23:19] V1 has joined the channel [23:20] zeekay has joined the channel [23:20] [[zzz]] has joined the channel [23:20] trotter has joined the channel [23:22] [[zz]] has joined the channel [23:22] Zephd\k0d3: http://blokmodular.com/dev/test28.htm o3-canvas now has a reference (VERY SLOW) alphablender that at least looks more like it should :) (see radial-gradient) [23:22] aaron___ has joined the channel [23:24] aaron___: tj: got a quick express or connect middleware question; ever heard of any kind of bug that chops off bytes when serving a static file? [23:24] johngbrooks has joined the channel [23:24] zum has joined the channel [23:26] tj: aaron___: what node --version [23:27] aaron___: tj: v0.2.4 [23:27] tj: hmm [23:28] elijah-mbp has joined the channel [23:28] tj: aaron___: it should be fine, I havent had issues [23:30] aaron___: tj: At some point our old node (1.9 I think) was doing this to images, so I upped node/express/connect to latest table, but it seems to still happen for serving this 40k static file. No idea, thanks though, was just trying to feel out if there was something really obvious you might have been aware of [23:30] tj: aaron___: I had issues with 0.2.4 actually, but not 0.2.3, try 0.2.3 [23:30] tj: if it is something you can reproduce [23:30] Utkarsh has joined the channel [23:30] aaron___: oh really? [23:31] aaron___: ya, it's been easy to agitate [23:31] aaron___: I can try dropping to 0.2.3 and see if it goes away [23:32] markwubben has joined the channel [23:33] mr_daniel: most tutorials show it the wrong way, so I ask here: how can I implement factorial the right, non-blocking way? the sequential, blocking way is very simple: http://pastebin.com/1GQpbYDt [23:33] Roelven_ has joined the channel [23:34] stagas has joined the channel [23:34] mr_daniel: so how to continue on line 2 here http://pastebin.com/ergJHVJE ? [23:34] mjr_: mr_daniel: that doesn't do any blocking I/O, just waits for the CPU for large values of n. [23:35] shimondoodkin: call self if true return and call callack [23:35] shimondoodkin: you also may call self on next tick [23:35] mjr_: Or just delegate the whole thing to a webworker and have it send back the result. [23:36] pquerna: is 3rd-eden github user on here? [23:36] mjr_: That's V1, I believe. [23:36] pquerna: ah, nice. [23:36] pquerna: thanks [23:36] mjr_: Unless it's not. [23:36] mjr_: But I've made that mental mapping already. [23:37] mjr_: Just like visionmedia -> tj [23:37] eisd has left the channel [23:37] tj: and to think I could have been http://github.com/tj [23:37] tj: oh well [23:38] mr_daniel: mjr_: yes you are right, its doen't use any blocking I/O (=network or harddisk) [23:38] InsDel has joined the channel [23:39] mr_daniel: but the factorial is only an example to introduce a more generatl question: how to 'transform' a recursion from sequential and non-blocking version to a non-blocking version [23:39] inimino: mr_daniel ⋱ Make it take a callback function, instead of returning the result. [23:40] sh1mmer has joined the channel [23:40] mr_daniel: For the last hours I tried to implement a function which scans a directory and all subdirectories for files with a specific suffix. But I am not used to the event-based programming paradigm, and that is why I want to practise. And the factorial is my first example [23:40] mjr_: practice is good [23:41] mr_daniel: inimino: you mean something like this ? http://pastebin.com/ergJHVJE [23:41] inimino: yes [23:41] rnewson has joined the channel [23:41] rnewson has joined the channel [23:41] mr_daniel: well, but how should I continue? I have no idea what to write on line 2 [23:41] inimino: if(n<2) fn(2) [23:42] terite has left the channel [23:42] bpot has joined the channel [23:42] shimondoodkin: mr_daniel: add a compound 3ed argument [23:42] inimino: else fac(n-1, function(x){fn(x*n)}) [23:42] Utkarsh has joined the channel [23:45] shimondoodkin: http://pastebin.com/4dsLFFzi [23:46] dnolen has joined the channel [23:46] shimondoodkin: http://pastebin.com/T8ibiAF4 [23:48] davidc_ has joined the channel [23:48] MikhX has joined the channel [23:49] shimondoodkin: v8: function fak(n,callback,compound){if(!compound)compound=n;if(n<=1){callback(compound);}else{var compound=(n-1)*compound;fak(n-1,callback,compound);}} fak(5,function (result){ console.log( result );}); [23:49] v8bot: shimondoodkin: CONSOLE: [120], OUTPUT: undefined [23:49] mr_daniel: your solution is brilliant shimondoodkin , first I thought that introducing a third argument isn't very elegant, but JavaScript way of dealing with function parameters makes it an almost perfect solution [23:49] ajpiano has joined the channel [23:50] shimondoodkin: v8: function fak(n,callback,compound){if(!compound)compound=n;if(n<=1){callback(compound);}else{var compound=(n-1)*compound;fak(n-1,callback,compound);}} fak(6,function (result){ console.log( result );}); [23:50] v8bot: shimondoodkin: CONSOLE: [720], OUTPUT: undefined [23:50] cferris has joined the channel [23:50] shimondoodkin: mr_daniel: thanks [23:52] mr_daniel: I wonder if Lisp or Scheme use a similar approach to deal with recursion? [23:52] serard: thank you all, keep going on, these softwares are rocking :) good night :) [23:53] jashkenas has joined the channel [23:53] shimondoodkin: mr_daniel: one caution: calling callbacks is limited to 1000 - 2500 recourses, to overcome this you do: process.nextTick(callback) [23:53] Utkarsh has joined the channel [23:55] siculars has joined the channel [23:56] Guest7167 has joined the channel [23:56] shimondoodkin: v8: var n=0;function fak(){n++;fak();} try{fak()} catch(e){ console.log(n)} [23:56] v8bot: shimondoodkin: CONSOLE: [25671], OUTPUT: undefined [23:56] vandenoever has left the channel [23:57] shimondoodkin: in this v8 it is limited to 25671 [23:57] Zephd\k0d3: hmmm [23:57] Zephd\k0d3: how fast does it do an endless loop? [23:57] shimondoodkin: instant [23:58] Zephd\k0d3: v8: function test(){var n = 0;while(true){n++;console.log(n);}}; try{test();} catch(e){console.log(e.message)}; [23:58] v8bot: Zephd\k0d3: Error: Timeout [23:58] Zephd\k0d3: :) [23:58] trotter has joined the channel [23:59] Zephd\k0d3: I still want a smart compiler that can recognize basic endless loops and do the limit->inf case for the loop