[00:04] JimBastard has joined the channel [00:04] JimBastard: can anyone explain to me why console.log('foo', someobject [00:04] JimBastard: oops [00:04] JimBastard: one moment [00:04] JimBastard: can anyone explain to me why console.log('foo', someobject) will output, foo [object], but console.log(someobject) will dump the object as JSON? [00:05] JimBastard: is that intentional? it seems wrong [00:06] hunterloftis has joined the channel [00:06] ben_alman has joined the channel [00:08] devdrinker has joined the channel [00:09] xSmurf: JimBastard: I agree [00:09] xSmurf: it's annoying [00:09] JimBastard: xSmurf: you have any idea who to yell at for that? i cant remember who did the console.log stuff [00:09] JimBastard: i wanna say mikeal but i dont think it was him [00:10] xSmurf: dont ask me, im a noob [00:10] JimBastard: fuck, me too [00:10] JimBastard: ill shoot a quick email to the dev list [00:11] tjholowaychuk: patch it up [00:12] tjholowaychuk: although if you pass a bunch of objects things would get reallll ugly [00:12] aguynamedben has joined the channel [00:12] techwraith has joined the channel [00:13] JusticeFries has joined the channel [00:14] xSmurf: tjholowaychuk: maybe there could be a short cut at least, console.inspect or something [00:14] murz has joined the channel [00:14] xSmurf: or allow util.inspect to take an array of objects [00:15] JimBastard: xSmurf: i posted to dev list if you want to respond [00:15] aconbere has joined the channel [00:16] xSmurf: I'm not on the dev list, I'm hardly a user bitching about c++ bindings :p [00:16] JimBastard: c++ why you no get a++ ? [00:16] JimBastard: lol sorry [00:17] xSmurf: because c comes two positions after a, it must thus be better [00:19] JimBastard: xSmurf: its part of this "asian dad meme" [00:19] JimBastard: http://www.mathfail.com/asian-dad-2.jpg [00:19] JimBastard: as one example [00:19] JimBastard: sometimes i forget this isnt 4chan [00:20] markstory has joined the channel [00:21] xSmurf: JimBastard: must have missed that thread ;) [00:22] Saebekassebil has joined the channel [00:22] JimBastard: xSmurf: http://www.google.com/images?q=asian%20dad%20meme&um=1&ie=UTF-8&source=og&sa=N&hl=en&tab=wi&biw=1591&bih=868 [00:22] Saebekassebil: Hey! Just checking the docs for v0.3.2 - TLS [00:23] Ond: Thanks for the heads up. [00:23] Saebekassebil: It's saying: tls.connect - key: A string or Buffer containing the private key of the server in PEM format. (Required) [00:23] Saebekassebil: .. so you're saying that *the client* should the private key of the server?! [00:24] xSmurf: JimBastard: http://pophangover.com/wp-content/uploads/asian-dad-main.jpg [00:24] JimBastard: aye [00:25] devdrink_ has joined the channel [00:25] Saebekassebil: Anyone? Is it just me who misunderstands it? [00:26] xSmurf: huh? [00:27] MikhX has joined the channel [00:28] JimBastard: Saebekassebil: im not sure, havent tried using that API yet [00:30] Saebekassebil: JimBastard, okay, but I'm just experimenting with it, cause TLS semi automated securit is nice. But do you know the TLS protocol? I don't but for what I read, it doesn't make sense that the client should know the private key of the server? [00:32] AAA_awright has joined the channel [00:34] Wizek_ has joined the channel [00:34] JimBastard: best. project. ever. https://github.com/Marak/badproject [00:35] JimBastard: Saebekassebil: not at all actually. we've had to use some creative solutions for getting SSL to work with httpClient [00:35] mjr_: bingomanatee: of course node lets you write to unix sockets as well, if you want [00:35] JimBastard: we even shell out to curl for some things [00:35] sh1mmer has joined the channel [00:36] aconbere has joined the channel [00:36] Saebekassebil: lol [00:37] Saebekassebil: JimBastard, well.. I'm just going to try to not fuck up my server.. :P [00:38] JimBastard: :-D [00:40] mbrochh has joined the channel [00:40] saschagehlich has joined the channel [00:40] isaacs has joined the channel [00:41] TheEmpath: ugh [00:41] TheEmpath: there are times i wish css() had a callback in jquery [00:43] jakehow has joined the channel [00:45] Saebekassebil: JimBastard, ah. It does make sense! http://en.wikipedia.org/wiki/File:Public_key_shared_secret.svg [00:45] noahcampbell has joined the channel [00:46] JimBastard: Saebekassebil: most things in node do, have faith in the wizards [00:46] JimBastard: :-) [00:46] Saebekassebil: Wise words indeed [00:48] kolor has joined the channel [00:51] kriszyp has joined the channel [00:55] noahcampbell has joined the channel [00:59] markstory: Is it bad practice to use this inside modules. [00:59] markstory: For exporting things that is. [01:02] SubStack: just use exports and module.exports [01:04] mikew3c has joined the channel [01:04] markstory: Is the main difference to module.exports that you can fully replace it? [01:04] markstory: doing exports = {..} seems to make node angry [01:04] SubStack: you can assign into module.exports if that's what you mean yes [01:06] markstory: thanks :) [01:06] tjholowaychuk: markstory: ya, you can do module.exports = MyConstructor [01:06] tjholowaychuk: for example [01:06] tjholowaychuk: is a common thing to do [01:06] appie has joined the channel [01:06] markstory: ok, I was trying that with regular exports, and bad things happened [01:07] tjholowaychuk: I personally do exports = module.exports = MyConstructor; so that if I expose something else whether or not I am exporting a constructor it will work [01:07] tjholowaychuk: instead of an explicit MyConstructor.foo = 'bar' [01:07] noahcampbell has joined the channel [01:13] stepheneb has joined the channel [01:13] bingomanatee_: What is the longest a web socket can be kept up - can it be kept up indefinately, and what can you use to detect and reestalblish broken connections? [01:13] lwille has joined the channel [01:15] rmurphey has left the channel [01:15] skm has joined the channel [01:15] dthompson has joined the channel [01:16] lwille: hi there! can somebody give me a quick advice concerning node_postgres? I'm trying to do some recursive queries to retrieve a tree from the DB and I only get the root node (as, when the leaves are loaded, the request is already sent back to the client). How can I install some sort of callback which gets called when the very last subquery is done? [01:16] skm has joined the channel [01:18] bunuq has joined the channel [01:20] dspree: I noticed node 0.2.5 returns http request headers as an object... it's causing me to lose Set-Cookies when there's several of them (same key).. anyone run into this? [01:20] softdrink has joined the channel [01:20] bingomanatee_: can you post what you have on gist? [01:21] dspree: me? [01:21] bingomanatee_: I was talking to iwille. From what you said its pretty clear whats going on, dspree. [01:21] dspree: k [01:22] bingomanatee_: dspree: sounds like something for dev.nodejs. http://groups.google.com/group/nodejs-dev I would reccommend posting there. You can create a proof of concept on gist for them but I think what you have said already is pretty clear. [01:23] isaacs: dspree: yes, and it's not great. we've discussed it before in the past, and not reached much of a resolution. [01:23] robotarmy has joined the channel [01:23] isaacs: dspree: the options seem to be: 1) do nothing for now, 2) [["key", "val"], ["key", "val"]], 3) {key:["val", "val"]} [01:23] tjholowaychuk: key: [val, val] [01:23] tjholowaychuk: IMO [01:23] isaacs: dspree: so far, option 1 has always prevailed. [01:24] lwille: @bingo, sorry it took me a while. https://gist.github.com/759321 [01:24] bingomanatee_: I like option 3. [01:24] isaacs: tjholowaychuk: you still lose info there, though (the order of the headers) [01:24] dspree: k thanks [01:24] bingomanatee_: now I like option 2 [01:24] tjholowaychuk: isaacs: ? howcome [01:24] bingomanatee_: I am definately not a fan of option 1. [01:24] tjholowaychuk: we are talking about cookies n whatnot right? [01:24] isaacs: also, it leaves open the question of how to handle when there *isn't* more than one header. [01:25] isaacs: should it be key:["val"] or key:"val" [01:25] isaacs: tjholowaychuk: we're talking about any headers. [01:25] tjholowaychuk: ah [01:25] dspree: I'm experimenting with a reverse proxy written in node.js and so it's dropping some Set-Cookies served from the app (http client) [01:25] tjholowaychuk: it should only be an array when multiple are present [01:25] dspree: so if I want to change the format I'm getting the headers in [01:25] dspree: s [01:25] broofa has joined the channel [01:25] dspree: should I be looking at patching the nodejs code to do? [01:25] isaacs: and then should we say that certain headers can be multiple'ed, or only certain headers can't be. [01:25] ajpiano has joined the channel [01:26] dspree: to do so* [01:26] tjholowaychuk: isaacs: we have to many options right now, its so brutal covering for all of them [01:26] isaacs: because in some cases, semantically, the last one wins (ie, if there are multiple content-type headers), and other times the first one wins (connection header) [01:26] stride: ACTION is so going to screw your apps by sending multiple Host headers [01:26] tjholowaychuk: haha [01:26] stride: :> [01:26] isaacs: http: not the sanest protocol. [01:27] isaacs: basically, by the time you get halfway done exploring the problem, everyone's eyes glaze over, and ever solution is sort fo awful in a few edge cases anyway (though most are better than what we have) and no one can agree on what's best. [01:27] stride: does the 1.0 rfc define which one wins for all the regular headers? can't remember having read anything about that [01:27] isaacs: and by that time, the guy who wanted to build a proxy has already gone off and done it in raw tcp [01:28] lwille: @bingomanatee_ I'm loading the root folder in line 40, the callback then loads the child rows by calling format and calls next() to send the response. Problem is: when loading of child rows finished, the response is already long gone :-) [01:28] bingomanatee_: The safest solution is to put all data in arrays - that way you can use a uniform algorithm to digest all the data whether or not the data is serial. [01:28] dspree: ah ok looking at this now https://github.com/isaacs/node/commit/3439395cdd14f58e5c2441b0a68d89085d80b8bd [01:29] bingomanatee_: iwille: plese post what you have on gist. I have never worked with the postgres but i doubt anyone can help you without tangible code to look at. [01:29] stride: bingomanatee_: req.headers.host[0] looks pretty stupid imho. as the "normal" case is that there would only be one value anyway [01:30] lwille: @bingomanatee_ I already did at 2:24 https://gist.github.com/759321 [01:30] isaacs: bingomanatee: i agree. but what about cases where clearly the behavior should be determined by the first or last header [01:30] bingomanatee_: stride: I agree about the LOOKS stupid part. However - you would be able to use a uniform technique to digest the data. [01:30] isaacs: dspree: wow, that commit message is terrible. [01:30] isaacs: can't believe ryah accepted it. [01:30] dspree: hehe [01:30] bingomanatee_: ah right. sorry. [01:30] stride: bingomanatee_: yeah, true [01:31] lwille: @bingomanatee_ the problem isn't with node_postgres, but rather conceptual concerning recursive database queries in general … [01:31] isaacs: really, what you want is for the headers that are semanticaly one thing to be a string (and be the right one), and the the headers that are multiple-able to always be an array [01:32] isaacs: so headers.cookie would be an array, always, and headers.host would be a string, always [01:32] fly-away has joined the channel [01:32] isaacs: and then the raw data (whether as one big string, or an array of tuples, or whatever) should be available somewhere if you really want it. [01:32] isaacs: also, it should not impact the speed even a little. [01:33] bingomanatee_: stride: this (in abstract) is your digest track: https://gist.github.com/759329 [01:33] tjholowaychuk: isaacs: yeah if we can whitelist the ones that can have multiple values that would be nice [01:33] bingomanatee_: Iwille: reading code give me a second [01:33] tjholowaychuk: I dont really care what the solution is [01:33] tjholowaychuk: as long as it is just one [01:33] tjholowaychuk: instead of 3 [01:34] EyePulp has joined the channel [01:34] RevoOf has joined the channel [01:35] isaacs: tjholowaychuk++ [01:35] v8bot: isaacs has given a beer to tjholowaychuk. tjholowaychuk now has 4 beers. [01:35] bingomanatee_: Iwille: can you explain the task you are solving here? [01:36] isaacs: tjholowaychuk: i think also the problem is just having someone who is very familiar with http semantics to sit down and write up a patch. leaving the raw data somewhere would be helpful, too, and could shortcut a lot of discussion. [01:36] isaacs: "don't like it? parse it yourself!" [01:36] tjholowaychuk: haha yeah exactly [01:36] tjholowaychuk: it might not ever be perfect [01:36] bingomanatee_: Anything is better than losing data. [01:36] tjholowaychuk: isaacs: https://github.com/LearnBoost/knox/pull/6 [01:37] tjholowaychuk: was an example patch to support everything haha [01:37] tjholowaychuk: i dont even want to go down that road [01:37] tjholowaychuk: its madness [01:37] dipser has joined the channel [01:38] isaacs: tjholowaychuk: really, part of the problem is that we all (ie: humans) tend to pitch solutions rather than examine problems. [01:38] isaacs: so most solutions are half-baked. [01:38] c4milo1 has joined the channel [01:39] isaacs: and then once we've pitched a few solutions, we start trying to figure out which one is best, rather than trying to figure out if ANY of them actually solve the problem. [01:39] tfe1 has joined the channel [01:39] tjholowaychuk: haha yeah [01:39] bingomanatee_: Iwille: you are using brainc/postgres right? [01:39] lwille: @bingomanatee: well, I have a relatively simple database of folders (a tree of [id, parent_id, name]). I'd like to collect the whole tree into a JSON object and send it to the client. [01:39] tjholowaychuk: I cant pretend like im the amazing one that know it will be fine, because im not but I think a general solution [01:39] tjholowaychuk: would be great [01:39] tjholowaychuk: or just have a configurable whitelist or something [01:39] isaacs: yeah [01:39] lwille: @bingomanatee I'm using https://github.com/ry/node_postgres [01:39] tjholowaychuk: so if someone comes across an edge-case they can tweak it [01:40] isaacs: i think there's something like that already in the http parser. [01:40] stride: hm. apropos pitching solutions. was there an agreement on that IPC protocol thingy? [01:40] isaacs: like, we have a place where we put stupid crazy logic like that. [01:40] isaacs: it should go there. [01:40] bingomanatee_: You may not want to hear this but: mongodb would let you save all that data into a single record. [01:40] dspree: is IncomingMessage.prototype._addHeaderLine the right place to look at? [01:40] lwille: I know, but I have to stick to PG [01:40] bingomanatee_: understood. still working. [01:41] dspree: https://github.com/ry/node/commit/2982e75a0b98a0c6707db2f0f6e7ed740b78a6be [01:41] dspree: looks like that's what I need [01:41] c4milo1 has left the channel [01:42] bingomanatee_: Iwille: is there a way you can flag all the folders you'll need so that instead of a recursive call you can make a single call, then assemble the heirarchy in JS? [01:43] stride: _addHeaderLine already uses an array in 0.3.1 or whatever I have here [01:43] stride: for set-cookie [01:43] dspree: looks like it [01:43] bingomanatee_: I.e., say, store the root_parent in a field in the folder list and find all folders whose root-parent is X (with the join) -- then you can assemble the heirarchy in node after you have made the single query? [01:44] lwille: bingomanatee_: this would be my last option, I would use a nested set for that - but as I would break another existing application, I would rather not change the data model ^^ [01:44] EyePulp: so I've got an object I pass around called "req" representing an incoming request. It has a mongoose based mongodb object in it : req.session. I'm getting some really weird value overwrites if I do a simple console.log() of properties out of req.session - latest version of node, mongoose, etc [01:45] jpld has joined the channel [01:45] jpld has joined the channel [01:47] dnolen has joined the channel [01:47] bingomanatee_: Iwille: I would look at this with a work queue approach. [01:48] lwille: @bingomanatee_: I think this implies too much "work" for such a simple task, I will rather fetch the whole tree (it's single-rooted) and assemble it in memory [01:48] bingomanatee_: Iwille: after every generation, add the full heirarchical path (or just the ID) to an array that you attach to the req object. [01:48] bingomanatee_: Only exit the loop when your list of folders to query on has been empties. [01:48] bingomanatee_: Its a little elaborate, but I don't see any easier way of doing things off hand. [01:49] bingomanatee_: I would also think that you can pre-cache the desired result in a JSON file that you assemble every time you change the data. [01:49] lwille: too bad. well, sounds like my next node.js experiments will involve mongoDB :-) [01:49] bingomanatee_: That I can help you with. [01:50] SubStack: work queues! [01:50] bingomanatee_: But I would point out that caching the data in JSON with every change to the data is just as effective. [01:50] EyePulp: here's the snippet illustrating the odd behavior - code & output: http://pastie.textmate.org/private/6xjljmtzzku8lchpkajabg [01:51] bingomanatee_: There is no reason to requery the database for the same result with every request - the only reason to run these queries is if you know for a fact that the result will be different than the last time you ran it. [01:51] bingomanatee_: SubStack: can you be more specific? [01:52] bingomanatee_: Do you like them or hate them? [01:52] SubStack: I just saw it mentioned [01:52] SubStack: I use them to great effect [01:52] lwille: bingomanatee_: thanks so far [01:53] bingomanatee_: Iwille: the basic flaw I (and you) see is that your exit condition -- i.e., when you choose to render -- is not tied to the important condition of whether or not you have work remaining to do. [01:53] bingomanatee_: That is what work queues are for - and SubStack can help you there better than I. [01:53] DMen has joined the channel [01:54] xSmurf: wink_: RESULTS :D [01:54] SubStack: what's all this about IPC too? [01:55] xSmurf: it's quite lacking error checking though and will likely segfault on the first error :p [01:55] xSmurf: but I can do 10 searches in a row and no segfaults ;DDD [01:55] tjholowaychuk: isaacs: is it possible to expose the express 2.0.0-pre stuff in npm with 1.0.1 still installing by default? [01:55] tjholowaychuk: we are using npm bundle now for our production stuff [01:55] tjholowaychuk: but id like to upgrade some express stuff soonish [01:55] isaacs: tjholowaychuk: yeah, you can just tag it manually. [01:56] isaacs: npm publish whatever ; npm tag express@1.0.1 latest [01:56] isaacs: it makes the "latest" tag a bit of a lie, but whatever. [01:56] tjholowaychuk: sweet, no that sounds perfect haha [01:56] tjholowaychuk: since its not really a release, i just need to expose it since are bundling with npm [01:56] SubStack: isaacs is such a consequentialist! [01:56] isaacs: i've done that to have people test out fixes to npm without dropping it on everyone [01:57] bingomanatee_: Iwille: I know it sounds like "too much solution" but your scenario is such that you can't really know when you are done (and at what point you need to render) after a single iteration of work. [01:57] tjholowaychuk: isaacs: maybe have a --pre flag and check for "-pre" or something in the version [01:57] tjholowaychuk: i dunno [01:57] isaacs: SubStack: of course! principles are only value insofar as they increase the likelihood (and decrease the cost) of positive outcomes. [01:57] isaacs: tjholowaychuk: meh. it's enough of an edge case that i think the current hacky workaround is probably fine. [01:57] bingomanatee_: Iwille: you need to do a unit of work, find out if you have more work to do, and repeat, until you have your heirarchy. [01:57] tjholowaychuk: isaacs: for my situation ideally I would set up an npm publish as a git hook so that --pre would be up to date [01:58] tjholowaychuk: but I could unpublish / publish [01:58] SubStack: I will get around to drawing some Bentham comics here eventually [01:58] polotek has joined the channel [01:58] xSmurf: fawk awesome time for a victory smoke! [01:59] lwille: bingomanatee_, I'll have a look at work queues [02:01] SubStack: something to do with pushing Jeremy Bentham off a bridge to save John Stuart Mill I think [02:01] SubStack: from an oncoming train [02:01] SubStack: or perhaps pushing Kant off a bridge would be more appropriate [02:02] isaacs: SubStack: only if anyone in the same situation would have pushed him off. [02:03] bingomanatee_: Substack: http://dresdencodak.com/2005/06/14/lil-werner/ [02:03] xSmurf: back [02:05] xSmurf: oh right I have some hardcoded value fawk [02:05] TheEmpath: hello nodites! [02:05] TheEmpath: Error: You are trying to call recursively into the Flash Player which is not allowed. In most cases the JavaScript setTimeout function, can be used as a workaround. [02:05] noahcampbell has joined the channel [02:06] TheEmpath: thats what i get when i broadcast data through socket.io every 150ms [02:08] EyePulp: weird - the session.toObject() method produces a valid object structure each time, but it's when I try to directly read the properties of the object that I get the overwrite error [02:09] konobi: paul adam? [02:10] DMen: hey noders, what's the best bet for routing multiple domains to individual node applications on a single server / IP? Nginx? Can spark do this? [02:11] konobi: that will just work [02:11] konobi: DMen: oh, hold on [02:11] isaacs: DMen: you can just have multiple server.listen() calls that each specify different domain names. [02:11] konobi: isaacs: http.server and host headers? [02:12] DMen: Oh, no kidding. I hadn't even considered it, I assumed they could only specify by IP. [02:12] DMen: Thanks! [02:12] isaacs: konobi: i think you can just specify different hostnames in the server.listen(port, hostname) call [02:12] isaacs: ACTION testing now [02:12] konobi: i think hostname is just there for gethostbyaddress() [02:13] stride: that's just for using different / specific interfaces [02:14] konobi: yeah, that's what i thought [02:14] konobi: DMen: probably nginx/spark are what you're after [02:14] stride: in the regular 1/2 NIC configurations of a server that won't help you there [02:14] DMen: in combination? [02:14] DMen: so nginx can route incoming requests to spark, which handles multiple instances? [02:15] eml-mobile has joined the channel [02:15] konobi: you can use spark by itself [02:16] konobi: or you can get nginx to forward traffic to more that one node app that is running [02:16] isaacs: yeah, that totally works. [02:16] amerine has joined the channel [02:16] softdrink has joined the channel [02:16] konobi: spark might be better if you want to support long polling or websockets [02:17] DMen: isaacs: Passing the domain to listen? [02:17] isaacs: DMen: yeah [02:17] isaacs: listen(port, hostname) [02:17] konobi: isaacs: however... having a server.listen that also takes hostname into account might be pretty freaking awesome [02:17] konobi: isaacs: s/hostname/IP Address or interface/ [02:18] konobi: listen is just for TCP listen() [02:18] isaacs: konobi: https://gist.github.com/759374 [02:18] isaacs: konobi: i think you can also call listen() on a socket, but i'm not sure about that [02:19] benburke_ has joined the channel [02:19] konobi: isaacs: sure, but those are different IPs [02:19] isaacs: konobi: no they ain't [02:19] konobi: localhost == 127.0.0.1 [02:19] isaacs: konobi: both are mapped to 127.0.0.1 on my machine [02:19] konobi: foo.local == 10.0.0.12 [02:20] konobi: isaacs: `host cometrocket.local` [02:20] isaacs: konobi: sure, but that's because foo.local isn't mapped that way in your /etc/host file [02:20] Zebra10 has joined the channel [02:20] xSmurf: how do I concat some strings with in v8? [02:20] DMen: Okay, I just tested on a live server [02:20] Zebra10: anyone have any experience with express's connect-mongodb middleware? [02:20] frodenius: xSmurf㇀ string1 + string2 + string3 [02:20] konobi: isaacs: as soon as you use ".local" it's handled differently in the mdns world... it bypasses /etc/hosts for the most part [02:21] DMen: konobi is correct, it won't work with multiple domains pointing to a single IP, both hit the node app. [02:21] frodenius: = string123concatenated [02:21] xSmurf: frodenius: can't get it to work ;/ [02:21] isaacs: konobi: um... ok. so do the same thing, but with "foo" and "Bar" and map them both to 127.0.0.1 [02:21] xSmurf: maybe declaring my strings wrong [02:21] isaacs: still works [02:21] isaacs: same IP [02:21] isaacs: as far as my machine knows, cometrocket.local is only 127.0.0.1 [02:21] isaacs: at least, that's what it tries to ping [02:21] isaacs: and nslookup doesn't find it [02:22] konobi: isaacs: OSX is _weird_ [02:22] isaacs: konobi: sure is :) [02:22] konobi: the resolver libs do bizarre things [02:22] isaacs: yes, if i remove that line from my /etc/hosts file, it finds a 192.168 ip [02:22] isaacs: but, like i said, it doesn't matter. if you have multiple hosts with the same ip, and listen on all of them, node will do the vhost routing for you [02:22] xSmurf: frodenius: maybe I should be more specific, how do I concat two *char's and two const *char's in a single *char [02:22] konobi: yes... based on the tool you are using though... you may get the response from /etc/hsots or the actual interface address [02:23] konobi: lemma have a look at the source [02:23] isaacs: konobi: right. but it doesn't matter even a little in this case. [02:23] isaacs: s/cometrocket.local/foo/ and s/localhost/bar/ and then echo "127.0.0.1 foo bar" >> /etc/hosts [02:23] isaacs: still works [02:23] isaacs: and "foo" and "bar" aren't things that mdns knows about [02:23] isaacs: [02:25] Zebra10: using connect-mongo as a session store with express seems to not work with mongohq/mongolab connection strings. [02:25] Zebra10: any ideas? [02:26] LAmaster has joined the channel [02:26] konobi: isaacs: sure... but foo and bar BOTH resolve to 127.0.0.1 [02:26] DMen: I have 2 separate node apps on a live server, a.com and b.com are both resolving to the same IP, server_a.js listens to 80, a.com. b.com still hits server_a.js and server_b.js won't listen on 80, b.com because the address is in use. [02:27] isaacs: konobi: ok? [02:27] xSmurf: frodenius: think you could help me some more even if I'm being a noob? [02:27] Pilate: DMen: you need a reverse proxy like nginx [02:27] konobi: Spark [02:27] isaacs: DMen: don't just provide the port. also provide the hostname. [02:27] xSmurf: it'd be really appreciated [02:27] DMen: isaacs: I did, server.listen(80,a.com) [02:28] isaacs: DMen: and it's failing? that's odd. [02:28] isaacs: DMen: can you share your code? [02:28] konobi: isaacs: looking at the source... doesn't look like http node stuff doesn't override listen/bind in any way, so it's just TCP then [02:28] DMen: isaacs: Yeah, the second node app throws an EADDRINUSE [02:28] isaacs: DMen: code? [02:29] xSmurf: frodenius: string s1 ("fubar"); doesn't even work, i'm lost :( [02:29] xSmurf: and dumb [02:30] xSmurf: very dumb, sorry [02:31] xSmurf: sprintf, duuuuuh [02:32] isaacs: aha, you'd have to fire off both listen calls before it's done being bound. [02:32] isaacs: that's super weird [02:33] AAA_awright_ has joined the channel [02:33] DMen: isaacs: https://gist.github.com/759383 [02:34] DMen: isaacs: ah yes, you just explained it. [02:34] Wizek__ has joined the channel [02:34] mikew3c has joined the channel [02:35] isaacs: ok, now it's failing for me every which way. [02:35] isaacs: i give up [02:35] frodenius: xSmurf㇀ err wat? [02:35] frodenius: sry was afk [02:35] isaacs: yeah, use spark2, i think it can give you that kind of routing. nginx would be ok if you are just sending small-ish static responses. [02:35] konobi: i think it's literally just low level listen(2) and bind(2) calls [02:36] DMen: yeah, either way I'd like to keep each node server as a separate process, so I'll go with some Nginx / Spark solution. Konobi, Pilate, issacs -- thanks for the help. [02:36] boaz_ has joined the channel [02:36] jpld has joined the channel [02:36] jpld has joined the channel [02:38] opengeard has joined the channel [02:44] xSmurf: frodenius: no worries, I answer my own dumb self ;) [02:45] xSmurf: many thanks anyway [02:45] frodenius: :D [02:45] frodenius: np [02:46] lamacq has joined the channel [02:49] lamacq has joined the channel [02:50] aguynamedben has joined the channel [02:52] technivore has joined the channel [02:53] technivore has left the channel [02:54] TheEmpath: good day nodites [02:58] elijah-mbp has joined the channel [02:58] Zebra10: https://gist.github.com/759396 anyone see why this would hang? [02:59] polotek: anybody know the major differences between waf and scons? [02:59] polotek: why does node use both in different places? [03:00] frodenius: scons is used by v8 [03:00] jdonley83 has joined the channel [03:00] frodenius: waf was/is used by node. ryan wanted to change that [03:00] sechrist has joined the channel [03:00] jchris1 has joined the channel [03:00] frodenius: but i think he failed to some degree or such, otherwise it wouldn't be in [03:01] elijah-mbp has joined the channel [03:01] polotek: hmmm, interesting, thanks [03:01] frodenius: there is a cmake branch from the hp guys too [03:01] polotek: http://www.scons.org/wiki/SconsVsOtherBuildTools#head-91cf190ca6ee2a85173873f5558889468b26e433 [03:02] konobi: scons and waf are related in some way too [03:03] whyme has joined the channel [03:09] markstory: Odd that one of the cons to Waf is "no test cases" [03:10] admc has joined the channel [03:11] lwille: bingomanatee_: thanks for your help, I solved the problem with a simple "work" counter that is incremented before each query and decremented afterwards - only needed ~5 additional lines :-) [03:21] mikew3c has joined the channel [03:22] xSmurf: wow, now if I can finally figure out why Asterisk stopped doing my channel redirects properly I will be a happy man!! [03:24] tpryme has joined the channel [03:24] tpryme has joined the channel [03:26] tmpvar has joined the channel [03:27] tmpvar: yo [03:33] clarkfischer has joined the channel [03:34] MikhX has joined the channel [03:36] polotek: ryah: ping [03:36] Matt____ has joined the channel [03:36] Matt____: hello all [03:37] Matt____: May I ask a question about cygwin and an error? [03:37] JusticeFries has joined the channel [03:40] Matt____: is anyone awake? [03:40] polotek: Matt____: As far as I know, not a lot of people are running cygwin. [03:40] polotek: not sure anyone here would be able to help [03:41] polotek: but shoot with your question anyway [03:43] Matt____: ok well I am using cygwin to build node [03:43] Matt____: i got to the $ make [03:44] Matt____: and got an err #2 task: libv8a SConstruct -> libv8.a [03:44] Matt____: and not sure how to proceede [03:45] polotek: Matt____: building node requires the scons library [03:45] polotek: I'm assuming you can install it on cygwin [03:46] zemanel: Matt____: found this on google taht may be useful http://codebetter.com/matthewpodwysocki/2010/09/08/getting-started-with-node-js-on-windows/ [03:46] polotek: SConstruct is the script file it uses, that's where I'm getting that from. [03:46] ryah: polotek: hello [03:46] polotek: ryah: hey, quick question [03:46] Matt____: ok let me try this [03:47] polotek: does node use scons for anything or only v8? [03:47] aconbere has joined the channel [03:47] ryah: polotek: only for v8 [03:48] polotek: it looks like node shops with scons under the tools folder [03:48] ryah: ships, yes [03:48] polotek: would it be advisable to use that if a user doesn't have scons installed in their path? [03:49] polotek: that's the most frequent issue people have with installing libxmljs. they don't have scons [03:52] technoweenie has joined the channel [03:54] zemanel: Matt____: you could also replace windows with linux, let's say gentoo, and in a couple of months when you come back, well at least you're running node [03:54] tmpvar: or use virtualbox [03:54] zemanel: :) [03:54] Matt____: lol [03:55] Matt____: hey gimie a break, I at least read the documentation before asking a nobrainer question ;-D [03:56] chapel: hmm, does anyone have issaacs irc bot log link? [03:58] ryah: polotek: are you using scons to build libxmljs? [04:00] bingomanatee_: Iwille: that sounds practical. [04:00] polotek: ryah: yeah [04:00] polotek: exclusively, not waf [04:01] zemanel: am i rich yet? [04:03] LAmaster: why the hell grep doesn't work on cygwin? :( [04:06] bingomanatee_: Because otherwise you would have no way of remembering that using windows to program on means you are a bad progrmmer. [04:06] zemanel: LAmaster: you could also replace windows with linux, let's say gentoo, and in a couple of months when you come back, well at least your grep will be working [04:07] mjr_: I'm surprised that cygwin is still a thing. It came out forever ago, back before we had virtualization. [04:07] bingomanatee_: I prefer ubuntu. [04:07] bingomanatee_: but its all good. [04:07] mjr_: Surely virtualbox et. al. are a better solution than cygwin? [04:07] polotek: mjr_: I thought that too [04:07] polotek: then I finally figured it out [04:08] bingomanatee_: That implies that cygwin qualifies as a solution. [04:08] LAmaster: i have a mac and centOS VMs and it works fine on both :) [04:08] polotek: lots of employers don't give their programmers enough RAM to make running vms every day an acceptable proposition [04:08] bingomanatee_: linode is an SSH away. [04:08] mjr_: whaa? Not enough RAM to run a virtual OS? [04:09] mjr_: RAM is so cheap these days. [04:09] jesusabdullah: hooray for linode :) [04:09] bingomanatee_: You can buy a second laptop for < $400, or a linode for $20/mo. [04:09] polotek: yeah, but it also doesn't go as far as it used to [04:09] polotek: I can kill 4GB without trying too hard [04:10] bingomanatee_: Or you can do what I am planning to do this weekend, get a laptop, put Ubuntu on it, and give your POS windows box back to the chump who gave it to you. [04:10] mjr_: Yeah, in this age of cheap VPS providers, cygwin doesn't make sense to me. [04:10] aurynn: Cygwin makes less sense than virtualbox. [04:10] mjr_: There are SO many better options that give you real, honest Linux than struggling with cygwin. [04:10] chapel: its sad that people are so attached to windows that they dont even consider vm or vps [04:11] polotek: lots of people don't like *nix [04:11] chapel: thats sad as well [04:11] chapel: I prefer osx [04:11] bingomanatee_: Windows is great. I mean, I'll take steam over a pansy-ass PS3 any day. [04:11] polotek: they're fine with windows and they only care about a command prompt when the need to ssh [04:11] mjr_: I guess cygwin does sound really tempting. It sounds like you can just get some Unix libraries on your Windows computer and keep on moving. [04:11] chapel: bingomanatee_: I have steam :P [04:11] jesusabdullah: Everyone knows Xbox is where it's at [04:11] jesusabdullah: Also, Wii [04:11] chapel: jesusabdullah: yep xbox [04:12] polotek: doesn't steam run on the mac now? [04:12] zemanel: it does [04:12] chapel: I played some dance central, was awesome [04:12] jesusabdullah: Hah :D [04:12] polotek: dance central is actually awesome. you don't feel stupid until AFTER you're done playing [04:12] chapel: haha [04:12] zemanel: but not every game is available on osx steam [04:12] chapel: yeah [04:12] chapel: or youre too tired/sore to care [04:15] zemanel: ACTION wonders if or why hasn't anyone created a tron lighcycle web game with node and htm5 canvas [04:17] chapel: heh [04:23] PyroPete1 has joined the channel [04:23] polotek: ryah: you still there? [04:27] KyleXY has joined the channel [04:27] tpryme: Anyone using a testing framework that works both server-side and browser-side? [04:27] pyrotechnick has joined the channel [04:27] KyleXY has joined the channel [04:29] ryah: yes [04:30] losing has joined the channel [04:30] ryah: trying to get mraleph's gdb plugin to work ^^ [04:32] polotek: ryah: nice, saw your tweet about it [04:32] polotek: just wanted to get your input about scons [04:32] polotek: would it be smart to try to use the one that comes with node [04:32] polotek: I would need to set it up in the make file [04:32] polotek: any tips on that? [04:34] mjr_: pretty excited about that gdb patch. [04:34] ryah: polotek: [04:34] dspree: ryah: sorry for this off topic q, but im using nginx-ey-balancer, do you know if the max conn queue persists through an nginx reload? [04:34] ryah: polotek: no, that wouldn't be good. it's just in the source code - it doesn't get installed with node [04:34] mjr_: gdb and oprofile into the JIT zone is astoundingly useful. [04:34] ryah: dspree: it should [04:35] pyrotechnick has left the channel [04:35] namelessnotion_ has joined the channel [04:35] polotek: ryah: thanks, that's all I needed to know. I'll just print a helpful message if it's not there. [04:35] dspree: so when it says max_connections_init after I reload, it'll still count the connections before that reload as part of the max_connections for a backend? [04:36] ryah: dspree: i would imagine - i'm nto totally sure [04:36] dspree: k thanks [04:37] ryah: mjr_: yes. unfortunately the gdb plugin seems unusably slow at the moment [04:38] ryah: i'll push the patch to a branch on ry/node [04:38] rchavik has joined the channel [04:38] namelessnotion has joined the channel [04:39] saschagehlich has joined the channel [04:39] ryah: about 5 minutes to start a helloworld server [04:39] mjr_: yikes [04:39] mjr_: I'm not sure I would have waited that long. [04:41] ryah: https://gist.github.com/759467 [04:41] wycats has joined the channel [04:41] ryah: it works though! [04:42] datapimp has joined the channel [04:42] mjr_: that's cool. Does startup time increase with code size? [04:43] mjr_: Or is it just always 5 minutes? [04:43] boaz has joined the channel [04:43] ryah: it seems that way [04:43] ryah: it's really really slow [04:43] ryah: about a minute to serve a response [04:43] mjr_: zounds [04:50] CIA-121: node: 03Ryan Dahl 07gdbjit * r3f45187 10/ (15 files in 3 dirs): (log message trimmed) [04:50] CIA-121: node: apply mraleph's gdbjit [04:50] CIA-121: node: http://codereview.chromium.org/5965011/ [04:50] CIA-121: node: To test: [04:50] CIA-121: node: % ./configure --debug --dest-cpu=ia32 --without-ssl --without-snapshot [04:50] CIA-121: node: % make [04:50] CIA-121: node: % gdb --args ./node_g --gdbjit benchmark/http_simple.js [04:54] mikeal has joined the channel [04:55] tmpvar: ryah, does the javascript side of EventEmitter still use node_events.cc? [04:55] tmpvar: or is that c->c++ calls? [04:56] polotek has joined the channel [04:57] ryah: tmpvar: not really [04:57] ryah: the c++ EventEmitter is going away [04:58] pyrotechnick has joined the channel [04:58] pyrotechnick: did tj leave? [04:58] pyrotechnick: ffs [04:58] tmpvar: ryah, ok, I've wanted to bundle this up as a module for quite some time. I have a use for it on the browser.. looks like its safe to do now [04:58] pyrotechnick: omfg ryah is here [04:59] Aria has joined the channel [04:59] tmpvar: Aria, hello [04:59] pyrotechnick: ryah i dont want to bother you too much but i have a quick question [04:59] jesusabdullah: What module is this? [04:59] polotek: does node-inspector not show code from required modules? [04:59] pyrotechnick: github.com/feisty/node-bullet [05:00] tmpvar: jesusabdullah, eventemitter, coming soon.. [05:00] Aria: Hey, tmpvar [05:00] pyrotechnick: im trying to write bindings to bullet physics, i tried node-ffi with bullets C API but its a bit incomplete so im back to writing proper bindings [05:00] pyrotechnick: anyway i just need a shove in the right direction. for instance the first thing you do in bullet is instantiate a config object like btConfig* config = new btConfig; [05:01] polotek: pyrotechnick: have you checked out node_postgres? [05:02] polotek: it's a pretty good example of how to do a binding [05:02] pyrotechnick: yeah but it doesnt really "wrap" any objects like that [05:02] pyrotechnick: would i have to make a config object to represent that like class Bullet::Config extends ObjectWrap [05:02] pyrotechnick: or is there an easier way to just "wrap" a c++ class and pass it straght thru to the js [05:02] ryah: pyrotechnick: there isn't an easy way [05:02] pyrotechnick: ok thanks, so im on the right track? [05:02] polotek: yeah, if you want to expose stuff to js, you need a C++ class [05:02] ryah: pyrotechnick: subclassing the ObjectWrap is the way [05:03] jesusabdullah: bullet physics? [05:03] polotek: pyrotechnick: what problems did you have with node-ffi? [05:03] jesusabdullah: I should make those gsl bindings [05:03] jesusabdullah: SOMEDAY [05:04] tmpvar: jesusabdullah, lol [05:04] pyrotechnick: node-ffi can only do c [05:04] tmpvar: jesusabdullah, check out node-ogl ;) [05:04] pyrotechnick: and the C API of bullet is secondary and incomplete [05:04] polotek: writing node C/C++ bindings is loads of fun [05:04] polotek: until it's not [05:04] tmpvar: lol [05:05] pyrotechnick: thanks ryah i will keep going like i am and check in before i get too far [05:05] jesusabdullah: node-ogl? [05:05] jesusabdullah: No wai [05:05] jesusabdullah: I'm a SCIENTIST not a GRAPHIXICIAN [05:05] pyrotechnick: yeah... [05:05] pyrotechnick: and theres [05:05] bingomanatee_: <-- working on client side PHP. [05:05] tmpvar: jesusabdullah, its rough.. but it worked at one point ;) [05:05] pyrotechnick: node-webgl made by my friend [05:06] polotek: bingomanatee: ... why? [05:06] jesusabdullah: Time to see if my famiry called :/ [05:07] bingomanatee_: ca$h Bi$ne$$$ [05:07] jesusabdullah: pyrotechnick: link? [05:08] pyrotechnick: sure [05:08] pyrotechnick: sec [05:08] pyrotechnick: https://github.com/pufuwozu/node-webgl [05:08] pyrotechnick: if u replaced all the devil shit with node-canvas it would be pure win [05:08] pyrotechnick: he doesnt have the time anymore though [05:10] jesusabdullah: I kinda wonder if you could use webgl for some kind of weird parallel to gpgpu [05:12] PyroPeter has joined the channel [05:12] PyroPeter has joined the channel [05:12] jesusabdullah: probably not [05:13] rauchg_ has joined the channel [05:13] pyrotechnick: yeah yu can [05:13] pyrotechnick: but i think webcl will come soon [05:14] pyrotechnick: but yeah u can do it in webgl [05:14] pyrotechnick: want me to dig up the links? [05:14] pyrotechnick: (ps. you're talking to the right person about webgl) :) [05:15] mjr_: pyrotechnick: what are you doing with webgl? [05:15] pyrotechnick: http://learningwebgl.com/blog/?p=1828 [05:15] pyrotechnick: MMO [05:15] pyrotechnick: github.com/feisty [05:15] pyrotechnick: youtube.com/users/pyrotechnick [05:15] pyrotechnick: watever youtube links are [05:15] pyrotechnick: i forget [05:15] softdrink has joined the channel [05:15] pyrotechnick: http://www.youtube.com/user/pyrotechnick [05:16] pyrotechnick: thats some old stuff [05:16] pyrotechnick: we're using three.js now [05:16] tmpvar: pyrotechnick, i think node-sfml + node-canvas + node-webl might be interesting [05:16] pyrotechnick: yeah [05:16] pyrotechnick: probably better than SDL [05:16] tmpvar: yeah [05:16] pyrotechnick: u shud do it [05:16] tmpvar: all in good time lol [05:16] pyrotechnick: ill ask brian for commit access [05:17] pyrotechnick: he's doing some stuff for us [05:18] paulrobinson has joined the channel [05:19] benburkert has joined the channel [05:19] pyrotechnick: personally i think the better way to do it [05:19] pyrotechnick: is use like [05:19] pyrotechnick: a Site Specific Browser [05:19] pyrotechnick: or embed webkit/chromium somehow [05:19] pyrotechnick: into the node app [05:19] tmpvar: why? [05:19] tmpvar: that sounds like a horrible idea, imo [05:20] pyrotechnick: because webgl is a big and fast moving standard [05:20] pyrotechnick: the thought of trying to keep up with it is [05:20] pyrotechnick: daunting [05:20] tmpvar: fair enough [05:20] tmpvar: too bad browsers cant run ES [05:20] pyrotechnick: ES? [05:20] tmpvar: opengl es [05:20] benburkert has joined the channel [05:20] pyrotechnick: so that way you could leverage the implementation and still have it feel like a native app [05:20] pyrotechnick: well webgl is ES [05:21] tmpvar: sort of [05:21] pyrotechnick: its just got javascript bindings [05:21] pyrotechnick: its pretty fucking close [05:21] tmpvar: and a weird api [05:21] pyrotechnick: its not that weird [05:21] pyrotechnick: its just "javascripterised" [05:21] pyrotechnick: i prefer it [05:21] tmpvar: its not the same as es either [05:21] pyrotechnick: i prefer webgl than awkwardly trying to use html5 elements with opengl es [05:21] pyrotechnick: anyway if u want es [05:22] pyrotechnick: u can use like NaCl or something [05:22] tmpvar: heh, i'd rather have lower level access and have people build user-land api's on top of it [05:22] pyrotechnick: lower than webgl? [05:22] pyrotechnick: webgl is not really that much higher than opengl [05:22] pyrotechnick: have you done any? [05:22] pyrotechnick: or just looked at it? [05:22] tmpvar: i saw the spec, and ran [05:22] tmpvar: heh [05:22] pyrotechnick: yeah [05:22] pyrotechnick: i think if u dug into it [05:22] pyrotechnick: you'd see that porting an es app would only be a few transforms [05:23] pyrotechnick: aside from the whole c->js thing [05:23] pyrotechnick: the actual calls themselves [05:23] pyrotechnick: are 95% the same or more [05:23] tmpvar: got ya [05:23] pyrotechnick: depending on what features you're using and extensions, if any [05:23] tmpvar: right [05:23] tmpvar: extensions are the big ones [05:23] pyrotechnick: but webgl has extensions now [05:23] pyrotechnick: the first one is float textures [05:23] tmpvar: oh yeah? you use them the same way? [05:23] pyrotechnick: so we can do shadowing now [05:23] pyrotechnick: yep [05:23] pyrotechnick: and theres a few others nearing ratification [05:23] tmpvar: interesting [05:24] pyrotechnick: who wanted the matrix stuff [05:24] pyrotechnick: the gpgpu stuff [05:24] pyrotechnick: its this link http://learningwebgl.com/blog/?p=1828 [05:25] tmpvar: fun [05:25] tmpvar: yeah, opencl looks great [05:25] pyrotechnick: well i honestly dont think itll be long until gpgpu makes it into html5 [05:25] tmpvar: im particularly excited about gallium and wayland though.. which is in the complete opposite direction lol [05:25] tmpvar: should be nice :) [05:25] pyrotechnick: whether its on top of webgl or separate it doesnt mattter but i guarantee it wont be long [05:25] slloyd has joined the channel [05:26] pyrotechnick: what are they [05:26] mape: tmpvar: Do you know of any issues using jdom where "ReferenceError: navigator is not defined" keeps being thrown? [05:26] pyrotechnick: oh cool [05:27] pyrotechnick: yeah that looks fucking sweet man i didnt know they were working on this stuff [05:27] pyrotechnick: we're writing a js llvm backend for glsl [05:27] pyrotechnick: like i mean [05:27] pyrotechnick: webgl glsl for glsl [05:27] pyrotechnick: not much diff [05:27] mape: tmpvar: nm, sorry that was me using the jquery package on npm, need to start keeping track of what I use on what project [05:27] ezmobius has joined the channel [05:28] tmpvar: np [05:28] tmpvar: pyrotechnick, exciting times! [05:29] pyrotechnick: def [05:29] pyrotechnick: node.js/WebGL is the most amazing combination [05:29] pyrotechnick: we literally copy and past between the server [05:29] pyrotechnick: and the client [05:29] devdrinker has joined the channel [05:29] zemanel: i had a post about it on the mailing list a couple of months ago [05:30] pyrotechnick: anyway we [05:30] pyrotechnick: are looking for contributors if you are interested [05:30] zemanel: mostly about creating a cuda modle for node [05:30] pyrotechnick: hmm [05:30] pyrotechnick: that would be cool [05:30] pyrotechnick: is physx like [05:30] pyrotechnick: free [05:30] pyrotechnick: or what [05:30] zemanel: physx? [05:30] pyrotechnick: what about cuda [05:30] pyrotechnick: physx... [05:31] pyrotechnick: by nvidia [05:31] tmpvar: are there opencl implementations out there these days? [05:31] pyrotechnick: yes [05:31] tmpvar: (mesa or w/e) [05:31] tmpvar: nice [05:31] zemanel: tmpvar: there are [05:31] pyrotechnick: would using cuda from node be free [05:31] zemanel: except that i dunno C/C++ [05:31] zemanel: ye [05:31] pyrotechnick: what about physx [05:31] zemanel: dont remeber the license but its freely available [05:31] pyrotechnick: cuz if it is ill drop bullet in a second [05:31] zemanel: theres even a linux sdk [05:32] zemanel: and osx [05:32] tmpvar: pyrotechnick, i'd love to help.. need more time! [05:32] pyrotechnick: sokay [05:32] pyrotechnick: just watch the projects then [05:32] pyrotechnick: thats just as good [05:32] pyrotechnick: thanks [05:33] pyrotechnick: maybe add feistystudios if u use twitter [05:33] tmpvar: ah [05:33] tmpvar: will do [05:33] ewdafa has joined the channel [05:33] pyrotechnick: http://en.wikipedia.org/wiki/Software_license [05:33] pyrotechnick: http://en.wikipedia.org/wiki/Proprietary_software, http://en.wikipedia.org/wiki/Freeware, Commercial [05:34] pyrotechnick: NOTE: All binary PhysX SDKs are free for commercial and non-commercial uses* [05:34] rchavik has joined the channel [05:34] pyrotechnick: so i can link against them from node right? [05:34] pyrotechnick: for free [05:34] zemanel: i guess so [05:34] pyrotechnick: do u recon it runs on linux [05:35] zemanel: but wait, whats PhysX? :) [05:35] zemanel: oh i see [05:35] pyrotechnick: its a physics engine [05:35] pyrotechnick: that can use gpgpu [05:35] pyrotechnick: cuda or opencl [05:35] pyrotechnick: to leverage the graphics card [05:35] pyrotechnick: its the successor to those PPUs that were going to come out [05:35] tmpvar: they also have hardware afaik [05:35] pyrotechnick: they were going to [05:36] pyrotechnick: now they just use nvidia graphics cards with cuda [05:36] zemanel: but arent you more interested in cuda? which is the api to work with the gpu? [05:36] pyrotechnick: no we need physics for our mmo [05:36] pyrotechnick: our servers dont have graphics cards [05:37] zemanel: ah i get the picture [05:37] zemanel: browser mmo? [05:37] pyrotechnick: yeah [05:37] zemanel: nice another timesink :) [05:37] pyrotechnick: AFAIK theres only a handful of people attempting it [05:37] pluma has joined the channel [05:37] pyrotechnick: and they all FUCKING suck [05:37] pyrotechnick: like second life is trying [05:37] pyrotechnick: and the sirikata guys are trying [05:38] pyrotechnick: but unfortunately they just dont understand the platform [05:38] pyrotechnick: so its real slow and bad [05:38] pyrotechnick: i doubt theyd use node too [05:38] pyrotechnick: theyre just using c/c++ [05:38] pyrotechnick: which makes sense sometimes [05:38] pyrotechnick: for the physics for instance [05:38] pyrotechnick: but not for the networking [05:38] pyrotechnick: and scripting [05:40] zemanel: yeah but will you be able to dance around naked and have mounts and fly and stuff? [05:40] zemanel: :) [05:40] pyrotechnick: umm [05:40] pyrotechnick: yes yes and yes [05:40] pyrotechnick: its like minecraft [05:40] pyrotechnick: but an mmo [05:40] pyrotechnick: so like [05:40] pyrotechnick: wow X minecraft X eve [05:41] zemanel: i dunno minecraft, just wow and eve [05:41] pyrotechnick: well in minecraft [05:41] zemanel: but i think ive read about it [05:41] pyrotechnick: you can create. destroy and minipulate voxels [05:41] pyrotechnick: cubes about half the size of you [05:42] zemanel: if you throw a zero point energy device, im sold [05:42] skm has joined the channel [05:42] pyrotechnick: yeah thats why we want a proper physics engine TBH [05:42] pyrotechnick: wait i didnt mention GMod [05:42] pyrotechnick: so yeah [05:42] pyrotechnick: wow x minecraft x eve x gmod [05:42] zemanel: looks ambicious [05:42] pyrotechnick: camera, controls, interface and physics of wow [05:43] pyrotechnick: voxels of minecraft [05:43] pyrotechnick: sandbox of eve [05:43] pyrotechnick: and physics sandbox of gmod [05:43] pyrotechnick: yeah we're getting there [05:43] pyrotechnick: its easy in javascrip [05:43] pyrotechnick: and even easier in coffee ;) [05:43] zemanel: can we camp noobs in portals ? :) [05:43] pyrotechnick: yeah but most classes will be non-combat [05:44] bingomanatee_: can you kill actual players with it? [05:44] zemanel: konkordooken [05:44] bingomanatee_: by which I mean, actual people? [05:44] pyrotechnick: physicist, technician (can code in the game), chemist, biologist, phycologist etc [05:44] pyrotechnick: and architect [05:44] pyrotechnick: so if ur an architect [05:44] pyrotechnick: and want a script for generating buildings [05:44] zemanel: actually behing able to hack the virtual world ala matrix would be pretty cool [05:44] devdrink_ has joined the channel [05:44] zemanel: at least theoretically [05:44] pyrotechnick: i can make it for you while you go ask a chemist for the materials [05:45] pyrotechnick: thats what itll be like [05:45] pyrotechnick: being a technician is like being 'the one' in the matrix [05:45] pyrotechnick: but to physically manipulate the world you need other classes [05:45] pyrotechnick: you just coordinate it with your scripts [05:45] zemanel: i guess i should just start hacking on the red dress woman [05:45] pyrotechnick: yep [05:45] zemanel: ;p [05:46] pyrotechnick: set her clothes opacity to 0 [05:46] zemanel: :) [05:46] zemanel: im kidding but i aint teasing, hope it works out [05:47] zemanel: i cant help on the c level but if you need a beta tester on osx i can help [05:49] pyrotechnick: cool [05:49] pyrotechnick: github.com/feisty [05:50] devdrinker has joined the channel [05:52] AAA_awright_ has joined the channel [05:53] devdrink_ has joined the channel [05:54] pyrotechnick: i was pretty pumped about physx being free, until i tried to sign up [05:54] pyrotechnick: retarded [05:58] zemanel: ye i tried registering as a cuda developer and got shot down [05:58] pyrotechnick: its just not how you run a software company [05:58] pyrotechnick: which is why i think theyre a hardware company [06:03] beawesomeinstead has joined the channel [06:04] zemanel: anyone using node as social apps backend? [06:04] zemanel: like facebook or else? [06:04] pyrotechnick: nah but we're doing a little social network thing [06:05] pyrotechnick: like steam [06:05] polotek: Anyone know what determines the buffer size when reading from files? [06:05] polotek: or from the network even? [06:05] zemanel: pyrotechnick: what aspect of steam? [06:05] technoweenie has joined the channel [06:05] pyrotechnick: the "who is in what game" [06:05] cagdas has joined the channel [06:05] pyrotechnick: "join game" [06:06] pyrotechnick: "history" [06:06] zemanel: doesnt raptr do that? [06:06] pyrotechnick: link [06:07] zemanel: http://raptr.com/ [06:07] pyrotechnick: is it a native app [06:07] pyrotechnick: yeah [06:07] pyrotechnick: ive seen this [06:07] pyrotechnick: but yeah this will all be 'in the cloud' html5 stuff [06:07] zemanel: i dont use it, i just have been finding it around [06:07] pyrotechnick: perhaps with a native deamon for detecting the native games like raptr does but its mainly for our cortex platform for html5 games [06:07] pyrotechnick: so yes [06:07] KyleXY has joined the channel [06:07] pyrotechnick: something like raptr [06:07] pyrotechnick: but in html [06:08] zemanel: hum [06:08] CIA-121: node: 03Ryan Dahl 07debugger * r25261a6 10/ (lib/_debugger.js src/node.cc src/node.js): Rather have the debugger be parent process - http://bit.ly/hABrJb [06:09] zemanel: i dont really like people knowing about when i game [06:10] zemanel: or more exactly, at least feeling an urge to publicize it [06:10] blaines has joined the channel [06:11] zemanel: but i ma big fan of steam [06:11] pyrotechnick: yeah [06:11] pyrotechnick: well i do [06:11] pyrotechnick: and so do alot of people [06:11] pyrotechnick: each to his own [06:11] pyrotechnick: not facebook log style [06:11] pyrotechnick: but steam realtime style [06:11] pyrotechnick: i like [06:11] pyrotechnick: its more useful [06:11] zemanel: indeed [06:11] zemanel: i think even other induestries could learn from it [06:12] kylefox has joined the channel [06:12] pyrotechnick: definately [06:12] zemanel: http://zemanel.eu/on-filesharing-steampowered-and-the-film-indu [06:12] kylefox: Hey everyone, I'm having trouble determining if it's possible to write UDP client/servers with Node. Can it be done? [06:13] kylefox: See TCP/HTTP can be done easily enough... [06:13] pyrotechnick: kylefox: definately [06:13] pyrotechnick: ryah: kylefox has a question [06:13] pyrotechnick: (ryah wrote node.js) [06:13] pyrotechnick: but he's a busy man so keep it short ;) [06:14] pyrotechnick: he'll be back sometime [06:14] pyrotechnick: just stick around [06:14] kylefox: haha cool. [06:15] frodenius: kylefox㇀ it can be done [06:15] frodenius: see the dgram module [06:15] kylefox: I found a video that talks about it: http://journal.paul.querna.org/articles/2010/12/15/udp-in-node-js/ [06:16] kylefox: frodenius: awesome, thanks. [06:17] zemanel: pyrotechnick: i'm looking to do a fb app on the side, nothing shiny, but that would possibly help with the bills [06:19] pyrotechnick: i feel your pain [06:19] bingomanatee_: are there any fb-centric npm packages [06:19] pyrotechnick: i was thinking of doing something like http://mrdoob.com/projects/voxels/ [06:19] pyrotechnick: as a facebook app [06:19] pyrotechnick: sell different block types etc [06:21] nonnikcam has joined the channel [06:21] zemanel: pyrotechnick: dont think you do :) [06:22] pyrotechnick: huh [06:22] pyrotechnick: nah i d [06:22] pyrotechnick: ido [06:22] pyrotechnick: i have no moolah ;) [06:22] pyrotechnick: $0 [06:22] pyrotechnick: -$ in fact [06:22] pyrotechnick: but we wont talk about that ;) [06:23] zemanel: ye luckyly i just got paid for my last dojo gig :) [06:23] zemanel: btw the voxel thing is nice [06:23] chorrell has joined the channel [06:25] jpld has joined the channel [06:26] sh1mmer has joined the channel [06:29] zemanel: pyrotechnick: why dont you do something mmo'ish where ppl on fb build their own world [06:30] pyrotechnick: definately would be popular [06:30] pyrotechnick: thats sort of getting to the stage of our game [06:30] pyrotechnick: but i mean it would be a nice stepping stone [06:30] pyrotechnick: get some publicity, maybe some capitol [06:30] rchavik has joined the channel [06:33] zemanel: perhs you should get the thing working and ppl using it [06:34] zemanel: its easier to "sell" something working than an idea [06:36] pyrotechnick: lol yeah we're just concentrating on our game atm [06:37] zemanel: http://sahillavingia.com/blog/2010/12/28/build-apps-not-businesses/ [06:37] zemanel: but i can get you a "build businesses not apps" link if you'd like [06:38] pyrotechnick: yep [06:38] zemanel: :) [06:39] pyrotechnick: thats something ive adopted over the last 3 months or so [06:39] pyrotechnick: thanks for the link [06:39] pyrotechnick: ill have some more if you have them [06:40] zemanel: with http://news.ycombinator.com and #startups you'll learn everything you dont need [06:40] zemanel: :D [06:40] aurynn: so how do I use Object.create() successfully? [06:42] frodenius: aurynn㇀ http://stackoverflow.com/questions/2709612/using-object-create-instead-of-new [06:44] aurynn: Ah! Thanks [06:44] admc has joined the channel [06:45] zemanel: pyrotechnick: http://ycombinator.com/lib.html [06:46] pyrotechnick: Object.create is slow as aids [06:46] pyrotechnick: if you're concerned about performance i would not use it [06:46] pyrotechnick: but if you're not then i would suggest you do [06:47] pyrotechnick: since it's more powerful and more succinct [06:47] frodenius: pyrotechnick㇀ you have a benchmark or sth? [06:48] pyrotechnick: sth? [06:48] xSmurf: someone here mentioned being an asterisk guru earlier... if you're still around I could really help a push to figure out why I can't seem to steal channels with redirect anymore [06:48] pyrotechnick: single thread? [06:48] pyrotechnick: ./redis [06:49] tpryme has joined the channel [06:51] frodenius: something [06:52] pyrotechnick: sth [06:52] pyrotechnick: right [06:52] frodenius: hm is that abbr too old? [06:52] pyrotechnick: that must be some foreign thing [06:52] pyrotechnick: im 21 [06:52] frodenius: :) [06:52] 92AAB0925 has joined the channel [06:52] 45PABMNDR has joined the channel [06:52] frodenius: maybe it is [06:52] devdrinker has joined the channel [06:52] frodenius: so anyway, have you tested Object.create performance? [06:55] kriszyp_ has joined the channel [06:55] pyrotechnick: yes [06:55] pyrotechnick: ill dig it up [06:56] pyrotechnick: http://jsperf.com/object-create-vs-constructor-vs-object-literal [06:57] devdrink_ has joined the channel [07:00] pyrotechnick: its _very_ slow [07:03] void_ has joined the channel [07:03] frodenius: hm yep, but thats not a very good use case [07:03] pyrotechnick: right, its a micro benchmark but its still very slow [07:04] pyrotechnick: those numbers are so far apart it's hard to argue a real world example would make that much of an impact [07:04] pyrotechnick: anyway its nice if you dont need performance [07:05] mikew3c has joined the channel [07:16] eboyjr has joined the channel [07:16] eboyjr: I need an easy way to do HTML templates for use with HTTPServers, nun doesn't seem very easy to use [07:17] eboyjr: What do most people do? [07:17] pyrotechnick: you just want a templating engine for node.js [07:17] pyrotechnick: ? [07:17] fangel has joined the channel [07:17] eboyjr: Yes well I don't think inlining my HTML code in the javascript would be the best idea [07:17] eboyjr: pyrotechnick: What do you recommend? [07:18] pyrotechnick: right [07:18] pyrotechnick: are you using coffeescript or vanilla js? [07:18] eboyjr: vanilla js [07:18] eboyjr: never used coffeescript myself [07:21] Aria: eboyjr: I hear good things about Mustache [07:21] zemanel: haml? [07:22] pyrotechnick: mustache, haml, jade [07:22] pyrotechnick: much of a muchness [07:22] pyrotechnick: if you're using coffee then try coffekup or eco [07:22] dnolen has joined the channel [07:22] gkatsev: eboyjr: are you sure you aren't doing it wrong? :P [07:22] eboyjr: I just need a header and footer, really [07:23] eboyjr: gkatsev: I don't even know lol [07:23] pyrotechnick: right [07:23] gkatsev: lol [07:23] pyrotechnick: are you using a framework [07:23] bingomanatee_: Hey has anyone ever tried to use node to enter / update a git repos? [07:23] eboyjr: No I want it as light as possible, pyrotechnick. It's a simple IRC bot that needs a http server to access factoids [07:24] zemanel: i have sometning for you [07:25] zemanel: json-template [07:27] hobodave has joined the channel [07:29] zemanel: eboyjr: https://github.com/andychu/json-template [07:30] eboyjr: zemanel: That might be a bit much perhaps [07:31] zemanel: its as simple as it gets [07:31] amerine has joined the channel [07:32] bdmth has joined the channel [07:32] derren13 has joined the channel [07:34] devdrinker has joined the channel [07:35] rchavik has joined the channel [07:39] peritus_ has joined the channel [07:40] muhqu has joined the channel [07:41] hobodave has joined the channel [07:48] yozlet has joined the channel [07:50] Zebra10 has joined the channel [07:51] SamuraiJack has joined the channel [07:52] Zebra10: I'm having some issues with using connect-mongodb and mongohq/mongolab [07:52] Zebra10: anyone have experience using that express middleware and mongo? [07:52] AAA_awright_ has joined the channel [07:52] Zebra10: mongohq* [07:52] bingomanatee_: thats two questions right? [07:54] tpryme has joined the channel [07:55] Zebra10: i guess it is [07:56] Zebra10: well its kinda just one question [07:56] Zebra10: if someone has experience using that stack [07:56] Zebra10: for me it appears to connect fine, but it won't write to the collection on mongohq or mongolab but does so fine on local [07:57] isaacs has joined the channel [07:57] Zebra10: kinda following this http://dailyjs.com/2010/12/06/node-tutorial-5/ [07:57] opengeard has joined the channel [07:58] faust45 has joined the channel [08:00] cwo has joined the channel [08:01] ivanfi has joined the channel [08:04] ezmobius has joined the channel [08:04] zentoooo has joined the channel [08:09] guybrush: bingomanatee_: howtonode runs with git-fs which is a wrapper for git in cmd-line [08:09] guybrush: you could easily extend git-fs to fit your needs [08:09] guybrush: ah [08:09] pyrotechnick: thanks [08:09] guybrush: howtonode runs with wheat [08:09] bingomanatee_: excellent. [08:10] guybrush: and wheat runs with git-fs :) [08:10] pyrotechnick: what is that module that lets you use git as a databaes [08:10] pyrotechnick: its like an ODM for git [08:10] guybrush: did not hear of sth like that so far [08:10] guybrush: there are already bindings to git-C-libs? [08:10] muhqu has joined the channel [08:11] CIA-121: node: 03Ryan Dahl 07debugger * r730140e 10/ lib/_debugger.js : debugger: Clean up child - http://bit.ly/ezTyht [08:12] pyrotechnick: yeah this was an ODM so it did like validations and relations and stuff [08:13] guybrush: maybe there will a port to https://github.com/libgit2/libgit2 some day [08:13] pyrotechnick: yeah that looks so much better [08:13] pyrotechnick: git is written so strangely [08:13] pyrotechnick: its awesome [08:13] pyrotechnick: but strange [08:13] pyrotechnick: its so linus [08:16] muhqu has joined the channel [08:18] muhqu has joined the channel [08:20] AAA_awright has joined the channel [08:21] ivanfi1 has joined the channel [08:23] jacoblyles has joined the channel [08:23] micheil has joined the channel [08:23] stepheneb_ has joined the channel [08:26] jetienne has joined the channel [08:26] teemow has joined the channel [08:36] muhqu has joined the channel [08:46] adambeynon has joined the channel [08:46] mikeal has joined the channel [08:46] mikeal has joined the channel [08:47] peritus_ has joined the channel [08:51] micheil: ryah: did you end up seeing: https://groups.google.com/d/msg/nodejs/PBqL8Auog8s/OGZYhcURlcQJ ? [08:59] skm has joined the channel [08:59] ryah: micheil: i did - i'll merge it soon [08:59] micheil: okay [09:00] micheil: wasn't sure if it [09:00] micheil: it'd been seen as there were no replies on it. [09:00] micheil: ACTION is going through his last weeks' of emails. [09:00] tfe1_ has joined the channel [09:01] micheil: ryah: have a good christmas/whatever? [09:01] augustl has joined the channel [09:03] matjas has joined the channel [09:03] micheil: ryah: oh, yeah, on the ssl keys/certs we use for testing, I think we'll be able to get a fully signed cert for free rather then having to use a self-signed, if we are. [09:06] tfe1_ has joined the channel [09:07] qFox has joined the channel [09:07] MikhX has joined the channel [09:07] heavysixer has joined the channel [09:10] rchavik has joined the channel [09:11] springify has joined the channel [09:14] superjudge has joined the channel [09:20] micheil: ryah: also, took up your book suggestion; it arrived in the post today. [09:20] tfe1 has joined the channel [09:20] steffkes has joined the channel [09:27] ryah: book? [09:28] ryah: micheil: i forget what i suggested [09:28] wycats has joined the channel [09:35] aklt has joined the channel [09:36] CIA-121: node: 03Ryan Dahl 07master * re3ce73a 10/ lib/readline.js : Add ability to ask question from readline - http://bit.ly/e8up7h [09:36] micheil: ryah: beej's guide to network programming [09:36] CIA-121: node: 03Ryan Dahl 07debugger * rbb400d5 10/ lib/_debugger.js : debugger: Work towards interactive restart (+17 more commits...) - http://bit.ly/egqM8I [09:36] ezmobius has joined the channel [09:36] ryah: micheil: oh - cool. i didn't know it came in book form [09:36] micheil: yeah, it' [09:37] micheil: it's available through amazon and lulu press [09:37] ryah: nice [09:37] micheil: some of the code samples in book form are a bit weird, but it's good to have in paper at anyrate [09:39] micheil: ryah: are we still after the arg parsing rewrite? [09:41] micheil: ryah: I'll have a patch soon for the permalinking in documentation TODO [09:42] SamuraiJack_ has joined the channel [09:42] micheil: `node --raw-js script.js` do we really need this? [09:44] micheil: ryah: also, hot code? stdin.on('data', { encoding: 'utf8' }, function (chunk) { [09:44] micheil: setEncoding seems to be a cleaner API [09:44] micheil: ACTION is checking out the TODO's [09:47] AAA_awright_ has joined the channel [09:48] herbySk has joined the channel [09:49] jankoprowski has joined the channel [09:50] devdrinker has joined the channel [09:54] smcq has joined the channel [09:55] saschagehlich: I guess I asked that question egain, but how can I make a variable secure so I can use it inside a command line call? [09:55] stride: huh? [09:55] saschagehlich: so, I've got user inputs like "artist" and "song title" which I want to use to set the ID3 tags of a mp3 file [09:56] saschagehlich: but people could use artist titles like " && rm -rf / [09:56] stride: oh, right. http://phpjs.org/functions/escapeshellarg:866 something like that [09:56] saschagehlich: that looks pretty simple to me, is it secure? [09:57] mbrochh has joined the channel [09:57] stride: haven't tested it but according to the credits underneath it's by felixge so I guess it does the same as the php version which is considered secure [09:57] saschagehlich: okay, I'll try that [09:57] saschagehlich: thank you! [09:57] saschagehlich: stride++ [09:57] v8bot: saschagehlich has given a beer to stride. stride now has 1 beers. [09:58] jetienne: i need to parse xml. is there a pure js way to do that ? aka no native code [09:58] stride: node-faq: learn shell-arguments is http://phpjs.org/functions/escapeshellarg:866 [09:58] node-faq: stride: Done. [10:00] stride: jetienne: https://github.com/robrighter/node-xml was the one that was pure JS on the module page iirc [10:02] jetienne: stride: ok thanks [10:02] andrewfff has joined the channel [10:03] saschagehlich: ircretary: tell rauchg_ to fix socket.io support in opera 11 :( [10:03] ircretary: saschagehlich: I'll be sure to tell rauchg_ [10:04] jetienne: :) [10:04] stride: anybody here knows if node-oauth works fine with the google analytics API stuff? [10:05] eboyjr has left the channel [10:12] pietern has joined the channel [10:16] kawaz_work has joined the channel [10:17] Ond has joined the channel [10:18] Ond has left the channel [10:18] TomY has joined the channel [10:19] TomY_ has joined the channel [10:20] TomY_ has joined the channel [10:21] faust45 has joined the channel [10:22] devdrink_ has joined the channel [10:26] devdrinker has joined the channel [10:27] smcq has joined the channel [10:32] wink_ has joined the channel [10:37] themiddleman has joined the channel [10:39] liar has joined the channel [10:39] derren13 has joined the channel [10:41] Tobias| has joined the channel [10:42] __mn__ has joined the channel [10:45] __mn__: I'm using socket.io and express and I'm having issues with correctly mapping sessions from express to socket.io clients. I'm using viewHelpers so that inside of socket.io 'connection' I can client.session = client.listener.server.viewHelpers.session but this returns a global session (aka, the most recent session) not the session of the user. Has anybody dealt with this before? [10:45] stagas has joined the channel [10:46] __mn__: which means if two users load the same page at the same time, the 1st user's session turns out to be the 2nd user's session. Essentially, how do I do authentication in Socket.IO after a client has been authenticated in Express? [10:47] tpryme: __mn__: Try this - https://github.com/bnoguchi/Socket.IO-connect [10:47] herbySk has joined the channel [10:47] cjroebuck has joined the channel [10:48] __mn__: thanks, I'll look at that. [10:48] tpryme: __mn__: Allows you to access the results of your express/connect middleware from within socket.io-node [10:49] __mn__: does it also work with redis-connect? [10:49] tpryme: It should [10:49] __mn__: ah, this looks like exactly what I needed! Thanks. :) [10:50] tpryme: __mn__: No problem [10:55] superjudge has joined the channel [11:01] DracoBlue has joined the channel [11:03] rchavik has joined the channel [11:03] rchavik has joined the channel [11:07] admc has joined the channel [11:07] SamuraiJack__ has joined the channel [11:09] simme has joined the channel [11:11] smcq has joined the channel [11:13] __mn__: tpryme: thanks, it is working for the session. But it doesn't return the correct url or originalUrl - these become '/socket.io/websocket'? [11:14] Lorentz has joined the channel [11:14] tpryme: __mn__: That's the url that socket.io requests [11:14] tpryme: __mn__: What do you mean correct url? [11:14] smcq has joined the channel [11:14] __mn__: the one that the client requested in the original call, can I still use viewHelpers for that safely? [11:15] vineyard has joined the channel [11:16] fly-away has joined the channel [11:16] tpryme: __mn__: Why would you need access to a url from a prior request? [11:17] __mn__: a page loads, inside that page is socket.io, and I do most of my work with socket.io, so I need to know what page they are on when I am saving data and information that comes in through socket.io [11:17] tpryme: __mn__: By original call, you mean the request to the home page, before socket.io is invoked? [11:17] devdrink_ has joined the channel [11:18] __mn__: right, home page is a good example, or any page. [11:18] tpryme: __mn__: Oh, in that case, you can write it to a cookie [11:18] tpryme: __mn__: or to your session [11:19] tpryme: __mn__: And then you'll have access to that url's value [11:19] __mn__: okay, thats easy. Thanks. [11:19] tpryme: __mn__: from the session [11:19] __mn__: :) [11:19] mr_daniel has joined the channel [11:20] breccan has joined the channel [11:21] fermion has joined the channel [11:22] void_ has joined the channel [11:22] janne has joined the channel [11:25] janne has joined the channel [11:25] janne has joined the channel [11:28] janne has joined the channel [11:31] kriszyp has joined the channel [11:33] mraleph has joined the channel [11:36] oal has joined the channel [11:38] tpryme has left the channel [11:39] pyrotechnick has joined the channel [11:46] unomi has joined the channel [11:49] eee_c1 has joined the channel [11:51] micheil: cmake's test runner is hot. [11:52] void_: simple alternative to ruby's Array#uniq ? [11:52] micheil: void_: have a look in underscore.js [11:52] micheil: it has a fairly simple one. [11:52] void_: do you know if https://github.com/endtwist/ext.js#readme has it too? [11:52] micheil: ext.js? no idea. [11:52] void_: hm [11:52] micheil: ask the sencha boys [11:53] void_: it's not sencha's extjs, but this guy's https://github.com/visionmedia [11:53] pgte has joined the channel [11:54] stride: anybody knows how I should authorize a request token with node-oauth? I don't see a dedicated function for that in there [11:56] stride: oh, nvm [11:57] Huvet has joined the channel [12:00] jdub has joined the channel [12:01] jetienne: ok so jQuery in nodejs is *very* inefficient [12:01] jetienne: as in multiple second to parse a normal html page once [12:05] lintaba has joined the channel [12:05] thinkingpotato has joined the channel [12:06] micheil: void_: oh, right, tj [12:06] micheil: jetienne: the solution is to build a C based DOM library [12:07] jetienne: micheil: at the moment, i just need to get a fast xml to json converter... do you have any suggestion/pointer on possible solutions ? [12:07] teemow has joined the channel [12:07] micheil: hmm.. [12:07] micheil: one of the node xml libraries? [12:08] micheil: that'll give you a DOM tree I think [12:08] jetienne: micheil: some node lib are doing xml parsing. but i cant find the xml2json stuff [12:08] micheil: oh. [12:09] micheil: umm.. you'd probably have to write something to do that. [12:09] jetienne: i try to find a faster way :) [12:09] stride: https://github.com/maqr/node-xml2js/ did you try this one? [12:10] lintaba: write yourself in assembly that parses the xml byte for byte :D [12:10] boaz has joined the channel [12:10] micheil: void_: I'm not sure, try Array#flatten there or whatever [12:11] micheil: who's on OS X here? [12:13] micheil: anybody else getting a failed test on master/HEAD with the test-tls-securepair-client test? [12:14] saschagehlich: stride: be careful with this escapeshellarg thing from phpjs [12:14] stagas: jetienne: you could set up a load balancer on many node processes and do rpc :) [12:14] saschagehlich: it converts "Ghosts 'n' Stuff (Sub Focus Remix)" to 'Ghosts \'n\' Stuff (Sub Focus Remix)' [12:14] saschagehlich: which is not supported by bash [12:15] astoon has joined the channel [12:16] jetienne: stagas: wont help the latency for the user tho :) [12:16] jetienne: stagas: btw have you tried sound in iphone webapp ? does this work ? [12:18] saschagehlich: jetienne: html5 sounds work on mobile safari [12:18] saschagehlich: (dunno what you're talking about but I just wanted to mention that...) [12:18] jetienne: saschagehlich: ok thanks [12:19] stride: saschagehlich: oh. right, misses the brackets [12:19] eee_c has joined the channel [12:19] saschagehlich: so it has to be like 'Ghosts \'n\' Stuff \(Sub Focus Remix\)' ? [12:19] saschagehlich: people at #bash told me ' don't work inside ' [12:20] stride: do those come from the escapeshellargs function as well? [12:20] saschagehlich: yep [12:20] saschagehlich: escapeshellarg("hello") comes out as 'hello' [12:22] stride: hm. I'll need that in the new year as well.. [12:23] stagas: jetienne: it'll give them a non busy parser on each request so you might gain some speed [12:23] stride: let's see what python does.. :) [12:24] stagas: jetienne: I'm having the same issue with an app, the db requests are too many and take too long to process so I'm thinking of doing something like that, I found this https://github.com/luxdelux/redpack [12:27] stride: saschagehlich: http://svn.python.org/view/python/trunk/Lib/pipes.py?view=markup python uses a whitelist approach [12:27] aklt has joined the channel [12:27] saschagehlich: hmmm okay [12:29] DracoBlue has left the channel [12:30] jetienne: stagas: interesting. i will look. today im focussing on hating xml [12:30] stride: saschagehlich: it's using the the enclosing '' as well though [12:30] saschagehlich: stride: I guess replacing the surrounding ' with " should fix the problem [12:30] saschagehlich: well the thing is that ' disable escapes with \ [12:30] saschagehlich: so ' \' ' does not work [12:31] samal has joined the channel [12:32] Sembiance: morning :) [12:38] samal_ has joined the channel [12:38] saschagehlich: stride: now I just did "\"" + query.artist.replace("\"", "\\\"") + "\"" which should be fine I guess [12:42] stride: that python thing is weird. spaces are allowed when escaped as "\ " right? [12:42] saschagehlich: yep [12:42] saschagehlich: outside an argument [12:43] saschagehlich: so # myapp -blurb "hello world" is the same as # myapp -blurb hello\ world [12:43] saschagehlich: (I guess) [12:43] stride: yeah, that's what I meant :) hmkay [12:44] saschagehlich: btw, do you know how cover images are stored inside mp3s? is this id3 metadata? [12:46] stride: last time I touched id3 was in 2004 I believe, no idea.. sorry :) [12:46] kolor has joined the channel [12:46] saschagehlich: hmm okay [12:47] stride: https://gist.github.com/759753 I'm so stupid.. :) [12:48] Huvet has joined the channel [12:48] thomd has joined the channel [12:48] stride: somehow that's not what I had in mind when I started to write that function.. :D [12:48] Huvet has left the channel [12:49] Huvet has joined the channel [12:49] cafesofie has joined the channel [12:50] Huvet: tmpvar: I'm here if you need anything more than the gist I sent you on twitter (I'm @EmilStenstrom) [12:52] SamuraiJack has joined the channel [12:54] __mn__: tpryme: you around? [12:54] darthdeus has joined the channel [12:55] d0k has joined the channel [12:58] stride: saschagehlich: that python quote function is weird as well.. do you know if there's some C API that's considered the standard way of doing this? [12:59] saschagehlich: stride: uh, never heard of something like that [12:59] stride: mhm [13:03] saschagehlich: well whatever, it's not that complicated I guess [13:03] saschagehlich: it's just that quoting thing [13:03] mikew3c_ has joined the channel [13:04] pietern has joined the channel [13:05] stride: won't that break with non printable characters? \0 or \r\n or whatnot? [13:08] beta_ has joined the channel [13:08] saschagehlich: well yes, that's right [13:08] saschagehlich: ACTION has to take a show [13:08] saschagehlich: brb [13:12] beta_ has joined the channel [13:13] jetienne: http://en.wikipedia.org/wiki/ID3#ID3v2_Frame_Specification_.28Version_2.3.29 look at 'file icon' saschagehlich. [13:16] stride: felixge's talk "Node.js as a networking tool" is available here btw if anybody's interested http://achtbaan.nikhef.nl/27c3-stream/releases/mkv/[4142]%20Node.js%20as%20a%20networking%20tool/ (starts at minute 16 of the first file) [13:16] oPless has left the channel [13:17] devdrinker has joined the channel [13:29] saschagehlich: jetienne: thanks [13:30] sivy has joined the channel [13:31] devdrinker has joined the channel [13:33] pHcF has joined the channel [13:38] fmeyer has joined the channel [13:46] ivillacu has joined the channel [13:46] beta_ has joined the channel [13:46] ivillacu: hello [13:47] lintaba: hy [13:47] ivillacu: i have a problem in the make [13:47] ivillacu: with cygwin [13:48] webr3 has joined the channel [13:48] ivillacu: task failed (err 2); (task: libv8.a SConstruct -> libv8.a) [13:48] ivillacu: someone that can hel me.. [13:49] ivillacu: help [13:49] lintaba: i have a virtual linux server just for the nodejs so i dont know how can it works with windows [13:52] jelveh has joined the channel [13:56] hunterloftis has joined the channel [13:56] hunterloftis has joined the channel [14:04] jetienne: ok jquery nodejs on a 533kbyte rss is 4+sec [14:05] jetienne: falling back on php. shame on me [14:05] stride: eh? why were you using jquery to parse xml in the first place? [14:06] jetienne: stride: because i know css selector [14:07] pgte: stride: thanks [14:07] codykrieger has joined the channel [14:08] B2oba has joined the channel [14:11] B2oba: Hi [14:11] mraleph: jetienne: does php support css selectors? [14:11] B2oba: I was looking at the node.js chat example, which comes with a 'fu.js' library [14:11] B2oba: is this a supported library, or one made for demo purpose only? [14:12] stagas: B2oba: I believe you can use it separately [14:13] stride: that's looks like it's just a server for static files or something [14:14] B2oba: stagas: So there is no "most recent" version of it... just a basis to start with and make my own version of it based on my requirements? [14:14] B2oba: stride: Yeah, server for static file, and helper for setting up handler to specific URIs [14:15] stride: if you want websockets and stuff there was a more recent Socket.IO boilerplate somewhere on github [14:15] ysynopsis has joined the channel [14:16] jetienne: mraleph: no :) ultimatly i just wanted to do xml2json. and this is working in php [14:16] B2oba: other question... i noticed that when an exception occurs, the whole server (node js process) is taken down. Is it good practice to encapsulate every request within a try{}catch to avoid any invalid/buggy request to take down the server? [14:17] jetienne: mraleph: browser version of xml2json are worst because i have to handle weirdo browsers like maple [14:18] rsms has joined the channel [14:19] arpegius has joined the channel [14:23] chapel: B2oba: only unhandled exceptions take down the process [14:23] IRONkyle has joined the channel [14:26] Iszak has joined the channel [14:27] stride: B2oba: what chapel said. httpserver.on('error', function(err) { console.log("[ERROR] %s", err.message); }); will prevent this kind of error from taking down node completely and outputting the error message. others can be caught by handling process.on('uncaughtException', ... (see docs). there might be other errors, in node's core library, which might crash it anyway so you should make sure it's logged & restarted in production [14:29] B2oba: stride, chapel: Thanks! [14:29] chapel: is there a module that you can use that will handle all errors, and let you output it to a file? [14:29] chapel: not that its entirely necessary, just curious since it seems like something useful [14:30] stride: chapel: all, even handled ones? you'd have to monkeypatch eventemitter for that I guess [14:31] c4milo has joined the channel [14:31] chapel: ah [14:32] stride: hm. or the Error function, whereever that is defined. not sure how both approaches would handle stuff generated in C++ land though [14:39] femtoo has joined the channel [14:43] nilcolor has joined the channel [14:43] markwubben has joined the channel [14:43] nilcolor: Hi! [14:44] cainus has joined the channel [14:44] devdrinker has joined the channel [14:45] ivanfi1 has left the channel [14:45] devdrinker: sorry for the repeated, disconnected the other day, is there something built into nodejs or ecmascript that behaves like $.extend(target, obj1) etc.. [14:45] nilcolor has joined the channel [14:50] Iszak_ has joined the channel [14:50] stride: devdrinker: util.inherits might be what you're looking for [14:52] IRONkyle has joined the channel [14:53] skm has joined the channel [15:00] dnolen has joined the channel [15:00] Wizek__ has joined the channel [15:05] thinkingpotato has joined the channel [15:06] saschagehlich: okay, my first node.js project is open beta now: http://beta.filsh.net/ (free youtube / dailymotion / whatever clip converter). feedback please :) [15:07] saschagehlich: only in german right now but shouldn't be hard to understand though [15:07] akahn has joined the channel [15:09] mmso has joined the channel [15:09] mmso has joined the channel [15:09] stride: heh, you're doing filsh.net? :) [15:09] paparent has left the channel [15:10] AlexMax has joined the channel [15:10] saschagehlich: jep [15:11] AlexMax: I had a bot message me that I was in the wrong room and I should be in #node.js. Why the redirect...why not just use #nodejs? :) [15:11] proppy has joined the channel [15:11] proppy: Hi, has anyone experienced with server side chart rendering in node ? [15:12] stagas: AlexMax: because it's called node.js and not nodejs ? [15:12] svens has joined the channel [15:12] saschagehlich: proppy: do it with html5 :) [15:12] proppy: saschagehlich: :) [15:12] proppy: I tried graphael, but it lacks legend for bar charts [15:12] AlexMax: stagas: True [15:13] saschagehlich: proppy: http://beta.filsh.net/admin/stats << html5 <23 [15:13] saschagehlich: oops, i meant <3 [15:13] proppy: idealy it would be nice to generate an svg server side :) [15:13] b2obaa has joined the channel [15:13] AlexMax: I don't have a question, I just tend to idle in IRC channels for projects I find interesting. Don't mind me. [15:13] proppy: saschagehlich: flot ? [15:13] saschagehlich: proppy: what? [15:13] proppy: saschagehlich: the charting library [15:13] steffkes: saschagehlich, the progress bar starts jumps directly to about 50% ;o [15:13] saschagehlich: proppy: no library. ;) [15:13] proppy: oh ok :) [15:14] saschagehlich: steffkes: does it finish the download? [15:14] steffkes: saschagehlich, yes that works .. not problem, the rest of the progress-bar is running smoothly [15:14] saschagehlich: steffkes: then the download is so fast that the websocket returns 50% as the first progress [15:15] heavysixer: saschagehlich: are you using a graphing library for those charts? [15:15] saschagehlich: heavysixer: no, just canvas [15:15] proppy: will try jqplot :) [15:16] heavysixer: saschagehlich: neat proppy jqplot is nice but it can be sort of a cluster at the same time. [15:16] heavysixer: it's totally over-engineered [15:16] heavysixer: imho [15:16] proppy: what about flot ? [15:16] proppy: http://code.google.com/p/flot/ [15:16] heavysixer: proppy: flot is nice but unmaintained [15:16] proppy: it seems to lack support of pie chart [15:16] heavysixer: as far as I know [15:17] proppy: and highchart is cc-by-nc, and then gpl incompatible :( [15:17] heavysixer: proppy: that's cause pie charts are evil :-) [15:17] stagas: saschagehlich: nice site! [15:17] saschagehlich: stagas: thanks :) [15:18] Druid_ has joined the channel [15:18] b2obaa: saschagehlich: just tried it out, looks clean and works well. Cool stuff :) You need an english version :P [15:18] saschagehlich: b2obaa: I would do an english version if it wasn't a legal limbo [15:18] heavysixer: proppy: http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=00018S [15:19] paulrobinson has joined the channel [15:19] proppy: heavysixer: thanks [15:19] heavysixer: proppy: you'll swear off pie charts after reading that. [15:19] saschagehlich: b2obaa: but my lawyer is doing a legal opinion for me right now, should be finished january 2011. maybe there will be an english version then [15:19] b2obaa: sasch: what do you mean? [15:19] b2obaa: ah ok [15:20] proppy: heavysixer: also http://bit.ly/d2ZW59 [15:20] proppy: it is a nice guide about choosing the right chart type [15:20] heavysixer: proppy: neat never seen that [15:21] jakehow has joined the channel [15:23] jherdman has joined the channel [15:24] muhqu_ has joined the channel [15:24] devdrinker has joined the channel [15:25] devdrinker: struggling understanding why commonjs in the context of NodeJS works like this http://bit.ly/hEgw1C [15:27] B2obaa has joined the channel [15:29] davidwalsh has joined the channel [15:32] Hello71 has joined the channel [15:32] Hello71 has joined the channel [15:33] svens: server.listen(port, [host], [callback]) If I want my server to listen on any v4 address, but would like to specify a callback anyway, what should I pass as host argument? [15:33] sonnym has joined the channel [15:33] stepheneb has joined the channel [15:34] saschagehlich: 0.0.0.0 [15:34] bingomanatee__ has joined the channel [15:34] RichardJ: i'd say null, which probably defaults to 0.0.0.0 [15:35] svens: Thanks, 0.0.0.0 works (at least from localhost). [15:37] dnolen has joined the channel [15:42] stride: devdrinker: your first version assigns module.exports to the reference to pricingCalculator, while - at the time that assignment takes place - v8 might know about pricingCalculator (global or var) in the other cases but it doesn't refer to anything [15:42] herbySk has joined the channel [15:42] B2oba has joined the channel [15:42] nonnikcam has joined the channel [15:42] stride: (I guess, the even more correct answer might be found in the ecma specs on how those are evaluated) [15:43] devdrinker: but isnt the 3rd version the same [15:44] devdrinker: (logically - ignoring any vm optimizations) [15:44] ceej has joined the channel [15:44] stride: the 3rd one creates a global (in the scope of the module) by that name, which - at the time that assignment takes place - might be already created but not evaluated to contain your function reference [15:46] sh1mmer has joined the channel [15:51] dguttman has joined the channel [15:55] sveisvei has joined the channel [15:57] eazyigz has joined the channel [16:01] lintaba has joined the channel [16:01] jchris1 has joined the channel [16:03] MattJ has joined the channel [16:05] superjudge has joined the channel [16:06] Squax has joined the channel [16:06] pyrotechnick has joined the channel [16:07] pyrotechnick: what's a good example of a native extension [16:07] jdub: pyrotechnick: https://github.com/felixge/node-nix [16:08] softdrink has joined the channel [16:08] pyrotechnick: hey i like that one. im watching it [16:08] pyrotechnick: but it doesnt "wrap" a c++ object [16:08] pyrotechnick: im writing bindings to bullet physics right [16:08] shinmei has joined the channel [16:08] jdub: you didn't specify that :-) [16:08] pyrotechnick: and i just need to "wrap" the c++ objects [16:08] hasenj has joined the channel [16:08] KyleXY has joined the channel [16:09] pyrotechnick: nothing in between but ive been told i basically have to write a class for each class [16:09] pyrotechnick: right? [16:09] pyrotechnick: there's no shortcuts? [16:09] aklt has joined the channel [16:09] jdub: check the node modules page for some good examples [16:09] pyrotechnick: i dont understand why there isnt a libffi for c++ [16:09] jdub: node-mongodb might be a good place to start [16:10] KyleXY has joined the channel [16:10] wdperson has joined the channel [16:10] EyePulp has joined the channel [16:11] Imperion has joined the channel [16:15] pifantastic has joined the channel [16:15] IRONkyle has joined the channel [16:16] qnt4b has joined the channel [16:17] rsms has left the channel [16:28] ezmobius has joined the channel [16:31] EyePulp: soooo... can I use MongoDB's .update() command via mongoose? And with a function callback? [16:31] jimt_ has joined the channel [16:38] jakehow has joined the channel [16:41] Max-Might has joined the channel [16:41] tjholowaychuk has joined the channel [16:44] vineyard has joined the channel [16:45] Hello71 has joined the channel [16:47] briznad has joined the channel [16:47] MikhX has joined the channel [16:47] sh1mmer has joined the channel [16:48] booths has joined the channel [16:48] robotarmy has joined the channel [16:49] technoweenie has joined the channel [16:51] pyrotechnick: what is this? Assertion failed: (handle->InternalFieldCount() > 0), function Wrap, file /usr/local/include/node/node_object_wrap.h, line 40. [16:51] mgan has joined the channel [16:51] augustl has joined the channel [16:51] mgan: looking to get started with nodejs [16:52] pifantastic_ has joined the channel [16:52] mgan: do I use 2.5 or 3.2? [16:52] pyrotechnick: 3.2 [16:52] mgan: any major change between the two that I should be aware of? [16:53] pyrotechnick: yes there are major changes to buffers especially but if you dont stray too far from the path and use newish extensions you should be okay [16:53] mgan: Okay, think I've heard Ryan talk about buffers in various videos so makes sense now. thanks Pyro. [16:54] ezmobius has joined the channel [16:55] pyrotechnick: not a problem [16:55] rwaldron has joined the channel [16:55] booths: pyrotechnick: what was the change to the buffers? [16:56] pyrotechnick: is there like fast buffers and stuff now [16:56] pyrotechnick: http://nodejs.org/changelog.html [16:56] booths: Ah [16:57] lintaba_ has joined the channel [16:59] KyleXY has joined the channel [16:59] mgan has left the channel [17:00] losing has joined the channel [17:01] hobodave has joined the channel [17:01] mraleph: pyrotechnick: you are probably calling constructor as a normal function somewhere [17:01] ryah: mraleph: i'm going to try your latest patch set [17:01] sebastiandeutsch has joined the channel [17:01] pyrotechnick: mraleph: in the js? [17:01] mraleph: ryah: ok, thanks for testing it. [17:02] pyrotechnick: i really dont want to give up on these bindings [17:02] mraleph: pyrotechnick: yeah. check for patterns line new a.b() [17:02] pyrotechnick: but it's very much a struggle [17:02] pyrotechnick: collisionDispatcher = new Bullet.CollisionDispatcher defaultCollisionConfiguration [17:02] pyrotechnick: thats my call [17:03] softdrink: *perk* [17:03] softdrink: bullet bindings? [17:03] pyrotechnick: yes [17:03] softdrink: sessy. [17:03] pyrotechnick: want to help? [17:03] mraleph: pyrotechnick: it is probably parsed as (new Bullet).CollisionDispatcher blabla [17:03] pyrotechnick: im such a noob, these are my first ones. but we _really_ need them [17:04] pyrotechnick: oh really [17:04] softdrink: i don't have the skillset or the time unfortunately :T [17:04] pyrotechnick: well [17:04] pyrotechnick: if i finish them [17:04] pyrotechnick: ill let you know [17:04] pyrotechnick: watch [17:04] softdrink: woot. [17:04] pyrotechnick: github.com/feisty/bullet-node [17:04] pyrotechnick: node-bullet [17:04] mraleph: ryah: I will try to add .eh_frame generation tomorrow. but I am not sure I'll manage :-) [17:04] pyrotechnick: my bad [17:05] softdrink: *adds to watch list* [17:05] softdrink: when you're done, can you make a proper opengl binding? ¬¬ [17:05] softdrink: hehe [17:05] Imperion: erm [17:05] pyrotechnick: sure ^w^ [17:05] Imperion: I'm getting an octo-cat [17:05] pyrotechnick: okay i fixed it but i have NFI why i needed to do what i did [17:05] pyrotechnick: i wish this wasn't such an arcane process [17:06] pyrotechnick: it feels like walking on glass [17:06] pyrotechnick: what is an internal field count exactly [17:06] svens: server.connections returns a negative number for me (after some clients connected). Is this normal? [17:06] Imperion: pyrotechnick: something arcane [17:06] pyrotechnick: mmm [17:06] pyrotechnick: mraleph: it wasnt the js [17:06] broofa has joined the channel [17:07] mraleph: pyrotechnick: if you say so. [17:07] akahn has left the channel [17:07] pyrotechnick: var bullet; [17:07] pyrotechnick: bullet = new Bullet.Bullet; [17:07] pyrotechnick: thats what that code translates into [17:07] Imperion: bullety bullets [17:07] pyrotechnick: it was constructor->InstanceTemplate()->SetInternalFieldCount(0); -> constructor->InstanceTemplate()->SetInternalFieldCount(1); [17:07] pyrotechnick: but i have no internal fields [17:08] pyrotechnick: maybe New counts as one [17:08] pyrotechnick: would static Handle New(const Arguments &args); count? [17:09] pyrotechnick: meh [17:09] pyrotechnick: works [17:09] pyrotechnick: pressing on... [17:09] Imperion: pyrotechnick: http://www.codeproject.com/KB/library/Using_V8_Javascript_VM.aspx [17:09] pyrotechnick: Imperion: yeah the api needs fixing. just trying to get it working first [17:09] pyrotechnick: i read that before [17:09] Imperion: look for SetInternalFieldCount [17:09] Imperion: you'll have your answer [17:10] tjholowaychuk: pyrotechnick: you get new Bullet.Bullet from that CS ? what was the CS again [17:10] pyrotechnick: tjholowaychuk: no i did a swap ;) [17:10] tjholowaychuk: oh lol [17:10] devnieL has joined the channel [17:10] pyrotechnick: i will push once i have these few classes working so someone can check if im on the right track [17:10] booths has joined the channel [17:10] pyrotechnick: 3 down 10 to go ^w^ [17:10] pyrotechnick: ~12 classes ~60 functions [17:10] pyrotechnick: and im done ^w^ [17:11] tjholowaychuk: because new Foo.Bar should be fine [17:11] pyrotechnick: then the whole world can have some awesome bullets all up in their nodes [17:11] pyrotechnick: yeah it is [17:11] tjholowaychuk: as long as CS doesnt mess with it [17:11] pyrotechnick: nah it doesnt [17:11] tjholowaychuk: good good [17:11] pyrotechnick: mraleph: thought it might be that [17:11] pyrotechnick: but it's not [17:11] mraleph: yeah I was wrong. new a.b() parses as new (a.b) (), the problem might arise with new a().b() [17:11] polotek has joined the channel [17:11] pyrotechnick: yeah coffee fucks that up ATM [17:11] pyrotechnick: theyre fixing that [17:12] pyrotechnick: its an open issue [17:12] pyrotechnick: YAY [17:12] pyrotechnick: ok tjholowaychuk [17:12] pyrotechnick: if you wouldnt mind taking a look [17:12] pyrotechnick: i mean it doesnt do much [17:12] pyrotechnick: but i dont wanna stray too far [17:12] pyrotechnick: without someone who knows what theyre doing having a check [17:12] pyrotechnick: pushing [17:13] tjholowaychuk: what [17:13] tjholowaychuk: lol [17:13] pyrotechnick: good old tower [17:13] pyrotechnick: who uses Tower? [17:13] proppy: is getBBox missing in jsdom ? [17:13] pyrotechnick: github.com/feisty/node-bullet [17:13] pyrotechnick: you dont have to compile it [17:14] pyrotechnick: if u wanna just do [17:14] pyrotechnick: brew install bullet [17:14] pyrotechnick: then node-waf configure build [17:14] pyrotechnick: then coffee test/master.coffee [17:14] pyrotechnick: but i just would appreciate someone seeing if i'm "wrapping" the c++ properly [17:14] polotek: pyrotechnick: I've been checking out Tower [17:14] pyrotechnick: polotek: what do you think? [17:14] polotek: but it doesn't work when the repo is on a network share [17:14] pyrotechnick: like is that the most simple way to wrap a few c++ classes and pass one to the other? [17:14] polotek: craps out badly [17:14] polotek: or at least it did for me [17:15] pyrotechnick: polotek: really? we dont use them [17:15] pyrotechnick: so i cant test for you [17:15] pyrotechnick: but i imagine its a latency thing [17:15] pyrotechnick: git is _very_ disk intensive [17:15] polotek: yeah, that's what I figured [17:15] pyrotechnick: hence libgit2 and other things [17:15] polotek: anyway, tower works awesome on local repos [17:16] polotek: SSD ftw [17:16] pyrotechnick: hell yeah. im such a fan [17:16] pyrotechnick: one of the only pieces of software i would be extremely happy paying money for [17:16] pyrotechnick: SSD? [17:16] pyrotechnick: solid state drive? [17:16] pyrotechnick: macbook? [17:16] polotek: the only feature I want that it's missing right now is splitting commit hunks with add -i [17:16] polotek: pyrotechnick: yeah [17:16] pyrotechnick: nice [17:16] pyrotechnick: my mate just got a job at apple and they gave him an 11" air [17:16] pyrotechnick: its so snazzy [17:16] pyrotechnick: just powerful enough but fully tiny [17:16] pyrotechnick: so nice [17:17] pyrotechnick: and same size keyboard as this 15" [17:17] pyrotechnick: so its brilliant to use [17:17] SamuraiJack_ has joined the channel [17:17] pyrotechnick: only thing i dont like is the border around the screen [17:18] cagdas has joined the channel [17:18] pyrotechnick: anyway if you know about node.js extensions i'd appreciate knowing if i'm on the right track or not. source - https://github.com/feisty/node-bullet/tree/master/src - usage - https://github.com/feisty/node-bullet/blob/master/test/master.coffee - reference https://github.com/feisty/bullet/blob/master/Demos/BasicDemo/BasicDemo.cpp#L91 [17:19] benburkert has joined the channel [17:19] pyrotechnick: all im doing are those first 3 lines of the bullet c++ starting on line 94 but in js through the bindings [17:19] peritus_ has joined the channel [17:19] pyrotechnick: just want to know if that's the nicest/easiest/cleanest way [17:20] fumanchu182 has joined the channel [17:20] ryah: mraleph: getting compile errors. did you forget to add a file? [17:20] pyrotechnick: tjholowaychuk: ^^ [17:20] pyrotechnick: if you have a minute [17:20] ryah: mraleph: where is GDBJITInterface defined? [17:20] fumanchu182: If you are using node-mysql, usually you use the callback function to handle the results of the query. If you do not wish to use the callback function and want the results of the query anyway, how can you get to that data? Or am I talking crazy talk/approaching the problem the wrong way? [17:21] Imperion: tjholowaychuk: uh, what could cause dynamic parts of a page to only load the second time I load the page? (Express w/ Jade) [17:21] pyrotechnick: fumanchu182: unless it provides a synchronous method in the API you have to use the async/callback way [17:21] stride: fumanchu182: the wrong way :) [17:21] fumanchu182: Hmm, then I have to rethink thins. [17:21] pyrotechnick: fumanchu182: ill give you an example from node [17:22] fumanchu182: pyrotechnick, thank you that would be helpful. [17:22] tjholowaychuk: Imperion: hmm no clue lol I havent come across that, could just be session related logic etc [17:22] tjholowaychuk: depends what you are doing [17:22] tjholowaychuk: but from express itself i have no clue [17:22] Imperion: tjholowaychuk: the locals get passed to the template [17:23] Imperion: I tested it using console.log [17:23] pyrotechnick: fumanchu182: so here's node method for making directories http://nodejs.org/docs/v0.3.2/api/fs.html#fs.mkdir [17:23] Imperion: the data gets printed out [17:23] Imperion: but it just doesn't want to load on the first time [17:23] pyrotechnick: it takes a callback right, the last argument, saying when it's done with an error, if any [17:23] benburkert has joined the channel [17:23] pyrotechnick: but here's a sync version with no callback http://nodejs.org/docs/v0.3.2/api/fs.html#fs.mkdirSync [17:23] pyrotechnick: it returns the error [17:24] pyrotechnick: and blocks node while it runs [17:24] Imperion: tjholowaychuk: http://codepad.org/aqqCCm38 [17:24] fumanchu182: gotcha, yeah the node-mysql driver is asynchronous. [17:24] pyrotechnick: most things, especially I/O things like a database will be async [17:24] fumanchu182: so I have to get used to the callback. [17:24] pyrotechnick: very much so [17:24] pyrotechnick: it's one of the best and worst parts of node [17:24] fumanchu182: Do you have any good resources on scopes with the closure/callback? [17:25] fumanchu182: That seems to give me the most problem. [17:25] pyrotechnick: it's extremely efficient and powerful but it takes a bit of getting used to [17:25] polotek: pyrotechnick: your bullet stuff looks okay on first glance [17:25] tjholowaychuk: Imperion: looks ok -each is nothing special at all, I would check your logic [17:25] pyrotechnick: thanks polotek [17:25] pyrotechnick: i appreciate it [17:25] polotek: there's lots of details that will get you [17:25] polotek: but you're on the right track [17:25] tjholowaychuk: make sure that whatever you are looping is actually there each time [17:25] tjholowaychuk: i dont think its a template issue [17:25] pyrotechnick: thanks [17:25] polotek: pyrotechnick: I would recommend taking hard look at the api [17:25] pyrotechnick: fumanchu182: javascript has whats called lexical scoping [17:25] Imperion: tjholowaychuk: I added a console.log(listing) [17:25] polotek: don't reproduce all of it in js [17:26] polotek: try to distill it down to a simpler interface that you can surface in js [17:26] pyrotechnick: basically if you can see a variable above where you want to use it you can access it [17:26] pyrotechnick: right so i could do all that in like a new Bullet() for instance ? [17:26] polotek: pyrotechnick: re: scoping, it's not even if it's "above" [17:26] fumanchu182: pyrotechnick, cool, i'll try some tests, i am used to I guess what you would call dynamic scoping where it binds to a stack... [17:26] polotek: if the variable is declared in any outside scope you can see it from an inner scope [17:26] pyrotechnick: right [17:26] polotek: see: hoisting [17:27] pyrotechnick: which is usually above [17:27] pyrotechnick: fumanchu182: http://stackoverflow.com/questions/500431/javascript-variable-scope [17:28] fumanchu182: danke, i have been building this cool event server for my site and then when trying to do some things with node-mysql i have been been hitting walls because i am thinking in dynamic scoping ways [17:28] sh1mmer has joined the channel [17:28] pyrotechnick: fumanchu182: http://stackoverflow.com/questions/99927/oo-javascript-definitive-explanation-of-variable-scope [17:29] pyrotechnick: it just takes a little getting used to, once you bust through those walls a few times you rarely hit them again [17:29] booths has joined the channel [17:29] pyrotechnick: the worst part is when you deal with "this" changing and not being what you think it is [17:30] pyrotechnick: but that usually only happens with events [17:30] fumanchu182: Yeah I learned that from regular browser development. [17:30] pyrotechnick: right [17:30] fumanchu182: Do .call and or .apply help? [17:30] pyrotechnick: so you're aware of that quirk [17:30] pyrotechnick: yes you can re-"bind" calls with those [17:30] pyrotechnick: in coffee its => [17:30] qnt4b has left the channel [17:31] pyrotechnick: instead of the usual -> [17:31] pyrotechnick: ill show u the code [17:31] fumanchu182: Yeah, I have never just worked with any non blocking environments before. PHP blocks just for kicks... [17:31] pyrotechnick: var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; [17:31] pyrotechnick: my_object.addEventListener('some_event', __bind(function() { [17:31] pyrotechnick: return console.log(this); [17:31] pyrotechnick: }, this)); [17:31] pyrotechnick: it uses a helper [17:32] pyrotechnick: but its just .apply(WHATYOUWANTTHISTOBE, arguments) [17:32] xSmurf: mroing nodites [17:32] polotek: if your code is node specific you can use Function.bind [17:32] namelessnotion_ has joined the channel [17:32] Imperion: tjholowaychuk: it'th a bug [17:32] mraleph: ryah: gdbjit.h [17:32] Imperion: tholved it [17:32] mraleph: ryah: where is compile errors? [17:32] tjholowaychuk: Imperion: got it? cool man :) [17:32] Imperion: tjholowaychuk: needed a thpathe [17:32] Imperion: afther img [17:33] pyrotechnick: Imperion: wtf? [17:33] pyrotechnick: are you drink-noding? [17:33] pyrotechnick: it always turns out badly [17:33] Imperion: whoops [17:33] isaacs has joined the channel [17:33] Imperion: I just discovered I already loaded all the pages [17:33] Imperion: I wonder [17:33] sechrist has joined the channel [17:34] Imperion: restarted server and it went up in smoke [17:34] proppy: is there a way to know why a node process is not exiting (i.e which callback are pending) ? [17:34] pyrotechnick: mraleph: i had considered not exposing everything in js and simplifying the API but i want it to mirror bullet as much as possible [17:34] svens: I figured out my problem, when calling stream.destroy() twice, the server.connections counter gets decreased twice... [17:35] pyrotechnick: mraleph: since we're writing physics code for both the server and client we have to use the javascript port on the client which uses the same api as bullet and as the one i'm binding [17:36] cardona507 has joined the channel [17:37] devnieL has left the channel [17:37] tjholowaychuk: blah reading CS hurts my brain [17:38] Imperion: CS? [17:38] Imperion: *headbangdesk* [17:38] pyrotechnick: coffeescript [17:38] pyrotechnick: tjholowaychuk: you're slowly growing tired of CS i can see it [17:39] pyrotechnick: it began with 'yeah its cool' [17:39] pyrotechnick: then 'but only use it for app code' [17:39] pyrotechnick: not its just hurts my brain' [17:39] tjholowaychuk: ahaha yeah [17:39] EyePulp: anyone available for mongoose trivia? I want to run an .update() command, but not sure of the syntax [17:39] tjholowaychuk: brings me back to ruby days [17:39] tjholowaychuk: when things were harder to read [17:39] pyrotechnick: do you not like python either? [17:39] tjholowaychuk: js is nice and explicit [17:39] polotek: tjholowaychuk: I thought I was the only one that found ruby/coffee hard to read [17:40] tjholowaychuk: no py sucks [17:40] pyrotechnick: coffee is closer to python than ruby [17:40] tjholowaychuk: polotek: nope lol [17:40] polotek: pyrotechnick: I disagree, python isn't "easy" but not as bad as ruby [17:40] Imperion: WHY. DON'T. YOU. WORK? [17:40] pyrotechnick: tjholowaychuk: i guess an appreciation of c/c++ makes you more fond of c-syntax [17:40] Imperion: what is your goddamn malfunction? [17:40] pyrotechnick: how is coffee more like ruby? [17:40] EyePulp: python's list comprehensions are much missed in JS [17:41] tjholowaychuk: pyrotechnick: yeah definitely [17:41] slloyd has joined the channel [17:41] pyrotechnick: ruby doesnt have significant whitespace [17:41] polotek: in my brain it's like trying to read paragraphs without enough punctuation [17:41] pyrotechnick: or list comprehensions [17:41] tjholowaychuk: polotek: yeah same its a little tough when the code gets large [17:41] pyrotechnick: or the colon : [17:41] tjholowaychuk: snippits are fine [17:41] sonnym has joined the channel [17:41] polotek: pyrotechnick: the colon is better in python [17:41] pyrotechnick: the idea is your code doesnt get big [17:41] polotek: it's one of the few delimiters that let you know you're in a block. [17:41] pyrotechnick: python and coffee literally force you to refactor your code [17:41] pyrotechnick: or you are punished [17:42] pyrotechnick: it's a good thing. some people need saving from themselves [17:42] polotek: pyrotechnick: yeah I don't really like that [17:42] polotek: nobody needs saving from themselves, and programmers will always find ways to write ugly code [17:43] polotek: I prefer to instead make the language as expressive as possible while still being structured and easy to read [17:43] c4milo: polotek++ [17:43] v8bot: c4milo has given a beer to polotek. polotek now has 2 beers. [17:43] EyePulp: python doesn't force any such thing. python makes you breakfast, and washes your cars, and also tells you that you've lost weight [17:43] pyrotechnick: well c++ and javascript need no structure whatsoever [17:43] tjholowaychuk: the only thing I like about indented stuff is thta it forces you to be slightly less retarded [17:43] pyrotechnick: so they've failed in that regard [17:43] tjholowaychuk: because man have I seen some retarded js [17:43] tjholowaychuk: but still [17:43] pyrotechnick: yeah [17:43] pyrotechnick: what do you think of functional js? [17:44] polotek: don't mistake lack of newlines for lack of structure [17:44] tjholowaychuk: its tough to line up the outdents sometimes [17:44] Imperion: tjholowaychuk: um, you said something about sessions? but I don't use them [17:44] polotek: js has lots of structure which is exactly why you can compress out most of the whitespace and still have it execute exactly the same [17:44] tjholowaychuk: Imperion: I thought you figured itout? [17:44] Imperion: whoops [17:44] Imperion: * isaacs (~isaacs@c-24-130-255-48.hsd1.ca.comcast.net) has joined #Node.js [17:44] Imperion: I just discovered I already loaded all the pages [17:44] Imperion: I wonder [17:44] pyrotechnick: compression of whitespace is something that shouldnt come into language design [17:44] pyrotechnick: bandwidth is cheap [17:44] pyrotechnick: im sick of hearing that crap [17:45] nefD: i think python is an excellent first language for new developers, because it enforces formatted code.. then when they move on to other languages where its not enforced, they're able to apply formatting in whichever way they like most, but at least they're formatting at all [17:45] polotek: pyrotechnick: it was a decision made when bandwidth was not cheap [17:45] pyrotechnick: and this is node.js [17:45] polotek: and you don't have to use it anymore [17:45] pyrotechnick: it's not really the place for caring how big code is [17:45] polotek: and bandwidth isn't cheap everywhere anymore [17:45] polotek: like mobile [17:46] pyrotechnick: maybe in your crappy country lol [17:46] pyrotechnick: have you seen the net neutrality laws? [17:46] polotek: yes, exactly :) [17:46] pyrotechnick: theyre a joke [17:46] pyrotechnick: you guys are screwed [17:46] pyrotechnick: and we're next [17:46] AAA_awright has joined the channel [17:46] polotek: pyrotechnick: where are you? [17:46] pyrotechnick: australia [17:46] pyrotechnick: we always follow suite [17:46] pyrotechnick: we just let you spend all the money developing the policy [17:46] pyrotechnick: then steal it [17:46] pyrotechnick: ^w^ [17:47] Imperion: s/suite/suit/ [17:47] pyrotechnick: w/e [17:47] polotek: anyway, back to my original point, I'm not saying js is "better" [17:47] polotek: just easier to read [17:48] polotek: in coffee/ruby it's sometimes tough to tell the difference between function calls assignment and creating a hash [17:48] stride: syntax, who cares as long as we get to hit some VB.Net developers with hard objects.. :) [17:48] tjholowaychuk: to much ambiguity [17:49] pyrotechnick: its not ambiguity its similarity [17:49] tjholowaychuk: and I hate shit like "return foo if rawr == 'rawr'" [17:49] polotek: tjholowaychuk: and "unless". screw that [17:49] pyrotechnick: ha [17:49] pyrotechnick: i think you guys have written too much c [17:49] tjholowaychuk: i dont mind unless to much actually [17:49] pyrotechnick: yeah unless is so pimp [17:49] pyrotechnick: if not is retarded [17:49] tjholowaychuk: one thing I hate the most, is the lack of var [17:50] pyrotechnick: there is var [17:50] tjholowaychuk: and parens [17:50] pyrotechnick: u can use parens [17:50] polotek: I'm not knocking people who like it. I'm aware that I'm biased [17:50] tjholowaychuk: nothing is worse than having to figure out where this damn variable came from, oh wait its a method call [17:50] stride: yeah, it's in future somewhere [17:50] tjholowaychuk: or wait its a function [17:50] tjholowaychuk: lol [17:50] tjholowaychuk: fuck [17:50] stride: (the parens) [17:50] polotek: you can write ruby with parens but people will flame you :) [17:50] tjholowaychuk: haha yeah [17:50] stride: huh? where's JS better at that tjholowaychuk? [17:51] tjholowaychuk: stride: what? [17:51] mraleph: ryah: so did you manage to resolve compilation errors? [17:51] pyrotechnick: man we shouldnt start a language war within javascript we really shouldnt [17:51] pyrotechnick: its worst than fighting php [17:51] webr3: anybody working on decent XML support for node w/ full namespace support? [17:51] polotek: pyrotechnick: we are definitely united against php, don't worry [17:51] pyrotechnick: we should all focus our efforts on dissing php [17:51] Imperion: PHP? DIE RASMUS DIE [17:51] pyrotechnick: coffee and js are both beautiful [17:51] B2oba: what's wrong with php? ^^ [17:51] B2oba: :P [17:52] pyrotechnick: hmm [17:52] polotek: webr3: https://github.com/polotek/libxmljs [17:52] pyrotechnick: my favourite thing about php [17:52] pyrotechnick: date_sunset() [17:52] polotek: <-- maintainer [17:52] MikhX has joined the channel [17:52] pyrotechnick: date_sunrise() [17:52] polotek: I take issues and patches [17:52] ryah: mraleph: no [17:52] masahiroh has joined the channel [17:52] webr3: polotek, cheers I'll give it a try and let you know w/ issues / patches :) [17:52] ryah: mraleph: i'll try again in a sec... [17:52] pyrotechnick: putting date_sunset() into global makes me php wernt even trying to be serious [17:53] pyrotechnick: how many php'rs even know that exists let alone use it [17:53] polotek: webr3: the syntax for the namespace stuff can be tricky [17:53] polotek: make sure to checkout the wiki [17:53] webr3: non of the languages are perfect, far from it, ecmascript, php, python, ruby, ocaml, haskell, prolog etc all have there good and bad sides [17:53] pyrotechnick: prolog is so sick [17:53] Imperion: tjholowaychuk: um, you said something about sessions? but I don't use them [17:53] webr3: polotek, will do :) [17:53] pyrotechnick: we're using it in our games [17:53] pyrotechnick: a javascript port [17:53] Imperion: name me a good side of PHP [17:53] pyrotechnick: umm [17:53] Imperion: please [17:53] pyrotechnick: zend framework [17:53] Imperion: that's not a good side [17:53] webr3: Imperion, mass usage, you hardly have to write anything, you just dl it all and run, it's good for new programmers etc [17:53] polotek: there is a lot of good functionality that is available in php [17:54] B2oba: it's easy [17:54] polotek: because it's extremely popular [17:54] tjholowaychuk: Imperion: I was just guessing at what your problem might be [17:54] webr3: and drivers for everything [17:54] polotek: but we should just port all that stuff [17:54] polotek: then drop the language :) [17:54] pyrotechnick: right [17:54] B2oba: it's rich in terms of open sources application available for it [17:54] webr3: Imperion, getting righteous about a language people will flame in a few years is pointless [17:54] webr3: none are great [17:54] B2oba: and in terms of frameworks [17:54] pyrotechnick: im convinced php only exists because of facebook [17:54] Imperion: pyrotechnick++ [17:54] v8bot: Imperion has given a beer to pyrotechnick. pyrotechnick now has 1 beers. [17:54] webr3: nah, facebook only exists because of phg ;) [17:54] webr3: php* [17:54] pyrotechnick: and even then they have to translate it into c because it's so aids [17:54] Imperion: cool bot [17:54] webr3: ACTION not a php proponent btw [17:54] pyrotechnick: Imperion++++ [17:55] pyrotechnick: Imperion+=1/0 [17:55] SubStack: php was plenty popular before facebook existed [17:55] pyrotechnick: right [17:55] Imperion: I don't want a NaN [17:55] pyrotechnick: but i think it would have died if it wernt for facebook [17:55] webr3: pyrotechnick, considering making an updated prolog like language for graph based data, reasoning inference etc at some point.. [17:55] pyrotechnick: webr3 DO IT [17:55] stride: facebook always existed. [17:55] pyrotechnick: prolog is amazing [17:55] stride: :> [17:55] B2oba: =D [17:55] pyrotechnick: i was in the zend framework irc when the facebook guys were in there mocking it up [17:56] pyrotechnick: if only i had known i would have tried to stop them [17:56] tjholowaychuk: because zend is shit [17:56] webr3: pyrotechnick, indeed, might have to do list down enough to give it a stab in the summer [17:56] pyrotechnick: webr3 id totally watch it on gthub [17:56] tladuke has joined the channel [17:57] pyrotechnick: webr3: http://ioctl.org/logic/prolog1 [17:57] nefD: php hate is a little funny to me.. hate all you want, but you can easily get a job that pays the bills with php experience [17:57] pyrotechnick: if you hate yourself [17:57] nefD: i'd say, from my experience, its dramatically easier to get a job with php skills *and* javascript/html skills than with javascript skills alone [17:57] pyrotechnick: not everyone hates themselves [17:58] namelessnotion has joined the channel [17:58] polotek: php pays my bills right now [17:58] polotek: and I do hate myself a little [17:58] estrathmeyer has joined the channel [17:58] nefD: you can perhaps convince a developer that php sucks, but unless you can convince all the businesses that use php that it sucks, its a waste [17:58] masahiroh has joined the channel [17:58] kriszyp has joined the channel [17:59] wycats has joined the channel [17:59] sh1m has joined the channel [17:59] pyrotechnick: yeah [17:59] pyrotechnick: i try everyday [17:59] pyrotechnick: they just get upset [17:59] Imperion: we must build a time machine [18:00] polotek: nefD: I'm not trying to convince anybody [18:00] Imperion: and travel back to 1995 and assassinate Rasmus Lerdorf [18:00] pyrotechnick: i do it really harshly. i tell them there will come a day when they realise what they've been doing is a mistake [18:00] polotek: I'm just stating it as incontrovertible fact that php sucks [18:00] B2oba: truth is php doesn't suck from a business perspective... Because there are lots of developpers (and they don't need to be good to produce a "good enough" product), along with many existing php compatible solution easily deployable [18:00] polotek: ;) [18:00] sebastiandeutsch: hi, has anyone used mailer to send emails via googlemail? [18:00] sebastiandeutsch:  [18:01] nefD: polotek: no no, i meant no offense or any personal accusations, just sayin.. it's everywhere, so shunning in might hurt ones career prospects in the current market [18:01] pyrotechnick: fuck i love the node.js community [18:01] pyrotechnick: thankyou ryah [18:01] pyrotechnick: thankyou so very much [18:01] SubStack: B2oba: also consider the opportunism and quality of developers when advertising for a php position [18:02] SubStack: and code-reuse in php is super annoying [18:02] SubStack: long live npm! [18:02] jpick has joined the channel [18:02] pyrotechnick: love live npm! [18:02] pyrotechnick: lol PEAR [18:02] B2oba: npm? [18:02] pyrotechnick: PEAR makes me want to VIMM [18:02] Imperion: npm! [18:02] pyrotechnick: npm! [18:02] nefD: i will say this.. where i work, when it comes time to hire a new php developer, we've actually stopped looking for primary php developers.. we look for people with experience in several other languages and teach them the ropes [18:02] pyrotechnick: NPM FOR THE GREATER GOOD [18:02] nefD: learning *just* php tends to make you one of "those php developers" :P [18:03] polotek: B2oba: wow you are new, haha [18:03] polotek: npm is the defacto node package manager [18:03] dguttman has joined the channel [18:03] ryah: pyrotechnick: :P [18:03] Imperion: though npm must get its setuid magic done [18:03] aconbere has joined the channel [18:03] yozlet has joined the channel [18:03] B2oba: polotek: I am :D Started using node few days ago... lol [18:03] amerine has joined the channel [18:03] smcq has joined the channel [18:04] polotek: B2oba: http://npmjs.org/ [18:04] polotek: do it [18:04] lintaba_: if the php weren't be, nobody wanted to create the much better nodejs :P [18:04] CIA-121: node: 03Ryan Dahl 07debugger * rf484cbf 10/ lib/_debugger.js : Debugger: better maintance of script list - http://bit.ly/eEttgB [18:04] Imperion: PHP makes me want to cry [18:04] Imperion: seriously, working on a large project with it is utter PAIN [18:05] pyrotechnick: ryah: it's just so refreshing to trust that, 99.99% universally, everyone you meet who is using node.js will be an informed, objective and cooperative developer [18:05] wycats_ has joined the channel [18:05] pyrotechnick: and that's really not true for any other community anymore [18:05] B2oba: polotek: Thanks, didn't know about it... looking it up [18:05] B2oba: Imperion: What do you use for large projects? [18:05] nefD: pyrotechnick: just give it time :) [18:05] Imperion: I'm porting my old PHP project to Node [18:05] Me1000 has joined the channel [18:05] bingomanatee__: nerfD: you're right, its hard for a php developer to earn much more than six figures these days. [18:06] tjholowaychuk: pyrotechnick: haha yeah soon enough it will be a clusterfuck of newbs like Drupal or any other community [18:06] nefD: bingomanatee_: nerfD! i like the ring of that [18:06] ryah: yeah - it's early days still [18:06] halfhalo: Gimme web_app_theme for node and im happy [18:06] pyrotechnick: NOOOOOOOO [18:06] ryah: the question is how to maintain high community standards moving forward? [18:06] pyrotechnick: it's so 37 signals [18:06] pyrotechnick: ryah: cap the community [18:06] pyrotechnick: ryah: dont make it too easy [18:07] bingomanatee__: ryah: well a lot of bitchy insularity is a step in the right direction... [18:07] Me1000 has joined the channel [18:07] pyrotechnick: ryah: put php sucks on the webpage [18:07] halfhalo: I vote fight to the death to get in [18:07] ryah: bingomanatee__: :) [18:07] pyrotechnick: thatll pretty much safeguard it from anyone who likes php [18:07] bingomanatee__: but the best way to maintain good standards is for the best developers to code fast and establish high standards before the masses adopt your system. [18:08] pyrotechnick: bingomanatee_++ [18:08] v8bot: pyrotechnick has given a beer to bingomanatee_. bingomanatee_ now has 1 beers. [18:08] c4milo: bingomanatee_++ [18:08] v8bot: bingomanatee_ is getting too many beers. Don't let bingomanatee_ get drunk! [18:08] pyrotechnick: :O take it easy bingomanatee_ [18:08] bingomanatee__: Mediocre developers always grab existing solutions before coding from scratch (or at least crash and burn when they try) so if you get good stuff out first, it becomes a "community standard". [18:08] pyrotechnick: you have to drive... [18:08] SubStack: nobody write a rails and it'll be fine [18:08] halfhalo: I love rails for what it is [18:08] TheEmpath: bingamanatee__++ [18:08] v8bot: TheEmpath has given a beer to bingamanatee__. bingamanatee__ now has 1 beers. [18:08] nefD: hrm. [18:09] bingomanatee__: Actually SubStack, I'd say that making Rails is the first way to establish community standards. [18:09] nefD: bingomanatee_: so anyone who likes php is obviously not suited to use node.js? [18:09] lintaba__ has joined the channel [18:09] halfhalo: Yup [18:09] TheEmpath: i've worked in places where art students and non-programmers dictated everything and their primary solution course was to grab off-the-shelf opensource and struggle with configuring it [18:09] B2oba: I like php, and i'm sure i can enjoy node.js as well [18:09] TheEmpath: i wanted to plant wasps into their ears [18:09] bingomanatee__: A flexible adaptable toolset with standards that are clear and well documented is the first step towards making standard, because then it becomes standards you can use to make money with. [18:09] nefD: bingomanatee_: thats a fantastic sweeping generalization you made there! ++good! [18:09] AAA_awright_ has joined the channel [18:10] SubStack: standards suck [18:10] arpegius has joined the channel [18:10] bingomanatee__: Keep in mind that that is the bottom line - people adopt systems, languages, et all because the systems help them make money. Its up to the development community to step in front of this factor and make the standard tools good. [18:11] SubStack: in their capacity to paralyze progress to cator to legacy code [18:11] bingomanatee__: My feeling is that if you create systems where you have to buy in to the whole morass to use any of it, then yes they suck gay donkey dong. [18:11] TheEmpath: lack of standards can have the exact same ffect, SubStack [18:12] bingomanatee__: If you can create a contract based suite of tools that don't force you to adopt a whole aircraft carrier just to fly to Sacramento, then you have a pattern that both makes people money and doesn't make developers VIMM. [18:12] SubStack: contract-based? oh no [18:12] SubStack: I hate design by contract [18:13] bingomanatee__: Well, and I'm not trying to use this as a platform to pimp ZF, I found ZF to be a very easy sell because you can bring in its components - model, view, controller - into an existing codebase without requiring buy-off on the entire suite. [18:13] ezmobius has joined the channel [18:13] bingomanatee__: I used the ORM of ZF to renovate a site with a piss poor lousy data interchange model at Clean Power Finance even though I knew I didn't have the bandwidth to whole-hog MVC the app. [18:14] SubStack: good design should imply functionality through organization [18:14] Imperion: tjholowaychuk: please help [18:14] bingomanatee__: So what I'm saying is that creating utilities with the CAPACITY to interact and build on each other creates the possibility of a unified suite that can be grabbed off the shelf. [18:15] bingomanatee__: however something like rails that OBLIGES you to adopt a whole suite or go F yourself kind of creates a VIMM experience, because you are forced to buy off on a quantum solution before you can really grok the implications of the decision you have made. [18:16] vineyard has joined the channel [18:16] Imperion: VIMM? [18:16] bingomanatee__: Vomit In My Mouth. [18:16] boaz has joined the channel [18:17] SubStack: bingomanatee__: sounds like inversion of control with respect to re-use [18:17] SubStack: the libraries <-> framework continuum [18:17] bingomanatee__: Yep pretty much. [18:18] bingomanatee__: I think that the success of Drupal as a product shows that there is a need for a "run an gun" admin friendly tool. [18:18] SubStack: well I agree with you there in my own preference for libraries [18:18] SubStack: haven't used zend (and don't ever care to) though [18:18] bingomanatee__: However the failure of Drupal as a codebase shows that you really shoot yourself in the foot by not maintaining a separation of concerns in such a product such that [18:19] bingomanatee__: if an individual developer likes a particular aspect of a suite, he should be able to seperate it from the whole and run with it. [18:20] bingomanatee__: Like I said - I just wanted to give an example of how a good suite like ZF should be decomposable, so that those with disagreement about the worth of a given feature set of the suite aren't railroaded into adopting it. [18:20] SubStack: that is pretty tricky to do for web components [18:20] bingomanatee__: Good design is by nature tricky. [18:20] SubStack: perhaps because of how many layers the ui needs to hit [18:20] bingomanatee__: Any jagoff can create a blog tool. [18:21] jchris has joined the channel [18:21] bingomanatee__: Most jagoffs do. [18:21] sudoer has joined the channel [18:21] bingomanatee__: The fact that, for instance, express is templating engine agnostic is an example of a step in the right direction. [18:22] tjholowaychuk: bingomanatee__: and you can mix/match :) [18:22] bingomanatee__: I don't know, for instance, that a canonical routing system is necessary or even desirable. [18:22] tjholowaychuk: if you really wanted [18:22] tjholowaychuk: haha [18:22] benburkert has joined the channel [18:23] bingomanatee__: tjholowaychuk: Something tells me that you recreated the "Reeses Peanut Butter Cups" commercial as a child. [18:23] jtsnow has joined the channel [18:23] SubStack: I like how connect/express lets you hack in your own route stuff pretty easily with next() [18:23] SubStack: so much nicer than rails with all that config.rb noise [18:23] polotek: bingomanatee_: I've definitely seen other routing systems [18:23] TheEmpath: http://stationarynotes.com/lolz/yo_mamma.jpg [18:24] SubStack: better than sinatra too since you have more control over the order of operations [18:24] polotek: I've used one based on an object tree [18:24] bingomanatee__: I think it would be useful to build out at least one mature canonical routing/bootstrapping system a little to at least create a point of reference [18:24] polotek: no strings or regexs [18:24] polotek: quite nice, though limited in some ways [18:24] tjholowaychuk: i find other routing systems CANbe nice, but ultimately more limiting [18:24] tjholowaychuk: which is why I went with what express gives you, you can derived any of these other ones from it [18:25] SubStack: tjholowaychuk: it works pretty well [18:25] bingomanatee__: and it might be nice to create a provider interface standard adaptive layer to allow for multi-repository access in the same vein as the multi-templating system of express works now [18:25] polotek: I haven't tried anything fancy with the express routing system [18:25] polotek: how would you make a custom router? [18:25] EyePulp: okay, if mongoose *can't* do something the native driver can, how do I retrieve the the native collection object out of the Mongoose collection/model/table thingy? [18:25] bingomanatee__: perhaps even one that works across REST repositories [18:25] TheEmpath: good question EyePulp [18:25] TheEmpath: queezy name, thou [18:25] bingomanatee__: but that isn't something I'm as certain of at the moment. [18:25] SubStack: bingomanatee__: connect.router() middleware is pretty standard [18:26] tjholowaychuk: polotek: easy, for example https://github.com/visionmedia/express-contrib/blob/master/lib/express-contrib/resource.js [18:26] EyePulp: is there a simple way to bypass the mongoose object and run directly against the underlying mongodb-native driver collection? [18:26] tjholowaychuk: it is progressive enough that you can easily generate routes, where as with other solutions they start at the high-end so you are just kinda fucked [18:26] EyePulp: TheEmpath: I hope there's a good answer... =) [18:27] bingomanatee__: Substack: that is why as I said, I'm not so sure that a community established controller/routing layer standard is that important - there is already a lot of stuff there. [18:27] aconbere has joined the channel [18:27] naturalethic has joined the channel [18:27] TheEmpath: AIBTH - Anything Is Better Than Httpd.conf [18:28] bingomanatee__: EyePulp: as I understand it you can create noSchema actions that run you a lot closer to core in mongoose. [18:28] tjholowaychuk: bingomanatee__: its pretty trivial, I dont think we need to standardize that at all [18:28] polotek: tjholowaychuk: interesting, I can see how you could build on top of this [18:28] tjholowaychuk: polotek: yup :) but good luck doing the reverse :p [18:28] tjholowaychuk: which is how I feel with rails [18:28] tjholowaychuk: you are breaking it down instead of building it up [18:29] EyePulp: bingomanatee_: interesting [18:29] sh1mmer has joined the channel [18:29] bingomanatee__: tjholowaychuk: I agree - and in fact the reason that I am a strong advocate of shared but independent compont suites over RAILS like battleships is so that you don't have to standardize routing and the aspects of application building that developers want to have full control over. [18:30] tjholowaychuk: sharing components is pretty much always a big fail [18:30] tjholowaychuk: from what I have seen [18:31] saschagehlich: is there a way to convert html special chars to utf8? [18:32] bingomanatee__: I just think that its important to recognize that while developers (justifiably) hate things like Rails and Drupal with a passion, its important to recognize that their success (i.e., the reason that they exist as a model of "the thing to be hated) are based on real world demands, and that failing to satisfy those real world demands just because past satisfiers have been so badly constructed, is to miss a real opportunity for [18:32] bingomanatee__: promotion of Node to a broader audiene. [18:32] davidc_ has joined the channel [18:32] davidc_ has joined the channel [18:32] tjholowaychuk: bingomanatee__: yeah [18:33] bingomanatee__: (audience). If Node doesn't have a check in the "Rails/Drupal" box then it misses an opportunity for mass adoption. Not the ONLY opportunity for mass adoption, but definately the most successful one in recent history. [18:33] tjholowaychuk: I had something started [18:33] tjholowaychuk: haha [18:33] tjholowaychuk: but yaeh [18:33] tjholowaychuk: I know what you mean though [18:33] tjholowaychuk: some people prefer to start with the be-all end-all and realize it doesnt fit their needs, instead of building what they do need [18:33] bingomanatee__: So as hateful and Catholic as it may sound, to be truly successful, Node needs a canonical system that can be used by nontechnnical people to solve problems. [18:34] opengeard has joined the channel [18:34] bingomanatee__: this does not mean that the system has to be done in the sloppy, "buy the quantum package or go screw" way its been done in the past... [18:35] flowlo has joined the channel [18:35] SubStack: node is not for nontechnical people [18:35] SubStack: that is the scope or some other project [18:36] SubStack: it's not about "winning" it's about solving specific problems that people have [18:36] flowlo: hi, when i try to transfer a jpeg file via HTTP, node throws an EPIPE. could somebody help me? ... exception+code is pasted here http://pastebin.com/NFGK1p1J [18:36] bingomanatee__: but we have to come together as a community and do what TJ tells us to if we want to be a part of coding history, and not just another "interesting" language. [18:36] polotek: I don't have a problem with rails [18:36] polotek: I think it would be fine to build rails in node [18:36] polotek: as long as it kept the non-blocking principals [18:37] polotek: It would just be rails only fast [18:37] SubStack: git means that you don't have to come together at all [18:37] SubStack: everybody can just do their own thing [18:37] bingomanatee__: Well its good that we all know what node isn't now. [18:38] bingomanatee__: I'd be a little disappointed with a "Nails" or "Nupal" (as funny as those names are) [18:38] polotek: monolithic frameworks aren't bad. but there also needs to be an alternative them. [18:38] bingomanatee__: but I'd also be a little disappointed if some effort wasn't put in that direction. [18:38] SubStack: then put the effort in yourself! [18:38] polotek: in my mind it's more about diversity. [18:39] SubStack: hack something up, throw it up on github, npm publish [18:39] bingomanatee__: I am... however, I know I am not the best node developer in the channel -- and quite possibly amongst the worse... [18:39] polotek: mass adoption requires stable, full-featured options for business [18:39] bingomanatee__: so I'd rather inspire someone else to lead and contribute to their effort. [18:39] polotek: but also cool cutting edge options to lure in top shelf programmers as advocates [18:39] SubStack: bingomanatee__: there is no shortage of web frameworks right now [18:40] bingomanatee__: someone like Tjholowaychuk, only perhaps not as disrmingly handsome and charismatic. [18:40] EyePulp: hah [18:40] tjholowaychuk: ahahahaha! [18:40] tjholowaychuk: RANDOM [18:40] EyePulp: ACTION forgot to put on his boots [18:40] SubStack: tjholowaychuk: hey, don't disarm me like that! [18:40] tjholowaychuk: haha [18:40] tjholowaychuk: oh man [18:40] SubStack: so fucking dreamy [18:41] SamuraiJack__ has joined the channel [18:41] bingomanatee__: I mean, its hard to think of coding when you can just get lost in his eyes forever... [18:41] polotek: ACTION is uncomfortable with the turn in conversation [18:41] tjholowaychuk: haha yeah this is getting a little weird lol [18:42] bingomanatee__: [18:42] pyrotechnick: i would personally like a rails in node [18:42] flowlo has left the channel [18:42] pyrotechnick: being an ex ZF -> merb -> rails dev [18:42] sechrist: ACTION is also uncomfortable [18:42] pyrotechnick: i have an appreciation for full-stack frameworks [18:42] SubStack: there are already rails clones for node [18:42] stride: ACTION starts to print tjholowaychuk-shirts, who wants one? [18:42] SubStack: like geddy [18:42] pyrotechnick: right but its not quite there yet [18:43] SubStack: fork it [18:43] polotek: whew! git rebase accomplished [18:43] pyrotechnick: right but i guess what im saying is [18:43] bingomanatee__: To me the apex of a framework is how much you can accomplish without actually touching source. [18:43] pyrotechnick: someone needs to be the 37 signals of the node rails [18:43] nefD: i've gotten to be pretty proficient with node (we've used it for some internal programs where i work, at my behest), but since i do a lot of php work as well (and dont hate it), it *must* be shite [18:44] bingomanatee__: There are projects that demand atomic attention to architecture, but there are projects that are fairly well served with scaffolding and clever use of CSS and client side JS. [18:44] SubStack: pyrotechnick: I worry about that when slick marketing starts to obscure the technical merits and flaws of a product [18:44] polotek: bingomanatee_: see I have the opposite opinion about frameworks [18:44] polotek: you should always be able to see code that explains what it does [18:44] pyrotechnick: im not saying they should be like 37 signals [18:44] polotek: maybe it has scaffolding or common configurations [18:44] pyrotechnick: but im saying they should stand up and publicly announce themselves as the father of it [18:44] polotek: but it should be made of components that can be re-used and recomposed [18:45] pyrotechnick: polotek: that's a library rather than a framework TBH [18:45] bingomanatee__: Yes, we need a King! [18:45] pyrotechnick: yes we do need a king TBH [18:45] polotek: pyrotechnick: framework doesn't have an acceptable definition [18:45] SubStack: scaffolding sucks, especially so in dynamic languages that have run-time introspection [18:45] bingomanatee__: a kind and generous Emporer to end this war and bring order to the galaxy! [18:45] polotek: in my mind a framework is a collection of libraries with some glue that makes it easy to get started [18:45] polotek: but you can also break down any part of it and make it work the way you want [18:46] polotek: SubStack: agreed, I don't like scaffolding but it's one approach to the problem of initial setup [18:46] polotek: If I was building my own system I would prefer to start pretty low level and wire up the components myself actually [18:47] SubStack: polotek: I prefer pithy little one-liners on the readme for that [18:47] SubStack: like http://expressjs.com/ has a great one right at the top [18:47] polotek: Rather than code generation i would prefer prepacked starting skeletons [18:47] polotek: you can go through them to see how things work [18:48] polotek: but then delete, change or repurpose any part of them [18:48] polotek: maybe skeletons isn't the right word. they should be fully functional [18:48] polotek: just basic [18:48] SubStack: skeletons make me weary since if functionality is so common it should probably be abstracted away into the interface [18:48] bingomanatee__: I can very much see building out and extending and developing canonical use cases of express as a good first step. [18:48] SubStack: polotek: "examples"? [18:49] SubStack: I am all about examples [18:49] shakefon has joined the channel [18:49] polotek: SubStack: I can see why people think that, but that's actually what I want to avoid [18:49] polotek: the more you integrate the more monolithic you become [18:49] Druid_ has joined the channel [18:49] Imperion: tjholowaychuk: does Jade do some sort of caching/buffering? [18:49] Imperion: 'cuz I might have an answer [18:50] polotek: also, we might not be talking about the same level of abstraction [18:50] polotek: like tagging [18:50] polotek: everybody wants tagging [18:50] tjholowaychuk: Imperion: nope, Express (in NODE_ENV=production) caches the compiled functions though [18:50] polotek: but in practice everybody wants tagging done just a little differently [18:50] Imperion: - each listing in listings [18:50] Imperion: - console.log("this is eeeevil") [18:50] Imperion: tr FLEEEBLE [18:50] polotek: so build a common implementation based on low level building blocks [18:50] Imperion: 2x this is eeevil in the console [18:50] polotek: you can see how it works [18:50] Imperion: 0x the FLEEEBLE [18:50] Imperion: until I refresh [18:51] polotek: but if you want yours to work differently, go ahead and build it from the same components [18:51] Imperion: when it comes up nicely, twice [18:51] polotek: and the framework won't give you crap because it's assuming something else [18:51] bingomanatee__: One good example of a reusable pattern in ZF is that the forms library include dynamic seeding of data, error messages for bad data, and client and/or server side validation. [18:51] danielrmz has joined the channel [18:51] tjholowaychuk: Imperion: :s do you have a block after the - each ? ive really never had issues [18:52] tjholowaychuk: we use jade in production all the time [18:52] tjholowaychuk: havent came across an issue like that [18:52] bingomanatee__: I'm working on that (deformer) for ZF, but that is a good example of a reusable pattern that could be a canonical item to enhance your system without becoming requisite. [18:52] Imperion: yes [18:52] tjholowaychuk: unless it was an error on our part [18:52] Imperion: there is one tab after it [18:53] Imperion: tjholowaychuk: here is the whole template [18:53] Imperion: http://codepad.org/SPiBSOQT [18:54] tjholowaychuk: not sure man :s [18:54] tjholowaychuk: looks fine [18:54] Imperion: lemme see if I can make a testcase [18:55] polotek: I think the biggest mistake in frameworks is marrying request dispatching with the model infrastructure [18:56] pyrotechnick: polotek: i agree [18:56] polotek: and it's only so people building simple CRUD stuff have less boilerplate to write [18:56] vineyard has joined the channel [18:56] polotek: but if done correctly it's really not that much boilerplate [18:57] polotek: and you avoid problems if you want to use a different Model scheme [18:57] SubStack: I have it when web frameworks make it so crazy hard to pass state between pieces of the application that it's easier to write out values to the database and read them out immediately again [18:57] SubStack: *hate [18:57] polotek: SubStack: you mean like a caching thing? not sure I follow [18:59] sh1mmer has joined the channel [19:03] isaacs has joined the channel [19:03] isaacs: SubStack: so, i have this ircretary thing, right? [19:04] mikew3c_ has joined the channel [19:04] SubStack: polotek: I mean MVC rearing its head when it's not appropriate [19:04] isaacs: SubStack: and it listens for mentions of my name or "npm", and then tells me about it. great for tracking down bugs, etc. [19:04] SubStack: isaacs: sure [19:04] EyePulp: SubStack: I finally created a Session object that gets pulled from the mongdb with every incoming request, and then gets attached to the request before passing it out to the routing and rest of the app [19:04] isaacs: SubStack: occasionally, i come in, and ircretary is all "i have notes for you", and then the log is just you cheering. [19:04] isaacs: SubStack: it's hilarious [19:04] SubStack: hah [19:04] SubStack: awesome [19:05] webr3: mongdb? [19:06] polotek: isaacs: hmmm, I see the ircretary repo [19:06] polotek: what would it take for me to get it setup? [19:06] isaacs: ircretary: hi [19:06] ircretary: isaacs: Hello :) [19:06] isaacs: polotek: you don't need to [19:07] isaacs: polotek: just tell her to watch stuff for you, and she will. or send notes. [19:07] SubStack: hooray for npm and isaacs's spying program [19:07] polotek: that's awesome [19:07] isaacs: SubStack: there are half a dozen or more logging bots on this channel. [19:07] isaacs: SubStack: it's not like this isn't public [19:07] isaacs: :) [19:07] polotek: ircretary: help [19:07] ircretary: polotek: I'm not sure what to do with that command. Ask for help in PM. [19:08] isaacs: SubStack: now, the spying backdoors in npm, THAT's secret... [19:08] polotek: haha [19:08] SubStack: it's not like embassy cables are especially private either [19:08] pyrotechnick: these bindings arent too bad when you get warmed up [19:08] SubStack: I bet a backdoor in npm would last a while [19:09] SubStack: especially if it were hidden away in the nastier nethers of the codebase [19:09] pyrotechnick: HERE BE DRAGONS [19:10] SubStack: isaacs: I've fought with a lot of package managers over the years [19:10] polotek: pyrotechnick: make sure you run some memory tests [19:11] pyrotechnick: like [19:11] pyrotechnick: one of those brute force ones? or to check for leaks? [19:11] pyrotechnick: can you point me anywhere? [19:11] polotek: both [19:11] pyrotechnick: can i use xcode instruments [19:11] polotek: pyrotechnick: I just started using instruments [19:12] pyrotechnick: cool [19:12] polotek: still not sure how useful it is with node [19:12] pyrotechnick: hmm [19:12] polotek: I've been using valgrind [19:12] pyrotechnick: right thats the one i was thinking of [19:12] pyrotechnick: ill read into it when im done [19:12] pyrotechnick: im aware of it but ive never used it before [19:12] pyrotechnick: hard to get started? [19:12] polotek: pyrotechnick: a few tips [19:12] polotek: use node_g (you are building node_g right) [19:13] polotek: use --expose_gc and call gc() a lot. the garbage collector is not your friend when writing bindings [19:13] polotek: I've been meaning to write a post about node/valgrind [19:13] pyrotechnick: please do ! [19:13] polotek: it's somewhere in the middle of my huge list of things to do at some point [19:13] pyrotechnick: ^w^ [19:13] pyrotechnick: id appreciate it :D [19:14] pyrotechnick: but thanks for that [19:14] pyrotechnick: noted. [19:14] pyrotechnick: wats this called [19:14] pyrotechnick: Local X = args[0]->ToObject(); [19:14] pyrotechnick: wats the X called [19:14] pyrotechnick: like if it were a sprocket [19:14] pyrotechnick: what would you call that variable [19:15] pyrotechnick: sprocketHandle? [19:15] pyrotechnick: before its unwrapped [19:15] tjholowaychuk: sure [19:15] pyrotechnick: cool [19:15] polotek: valgrind --tool=memcheck --leak-check=full --show-reachable=yes --dsymutil=yes node_g --expose_gc xmltestsimple.js 2> out.log [19:15] pyrotechnick: sweet [19:15] pyrotechnick: wat would be in there tests [19:16] pyrotechnick: can u point me to the file? [19:18] polotek: pyrotechnick: this is my hammer test for libxmljs [19:18] polotek: https://gist.github.com/760165 [19:18] pyrotechnick: ta [19:19] saschagehlich has joined the channel [19:19] polotek: don't worry about the "mem" function, you can just call process.memoryUsage() [19:19] pyrotechnick: getting real close now [19:19] pyrotechnick: okay [19:19] polotek: but the general idea is to make your binding objects [19:19] smcq has joined the channel [19:19] polotek: use them [19:19] polotek: then throw them away [19:19] polotek: and call gc [19:19] polotek: then touch the variables again [19:20] polotek: you'll either get nice js errors because they're now undefined [19:20] polotek: or you'll get nasty segfaults [19:21] pyrotechnick: ok makes sense [19:21] pyrotechnick: i was using node-ffi [19:21] pyrotechnick: used to segfaults lol [19:21] polotek: I wanted to try node-ffi for a few other ideas I had [19:21] polotek: I have real issues with the v8 api [19:22] polotek: it requires lots of code just to handle translating arguments between js and c/c++ [19:22] polotek: which is important I know. but most of the time if some lib would handle the 80% cases it would be much easier [19:22] sivy: wow, i got a 'this is very rare' error instlling npm [19:23] sivy: isaacs: i've tried installing 3 different ways [19:23] markwubben has joined the channel [19:24] ossareh has joined the channel [19:24] AlexMax has joined the channel [19:24] sivy: https://gist.github.com/760171 -- error when installing npm [19:25] mediacoder has joined the channel [19:25] polotek: sivy: have you tried running scripts/install.sh [19:25] sivy: polotek: yes, sae error [19:25] sivy: same [19:26] sivy: version mismatch? i'm using node 0.3.2 and npm 0.2.13-3 [19:26] isaacs: sivy: that happens when gzip or tar fail [19:26] sivy: isaacs: yes, it mentions that, but i can't figure out why [19:27] sivy: gzip and tar are both in /bin/ [19:27] isaacs: sivy: what's tar --version? [19:27] sivy: 1.23 [19:27] jamesarosen has joined the channel [19:28] sivy: gzip 1.3.12 [19:28] isaacs: sivy: no, i mean, which tar is it? gnutar, bsdtar? [19:28] isaacs: etc. [19:28] sivy: gnu tar [19:28] pHcF has joined the channel [19:28] polotek: wow, it's 2:30. I should probably get some work done [19:29] isaacs: sivy: what os? [19:29] SubStack: work! I do that sometimes [19:30] sivy: isaacs: debian [19:30] isaacs: sivy: can you do this, and then try again? export npm_config_loglevel=verbose [19:30] EyePulp: soooo... how do I access the underlying node-mongodb-native collection for model Foo in Mongoose? Foo.collection doesn't do it... [19:31] sivy: isaacs: https://gist.github.com/40d653bd2c429e2a08e8 [19:31] sivy: oh hrm [19:32] isaacs: sivy: interesting. looks like you don't have permission to write to /usr/local/lib/node [19:33] isaacs has joined the channel [19:33] isaacs: sivy: https://gist.github.com/579814 [19:33] sivy: isaacs: will check it out, thx [19:34] isaacs: sivy: or, you can just use sudo with npm always and forever. [19:34] pyrotechnick: IT SUCKS [19:34] isaacs: sivy: sudo ./scripts/install.sh ; sudo npm install stuff ; etc. [19:34] pyrotechnick: DONT DO IT [19:34] sivy: blagh [19:34] pyrotechnick: you will aways forget [19:34] ryah: <3 new debugger [19:34] pyrotechnick: does it work? [19:34] ryah: almost ready to merge [19:34] pyrotechnick: YAY [19:34] isaacs: ryah: nice [19:35] tjholowaychuk: ryah: can you repeat commands now [19:35] tjholowaychuk: ? [19:35] ryah: tjholowaychuk: repeat? [19:35] pyrotechnick: ryah: please for the love of god document all that you can about it [19:35] ryah: tjholowaychuk: on enter do last command? [19:35] polotek: ryah: how'd you speed it up? [19:35] vborja has joined the channel [19:35] tjholowaychuk: ryah: yup [19:35] tjholowaychuk: I had some patches [19:35] ryah: tjholowaychuk: not yet, will do [19:35] tjholowaychuk: but you did a bunch more so they probably wont apply [19:35] isaacs: tjholowaychuk: wait what's this? [19:36] isaacs: tjholowaychuk: the idea is that pressing enter in the repl is like up-enter? [19:36] tjholowaychuk: isaacs: https://github.com/visionmedia/node/commit/16ce792c39525e5cb1e07498c5356fe914cd87e9 [19:36] tjholowaychuk: yeah [19:36] pyrotechnick: how do you deal with structs with bindings... [19:36] tjholowaychuk: gdb is the same [19:36] isaacs: that's kinda neat [19:36] pyrotechnick: m_dynamicsWorld->setGravity(btVector3(0,-10,0)); [19:36] pyrotechnick: thats the c [19:36] booths has joined the channel [19:36] isaacs: tjholowaychuk: i do occasionally mash the enter key to make some visual space, though [19:36] isaacs: i'd probably get bitten by that a lot [19:37] tjholowaychuk: isaacs: oh really? [19:37] tjholowaychuk: hm [19:37] polotek: pyrotechnick: you'll have to wrap it in an accessor class [19:37] tjholowaychuk: its really nice to have for stepping [19:37] isaacs: tjholowaychuk: absolutely [19:37] pyrotechnick: accessor [19:37] polotek: where does the struct usually live in C code? [19:37] isaacs: step needs to have a single keystroke [19:37] pyrotechnick: instead of objectwrap? [19:37] isaacs: can it be something other than enter? [19:37] pyrotechnick: what would the js look like? [19:37] pyrotechnick: a function or a class [19:37] isaacs: like, pressing F5 does the last command, or something? i dunno [19:37] pyrotechnick: new Vector or just Vector() [19:37] aklt: Hi all, just wandering: what library are you using for asynchronous io? [19:37] isaacs: or shift-enter? [19:37] pyrotechnick: libeio [19:38] tjholowaychuk: isaacs: enter is pretty standard AFAIK [19:38] tjholowaychuk: at least with all the debuggers ive used [19:38] polotek: pyrotechnick: depends on what kind of api you want [19:38] isaacs: tjholowaychuk: yeah, but not with repls [19:38] pyrotechnick: what would you suggest [19:38] polotek: but you need a C++ class to expose to js [19:38] isaacs: tjholowaychuk: you're right, though, stepwise debuggers do usually use enter for that. [19:38] pyrotechnick: i want them to feel like its a struct [19:38] polotek: it can have the struct as a member property [19:38] isaacs: F5 is typically "run until the next breakpoint" [19:38] pyrotechnick: okay [19:38] fumanchu182: asynchronous callbacks are nasty... [19:38] pyrotechnick: maybe just a function then [19:38] isaacs: (at least, with vis studio and some old version of firebug) [19:38] fumanchu182: Taking my head for a spin here. [19:39] pyrotechnick: that seems more structy [19:39] aklt: pyrotechnick: oh, I was thinking in javascript, i.e. Do or Step... [19:39] polotek: pyrotechnick: if your struct is related to one of the other classes you've already bound [19:39] pyrotechnick: lol okay [19:39] polotek: just make it a member property of that class [19:39] polotek: and have that class manage it's lifetime [19:39] pyrotechnick: umm [19:39] polotek: and provide accessor functions for it [19:39] isaacs: tjholowaychuk: maybe the debugger could just have "empty command" mapped to "next()" or whatever [19:39] pyrotechnick: its like [19:40] pyrotechnick: m_dynamicsWorld->setGravity(btVector3(0,-10,0)); [19:40] pyrotechnick: its just an object that gets passed into that method and some others [19:40] polotek: what is bgVector3? [19:40] polotek: btVector3 [19:40] pyrotechnick: a struct [19:40] tjholowaychuk: isaacs: I like it repeating, for continue, next, step etc [19:40] pyrotechnick: let me find the typedef [19:40] tjholowaychuk: its obviously not useful for some [19:41] polotek: it's typedefed so you can call it like a class constructor? [19:41] isaacs: tjholowaychuk: it'd be annoying if you dumped some big object or ran a slow command in the repl, and then want to press enter a few times to provide a visual break [19:41] isaacs: . [19:41] isaacs: tjholowaychuk: you'd end up dumping that same thing over and over. [19:41] polotek: if you want the api to be similar in js then yes you need a btVector binding class [19:42] tjholowaychuk: isaacs: haha yeah, maybe we should just grep on step/next/continue etc [19:42] pyrotechnick: polotek: it's a class apparently. i didnt know u cud do just className() [19:42] isaacs: or, maybe, the repl could expose an "emptyCommand" event or something, and then the debugger could hook into that and call repl.run(history[-1]) [19:42] tjholowaychuk: yeah abstracting it would be nice [19:43] pyrotechnick: i guess that works for just locals [19:43] kjsthree has joined the channel [19:43] pyrotechnick: https://github.com/feisty/bullet/blob/master/src/vectormath/scalar/vectormath_aos.h [19:43] pyrotechnick: its at the top of here [19:43] polotek: pyrotechnick: yeah, it creates a local which gets copied when it goes into the function [19:43] pyrotechnick: thats cool [19:43] tjholowaychuk: isaacs: just keep in mind my patch was only for _debugger, it wont affect repl [19:43] hunterloftis_ has joined the channel [19:44] tjholowaychuk: isaacs: but I agree we should filter on things people would actually want to repeat [19:44] isaacs: tjholowaychuk: orly? i thought it was for repl.js [19:44] pyrotechnick: its been a while since i did c++ ;) [19:44] isaacs: maybe i missed that [19:44] tjholowaychuk: nope [19:44] isaacs: ah, ok [19:44] pyrotechnick: but its all coming back now [19:44] polotek: ACTION is only just now starting to feel like he knows some c++ [19:44] isaacs: nvm, then, i have no opinion :) [19:44] desaiu has joined the channel [19:44] kjsthree: Is it possible/how do I add variables to the locals hash? This is for an express app. [19:44] pyrotechnick: i did a bachelor of games and interactive entertainment at uni [19:44] polotek: kjsthree: not possible [19:44] kjsthree: within middleware [19:44] pyrotechnick: then did a 12 month gig at THQ [19:44] isaacs: tjholowaychuk: yeah, typing out "next()" is a lot for each line [19:44] pyrotechnick: thats about all the c++ ive done [19:44] isaacs: even up-arrow is tedious [19:44] tjholowaychuk: haha yeah it sucks [19:45] polotek: kjsthree: wait, I'm assuming you mean the local scope of a function right? [19:45] desaiu: i want heroku for nodejs, suggestions? [19:45] perezd has joined the channel [19:45] isaacs: imo, though, there should be one key/chord for next, another for previous, another for continue, etc. [19:45] perezd: hey, what is the landscape in node like for CouchDB? [19:45] pyrotechnick: not bad theres alot of adapters [19:45] perezd: do people tend to lean more towards couchDB or MongoDB [19:45] pyrotechnick: yes [19:45] pyrotechnick: although redis is pretty big [19:45] isaacs: i guess you could do a lot worse than just following gdb, though [19:46] pyrotechnick: but mongo couch support is good [19:46] pyrotechnick: look on the modules page [19:46] pyrotechnick: github.com/ry/node/wiki/modules [19:46] perezd: pyrotechnick: which do you use? [19:46] pyrotechnick: we use redis [19:46] pyrotechnick: but id opt for mongo out of those two [19:46] pyrotechnick: simply because its not written in erlang [19:46] pyrotechnick: and doesnt take 2 hours to compile on my i7 MBP [19:47] webr3 has joined the channel [19:47] polotek: pyrotechnick: ha, that sounds like a problem [19:47] tjholowaychuk: pyrotechnick: painful hey [19:47] polotek: never tried to compile couch [19:47] pyrotechnick: its elang that takes the long time [19:47] pyrotechnick: couch itself doesnt take long at all, i dont even know if it has native components [19:47] polotek: pyrotechnick: did you install with ports or from source? [19:47] pyrotechnick: source [19:48] pyrotechnick: thats what the site says to do [19:48] pyrotechnick: i dont remember it taking so long last time [19:48] pyrotechnick: i did it yesterday it took over an hour [19:48] pyrotechnick: i had to quit VOIP cuz my fans were pissing everyone off [19:49] pyrotechnick: anyway theyre a bit different perezd [19:49] polotek: pyrotechnick: get an SSD [19:49] pyrotechnick: i might [19:49] polotek: full of win [19:49] pyrotechnick: yeah so ive heard [19:49] pyrotechnick: good on battery too [19:49] perezd: pyrotechnick: yeah, they totally are, I am still debating which I prefer [19:49] pyrotechnick: i dont have much to store either [19:50] pyrotechnick: if u like the http api then go for couch otherwise go for mongo [19:50] perezd: pyrotechnick: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis [19:50] polotek: I've been putting lots of thought into it recently [19:50] pyrotechnick: couch has a nicer html admin [19:50] perezd: there is a lot more to offer than that [19:50] polotek: I really like mongo [19:50] pyrotechnick: me too [19:50] perezd: polotek: have you used couch? [19:50] polotek: the durability issues don't bother me as much as some others [19:50] polotek: for the personal projects I'm working on [19:51] polotek: the only thing that stops me from using mongo for a lot more is the fact that's it easier to corrupt your db [19:51] perezd: polotek: could u elaborate? [19:51] polotek: well this isn't my area, but I've read a lot about it [19:51] polotek: mongo uses memory mapped files and does cool things with it's data in memory [19:52] pyrotechnick: its a little less structured and you write the routines yourself [19:52] polotek: but that means it doesn't control when those memory mapped files are fsynced to disk [19:52] pyrotechnick: wait maybe thats riak lol [19:52] polotek: so if something craps out in the middle of it doing something, the db could be corrupt [19:52] polotek: from what I've seen the db repair command almost always works to get it back into a usable state [19:52] polotek: but you have to call it more often then I'd like [19:53] perezd: yeah, I am not sure I need the flexibility of random queries constantly [19:53] perezd: and I like the multi-master design [19:53] pyrotechnick: thanks very much for that link perezd [19:53] lintaba__: is there any good solution to set the http headers to cache the static content (like images) with nodejs? [19:53] pyrotechnick: where did you find it [19:53] perezd: no prob [19:53] pyrotechnick: anymore like that? [19:53] perezd: hacker news [19:54] polotek: I really like the couchdb replication stuff [19:54] perezd: also, the couchapp world is interesting [19:54] polotek: I haven't spent enough time with it, but the views thing still isn't very intuitive to me [19:54] polotek: setting up complex queries seems to require a lot of forethought [19:55] polotek: which isn't bad per se [19:55] polotek: :) [19:55] estrathmeyer has left the channel [19:55] c4milo: polotek: that's true, mongodb is more friendly in that aspect [19:55] perezd: yeah, I am just not sure how much I need that [19:55] perezd: views are like stored procedures in some ways [19:55] Aria has joined the channel [19:55] polotek: perezd: yeah that's my mental image as well [19:56] polotek: but that's not good [19:56] CIA-121: node: 03Ryan Dahl 07debugger * ra3c4e17 10/ lib/_debugger.js : debugger: repeat command functionality (+6 more commits...) - http://bit.ly/hqr8sq [19:56] perezd: well its map/reduce [19:56] polotek: cause I have bad experiences with stored procedures [19:56] javajunky has joined the channel [19:56] perezd: so you push data, it renders it using map/reduce into a compiled view [19:56] polotek: they are a PITA to maintain [19:56] javajunky: evenin/mornin etc. [19:56] javajunky: Can anyone recall who wrote the git API for node.js ? I've forgotten but wanted to mess with it a bit :) [19:57] pyrotechnick: the grit one? [19:57] pyrotechnick: https://github.com/christkv/node-git ? [19:57] javajunky: yeah I was just on that one, for some reason I thought there was a more recent one [19:57] pyrotechnick: theres one thats a datastore [19:57] javajunky: perhaps that is it .. I guess I was just checking :) [19:57] pyrotechnick: its like an ORM for git [19:58] pyrotechnick: pretty snazzy idea [19:58] pyrotechnick: thats newer [19:58] pyrotechnick: maybe u thort of that [19:58] perezd: pyrotechnick: can you point me to nodejs couchdb adapters? [19:58] perezd: checking npm [19:58] perezd: not seeing much [19:58] pyrotechnick: github.com/ry/node/wiki/modules [19:58] isaacs: perezd: that's because mostpeople just use an http client [19:58] pyrotechnick: but after all, it's just http [19:58] briznad has joined the channel [19:58] javajunky: could've done, I just remember a relatively recent tweet .. perhaps I'm getting confused, christian's stuff is usually pretty good though, so I'll take a looksi first :) [19:58] sh1mmer has joined the channel [19:58] pyrotechnick: so yeah [19:58] eboyjr has joined the channel [19:58] isaacs: perezd: the couchdb HTTP api is really robust. you can just use request or something. [19:59] pyrotechnick: javajunky: if u find one let me know please [19:59] perezd: pyrotechnick: yeah, one thing thats nice about Mongoose is it gives you some data modeling stuffs [19:59] isaacs: perezd: or vanilla node http client, if you'er feelin brave :) [19:59] polotek: perezd: https://github.com/cloudhead/cradle [19:59] pyrotechnick: id use that one [19:59] pyrotechnick: used it yesterday [19:59] eboyjr: I have an irc bot and I would like to be able to reload my bot without have to reconnect each time. Any suggestions? [19:59] jchris1 has joined the channel [19:59] javajunky: pyrotechnick: will do… just wanted to mess with some visualisation stuff using Tj's canvas modules. [20:00] pyrotechnick: oboyjr: google "hot swapping" node modules [20:00] perezd: ah, streaming changes...thats might be good. [20:00] sivy has joined the channel [20:00] pyrotechnick: javajunky: we're using node-canvas in our game [20:00] pyrotechnick: it's brilliant [20:00] pyrotechnick: we're also using it to do graphical WebGL tests [20:00] perezd: I guess, I can write my own models. [20:00] perezd: and just tie in cradle [20:00] pyrotechnick: so soda takes pictures of the WebGL scenes [20:01] pyrotechnick: and node-canvas compares them to reference images [20:01] pyrotechnick: test passes if all pixels are the same [20:01] polotek: perezd: if you want models try https://github.com/kriszyp/perstore [20:01] polotek: it has the option of multiple datastores [20:01] polotek: couch being one [20:01] polotek: haven't used it but keep meaning to [20:01] timemachine3030: isaacs, perezd, node + couchdb? what up? [20:01] polotek: kriszyp is pretty smart and his stuff is usually awesome [20:01] perezd: timemachine3030: considering couchdb as a datastore vs mongodb for my next project [20:01] eboyjr: pyrotechnick: Thanks I found this https://github.com/blaine/node/tree/hotload [20:02] perezd: but looking at libraries/tooling support trying to compare [20:02] eboyjr: pyrotechnick: Well this http://blog.romeda.org/2010/01/hot-code-loading-in-nodejs.html [20:02] femtooo has joined the channel [20:02] javajunky: pyrotechnick: hah, thats quality, I had a discussion at work with a colleage about 6 months ago to do *exactly* that (compare snapshots of web sites against reference images) .. brilliant [20:02] mgutz has joined the channel [20:03] timemachine3030: perezd, check my github account for the bindings. https://github.com/timemachine3030/node-couchdb [20:03] isaacs has joined the channel [20:03] perezd: timemachine3030: any opinion on the cradle module? [20:03] jimt has joined the channel [20:03] javajunky: pyrotechnick: the tricky bit for us (when we were brainstorming before the project fizzled out) was decided how 'close' to allow the images to differ… [20:03] perezd: timemachine3030: https://github.com/cloudhead/cradle [20:03] perezd: i like the async changes model it has [20:03] lintaba__: 01is there any good solution to set the http headers to cache the static content (like images) with nodejs?01 [20:04] eboyjr: lintaba__: I can't read you. [20:04] pyrotechnick: yeah it's near impossible to do with html. better to do headed tests and watch videos of them ^w^ [20:04] timemachine3030: perezd, I have not used it. so can't comment. [20:04] eboyjr: lintaba__: node-static [20:04] polotek: lintaba__: you have to manage the cache/etag headers yourself [20:05] polotek: I think express tries to handle this for you though [20:05] perezd: timemachine3030: so you are the true fork now for this? [20:05] eric_f has joined the channel [20:06] eric_f: Curious on the best way to install node and npm on OS X, should I not be: sudo make install'ing node? [20:06] isaacs: eric_f: https://gist.github.com/579814 [20:07] isaacs: eric_f: take your pick :) [20:07] lintaba__: yes, but i havent fount any relevant info :S [20:07] timemachine3030: perezd, yes/no felixge still takes patches and does the npm package. though I'm the only one "actively" developing. [20:07] eric_f: isaacs: which one do you use? [20:07] lintaba__: i tried to set the cache to maximum time, but it still loads the files [20:07] polotek: I chmoded my /usr/local dir [20:07] polotek: so it doesn't require sudo [20:07] booths has joined the channel [20:07] polotek: everything I read said it wasn't a big deal [20:08] isaacs: eric_f: i build node from source in the git checkout, and keep that up to date. i own most of /usr/local, so i don't need sudo there, since i'ts a one-user machine. i have a link-install of npm from source for obvious reasons. i use nave to test in other versions of node. [20:08] eric_f: polotek: sure, guess I could always TimeMachine my way out of a total fucked /usr/local [20:08] V1 has joined the channel [20:08] polotek: +1 nave [20:09] isaacs: eric_f: `brew install node` and then one-liner installing npm works now, too. [20:09] polotek: have the problems with the node brew install been addressed? [20:09] polotek: a few months ago it would bork in strange ways [20:10] eric_f: isaacs: eh, I'll look through the various options you have in that gist, rather not use brew, I already have git clones of node and npm, so rather build from source… [20:10] eric_f: thanks for writing that gist up! [20:10] isaacs: eric_f: np :) [20:10] polotek: pro tip: if you move a bunch of files in a git topic branch [20:10] polotek: then modify them in the original location on master [20:11] dmcquay has joined the channel [20:11] polotek: do not expect your rebase to go smoothly [20:11] isaacs: eric_f: it was once just one thing, but then grew over time. [20:11] polotek: isaacs: that's handy [20:11] polotek: it should be linked on nodejs.org [20:11] timemachine3030: perezd, I'm interested to dig into cradle and see how the cashing is done. node-couchdb does some basic cashing (just to keep track of revs and ids so you don't have to). [20:12] isaacs: polotek: my hope is that `brew install npm` will actually Just Work eventually. [20:12] isaacs: or be impossible. [20:12] eazyigz has joined the channel [20:13] polotek: package management is hard [20:13] AAA_awright_ has joined the channel [20:13] polotek: mostly because "just work" has entered the lexicon of most developers [20:13] polotek: :) [20:16] javajunky: polotek: just out of interest did you fiddle with diff.renamelimit ? … [20:17] polotek: javajunky: don't even know what it does [20:18] sh1mmer has joined the channel [20:18] javajunky: its used to determine whether (when merging) a file is really another file (i.e. moved or renamed) … as Iunderstand it [20:18] javajunky: actually that would be merge.renamelimit (just hit teh docs , its been a while since I've been in that situation myself) [20:19] unomi has joined the channel [20:19] javajunky: (0 is inifinite iirc .. which to be honest I don't get why that isn't the default for a merge… but I suspect someone who really knows Git would know best) [20:19] polotek: what does the number mean? [20:20] polotek: is it equivalent to how far away in the dir structure the renamed file can be? [20:20] polotek: because these files got moved pretty far :) [20:20] javajunky: ;) 'number of files to consider'… not got a clue what that means in practice, but I presume the depth of the 'search' for matching file (or breadth etc.) [20:21] polotek: yeah, that makes sense, so basically it couldn't find the renamed files because it didn't look far enough [20:21] javajunky: if you're interested (I would be, sadly) create a branch from master set the value (git config merge.renameLimit 0) and try a merge again .. [20:21] javajunky: (or rebase) :) [20:23] softdrink: stupid *nix question: can you cp a file to multiple places/files in one shot? [20:23] polotek: javajunky: yeah I'm interested, no time now though [20:23] jpick has joined the channel [20:23] polotek: javajunky: what's your git handle? I know you go by something else [20:23] softdrink: (i really just want to clone a file to several specific file names) [20:24] polotek: softdrink: by the time you figure it out, you could've just done it manually [20:24] softdrink: polotek: i know, but i'm sharpening the axe so to speak [20:24] javajunky: polotek: ciaran_j [20:24] javajunky: err no wait, thats twitter ;) [20:24] javajunky: polotek: ciaranj :) [20:25] polotek: but I'd be interested in the answer too. post to stackoverflow or serverfault, they're usually good for oneliners [20:25] polotek: javajunky: that's what I thought [20:25] polotek: if I get around to doing this, I'll let you know how it goes [20:26] joeshaw has joined the channel [20:26] polotek: it's odd because the way to resolve the conflicts is odd [20:26] polotek: basically I ended up with the old version of the file, it had been moved to the new location [20:26] polotek: and the new version of the file was still in the old location [20:26] javajunky: polotek: well, you're doing a rebase so its going to be a bit 'strange' [20:26] polotek: and it was marked as conflicted [20:27] polotek: so I had to copy the new version to the new location [20:27] javajunky: polotek: ok that does sound weird, almost like its figured out its the same file, but screwed up the update!?! [20:27] polotek: and then git rm the file at the old location [20:27] polotek: and then git add it at the new location with the new version [20:27] polotek: git rebase --continue [20:27] polotek: and everything worked [20:27] papandreou has joined the channel [20:27] booths has joined the channel [20:28] javajunky: I tend to find git rebases confusing as its almost the inverse of what you expect… I tend to only use them when syncing with upstream, everything else I do locally with straight merges :) [20:28] polotek: it still works with our renamelimit theory though [20:28] Aria has joined the channel [20:28] polotek: basically instead of knowing they were the same file [20:28] javajunky: holy crap, node-canvas is fricken awesome .. why had I not foudn time to play with this earlier, damn you TJ and your energy! [20:28] polotek: it just processed it as a delete and a separate add [20:29] polotek: but then it saw more changes in a file that had previously been deleted [20:29] polotek: hence merge conflict [20:29] javajunky: yeah that sounds workable [20:29] polotek: and you resolve it by taking the changes and manually moving them to the new location [20:29] sechrist has joined the channel [20:29] polotek: since git didn't know that's what you mean [20:29] polotek: meant [20:29] onar has joined the channel [20:30] smcq has joined the channel [20:30] javajunky: polotek: I think its safe to set both diff +merge limits to 0 (infinite) unless you're working on a huge repository..presumably there is a performance cost :) .. but I"d rather that thatn un-neccessary conflicts :) [20:31] okuryu has joined the channel [20:31] polotek: it is a pretty big repo actually [20:31] polotek: we'll see how it works [20:31] polotek: it's definitely not the size of the linux kernel ;p [20:31] dipser has joined the channel [20:32] polotek: infinite recursion on that would not be advisable [20:33] kjsthree: is it possible to pass a global into middleware? [20:33] isaacs_ has joined the channel [20:34] cnu has joined the channel [20:34] softdrink: ok got it: for newfile in foo bar baz; do cp something.txt $newfile.txt; done [20:35] polotek: softdrink: nice, I always forget about for loops [20:35] polotek: always seem so unnatural on the command line [20:36] polotek: kjsthree: it would be helpful if you gisted some code so we can take a look at what you're doing [20:38] kjsthree: polotek: I'm just trying to pass around a string at this point but my idea is to instantiate the db connection in the main app.js and then have route specific code in its own files. Those route middleware files would need the db database variable though. [20:39] muk_mb has joined the channel [20:39] polotek: kjsthree: yeah I get that. but I don't use express much [20:39] muk_mb: hey guys! [20:39] polotek: looking at code is always better than imaginging [20:39] bingomanatee has joined the channel [20:39] polotek: imagining? [20:39] polotek: yeah I think that's right [20:39] teemow has joined the channel [20:39] sh1mmer has joined the channel [20:40] javajunky: polotek, I imagine in reality the recursion is somewhat finite ;) [20:40] javajunky: kjsthree: hi, I've been talking this through with you on the mailing list if it helps ? [20:40] mikeal: polotek: you still working on libxml2 bindings? [20:41] softdrink: polotek: the command i actually ended up doing: [20:41] softdrink: for newfile in ImportTemplateTasks SaveasaTemplate DuplicateProject ImportMSProjectFile ExportasMSProjectFile RecalculateTimeline ReplanProject ResourceLeveling RecalculateFinance DeleteProject; do echo '' >> $newfile.html; done [20:41] polotek: mikeal: yep, it's stalled a bit but definitely still active [20:41] mikeal: i'm releasing something soon that uses jsdom [20:41] mikeal: and it's a big bottleneck [20:42] kjsthree: javajunky: Ciaran? [20:42] polotek: mikeal: libxmljs is nowhere near ready to used as a substitute browser dom unfortunately [20:42] polotek: it handles html fine, but there's nothing resembling a w3c api [20:42] javajunky: kjsthree: yeah [20:42] polotek: and it doesn't handle fragments yet [20:43] [[zz]] has joined the channel [20:43] polotek: mikeal: if I had someone to help we could move in that direction pretty fast I think [20:43] mikeal: i thought it included a dom? [20:43] polotek: mikeal: it does, I mean the api is custom [20:44] polotek: doesn't follow browser api [20:44] kjsthree: javajunky: I've messed around with some things and keep looking at your blog post but I'd like to separate routes that logically go together. [20:44] polotek: the bigger problem you'd have is probably the lack of fragment support and a few other things [20:45] kjsthree: javajunky: and I can't seem to get a single db instantiated and passed around. [20:45] polotek: kjsthree: put your db code in it's own module [20:45] polotek: and have the others require it [20:45] polotek: they'll all get the same instance [20:45] javajunky: kjsthree: ok, right, your issue isn't really an express thing, its just a 'node/modules' thing [20:45] javajunky: kjsthree: indeed, as polotek mentions [20:45] kjsthree: wouldn't that instantiate new dbs on each inclusion? [20:46] polotek: kjsthree: modules are cached after the first require, they are not rerun [20:46] kjsthree: or cause the race condition javajunky warned me of? [20:46] polotek: unless that's what you want and you have to use special hot-loading stuff [20:46] kjsthree: i don't want that [20:46] polotek: kjsthree: what race condition? [20:46] kjsthree: http://groups.google.com/group/express-js/browse_thread/thread/a13a08a76aaa79f2 [20:47] prettyrobots has joined the channel [20:47] saschagehlich: can't strings be longer than 1024 bytes? o_O [20:47] javajunky: kjsthree: / polotek .. the 'race condition' is not waiting for the db.open to return … [20:48] javajunky: not really a race condition in the true sense (obviously) [20:49] kjsthree: so if the open is done before the inclusion to the middleware and then stored in memory for subsequent requests then there's no issue? [20:49] kjsthree: except that each middleware would have its own db var/connection right? [20:50] kawaz_work has joined the channel [20:50] polotek: kjsthree: you can do the async open in the top level app like you're doing now [20:50] javajunky: kjsthree: tbh I wouldn't (haven't) worried about it, its pretty unlikely to be an issue for you .. youjust need to export the db instance from the module (so it is created once when first required) [20:50] polotek: just require the code from the db module instead of setting it up there [20:50] polotek: so it guaranteed to be opened before the app is run [20:51] polotek: then the other modules can still require the same db module and get the same db [20:51] javajunky: polotek: can you actually guarantee that ? [20:51] kjsthree: polotek: the other modules will use the same var? [20:51] polotek: javajunky: yes, you'll have to set it up properly [20:52] polotek: it's a little less than trivial, the db module needs a few setup functions [20:52] javajunky: polotek: hmmm, got a link to an example ? [20:53] sh1m has joined the channel [20:53] javajunky: has anyone ever coming across 'reference' git repositories for testing stuff against ? [20:53] polotek: javajunky: not handy, the stuff I've done is more complex [20:54] javajunky: polotek: I'm just not aware of any way of guaranteeing something asynchronous has been completed during the require ? (other than the obvious of exporting a setup method that accepts a callback) [20:54] polotek: not during the require [20:55] pyrotechnick has joined the channel [20:55] polotek: var DB = require('db') [20:55] sh1mmer has joined the channel [20:55] polotek: var app = // some app setup [20:55] flowlo1 has joined the channel [20:55] flowlo1: hello [20:55] javajunky: db.open(function(){app.run}) .. or somesuch, sure I get that [20:55] polotek: DB.getConnection(function() { if the connection was successful start the app server }) [20:55] javajunky: but thats pretty 'ughh' [20:56] flowlo1: when storing a jpg image to memcached, i get an exception from net.js which i don't understand. could you help me please? http://pastebin.com/FvaBWn0x [20:56] polotek: javajunky: nah, that's the nature of the beast, you get your pre-requisite resources before starting your app [20:56] polotek: it just has to be async [20:56] polotek: cause that's how node works [20:56] javajunky: polotek: I thought for one beautiful second there were some common.js module hooks I was totally un-aware of ;) [20:56] polotek: then in your module you can do require('db').getConnection() [20:57] polotek: with no call back it either returns the valid connection or throws an err if it hasn't been connected yet [20:57] kjsthree: polotek: i think that last part is what I'm looking for [20:58] kjsthree: I'll put together some stuff and see if it works. [20:58] jimt_ has joined the channel [20:58] arrty has joined the channel [20:59] sonnym has joined the channel [20:59] javajunky: kjsthree: yeah you just need to ensure that 'getConnection' returns the same instance whenever its called.. [21:00] evanmeagher has joined the channel [21:01] Yuffster has joined the channel [21:01] kjsthree: javajunky: polotek: express uses app.listen(port) so I can just surround that with the db instantiation right? [21:01] polotek: kjsthree: yep [21:02] javajunky: yah [21:02] femtoo has joined the channel [21:02] evanmeagher: isaacs: I can't seem to ssh to node@ndoc.no.de anymore [21:02] V1: flowlo1: which memcached client are you using? [21:02] isaacs: evanmeagher: yeah, it's broken [21:02] isaacs: evanmeagher: having issues. not enough memory, etc. [21:03] isaacs: getting weird fork() errors? [21:03] evanmeagher: isaacs: odd. is it having trouble with caching pkg info? [21:04] isaacs_ has joined the channel [21:04] isaacs: evanmeagher: yeah, i kinda broke no.de [21:04] isaacs: evanmeagher: not for everyone, just for that instance. [21:04] isaacs: evanmeagher: i'm gonna try to get it bumped up to a bigger smart machine, just haven't got round to it yet [21:04] flowlo1: V1: my coworker found and downloaded it. i don't know where its from. we extended it by adding the Chunk class. paste is here: http://pastebin.com/rc2jddnS [21:04] evanmeagher: isaacs: sounds good [21:07] V1: flowlo1: Could it be that you attempting to fetch data before the memcached connection has been established? As I don't see you using the on "connect" event of your memcached client. [21:07] Frush3 has joined the channel [21:07] V1: wait, nvm [21:07] V1: lol [21:08] flowlo1: V1: i'll try it and use client.conn.addListener("connect", function () {}); [21:08] flowlo1: V1: to make sure it's connected [21:09] isaacs: evanmeagher: the one on my github is the latest, though. if you feel like playing with it, adding stuff, etc. [21:09] isaacs: evanmeagher: it'd be cool if there was a way to get package metadata from it, as well. [21:09] V1: flowlo1: I remember having similar issues when I was working my memcached client for Node. But I can't remember what triggered it.. It was something really easy.. [21:09] isaacs: evanmeagher: author/versions/etc. [21:10] isaacs: evanmeagher: maybe then that could be linked to from mikeal's search.npmjs.org thing [21:10] flowlo1: V1: but the connection is established once as the http server starts, and then a few seconds later i load my jpeg file. so i don't think that this is the problem [21:10] boaz has joined the channel [21:10] flowlo1: V1: could you tell me where to download your memcached client? maybe i'll use that one :) [21:10] V1: flowlo1: What I do see is that your memcached client is checking if the stream is even writeable, that why I wondered [21:11] V1 has left the channel [21:11] kjsthree: polotek: javajunky: I put this together but I guess I don't understand how to get db into the middleware https://gist.github.com/760306 [21:11] c4milo has left the channel [21:11] evanmeagher: isaacs: i was gunna look into it tonight or tomorrow [21:11] kjsthree: polotek: javajunky: I get errors that db is not defined [21:11] isaacs: kewl [21:12] V1 has joined the channel [21:12] isaacs: evanmeagher: it needs css, too. something fierce. [21:12] V1: whoops, wrong button lol [21:12] V1: flowlo1: https://github.com/3rd-Eden/node-memcached [21:12] bingomanatee: tjholowaychuk: didn't mean to wierd you out earlier - hope you didn't take me too/at all seriously. [21:13] tjholowaychuk: bingomanatee: course not lol [21:13] tjholowaychuk: it was funny [21:13] tjholowaychuk: / random [21:13] javajunky: kjsthree: I'm not sure what you're trying to do in foo.js + bar.js ? [21:13] bingomanatee: okay - I just wanted to be careful - inflection doesn't always ascii well. [21:13] javajunky: but just add in another var db= require('db') [21:13] flowlo1: V1: thanks, i think i'll rewrite my Chunk class to fit your module and use it :) [21:14] polotek: kjsthree: the way this is set up you need to do db.db [21:14] kjsthree: javajunky: right now I just want it to get db, but ultimately I'll do queries and writes with it. [21:14] xslashxr has joined the channel [21:14] xslashxr: hi guys [21:14] javajunky: polotek: are you sure? line93 : module.exports= db ? [21:14] xslashxr: how do i get GET request vars with node.js? [21:14] bingomanatee: On another tack - I'm having issues with my homebrew ODM for mongo - is there a usable version of mongoose yet in git? [21:14] polotek: ah, yeah I just saw that [21:15] polotek: but aren't you immedately overwriting it? [21:15] polotek: module.exports = function() { ... [21:15] javajunky: no I thought that… thats in a different file ;) [21:15] kjsthree: db.db didn't work. [21:15] polotek: yeah, this gist is confusing :) [21:16] polotek: next time split the files out [21:16] kjsthree: If I do a require in the middleware then that db will be the same (ie ===) as the db in the app? [21:16] polotek: kjsthree: are you doing var db = require('./database') in foo.js? [21:16] polotek: that's probably it [21:17] polotek: kjsthree: yes [21:17] Frush3: Hi there! I need a *simple* IRC class for node.js. Is there something simple out there? [21:17] kjsthree: polotek: sorry it's all together but they're actually different files. [21:17] kjsthree: k [21:17] polotek: kjsthree: yeah I just caught up with that [21:17] javajunky: kjsthree: yes, that should work fine .. is it not ? [21:17] softdrink: is anyone beta testing Tower? [21:18] xslashxr: how do i get GET request vars with node.js?? [21:19] polotek: xslashxr: are you using a framework or something? [21:19] kjsthree: javajunky: that didn't work. the browser just hangs with no error. [21:19] javajunky: kjsthree: well now you're into a different stream of problems, not responding :) thats just 'welcome to node' ;) [21:19] polotek: kjsthree: maybe that means it's working, you're not finishing the request as far as I can see [21:19] javajunky: you need to track down why your response is being ended etc. etc. (likely an error) [21:19] javajunky: s/is/isn't/ [21:20] xslashxr: nope [21:20] xslashxr: just standard node.js install [21:20] kjsthree: I updated the gist. That's what you meant for me to do right? [21:20] javajunky: tjholowaychuk: finally got around to playing with node-canvas, me likey ;) [21:20] xslashxr: using var path = url.parse(req.url).pathname; and switch(path){ [21:20] tjholowaychuk: javajunky: sweet :) thanks man [21:20] xslashxr: but i need a way to parse my param string [21:21] polotek: xslashxr: http://nodejs.org/docs/v0.2.5/api.html#request-url-172 [21:21] iFire`: is there a milisecond level clocks for node js somewhere? [21:21] tjholowaychuk: iFire`: Date.now() [21:21] polotek: xslashxr: use the querystring module to parse the url http://nodejs.org/docs/v0.2.5/api.html#query-string-304 [21:21] javajunky: Can anyone tell me what the hell : https://github.com/ciaranj/node-git/tree/master/external-libs 'node-async-testing' *is* ..is it a symlink, its not (it seems) a submodule?!?! [21:22] isaacs: v8: Date.now() [21:22] v8bot: isaacs: 1293744134718 [21:22] maushu has joined the channel [21:22] tjholowaychuk: iFire`: var start = new Date; ... ; var duration = new Date - start; [21:22] iFire`: ah [21:23] isaacs: iFire`: yeah, you can use the fact that Date objects valueOf to the numeric milliseconds [21:23] isaacs: from the epoch [21:23] xslashxr: so i have to do this? [21:23] xslashxr: var http = require('http'), url = require('url').parse(); [21:23] xslashxr: ? [21:24] gf3 has joined the channel [21:24] sh1mmer has joined the channel [21:24] iFire`: isaacs trying to find date in the api [21:24] polotek: xslashxr: no, the url is a property on the request [21:24] isaacs: xslashxr: You'd usually do; var http = require("http"), url = require("url"); http.createServer(function (req, res) { var parsed = url.parse(req.url) ... }) [21:25] iFire`: isaacs oh it's in v8 [21:25] isaacs: iFire`: yeah, it's a JavaScript language fetaure [21:25] dnolen has joined the channel [21:25] kjsthree: polotek: javajunky: It all seems to be working and I updated the gist with what I have. I don't mean to beat this to death but I'm pretty amazed that the db in the main app and the db in the middleware is the same variable in memory. That is what you guys are saying right. And is this a js thing? [21:25] javajunky: kjsthree: well not technically a 'js' thing ..its just the way module loading 'works' ? [21:25] polotek: kjsthree: no, it's a feature of the module system [21:26] tjholowaychuk: gah I wish [Constructor] stuff was or somethin [21:26] polotek: when you require a module the first time, it runs the file and returns the module.exports object [21:26] javajunky: kjsthree: if you want it to return different variables each time, then one generally exports a 'constructor function' [21:26] polotek: that object is cached and returned on every subsequent call to require [21:26] isaacs: kjsthree: require("foo") === require("foo"), everywhere [21:26] polotek: so you get the exact same object [21:26] polotek: tjholowaychuk: you and me both [21:26] isaacs: kjsthree: if you want a different object, make a different object. [21:26] ceej has joined the channel [21:27] polotek: I've lobbied for that a few times [21:27] polotek: with no luck [21:27] tjholowaychuk: polotek: seeing [[Foo]] is great haha [21:27] tjholowaychuk: so misleading [21:27] sveimac has joined the channel [21:27] xslashxr: that still didn't parse my queries [21:27] kjsthree: isaacs: I don't want a different, so this is awesome. [21:27] isaacs: tjholowaychuk: yeah, the consensus has been to stick to the broken js-isms, rather than something more sensible. [21:27] polotek: the only argument is, "that's how js does it", e.g. [object Object] [21:27] javajunky: isaacs:I know I should know the answer to this, but is require('/abs_path_to/foo') === require('./foo') [assuming they both point ultimately to the same module] ? [21:27] isaacs: kjsthree: oh, great :) [21:27] tjholowaychuk: isaacs: haha yup [21:27] polotek: but that output has never helped anyone [21:27] isaacs: javajunky: as of 0.2.something, yes [21:28] xslashxr: it parsed the url but, not my GET params [21:28] javajunky: javajunky: cool (phew) [21:28] xslashxr: all i got back was like, query: 'user_id=32|ba=james', [21:28] isaacs: xslashxr: url.parse(req.url, true) [21:28] kjsthree: javajunky: polotek: thank you guys so much btw. [21:28] isaacs: xslashxr: or require("querystring").parse( query ) [21:28] polotek: kjsthree: cheers [21:29] isaacs: xslashxr: http://nodejs.org/docs/v0.3.1/api/url.html#url.parse [21:29] xslashxr: ok cool thx [21:29] polotek: why are these separate modules anyway? why isn't querystring a part of url? [21:29] javajunky: kjsthree: np. [21:29] isaacs: polotek: because you might not want to parse the querystrign [21:30] creationix has joined the channel [21:30] polotek: isaacs: yeah I don't mind the organization, just feel they're related [21:30] polotek: does.url.parse use querystring if you pass in true? [21:30] isaacs: polotek: yeah [21:30] isaacs: polotek: it's just a bit of api sugar [21:31] polotek: url.querystring? [21:31] Frush3: Is there a *simple* IRC class for node.js? [21:31] polotek: require('url/querystring') ? [21:31] isaacs: polotek: imo, what's there now is good. [21:31] isaacs: it works. [21:31] isaacs: it's well-covered by tests. [21:31] polotek: isaacs: sure it does, not a big deal [21:31] isaacs: unless it's a clear win, the cost of changing it is not worth the benefit. [21:31] polotek: not proposing changes [21:31] polotek: just saying that it's not obvious that url and querystring are related [21:32] astoon has joined the channel [21:32] polotek: but the bigger issue is that the node api is quite large now [21:32] isaacs: polotek: i think most people probably don't use require("querystring") almost ever. but it's nice to have it there so you can use just that, if you want, since the url parser is quite complex. [21:32] tjholowaychuk: polotek: I use it to parse application/x-www-form-urlencoded too lol [21:32] tjholowaychuk: i dont mind the separation [21:32] polotek: people don't have the time or inclination to get a hold of the peripheral modules and when to apply them [21:32] dilvie has joined the channel [21:33] isaacs: polotek: well, i don't know if we can solve that problem, relly [21:33] polotek: ACTION uses querystring :/ [21:33] mikeal: isaacs: i use require("querystring") [21:33] dilvie: Hey -- why do Tutti connections drop all the time? =) [21:33] flowlo1 has left the channel [21:33] mikeal: it's important when you're talking to couchdb and building up querys [21:34] polotek: yep, anytime you're writing a module that talks to a remote api, querystring is used a lot [21:34] isaacs_ has joined the channel [21:34] isaacs: mikeal: yeah, i can see that [21:34] polotek: like I said, not a big deal [21:34] pyrotechnick has joined the channel [21:34] isaacs: so, you guys make a great case. i'm convinced. let's not change the api. [21:34] polotek: it's just that if you're learning node [21:34] pyrotechnick: okay i am getting a segfault [21:34] isaacs: XD [21:34] Frush3 has left the channel [21:35] polotek: and you see an example with the url module [21:35] pyrotechnick: i need to know how to debug [21:35] polotek: you might never know there's a querystring module [21:35] polotek: pyrotechnick: carefully [21:35] polotek: pyrotechnick: also, use gdb [21:35] pyrotechnick: how exactly do i go about doing it [21:36] polotek: gdb --vars node_g --expose_gc testfile.js [21:37] pyrotechnick: /usr/libexec/gdb/gdb-i386-apple-darwin: unrecognized option `--vars' [21:37] iFire`: gah I forgot to note this down, but I remember there's a function that lets me get the list of functions (properties?) in a object [21:37] polotek: er, maybe it's --args [21:37] polotek: yeah that's it [21:37] polotek: iFire`: sys.inspect [21:37] pyrotechnick: how do i build node_g [21:38] pyrotechnick: wats the commands [21:38] polotek: ./configure --debug [21:38] pyrotechnick: ta [21:38] polotek: then make and install again [21:38] pyrotechnick: does make install work with it [21:38] sveimac has joined the channel [21:38] iFire`: polotek you mean util.inspect ? [21:39] polotek: iFire`: yeah, keep forgetting it was renamed [21:39] iFire`: well I just want the function and method names, and not all this other meta data :/ [21:42] polotek: iFire`: there's no function built into node for that. but it's not too difficult to write [21:42] polotek: not that I know of anyway [21:43] CIA-121: node: 03Ryan Dahl 07debugger * r866201b 10/ lib/_debugger.js : debugger: add 'kill' command - http://bit.ly/gFHwci [21:43] CIA-121: node: 03Ryan Dahl 07gdbjit * r63f532b 10/ (6 files in 2 dirs): apply patchset 3 - http://bit.ly/efTT4l [21:43] CIA-121: node: 03Ryan Dahl 07debugger * r0946474 10/ lib/_debugger.js : debugger: Clean ups, bug fixes - http://bit.ly/eEL57c [21:43] CIA-121: node: 03Ryan Dahl 07v0.2 * r40b6197 10/ deps/v8/SConstruct : [21:43] CIA-121: node: Default to gcc in V8 build [21:43] CIA-121: node: Fixes detecting gcc toolchain in solaris (NODEJS-7) - http://bit.ly/g8zyd7 [21:43] ryah: mraleph: check out that gdbjit commit [21:43] ryah: mraleph: doesn't compile still.. [21:44] mraleph: ryah: can you gist compilation error? [21:44] javajunky: is there any gzip support built into node atm ? [21:44] xslashxr: i have server = http.createServer(function(req, res){ at top of my code, and i seem to lose access to res object inside the scope of a conn.query(sql, function (err, resp) { [21:45] xslashxr: anyone know why? [21:45] herbySk has joined the channel [21:45] xslashxr: res.write() doesnt function at all it seems inside that scope [21:46] CrypticSwarm has joined the channel [21:46] polotek: xslashxr: lots of possible reasons [21:46] polotek: got an example? [21:46] shimondoodkin has joined the channel [21:47] xslashxr: ok nvm [21:47] ryah: mraleph: https://gist.github.com/760352 [21:47] xslashxr: think it was a weird one [21:47] xslashxr: dont konw how i solved it but its working now [21:48] fly-away has joined the channel [21:49] xslashxr: also, to output a JSON with node.js, is it sufficient to just do res.writeHead(200, {'Content-Type': 'application/json'}); res.write(sys.inspect(rows)); res.end(); ? [21:49] iFire`: polotek any idea where I would find the documentation for Date.* ? [21:49] iFire`: or is this a standard command [21:49] polotek: iFire`: Date is a javascript construct [21:49] polotek: google mdc Date [21:49] pyrotechnick: how do i break on error in gdb [21:50] polotek: xslashxr: sys.inspect doesn't produce valid json [21:50] polotek: it's meant to be read or output to the console [21:50] polotek: use JSON.stringify [21:50] polotek: pyrotechnick: I don't know if you can do that [21:50] polotek: would be nice [21:50] polotek: but what I do is run it until it craps out [21:51] polotek: then do backtrace to see where it crapped out [21:51] tjholowaychuk: pyrotechnick: you can usually inspect stuff on a segfault [21:51] polotek: then set an explicit breakpoint there [21:51] tjholowaychuk: yeah [21:51] tjholowaychuk: what he said [21:51] tjholowaychuk: lol [21:51] pyrotechnick: i got that far [21:51] pyrotechnick: its not very useful its just a bunch of v8 stuff [21:51] pyrotechnick: argh im in way over my head [21:51] polotek: pyrotechnick: that's why you need to inspect the backtrace [21:51] pyrotechnick: its a shame because i'm done it just doesnt work lol [21:51] polotek: back up to where it first left your user code [21:51] tjholowaychuk: it wont be all "hey im a segfault fix me" [21:52] pekim: iFire`: Was it Object.keys() that you were trying to think of? [21:52] pyrotechnick: i know its because something is falling out of scope [21:52] mraleph: ryah: i am an idiot [21:52] tjholowaychuk: pyrotechnick: but that combined with valgrind should help you out [21:52] pyrotechnick: TBH its only two methods and two objects where the problem is [21:52] polotek: pyrotechnick: release it with some test code and I'll take a look [21:53] iFire`: pekim well I remember it had property in the function name somewhere :/ [21:53] iFire`: someone in this channel answered me and I forgot to write it down :/ [21:53] ryah: mraleph: i doubt that [21:54] pyrotechnick: okay it's not what i thought it was... [21:54] mraleph: ryah: I uploaded CL update [21:54] pekim: iFire`: Perhaps Object.getOwnPropertyNames? [21:54] sh1mmer has joined the channel [21:56] peritus_ has joined the channel [21:56] iFire`: pekim yup that's it [21:57] polotek: ah, I definitely misunderstood what you were saying [21:57] polotek: I thought you wanted only functions [21:57] saikat has joined the channel [21:58] polotek: back in a bit [21:58] pyrotechnick: polotek: http://d.pr/NVRT [21:59] polotek: ah, cool, I'll take a look [21:59] pyrotechnick: umm [21:59] polotek: is it on github? [21:59] pyrotechnick: not that version [21:59] pyrotechnick: node test/master.js [21:59] pekim: iFire`: I find Mozilla's Javascript reference pretty good for that sort of purely Javascript stuff (https://developer.mozilla.org/en/JavaScript/Reference). [22:00] pyrotechnick: i made it a bit easier to run in case u dont use coffee [22:00] pyrotechnick: so i dont want to push all this shit [22:00] polotek: I don't :) [22:00] pyrotechnick: so i just zipped it for you [22:00] stepheneb has joined the channel [22:00] pyrotechnick: the problem is in DiscreteDynamicsWorld::DiscreteDynamicsWorld [22:01] AlexMax: Anybody have any experience with IRC-js or Jerk? Which one is better? [22:01] SubStack: jerk is built on irc-js [22:02] aurynn: So there you go. [22:02] SubStack: a better comparison would be irc-js and node-irc [22:02] aurynn: ACTION needs to update postgres.js some more [22:02] pyrotechnick: polotek: in master.js those first four objects arent getting used…theyre just there so i have something to pass to DiscreteDynamicsWorld::DiscreteDynamicsWorld [22:02] pyrotechnick: polotek: you will see i'm just making a world and returning it [22:03] polotek: pyrotechnick: should I use 2.x or 3.x [22:03] pyrotechnick: polotek: then i call stepSimulation and it segfaults [22:03] polotek: node version I mean [22:03] pyrotechnick: 3.x [22:03] codykrieger has joined the channel [22:03] pyrotechnick: hmm goint point let me try 0.3 [22:03] pyrotechnick: with like my old test [22:03] pyrotechnick: to make sure it even works against 0.3 [22:03] AlexMax: SubStack: Ah, I just took a quick glance at the addon list on github [22:03] AlexMax: Which one of those two is better? [22:04] polotek: pyrotechnick: my bindings dont' work against 3.x yet [22:04] polotek: haven't taken the time to figure out why though [22:04] pyrotechnick: hmm [22:04] pyrotechnick: do they segfault? [22:04] polotek: ha [22:04] pyrotechnick: ha [22:04] polotek: the bullet lib requires openssl? [22:04] isaacs has joined the channel [22:04] pyrotechnick: i sincerely doubt it [22:04] polotek: pyrotechnick: no segfault, problems with loading the dynamic lib [22:05] polotek: I heard something about v8 changing the way that is done [22:05] flowlo1 has joined the channel [22:05] polotek: which might be the issue [22:05] flowlo1: hello [22:05] polotek: but like I said, haven't investigated [22:05] pyrotechnick: well its working that far [22:05] pyrotechnick: i can make objects and stuff from the library [22:05] AlexMax: Also, what is this channel's opinion on installing node.js through chris lea's PPA vs. downloading from nodejs.org? [22:05] pyrotechnick: its just when i call stepsimulation [22:05] flowlo1: i'm reading a file via fs.read() ... how i can i stop reading in a callback? [22:05] sh1mmer has joined the channel [22:05] pyrotechnick: which is strange because its such a simple demo theres nothing to fall out of scope [22:05] flowlo1: can i just do fs.close ? [22:06] polotek: flowlo1: try it :) [22:06] ryah: mraleph: thx [22:06] polotek: pyrotechnick: are you using scope.Close? [22:06] polotek: cause that'll do it [22:07] pyrotechnick: i dunno what that is so no [22:07] polotek: figured [22:07] pyrotechnick: like i can guess what it does [22:07] polotek: pyrotechnick: http://marcorogers.com/blog/06-17-2010/updating-libxmljs-for-nodejs-or-how-to-suck-less-at-google-v8 [22:07] flowlo1: polotek: it works :) [22:09] sh1mmer has joined the channel [22:09] SubStack: AlexMax: I haven't used node-irc yet but irc-js has given me some problems [22:11] ryah: mraleph: what's linux specific about this? [22:11] ryah: mraleph: btw, patch set 4 works a lot faster [22:12] javajunky has joined the channel [22:12] CIA-121: node: 03Ryan Dahl 07gdbjit * rd33e9a0 10/ deps/v8/src/gdbjit.cc : patch set 4 - http://bit.ly/hWEkPP [22:13] void_: hi what should I use for inheritance so it would work for both node server and jquery frontend? [22:14] softdrink: does anyone know of a general "awesome web apps" conference? [22:14] polotek: void_: use normal prototype chaining [22:14] pyrotechnick: polotek: it _can_ work in v8 so it is my bindings [22:15] void_: polotek: thanks [22:15] mraleph: ryah: elf header contains os abi code, it's different for different os'es afaik [22:15] pyrotechnick: polotek: http://d.pr/Ha1q [22:15] pyrotechnick: if u use that it shud just dump a bunch of numbers, that means bullet is working in v8 [22:15] polotek: pyrotechnick: still installing bullet [22:15] polotek: :( [22:15] pyrotechnick: so its the way im wrapping it [22:16] pyrotechnick: howd u install it [22:16] polotek: macports [22:16] pyrotechnick: yeah [22:16] pyrotechnick: brew is a bit nicer for bullet [22:16] polotek: needed some dependencies [22:16] pyrotechnick: i dunno why [22:16] ezmobius has joined the channel [22:16] pyrotechnick: the brew package is better [22:16] pyrotechnick: u shudnt need deps [22:16] pyrotechnick: its self-contained [22:16] polotek: it installed openssl and cmake as deps [22:16] polotek: fun stuff [22:17] pyrotechnick: fucked if i know why it would ever need openssl [22:17] mraleph: ryah: it's not faster, it just puts less pressure on gdb... apparently GDB guys just reused old SO-handling code to implement JIT interface or something like that... they did not think that they should optimize for tons of ELF objects being registered... [22:17] polotek: in case you want to kill someone remotely and not get caught [22:17] pyrotechnick: lol [22:17] polotek: thanks everyone, I'm here all week [22:17] mraleph: ryah: hope lldb will do it right way. [22:17] pyrotechnick: well try it with that init.cc in there when you're done just to check if it works [22:18] polotek: pyrotechnick: access denied [22:19] pyrotechnick: to what [22:19] tg has joined the channel [22:19] AlexMax: I'm getting a message about node not being found. I'm pretty sure this is because debian renamed node -> nodejs to avoid a naming conflict. Is there a nicer way of resolving this other than creating a symblink in /usr/local/bin? [22:20] polotek: to the init.cc file [22:20] pyrotechnick: hmm [22:20] polotek: also the waf build is crapping out [22:20] AlexMax: More specifically, npm's install.sh doesn't work [22:20] polotek: you have your user path hardcoded somewhere [22:20] polotek: though i can't seem to find it [22:20] pyrotechnick: do not [22:21] sveimac has joined the channel [22:21] polotek: yeah I don't see it [22:21] cardona507 has joined the channel [22:21] bingomanatee: Any suggestions on this? https://gist.github.com/760396#comments [22:21] pyrotechnick: thats because i dont [22:21] pyrotechnick: ;) [22:21] polotek: but the waf error I'm getting definitely says something about /Users/pyrotechnick [22:22] pyrotechnick: delete the lock script [22:22] pyrotechnick: .lock-wscript [22:22] polotek: hmm [22:22] flowlo1 has left the channel [22:22] polotek: yeah that was it [22:23] pyrotechnick: ok init.cc [22:23] losing has joined the channel [22:23] muk_mb: is there a template-y thing for generating xml feeds like this one? http://andymatuschak.org/files/sparkletestcast.xml [22:24] pyrotechnick: polotek: http://d.pr/6Lxp [22:24] pyrotechnick: delete teh lock when u extract that [22:24] pyrotechnick: then just [22:24] pyrotechnick: node test/master.js [22:24] polotek: I've got this original one working now [22:24] pyrotechnick: what [22:24] pyrotechnick: as in not segfaulting? [22:25] pyrotechnick: or just building [22:25] polotek: no, I mean working as in running [22:25] polotek: it definitely segfaults :) [22:25] pyrotechnick: because this is slightly different what i just sent [22:25] pyrotechnick: right [22:25] pyrotechnick: does it instantiate the world first? [22:25] pyrotechnick: do you see [22:25] pyrotechnick: do u see this # console.log 'discreteDynamicsWorld', discreteDynamicsWorld [22:25] pyrotechnick: the output of that? [22:25] Aria: Just committed a fix for entity encodings in the HTML5 library if anyone's had stuff come out double-encoded. [22:26] sveimac has joined the channel [22:27] davidc_ has joined the channel [22:27] polotek: pyrotechnick: yeah, it's something in stepSimulation [22:27] pyrotechnick: polotek: it's weird because all im doing is making the world returning it then running a function on it [22:27] pyrotechnick: right [22:27] pyrotechnick: but it works when it's not wrapped [22:27] pyrotechnick: like if u open what i just send [22:27] pyrotechnick: http://d.pr/6Lxp [22:27] pyrotechnick: it runs [22:27] pyrotechnick: and it's almost the same code [22:27] pyrotechnick: just not wrapped [22:28] pyrotechnick: so its a scope/delition thing [22:28] pyrotechnick: deletion [22:28] polotek: pyrotechnick: maybe not [22:28] polotek: I don't see any of your code in the backtrace [22:28] flowlo1 has joined the channel [22:28] pyrotechnick: well that last zip proves it can run in node [22:28] flowlo1: hey [22:29] pyrotechnick: so i know it's something to do with the wrappers [22:29] polotek: I'm assuming stepSimulation uses multiple threads right? [22:29] flowlo1: do you know a better way to compare buffers than this: https://gist.github.com/760412 ? [22:29] pyrotechnick: not that particular solver no [22:29] Wizek_ has joined the channel [22:29] pyrotechnick: its just a single thread [22:30] pyrotechnick: it can [22:30] pyrotechnick: but not with that code [22:30] booths has joined the channel [22:30] Wizek has joined the channel [22:31] polotek: flowlo1: no, but there probably should be a better way [22:31] flowlo1: polotek: yeah, thats pretty lame ... [22:32] Wizek has joined the channel [22:32] aurynn has joined the channel [22:34] pyrotechnick: INTERESTING [22:34] pyrotechnick: omfg polotek [22:34] pyrotechnick: guess what [22:35] polotek: ? [22:35] pyrotechnick: polotek: im such a noob [22:35] isaacs has joined the channel [22:35] pyrotechnick: its one of the destructors [22:35] polotek: did you forget to carry the 1? [22:35] pyrotechnick: LOL! [22:35] pyrotechnick: i love noders [22:35] pyrotechnick: but no [22:35] pyrotechnick: its one of the destructors [22:35] pyrotechnick: i dunno which [22:35] pyrotechnick: but i put like [22:36] pyrotechnick: https://gist.github.com/daa71aac6bd757be8cc4 [22:37] pyrotechnick: i put that in StepSimulation instead of the actual stepsimulation and it worked but i got the segfault after lol [22:37] pyrotechnick: so its just in the teardown somewhere [22:37] pyrotechnick: anyway i learnt to use the debugger and stuff so thankyou very much [22:37] pyrotechnick: i really appreciate the help [22:37] pyrotechnick: like really really [22:37] polotek: I wish this backtrace was better but I forgot how to make sure it finds all the symbols and such [22:38] pyrotechnick: hmm [22:38] pyrotechnick: maybe also building bullet in debug would help ^w^ [22:38] polotek: when it has all the ?? [22:38] guitt has joined the channel [22:38] polotek: that's code it can't find the symbols for [22:38] pyrotechnick: right [22:38] polotek: usually that's js code and you can't do much about that [22:38] pyrotechnick: i wouldnt want to read that stuff [22:38] polotek: but with dynamic libs sometimes it's stuff you actually need to see in your C code [22:38] pyrotechnick: isnt that all the eigenclass stuff [22:39] polotek: pyrotechnick: anyway, yeah [22:39] sh1mmer has joined the channel [22:39] polotek: it looks like you need some scope.Close magic sprinkled liberally [22:40] AlexMax: Okay, this is kind of ridiculous [22:40] pyrotechnick: mmmkai [22:40] polotek: because essentially what's happening is your classes are getting collected right after the constructor [22:40] AlexMax: who is using node + npm on ubuntu and which way did you pick to install them [22:40] pyrotechnick: ill read your post [22:40] polotek: because the HandleScope is closing them [22:40] pyrotechnick: are you sure? [22:40] pyrotechnick: it does work [22:40] pyrotechnick: like stepSimulation runs [22:40] pyrotechnick: its when it exits [22:41] polotek: pyrotechnick: gc is lazy so it doesn't always mean the memory is gone [22:41] pyrotechnick: i think its one of the frees or something [22:41] polotek: but it can disappear at any time [22:41] pyrotechnick: hmm [22:41] polotek: I'm not positive that's the problem [22:41] pyrotechnick: ill read your post [22:41] polotek: but that's where I'd start [22:41] polotek: you can also inspect the objects you have before calling stepSimulation [22:41] polotek: to make sure they're all there [22:42] desaiu: nodejs cloud hosting, where is it? :( [22:42] pyrotechnick: joynet [22:42] pyrotechnick: no.de [22:43] polotek: or http://nodejitsu.com/ [22:43] polotek: anyway, I gotta run [22:43] polotek: I'll be back on later [22:43] pyrotechnick: thanks mate [22:43] flowlo1: what do i have to pass to a require('crypto').Hash when i do .update() ? ... I tried to pass a buffer and buffer.toString('utf8') but it keeps throwing "TypeError: HashUpdate fail" [22:43] opengeard has joined the channel [22:43] stagas_ has joined the channel [22:45] sh1mmer has joined the channel [22:48] Aria: A string works for me. [22:48] flowlo1: Aria: hmm .. ok thanks [22:49] guitt: flowlo1: https://gist.github.com/834e1aa0420c2aac1ecf [22:50] guitt: flowlo1: is that your question? [22:50] flowlo1: guitt: yeah it's basically what i want to do. i just use an md5 hash and base64 digest ... [22:51] flowlo1: guitt: just a moment, i'll paste it too [22:54] flowlo1: guitt: https://gist.github.com/760447 [22:57] flowlo1: i forgot to remove "new" in line 3, but it doesn't make any difference without it ... [22:59] guitt: well it's hard to see what's wrong without the full code, i made a few changes and I don't get any errors https://gist.github.com/84cdb40ef210bab8eb5a [23:00] flowlo1: guitt: the only change is "data = {}" ? [23:00] guitt: yeah since the snippet i gave me doesn't define data [23:01] flowlo1: https://gist.github.com/760458 this is my code. the error is in ln 89 [23:01] aristidesfl has joined the channel [23:01] aristidesfl: k [23:01] pyrotechnick: polotek: i think you were right [23:02] Wizek has joined the channel [23:03] pgte has joined the channel [23:03] Ond has joined the channel [23:03] sh1mmer has joined the channel [23:05] isaacs_ has joined the channel [23:06] guitt: flowlo1: I can't spot the problem but let me ask you a stupid question, did you console.log(data.value) before calling hash.update ? [23:06] sh1mmer has joined the channel [23:07] flowlo1: guitt: no, i didn't [23:08] flowlo1: guitt: i tried it now, and the buffer is filled correctly [23:08] flowlo1: guitt: but hashing fails [23:08] ryah: mraleph: can't you put it all into one elf? [23:08] markwubben has joined the channel [23:09] guitt: could you paste the stack trace [23:09] flowlo1: guitt: there is no [23:09] flowlo1: TypeError: HashUpdate fail [23:09] flowlo1: at /home/lorenz/Dropbox/Nodejs/server.js:87:15 [23:09] mraleph: ryah: it is not easy. and code is generated lazyly when functions are called [23:09] guitt: i get it [23:10] mraleph: ryah: is it still too slow? [23:10] guitt: you update the hash after you digest it [23:10] codykrieger has joined the channel [23:11] flowlo1: guitt: no, i do update on line 86 and digest on 87 [23:11] guitt: could you make a gist with the full stack trace please [23:11] flowlo1: guitt: that was the full stack trace ... [23:12] zorzar has joined the channel [23:12] ryah: mraleph: it's still a bit slow- but much better [23:14] mraleph: ryah: I want to focus first on coverage (e.g. I want to get proper stack unwinding on x64) and then see what can be done to speed it up. [23:14] ryah: yes, x64 would be nice [23:15] ryah: mraleph: can backtraces be done in the non-debug version of v8 [23:15] mraleph: ryah: yep. it should work [23:16] mraleph: ryah: there was a problem with release build, but I fixed it [23:17] ryah: mraleph: doesn't work for me https://gist.github.com/760471 [23:18] bingomanatee: I have a problem building orlanod-node-mongodb; have posted issue on github but FWIW: Build failed: -> task failed (err #1): [23:18] bingomanatee: {task: cxx_link mongo_1.o,bson_1.o -> mongo.node} [23:18] bingomanatee: Ring any bells? [23:19] flowlo1: bingomanatee: i tried to compile that yesterday with no success [23:19] mraleph: ryah: did you rebuild it from the latest patch set? [23:19] ryah: mraleph: yeah [23:19] mraleph: ryah; try b __jit_debug_register_code then run. will you hit break? [23:19] maushu has joined the channel [23:20] bingomanatee: grr. [23:20] mraleph: ryah: gcc optimizes this calls away sometimes. I though i fixed it. [23:20] mraleph: ryah: at least it was working for shell [23:21] ryah: mraleph: i hit it [23:21] blueadept has joined the channel [23:21] mraleph: ryah: hmm. and if you say something like b onReadable? [23:21] mraleph: then run [23:21] mraleph: remove break from __jit_blabla [23:21] nook has joined the channel [23:22] mraleph: b onRedable and make it peding [23:22] guitt: flowlo1: I can't find why but my only clue is that I kind of get the same error as you by updating after digesting https://gist.github.com/d89ddc17b68472e0c7f1 [23:22] mraleph: onReadable [23:22] ryah: mraleph: i get it [23:22] ryah: mraleph: okay -so it's partially working [23:22] ryah: Breakpoint 3, onReadable () at net.js:154 [23:22] ryah: 154 net.js: No such file or directory. in net.js [23:22] ryah: (gdb) bt [23:22] ryah: #0 onReadable () at net.js:154 [23:22] ryah: #1 0xf5cacd79 in ?? () [23:22] ryah: #2 0xf5cac2a2 in ?? () [23:22] ryah: #3 0x0819dfd1 in v8::internal::Invoke(bool, v8::internal::Handle, v8::internal::Handle, int, v8::internal::Object***, bool*) () [23:23] ryah: #4 0xffffcd68 in ?? () [23:23] ryah: Backtrace stopped: previous frame inner to this frame (corrupt stack?) [23:23] flowlo1: guitt: ok ... but i don't do that :S [23:23] ryah: (gdb) [23:23] dilvie: what do you guys think about using promises? They've started using them in jQuery for ajax. I understand that some Node.JS developers experimented a bit with promises, but I haven't seen much about it recently. [23:23] mraleph: ryah: probably gdb stack unwinding is screwed. [23:24] guitt: flowlo1: maybe increment a counter when you digest, just to make sure the callback is not called one time too many [23:24] dilvie: Are there alternative patterns for handling asynchronous behavior we should be looking at? [23:24] mjr_: Hey, v8::internal::Invoke(), that's where all of my time goes! [23:25] ysynopsis has joined the channel [23:25] mraleph: oh and gdb can't find source files to display them... but that should not be a problem [23:25] flowlo1: guitt: ok, i'll try that [23:25] polotek: dilvie: I've been meaning to look into promises more [23:25] Aria: dilvie: They're an abstraction over the state being saved; that can bite or be awesome. A promise that, say, buffers, could be horrible if someone hands you 2GB of data. In some cases, it makes the API nice and readable. [23:25] flowlo1: guitt: yeah i think that caused the problem [23:26] polotek: promises make things more confusing to me [23:26] flowlo1: guitt: it seems to be working now. i moved the initialization of "hash" into the callback of my http server [23:26] guitt: flowlo1: you never console.log() too much [23:33] wycats has joined the channel [23:34] [[zz]] has joined the channel [23:34] slloyd has joined the channel [23:35] isaacs_ has joined the channel [23:37] sh1m has joined the channel [23:41] eee_c has joined the channel [23:46] blaines has joined the channel [23:47] jpld has joined the channel [23:47] CIA-121: node: 03Ryan Dahl 07debugger * r62e0ca0 10/ (benchmark/http_simple.js lib/_debugger.js lib/readline.js): debugger: Disable/Enable raw mode for child - http://bit.ly/ghu9lU [23:48] polotek has left the channel [23:49] bingomanatee: Has anyone used the latest build of christkv-node-mongodb-native successfully? I can't even get the examples to run. [23:50] Huvet: Aria = @aredridel? [23:50] jchris has joined the channel [23:50] Huvet: we should have mapping tables from IRC to Twitter nicks [23:51] bingomanatee: so that.... [23:51] Aria: Yep, that's me. [23:51] javajunky: bingomanatee: yeah I use it .. mongoose sits atop it [23:51] Huvet: <- @EmilStenstrom [23:51] javajunky: bingomanatee: scratch that, not the latest build (Sorry) [23:51] bingomanatee: I just downloaded and made the latest build and like I said even the examples break. [23:51] Aria: Oh, excellent. [23:51] Huvet: IRC is the fastest so far [23:51] Huvet: :) [23:51] javajunky: bingomanatee: presumably if you're not looking at a tag all bets are off ? [23:52] bingomanatee: super. [23:52] bingomanatee: okay. [23:54] robotarmy has joined the channel [23:54] pgte has left the channel [23:56] EyePulp: anyone know how to access the underlying node-mongodb-native collection for model Foo in Mongoose? Foo.collection doesn't do it... [23:59] perezd: ugh still thinking about couchdb... [23:59] webr3 has joined the channel