[00:01] zomgbie has joined the channel [00:02] ashleydev has joined the channel [00:04] airhorns has joined the channel [00:04] x_or has joined the channel [00:07] mlins has joined the channel [00:08] robotarmy has joined the channel [00:09] echosystm has joined the channel [00:09] echosystm: is there any way for an object to have constants as properties? [00:09] overthemike has joined the channel [00:09] overthemike has left the channel [00:10] tanepiper: you could make constants private members and return them on an object [00:11] echosystm: you mean through a function? [00:11] tanepiper: something like this: https://gist.github.com/9ca1fdba609c8171027a [00:11] mikew3c has joined the channel [00:12] echosystm: thats not really a constant though [00:12] echosystm: since you can change the value of it [00:12] echosystm: ie foo.CONSTANT = 2; [00:12] tanepiper: well yes, but it's constant in that you can't change it in the function :) [00:12] tanepiper: but objects are mutable in javascript [00:12] echosystm: mm [00:12] tanepiper: afaik there is Object.freeze but i've never used it [00:13] echosystm: bit of a pickle [00:13] tanepiper: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/freeze [00:14] polotek: echosystm: note that freeze won't work in most browsers [00:14] tanepiper: ^ [00:14] echosystm: well [00:14] tanepiper: also i remember something being mentioned on the list about it being bad [00:14] echosystm: should i still upper case the property even though it isnt actually a const? [00:14] polotek: tanepiper: might have a performance hit of some kind [00:15] echosystm: should i make my module just export a const? [00:15] polotek: echosystm: that's convention [00:15] polotek: that's what I do anyway. outside of freeze there's not way to keep someone from messing with your properties [00:15] echosystm: mm [00:17] fabian__ has joined the channel [00:18] echosystm: is it best practice to hide private variables via closure or just underscore the name? [00:18] mgutz: echosystem: you could do __defineGetter__('CONSTANT', function(){return 2;}) [00:19] polotek: echosystm: depends on your needs. I use closures whenever possible. [00:19] polotek: mgutz: getters/setters definitely have a performance penalty [00:19] polotek: but yeah, ideally that's what I would prefer [00:19] tanepiper: getters/setters just feel wrong in JS :) [00:20] mikeal: getters/setters sucks [00:20] mikeal: er suck [00:20] mikeal: it makes things obscure [00:20] gbot2 has joined the channel [00:21] mikeal: code should be predicable [00:21] echosystm: it improves modularity though [00:21] mikeal: i don't agree [00:21] polotek: mikeal: depends on how you do it I think [00:21] mikeal: there is a lot you can do for modularity [00:21] mikeal: that doesn't make things unpredictable [00:21] polotek: it can definitely be too unpredictable [00:21] mikeal: getters and setters are one of those *clever* things programmers love [00:21] polotek: but if you keep it to the use case of simple properties [00:21] polotek: it can be useful [00:21] mikeal: that enable you to be all smart and clever and feel good about yourself [00:22] polotek: treat it just like normal predictable properties [00:22] polotek: but you get read-only semantics if you want [00:22] mikeal: but at the end of the day, all you did was write some shit other people have a hard time understanding [00:22] SubStack: ACTION submits a nodeconf talk about getters and setters just to make mikeal uncomfortable [00:22] mgutz: i don't think i'm clever for using them, been using them since Delphi and C# [00:22] mlins has joined the channel [00:23] polotek: actually read-only semantics is about the only thing I've ever used them for [00:23] Evet: public http api == everyone can use, or i can authenticate client-side applications? [00:23] mikeal: i mean, without them we couldn't have jsdom, so we do *have* to have them because some assholes wrote an API for the web that couldn't be implemented in the language of the web without special host object crap [00:23] polotek: and I don't anymore because of the performance penalty [00:23] SubStack: getters and setters can be useful for some kinds of memoization or for making certain kinds of interfaces [00:23] polotek: so yeah, I guess if they went away I wouldn't really care [00:23] mikeal: you can just use freeze [00:23] echosystm: how big is the performance penalty? [00:23] mikeal: in ES5 [00:23] isaacs: the nice thing about getter/setters is that you can lie with them. [00:23] mikeal: but there is a perf penalty on that too [00:23] SubStack: they should be used sparingly though [00:23] isaacs: humans love lying. [00:23] isaacs: it's like our favorite thing. [00:24] isaacs: the president read me a study that proved that once. [00:24] SubStack: isaacs: but can we lie with them as we would lie with another $GENDER? [00:24] SubStack: ACTION equivocates [00:24] isaacs: SubStack: you mean, do i love getter/setters in the way that man loves a woman? or in the way that a woman loves a fine cigar? [00:25] polotek: in general they allow you to create nice interfaces [00:25] SubStack: exactly [00:25] isaacs: polotek: no, they allow you to create paren-less interfaces. [00:25] polotek: with our without them people will create obscure code [00:25] isaacs: let's be precise here. [00:25] polotek: isaacs: for some subjective definition of "nice" [00:25] jimt has joined the channel [00:25] polotek: let's not be precise cause it's a pain in the ass [00:25] isaacs: there is really no semantic difference between "x.y = 8" and "x.y(8)" except that the second more obviously is calling a function, and the first more obviously is storing a value. [00:26] mikeal: so like [00:26] mikeal: all these features are in Python [00:26] mikeal: and people absolutely love them [00:26] mikeal: and they all write code that nobody can understand [00:26] mikeal: really really clever shit that nobody else can figure out [00:26] isaacs: so g/s proponents say "calling functions to set a value should look like value-setting" adn anti-g/s types say "function calls need parens. name the function setX if it's a setter" [00:26] polotek: mikeal: some people do yes [00:26] polotek: just like they do in js [00:26] twoism has joined the channel [00:26] polotek: with or without getters/setters [00:27] mikeal: it's harder without getters and setters [00:27] polotek: I don't really believe in blaming language features for people doing crappy stuff with code [00:27] SubStack: mikeal: I think library interfaces intended for wide-use are sufficiently different from internal modules [00:27] isaacs: personally, i think that g/s functions (or even more complicated stuff like setter-only, or value: attributes, or even proxies, etc.) are kinda irrelevant. [00:27] SubStack: if it's a module, it doesn't really matter how it works [00:27] mikeal: they are features you don't actually need [00:27] isaacs: mikeal: people were writing terrible JS long before getters/setters were invented. [00:27] mikeal: it's just sugar [00:27] isaacs: the whole LANGUAGE is sugar, dude. [00:28] SubStack: DIABEETUS [00:28] polotek: everything above assembly is sugar [00:28] isaacs: lol [00:28] mikeal: and sugar just makes you think about making things prettier instead of getting shit done [00:28] polotek: let's be precise here [00:28] polotek: ;) [00:28] mikeal: it's like e4x [00:28] mikeal: fucking retarded [00:28] SubStack: making things pretty is pretty great [00:28] isaacs: you knwo what's awesome about node? none of us can even begin to waste any real time on this. [00:28] SubStack: to a point [00:28] isaacs: can you imagine how careful we'd have to be in this conversation if this was python or something? [00:29] mikeal: it's clearly impossible to work with xml without literals [00:29] isaacs: some of the crap we're saying might actually get IMPLEMENTED, and that'd be hazardous. [00:29] polotek: if nobody cared about pretty, we'd write everything in C or Java [00:29] mikeal: nevermind that everyone does [00:29] isaacs: polotek: hey, hey, hey, C is pretty [00:29] polotek: isaacs: no, it's elegant, there's a difference [00:29] mikeal: in Python this conversation would be 5 years long [00:29] isaacs: mikeal: s/without literals$// [00:29] mikeal: and end in a breaking version of node [00:29] mikeal: where we make print a function [00:29] isaacs: hahaha [00:29] isaacs: exactly!! [00:29] mikeal: and it'll be REALLY important [00:30] polotek: +1 to print [00:30] isaacs: "foo".print() is the devil! print("foo") ftw!!! [00:30] polotek: [00:30] mikeal: where the print function is actually a getter [00:30] mikeal: on the String prototype [00:30] isaacs: ok, seriously, though, can anyone explain to me what's up with: ",".join(list) [00:30] mikeal: and does like, fucking magic [00:30] polotek: I get distracted so easily in this room [00:30] isaacs: what crack were they smoking? [00:30] SubStack: isaacs: yes [00:30] SubStack: yes they were [00:31] mikeal: that is the single dumbest thing in Python [00:31] mikeal: and nobody will admit it's stupid [00:31] mikeal: it's hilarious [00:31] mikeal: it's clearly wrong [00:31] isaacs: i KNOW that's a bad idea, because every time i'm really drunk, i'm like, "You know what would be AWESOME!? a JOIN function on the STRING prototype to join ARRAYS together!!" [00:31] SubStack: I think it's because they wanted lists to be this pristine thing that nobody would ever sully [00:32] mikeal: it's also on sets [00:32] clarkfischer: Anyone know of a node module that can compress/prettyprint HTML? [00:32] mikeal: and tubles [00:32] robtmr: isaacs: it lets u use anything "iterable" instead of having the join method on all list-like things, i suppose [00:32] SubStack: clarkfischer: I see a minify package on npm [00:32] SubStack: minifyjs, rather [00:33] robtmr: isaacs: you could make your own list-like class without .join() and you could still use it [00:33] SubStack: oh wait that is just for javascript [00:33] polotek: clarkfischer: pretty printing and compressing aren't exactly related [00:33] polotek: libxmljs will pretty print for you [00:34] clarkfischer: polotek: Yeah, I need one or the other. JSDOM's serialization isn't exactly pretty. [00:34] polotek: oh, by compress you mean removing whitespace and such [00:34] isaacs: robtmr: that's dumb. without .join() it's not list-like [00:34] polotek: I don't think I exposed the printing flags in libxmljs [00:35] isaacs: robtmr: not that Array.prototype.join.call(arguments, ",") is MUCH better [00:35] polotek: it always pretty prints [00:35] isaacs: robtmr: but still, array functions going on the String class is the paradigmatic example of inappropriate class intimacy [00:35] polotek: arguments is a comically broken thing [00:35] polotek: which sucks because it could be so awesome [00:35] robtmr: isaacs: I think it's an attempt to do something similar, but I agree that the js version makes more sense [00:36] isaacs: robtmr: it'd be nice if js had a less wordy way to access the prototype of a class. [00:36] isaacs: Array#join(arguments, ",") would be cool [00:36] SubStack: I like [] more than Array.prototype [00:36] SubStack: shorter [00:36] isaacs: SubStack: shorter in characters. longer in __proto__ lookup chain [00:36] SubStack: who cares if it creates an empty list that will never be used, js is fast [00:37] polotek: SubStack: gc can be expensive [00:37] SubStack: for functions that will maybe be called 10 times in a program? totally worth it [00:37] polotek: particuraly in v8 where it waits a long time and does a lot at once [00:37] polotek: for things like [].join [].slice, etc that can add up [00:37] polotek: those constructs are used a lot [00:38] SubStack: but see I don't see why we should suppose that any of that matters ahead of time [00:38] polotek: SubStack: you shouldn't [00:38] SubStack: network is slow, disk is slow, cpu is fast, ram is fast [00:38] polotek: but you could also avoid the question entirely [00:38] SubStack: so in light of that, I err on the side of aesthetics [00:39] SubStack: it's v8's job to do those micro-optimizations, not mine [00:39] polotek: SubStack: I'm not disagreeing [00:39] polotek: I actually agree mostly [00:40] polotek: I have a tendency to play devil's advocate for no particular reason [00:40] SubStack: oh I do that too [00:40] polotek: I'm sure it gives people the impression that I'm more of a douche than I actually [00:40] polotek: am [00:40] davidc_ has joined the channel [00:40] SubStack: and actually, we can do science! [00:41] SubStack: I have done this experiment before [00:42] dthompson has joined the channel [00:42] SubStack: oh wow [00:42] SubStack: v8: var f = function () { return Array.prototype.slice.call(arguments) }; var t0 = Date.now(); for (var i = 0; i < 100000; i++) f(1,2,3,4,5); Date.now() - t0 [00:42] v8bot: SubStack: 138 [00:42] SubStack: v8: var f = function () { return [].slice.call(arguments) }; var t0 = Date.now(); for (var i = 0; i < 100000; i++) f(1,2,3,4,5); Date.now() - t0 [00:42] v8bot: SubStack: 163 [00:42] tilgovi has joined the channel [00:43] SubStack: 18% [00:43] polotek: SubStack: does that hold up on repeated runs? [00:44] polotek: and I wonder if it stabilizes with long running processes [00:44] SubStack: polotek: on my system there's actually no difference at all [00:45] broofa: v8: var a=[], f=function() {return a.slice.call(arguments)}; var t0=Date.now(); for (var i = 0; i < 100000; i++) f(1,2,3,4,5); Date.now() - t0 [00:45] v8bot: broofa: 150 [00:45] SubStack: not a statistically significant one anyhow [00:45] pgte has joined the channel [00:45] broofa: v8: var a=[].slice, f=function() {return a.call(arguments)}; var t0=Date.now(); for (var i = 0; i < 100000; i++) f(1,2,3,4,5); Date.now() - t0 [00:45] v8bot: broofa: 152 [00:45] broofa: interesting [00:45] pgte: [blog post] Asynchronous iteration patterns in Node.js - http://metaduck.com/post/2675027550/asynchronous-iteration-patterns-in-node-js [00:46] pgte: covers some problems discussed here [00:46] isaacs: SubStack: i don't know how much i trust v8bot as a bench tool [00:47] isaacs: SubStack: especially with a test that shows a difference of 25ms [00:48] isaacs: v8: var f = function () { return [].slice.call(arguments) }; var t0 = Date.now(); for (var i = 0; i < 100000; i++) f(1,2,3,4,5); Date.now() - t0 [00:48] v8bot: isaacs: 161 [00:48] isaacs: v8: var f = function () { arguments.slice = Array.prototype.slice ; return arguments.slice() }; var t0 = Date.now(); for (var i = 0; i < 100000; i++) f(1,2,3,4,5); Date.now() - t0 [00:48] v8bot: isaacs: 198 [00:52] hornairs has joined the channel [00:54] JimBastard has joined the channel [00:54] JimBastard: hey isaacs , can i bug you about a npm config question? [00:57] darthdeus has joined the channel [00:57] pgte has left the channel [00:57] svnlto has joined the channel [00:58] skyl has joined the channel [00:58] JimBastard: is there anyway i can pull out the package.json for the current package im in? not one that i have required? [01:00] c4milo1 has joined the channel [01:04] [[zz]] has joined the channel [01:05] pyrotechnick: wats the command [01:05] pyrotechnick: to break in 0.3.4 [01:06] Aria: To break what? [01:06] pyrotechnick: debugger [01:06] pyrotechnick: is it just debugger; [01:06] wasabist has joined the channel [01:07] WarriorSl has joined the channel [01:07] Aria: Hm. I don't know -- I'm not using any debugger but node-inspector on occasion [01:07] pyrotechnick: ok [01:09] pyrotechnick: oh it listens over a socket [01:13] c4milo has left the channel [01:15] tg has joined the channel [01:19] maix has left the channel [01:20] indexzero: pgte: Good post on async iteration [01:21] rickharrison has joined the channel [01:21] TheEmpath2 has joined the channel [01:22] ashleydev has joined the channel [01:22] skyl has joined the channel [01:31] siong1987 has joined the channel [01:33] mgutz_ has joined the channel [01:33] nonnikcam has joined the channel [01:36] aelaguiz has joined the channel [01:36] aelaguiz: I'm writing an extension for node and Im' having a basic problem, how do I pass in arguments to the ::New for a custom object? I need to wrap them in an "Argument" object I think, but I can't find documentation on the API [01:37] robotarmy has joined the channel [01:40] jimt_ has joined the channel [01:41] jamescarr: aelaguiz, huh!? [01:41] jamescarr: oh, a c++ extension [01:42] aelaguiz: YYes [01:42] mlins has joined the channel [01:43] aelaguiz: There's something fundamental about how arguments are passed into exposed interface functions that I'm not seeing [01:43] charlenopires has joined the channel [01:43] polotek: aelaguiz: do you have some code we can look at? [01:43] aelaguiz: yeah sec [01:45] aelaguiz: http://pastebin.com/8A83dTMC [01:45] aelaguiz: its a poker library, deck of cards/card abstraction [01:45] aelaguiz: trying to just have a function in the "Deck" object return a new "Card" object [01:45] MikhX has joined the channel [01:45] aelaguiz: but I need to pass in an integer to the "New" on the Card object [01:46] aelaguiz: New requires an Arguments object, which I don't know how to construct [01:46] cadrlife has joined the channel [01:48] aelaguiz: I mean actually I "know" that I'm not supposed to construct an arguments object, it's got a private constructor. [01:49] arpegius has joined the channel [01:49] halfhalo has left the channel [01:49] halfhalo has joined the channel [01:52] cafesofie has joined the channel [01:52] davidc_ has joined the channel [01:55] SvenDowideit has joined the channel [01:59] SubStack: just read that 'tale of harry' async js thing but the final result was somewhat underwhelming [02:00] SubStack: I think isaacs has the right idea that the best flow control lib is one what you've written yourself [02:00] SubStack: s/what/that/ [02:00] MattDiPasquale has joined the channel [02:02] gartenstuhl has joined the channel [02:02] Zebra10 has joined the channel [02:03] admc has joined the channel [02:05] aelaguiz: I figured it out :) And yes it was a fundamental misunderstanding, http://pastebin.com/CgRc1m87 I updated the pastebin if anyone cares [02:05] polotek: aelaguiz: sorry I was just taking a look [02:06] aelaguiz: it's cool, I was thinking about the problem wrong [02:06] polotek: one of the hardest things with getting into writing bindings is going between js data values and c/c++ values [02:06] pyrotechnick: yeah it sucks [02:07] pyrotechnick: github.com/feisty/node-bullet [02:07] aelaguiz: Yeah I'm actually just wrapping a library that exists, I think my C++ layer will be very minimal and honestly just knowing the little bit I just figured out is probably enough [02:07] aelaguiz: but yeah this um, looks "hairy" [02:07] polotek: aelaguiz: the next thing you need to get a handle on is HandleScope [02:07] polotek: and scope.Close [02:07] aelaguiz: okay, do you say that because you see I'm doing something incorrect or just friendly advice? [02:07] rpbertp13 has joined the channel [02:08] Zebra10: Hey, I'm having a strange issue with filesystem.writeFile() ~ I have a .gif file being streamed to my server and when it happens i take the buffer, write it to a var and then use writeFile() to put it into the filesystem. it appears to be there a 4k in size or whatever, but when i try to open it i am told it is corrupt. Any thoughts? [02:08] pyrotechnick: are u using binary encoding to write it? [02:08] polotek: aelaguiz: not it's necessary [02:09] polotek: v8 uses handlescope to make sure js references get cleaned up [02:09] polotek: start here http://create.tpsitulsa.com/wiki/V8/Handles [02:09] aelaguiz: awesome, thank you [02:09] polotek: and read this to see how I explained my experience [02:09] polotek: http://marcorogers.com/blog/06-17-2010/updating-libxmljs-for-nodejs-or-how-to-suck-less-at-google-v8 [02:10] polotek: that wiki page has some really good info [02:10] polotek: although it's very incomplete [02:10] polotek: http://create.tpsitulsa.com/wiki/V8_Cookbook [02:10] polotek: back in a bit folks [02:10] aelaguiz: bookmarked all of those, I was having a hard time finding documentation [02:11] bmizerany has joined the channel [02:11] stepheneb has joined the channel [02:12] cadrlife: Hi all, who should I ask about getting in the nodejitsu beta? [02:12] Zebra10: pyrotechnick: i pass 'binary' as the encoding arg? [02:13] warz: ugh. im new to nodejs/javascript, and im having a hell of a time learning to code around asyncronous callbacks for everything. [02:13] warz: doesnt seem to make interacting with a database very fun. [02:18] jamescarr: cadrlife, JimBastard just left [02:18] jamescarr: he's the one you wanna talk to :-P [02:18] cadrlife: doh [02:18] jamescarr: some of the other nodejitsu guys are possibly lurking tho [02:18] pyrotechnick: warz: try using an ODM like rapid or mongoose [02:18] misham has joined the channel [02:20] jamescarr: ryah, I havent checked lately, is joyent beta still open? [02:21] jamescarr: cadrlife, JimBastard is usually on late at night... at least I've seen him during my late night hacking so he might be back :S [02:21] cadrlife: Thanks [02:23] Zebra10: jamescarr: I just got my coupon code [02:24] CrabDude has joined the channel [02:24] jamescarr: Zebra10, same url to post to? [02:24] Druide_ has joined the channel [02:24] jamescarr: from that email that got sent out back in Sept/Oct? [02:24] ron_frown has joined the channel [02:24] Zebra10: yeah the love one [02:24] Zebra10: looks like they still have signups https://no.de/ [02:25] Zebra10: it took maybe 3 months for my account coupon code to come through [02:26] HAITI has joined the channel [02:31] echosystm has joined the channel [02:32] echosystm: say i wanted to write 00000001 into a buffer [02:32] echosystm: how would i do that? [02:32] pyrotechnick: in binary? [02:32] ron_frown: isnt that just bit = 1 [02:33] echosystm: yep [02:33] echosystm: i dont understand this encoding stuff though [02:33] echosystm: would it be like... [02:33] echosystm: new Buffer(String.fromCharCode(1), 'utf8'); ? [02:34] ron_frown: doesnt buffer just take byte[] [02:34] echosystm: yeah but how do you write a byte? [02:34] ron_frown: I dont know js enough to help there [02:34] echosystm: numbers are 64bit floats [02:35] echosystm: strings are... ?? [02:35] mikeal has joined the channel [02:36] ron_frown: anyone doing anything with ssl and mongo [02:36] polotek: echosystm: why doesn't that work? [02:37] polotek: I just tried it in there repl and it worked fine [02:37] ron_frown: why cant you just do "1" instead of String.fromCharCode [02:37] polotek: ron_frown: js doesn't do binary [02:37] ron_frown: or do you actually want character code [02:38] Zebra10: the binary section in node.js docs is quite helpful [02:39] polotek: Buffer in node is construct for holding raw binary data [02:39] polotek: but getting the right data in and out of it in javascript is tricky [02:39] polotek: but js doesn't really have constructs for binary [02:39] polotek: s/but/because/ [02:39] skm has joined the channel [02:40] TheEmpath2 has joined the channel [02:41] polotek: wow, this is maybe the first time homebrew has come through where macports has failed miserably [02:42] pyrotechnick: haha [02:42] pyrotechnick: homebrew++ [02:42] v8bot: pyrotechnick has given a beer to homebrew. homebrew now has 2 beers. [02:42] overthemike has joined the channel [02:43] MikhX has joined the channel [02:44] overthemike has left the channel [02:44] echosystm has joined the channel [02:44] echosystm: sorry, i got disconnected [02:45] echosystm: so, back to my quesion [02:45] echosystm: if i know what bits i want written to the buffer, is it best to just use string characters? [02:45] echosystm: or am i doing it wrong [02:46] hobodave has joined the channel [02:46] echosystm: what is the format of a js string anyway? [02:47] pieterv has joined the channel [02:47] siong198_ has joined the channel [02:48] Phyllio has joined the channel [02:48] siong1987 has joined the channel [02:49] siong1987 has joined the channel [02:51] whyme has joined the channel [02:51] TheEmpath2: representing Embeded Docs in mongoose [02:52] polotek: echosystm: never tried it [02:52] polotek: try parseInt('0000001', 2) [02:52] polotek: actually that'll just give you the int [02:53] polotek: I don't know [02:56] polotek: there's node-binary, is SubStack still in here? [02:58] SubStack: pow [03:00] SubStack: echosystm: you can Put().word8(1).buffer() if you just want a (char) [03:00] SubStack: with node-put [03:04] airhorns has joined the channel [03:05] SubStack: and similiarly Binary.parse(buf).word8('x').vars to get it back out again [03:08] polotek: gross [03:10] SubStack: gross? :( [03:11] SubStack: well it looks prettier when you have more multibyte fields you want to pack and unpack [03:15] hassox has joined the channel [03:17] aconbere has joined the channel [03:22] pyrotechnick: hey if you were watching ToE before please watch this new repo [03:22] pyrotechnick: https://github.com/feisty/ToE/watchers [03:24] theotherguy has joined the channel [03:24] theotherguy: hello [03:25] pyrotechnick: hi [03:25] pyrotechnick: how can we help [03:26] daveyjoe has joined the channel [03:27] theotherguy: hi, I'm new to node, so node's javascript run even if user's browser is js disabled ? [03:27] pyrotechnick: theotherguy: are you making a web app in node? [03:27] pyrotechnick: that serves HTML? [03:28] Ond has joined the channel [03:28] pyrotechnick: like using express or something... [03:28] theotherguy: kinda, just learning [03:28] pyrotechnick: ok [03:28] pyrotechnick: then yes, if you serve html from an application written in node/javascript [03:28] muk_mb: have any of you done some nifty things with SproutCore? [03:28] pyrotechnick: then they will be able to use it [03:28] theotherguy: muk_mb: framework ? [03:28] muk_mb: theotherguy: node.js is server-side javascript, has nothing to do with the browser [03:28] pyrotechnick: yep [03:28] ron_frown: can I theoretically have my .net app post a form to a node.js server, and from there send shit to sockets [03:29] muk_mb: theotherguy: yeah, framework [03:29] muk_mb: theotherguy: http://www.sproutcore.com/what-is-sproutcore/ [03:29] theotherguy: few mins ago i was checking that [03:29] theotherguy: did u read the nettuts ? [03:29] theotherguy: :D [03:30] pyrotechnick: if you like sproutcore be sure to check out backbone.js [03:30] pyrotechnick: and join #documentcloud [03:30] theotherguy: so basically javascript on the server right? [03:30] pyrotechnick: yes [03:30] pyrotechnick: it's not a new concept [03:30] Ond: No [03:30] pyrotechnick: jaxar and others have been around for some time [03:30] Ond: The server IS javascript [03:30] stephen_mcd has joined the channel [03:31] theotherguy: ok. [03:31] theotherguy: can I migrate all of my javascript to node? [03:31] pyrotechnick: theotherguy: it's a bit confusing because of these things like jsdom that have come our recently [03:31] Ond: Depends [03:31] pyrotechnick: so basically node.js itself [03:31] Ond: What kind of javascript? [03:31] theotherguy: Jquery stuff [03:31] pyrotechnick: lets you do things like what php or .net can do but in javascript [03:31] Ond: What would you do with jquery on the server side? [03:31] pyrotechnick: Ond: ill let you handle this lol [03:31] theotherguy: :) [03:32] Ond: $('.posts') and similar selectors are meaningless. What are you trying to accomplish? [03:32] Ond: Anyway, you could use jsdom's jqueryify method if you were scraping a we page and needed to select elements like that. [03:32] pyrotechnick: Ond: dont drive him away from ssjquery [03:32] Ond: Or soupselect, many such modules exist. [03:32] pyrotechnick: yeah [03:32] pyrotechnick: Ond: where have you come from? [03:32] Ond: Sizzle is nice too [03:32] pyrotechnick: i mean [03:32] pyrotechnick: theotherguy: where have you come from? [03:32] pyrotechnick: what environment [03:32] theotherguy: pyrotechnick: what do u mean? [03:33] theotherguy: ah [03:33] theotherguy: php [03:33] pyrotechnick: php [03:33] pyrotechnick: rails [03:33] pyrotechnick: etc [03:33] pyrotechnick: ok [03:33] pyrotechnick: check out jspp [03:33] pyrotechnick: ill link you [03:33] Ond: What would you use jquery for on the sever side, theotherguy [03:33] pyrotechnick: http://www.jspp.io/ [03:33] pyrotechnick: jspp is really good if you're trying to get into node from php [03:33] pyrotechnick: it's a very nice transition [03:33] theotherguy: ok, i think i got it now, if I'm using DOM based stuff I have to create the html from node [03:33] pyrotechnick: and you can do server-side jquery [03:34] pyrotechnick: theotherguy: you can do that, you can do it other ways [03:34] pyrotechnick: i recommend just playing with jspp [03:34] pyrotechnick: see how it does it [03:34] Ond: You can also send non-HTML data [03:34] Ond: Anything any old server can send [03:34] pyrotechnick: and then if you want to go back to just dumping html into the response like php does then you can use another framework other than jspp [03:35] theotherguy: otherwise I can handle data stuff using node? like data grabbing [03:35] Ond: Data grabbing? [03:35] pyrotechnick: database [03:35] Ond: Servers are for serving. [03:35] pyrotechnick: or scraping other webpages? [03:35] theotherguy: scrapping [03:35] pyrotechnick: yep [03:35] pyrotechnick: you can do that two ways aswell [03:35] pyrotechnick: you can read the scraped website into a dom and do jquery on it [03:35] pyrotechnick: in node [03:35] pyrotechnick: or you can use an xml/html parser to parse the html [03:36] pyrotechnick: and then do it the traditional way [03:36] Ond: Google it, tutorials exist. [03:36] pyrotechnick: both consuming and producing HTML can be done two ways in node [03:36] Ond: Request + jsdom works well, so does request + soupselect etc. But I think our venerable and inscrutable leader would recommend apricot (isn't that what it's called?" [03:36] Ond: ) * One sec [03:36] pyrotechnick: server-side dom stuff with jquery or raw HTML processing/emitting [03:37] theotherguy: if I use .load to a remote url, user have to visit it and grab bur if it can be done from servers end it'll be much faster... [03:37] Ond: http://nodejs.org/docs/v0.3.4/api/appendix_1.html [03:37] theotherguy: wait a sec it can be done using php [03:38] theotherguy: pyrotechnick: thanks for jspp ^^ [03:39] pyrotechnick: theotherguy: jspp is really good if you want to get into node but still feel like you're in php [03:40] pyrotechnick: it's good if you're trying to convert your workplace or team over to node [03:40] pyrotechnick: it's the "best" of both worlds [03:40] pyrotechnick: bare in mind it's only a few days old [03:40] pyrotechnick: there will be bugs [03:40] pyrotechnick: but if you dont stray too far from the path [03:40] pyrotechnick: you should be fine [03:40] AAA_awright: Is there some efficent way to parse individual lines from a stream? Specifically, a file? [03:41] AAA_awright: There was a library that did that and I forget what it did [03:41] theotherguy: in what cases node come to the show? I mean in what situations ? [03:41] pyrotechnick: streams [03:41] SubStack: there are lots of line buffering modules [03:41] SubStack: AAA_awright: lazy can do lines [03:41] pyrotechnick: if you need streams [03:41] pyrotechnick: if you want to share code between the client and browser [03:42] pyrotechnick: if you need evented IO and dont want to tack it onto another environment like twisted in python or eventmachine in ruby [03:42] AAA_awright: Funny I'm writing a simple memory RDF store called lazy... Maybe I should think of a better name [03:42] pyrotechnick: lol yeah [03:42] AAA_awright: SubStack: Ah yes that was it [03:42] SubStack: Lazy(stream).lines.forEach(function (line) {}) [03:43] AAA_awright: ...maybe [03:43] AAA_awright: No, not forEach, is that an Array? [03:43] SubStack: no it's a custom forEach [03:43] Ond: An array of lines it would appear [03:43] SubStack: that's why it's called lazy :p [03:43] mikeal has joined the channel [03:43] AAA_awright: How does that work? lines would already be defined [03:43] SubStack: lines is a getter >_> [03:43] echosystm: sorry SubStack, i walked away for a bit [03:44] SubStack: it just tells lazy to switch on line-buffering [03:44] echosystm: funnily enough, i had already started using your module anyway haha [03:44] AAA_awright: self.defineGetter [03:44] mjr_ has joined the channel [03:44] Zebra10: pyrotechnick: thanks for the help earlier, i wasn't setting the response encoding to binary [03:45] gnrfan has joined the channel [03:46] pyrotechnick: Zebra10: sorry i could only say binary real quick lol [03:46] pyrotechnick: i did read your other messages but wasnt at the KB [03:46] Zebra10: no worries, i sorted it out [03:46] pyrotechnick: nice [03:48] wasabist_ has joined the channel [03:49] stephen_mcd: Any idea why npm won't install to somewhere in my path? Install log here: http://pastebin.com/sTxPFRs7 [03:53] polotek: v8bot: new Date(1291952930); [03:53] v8bot: polotek: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [03:54] polotek: v8: new Date(1291952930); [03:54] v8bot: polotek: "Thu Jan 15 1970 17:52:32 GMT-0500 (EST)" [03:54] polotek: umm, did I do something wrong? [03:54] polotek: v8: new Date(0); [03:54] v8bot: polotek: "Wed Dec 31 1969 19:00:00 GMT-0500 (EST)" [03:56] polotek: is the number too big? [03:56] overthemike has joined the channel [03:56] polotek: yep, lost precision [03:56] mjr_: v8: Date.now() - 1291952930; [03:56] v8bot: mjr_: 1293339853290 [03:57] overthemike has left the channel [03:58] mjr_: you know it wants time in ms, right? [03:58] mjr_: v8: new Date(1291952930 * 1000); [03:58] v8bot: mjr_: "Thu Dec 09 2010 22:48:50 GMT-0500 (EST)" [03:59] polotek: mjr_: yeah, just didn't realize it wasn't in milliseconds [03:59] tradade has joined the channel [03:59] c4milo has joined the channel [03:59] stephen_mcd: npm decided to create lib and share directories in my home directory [04:00] polotek: php likes seconds and I"m going back and forth [04:00] polotek: pain in the ass [04:00] stephen_mcd: I guess it should be /usr/ or /usr/local/ ? [04:00] isaacs: stephen_mcd: fuck. that's like, phase 3 in the 10-phase process of becoming self-aware. [04:00] isaacs: stephen_mcd: npm conf ls [04:00] isaacs: stephen_mcd: that'll tell you what it's up to [04:00] stephen_mcd: isaacs: thanks [04:00] misham has joined the channel [04:01] ron_frown: socket.on('connection', function(client){ [04:02] ron_frown: I am already doing that and able to handle socket connections no problem [04:02] davidascher has joined the channel [04:02] mgutz_ has joined the channel [04:03] ron_frown: I was curious if I could do that AND listen on a particular url for a post [04:03] polotek: ron_frown: yes, you can use the http module right along side the net module [04:04] stephen_mcd: isaacs: npmjs.org seems to be down btw [04:04] polotek: you can run as many servers as you want [04:04] cadrlife has joined the channel [04:05] cadrlife has left the channel [04:07] mgutz__ has joined the channel [04:09] isaacs: stephen_mcd: i see this! [04:09] isaacs: stephen_mcd: server's not up for ssh, either [04:09] isaacs: not sure what's up [04:10] stephen_mcd: :-( [04:10] isaacs: yeah [04:10] polotek: isaacs: isn't it just a couchapp? [04:10] isaacs: polotek: the registry is, yeah [04:10] isaacs: and that's fine [04:10] isaacs: dns isn't down [04:10] polotek: ah [04:10] isaacs: it's just the webhost [04:12] Zebra10 has left the channel [04:13] SubStack: just /finally/ squashed that catch bug in seq [04:13] SubStack: lots of false starts with that [04:14] SubStack: crazy ambitious flow control libs are hard! [04:14] polotek: last time I heard, everyone should just write their own ;) [04:15] SubStack: I agree! [04:16] SubStack: but all of these people are using my lib for stuff so I might as well make sure it works [04:16] SubStack: and by 'all of these people' I mean like 1 or 2 people [04:17] SubStack: oh perhaps 3 I know for sure [04:17] SubStack: no doubt they are just using it in order to steal my ideas for their own flow control libraries [04:17] SubStack: I wouldn't have it any other way [04:19] AAA_awright: Is there any way to calculate a hash of a stream without storing the entire stream? Can I keep streaming data into a SHA1 cipher and have it calculate as much as it can? [04:19] polotek: AAA_awright: that's the idea [04:19] SubStack: AAA_awright: hash.update(data) [04:19] SubStack: in the docs for crypto [04:20] AAA_awright: SubStack: I can keep calling that and it will update the same hash? [04:20] SubStack: "Updates the hash content with the given data. This can be called many times with new data as it is streamed." [04:20] noahcampbell has joined the channel [04:20] SubStack: then you call .digest() when you want the hash, looks like [04:20] AAA_awright: Wow, alright [04:21] AAA_awright: Thanks [04:21] bentruyman has joined the channel [04:23] AAA_awright: ...Wouldn't hash.write make more sense? [04:23] SubStack: agree [04:24] yozgrahame has joined the channel [04:25] jimmyjazz14 has joined the channel [04:27] polotek: AAA_awright: crypto was around before the Stream api was really solidified I think [04:28] HAITI has left the channel [04:34] AAA_awright: Can I only use it once? I thought I could use it more than once... Maybe I can't [04:34] galaxywatcher has joined the channel [04:34] AAA_awright: I thought I did before, I guess I didn't huh [04:35] WarriorSl has joined the channel [04:35] noahcampbell has joined the channel [04:37] skm has joined the channel [04:37] cafesofie has joined the channel [04:39] whyme has left the channel [04:40] sechrist_: what is the best place to buy nodejs merch [04:40] sechrist_: so I can be a walking advertisement [04:43] SubStack: sechrist_: you can tattoo the logo on your forehead [04:44] amerine has joined the channel [04:44] pkrumins: BUMNODEJS [04:48] tomhsx has joined the channel [04:52] tmzt: is there socket.io or websocket compatible lib for flash/as3 that works with node? [04:53] vdrab has joined the channel [04:53] jimmyjazz14 has joined the channel [04:54] konobi: tmzt: socket.io-client probably [04:54] tmzt: thanks [04:54] konobi: http://socket.io/#transports [04:55] tmzt: anybody done node as a backend for a flash game? [04:56] dustinwhittle has joined the channel [04:57] tmzt: oh ok I guess what im asking for is http/ws-like cookie functionality (and host: support) when using flash sockets but Ill do more reading [04:59] overthemike has joined the channel [05:01] sechrist_: SubStack: I'd rather not tattoo just yet [05:01] sechrist_: coffeescript might take over the world -- I need forehead space for that [05:03] SubStack: right [05:04] davidascher has joined the channel [05:05] sechrist_: http://www.redbubble.com/products/configure/5821133-t-shirt [05:05] sechrist_: there's these but I don't want to buy them from a third party [05:08] polotek has left the channel [05:08] dguttman has joined the channel [05:09] m00kie has joined the channel [05:09] AAA_awright: It'll stop short of taking over the world once people realize it reads like Perl [05:09] AAA_awright: ...not that that's a bad thing [05:10] Aria: ....Perl can be read? [05:10] rpbertp13 has joined the channel [05:11] Lorentz: Aria: That's the joke [05:11] Aria: *sigh* I know [05:19] wasabist has joined the channel [05:21] mikeal has joined the channel [05:22] m00kie has left the channel [05:22] jimt has joined the channel [05:28] jimt_ has joined the channel [05:29] dthompson has joined the channel [05:30] warz has left the channel [05:35] matjas has joined the channel [05:39] CrypticSwarm has joined the channel [05:39] perezd has joined the channel [05:47] spetrea_ has joined the channel [05:52] josephhitchens has joined the channel [05:52] amerine has joined the channel [05:53] MikhX has joined the channel [06:00] mayfield has joined the channel [06:03] ashleydev has joined the channel [06:09] mikew3c_ has joined the channel [06:11] JimBastard has joined the channel [06:11] JimBastard: convert this ruby code into node code, go! https://gist.github.com/772298 [06:15] skm has joined the channel [06:16] cafesofie has left the channel [06:17] skm has joined the channel [06:19] vdrab has joined the channel [06:22] amerine has joined the channel [06:23] pyrotechnick: JimBastard: i already did [06:23] JimBastard: pyrotechnick: link? [06:23] pyrotechnick: hold our our shit is still hardcoded [06:24] JimBastard: gist that shite up :-D [06:25] JimBastard: isaacs: ping [06:28] jetienne has joined the channel [06:30] tim_smar1 has joined the channel [06:31] herbySk has joined the channel [06:33] bbttxu has joined the channel [06:35] chrischris has joined the channel [06:40] rsms has joined the channel [06:40] gartenstuhl has joined the channel [06:45] sh1mmer has joined the channel [06:45] sh1mmer: sup [06:45] yozgrahame has joined the channel [06:46] SubStack: bah describing dnode is hard [06:46] SubStack: sh1mmer: ahoy! [06:48] sh1mmer: SubStack: it's not hard [06:48] sh1mmer: it's just RPC, no? [06:48] muhqu has joined the channel [06:48] sh1mmer: scary scary RPC [06:48] SubStack: kind of [06:49] SubStack: it's actually a message passing system I guess because it's async [06:49] SubStack: but you don't pass messages, you call remote functions [06:49] pyrotechnick: RMI [06:49] SubStack: yes sort of [06:49] pyrotechnick: JimBastard: [06:49] pyrotechnick: JimBastard: what should we call this [06:49] pyrotechnick: xp or something? [06:49] SubStack: but also different from RMI [06:49] pyrotechnick: is xp taken by any unix programs? [06:50] JimBastard: pyrotechnick: i dunno, i was trying to think if there were other tools to group it up [06:50] JimBastard: under [06:50] sh1mmer: SubStack: well all RPC is a form of message passing [06:50] JimBastard: you could just use pair i guess [06:50] sh1mmer: SubStack: it's just the async bit that trips people up [06:50] JimBastard: if someone already has the ruby one installed, ohh well [06:50] pyrotechnick: xp is shorter [06:51] pyrotechnick: and not reserved by mac or ubuntu [06:51] pyrotechnick: so i'm sold [06:51] SubStack: sh1mmer: but in how many other rpc systems can you throw around callbacks as parameters? [06:52] sh1mmer: SubStack: how many other RPC systems have javascript end to end? [06:52] SubStack: hah true [06:52] sh1mmer: what about jaxer for example? [06:52] sh1mmer: :P [06:52] sh1mmer: in your fae [06:52] sh1mmer: you didn't think I had one [06:52] SubStack: researching [06:53] tim_smart has joined the channel [06:53] sh1mmer: jaxer was both crazy good and crazy awful at the same time [06:53] JimBastard: http://groups.google.com/group/nodejs/browse_thread/thread/764648024cbf6564 lol [06:54] pyrotechnick: You could write fixed sized files to disk until you ran out of space and got [06:54] pyrotechnick: an error. Then just figure out how many files you wrote and divide. Delete [06:54] pyrotechnick: the files when you are done. [06:54] Aria: Wow. [06:54] pyrotechnick: that's very elegant and efficient [06:54] Aria: Some people will go to any lengths to avoid writing ten lines of C/ [06:54] pyrotechnick: it's not even c or 10 lines [06:54] pyrotechnick: it's 1 line of shell [06:54] JimBastard: :-D [06:55] JimBastard: Aria: someone should write some better C binding tutorials :-( [06:55] Aria: Sure, at the cost of fragile and async and slow. [06:55] Aria: Yea? I might have to one day. [06:55] Aria: (it's a statfs call that they want.) [06:55] SubStack: I want to write C modules without writing any C [06:55] Aria: (A purpose-specific binding would be ten lines includng the boilerplate.) [06:55] mgutz: funny, people argue over how inefficient __defineGetter__ is, yet executing shell is ok [06:56] JimBastard: Aria: im a complete noob in that area, i was starting to ask tmpvar how to write them [06:56] JimBastard: i'd like to get down, i bet there is a shit ton of C code floating around i can write a binding to and release a library out of [06:56] Aria: Indeed. [06:56] SubStack: low-hanging fruit woo [06:57] JimBastard: i picked fruit for a while [06:57] Aria: My C++ (and V8 more specifically) is rough enough that I'm doing some cut-and-paste hackjobbery, but it's really not hard. [06:57] Aria: Ruby's easier to bind, but only a little more so. [06:57] Aria: And still beats Python, which is deceptively easy at first, then bites you like the snake it is. [06:57] SubStack: JimBastard: was the fruit low-hanging? [06:58] SubStack: I only pick low-hanging fruit. So low it's underground. [06:58] JimBastard: SubStack: strawberries and melons are pretty low-hanging [06:58] JimBastard: apples and peaches maybe not so much [06:58] Aria: You mean you're working for peanuts, then, SubStack? [06:58] SubStack: perhaps! [06:58] Aria: ACTION smirks. [06:59] SubStack: when I'm rich I'll get an underground cavern and plant trees [07:00] Aria: Nice. Not just gonna go for a cave in Vietnam? [07:00] SubStack: that might work if I'm only very rich and not insanely rich [07:00] JimBastard: my goal is to be insane AND rich [07:00] SubStack: I will make such a great eccentric rich person, just you watch [07:01] SubStack: how do you even get rich without also being insane? [07:01] jankoprowski has joined the channel [07:01] sonnym has joined the channel [07:01] Aria: Luck? [07:01] Aria: It's rare. [07:01] pyrotechnick: how do i just like [07:02] pyrotechnick: hmm nm [07:03] SubStack: I'm liking "Asynchronous RMI for juggling callbacks" now [07:03] JimBastard: SubStack: inheritance or crime are the preferred methods in the united states [07:04] JimBastard: SubStack: Asynchronous Remove Method Invokation between nodes [07:04] JimBastard: SubStack: Asynchronous Remove Method Invocation [07:04] JimBastard: sounds fancy enough [07:05] SubStack: inheritance, how prototypical [07:05] Aria: Night. [07:05] flippyhead has joined the channel [07:08] B2oba has joined the channel [07:11] mr_daniel has joined the channel [07:20] kriskowal has joined the channel [07:21] admc has joined the channel [07:22] pyrotechnick: JimBastard: you around? [07:23] pyrotechnick: it's really hard in node lol [07:23] pyrotechnick: im done but it's ugly because git locks [07:23] pyrotechnick: it's fine in ruby because it's async [07:23] pyrotechnick: i need a flow library [07:23] JimBastard: yeah im here [07:23] pyrotechnick: what does everyone use? [07:23] SubStack: everyone uses their own! [07:23] SubStack: because they are awesome like that [07:23] JimBastard: Step, or you could make eventemitters [07:23] JimBastard: i saw an actor library around, that looked sick [07:24] SubStack: yeah step is pretty good [07:24] jimt has joined the channel [07:24] JimBastard: hey pyrotechnick i got a hint for you [07:24] JimBastard: you ready? [07:24] JimBastard: are you really ready [07:24] JimBastard: ... [07:24] JimBastard: use the sync methods [07:25] JimBastard: unless you think you'll need to switch pair programming teams at several thousand requests per second [07:25] JimBastard: and even so, that would really matter, since you are spawning up a new node anyway [07:25] JimBastard: ahaha [07:27] pyrotechnick: is there even a sync exec? [07:27] pyrotechnick: haha you're a funny man JimBastard [07:27] pyrotechnick: JimBastard: https://github.com/feisty/xp [07:28] JimBastard: FUCKING COFFEESCRIPT [07:28] JimBastard: lol [07:28] pyrotechnick: just compile it [07:28] pyrotechnick: it's a bit overkill as a project [07:28] pyrotechnick: but i plan to add more tools [07:28] pyrotechnick: so there it is [07:28] JimBastard: does this work? [07:29] pyrotechnick: yep [07:29] pyrotechnick: jsut [07:29] pyrotechnick: xp [07:29] pyrotechnick: resets it [07:29] pyrotechnick: then [07:29] pyrotechnick: xp nr nk [07:29] pyrotechnick: sets it to me and rashleigh [07:29] JimBastard: aight, im gonna fork it and add a new feature [07:29] JimBastard: sound good? [07:29] pyrotechnick: ill give you commit access [07:29] pyrotechnick: wats ur github [07:29] JimBastard: https://github.com/marak [07:30] JimBastard: how do you want to see additional command syntax work [07:30] JimBastard: i was going to add white space removal from files [07:30] JimBastard: does that belong in this tool? [07:31] bmizerany has joined the channel [07:31] pyrotechnick: umm [07:31] yozgrahame1 has joined the channel [07:31] pyrotechnick: hmm [07:31] pyrotechnick: if it changes line endings too then sure [07:31] pyrotechnick: we should rename it maybe [07:31] pyrotechnick: well [07:31] pyrotechnick: i mean [07:31] pyrotechnick: its a part of extreme programming isnt it [07:31] JimBastard: i like xp [07:31] pyrotechnick: yeah me too [07:31] pyrotechnick: okay who cares [07:31] pyrotechnick: we can sort that out later [07:31] pyrotechnick: and yeah [07:31] pyrotechnick: that would be awesome [07:31] skm has joined the channel [07:32] pyrotechnick: r u going to use unix commands or node [07:32] JimBastard: xp -w filename [07:32] JimBastard: xp -w dirpath [07:32] pyrotechnick: nah [07:32] JimBastard: cleans up all whitespace and errant carriage returns [07:32] pyrotechnick: xp w GLOB [07:32] JimBastard: what you thinking then [07:32] JimBastard: what if pair name is w though? [07:32] JimBastard: pair names have to be two letters? [07:32] pyrotechnick: xp pair nk nr [07:32] pyrotechnick: there's no default command now [07:32] JimBastard: 10-4 [07:32] ivanfi has joined the channel [07:32] pyrotechnick: xp will just be a listing or something [07:33] pyrotechnick: wats ur github [07:33] JimBastard: i told you, marak [07:33] pyrotechnick: do u know coffeescript? [07:33] JimBastard: https://github.com/marak [07:33] pyrotechnick: OH U R MARAK? [07:33] pyrotechnick: i already have you [07:33] pyrotechnick: in fact ur watching some of our stuff [07:33] JimBastard: coffeescript aint no thang, ill figure it out [07:33] pyrotechnick: yeah [07:33] pyrotechnick: cool [07:33] pyrotechnick: if u want i can backport it but go nuts if u wanna play with it [07:33] JimBastard: i know some good optimist tricks for CLI tools [07:33] JimBastard: naah, lets keep it in CF, i could use the practice [07:34] JimBastard: im gonna get some food and play with this in a bit [07:35] mikeal has joined the channel [07:35] pyrotechnick: no worries [07:35] pyrotechnick: u have commit access so go nuts mate [07:35] pyrotechnick: ill add the args parser stuff [07:35] pyrotechnick: so u dont have to guess so much [07:36] JimBastard: optimist? [07:36] pyrotechnick: wats that [07:36] pyrotechnick: ohh is that like commander for ruby? [07:36] JimBastard: command args parser by SubStack [07:36] pyrotechnick: hmm [07:36] pyrotechnick: was just going to use coffees [07:36] JimBastard: ive written a few CLI's already [07:36] pyrotechnick: but we might need something more powerful than coffees [07:36] SubStack: rawr [07:36] JimBastard: ohh word [07:36] pyrotechnick: ok ill let you do it then [07:36] AAA_awright: I need to delete a property if its Object is empty, what's the best way to do that? [07:36] JimBastard: i didnt know it had built in [07:36] JimBastard: awesome [07:36] JimBastard: naah, if CF has built in CLI tools i would think use them [07:37] pyrotechnick: nah theyre shit [07:37] pyrotechnick: like they cant do [07:37] pyrotechnick: xp COMMAND FLAGS [07:37] pyrotechnick: u have to have all ur flags before the command [07:37] pyrotechnick: like u cudnt make gits interface in it [07:37] JimBastard: ill figure it out then [07:38] JimBastard: i got some tricks for generating options based on models too [07:38] JimBastard: i might just make an xp model and autogenerate the options for CLI [07:38] pyrotechnick: that's cool [07:38] pyrotechnick: man whatever you think [07:38] JimBastard: aight, brb [07:38] pyrotechnick: nw [07:39] btipling has joined the channel [07:39] SubStack: optimist works with coffee I think [07:39] SubStack: somebody did a patch once for it [07:40] JimBastard: we about to find out [07:42] pyrotechnick: do u care it's on our companies github? [07:43] Blink7 has joined the channel [07:44] ph^ has joined the channel [07:45] okuryu has joined the channel [07:47] felixge has joined the channel [07:49] arlolra has joined the channel [07:53] JimBastard: pyrotechnick: if you want to provide support for it, why not. ill prob keep a fork around my page if we get it to v0.1.0 [07:56] sprout has joined the channel [07:59] kawaz_air has joined the channel [08:01] TomY has joined the channel [08:04] q_no has joined the channel [08:09] whyme has joined the channel [08:11] saikat has joined the channel [08:15] SamuraiJack has joined the channel [08:16] mikeal has joined the channel [08:16] dsirijus has joined the channel [08:20] everzet has joined the channel [08:22] easternbloc has joined the channel [08:26] Druid_ has joined the channel [08:27] augustl has joined the channel [08:31] JimBastard: pyrotechnick: you around? [08:31] pyrotechnick: yes [08:32] JimBastard: i might have some CF questions for you, i gotta convert a bit of code [08:32] JimBastard: im working on it now [08:32] pyrotechnick: ask in #coffeescript [08:32] JimBastard: whats the fun in that when i can bother you :-) [08:32] pyrotechnick: i mean [08:32] pyrotechnick: ask me [08:32] pyrotechnick: in coffeescript [08:37] [AD]Turbo has joined the channel [08:37] mikeal has joined the channel [08:37] [AD]Turbo: hi there [08:38] pyrotechnick: hi [08:39] virtuo has joined the channel [08:40] jimt has joined the channel [08:40] jetienne has joined the channel [08:42] AAA_awright: Is there any way to do file locking? [08:42] vdrab has joined the channel [08:44] peritus_ has joined the channel [08:45] peritus_ has joined the channel [08:45] coffee has joined the channel [08:46] pyrotechnick: yes AAA [08:46] jetienne_ has joined the channel [08:46] lightharut has joined the channel [08:46] jankoprowski has joined the channel [08:47] AAA_awright: Great, is it native to Node.js or some library? [08:47] pyrotechnick: well [08:47] pyrotechnick: i'm not sure how unix locks work, im not sure it even has them since it has "lockfiles" [08:48] AAA_awright: Yes, it's specified in the POSIX standard [08:48] pyrotechnick: then try the fs module [08:48] AAA_awright: Nothing [08:48] pyrotechnick: otherwise call out to the program that can do it [08:48] pyrotechnick: and file a bug [08:48] pyrotechnick: if its POSIX [08:48] pyrotechnick: node should be able to do it [08:48] AAA_awright: People use lockfiles because it works on Windows or because it's a shell script which doesn't support it, or it's just too complex to read and parse out if you want to lock a certain range of the file [08:49] AAA_awright: er [08:50] AAA_awright: That would be a reason to use them, if it's anything more than an empty file [08:50] xla has joined the channel [08:50] pyrotechnick: i know what locking files and lockfiles are lol [08:54] ttpva has joined the channel [08:55] fangel has joined the channel [08:57] romainhuet has joined the channel [08:58] aklt has joined the channel [08:59] glenngillen has joined the channel [08:59] kawaz_air has joined the channel [09:00] ntelford has joined the channel [09:01] mikedeboer has joined the channel [09:01] ntelford has joined the channel [09:04] jbpros has joined the channel [09:06] adambeynon has joined the channel [09:10] guid_ has joined the channel [09:11] saschagehlich has joined the channel [09:13] derren13 has joined the channel [09:15] JimBastard has joined the channel [09:16] mikedeboer_ has joined the channel [09:16] ewdafa has joined the channel [09:20] glenngillen has left the channel [09:20] mikedeboer has joined the channel [09:23] mikedeboer has joined the channel [09:24] kawaz_air has joined the channel [09:25] glenngillen has joined the channel [09:26] glenngillen has left the channel [09:30] d0k has joined the channel [09:32] pdelgallego has joined the channel [09:34] sinisa has joined the channel [09:34] sinisa: hello [09:35] sinisa: can i use 2 http servers inside one app .. listening on a different ports [09:36] pkrumins: yep [09:38] sinisa: can cygrunsrv be used to start exe in a win as web service (outside cygwin, with cygwin1.dll) [09:40] q_no has joined the channel [09:40] echosystm has joined the channel [09:44] altamic has joined the channel [09:44] geeks_bot has joined the channel [09:48] sinisa has left the channel [09:50] kawaz_air has joined the channel [09:52] bzinger has joined the channel [09:53] JimBastard_ has joined the channel [09:53] JimBastard_: hey SubStack you alive [09:54] SubStack: yep [09:54] JimBastard_: so like, if i want to use optimist to do something like [09:55] JimBastard_: actually i got it nm [09:55] unlink has left the channel [09:55] JimBastard_: i just gotta enforce a convention with args._ is an array [09:55] JimBastard_: that solves it [09:55] JimBastard_: lol sorry [09:55] kawaz_air has joined the channel [09:55] SubStack: isn't args._ always an array? [09:55] SubStack: or argv at least [09:56] JimBastard_: yeah [09:56] JimBastard_: i was just being dumb [09:56] Garo_: is it possible to discard results in the finalize function in a mapreduce? [09:56] chapel: hey JimBastard_, you see duostack? [09:57] JimBastard_: chapel: yeah [09:57] chapel: your thoughts? [09:57] jbergstroem: buildbot crew: would ccache be an issue? [09:57] Garo_: I'm doing a basic m/r where I emit "count : 1" for each key and then I sum the counts in reduce. then I'd like to filter out all results which have count less than 100. I'm thinking I could do this in finalize phase but I'm not sure [09:58] Garo_: oops, wrong channel [09:58] felixge: SubStack: optimist looks really nice, hadn't seen it yet [10:00] SubStack: ^_^ [10:00] SubStack: oh and commander for ruby looks pretty sweet too [10:00] SubStack: perhaps I shall build something on top of optimist like it for node [10:00] SubStack: unless JimBastard_ is already on the case [10:01] JimBastard_: what does that one do again [10:01] JimBastard_: pyrotechnick: i pushed to xp, wanna check it out? [10:01] JimBastard_: i got the basic CLI stuff fleshed out [10:03] SubStack: what is an xp? [10:03] JimBastard_: its suppose to be extreme programming [10:03] JimBastard_: im not sure im amped on the name [10:04] SubStack: xtreem [10:04] SubStack: sounds fun [10:05] SubStack: I haven't done pair programming in forever [10:05] pyrotechnick: JimBastard_: checking it now [10:05] pyrotechnick: was skyping a friend [10:05] chapel: http://blog.danielwellman.com/2008/10/real-life-tron-on-an-apple-iigs.html [10:06] virtuo has joined the channel [10:07] jbergstroem: buildbot crew: could you force a rebuild on "32bit linux" [10:07] JimBastard_: you see how this works pyrotechnick ? this way its like a framework for tools to be called through the CLI. we can also programmatically call any of the tool methods now since they are decoupled from the CLI [10:08] leepa has joined the channel [10:08] JimBastard_: SubStack: https://github.com/feisty/xp [10:09] JimBastard_: ohhh oops [10:09] JimBastard_: i didnt update pair.coffee yet [10:09] JimBastard_: fail [10:09] pyrotechnick: fail [10:09] JimBastard_: fixing now [10:09] pyrotechnick: lucky i havent bothered looking yet [10:09] pyrotechnick: or i might have been dissapointed [10:09] JimBastard_: lol [10:11] skm has joined the channel [10:13] JimBastard_: pyrotechnick: fixed [10:15] JimBastard_: now lets see if i can get that whitespace tool [10:15] kawaz_air has joined the channel [10:16] romainhuet_ has joined the channel [10:17] JimBastard_: does anyone have that snippet around? [10:17] romainhuet_ has joined the channel [10:21] altamic has joined the channel [10:23] kawaz_air has joined the channel [10:24] Gruni has joined the channel [10:26] stagas: JimBastard: whitespace strip? [10:26] JimBastard_: stagas: yeah [10:26] JimBastard_: removes empty lines [10:26] JimBastard_: i think some other magic too, i cant find the code i had [10:26] JimBastard_: the guys at pivotal use it [10:26] JimBastard_: but i want to make in coffeescript instead [10:26] JimBastard_: im making a lines of code tool now [10:27] sebs has joined the channel [10:32] pdcawley` has joined the channel [10:36] Ori_P has joined the channel [10:36] saschagehlich_ has joined the channel [10:36] markwubben has joined the channel [10:36] pyrotechnick: JimBastard_: hell yeah [10:37] pyrotechnick: JimBastard_: you last message was from and and [10:37] pyrotechnick: JimBastard_: your last commit [10:38] JimBastard_: lol i should reset that [10:38] JimBastard_: stupid xp tool [10:38] pyrotechnick: yeah xp is so shitty [10:38] pyrotechnick: i bet the authors like [10:39] pyrotechnick: cant even write code [10:39] pyrotechnick: i bet they write coffeescript [10:40] Country has joined the channel [10:41] common- has joined the channel [10:45] fgnass has joined the channel [10:45] dsirijus has joined the channel [10:47] fabian__ has joined the channel [10:50] crohr has joined the channel [10:51] fly-away has joined the channel [10:54] tanepiper: i really tried to like coffeescript [10:55] SubStack: I haven't messed with it yet [10:55] SubStack: so much stuff backed up in my "I should mess with this" queue [10:57] void_ has joined the channel [10:59] tanepiper: i recommend poping that queue - that's how i finally got round to using DNode ;) [11:03] SubStack: hmm perhaps! [11:03] SubStack: I think couch is a little more pressing though [11:04] tanepiper: yea, i'm really getting into couch now - learned about _list and _update methods recently, they rock :) [11:04] skm has joined the channel [11:06] chapel: heh [11:06] bartt1 has joined the channel [11:06] chapel: map reduce was fun for me [11:06] chapel: challenging at first [11:06] chapel: but once I understood btrees and such [11:07] chapel: made is click in my head [11:08] tanepiper: yea, combining map/reduce with views and then lists was challenging, but your right that once it clicks it's easier [11:08] aerios has joined the channel [11:09] tanepiper: and what i love is that i can take that JSON, and pump it directly to the client side [11:09] siong1987 has joined the channel [11:09] tanepiper: no fannying about with json modules or converting types [11:10] JimBastard_: boom https://github.com/feisty/xp [11:13] pao has joined the channel [11:14] pao: hi all, is there anything like python's id() in node? [11:14] pao: http://docs.python.org/library/functions.html#id [11:17] xla has joined the channel [11:18] tanepiper: not really, objects in javascript don't have ids unless you set one as a parameter [11:18] pao: tanepiper, thanks [11:19] tanepiper: so you could do something like this: [11:19] tanepiper: var foo = {id: 3423423423432"} [11:19] tanepiper: function id(obj) { return obj.id } [11:20] JimBastard_: pyrotechnick: got the LoC tool working with globs, https://github.com/feisty/xp/blob/master/lib/tools/loc.coffee [11:20] pao: what I need is to handoff an async http call to an external process, [11:21] JimBastard_: what other tools can we add besides pair, loc, and ws [11:21] felixge: pao: I wish JS had id() [11:22] pao: tanepiper, i wanted to handle map id(response) -> response obj in order to match the external process response to the response to be ended() [11:22] felixge: JimBastard_: I wouldn't mind having: xp writeMyCode [11:22] felixge: JimBastard_: :) [11:22] pao: tanepiper, i wanted to handle map id(response) to response obj in order to match the external process response to the response to be ended() [11:22] SubStack: pao: could you generate a random id? [11:23] tanepiper: pao: you could generate some transaction id at the start of the async call and store it in a hash [11:23] JimBastard_: felixge: lol wut [11:23] tanepiper: then at the end of the process return with the transaction id that the process is done [11:23] pao: SubStack, tanepiper: yep, I'll get away with an "auto increment" id [11:23] SubStack: that works too [11:24] pao: SubStack, tanepiper, thanks for your help [11:24] JimBastard_: felixge: come on, you must have some leet agile trick you do command line [11:24] JimBastard_: ;-) [11:25] felixge: JimBastard_: I was expecting the 'pair' command to setup a remote pair programming session using tmux and ssh tunneling :) [11:25] SubStack: JimBastard_: writeMyCode could submit a project to some freelance site and terminate once the deliverables are complete [11:26] JimBastard_: felixge: is that like shared terminals? [11:26] JimBastard_: im looking at http://tmux.sourceforge.net/ now [11:26] felixge: JimBastard_: yeah [11:26] felixge: JimBastard_: tmux is like screen [11:26] SubStack: oh hmmm perhaps I can integrate git push with telescreen [11:26] felixge: JimBastard_: but with much better window/split support [11:26] JimBastard_: we could do that felixge [11:27] JimBastard_: but i'd need the node bindings [11:27] felixge: JimBastard_: you essentially need a server that both parties have ssh access to [11:27] JimBastard_: felixge: you could forward ports or do it on a lan no? [11:28] JimBastard_: if you need a server its kinda weak sauce [11:28] felixge: JimBastard_: if you can directly connect the two clients you don't need a ssh tunnel [11:28] felixge: JimBastard_: but if there are firewalls / NAT / etc. ssh tunneling is the best way to go [11:29] felixge: JimBastard_: anyway, if I feel like working on that i'll submit a patch [11:29] JimBastard_: cool, i setup a plug system for tools [11:29] tanepiper: SubStack: pair shared cloud9 screen over stackvm! [11:29] felixge: would be fun to do: xp pair host my_server [11:29] JimBastard_: so you just drop in a .coffee file and it works [11:30] JimBastard_: plugin* [11:30] felixge: JimBastard_: Not sure if Coffeescript is my kind of thing. You know I like my coffee black. And coffeescript comes with all kinds of sugar [11:30] felixge: :) [11:30] JimBastard_: its not so bad [11:30] felixge: It should really be called SugarScript [11:30] JimBastard_: i can justify it for this [11:31] tanepiper: felixge: indeed [11:31] felixge: I think it insults the serious coffee drinkers :) [11:31] felixge: JimBastard_: I think it's quite cute as well [11:31] herbySk has joined the channel [11:31] tanepiper: I call it MalassisScript [11:31] JimBastard_: i get really scared of the people who will CF before JS though [11:31] JimBastard_: that is scary [11:31] JimBastard_: who will learn* [11:31] JimBastard_: fuck i need sleep [11:31] SubStack: it's hard to not learn javascript [11:31] SubStack: ACTION needs sleep too [11:32] tanepiper: once tried to learn CF, ended up learning PHP instead D: [11:32] JimBastard_: i wanna implement this whitespace tool, i just cant remember the proper logic [11:32] tanepiper: that's like wining the ugliest penis contest [11:32] felixge: JimBastard_: My problem with CoffeeScript is that I just don't trust the implementation [11:32] JimBastard_: do you just remove any lines that are empty following a carriage return? [11:32] JimBastard_: felixge: what do you mean? [11:34] tanepiper: talking about coffee, better go brew up the aeropress [11:34] felixge: JimBastard_: I mean that I'm scared I might loose hours to debug some glitches in coffescript [11:34] JimBastard_: felixge: when jashkenas says its 1.0 i believe him [11:34] JimBastard_: ive met the man, i have faith [11:35] JimBastard_: but yeah [11:35] JimBastard_: i think its good for a pluggable tool collection like xp [11:35] JimBastard_: i wouldnt use CF for the core nodejitsu production stack [11:35] felixge: JimBastard_: I didn't know it's 1.0 yet [11:35] felixge: JimBastard_: but anyway, when it comes to sugar like this I like to think of myself as a late adopter :) [11:35] felixge: I do want to play with it at some point so [11:36] JimBastard_: try out xp, make a tool [11:36] JimBastard_: will be a really easy start [11:36] ROBOd has joined the channel [11:36] DoNaLd` has joined the channel [11:44] pyrotechnick: felixge: coffee is like sugar [11:44] pyrotechnick: but we want to bake cakes [11:47] pietern has joined the channel [11:49] sechrist has joined the channel [11:51] sechrist: http://news.ycombinator.com/item?id=2087417 if you guys haven't seen this [11:52] tanepiper: the cake is a lie [11:53] sechrist: I am currently reliving 1998 in a browser [11:53] sechrist: charmander char char [11:54] sechrist: NODEJS used tackle! [11:55] fermion has joined the channel [11:55] tanepiper: jigglypuff [11:56] sechrist: http://i.imgur.com/XMxmz.png [11:56] sechrist: wooo [11:57] zomgbie has joined the channel [11:57] pyrotechnick has joined the channel [11:57] wao: :D [11:58] sechrist: I named my character ryan and gary ruby [12:03] pgte has joined the channel [12:04] dexteorus has joined the channel [12:05] svnlto has joined the channel [12:05] coffee has joined the channel [12:06] JimBastard_: coffee: ((v,i) -> fs.readFile v, (err, data) ->)(v,i) [12:06] coffee: (function(v, i) { [12:06] coffee: return fs.readFile(v, function(err, data) {}); [12:06] coffee: })(v, i); [12:06] iszak has joined the channel [12:08] MattJ has joined the channel [12:09] mikew3c_ has joined the channel [12:11] dexteorus has left the channel [12:15] felixge_ has joined the channel [12:16] nook has joined the channel [12:17] jimt has joined the channel [12:17] altamic has joined the channel [12:20] siong1987 has joined the channel [12:29] MikhX has joined the channel [12:30] crodas has joined the channel [12:33] hlindset has joined the channel [12:38] herbySk has joined the channel [12:40] jetienne_: :) [12:40] jetienne_: lisp to js ftw! [12:45] Sembiance: jetienne_: ? [12:46] jetienne_: just a (bad) joke [12:49] MattDiPasquale has joined the channel [12:53] arpegius has joined the channel [12:53] daveyjoe has joined the channel [12:55] zomgbie has joined the channel [12:57] crohr_ has joined the channel [12:58] pagameba has joined the channel [12:59] Country has joined the channel [13:01] jtsnow_ has joined the channel [13:05] bentruyman has joined the channel [13:05] charlenopires has joined the channel [13:06] svnlto has joined the channel [13:07] lukegalea has joined the channel [13:08] c4milo has joined the channel [13:11] kriskowal has joined the channel [13:14] w0rse has joined the channel [13:17] zorzar has joined the channel [13:26] siculars has joined the channel [13:28] cwo has joined the channel [13:33] yumike has joined the channel [13:43] linac has joined the channel [13:43] altamic_ has joined the channel [13:45] lxtdesign has joined the channel [13:45] lxtdesign: hi [13:47] pagameba: lxtdesign: hi :) [13:47] lxtdesign: hey. i'm looking for some help with a Joyent Node Smartmachine [13:47] lxtdesign: anyone to help around here ? :D [13:49] squeek: Just ask, surely someone will appears out of the cracks and speak up. [13:51] lxtdesign: well, i have troubles with ssh login on my new node smartmachine, if anybody can help, i;d appreciate it :) [13:51] case__: i have troubles too [13:51] case__: my node's ssh key seems to have changes, making ssh cry to death [13:52] case__: s/changes/changed/ [13:52] case__: haven't investigated further since i don't realy use it [13:52] lxtdesign: basically i link my ssh key and it still asks for a password that i don;t have :/ [13:52] case__: sorry can't help [13:53] lxtdesign: well i just got this free account finally approved, and so far it;s not working which doesn't entice me to get a paid account :S [13:53] stepheneb has joined the channel [13:53] lxtdesign: ok i understand [13:53] lxtdesign: well i sent a mail to support we'll see how fast they react [13:53] lxtdesign: thank anyway :D [13:54] tokumine has joined the channel [13:56] hornairs has joined the channel [13:59] lxtdesign has joined the channel [13:59] lxtdesign has left the channel [14:01] jimt_ has joined the channel [14:02] fumanchu182 has joined the channel [14:02] mAritz has joined the channel [14:04] matjas has joined the channel [14:05] matjas: is http://search.npmjs.org/ broken? doesn't seem to show up-to-date results [14:08] jimt has joined the channel [14:08] svenlito has joined the channel [14:15] pHcF has joined the channel [14:17] jbpros has joined the channel [14:17] xjrn has joined the channel [14:18] xjrn: i have seen a lot about node.js running in v8, is there a rhino/java node.js option ? [14:18] matjas has joined the channel [14:19] dsirijus has joined the channel [14:19] dspree: xjrn: nope, they're closely coupled [14:19] ncursestest has joined the channel [14:19] xjrn: if not, can node.js launch the jvm as a dll for me and pass buffers in and out ? [14:19] ncursestest: /nick [14:23] case__: xjrn, http://nodejs.org/docs/v0.3.4/api/child_processes.html [14:24] case__: but that's not "as a dll" [14:24] p0ns has joined the channel [14:25] p0ns: hello everyone, anyone has an idea on how would it be the best way to know if any files on a directory are being actively modified? i've tried the fs.stat function, but there's no sleep to delay its execution [14:25] xjrn: not having rhino js eval kinda spoils the sauce for me i think. the idea was to sidestep gwt requestfactory with node.js processor inside of rhino using JPA [14:26] case__: xjrn, sorry i'm only understanding half of your words [14:26] p0ns: i'm wondering around the case of an ftp file upload, and i want to know if the files are being uploaded or the upload finished already [14:26] xjrn: case__: no worries. im replacing a gwt backend with non servlets. [14:27] dspree: p0ns: maybe something like node-inotify? https://github.com/c4milo/node-inotify [14:27] Ari-Ugwu has joined the channel [14:27] case__: p0ns, it highly depends on the OS you're running on i think [14:27] case__: yes for linux it's all about inotify [14:27] p0ns: it's all linux [14:27] p0ns: i'm developing on mac but it shouldnt be a problem [14:28] case__: so inotify is the way to go [14:29] hornairs has joined the channel [14:31] p0ns: thanks case__ [14:31] p0ns: it was just what i was looking for [14:31] case__: thank dspree then :) [14:32] dspree: no worries [14:32] hornairs has joined the channel [14:32] Sembiance: mmm... node.js for the win! [14:32] femtoo has joined the channel [14:33] lightharut has joined the channel [14:33] p0ns: ooh well thanks dspree [14:33] p0ns: sorry i missed your nick [14:33] dspree: np [14:33] ashleydev has joined the channel [14:34] p0ns: i just figured it out, inotify bindings are not available on mac, at least by default [14:34] figital has joined the channel [14:34] case__: inotify is linux only [14:34] case__: it's system specific [14:34] case__: each OS has it's own way to report FS activity [14:34] p0ns: damn it [14:35] kkaefer: p0ns, case__: mac os x has fsevents [14:36] squeek: It's also got a broken kqueue implementation but let's not discuss that topic. [14:36] case__: btw an abstraction layer in nodejs (or a module) for the 3 relevant oses (+ *solaris ;p) would be great. [14:38] Tidwell has joined the channel [14:38] bentruyman has joined the channel [14:39] amacleod has joined the channel [14:40] ben_alman has joined the channel [14:45] cyraxx has joined the channel [14:46] Fullmoon has joined the channel [14:47] djanowski has joined the channel [14:48] boaz has joined the channel [14:48] crohr has joined the channel [14:49] davidsklar has joined the channel [14:53] kawaz_air has joined the channel [14:54] Druid_ has joined the channel [14:56] MattJ has joined the channel [14:58] davglass has joined the channel [15:04] sivy has joined the channel [15:07] JimBastard has joined the channel [15:16] paulrobinson has joined the channel [15:17] herbySk has joined the channel [15:17] jherdman has joined the channel [15:18] chrischr_ has joined the channel [15:19] EyePulp has joined the channel [15:19] nonnikcam has joined the channel [15:21] ewdafa has joined the channel [15:21] djanowski has joined the channel [15:21] eee_c has joined the channel [15:26] muhqu_ has joined the channel [15:26] charlenopires has joined the channel [15:27] jimt_ has joined the channel [15:30] bentruyman has joined the channel [15:33] altamic has joined the channel [15:35] sriley has joined the channel [15:37] lightharut: I have node.js in a middle and C++ server at the backend. What I needed is to send a request from node.js to the C++ server. Which command can I use for it? [15:37] charlenopires_ has joined the channel [15:38] jpld has joined the channel [15:38] jpld has joined the channel [15:38] blowery: lightharut: that's a bit like saying you have a horse, how can i get to the moon [15:38] blowery: lightharut: what protocol does the c++ server speak? [15:38] tapwater has joined the channel [15:38] lightharut: TCP. [15:39] blowery: what protocol on top of tcp? [15:39] squeek: Sometimes the tao need not reach all the way to level 7. [15:40] lightharut: I don't know it is simple listen to the sockets on the port 1200. So If I send the request from the browser. http://127.0.0.1:1200/test it is received. [15:40] JusticeFries has joined the channel [15:40] danoyoung has left the channel [15:40] lightharut: So I need to send something from the node.js instate of browser do that. [15:40] jimt has joined the channel [15:41] blowery: you can either use the socket classes or the http client, if you need to speak http [15:41] aconbere has joined the channel [15:41] shinmei has joined the channel [15:41] jdalton has joined the channel [15:41] jdalton has left the channel [15:41] blowery: net.Socket would be a good starting point [15:42] blowery: http://nodejs.org/docs/v0.3.4/api/net.html#net.Socket [15:42] ashleydev has joined the channel [15:43] EyePulp has joined the channel [15:44] JimBastard: does anyone see whats wrong with this request? https://gist.github.com/772923 [15:44] JimBastard: i cant seem to get my post request to work right with this rails web-service [15:44] JimBastard: i think its the nested variables [15:47] [[zz]] has joined the channel [15:49] x_or has joined the channel [15:50] bradleymeck has joined the channel [15:51] stepheneb has joined the channel [15:54] Vertice has joined the channel [15:55] kriskowal has joined the channel [15:56] case__: has someone experienced transmiting binary data in a websocket ? [15:56] pdelgallego has joined the channel [15:58] sveisvei has joined the channel [15:59] Ari-Ugwu has joined the channel [16:00] bzinger has joined the channel [16:01] jetienne has joined the channel [16:01] sonnym has joined the channel [16:02] softdrink has joined the channel [16:03] bradleymeck: anyone know of a way to test if a machine goes offline? (can be c++, but pref from inside node) [16:03] case__: quite tricky [16:04] EyePulp: bradleymeck: which machine is doing the testing? the online one or the offline one? [16:04] pzich: haha [16:04] EyePulp: pzich: it's not the dumbest question =P [16:05] bradleymeck: test when a host loses wifi/ethernet w/e, doesnt need a second machine involved [16:05] case__: bradleymeck, but if your router goes offline you will never notice... [16:05] russ_nyc has joined the channel [16:05] bradleymeck: an acceptable case for me [16:06] case__: ho ok [16:06] case__: well, it depends of the OS i think [16:06] EyePulp: bradleymeck: it requires the absence of something you can rely on existing at the other end, which means a second *something* [16:07] EyePulp: testing for a negative and all that. [16:07] russ_nyc: hi all, im new to node. I would like to know if there is a way to create a global object in a require file. for instance if I do require('my_object') then it should create some globally accessible objects. is this possible? [16:07] bradleymeck: yea, just going to have to try pinging stuff on interval i guess [16:07] EyePulp: bradleymeck: in your case you're trying to use an ostensibly reliable machine to externally test and see if another machine is running, yes? [16:07] bradleymeck: russ_nyc, yes but it is ill advised [16:08] russ_nyc: why is it not advised? is there spome performance issues related? [16:08] pdelgallego has joined the channel [16:08] bradleymeck: there are colision issues if people do that [16:08] bradleymeck: look at php [16:08] russ_nyc: i see [16:09] EyePulp: russ_nyc: I think the convention is to export the thing you want available, then set a variable in your main app.js -- var foo = require('./yourmodule').bar; [16:09] bradleymeck: eyepulp i was trying to cache data in an offline mode and when it comes back online resync, but i guess just throwing out requests is fine [16:10] russ_nyc: EyePulp: thanks, i assumed this was the case. [16:10] bradleymeck: only time i ever use globals is with config [16:10] Phyllio has joined the channel [16:10] ceej has joined the channel [16:11] case__: once again: has someone experienced transmiting binary data in a websocket ? [16:11] russ_nyc: that is another good reason. how can I do this? i find it cumbersome to pass around my config object everywhere [16:11] hij1nx has joined the channel [16:11] bradleymeck: global.config = {debug:true} [16:12] russ_nyc: bradleymeck: thanks so much, i didnt realize it was that easy [16:12] JimBastard: hey bradleymeck, do you know any good agile development scripts or tricks? would like to add to https://github.com/marak/xp [16:12] EyePulp: bradleymeck: we have an issue similar to that. a series of servers collecting data, and they keep a local log of the last time they have individually been caught up with a centralized collection DB. The central location tries to collect on a regular basis, but if the connect fails, the remote boxes don't get a log entry and we automatically re-try an hour later on the normal schedule. [16:12] gJ|Alex has joined the channel [16:13] jherdman has joined the channel [16:15] saschagehlich_: how can I reset my fork to the current state of the original repository? [16:16] bradleymeck: JimBastard, hmmmm scripts? i use history a lot when i pull. For tricks, keep a user story list somewhere [16:16] bradleymeck: eyepulp yea, it works but is less than ideal oh well [16:16] JimBastard: what do you mean history? [16:16] JimBastard: git log ? [16:17] bradleymeck: file history with whatever i am using at the time [16:17] briznad has joined the channel [16:17] bradleymeck: git tfs svn w/e [16:17] danielrmz has joined the channel [16:17] bradleymeck: saschagehlich git reset HEAD? [16:18] danielrmz has joined the channel [16:19] dnolen has joined the channel [16:23] saschagehlich_: bradleymeck: well, that just removes my last commit. I would like to set my fork's state to the original repository's state [16:27] matt_c has joined the channel [16:27] bradleymeck: so you want to get to where you branched off master? [16:28] bradleymeck: http://stackoverflow.com/questions/1527234/finding-a-branch-point-with-git <- [16:30] strmpnk_ has joined the channel [16:31] hobodave has joined the channel [16:32] isaacs has joined the channel [16:33] brianm has joined the channel [16:35] lakin has joined the channel [16:37] eazyigz has joined the channel [16:39] strmpnk__ has joined the channel [16:39] daniellindsley has joined the channel [16:40] daniellindsley has joined the channel [16:41] w0rse has joined the channel [16:41] sprout has joined the channel [16:44] jmar777 has joined the channel [16:46] case__: is it hard to fix a v0.2.x module for v0.3.x ? [16:46] robotarmy has joined the channel [16:48] pjackson has joined the channel [16:48] arpegius has joined the channel [16:48] d0k has joined the channel [16:48] pjackson: Can someone tell me which redis client they would recommend? Am I right in thinks node_redis is the way to go? [16:49] robotarmy has joined the channel [16:49] jakehow has joined the channel [16:51] JimBastard: pjackson: ranney's one i think [16:51] pjackson: JimBastard: Yea, that's node_redis. Ta. [16:53] heavysixer has joined the channel [16:55] dspree has joined the channel [16:56] dspree has joined the channel [16:56] bradleymeck: case__ in general no, but you do need to know what changed around sys->utilities and a couple minor changes [16:58] case__: bradleymeck, in fact i've a module which doesn't compile because it doesn't find some of the node::Buffer fields... [16:58] case__: http://pastebin.com/LQusyM2H [16:58] Max-Might has joined the channel [16:59] jpld has joined the channel [16:59] jpld has joined the channel [17:00] yozgrahame has joined the channel [17:01] dspree has joined the channel [17:02] bradleymeck: case__ yea... c++ will generally break across x.y [17:06] bradleymeck: what do people think about protocols inside of require? for example zip://file.zip:myfile.js , probably overkill for the normal require, but perhaps one of the module loaders ontop of it supports this? [17:06] case__: bradleymeck, in fact these fields are now private... [17:09] dguttman has joined the channel [17:09] bradleymeck: case__ seems static functions are how they are being replaced if you read node_buffer.h [17:09] hornairs has joined the channel [17:09] case__: bradleymeck, yes i'm trying that but i'm not sure to understand everything [17:10] EGreg has joined the channel [17:10] soniczen has joined the channel [17:10] EGreg: hi people [17:11] p0ns has joined the channel [17:12] amerine has joined the channel [17:12] EGreg: hey guys [17:12] EGreg: and girls [17:14] case__: ok, i've fixed some of the errors but here i'm lost :/ [17:14] case__: Buffer *buf = ObjectWrap::Unwrap(args[0]->ToObject()); [17:14] case__: switch (msgpack_unpack(buf->data(), buf->length(), &off, &mz._mz, &mo)) { [17:14] bentruyman has joined the channel [17:15] Kryckan has joined the channel [17:25] stagas has joined the channel [17:30] sechrist has joined the channel [17:31] flippyhead has joined the channel [17:35] aklt has joined the channel [17:37] q_no has joined the channel [17:37] sprout has joined the channel [17:37] piscisaureus has joined the channel [17:37] heavysixer has joined the channel [17:39] sveisvei has joined the channel [17:39] mbrochh has joined the channel [17:39] mbrochh has joined the channel [17:39] jchris has joined the channel [17:39] sudoer has joined the channel [17:42] steffkes has joined the channel [17:43] eee_c has joined the channel [17:45] karboh has joined the channel [17:49] tyfighter has joined the channel [17:52] jetienne has joined the channel [17:53] aconran has joined the channel [17:55] noahcampbell has joined the channel [17:56] hornairs has joined the channel [17:56] qFox has joined the channel [17:57] qFox has joined the channel [17:57] montylounge has joined the channel [17:58] bitdrift has joined the channel [18:00] Evet has joined the channel [18:00] broofa has joined the channel [18:00] polotek has joined the channel [18:00] mattly has joined the channel [18:02] matt_c_ has joined the channel [18:04] matt_c has joined the channel [18:04] djanowski has joined the channel [18:07] sh1mmer has joined the channel [18:09] mikew3c_ has joined the channel [18:11] daniellindsley has joined the channel [18:14] yozgrahame has joined the channel [18:17] sechrist has joined the channel [18:18] elijah-mbp has joined the channel [18:20] zedas has joined the channel [18:21] jamesarosen has joined the channel [18:21] bartmax has joined the channel [18:21] bartmax has joined the channel [18:21] CrabDude has joined the channel [18:22] bartmax: hi ppl! I have a super dupper question :) 'Is it node.js and 'eventually' any nosql db good/practical for an ecommerce AND is there any (i don't mind simple/basic) example of a proto-ecommerce done with nosql ? What are the benefits to get into node.js and/or nosql development for an ecommerce site? [18:23] sechrist: you make no sense [18:23] sechrist: but i'm trying to comprehend it [18:23] sechrist: you want to use node.js for ecommerse ? [18:23] bartmax: women tells me that A LOT! :D [18:23] djanowski_ has joined the channel [18:23] sechrist: I wouldn't even try [18:23] bartmax: if want to know if it's worth it, why, and if there's an example. [18:23] sechrist: unless you want to be pretty daring and write a lot of cool modules yourself [18:23] lakin has joined the channel [18:24] sechrist: in 6 months it'll probably be super easy [18:24] sechrist: with some huge ecommerce system written on top of express and jade [18:24] sechrist: doesn't exist yet [18:24] WarriorSl has joined the channel [18:24] stride: evening guys [18:24] trotter has joined the channel [18:24] sechrist: because well, unless you're going to use websockets/comet for your shopping carts [18:24] bartmax: I don't want a 'aldready made ecommerce' (dont want a magento-like). I do develope my own ecommerce site. [18:24] sechrist: there's not much of a scale problem ecommerce has imo [18:25] sechrist: oh, nothing is stopping you [18:25] sechrist: but you might find you'll spend a good amount of time working on whatever modules you pick to use [18:25] Aikar: whats the openssl devel package name for debian? ive tried openssl-dev and libopenssl [18:25] sechrist: which, the total development time may be less than you would to do it in something else still [18:25] sechrist: since node.js makes a lot of tasks super simple [18:26] bartmax: sechrist: which tasks do you think will be 'hell' right now? [18:26] stride: Aikar: openssl-devel iirc [18:26] tanepiper: libssl-dev [18:26] sechrist: bartmax: if you use some payment processor [18:26] stride: or libssl-dev, [18:26] sechrist: probably not too much [18:26] stride: tanepiper: o// [18:26] stride: :) [18:26] mjr_ has joined the channel [18:26] jewgonewild has joined the channel [18:26] Aikar: stride: was libssl-dev [18:26] tanepiper: i've build node enough times on test VM's :) [18:27] sechrist: at this state in node though, I wouldn't use it for ecommerce yet [18:27] hornairs has joined the channel [18:27] bartmax: sechrist: if I use payment processor (i use lots) is it good or bad on node ? [18:27] webr3 has joined the channel [18:27] sechrist: your question isn't simple [18:27] bartmax: i can imagine [18:27] sechrist: so you're not going to get any answers out of anybody that don't have "depends" in them [18:27] stride: tanepiper: always debian? we're using centos almost everywhere currently [18:27] sechrist: the best thing would be to check out the node blogs [18:27] tanepiper: stride: yea, ubuntu 10.04 server, mainly because it's easy [18:27] brianc: i believe braintree has node.js client library [18:27] sechrist: look at the modules list on github [18:28] sechrist: and play around [18:28] tanepiper: i just need to install some simple deps, build node and create upstart script [18:28] sechrist: control flow is probably what you should really grasp if you're new to node [18:28] sriley: tbh i'd always recommend a payment portal [18:28] bartmax: sechrist: I'll do that, i played a little still think i need some more 'weight' feedback. taking node apart, talking about nosql, what do you tihnk about it ? [18:29] bartmax: i feel kinda limited right now with relational dbs. dunno if nosql will help or not. [18:29] stride: tanepiper: yeah, if we didn't have current images for centos and stuff for the rest of our infrastructure I'd probably go for ubuntu as well [18:29] sriley: less risk in if you get hacked then the hacker isnt gonna walk away with credit card details. and you wont be liable for it [18:29] sechrist: "I feel kinda limited by relational dbs" is the worse reason to use nosql [18:29] sechrist: I would suggest postgres or something for commerce [18:30] tanepiper: bartmax: if you are doing heavy ajax on the client side, nodejs + key/val store is perfect, especially ones that store JSON [18:30] sechrist: do you need transactions? [18:30] tanepiper: there is no `import simplejson` [18:30] sechrist: or joins [18:30] bartmax: tanepiper: even in a ecommercer (think about products with lots of relations) :D [18:30] brianc: https://github.com/brianc/node-postgres :) [18:30] sechrist: ^ [18:30] tanepiper: sechrist: joins are possible on docdb :) [18:30] bartmax: sechrist: i do joins a lot on mysql. [18:30] sechrist: bleh [18:31] raymorgan has joined the channel [18:31] sriley: how is relational db's limited!? surly they are a lot less limited than nosql, cept for performance [18:31] tanepiper: not in the traditional sense but couchdb map/reduce + views (+ lists if you want fancier formatting) [18:31] sechrist: dude be real -- map/reduce is a lot more complex than a join on postgres [18:31] tanepiper: joins are easy [18:31] msekimura has joined the channel [18:31] bartmax: sechrist: never thought about postgres as an option, i will read about it. [18:31] sechrist: if you want scalable sql -- check out the drizzle [18:31] bartmax: dunno was THAT different than MYSQL [18:31] bartmax: drizzle ? [18:31] tanepiper: complexity is all in the mind :D [18:32] sechrist: yes, the drizzle my nizzle [18:32] sechrist: https://launchpad.net/drizzle [18:32] geeks_bot has joined the channel [18:32] bartmax: scalable sql is the problem yes with mysql right now. [18:32] sechrist: I've heard it described as "mysql without extra crap that slows it down that you never use" [18:34] tanepiper: MySQL is only as popular as it is because it's PHP drivers were better than Postgres for a long time, and PHP is everywhere [18:34] bartmax: the key/val thing sounds perfect in my head.... isn't that great in practice ? :D [18:35] tanepiper: bartmax: in practice it's excellent for 90% of jobs [18:35] bartmax: im bored of seeing how good is for the 4,432 twetter-like site :) [18:35] bartmax: yet no-one and nothing about ecommerce... [18:35] bartmax: i think it falls into the 10% .... [18:35] bartmax: right ? [18:36] tanepiper: there are cases where map/reduce won't cut it, but i haven't hit that situation yet [18:36] gozala has joined the channel [18:36] tanepiper: bartmax: http://www.couchone.com/case-studies [18:36] tanepiper: http://wiki.apache.org/couchdb/Transaction_model_use_cases [18:36] sh1mmer has joined the channel [18:37] sriley: pagination in nosql is a real pita, dont think there is a decent solution for either couchdb or mongodb [18:37] brianc: sriley: pagination is actually kinda a pita in ms sql server too, funny enough [18:38] bartmax: brianc: really? wow... [18:38] jtrally: sriley: You mean like skip/limit? in mongo? How is that a pain [18:38] muk_mb: with express, what's an easy way to make a default route? [18:38] muk_mb: like "if nothing else matches, use this one" [18:38] tanepiper: sriley: in couchdb yes, view + limit & skip parameters [18:38] stephank has joined the channel [18:38] sriley: jtrally: cos skip 100000 makes it read 100000 records which aint to fast [18:38] tanepiper: sriley: but the documents are already indexed [18:39] jtrally: I'll have to try that [18:39] jtrally: I want to say in a test I've done it didn't read all of them [18:39] jtrally: there was an index though [18:39] sriley: if you read the documentation they suggest to avoid using skip for pagination [18:40] SamuraiJack_ has joined the channel [18:40] bartmax: tanepiper: lol, last case: Typical e-store [18:40] jtrally: From the docs: The skip() expression allows one to specify at which object the database should begin returning results. This is often useful for implementing "paging" [18:41] dguttman has joined the channel [18:41] benburkert has joined the channel [18:42] ashleydev has joined the channel [18:42] ph^ has joined the channel [18:43] sriley: maybe mongo is implemented differently then but http://guide.couchdb.org/draft/recipes.html#slow [18:43] mgutz: brianc: sql server added row_number for paging in SQL Server 2005 so it's as easy as another db [18:44] brianc: mgutz: ah. I eat my words then. did it a long while back. [18:44] mgutz: i don't use it anymore, but yeah it was a pain prior to that [18:44] bartmax: looks like nosql is no good for ecommerce, and node.js either.. :( [18:45] bartmax: wanted to use new technologies... [18:45] bruse: the web is not very good for ecommerce [18:45] mgutz: unless you have lots of RAM and heavy traffic, NoSQL doesn [18:45] bartmax: bruse: i somehow agree, except for the paycheck that tells me exactly the opposite :) :) :) [18:46] bruse: bartmax: the two are not related [18:46] bartmax: bruse: was a joke [18:46] opengeard has joined the channel [18:47] ph^ has joined the channel [18:47] mgutz has joined the channel [18:49] isaacs has joined the channel [18:49] altamic has joined the channel [18:52] piscm has joined the channel [18:52] Country has joined the channel [18:52] mikeal has joined the channel [18:52] easternbloc has joined the channel [18:56] trotter has joined the channel [18:56] balaa has joined the channel [18:56] ryankshaw has joined the channel [18:57] tokumine has joined the channel [18:59] ben_alman has joined the channel [18:59] zomgbie has joined the channel [19:00] isaacs has joined the channel [19:00] RusAlex has joined the channel [19:00] matt_c has joined the channel [19:00] RusAlex: hi guys [19:00] ryankshaw has left the channel [19:01] stepheneb_ has joined the channel [19:01] kjeldahl has joined the channel [19:02] elijah-mbp has joined the channel [19:04] Ond has joined the channel [19:05] altamic_ has joined the channel [19:07] sh1m has joined the channel [19:08] ph^ has joined the channel [19:08] aelaguiz: why would an assert.equal fail but just terminate the application without printing anything [19:09] mjr_: Do you have process.exit() anywhere in your code? [19:09] mjr_: Like in a catch block or in a uncaughtException listener? [19:10] aelaguiz: I don't, it's like 10 lines long [19:10] aelaguiz: I'm testing a C++ extension I wrote [19:11] ryah: how can i echo to stderr? [19:11] ryah: (unix question) [19:12] eazyigz has joined the channel [19:12] mjr_: you mean how can you do like $ echo 2> file [19:12] mjr_: ? [19:12] ryah: no [19:12] djanowski: ryah: echo foo >&2 [19:13] djanowski: that? [19:13] ryah: echo "blah" 1>&2 [19:13] Country has joined the channel [19:13] ryah: yeah [19:13] gozala: isaacs: I just noticed that npm@0.2.14 return '.npm' [19:14] gozala: on require('npm').dir [19:14] isaacs: gozala: yeah? [19:14] isaacs: gozala: you have to load it before you can use it [19:14] gozala: while npm@0.2.12 it was full path [19:14] isaacs: require("npm").load({... configs ...}, function (er, npm) { npm.dir === full path }) [19:14] isaacs: gozala: because it doens't have configs loaded yet, it can't join against the npm.root [19:15] gozala: and configs are ?? [19:15] isaacs: gozala: like --root /usr/local/lib/node or something [19:15] gozala: do I have to read and parse config file myself? [19:15] isaacs: you'd do {"root" : "..."} [19:15] isaacs: nonono [19:15] isaacs: that's just a place to specify the command-line flags. [19:15] isaacs: gozala: it's an optional param [19:15] isaacs: or you can pass in an empty object if you want [19:16] isaacs: gozala: https://github.com/isaacs/npm/blob/master/bin/npm.js#L52-55 [19:17] gozala: isaacs: thanks [19:17] isaacs: gozala: that makes it parse the stuff in the .npmrc and /usr/local/etc/npmrc [19:18] EGreg: hey guys [19:18] isaacs: ryah: you can also do `exec 1>&2` to send all standard output to stderr from there on [19:19] stephank has joined the channel [19:19] jtrally: I am running both node.js 0.24 and 0.31 on a macpro. the dummy hello http server example stops responding at about 16000 requests when I hit localhost with ab. Any ideas? Sometimes it will pass the 16000 mark, but when that happens the request there takes 18 - 20 seconds. [19:20] BonsaiDen has joined the channel [19:22] liar has joined the channel [19:22] BonsaiDen: Anyone here has experience with no.de smartmachines? I'm having trouble with outgoing HTTP requests made from Node taking forever, curl works fine though [19:23] ryah: jtrally: you're running out of ports [19:23] jtrally: that would have been a guess given it's 16000 [19:23] jtrally: the concurrency I'm using is low... [19:24] ryah: jtrally: try: sudo sysctl -w net.inet.ip.portrange.first=32768 [19:24] kkaefer: why 16000? shouldn't it be about double that? [19:24] ryah: jtrally: and sudo sysctl -w net.inet.tcp.msl=1000 [19:27] pquerna: hmm? but why isn't it closing ports though? [19:27] dgathright has joined the channel [19:27] admc has joined the channel [19:27] pquerna: i guess look at netstat, just tune down time_wait.. naywya.s [19:27] mikeal has joined the channel [19:27] jtrally: that made it to 32000 [19:28] RusAlex has joined the channel [19:28] ryah: jtrally: wait fro the time_waits to go away. and set the msl [19:29] matt_c has joined the channel [19:29] BonsaiDen: Anyone an idea on my problem? HTTP request of stackoverflow takes 20 seconds, curl takes ~60ms [19:30] ryah: BonsaiDen: is it dns? [19:30] aconran_ has joined the channel [19:30] isaacs has joined the channel [19:30] ryah: isaacs: does no.de use 8.8.8.8 ? [19:30] V1 has joined the channel [19:31] EGreg: what u mean [19:31] EGreg: no.de 8.8.8.8? [19:31] isaacs: ryah: i don't htink so. it uses whatever the provisioner says to use, which is dependent on datacenter [19:31] EGreg: what is 8.8.8.8 [19:31] isaacs: EGreg: 8888 is google's dns server [19:31] isaacs: 8888 and 8.8.4.4 [19:31] hornairs has joined the channel [19:31] BonsaiDen: ryah: Yes indeed its dns [19:32] ryah: BonsaiDen: can you cat /etc/resolv.conf [19:32] ben_alman has joined the channel [19:32] BonsaiDen: ryah: domain joyent.us nameserver 72.2.112.111 nameserver 72.2.112.110 [19:33] trotter has joined the channel [19:34] jchris has joined the channel [19:35] void_ has joined the channel [19:35] thelonious has joined the channel [19:36] ryah: isaacs: can you file a bug about the nameservers with ops [19:36] isaacs: ryah: what's the issue? [19:36] ryah: slow [19:36] BonsaiDen: 20 seconds+ slow [19:37] sh1mmer has joined the channel [19:37] EyePulp has joined the channel [19:37] jtrally: ryah: that worked, thanks. a good example, of why some of the other "toy benchmarks" pass that test, because they are too slow [19:38] jtrally: :) [19:38] mdoan has joined the channel [19:39] hunterloftis has joined the channel [19:39] hunterloftis: Good afternoon everybody [19:41] langworthy has joined the channel [19:43] EGreg: hi [19:43] springmeyer has joined the channel [19:43] eazyigz has joined the channel [19:44] Ori_P has joined the channel [19:45] mikeal1 has joined the channel [19:45] dthompson has joined the channel [19:45] jchris1 has joined the channel [19:46] jameshome has joined the channel [19:47] jameshome has left the channel [19:50] pgte has joined the channel [19:54] altamic has joined the channel [19:54] bradleymeck: whats the pref compression library these days? [19:55] SamuraiJack__ has joined the channel [19:58] ossareh has joined the channel [20:00] yozgrahame has joined the channel [20:00] isaacs has joined the channel [20:01] mraleph has joined the channel [20:02] herbySk has joined the channel [20:02] JimBastard has joined the channel [20:03] blowery_ has joined the channel [20:03] jtrally: what's standard practice to map requests to function? keep a hash of request handlers? [20:04] ashleydev has joined the channel [20:04] JimBastard: so does anyone have any awesome agile development scripts / tricks to add to this project? https://github.com/marak/xp [20:06] pandark_ has joined the channel [20:08] sh1mmer has joined the channel [20:08] pieterv has joined the channel [20:09] bradleymeck: jtrally can you rephrase that? map what kind of requests to what kind of function? [20:09] arlolra has joined the channel [20:09] broquaint has joined the channel [20:10] stagas has joined the channel [20:10] jtrally: in Java/Spring/Ruby land you'd have a request mapping mapping a certain uri /foo/myfooaction. In Java it's done by annotations or a config file, and in Rails it's convention. [20:11] jtrally: is there a convention or rule of thumb to follow in node? [20:12] jtrally: I meant a certain uri /foo/myfooaction to Foo.myFooAction() [20:12] ashleydev has joined the channel [20:12] BonsaiDen has left the channel [20:13] josephhitchens has joined the channel [20:13] norviller has joined the channel [20:13] piscisaureus: ryah: do you mind if writing to stdout blocks, when stdout = a tty? [20:14] ewdafa has joined the channel [20:15] Sembiance: jtrally: it depends what node.js module you use to handle that [20:17] Sembiance: jtrally: I use expressjs [20:17] jtrally: ah yes, that's what I was looking for [20:18] Sembiance: jtrally: http://expressjs.com/ is one. There are many others: https://github.com/ry/node/wiki/modules [20:18] jtrally: Sembiance: yeah the module list is huge. Hard to know "good" from "bad" [20:19] jimt_ has joined the channel [20:19] iszak has joined the channel [20:19] iszak has joined the channel [20:19] Sembiance: jtrally: I serve about 3.5 million hits with node.js a day and expressjs works great :) [20:19] Sembiance: jtrally: someone else may chime in if they have one they prefer [20:20] Sembiance: well, off to go bowling at our company party heh, fun. [20:21] jtrally: forced fun [20:21] jtrally: :) [20:22] dmcquay has joined the channel [20:24] ashleydev has joined the channel [20:25] piscisaureus: ryah: and, do tty stdios ever get closed? [20:25] astoon has joined the channel [20:27] binarypie has joined the channel [20:28] MikhX has joined the channel [20:29] bradleymeck: bleh, anyone have a good zip file (or other archive format) library lying about [20:31] inarru has joined the channel [20:32] tbeseda has joined the channel [20:33] creationix has joined the channel [20:34] creationix: I should have known better then to read the nodejs mailing list this morning [20:34] bradleymeck: you should have [20:34] creationix: and I still have 118 conversations to catch up on [20:34] creationix: don't think I'll make it [20:35] tilgovi has joined the channel [20:35] bradleymeck: well in the mean time, i know you have a lot of crazy side projects that never get published, got one that supports an archive format like zip? [20:35] rburhum has joined the channel [20:36] creationix: bradleymeck: no, but I did implement tar the other day [20:36] creationix: just creating the file, not reading it [20:37] creationix: I'm hoping to more more tools at work over to node.js and part of it involves creating deb packages [20:37] creationix: without shelling to the command line [20:37] JimBastard: wow, node doesnt like this [20:37] JimBastard: https://gist.github.com/773419 [20:37] SubStack: I'm considering writing a recursion combinator for Seq to beat streamlinejs at its own game now [20:37] creationix: SubStack: sounds like fun [20:37] creationix: JimBastard: why not? [20:38] sh1mmer has joined the channel [20:38] josephhitchens: why can't we have a nsh (node shell) that replaces bash entirely? [20:39] JimBastard: ohh maybe its my dep blowing up creationix [20:39] josephhitchens: just make it viable login shell [20:39] creationix: josephhitchens: you can, but why [20:39] creationix: it would be hard to beat bash at it's own game [20:39] bradleymeck: well we have to actually tie in a reall js parser if we even thought about that, and i think its a bit much [20:39] creationix: would be fun to try though [20:39] V1 has joined the channel [20:40] bradleymeck: creationix you got source i could steal / work on for tar? [20:40] josephhitchens: because i prefer writing in js to bash shell. [20:40] pedrobelo has joined the channel [20:40] bradleymeck: oh god, i just thought of `top` in that and the nightmare [20:40] creationix: josephhitchens: remember node supports #!/bin/env node style scripts [20:40] josephhitchens: yeah. makes it fairly pointless i guess. [20:40] creationix: bradleymeck: https://github.com/creationix/node-tar [20:41] m64253 has joined the channel [20:41] creationix: actually a beefed up node repl as shell would be fun [20:41] creationix: you could shell out for most things [20:41] josephhitchens: I seem to be having trouble with exceptions going to "uncaught" when i expected them to be caught by my own try/catch. [20:42] creationix: josephhitchens: is the exception the same execution stack as the try..catch? [20:42] creationix: if it's within an async callback, it's not [20:42] josephhitchens: as far as I can tell. that's why i'm confused. [20:42] BHSPitMonkay has joined the channel [20:42] creationix: gist? [20:42] SubStack: the parens would make a node shell a little awkward [20:43] bradleymeck: 2d shell? [20:43] josephhitchens: maybe i've got an async call buried down somewhere i can't see. [20:43] creationix: josephhitchens: probably, just look at the stack trace and see if it included the frame where the try..catch should be [20:44] RusAlex has left the channel [20:44] RevoOf has joined the channel [20:45] dschn has joined the channel [20:45] svnlto has joined the channel [20:45] yozgrahame has joined the channel [20:46] dschn: hi, any easy answer to why I can't compile? http://pastebin.com/AUy7Z6La mac osx leopard [20:47] clarkfischer has joined the channel [20:48] svenlito has joined the channel [20:49] josephhitchens: creationix: aha. I see it now. So this means I have to stick another "inner" exception handler every time I call back async, or be forced to if/else on errors? [20:49] creationix: josephhitchens: yep, that or use "abstractions" to do the try catch for you [20:49] jtrally: dschn: do you have xcode? [20:49] creationix: josephhitchens: all steps in Step are wrapped in an implicit try..catch [20:50] bradleymeck: well there is that or a convention like error first callbacks [20:50] creationix: the convention is good, but compliments rather than replaces the need for try..catch [20:50] gozala has joined the channel [20:50] mfernest has joined the channel [20:50] creationix: because you never know what code might throw an exception [20:50] banjiewen has joined the channel [20:50] josephhitchens: kind of diminishes the joy of exceptions. [20:50] creationix: the try catch needs to forward the exceptions to the callback [20:51] sixtus42 has joined the channel [20:51] josephhitchens: not very elegant though. [20:51] bradleymeck: "there are 2 things you should lobby for: macros and threads." -node.js mailing list XD [20:51] aurynn: No. Noooo! [20:51] aurynn: Bad on both! [20:52] bradleymeck: good times [20:52] JimBastard: strmpnk__: strmpnk you know any good command line scripts tools that we should add to https://github.com/feisty/xp [20:52] JimBastard: ;-) [20:53] soniczen has joined the channel [20:53] creationix: ACTION is responding... [20:53] dschn: creationix: yeah I have xcode [20:54] creationix: jtrally: yes, he has xcode ;) [20:54] dschn: oops :P [20:54] creationix: no problem [20:54] p0ns has joined the channel [20:55] strmpnk__: JimBastard: rm -rf / # aliased as 1337 [20:55] JimBastard: strmpnk__: 10-4 [20:56] piscisaureus: ryah: still gone? [20:56] hellp has joined the channel [20:57] sixtus42 has left the channel [20:57] josephhitchens: well this really stinks tim. Almost all my real works happens down inside at least 1 or 2 levels of acync callbacks. A try/catch at the highest level is essentially useless. [20:57] sriley_ has joined the channel [20:58] SamuraiJack has joined the channel [20:59] ryah: piscisaureus: just got back [20:59] ryah: piscisaureus: what's up? [20:59] piscisaureus: ha. [20:59] mraleph: josephhitchens: that's async for you :-) [20:59] ryah: piscisaureus: writing to stdout on unix shouldn't block [20:59] jameshome has joined the channel [21:00] piscisaureus: also not if stdout = a tty? [21:00] piscisaureus: there is no hardware involved really i'd think [21:00] ryah: well - i mean we can discuss it [21:00] ryah: but that was an original design goal [21:00] piscisaureus: but I'm talking windows in the first place [21:00] ryah: i'm fine with windows blocking on stdout [21:01] ryah: probably don't have a choice, or ? [21:01] piscisaureus: it is hard to get writes in sync with console style modification (e.g. set the color) [21:01] piscisaureus: well, could use libeio :-) [21:02] JimBastard: yeah, npm seems to be bombing out with nested linked packages [21:02] ryah: right [21:02] sriley_ has joined the channel [21:02] ryah: hm [21:02] piscisaureus: ryah: but the more interesting question is [21:02] ryah: but can you do a non-blocking write to stdout? [21:02] paulrobinson_ has joined the channel [21:02] piscisaureus: ryah: erm, nope [21:03] piscisaureus: (checking to be sure) [21:03] MattJ has joined the channel [21:03] piscisaureus: ryah: nope, sure now [21:03] wdperson has joined the channel [21:04] russ_nyc: can anyone explain to me the difference between doing [21:04] russ_nyc: myobj.myFunc = function() { return 'foo' } [21:04] russ_nyc: and myobj.prototype.myFunc = function() { return 'foo' } [21:04] piscisaureus: but now this: when doing a meaningful read from the console, I get browser-like events from windows [21:04] JimBastard: Error: Cannot find module './../../../../request/0.11.0/package/main' , but where did 0.11.0 come from [21:04] JimBastard: lol [21:04] jamund has joined the channel [21:04] jtrally: in the first it is declared for myobj at that time for that instance, as opposed to all instances [21:05] balaa has joined the channel [21:05] piscisaureus: like keyup and keypress and WINDOW_BUFFER_SIZE_EVENT (== sigwinch but on windows, comes as an event on the stdin event stream) [21:05] piscisaureus: should these be exposed [21:06] russ_nyc: jtrally: thanks! [21:06] ryah: piscisaureus: if we can come up with a common api... [21:06] robotarmy has joined the channel [21:07] piscisaureus: ryah: I imagine that something like readline could be more elegantly implemented with real events as opposed to squeezing them all into a byte stream and at the other end figuring out whether some control key was pressed or not [21:07] piscisaureus: common api = browser api or does it stink too much? [21:07] ryah: common api = something that can be done on unix :) [21:08] common: my api? [21:08] piscisaureus: common: lol [21:08] ryah: e.g. currently i tell people to watch for sigwinch and call require('tty').getColumns() [21:08] sh1mmer has joined the channel [21:08] ryah: but i'm not married to that [21:09] piscisaureus: yeah. I could emulate that on windows by just calling signal(SIGWINCH) on windows [21:09] ryah: would be fine having an event emitter and setting up a signal handler automatically on unix [21:09] piscisaureus: (though sigwinch is not defined) [21:10] dschn: fixed my issue by ensuring node was using python 2.6 and not 2.5.4 [21:10] ryah: require('tty').on('windowSize', function (rows, cols) {}) [21:10] ryah: or something [21:10] bradleymeck: would it be possible in the future to have require accept a fd or stream? [21:10] piscisaureus: ryah: that wouldn't be so difficult. but what do we pick as the event emitter. the tty object? the stdin stream? [21:10] p0ns has joined the channel [21:11] bradleymeck: tty has the info you care about right? [21:12] p0ns has joined the channel [21:12] stride: hm, how are you supposed to handle basicReturns on an exchange in node-amqp without that Warning being printed? [21:12] matt_c has joined the channel [21:12] piscisaureus: ryah: would it be possible to implement tty.on('keypress', function(char, keyCode, modifier) on linux? [21:12] bradleymeck: bleh, forget the fd/stream given to require would be havoc for subrequires [21:12] piscisaureus: ryah: like, without doing too much crazy stuff? [21:13] bradleymeck: piscisaureus in raw mode sure, but then you have to be sure to exit raw mode on exit and be in raw mode to begin with [21:13] markwubben has joined the channel [21:13] ryah: piscisaureus: not really... [21:15] piscisaureus: ryah: well, then there it ends ... On windows you'd have to use events like this internally, but I guess it doesn't really make sense to expose these then [21:16] benburkert has joined the channel [21:16] ryah: piscisaureus: this event is somewhat like that [21:16] ryah: https://github.com/ry/node/blob/e1f4b3f009db6b80a4fb136926caba8a788ab7f8/lib/readline.js#L315 [21:18] bmizerany has joined the channel [21:19] ryah: process.stdin.setRaw(true); process.stdin.on('key', b); [21:19] ryah: maybe? [21:19] ossareh has joined the channel [21:21] piscisaureus: ryah: good. [21:21] tilgovi has joined the channel [21:22] aelaguiz: doing a for(var x in array) - does x always get cast to a string? [21:22] piscisaureus: so this _ttyWrite something moves to tty and is linux-only [21:22] Sami_ZzZ has joined the channel [21:23] piscisaureus: instead of me implementing something that encodes a byte stream from keyboard events, only because readline really wants to decode a byte stream to obtain keyboard events :-) [21:24] ryah: piscisaureus: well - we can rewrite _ttyWrite as an event off stdin, maybe [21:24] ryah: in linux [21:25] ryah: yeah, i dont thin unnecessary shimming should be done when we can just change the code [21:25] piscisaureus: or should we use ncurses? [21:25] ryah: no [21:25] piscisaureus: fast :-) [21:25] killfill has joined the channel [21:25] bradleymeck: aelaguiz, i would presume so unless you are using a typed array which is fairly rare in v8 [21:26] ryah: there's like an unending list of libraries and complications due to the fact that no one wants to sit down and figure out how ttys work [21:26] Insanity5902 has joined the channel [21:27] bradleymeck: well part of that is the documentation on ttys is confusing as all get out [21:27] piscisaureus: ok [21:27] ryah: i like the 'keypress' event on stdin [21:27] ryah: we just need to come up with a common list of events [21:27] ryah: er [21:27] ryah: 'keys' [21:27] aelaguiz: I keep getting bitten by using arrays as sparse arrays with non sequential keys, is there a good set of datastructures similar to stl in c++ that I can just purpose? [21:28] ryah: piscisaureus: e.g. https://github.com/ry/node/blob/e1f4b3f009db6b80a4fb136926caba8a788ab7f8/lib/readline.js#L362 [21:28] ryah: 11 = ctrl+k [21:28] springmeyer_ has joined the channel [21:28] bradleymeck: aelaguiz why not just a raw object? [21:28] danielrmz has joined the channel [21:28] Ond has joined the channel [21:29] aelaguiz: I suppose I could iterate that just as well as an array, yeah I have no good reason [21:29] bradleymeck: and as a side note: dont use for .. in on arrays [21:29] aelaguiz: Yeah just learned that lesson [21:29] piscisaureus: ryah: you want to encode each key as a single number [21:29] bradleymeck: w3schools lies [21:29] piscisaureus: ? [21:29] ryah: piscisaureus: not necessarally [21:29] mattly has joined the channel [21:30] paulrobinson has left the channel [21:30] ryah: piscisaureus: but we'd need to translate 11 into 'k' + CTRL [21:30] ryah: somehow [21:30] ryah: case 11: emit('keypress', 'k', CTRL) [21:30] ryah: maybe :) [21:30] piscisaureus: yeah [21:31] ryah: use bitflags for the modifiers? [21:31] piscisaureus: if (code < 27) { char = 'a' + code; modifier = CTRL } [21:31] piscisaureus: bitflag ftw [21:32] piscisaureus: fyi: this is what I get on windows: [21:32] piscisaureus: http://msdn.microsoft.com/en-us/library/ms684166%28v=vs.85%29.aspx [21:33] tekky has joined the channel [21:35] piscisaureus: The only thing I'm not sure about is how special keys like function keys get encoded [21:36] piscisaureus: It think we should expose at least the key pressed, modifier key state, and the char this gets translated to if appropriate [21:36] bradleymeck: there is a standard somewhere on keycode translation, im trying to find it [21:37] piscisaureus: so LSHIFT+k -> onkeypress('K', LSHIFT, 'k') [21:37] ryah: piscisaureus: i don't think we can do 'keyup' in unix [21:38] piscisaureus: and CTRL+ALT+F10 -> onkeypress( ? , CTRL | ALT, F10 ) [21:38] piscisaureus: ryah: I don't really care about keyup, honestly [21:38] tob1 has joined the channel [21:38] piscisaureus: maybe it could be useful to create an even more awesome repl but lets do one thing at a time [21:39] sh1mmer has joined the channel [21:39] piscisaureus: brb, but still thinking [21:40] tmzt: piscisaureus: might look at the nt console for colinux [21:40] piscisaureus: tmzt: link? google doesn't really take me anyware [21:41] saschagehlich_: http://www.javascriptkit.com/javatutors/closuresleak/index3.shtml << is this true? do closures leak? [21:41] piscisaureus: brb!! [21:42] saschagehlich_: https://gist.github.com/15938d7bb9d032b62610 << leaking like a slut. wtf. [21:42] stepheneb has joined the channel [21:44] V1: Anyone here have experience with the req.flash function of express? [21:45] KUHRT has joined the channel [21:46] bradleymeck: saschagenlich in engines that do not check for circular links and do not validate expanding host objects (AKA only in IE7-) yes [21:46] bingomanatee_ has joined the channel [21:47] bradleymeck: and IE8 leaks sometimes anyway [21:47] bitdrift: V1: I've used it a bit [21:47] pyrotechnick has joined the channel [21:48] piscisaureus: back [21:48] saschagehlich_: bradleymeck: well, that's just server-side [21:48] peter____ has joined the channel [21:48] saschagehlich_: are there other reasons for leaks? [21:48] peter____: Hi [21:48] pdelgallego has joined the channel [21:49] bradleymeck: http://nixdoc.net/man-pages/Linux/man4/console_ioctl.4.html#KDGKBLED finally, those are the state flags we should ideally match i would think [21:49] saschagehlich_: someone told me that objects created inside of closures are not deleted by the GC [21:49] V1: bitdrift: I have a post handler, that redirects the request back to the form if we can't validate the input. So I wanted to add req.flash() above the res.redirect(). But when I access the req.flash() from my redirect landing page, the req.flash is empty [21:49] robotarmy has joined the channel [21:49] peter____: I'm trying to build node.js on window but i get a compilation error [21:49] bradleymeck: saschagehlich_ referencing objects and keeping references visible from global scope? [21:49] bradleymeck: and no closure objects are available for GC in any modern js engine [21:50] KUHRT has joined the channel [21:50] V1: bitdrift: This only happens if the I post to /test and have my post handler redirect to /test.. But if I redirect to /foo there is a message :S Am I missing something here? [21:50] Aria has joined the channel [21:50] bradleymeck: heck even IE6 should gc them as long as you avoid the GC bugs it has [21:51] ephesus has joined the channel [21:51] bitdrift: V1: sounds like you have an example...can you paste on gist or something? [21:51] shinmei has joined the channel [21:51] bingomanatee_: Any noders here from outside the US know of any non US hosts they like for LAMP/NODE stuff? [21:51] broofa: Anyone had any luck with node-ncurses module on Mac? 'Works on Linux for me, but on Mac I get "Error opening terminal: xterm-color." [21:52] eee_c has joined the channel [21:52] bingomanatee_: Is you deployment platform a MacOS device? [21:52] V1: bitdrift: nvm, for some odd reason it's working again... I swear it was broken a few minutes ago.. [21:52] bingomanatee_: I think you know where I'm going with this... [21:53] bitdrift: V1: hah...well that's good then. weirdness [21:53] V1: Yeah really odd =/ [21:54] flippyhead has joined the channel [21:54] heavysixer has joined the channel [21:57] CIA-121: node: 03Ryan Dahl 07master * r9da75f3 10/ (doc/api/events.markdown lib/events.js): Print error when EventEmitters get too many listeners - http://bit.ly/hZXJvZ [21:58] pHcF has joined the channel [22:01] pquerna: win 71 [22:01] piscisaureus: ? [22:02] bitdrift: gah! does the http client even work in v0.3.x? [22:02] mjr_: sure [22:02] mjr_: https maybe not. [22:02] bitdrift: i just upgraded from v0.2 and now https reqs hang [22:03] bitdrift: mjr_: it's a known issue then? [22:03] sveisvei: https client is not done [22:03] sveisvei: on the 3.x [22:03] bitdrift: ah ok then [22:03] WarriorSl has joined the channel [22:03] sveisvei: https server just landed [22:03] mjr_: yes, sadly HTTPS server only just recently started working in 0.3.x. Client is still unstable or broken. [22:03] Hello71 has joined the channel [22:03] bitdrift: cool. that makes me feel better then. thanks [22:04] rwaldron has joined the channel [22:04] softdrink: ACTION waves at proby [22:05] yozgrahame has joined the channel [22:05] V1: I haven't found any issues with HTTPS server on v0.2.5 :9 what's broken? [22:05] pyrotechnick: JimBastard: you around? [22:06] dthompson has joined the channel [22:06] tokumine has joined the channel [22:06] Desmont has joined the channel [22:06] bitdrift: V1: yeah it works fine for me on v0.2....just v0.3 apparently not finished yet [22:06] stride: pquerna: 71? and I thought my 32 were bad.. :) [22:07] pquerna: its exploded recently. [22:07] pquerna: :-/ [22:07] brianc: bradleymeck: I didn't know you lived in ATX. I do too. [22:07] V1: O dear, lets call in the FBI pquerna [22:09] isaacs has joined the channel [22:09] sh1mmer has joined the channel [22:09] isaacs: JimBastard: "nested link packages"? [22:09] isaacs: whassat? [22:09] bradleymeck: yep, austinjavascript talk by me in a while about why games in js havent taken off and how to make stuff nice [22:09] bradleymeck: nested link packages are prolly like submodules [22:10] pengwynn has joined the channel [22:10] brianc: bradleymeck: awesomeness. i will be there [22:11] isaacs_ has joined the channel [22:12] sveisvei: pquerna: It must be the terrrrorrrists [22:12] sveisvei: Seal the gates! [22:12] sveisvei: You have to body searched before you can commit from now on... [22:13] sveisvei: That will scare the bas***** [22:13] briznad has joined the channel [22:14] zomgbie has joined the channel [22:16] arlolra: pquerna: any chance the buildslave is coming back online? [22:18] mjr_: Oh hi arlolra. I haven't seen you in here before. [22:18] pquerna: arlolra: i think we need to get the static ip / firewall changed [22:19] pquerna: arlolra: we just moved static Ips last week, so i htink its just not connecting [22:19] echosystm has joined the channel [22:19] pquerna: * rather the buildmaster is firewalled [22:19] arlolra: mjr_: hello [22:20] arlolra: i'm around sometimes [22:20] Phyllio has joined the channel [22:20] springmeyer_ has joined the channel [22:20] arlolra: pquerna: ah, i see [22:20] soniczen_ has joined the channel [22:20] arlolra: i'm working on some performance graphs [22:20] arlolra: http://arlolra.no.de/waterfall/ab-hello-world-buffer-1024/hist/ [22:21] tilgovi has joined the channel [22:21] pquerna: i'll mail the new ip [22:21] jbergstroem: arlolra: could you perhaps force a rebuild on "32bit linux"? [22:21] jbergstroem: i messed up ccache :/ [22:21] arlolra: jbergstroem: np [22:22] jbergstroem: thanks a bunch [22:22] jbergstroem: arlolra: i guess "gentoo 32bit" would be a better name as well (while looking at the other names) [22:24] nonnikcam has joined the channel [22:26] aklt has joined the channel [22:26] modular has joined the channel [22:26] qnt4b has joined the channel [22:27] mikedeboer has joined the channel [22:27] bingomanatee_: "Ah, code; the cause of, and solution to, all our problems. [22:27] bingomanatee_: " [22:27] piscisaureus: ryah: how to emit events on a js object from c space? [22:27] jchris has joined the channel [22:28] jbergstroem: arlolra: forgot to restart buildslave between edits in .tac. fixed now [22:28] piscisaureus: something like (*target)->Get(String::New("emit"))->Call(target, argc, thenwhat?); [22:28] pquerna: arlolra: oh, is that you. anyways, sent a mail wiht the new ip [22:29] bradleymeck: have to make an arguments object, http://v8.googlecode.com/svn/trunk/include/v8.h ctrl+f "class arguments" [22:29] arlolra: jbergstroem: ok, trying again [22:30] bradleymeck: oh wait they changed the api [22:30] bradleymeck: uggg [22:31] arlolra: pquerna: are you sure its the buildmaster that has the firewall? is that something ryah setup ... cause i didn't [22:31] bradleymeck: pioscisaureus, is giving a Handle[] not working? [22:31] piscisaureus: bradleymack: dunno. do you think it will? [22:31] arlolra: jbergstroem: didn't get past ./configure [22:31] jbergstroem: arlolra: ok i can forget about ccache, waf ovverrides PATH :( [22:32] piscisaureus: bradleymack: is what I wrote down the way to go anyway? [22:32] pquerna: arlolra: before I sent the IP in before it was just getting blocked... [22:32] pquerna: i thought [22:32] jbergstroem: so when are we changing to cmake? :-D [22:32] AlexMax: irc-js [22:32] pquerna: scons first. so ryah will hate it more. [22:33] AlexMax: Does gf3, author of irc-js, hang out here? [22:33] jbergstroem: arlolra: ok, restarted now. sorry for the inconvenience :-( [22:33] ryah: we should get node to use *all* build systems [22:33] ryah: at once [22:34] ryah: piscisaureus: you don't - call a function from c - turn it into an event in js [22:34] jbergstroem: ryah: as long as they cascade each other [22:34] AlexMax: I got a weird parsing error from irc-js, http://paste.pocoo.org/show/Mc2YoHEl3oJTPprdwrFo/ [22:34] piscisaureus: ryah: understood [22:34] ryah: we'll use ruby's extconf.rb to start the process, jump into waf for a little bit [22:34] ryah: scons for v8 [22:34] dguttman_ has joined the channel [22:34] ryah: a touch of autoconf here and there [22:34] Aria: Sweet! [22:34] ephesus has joined the channel [22:35] Aria: Don't forget to make a custom shell script called 'configure' that looks like it'll autotool, only take completely different arguments. [22:35] ryah: then finish with a big cmake finish [22:35] pquerna: automake, don't forget automake [22:35] EGreg has joined the channel [22:36] arlolra: ryah: is the buildmaster blocking any ips? [22:36] piscisaureus: ryah: don't forget to generate your makefile.am using Brainfuck [22:36] ryah: the excitement has corrupted my grammar [22:36] heavysixer has joined the channel [22:36] ryah: arlolra: not that i know of [22:36] jchris1 has joined the channel [22:36] arlolra: pquerna: i don't think that's the problem [22:37] jbergstroem: hey, don't keep gyp in the cold. its new and stuff [22:37] isaacs: ryah: even better: we should wrap all of them in a custom node module written in js that only runs if you've previously installed node. [22:37] arlolra: pquerna: you fixed it [22:37] Aria: And depends on both the installed AND built copies. [22:37] ryah: in retrospect, i should have just used scons for the whole thing [22:37] Aria: (And builds modules for the built copy with the installed copy, using the architecture settings as such.) [22:38] pquerna: oh damn [22:38] isaacs: Aria: sure, but i mean, you have to bootstrap it, right? so that's why we'll put copies of node binaries for all known systems in the git repo [22:38] pquerna: i found the glitch [22:38] pquerna: it went to sleep [22:38] mape: Easiest way of creating a rss feed with node? [22:38] isaacs: ryah: didn't node use scons at some point? [22:38] Aria: isaacs: Of course! Especially the bare-arm-oldabi ones. [22:38] ryah: isaacs: no [22:38] jbergstroem: isaacs: v8 does, which node builds [22:39] isaacs: must be thinking of v8cgi or k7 or something [22:39] isaacs: fuzzy old memory of some v8 extension thing that used scons [22:39] isaacs: data's pretty corrupted that far back [22:39] ryah: arlolra: can we have this http://pulse.mozilla.org/gantt [22:39] JojoTheBoss has joined the channel [22:39] sh1mmer has joined the channel [22:39] ryah: :) [22:40] ryah: i don't even know what it is, but it looks nice [22:40] pquerna: dear mac mini [22:40] pquerna: stop going to sleep to save power [22:40] piscisaureus: ryah: well, it says 'This is node.js talking with RabbitMQ via AMQP, delivering it to the browser using socket.io (potentially over WebSockets) with the client HTML served by django. ' [22:41] piscisaureus: a self-hosted build system that we so desparately want [22:41] isaacs has joined the channel [22:42] arlolra: ryah: i'm on it [22:42] mjr_: pquerna: my buildslave is a macbook pro. Somehow I've managed to coerce it into never sleeping. [22:42] pquerna: yeah, i think it will work better now. [22:42] mikedeboer has left the channel [22:42] piscisaureus: don't forget Maven btw. Its XML files make me look so intelligent. [22:42] arlolra: ryah: no ... i'm not [22:42] EyePulp: mjr_: lots of coffee script? [22:42] mikedeboer has joined the channel [22:43] mjr_: EyePulp: I've got a rimshot around here somewhere for you. [22:43] mjr_: Not sure where I left it. [22:43] EyePulp: =) [22:43] SubStack: mjr_: first paying customer already \o/ [22:43] arlolra: ryah: are you somewhat happy w/ this? http://arlolra.no.de/waterfall/ab-hello-world-buffer-1024/hist/ [22:43] mjr_: Hmm. Can't find it, sorry. [22:43] mjr_: SubStack: nice! [22:43] SubStack: mjr_++ for the encouragement [22:43] ryah: arlolra: i love it [22:44] mikedeboer has joined the channel [22:44] ph^ has joined the channel [22:44] bradleymeck: substack, on stackvm? [22:45] SubStack: browserling, stackvm's first product [22:45] arlolra: isaacs: how do i update npm on no.de ... npm update npm tells me that i need a new version of node ( says its a v0.2.0 ) but node -v says 0.2.6 [22:46] isaacs: arlolra: npm install npm [22:46] isaacs: arlolra: er... right [22:46] arlolra: i don't think that worked either [22:46] isaacs: arlolra: curl http://npmjs.org/install.sh | sh [22:46] Evet has joined the channel [22:46] isaacs: arlolra: you have a pretty old no.de :) [22:46] arlolra: shhhhhh [22:46] ecto has joined the channel [22:48] astoon has joined the channel [22:49] arlolra: isaacs: that worked ... thanks [22:49] arpegius has left the channel [22:52] trigrou has joined the channel [22:52] trigrou: hey guy, I am trying to use gzip with express but I dont know how to test it , i am a kind of newbiii for this [22:52] trigrou: any pointer [22:53] bradleymeck: ACTION once again ponders a node precompiled (well script-data compiled)/archive format [22:55] tmzt: package manager based on git submodules? [22:56] isaacs: tmzt: ew [22:56] heavysixer has joined the channel [22:57] pyrotechnick: tmzt: i dont mind that [22:57] tmzt: they are kind of hard to work with, but when you want one tightly controlled deployable project [22:57] bradleymeck: please god no [22:57] isaacs: tmzt: you can do that today [22:57] isaacs: tmzt: just use git forit [22:58] bradleymeck: git submodule conflicts are hell [22:58] isaacs: tmzt: you can also use npm bundle for that. [22:58] tmzt: sure, its just a global refs system [22:58] doffm has joined the channel [22:58] isaacs: i don't know that i agree that git SHOULD be used for everything that git CAN be used for. [22:58] mjr_: it CAN be used for everything [22:58] isaacs: mjr_: right [22:58] isaacs: . [22:59] mjr_: IRC client [22:59] mjr_: floor wax [22:59] mjr_: etc. [22:59] isaacs: and i mean, i DO use it to check my email, brush my teeth, mow my lawn, and feed my cats... [22:59] isaacs: but package management? No. the line must be drawn somewhere. [22:59] tmzt: no but its kind of the lingua franca of this whole endevor from what ive seen, 'here check my github' [22:59] isaacs: tmzt: to be a lingua franca, people have to actually speak it [23:00] isaacs: people use github for sharing code. but git isn't an installer. [23:00] nook has joined the channel [23:00] tmzt: but if you checkout a tag into a subdirectory in your path whats the difference? [23:00] isaacs: tmzt: by that logic, "cp" is an installer. [23:01] tmzt: sure, install adds fancy touch functionality [23:01] isaacs: tmzt: install should do things like, i dunno, compile the thing [23:01] tmzt: but its not that different from cp [23:01] isaacs: install the necessary dependencies [23:01] isaacs: make sure it's in teh PATH, or warn if it isn't. [23:01] isaacs: that sort of stuff [23:01] tmzt: compile what? I was going to say ignore binary modules [23:02] tmzt: speaking specifically about interpreted ones [23:02] isaacs: yeah, that's fine, except that a lot of node modules are binary modules. [23:02] tmzt: yeah and they seem to be the ones that break npm as well [23:03] isaacs: tmzt: they work fine in npm, afaict [23:03] nejucomo has joined the channel [23:03] isaacs: tmzt: npm install glob, npm install postgres, npm install redis [23:03] derferman has joined the channel [23:03] sonnym has joined the channel [23:03] isaacs: do those not work for you? [23:03] tmzt: Ive only installed redis dont remeber if I used npm for that [23:03] bradleymeck: tmzt don't confuse the c++ breaking for the module with it not being viable or thinking it is unused [23:04] tmzt: bradleymeck: sorry? [23:05] ecto: ACTION hates tables so much.... especially scraping them [23:05] tmzt: isaacs: I seem to recall those were the ones I had to force sudo on, the script ones were fine, it might have been something that went into PATH or my configuration is wrong [23:05] isaacs: tmzt: for sure, binary modules are a trickier story, though, no matter what. [23:05] tmzt: ecto: is there something beautifulsoup? [23:05] tmzt: like [23:05] isaacs: tmzt: sudo will be required for installation eventualy. [23:05] ecto: view-source:http://www.co.crow-wing.mn.us/Sheriff/Jail/custody2.html [23:06] tmzt: ecto: if your not settled on node look at bs (python) its what drove me to learn python it the first place [23:07] ecto: some .net guy is sitting back in a chair laughing somewhere [23:07] tmzt: for a very similar project [23:08] isaacs: ecto: jsdom can't handle that? [23:08] ecto: tmzt: i'm using mape's scraper right now, is soup better? [23:09] isaacs: ecto: beautifulsoup is python [23:09] isaacs: there's a soupselect port [23:09] isaacs: `npm view soupselect description` says: "Adds CSS selector support to htmlparser for scraping activities - port of soupselect (python)" [23:10] sh1mmer has joined the channel [23:10] bradleymeck: ecto tables are really nice for scraping, look into something like onix feeds or epubs for the nightmare [23:10] ecto: isaacs: jsdom was unstable for some reason, i had to change some lines to get it to run and the page would break it [23:10] isaacs: i see [23:10] isaacs: tried libxmljs already? [23:12] isaacs_ has joined the channel [23:12] ecto: that was my next bet, beautifulsoup looks enticing though [23:12] ecto: a good excuse to finally learn python [23:14] bradleymeck: headless chrome would be nice for such things [23:14] jchris has joined the channel [23:15] blueadept has joined the channel [23:16] pyrotechnick: headless chrome would be sweet for offline webgl tests [23:16] gf3 has joined the channel [23:17] jchris1 has joined the channel [23:17] pyrotechnick: m [23:18] Tim_Smart has joined the channel [23:20] erikvold has joined the channel [23:22] erikvold: hey, I'm trying to build node on cygwin, and got the following error when trying v0.3.4: Build failed: -> task failed (err #2): {task: libv8.a SConstruct -> libv8.a} [23:22] erikvold: I tried master first, then v0.2.6, then v0.3.4 all attempts resulted in a error [23:22] erikvold: any idea what I'm doing wrong? [23:25] Me1000 has joined the channel [23:27] murz has joined the channel [23:28] sudoer has joined the channel [23:28] skm has joined the channel [23:28] bradleymeck: erikvold python2.5+ installed on cygwin? [23:29] admc has joined the channel [23:31] isaacs: erikvold: search the intertubes for "cygwin rebaseall" [23:33] eazyigz has joined the channel [23:33] jameshome has left the channel [23:37] stepheneb has joined the channel [23:40] erikvold: bradleymeck: python 2.6.5 is installed [23:40] brianmario has joined the channel [23:40] heavysixer has joined the channel [23:42] isaacs_ has joined the channel [23:42] erikvold: isaacs: I'm looking, not finding anything useful.. can you provide a link? [23:43] isaacs: erikvold: run `rebaseall` in the cygwin shell [23:43] isaacs: erikvold: then it'll probably work [23:43] isaacs: erikvold: this happens most commonly when python is broken. [23:43] isaacs: which seems to happen quite a bit. [23:43] isaacs: erikvold: http://www.heikkitoivonen.net/blog/2008/11/26/cygwin-upgrades-and-rebaseall/ [23:44] sh1mmer has joined the channel [23:44] aschw has joined the channel [23:47] aschw has left the channel [23:48] aschw has joined the channel [23:49] broofa has joined the channel [23:52] eazyigz has joined the channel [23:53] [[zz]] has joined the channel [23:53] dguttman has joined the channel [23:56] yozgrahame has joined the channel [23:56] ben_alman has joined the channel [23:56] nejucomo has joined the channel [23:57] MikhX has joined the channel [23:57] trotter has joined the channel [23:57] eazyigz has joined the channel [23:57] mdoan has joined the channel [23:58] dguttman_ has joined the channel