[00:00] spot__: ok jsonlint passes this [00:00] spot__: and i dont know what could be throwing this error [00:00] spot__: SyntaxError: Unexpected token ILLEGAL [00:00] spot__: at Object.parse (native) [00:01] spot__: Does node's JSON have issues handling brackets inside quoted content? [00:02] spot__: nope.. that's not it [00:02] spot__: interesting [00:04] spot__: Ahh.. got it [00:04] spot__: again, thanks for the help [00:05] orlandov: spot__: what was it? (out of curiousity) [00:06] spot__: Well for one it does not like single quotes it seems, and then there at the end, it was was a left over single quote on the backside of the new double quote (missed it) [00:06] spot__: So a misconception about how picky it is, and then a typo [00:06] spot__: But I like picky [00:06] spot__: so that's all good [00:07] orlandov: ahhh yeah... i've been bitten by that :) [00:08] eikke has joined the channel [00:21] creationix has joined the channel [00:21] brandon_beacher has joined the channel [00:23] dnolen has joined the channel [00:26] Tim_Smart: anyone here played with riak much? [00:29] rictic has joined the channel [00:30] creationix: no, but it looks neat [00:32] creationix: I get to learn libeio for one of my school projects. [00:32] creationix: does anybody know if we customize it or include it as it? [00:33] Tim_Smart: as is [00:33] Tim_Smart: as with libev [00:34] Tim_Smart: But should really confirm that with ryah [00:35] Tim_Smart: I'm playing with an idea of an entirely event driven server. [00:35] Tim_Smart: instead of calling functions in the routing, you emit events [00:36] Tim_Smart: and you can easily hook into a route without going back and changing routing logix [00:36] Tim_Smart: *logic [00:39] creationix: So I head node runs on solaris. will it run on the machine with this uname: SunOS net01.utdallas.edu 5.10 Generic_141414-01 sun4u sparc SUNW,UltraAX-i2 [00:40] Tim_Smart: o.O [00:40] creationix: once I find a new enough python to run waf assuming [00:40] creationix: s/head/hear/ [00:40] Tim_Smart: ah that makes more sense :p [00:41] Tim_Smart: not sure, give it a go [00:41] creationix: python 3.0.1, hmmm [00:41] creationix: I don't think that's going to work [00:41] Tim_Smart: Yeah, I don't think so either [00:41] alexiskander has joined the channel [00:41] Tim_Smart: waf is for python 2 from memory [00:42] creationix: ok, I also have 2.3.4, I think that's too old [00:42] Tim_Smart: 2.6 is generally the one you want [00:43] creationix: ahh, I compiled the 3.0 on the machine last semester, that means I can download and compile 2.6 [00:43] spot__: Is there not a sync version of path.exists? [00:43] Tim_Smart: spot__: Whats wrong with async? [00:44] spot__: Tim_Smart, I can make async work, but in this particular situation I'm loading a conf file before almost anything else, and need to ensure it's existance, and contents before doing anything else. Therefore a sync version of exists would be helpful [00:46] cadorn has joined the channel [00:47] Tim_Smart: spot__: There isn't a sync version, so you will have to do some nesting [00:47] spot__: funfun [00:47] spot__: thanks [00:48] Tim_Smart: It generally is good practice in node to keep things async though :p [00:51] spot__: Understood, but async is absolutely useless in this situation, as nothing else _can_ be allowed to happen until this is done. And considering that this is not a server loop, but server start up, the sync is acceptable, and preferred. Contrary to what seems like the popular response in here, there _are_ special instances where sync is better, and making something work async is just a messy hack (like this time) :P [00:52] spot__: I only asked about a sync version because it seems there are sync versions of most other resources in node. So i wanted to be sure I was not overlooking it. :) [00:52] spot__: Thanks for the input [00:53] teemow has joined the channel [00:57] ashb: spot__: that rant pretty much matches my view [00:59] gwoo has joined the channel [01:05] r11t has joined the channel [01:15] inimino: ashb: looks good [01:16] ashb: cool. [01:16] ashb: wasn't sure about the logic to work out the pos [01:16] ashb: it works for my trivial case, but my grammar has no possible backtracking at the moment, so now sure if it would mess it up [01:17] tmpvar has joined the channel [01:17] tmpvar: yo [01:19] cloudhead has joined the channel [01:19] Tim_Smart: ryah, or anyone else for that matter. The docs for HTTP say to use ServerResponse.writeHeader, but actually it is still ServerResponse.sendHeader. Confusing. [01:20] Tim_Smart: writeHeader is the most consistent, but it obviously hasn't landed quite yet [01:22] JimBastard has joined the channel [01:22] gwoo: Tim_Smart: its in 0.1.30 [01:22] JimBastard0 has joined the channel [01:22] Tim_Smart: Yeah I did a git pull and re-compiled it to make sure [01:23] JimBastard0: holler from the nyc.rb hackathon [01:23] Tim_Smart: sorry it does work now [01:23] Tim_Smart: and sendHeader is still there as well [01:24] gwoo: yeah [01:24] gwoo: there is a //TODO on that one [01:24] Tim_Smart: :) [01:24] gwoo: :) [01:24] JimBastard7 has joined the channel [01:24] JimBastard7: oops [01:24] JimBastard2 has joined the channel [01:24] JimBastard2: wow [01:25] JimBastard2: safari reloads the whole page whenever i click the tab [01:25] Tim_Smart: never had that happen before >.> [01:26] JimBastard2: java.freenode on a borrowed laptop, magical things can happen [01:32] creationix has joined the channel [01:36] creationix_ has joined the channel [01:36] Tim_Smart: JimBastard2: Should create a Mibbit clone :D [01:38] Lanior has joined the channel [01:47] happyelephant has joined the channel [01:50] JimBastard2: there is a mibbit clone which works on node [01:50] JimBastard2: ajaxim or something [01:50] JimBastard2: its php and node [01:51] JimBastard8 has joined the channel [02:01] creationix: I'm starting to wonder if some other protocol would be easier than webdav for my project [02:01] creationix: it's got xml bloat like crazy [02:01] creationix: http://www.webdav.org/specs/rfc2518.html#METHOD_PROPFIND [02:02] CIA-77: node: 03Ryan Dahl 07master * rb80bdda 10/ (49 files in 10 dirs): Upgrade V8 to 2.1.2 - http://bit.ly/9xlKsh [02:03] ryah: ACTION has a mibbit clone http://s3.amazonaws.com/four.livejournal/20090314/irc.png [02:03] ryah: well - it's from a while ago - definitely doesn't run on the current node [02:10] micheil: ryah: I have something for you I think [02:10] micheil: ryah: (well, not something that I wrote, but something someone forwarded me.) [02:10] pavelz has joined the channel [02:10] micheil: http://gist.github.com/312807 & http://gist.github.com/312809 [02:11] micheil: TLS / STARTTLS for IMAP/SMTP, maybe the beginnings of setSecure for tcp clients [02:16] micheil: ryah: also, would it make sense for someone to work on a fakefs module for node? [02:20] RayMorgan has joined the channel [02:29] rtomayko has joined the channel [02:29] technoweenie has joined the channel [02:36] adamv has joined the channel [02:36] ryah: fakefs? [02:36] micheil: http://github.com/defunkt/fakefs/ [02:37] micheil: it wouldn't be something that node it's self would use, but something that other projects would use [02:37] ryah: oh seems useful [02:37] micheil: it'd be better then the way we currently test filesystem stuff [02:38] micheil: also, any thoughts on the globbing thread on the mailing list? [02:39] jed has joined the channel [02:39] ryah: a c binding would be nice - js code is nice too [02:40] micheil: I'm not sure on the exacts of regex / string matching in c, although, I could implement the basis for it [02:42] voodootikigod_ has joined the channel [02:44] inimino: creationix: I use HTTP with a few methods like MOVE, but none of the rest of the WebDAV stuff; works very well [02:44] creationix: inimino: for your online dev environment? [02:45] inimino: creationix: yes [02:45] creationix: I think I'm going to suffer through the xml bloat and see what comes out. I really like the idea of being able to mount my node app [02:46] inimino: FUSE? [02:46] creationix: I'm on a mac so webdav is fully supported by the OS, but FUSE would work for linux [02:46] inimino: oh [02:47] micheil: creationix: fuse works on mac as well [02:47] creationix: I wish mac's supported ssh shares though, I find that much more useful, you do need to use fuse for them, and it's flakey at best on snow leopard 64 bit [02:47] micheil: creationix: also, http://github.com/rsdoiel/howtonode.org [02:48] micheil: creationix: he want's a pull, just thought I'd pass it by you [02:48] creationix: micheil: yes, he's finishing up the article and I plan on publishing it tomorrow [02:48] micheil: okay [02:53] creationix: micheil: btw, we got a record 3277 visitors yesterday. Over half of them were hits to the "Do" article, and about half the referrals came from ycombinator. [02:53] micheil: nice [02:54] creationix: of course it helps that both Ryan and Changelog promoted it [02:54] micheil: when I get a chance I'll do up some of the new look, it's still just a seed in the back of my head [02:54] micheil: creationix: *whistles* hmm.. changelog promoted it? [02:58] bpot has joined the channel [03:01] steadicat has joined the channel [03:24] jed: davidjrice: what's the state of your twitter oauth for node? did you get it working? [03:26] gwoo: jed: not yet [03:27] gwoo: it's using all the correct params [03:27] gwoo: but there is something wrong with the signature [03:37] [Pwner]John has joined the channel [03:37] [Pwner]John: :[ [03:39] mrd`: Gah, V8 replaces NUL bytes with spaces when using ascii encoding. [03:40] [Pwner]John: ACTION suicides [03:41] tlrobinson_ has joined the channel [03:42] JimBastard has joined the channel [03:45] ryah: mrd`: '\0' isn't ascii [03:45] ryah: you should use binary [03:45] gf3 has joined the channel [03:46] mrd`: ryah: Says who? :P [03:46] mrd`: ryah: Anyway, I was just playing net2's UDP support to see what status it's in. Buffer objects don't have a binaryWrite method, only asciiWrite and utf8Write. [03:46] ryah: mrd`: v8 :) [03:47] ryah: mrd`: yeah - the buffers replace 'binary' encoding [03:47] ryah: buffer[n] = 0; <-- null [03:48] mrd`: Yeah, I suppose that works. I just had my DNS query typed up using escape codes, and couldn't figure out why it was mangling it so weirdly. [03:48] mrd`: *typed up as a string literal [03:49] [Pwner]John: It was my b-day yesterday! [03:49] [Pwner]John: :) [03:49] [Pwner]John: and there was 0.1.30 released that day too :o [03:51] [Pwner]John: ............ [03:51] [Pwner]John: I tried configuring it on 2 different shells [03:51] [Pwner]John: and they all failed [03:51] [Pwner]John: :[ [03:52] [Pwner]John: ACTION facepalms: I did it on the same server.. [03:53] [Pwner]John: nevermind it works :) [03:54] cloudhead: can anyone think of a smart way to split "hello\n\nworld" into ["hello\n", "\nworld"] ? [03:54] sahnlam has joined the channel [03:55] sahnlam1 has joined the channel [03:56] mrd`: Well, net2's UDP support is at least functional for connected UDP sockets. :) [03:56] cloudhead: ah I think I got it [03:57] cloudhead: /^(?=\n)/m [03:57] stephenlb: cloudhead: cool [04:01] mrd`: For wrapping a function like sendto(2), how should the sockaddr argument be provided? As a Buffer? [04:01] mrd`: Or a new SockAddr object? [04:03] Lanior has joined the channel [04:15] ryah: mrd`: string [04:15] ryah: mrd`: there are some functions in there for determining if a string is an ip [04:15] ryah: NeedsLookUp or something [04:16] [Pwner]John: :o [04:24] technoweenie has joined the channel [04:35] pjb3 has joined the channel [04:51] technoweenie has joined the channel [04:52] technoweenie: hey i have a node.js question [04:53] JimBastard: you've got questions? [04:53] JimBastard: we've got highly concurrent servers [04:54] technoweenie: cool [04:54] technoweenie: ok srsly [04:54] technoweenie: when you setup an http client, you call .finish on the request [04:54] technoweenie: when that event is emitted it passes the response [04:54] technoweenie: and then you add a listener to the response for the body object [04:55] JimBastard: err im not sure to be honest [04:55] JimBastard: restler broke for me [04:55] JimBastard: and im kinda stuck on http client right now [04:55] technoweenie: no i'm talking about the builtin http client [04:55] JimBastard: yeah [04:55] JimBastard: me too [04:56] technoweenie: http://gist.github.com/313114 [04:56] JimBastard: http://gist.github.com/313115 [04:56] technoweenie: well i think that syntax is old actually [04:56] JimBastard: LOLWUT [04:56] JimBastard: check out the ids [04:56] technoweenie: yea i think we copied teh same text [04:56] technoweenie: SO my question [04:56] technoweenie: response.addListener("data", function (chunk) { [04:56] technoweenie: is there a chance that some data will have already started flowing from the response [04:56] JimBastard: the docs arent in sync with HEAD [04:56] JimBastard: ^^^ [04:57] technoweenie: right but its similar to that [04:57] technoweenie: same idea, just the events are named differently [04:57] JimBastard: i think addListener is gone? [04:57] technoweenie: no, its just wrapped [04:57] technoweenie: i'm not asking about the syntax [04:57] JimBastard: ok [04:58] JimBastard: what makes you think its broken [04:58] pjb3: technoweenie: my understanding is that it will start flowing, but it's buffered somehow, do you won't miss it in the data listener [04:58] technoweenie: pjb3: ok, thats really good to know :) [04:58] technoweenie: i'm doing some slides for a js talk i'm giving tomorrow actually [04:59] technoweenie: and while showing them to someone he asked me that [04:59] pjb3: yeah, I think I asked the same question at some point [04:59] pjb3: file access works the same way [04:59] technoweenie: ive had some weird issues w/ promises actually [05:00] pjb3: which I think is why that was changed to allow you to do sync [05:00] technoweenie: sometimes they finish before i add the callback [05:00] pjb3: because in some cases, it takes longer to have the callback trigger [05:00] technoweenie: course this mainly only happened when i was juggling multiple promise objects from redis calls [05:00] technoweenie: huh [05:01] technoweenie: wait you can do synchronous file access? [05:01] technoweenie: i thought synchronous stuff was taboo [05:01] pjb3: yeah, me too [05:01] technoweenie: though JSON.parse is synchronous isnt it [05:01] pjb3: hold on [05:01] technoweenie: why dont i just fucking test this, sheesh, hold on [05:01] pjb3: looking for the message in the group where Ryan explained it [05:04] pjb3: http://groups.google.com/group/nodejs/msg/991aec2a266336de [05:05] technoweenie: interesting... wait() seems pretty important [05:05] technoweenie: hmm maybe i only use it in my tests though so its not a big deal [05:06] pjb3: JSON.parse doesn't do IO [05:07] technoweenie: hmm i dont think it buffers [05:07] technoweenie: i put a setTimeout around the addListener('body') and it loses it [05:07] pjb3: yes, that doesn't work [05:08] pjb3: because you don't add the listener until the future [05:09] pjb3: the output gets generates and since it has no listeners, nothing is triggered [05:09] pjb3: but [05:09] pjb3: if you do something computationally expensive, it won't get lost [05:10] pjb3: even though there is a delay [05:10] technoweenie: ah ok, hm [05:11] pjb3: It's hard to explain and I don't want to sound like I'm an expert on it [05:11] stephenlb has joined the channel [05:11] technoweenie: yea, its starting ot get way over my head :) [05:11] technoweenie: well thanks for the attempt, i think i kinda get it :) [05:12] pjb3: but if you ask isaacs or ryah or one of those people who actually understand this, they can explain how it you're not going to lose anything in the data listener, IIRC ;) [05:23] brandon_beacher has joined the channel [05:23] brandon_beacher_ has joined the channel [05:23] Tim_Smart: JimBastard: The docs are in sync roughly now, ryah push a update a day or two ago [05:24] Tim_Smart: technoweenie: What did you want to know about http client? [05:24] JimBastard: hit me on aim [05:24] JimBastard: err nm lol [05:24] JimBastard: brb [05:25] pjb3: Tim_Smart: He was asking about this http://gist.github.com/313114 [05:25] pjb3: and is there a chance that between line 5 and 8 [05:26] pjb3: the data for body would start flowing [05:26] pjb3: and would you not get that data in the listener [05:26] Tim_Smart: Hmm that is kinda weird syntax [05:26] Tim_Smart: wait a sec [05:27] pjb3: I think that's just the example http client from the docs [05:28] JimBastard: it is [05:29] technoweenie: yea but i put in request.finish() and response.addListener('body'... [05:29] technoweenie: what's weird about it otherwise? [05:31] Tim_Smart: http://gist.github.com/313132 [05:31] Tim_Smart: That is how I do http client stuff [05:32] JimBastard: nice [05:32] JimBastard: did you figure out how to do any of the auth stuff? [05:33] Tim_Smart: I haven't looked at node.js methods for doing it yet [05:33] JimBastard: ohh hey ryah fyi i was talking about how awesome node was for most of the nyc.rb meetup tonight [05:33] JimBastard: YOUR VM AINT GOT SHIT ON V8 SON [05:34] mikeal has joined the channel [05:34] Tim_Smart: JimBastard: Just do user:pass@host.com:8080 for normal HTTP auth [05:34] JimBastard: i was trying that but was having issues, i'll have to revisit it soon [05:35] pjb3: Tim_Smart: ok, the same underlying question still exists [05:35] pjb3: In your gist [05:35] technoweenie: huh i use body and complete events instead of data/end [05:36] pjb3: what happens to the data that the response gets before the data listener is added? [05:39] mattly has joined the channel [05:43] tmpvar: hey guys [05:44] tmpvar: would you say setTimeout(function() { action(); }, 0); is the simplest/most compliant way of making a callback async? [05:44] tmpvar: or have a lost a bolt [05:44] tmpvar: er.. or have I lost a bolt [05:46] rtomayko has joined the channel [05:52] dnolen has joined the channel [05:55] gwoo: tmpvar: did you try process.nextTick ? [05:56] tmpvar: trying to stay away from node-isms :/ .. this thing im working on is intended to be browser/node compatible [05:56] gwoo: oh ok [05:57] tmpvar: i think im going to roll with it, unless anyone has any better solutions :/ [05:57] tmpvar: my example should have been setTimeout(action,0); actually [06:01] gwoo: yeah i think that's the probably the way to go [06:01] gwoo: fwiw [06:06] isaacs: pjb3: what is this that i actually understand? [06:06] isaacs: tmpvar: in node, process.nextTick(action) has higher priority than setTimeout(action, 0) [06:07] isaacs: tmpvar: but you said you wanted to avoid node-isms [06:10] tmpvar: isaacs, hrm.. maybe i should sniff for it [06:10] tmpvar: anyhow, its first round.. [06:10] JohnResig has joined the channel [06:10] JohnResig: heyoooo [06:11] tmpvar: yo [06:11] JohnResig: having some compile issues on 10.6 [06:11] JohnResig: got the log here: http://pastebin.com/T60Byxnt [06:11] JohnResig: looks like it might be coking on v8? [06:11] JohnResig: (choking, hah) [06:11] tmpvar: wow, thats a new one [06:12] JohnResig: micheil: (popped in here, per your suggestion) [06:12] tmpvar: i built this earlier today on 10.6 :/ [06:12] micheil: oh, hey [06:12] JohnResig: hmm [06:12] JohnResig: tmpvar: 1.3.0 or trunk? [06:12] tmpvar: trunk [06:13] micheil: JohnResig: what's ./configure produce? [06:13] JohnResig: ok, let me pull trunk then [06:13] tmpvar: i can try and built 1.3.0 [06:13] tmpvar: s/built/build [06:13] micheil: ACTION really needs to set his macbook up as a buildbot [06:14] JohnResig: micheil: added the details to the paste: http://pastebin.com/gi8yiF1Y [06:15] micheil: JohnResig: I'd assume you have the xcode utitlities and all that? [06:15] Tim_Smart: pjb3: Sorry about the delay, the data gets lsot [06:15] Tim_Smart: *lsot [06:15] Tim_Smart: *lost [06:15] JohnResig: micheil: yep, otherwise make wouldn't run ;) [06:15] Tim_Smart: >.> [06:15] micheil: true [06:15] gwoo: ACTION uses homebrew [06:15] Tim_Smart: ACTION <3 homebrew [06:15] creationix: JohnResig: cool, you got the compiler to segfault, I haven't seen that one [06:15] JohnResig: creationix: yay? haha [06:16] tmpvar: ha [06:16] tmpvar: building 1.3.0 now.. [06:16] ryah: oh nm my tweet, John [06:16] ryah: 0.1.30 [06:16] JohnResig: I'm going to pull from trunk [06:17] Tim_Smart: Now is probably a good time to start, now the big api changes have been made [06:17] ryah: JohnResig: gcc bug? [06:17] micheil: tmpvar: I'm building as well. [06:17] JohnResig: maybe? sigh [06:17] ryah: JohnResig: which version? [06:18] Tim_Smart: compilers are evil, more evil than jslint [06:18] ryah: (of gcc) [06:18] aho: i like jslint :> [06:18] JohnResig: ryah: "i686-apple-darwin10-gcc-4.2.1" [06:18] tmpvar: latest built, as did 1.3.0 from tar [06:18] micheil: ryah / JohnResig: I've just had the 0.1.30 tarball build [06:19] JohnResig: harumpf [06:19] ryah: ry/master has a new v8 - maybe it will won't hit the bug [06:19] Tim_Smart: Yeah jslint is pretty cool I guess [06:19] micheil: hmm.. gcc version: i686-apple-darwin10-gcc-4.2.1 [06:19] JohnResig: ryah: yeah, I'm trying it now [06:19] tmpvar: JohnResig, could to paste somewhere the entire gcc -v output? [06:20] Tim_Smart: JohnResig: Did you grab your compiler via x-code? [06:20] creationix: I just recompiled from scratch with stock snow-leopard and gcc version 4.2.1 (Apple Inc. build 5646) (dot 1) [06:20] creationix: no problem, I'm running 64-bit kernel BTW [06:21] Tim_Smart: Yeah I'm running node fine with 10.6.2 and the latest xcode [06:21] micheil: I'd be 64-bit kernel as well. [06:21] Tim_Smart: I'm 32-bit kernel [06:23] creationix: JohnResig: here is the diff between my configure and yours http://pastie.org/840082 [06:23] creationix: the only thing different seems to be gnutls [06:24] creationix: but that supposed to be optional [06:25] Tim_Smart: it is kinda weird that it failed part-way through v8 though [06:26] JohnResig: "'build' finished successfully (6m49.998s)" [06:26] JohnResig: !! [06:26] Tim_Smart: :o [06:26] ryah: yey [06:26] JohnResig: so that's running from HEAD [06:26] tmpvar: word [06:27] Tim_Smart: blame it on dropbox :L [06:27] tmpvar: ha, I was going to say that earlier [06:27] ryah: i think JohnResig's gcc is corrupted [06:27] Tim_Smart: it must have got hungry and nommed on a file [06:27] JohnResig: ryah: wouldn't it not compile HEAD if that was the case? [06:28] kennethkalmer has joined the channel [06:28] JohnResig: (and to be clear, I did 'make clean' after the original build and it still broke in the same place) [06:28] Tim_Smart: I don't think it was gcc, I think the v8 source was corrupt somehow [06:29] ryah: JohnResig: do you have like, $CC set to something strange? [06:31] JohnResig: ryah: don't think so, no - this machine has a clean install of xcode [06:33] JohnResig: anyway - thanks everyone! [06:33] tmpvar: happy noding :) [06:33] JohnResig: :) [06:34] Tim_Smart: Welcome to a javascript world without crazy browser quirks, but instead even crazier people with interesting coding concepts [06:35] [Pwner]John: :o [06:35] ryah: and segfaults! [06:35] Tim_Smart: like (fab) :o [06:35] ryah: yes! [06:38] micheil: ryah: did we want a patch for some form of eio_custom globbing? [06:38] ryah: micheil: yeah, that'd be great [06:38] micheil: okay [06:38] ryah: it's a bit tricky, i think [06:38] ryah: maybe not [06:38] micheil: ACTION will need to try and figure out if there are any portability issues [06:40] ryah: you know it might be better to just do it in js [06:40] ryah: and then at least we con ensure the syntax is the same [06:40] micheil: hmm.. [06:40] micheil: it'd probably be faster done in c [06:41] ryah: definitely [06:41] ryah: but - well - it's just glob [06:41] isaacs: doing it in C guarantees that you're using the same syntax that almost everything everywhere else posixly uses [06:42] isaacs: since sh and php and perl and them all use glob.h. it's old. [06:42] isaacs: venerable. [06:43] Tim_Smart: I though node stuff was c++, not c? [06:45] tmpvar: g'night [06:46] micheil: isaacs: venerable? [06:46] micheil: vulnerable? [06:46] isaacs: heh [06:47] micheil: ah, reason by age [06:47] isaacs: no, i meant as in, commanding respect because of age, dignity, character or position; worthy of reverence; ancient, antiquated or archaic [06:47] micheil: so, theoretically there shouldn't be any portability issues in glob [06:48] isaacs: doubtful [06:48] isaacs: it's been standard posix since 1992 [06:50] ryah: isaacs: hm. somehow i doubt it [06:50] isaacs: ryah: i didn't know that off the top of my head, btw, i'm just quoting the man page and wikipedia [06:50] ryah: posix is portable like like html is portable - the corner cases hurt [06:50] ryah: me neither [06:51] isaacs: i'm guessing that solaris, darwin, and linux all use the same glob.h, or close enough. [06:51] isaacs: in any event, you'd expect fs.glob to work just like whatever file system it's on, i'd think [06:52] mikeal has joined the channel [06:55] ryah: oh well. if you do it in c and it compiles on linux and mac and solaris, i'm happy [06:55] ryah: i'm just saying - i wouldnt be opposed to just having a js implementation [06:56] micheil: yeah, I just have to no use the extensions to glob_t [06:56] micheil: *not [06:58] Tim_Smart: JohnResig: You should have a go at porting Testswarm to node.js :D [06:59] Tim_Smart: I was thinking about that the other day, node would suit the distributed model really well [06:59] tiglionabbit has joined the channel [06:59] tiglionabbit: hi [06:59] micheil: ref: http://developer.apple.com/Mac/library/documentation/Darwin/Reference/ManPages/man3/glob.3.html [07:00] micheil: Tim_Smart: agreed there [07:01] tiglionabbit: what database/persistence stuff should I use with node? I just want to store a log of events per user, and on request return all events received from a user after a given date [07:01] CIA-77: node: 03Ryan Dahl 07master * re0ecf4f 10/ deps/v8/SConstruct : [07:01] CIA-77: node: Remove -Werror on V8 [07:01] CIA-77: node: Are they ever going to fix this? - http://bit.ly/broppp [07:01] Tim_Smart: tiglionabbit: You have a few options, have a look at the modules list on the wiki [07:01] tiglionabbit: tim: looking at it, though a lot of this stuff seems incomplete or I don't know how to make it work [07:02] tiglionabbit: I'd be happy to use mongodb [07:02] Tim_Smart: Well for a small application, the mongodb would be fine [07:02] tiglionabbit: which one? [07:03] Tim_Smart: http://github.com/orlandov/node-mongodb I think [07:03] isaacs: tiglionabbit: couchdb is quite nice, too. [07:04] Tim_Smart: and that -----^ [07:04] tiglionabbit: in my experience, couchdb is more work than it's worth [07:04] Tim_Smart: For large scale stuff, seriously look at riak [07:04] isaacs: and http://github.com/felixge/node-couchdb makes it easy [07:04] micheil: ryah: with glob, what sort of API do we want? fs.glob(pattern) or fs.glob(path, pattern) [07:04] micheil: ? [07:04] isaacs: at least, makes it easy to use [07:04] mikeal: couchdb is insanely easy [07:04] micheil: (asumme callbacks et all.) [07:04] mikeal: what was the "trouble" [07:05] isaacs: mikeal: well, getting erlang and icu and spidermonkey and tcl/tk to all play nice is not quite trivial. [07:05] mikeal: brew install couchdb? [07:05] mikeal: or download CouchDBX [07:05] tiglionabbit: oh hey, so you can write the queries without making them string literals then? [07:05] isaacs: yeah, that mostly works [07:05] isaacs: most of the time [07:05] isaacs: if you put brew in not /usr/local, then spidermonkey and erlang both throw up. [07:06] mikeal: tiglionabbit: nearly everyone writes local js files and syncs them to the design document [07:06] mikeal: i wish spidermonkey wasn't such a travesty [07:06] creationix: http://github.com/kriszyp/pintura is nice for small apps I hear. I'm working one a version of it that has WebDav integrated http://github.com/creationix/refresh [07:06] creationix: both are straight JS [07:06] jed_ has joined the channel [07:07] tiglionabbit: isaacs: well, making sure all my queries were in the database, and dealing with the limitations in querying, and how slow reduce is [07:07] isaacs: couchdb has always been plenty fast for me. [07:07] isaacs: but i don't really know your use case. [07:07] mikeal: i don't see what the "limitations" are [07:07] isaacs: ACTION ducks out to let mikeal defend his baby... [07:07] mikeal: i can do a lot more with just map and schemaless JSON then i ever could with SQL [07:07] tiglionabbit: well my use case right now is pretty simple, but last time I tried to use couchdb I wanted to do a query with multiple keys and then paginate it [07:08] tiglionabbit: which is impossible in couchdb [07:08] mikeal: pagination is free [07:08] mikeal: limit=100 [07:08] isaacs: tiglionabbit: for greater support-request-trolling reaction, you should go do this in #couchdb [07:09] tiglionabbit: isaacs: nah I already discussed it with them on the mailing list long ago [07:09] mikeal: for "multiple keys" you can just do "multiple queries" or you can design the key you're emitting differently [07:09] isaacs: "Rar, rar! Couch db sucks! You can't even do in it!" [07:09] tiglionabbit: mikeal: how can you paginate multiple queries then? [07:10] tiglionabbit: isaacs: sorry I don't love it. I gave it a chance at least [07:10] mikeal: umn…. you just limit each query until you're done getting records, you'll never get more than "x" number of records at a time [07:10] isaacs: hahaa, it's ok [07:10] mikeal: but usually, once you're doing this, you're not solving the problem the right way [07:11] isaacs: in my experience, though, for basic database/persistence stuff, couchdb does a LOT right. [07:11] mikeal: not always tho [07:11] mikeal: i did queries like this when i first started using CouchDB [07:11] mikeal: when i was still thinking in schema and SQL a bit [07:11] tiglionabbit: at work when I mention mongodb and couchdb as map-reduce systems, people laugh at me. They are going to start using Hadoop [07:12] mikeal: Hadoop is incredibly different [07:12] mikeal: don't put anything in mongodb you don't mind losing [07:12] mikeal: and mongodb doesn't really do map and reduce, it has a sqlish thing [07:12] tiglionabbit: in couchdb at least you can continue from an old map reduce result. I asked how you could do this in hadoop, and they said you can't -- you'd have to run the whole job over again [07:12] tiglionabbit: mikeal: it has map reduce [07:12] mikeal: but hadoop is designed around a different problem [07:13] mikeal: hadoop is for map/reduce operations that are so large they need to span multiple machines just to finish [07:13] tiglionabbit: http://www.mongodb.org/display/DOCS/MapReduce [07:14] mikeal: yeah, but that doesn't persist [07:14] tiglionabbit: mikeal: aren't there implementations of that with couchdb? [07:14] mikeal: it's kinda like couchdb temp views [07:14] tiglionabbit: that is, distributed stuff -- is that working yet? [07:14] mikeal: tiglionabbit: so, Hadoop doesn't have a document or storage model OOTB, you kind of create one [07:14] tiglionabbit: mikeal: I know, it's just strings [07:15] mikeal: CouchDB has this MVCC system where you can edit docs and all that [07:15] mikeal: this requires a bisequence index, which means that all writes need to happen in order [07:15] mikeal: this also means that map/reduce generation needs to happen sequentially for a single set of writes [07:15] tiglionabbit: wait what are you talking about now? [07:15] mikeal: so breaking it up over multiple machines doesn't really help [07:15] tiglionabbit: what does that stand for? [07:16] mikeal: because you can't write to the btree until the last one is finished anyway [07:16] mikeal: the only thing it would help with is a case where you have an incredibly large database and you need to write a brand new view [07:16] mikeal: and we're working on something specifically for that case [07:16] tiglionabbit: I'm confused [07:16] mikeal: ok [07:16] mikeal: so, say you have a big bowl of objects [07:17] mikeal: they don't have any special properties for revisioning [07:17] mikeal: like couchdb does [07:17] mikeal: you want to do a map/reduce over them [07:17] mikeal: you can send that operation out and parallelize it [07:17] mikeal: and you can write the btree whenever the each chunk finishes, because it doesn't need to be written in order [07:18] tiglionabbit: what's stopping you from running a bunch of couch instances and distributing documents to them with consistent hashing, then letting every instance generate its view, query across those and reduce it yourself? [07:18] mikeal: that's what Hadoop does [07:18] JimBastard has joined the channel [07:18] mikeal: tiglionabbit: that's what couchdb-lounge does and it's beautiful [07:18] chakrit has joined the channel [07:19] mikeal: it shards the data for one database across multiple dbs and then merges the queries back together and sends the writes to the right shard [07:19] mikeal: without couchdb every really knowing that it's doing this [07:19] sveisvei has joined the channel [07:19] mikeal: the beauty of a simple HTTP REST API :) [07:19] JimBastard: errr refresh? [07:19] tiglionabbit_ has joined the channel [07:19] mikeal: but each of the shards still needs to write the view generation in place [07:19] tiglionabbit_: urk, my cable slipped out. What did I miss [07:20] mikeal: tiglionabbit: that's what couchdb-lounge does and it's beautiful [07:20] mikeal: it shards the data for one database across multiple dbs and then merges the queries back together and sends the writes to the right shard [07:20] mikeal: without couchdb every really knowing that it's doing this [07:20] mikeal: the beauty of a simple HTTP REST API :) [07:20] mikeal: but each of the shards still needs to write the view generation in place [07:20] mikeal: sorry, in order [07:20] mikeal: because the order of the writes matters [07:21] tiglionabbit_: ok [07:21] tiglionabbit_: how does lounge compare to hadoop? [07:21] mikeal: again, they are for totally different things [07:21] tiglionabbit_: in a cold calculation or in one with some cached views [07:21] mikeal: nothing beats Hadoop if you have really really big calculations you need to do (and probably throw away) [07:22] tiglionabbit_: at work we kind of want something that consistently updates [07:22] mikeal: well, that's CouchDB [07:22] tiglionabbit_: I suggested couch but they said nobody uses couch with over 9 nodes, or something like that [07:22] mikeal: nobody else uses and append-only btree with consistent hashing and MVCC [07:23] tiglionabbit_: we have terabytes of data, so it needs to be kinda distributed [07:23] mikeal: meboo has more than 9 nodes [07:23] tiglionabbit_: hehe, really. They use it? [07:23] mikeal: they wrote Lounge :) [07:23] mikeal: and now randall is rewriting it in node.js :) [07:24] mikeal: and now the conversation is back to the actual topic of the channel :P [07:24] tiglionabbit: hehe [07:24] tiglionabbit: tbh I lean toward mongodb because it's simple and doesn't take any setup [07:24] tiglionabbit: but it seems like things where you aggregate data would work great with couch [07:24] creationix: couch in node, that would be very cool [07:25] mikeal: it's not *all* of couch [07:25] mikeal: it's a very very smart proxy :) [07:29] kennethkalmer has joined the channel [07:35] sudoer has joined the channel [07:49] Tim_Smart: Hmm people need to make better use of 'index.js' for commonJS [07:50] Tim_Smart: so you can just sym link a folder to node_libraries [07:50] mikeal: i'm just gonna wait for isaacs to solve all the worlds packaging problems :) [07:50] isaacs: haha [07:50] kjeldahl_ has joined the channel [07:51] isaacs: hey, you know, you could probably write a pretty lightweight compiler thing to take sync-looking code and make it async-with-callbacks [07:51] isaacs: sorta like this: http://gist.github.com/313229 [07:51] isaacs: anyone working on that? [07:52] mikeal: where did I see someone's "queue" implementation? [07:52] isaacs: mikeal: probably either in npm or in Do [07:52] mikeal: maybe it was in do [07:53] mikeal: i know you had a queue in npm but if i remember correctly it was kind of specialized [07:53] Tim_Smart: queue = [] + .push + .shift [07:53] mikeal: that was a refactor or two ago :) [07:53] isaacs: mikeal: yeah, it was too big [07:54] isaacs: basically, npm's queue was a list of things, then a fn to run on all of them, where the function could return a promise, or a value, and the whole queue had its own promise that resolved when it was done [07:54] isaacs: in cb land, that's possible with much less code. [07:55] mikeal: you could just do something like queue([[method, args],[method, args]]) [07:55] mikeal: wrap the large argument, which should be the callback, in something that calls the next [07:56] mikeal: s/large/last [07:56] mikeal: it's late [07:56] isaacs: mikeal: like this? http://github.com/isaacs/npm/blob/master/lib/install.js#L97-118 [07:56] mikeal: kinda, maybe [07:56] mikeal: i was thinking more like [07:57] mikeal: queue([fs.write, [fd, data, encoding, callback]) [07:57] mikeal: you just let queue take care of applying normal async calls for you so that it can do them sequentially [07:58] isaacs: so you call queue multiple times? [07:58] isaacs: or pass the whole list to it? [07:58] mikeal: you pass the whole list of sequential items [07:59] isaacs: right, that's what i'm doing, kinda, but just calling it "chain" [07:59] mikeal: and maybe queue returns an object which you can set some kind of "when" method [07:59] mikeal: no wait, that's useless, nevermind :) [07:59] isaacs: and the last arg to chain() is the eventual callback [07:59] isaacs: but each link gets its last arg as a callback that takes (error, success) [08:00] mikeal: yeah, that's a bit different [08:01] isaacs: it *feels* very sequential, though [08:01] isaacs: which is nice [08:02] mikeal: ok, sleep time [08:02] isaacs: have fun [08:02] mikeal: i'm gonna have a blast [08:03] mikeal: it's gonna be like Chuck-E-Cheese in my dreams [08:03] isaacs: hahaha [08:05] micheil: hey, ryah, you about? [08:05] micheil: ryah: it's a question about c / libeio [08:07] micheil: ryah: I think that the code that I wrote originally for mkstemp actually was seriously bugged in the fact that it'd never return anything other then 0 on req->errorno [08:18] kjeldahl_ has joined the channel [08:28] kjeldahl_ has joined the channel [08:46] teemow has joined the channel [08:52] tiglionabbit: darn it, this doesn't work because it uses Promise http://github.com/orlandov/node-mongodb [08:54] tiglionabbit: I'd just use postgres, but it seems a bit complex to install... [08:54] tiglionabbit: haven't used it before [08:55] tiglionabbit: oh no, node_postgres uses Promise too [08:55] tiglionabbit: what gives [08:56] tiglionabbit: node-mongodb-native fails its tests too... [08:58] Lanior has joined the channel [09:06] Tim_Smart: why not couch? [09:06] kjeldahl_ has joined the channel [09:07] kjeldahl_ has joined the channel [09:07] tiglionabbit: Tim_Smart: because I have no reason to use couch for this simple application [09:07] Tim_Smart: ok :) [09:08] tiglionabbit: unless it's like, the only way I can save anything in node.js that works [09:09] Tim_Smart: Considering promises were removed only recently, it might take a while before developers start altering code [09:09] Tim_Smart: unless you speed up the process, and fix it and send a pull request [09:09] Tim_Smart: :D [09:10] tiglionabbit: I just wanted a simple way to save some data. I didn't want to spend all day on this [09:10] tiglionabbit: I could use a flat file and do binary search on it I guess [09:12] tiglionabbit: maybe I need to find a specific version of node.js that's new enough for the libraries but not too new [09:13] markwubben has joined the channel [09:28] voodootikigod_ has joined the channel [09:31] felixge has joined the channel [09:38] BBB has joined the channel [09:41] kennethk_ has joined the channel [09:51] markwubben has joined the channel [09:54] piranha has joined the channel [09:57] rolfb has joined the channel [10:00] xla has joined the channel [10:03] bpot has joined the channel [10:08] tiglionabbit: ugh, can't get node version v0.1.29 to install [10:08] tiglionabbit: losing options fast [10:11] tiglionabbit has joined the channel [10:12] felixge has joined the channel [10:12] Tim_Smart: tiglionabbit: http://github.com/frank06/node-riak [10:13] tiglionabbit: does this work with node 0.1.30? [10:14] Tim_Smart: I would assume so, riak uses a simple HTTP JSON RESTful interface [10:14] tlrobinson_ has joined the channel [10:15] tiglionabbit: how do I install it? [10:16] Tim_Smart: I installed it with homebrew for Mac, I haven't tried it on linux yet [10:16] tiglionabbit: is it possible to do a require on a local directory while in the repl? [10:16] tiglionabbit: er local file [10:16] Tim_Smart: yeah, but you might have to specify the full path [10:17] tiglionabbit: ugh~ [10:17] tiglionabbit: no relative paths huh [10:17] Tim_Smart: not unless you change the paths in the prompt [10:18] Tim_Smart: Still requires the full path :p [10:18] Tim_Smart: it is relative, except relative to the node-replc script [10:21] tiglionabbit: I've never heard of riak before. All I really need is something simple, so I didn't expect to learn a new database right now, but... [10:23] tiglionabbit: guess I should start using brew on this machine. Been using macports, but it doesn't appear to have riak [10:24] Tim_Smart: Right. Well tbh at this stage db support isn't entirely good. [10:24] Tim_Smart: especially considering the node api changes a lot [10:25] Tim_Smart: Node does a couple DB's well though, one being couch, and *used* to be mongo [10:25] markwubben_ has joined the channel [10:30] mAritz has joined the channel [10:33] pdelgallego has joined the channel [10:34] ithinkihaveacat has joined the channel [10:35] rhys__ has joined the channel [10:51] yaroslav has joined the channel [11:15] micheil: ryah: ping [11:17] micheil: ryah: I think I've got something maybe working for glob (still need to test it) [11:28] isaacs: micheil: oh? [11:28] isaacs: link? [11:28] micheil: maybe [11:28] micheil: not yet [11:28] isaacs: maybe's good :) [11:28] micheil: it's busy segfaulting [11:28] isaacs: glob is handy [11:28] isaacs: yikes [11:28] micheil: yeah :/ [11:28] micheil: although, it is only my second libeio extension [11:29] micheil: hopefully configuring with --debug will give me a little bit more of the stack [11:30] micheil: I'm trying to go from creating all the structs myself to using the built in libeio ones [11:31] isaacs: ahh [11:37] creationix has joined the channel [11:37] micheil: anyone know how to get more information back about a segfault? [11:55] kennethkalmer has joined the channel [12:06] stepheneb has joined the channel [12:06] tiglionabbit has joined the channel [12:22] dekz has joined the channel [12:39] micheil: ryah: I can't figure out why this is just segfaulting for no apparent reason.. [12:43] alex-desktop has joined the channel [12:46] rhys__ has joined the channel [12:48] micheil: ryah: this is my work in progress, http://gist.github.com/313398 [12:52] unomi: http://ajaxim.com/ does this crash for anyone else? [13:06] Zoka has joined the channel [13:07] piranha: unomi: it crashed a tab in chrome for me when I played with it [13:08] unomi: yeah :| [13:09] voodootikigod_ has joined the channel [13:15] markwubben has joined the channel [13:30] Zoka: micheil: I had a brief look at http://gist.github.com/313398 and cloned it with some comments inhttp://gist.github.com/313410 [13:32] micheil: hmm.. that seems to echo what another person was telling me, that I needed to malloc for it [13:33] micheil: Even with alloc'ing memory for it, I still seem to get an untraceable segfault [13:33] voodootikigod_ has joined the channel [13:34] Zoka: micheil: having pattern[1] is fine as long as you add strlen(*pattern) in allocation size, so you are saving one malloc/calloc call Line 110 [13:35] Zoka: Also you had *req instead of *rreq in line 110 [13:38] lifo has joined the channel [13:49] Zoka has left the channel [13:50] micheil: hmm.. [13:52] creationix has joined the channel [13:53] pmuellr has joined the channel [13:54] jspiros has joined the channel [13:57] offmessage has joined the channel [14:04] markwubben_ has joined the channel [14:09] charlenopires has joined the channel [14:09] micheil: updated that diff, still no success: http://gist.github.com/313443 [14:12] christkv has joined the channel [14:13] christkv: Hey guys I got a question about the changes in 0.1.30. When I use process.mixin(this, events.EventEmitter) mixed in under prototype [14:14] christkv: that does not seem right to me ? [14:14] christkv: { [14:14] christkv: "arguments": null, [14:14] christkv: "length": 0, [14:14] christkv: "name": "EventEmitter", [14:14] christkv: "prototype": { [14:14] christkv: "emit": [Function], [14:14] christkv: "addListener": [Function], [14:14] christkv: "removeListener": [Function], [14:14] christkv: "listeners": [Function] [14:14] christkv: }, [14:14] christkv: "caller": null [14:14] christkv: } [14:17] gf3 has joined the channel [14:23] khaase has joined the channel [14:23] davidsklar has joined the channel [14:23] khaase: can i pipe something into node.js? [14:28] khaase: better question: how can i pipe something into node.js? [14:40] happyelephant has joined the channel [14:47] yaroslav has joined the channel [14:49] creationix has joined the channel [14:51] christkv: Just confirmed it. the process.mixin method seems to be mixing in a module completely weirdly adding them under .prototype in the target object [14:51] christkv: is this by design or a bug ? [14:55] jashkenas has joined the channel [14:55] jashkenas has left the channel [15:04] rhys__ has joined the channel [15:07] Booster has joined the channel [15:15] atcrabtree has joined the channel [15:21] cloudhead has joined the channel [15:22] khaase has left the channel [15:27] jed_ has joined the channel [15:32] fwg: christkv: use sys.inherits [15:32] fwg: erm, bullshit [15:33] qFox has joined the channel [15:33] fwg: you would have to use inherits(Func, events.EventEmitter) [15:33] christkv: Yeah I had a problem because I'm using oo.js [15:33] christkv: I ended up doing a global mixin for the Class [15:34] christkv: that seems to have done the trick [15:34] christkv: the mongodb driver should be compatible with 0.1.30 as soon as I push [15:36] JoePeck has joined the channel [15:39] dnolen has joined the channel [15:40] mies has joined the channel [15:42] binary42 has joined the channel [15:43] binary42 has joined the channel [15:49] alexiskander has joined the channel [15:57] felixge: christkv: there were some changes to process.mixin() and I heard other people complain as well [15:58] felixge: christkv: so chances are there is a bug and test case / fixes would be highly appreciated :) [16:00] christkv: Yeah the thought I have is if I was even using it correctly in the first place :D [16:00] christkv: Right now it seems to be working perfectly [16:01] christkv: as long as I use the inherits functionality and then do EventEmitter.call on the instance [16:02] kennethkalmer has joined the channel [16:17] adamv has joined the channel [16:24] stepheneb has joined the channel [16:31] steadicat has joined the channel [16:40] RayMorgan has joined the channel [16:42] aguynamedben has joined the channel [16:45] dnolen has joined the channel [16:46] ollie has joined the channel [16:48] keeto has joined the channel [16:54] kriszyp has joined the channel [17:06] sudoer has joined the channel [17:07] dandean has joined the channel [17:11] technoweenie has joined the channel [17:12] unomi: piranha: what os / browser version are you using? [17:13] piranha: unomi: osx/chromium [17:13] piranha: unomi: why are you asking me? :-) [17:13] unomi: putting in a bug report against ajaxim [17:13] piranha: ah, ok :) [17:14] unomi: could you tell me the version of chromium? [17:14] unomi: http://github.com/endtwist/AjaxIM/issues#issue/4 [17:15] bryanl has joined the channel [17:21] bpot has joined the channel [17:23] bpot has joined the channel [17:23] dnolen_ has joined the channel [17:25] happyelephant has joined the channel [17:29] joshbuddy has joined the channel [17:31] eikke has joined the channel [17:34] n8o_ has joined the channel [17:34] dnolen has joined the channel [17:36] jcrosby has joined the channel [17:38] dnolen_ has joined the channel [17:47] sahnlam has joined the channel [17:48] aho has joined the channel [17:52] joshbuddy has joined the channel [17:52] joshbuddy has joined the channel [17:57] isaacs has joined the channel [18:00] isaacs: christkv: sounds like you got it sorted, but what you're seeing is the expected behavior. process.mixin is not for class inheritance. [18:00] isaacs: if you do process.mixin(this, someFunction) then you'll just copy the properties of the *function* onto your object, which is probably almost never what you want; [18:01] christkv: yeah. I have a feeling I was exploiting a bug in node instead of actually finding a bug [18:01] isaacs: christkv: what i'm saying is, there's no bug. [18:01] isaacs: christkv: i'm trying as gently as possible to explain that it was pebcak ;) [18:02] christkv: isaacs: jupp, pretty much [18:02] christkv: isaac: I think my code was working because there was a bug allowing the weird setup I was using :D [18:03] isaacs: i kinda prefer not to use sys.inherits. just assign Child.prototype.__proto__ = Parent.prototype and then have function Child () { Parent.call(this) } [18:04] christkv: isaac: thanks for the clarification mate [18:05] ryah: micheil: your glob looks okay to me [18:05] isaacs: np [18:05] ryah: micheil: i mean the general technique [18:06] ryah: micheil: just got to debug it a bit :) [18:08] pdelgallego has joined the channel [18:11] offmessage has left the channel [18:13] felixge has joined the channel [18:13] felixge has joined the channel [18:22] stephenlb has joined the channel [18:24] pdelgallego has joined the channel [18:25] JimBastard has joined the channel [18:26] JimBastard: binary42: you gotta yell at AQ and get him on freenode more often [18:26] binary42: JimBastard: Ha! [18:26] pdelgallego has joined the channel [18:26] binary42: Was just talking to him. [18:26] binary42: Got him to join venmo and asked him to do another codefoodbar already. [18:26] JimBastard: i had one of those late nights where i couldnt stop thinking about templating and scaffolding [18:27] binary42: Scaffolding causes cancer. Just saying. [18:27] JimBastard: was thinking more of UI scaffolding and HTML and CSS and some minor jQuery [18:27] JimBastard: not back-end logic [18:27] binary42: Even in that case. [18:27] binary42: I really dislike scaffolding. [18:28] JimBastard: well like my use case is a table [18:28] binary42: ;-) [18:28] JimBastard: i had a collections of records [18:28] JimBastard: i want to output them in a nice html table with headers [18:28] JimBastard: easy enough [18:28] JimBastard: then i was to have the columns sortable [18:28] binary42: ACTION apologizes for these daily #node.js hijacks. [18:28] binary42: JimBastard: pure.js is pretty awesome for that. [18:29] binary42: Otherwise mustache.js for regular markup generation. [18:29] JimBastard: this is node related because it can choose to not implement the "behaviors" and just spit flat html from the server [18:29] binary42: The only scaffolding you need in that case is example markup. [18:29] JimBastard: i guess so [18:29] JimBastard: aight back to work [18:29] binary42: Going to grab lunch now anyhow. [18:42] aguynamedben has joined the channel [18:45] ollie has joined the channel [18:48] joshbuddy has joined the channel [18:48] joshbuddy has joined the channel [18:53] neynenmo has joined the channel [18:56] mikeal has joined the channel [19:02] markwubben has joined the channel [19:06] drostie has joined the channel [19:10] xla has joined the channel [19:16] sahnlam has joined the channel [19:20] maritz has joined the channel [19:24] maritz has joined the channel [19:28] Harrison has joined the channel [19:31] ryah: someone should pick up the postgres binding [19:31] ryah: libpq has great funtionality [19:31] ryah: it fits perfectly into node [19:31] christkv has joined the channel [19:39] felixge: ryah: I think most people use mysql : | [19:40] creationix has joined the channel [19:41] creationix: I prefer postgres [19:41] qFox has joined the channel [19:47] unomi has joined the channel [19:51] christkv: go mongo :D [19:53] atcrabtree has joined the channel [19:58] tlrobinson_ has joined the channel [20:04] Booster has joined the channel [20:07] ryah: felixge: yeah [20:07] ryah: felixge: i got an email recently about someone wanting to work on mysql [20:07] ryah: it would be great [20:07] felixge: nice [20:07] ryah: i want to do it too - just don't have the bandwidth at the moment [20:07] felixge: I tried to play with the libdrizzle client a little [20:08] felixge: but with my C++ skills that project would take me a year :) [20:08] felixge: anyway, it seems the author of this other mysql lib abandoned it? [20:09] ryah: well - i think no one is using it [20:09] ryah: so he's probably not working on it :) [20:09] ryah: but i'm sure if we started poking about he'd get interested again [20:10] ryah: i've emailed him a bit - he's a nice guy [20:10] ryah: C isn't so much about skills, but state of mind. [20:11] ryah: ;) [20:11] felixge: C yeah, but C++ is making me feel like I have no mind ;) [20:11] felixge: you've done a great job keeping the node code easy to understand as far as I can judge so [20:12] ryah: well - i mostly avoid c++ [20:12] creationix: ryah: I'm assuming libev and libeio work on solaris. I'm thinking of using them for a school project [20:12] ryah: for example there is a c++ bindign to libev [20:12] ryah: creationix: yeah [20:12] ryah: but i don't use it [20:13] mumrah has joined the channel [20:13] felixge: ryah: I'm wondering why v8 is using C++ [20:13] mumrah: is there a way to profile a node.js application? [20:13] felixge: ryah: I guess it is more powerful if you invest in truly wrapping your head around it [20:13] mumrah: i have a humongous memory leak that i'd like to diagnose [20:13] ryah: mumrah: --prof [20:14] mumrah: doesn't seem to have an effect [20:14] ryah: mumrah: that creates v8.log. then do node_directory/deps/v8/tools/linux_tick_counter.py v8.log [20:14] ryah: (or something to the effect) [20:14] mumrah: hmm, not seeing v8.log [20:14] mumrah: just executes as normal [20:15] ryah: mumrah: it creates it on exit [20:15] mumrah: :( [20:15] ryah: mumrah: be sure to exit your application cleanly, not with ^C [20:15] mumrah: indeed [20:15] ryah: it messes up the profiler [20:15] mumrah: node runs and exits [20:15] creationix: I personally don't think c++ is a good ratio to abstraction vs performance. C is fast, and things like OCaml are easier and faster than c++ [20:16] kriszyp: the profiler sounds cool, but I don't see a v8.log either, it should be in the cwd? [20:16] kriszyp: node --prof myfile.js ? [20:16] mumrah: i'm running v0.1.30 [20:17] mumrah: with no luck for --prof [20:18] ryah: kriszyp: yes [20:19] joshbuddy has joined the channel [20:20] ryah: hm, just tried it in macintosh - also not getting it [20:20] kriszyp: glad its reproducible [20:22] ryah: use --prof --prof_auto [20:22] ryah: i guess auto profiling is disabled now [20:23] mumrah: ryah: thanks [20:24] mumrah: ryah: where is this linux_tick_counter script? [20:24] ryah: deps/v8/tools/mac-tick-processor v8.log [20:24] mumrah: deps? [20:24] ryah: inside the node directory [20:24] mumrah: node installed in /usr/local/ [20:24] ryah: the source dir [20:24] mumrah: ooh [20:25] ryah: I haven't done this on mac - it works pretty well in linux [20:26] mumrah: very cool [20:26] kriszyp: that's awesome [20:28] ryah: yeah, v8 can also do this online [20:28] ryah: i'd be great to write a little library which would start a web server and display profile stats from your process [20:29] ryah: it'd [20:29] jcrosby has joined the channel [20:29] ryah: like top but for functions [20:30] ryah: of course, having dtrace probes in there would be the best [20:30] mumrah: anyone have experience running node with valgrind? [20:30] mumrah: i keep some funky errors when i run it directly (valgrind node test.js), but also when using the script in deps/v8/tools/ [20:31] ryah: what sort of errors? [20:31] mumrah: valgrind: the 'impossible' happened: [20:31] mumrah: LibVEX called failure_exit(). [20:32] mumrah: then a traceback [20:33] ryah: hm [20:33] ryah: i haven't seen that before [20:33] mumrah: this happens for a "hello, world" script [20:34] mumrah: nothing fancy going on [20:34] ryah: i was just going to try it and i got 'valgrind not found' [20:34] ryah: and then i remembered i'm on a mac [20:34] mumrah: heh [20:34] ryah: :~( [20:34] mumrah: if i just do "run-valgrind.py node" [20:34] mumrah: it executes fine [20:34] mumrah: well, valgrind does [20:34] unomi: http://www.sealiesoftware.com/valgrind/ [20:35] ryah: mumrah: you might want to compile the debug version of node, node_g [20:35] ryah: mumrah: it will give you symbols in the backtrace but also do lots of asserts [20:35] ryah: mumrah: configure --debug && make [20:36] micheil: ryah: yeah, and I have no idea how to debug it [20:36] micheil: and valgrind won't install [20:36] ryah: valgrind, afaik doesn't work on macintosh [20:36] unomi: http://www.chromium.org/developers/how-tos/using-valgrind [20:36] unomi: chromium docs says it does [20:36] ryah: well - unomi posted a link - but i don't know [20:37] ryah: i've tried it before, it didn't go well [20:37] mumrah: i know people who run valgrind on osx [20:37] unomi: http://www.chromium.org/developers/how-tos/using-valgrind/building-valgrind [20:37] Tim_Smart has joined the channel [20:37] ryah: hm, mac ports has it. /me tries [20:38] nodejs_v8 has joined the channel [20:38] ryah: checking for the kernel version... unsupported (10.0.0) [20:38] ryah: configure: error: Valgrind works on Darwin 9.x (Mac OS X 10.5) [20:38] mumrah: oooh, you on 10.6? [20:39] micheil: ryah: yeah, I avoid macports as much as possible [20:39] mumrah: everyone i know who does dev on a mac has warned me against 10.6 [20:39] Tim_Smart: 10.6 is great [20:39] mumrah: not to mention it took me days to get apache, php, python, etc installed and configured like i wanted them [20:40] ryah: mac = suck [20:40] JimBastard: windows is worse [20:41] Tim_Smart: For dev: Linux > Mac > ..... ..... ..... Windows [20:43] unomi: you would think that mac would be pretty nice considering that it has dtrace [20:43] unomi: but alot of the infrastructure work just doesn't seem to be there yet [20:50] happyelephant has joined the channel [20:52] n8o__ has joined the channel [20:54] kriszyp has joined the channel [20:56] kriskowal has joined the channel [20:57] markwubben_ has joined the channel [20:59] hassox has joined the channel [20:59] neynenmo has joined the channel [21:04] mumrah: well, turns out my memory leak is just poor allocation of variables [21:04] mumrah: if i run the program and let it exit immediately, it appears to use hundreds of MB [21:04] micheil: ACTION hasn't found his [21:05] mumrah: but if i throw timeout after the main stuff runs, and let it run long enough for GC, it goes down to ~3MB [21:05] mumrah: which is what i expect [21:10] dnolen has joined the channel [21:10] sveisvei has joined the channel [21:19] _ry has joined the channel [21:22] mumrah has left the channel [21:23] jcrosby has joined the channel [21:25] sporadik has joined the channel [21:25] CIA-77: node: 03Jonas Pfenniger 07master * r8f59ccc 10/ src/node.cc : [21:25] CIA-77: node: Removed deprecation errors in src/node.cc [21:25] CIA-77: node: Removed constness on string litterals. This should cause no problem [21:25] CIA-77: node: since we're not modifying them. - http://bit.ly/9XTjRY [21:28] Tim_Smart: !log [21:29] mattly has joined the channel [21:36] sporadik: anyone tried compiling on solaris 10? [21:38] micheil: sporadik: probably ry [21:41] creationix: I'm compiling on solaris right now, let me check what version it is [21:42] Tim_Smart: creationix: Did you get python 2.6 in the end? [21:42] creationix: actually I'm still compiling python right now, it's still running configure [21:42] Tim_Smart: >.< [21:43] sporadik: I ran into problems when running make [21:43] creationix: there is no vim or nano on this machine, so I have to use cat and sed to edit files [21:43] creationix: it's slow going [21:45] brainproxy has joined the channel [21:47] creationix: sporadik: SunOS net01.utdallas.edu 5.10 Generic_141414-01 sun4u sparc SUNW,UltraAX-i2 [21:48] creationix: I'm still compiling python, once that is done, I'll try node and let you know how it goes. [21:49] _ry: no 'vi'? [21:49] abadr has joined the channel [21:49] dnolen has joined the channel [21:50] _ry: sporadik: what problems? [21:51] creationix: well, it has vim, but for some reason, it requires gtk to run. It's not a fun machine to work on. [21:53] micheil: _ry: I don't suppose you have any more tips on developing node / c on mac os x [21:53] micheil: ? [21:53] _ry: micheil: gdb? [21:54] micheil: hmm.. [21:55] sporadik: _ry : I ran into problems when trying to make, it throws errors when reading the Sconstruct files [21:57] _ry: sporadik: if you tell me what errors, then maybe i can help [22:00] sporadik: _ry : scons: Reading SConscript files ... [22:00] sporadik: TypeError: cannot concatenate 'str' and 'NoneType' objects: [22:00] sporadik: File "/export/home/sas/ruby/node-v0.1.26/deps/v8/SConstruct", line 594: [22:00] sporadik: SIMPLE_OPTIONS = { [22:01] _ry: sporadik: which version of python? [22:01] _ry: sporadik: python --version [22:01] sporadik: _ry: 2.4.4 [22:04] maushu has joined the channel [22:04] Tim_Smart: Hmm seems a bit low [22:05] maushu: What would be the best way to make something happen after a long time, multiple times? setTimeout? [22:05] micheil: setTimeout() [22:05] Tim_Smart: But that errors seems something to do with v8 [22:05] Tim_Smart: does node.js have set interval? [22:05] pdelgallego has joined the channel [22:06] Tim_Smart: nodejs_v8: Object.getOwnPropertyNames(this) [22:06] nodejs_v8: Tim_Smart: ["TypeError", "decodeURI", "String", "Function", "Number", "undefined", "parseFloat", "encodeURI", "encodeURIComponent", "ReferenceError", "RegExp", "escape", "Array", "isNaN", "URIError", "unescape", "RangeError", "Date", "Infinity", "decodeURIComponent", "EvalError", "Math", "Boolean", "Error", "SyntaxError", "Object", "NaN", "eval", "parseInt", "execScript", "JSON", "isFinite"] [22:06] maushu: Hmm. [22:06] Tim_Smart: not in the clean scope anyway [22:08] maushu: Thanks. [22:09] _ry: sporadik: okay - execute this script [22:09] _ry: import platform [22:09] _ry: print(platform.system()) [22:09] _ry: print(platform.machine()) [22:09] inimino: creationix: try ed [22:10] inimino: creationix: it does take a few minutes to learn to use, but its surprisingly functional [22:10] creationix: inimino: yikes, ^C doesn't exit, it's there though [22:10] inimino: (I installed node on a machine recently that had only ed) [22:10] inimino: q exits [22:10] inimino: q and enter [22:11] creationix: time to learn another editor [22:13] sporadik: _ry: SunOS [22:13] sporadik: _ry: sun4u [22:13] aurynn: an ultrasparc? Nice. [22:13] aurynn: :) [22:14] sporadik: :) [22:14] aurynn: what spec? [22:14] sporadik: m4000 [22:14] _ry: sporadik: sorry, only on x86 solaris [22:15] creationix: _ry: so that a no for mine too? "sun4u sparc SUNW,Sun-Fire-880" [22:15] _ry: v8 doesn't compile to that arch [22:15] _ry: right [22:15] creationix: well I get libev and libeio at least right? [22:15] _ry: yes [22:15] creationix: ok, that's all I need, I just wanted to try node on the machine while I was at it [22:16] aurynn: creationix, were you going to continue to work on postgres.js, or should I keep hitting it into a more useful shape with Do? [22:16] sporadik: _ry: thanks for the help [22:16] creationix: aurynn: It's moved into node_postgress, I won't have any time for a while to work on it though [22:16] creationix: err node_persistence [22:16] _ry: sporadik: yeah, sorry [22:17] aurynn: mkay [22:17] aurynn: creationix, I wasn't thrilled with your persistence lib, so I'll go back to defining a lower-level DBI :) [22:17] creationix: lower than the driver API? [22:18] sporadik has left the channel [22:18] aurynn: I think I brought this up on the list in December [22:19] aurynn: though I haven't been paying attention - persistence was more of an ORM [22:19] _ry: aurynn: you could work on the c binding [22:19] _ry: aurynn: it could be very good, it just hasn't got much attention [22:19] creationix: yeah, my postgres driver isn't the fastest [22:20] _ry: aurynn: the foundation is there though - it would just require some days of improving it [22:20] _ry: binding the extra functions [22:21] aurynn: my minimal C skills do need work :) [22:22] _ry: first it needs to be ported to node 0.1.30 [22:24] kriskowal_ has joined the channel [22:25] creationix: _ry: I'm doing process-to-process communication, would you recommend using evcom or is there something simpler [22:28] jashkenas has joined the channel [22:28] dekz has joined the channel [22:31] jashkenas: Looking at the docs for process.stdio -- Is there a way to detect if the Node process has been piped data over stdin, without using a timer? [22:32] jashkenas: As in, if stdin has been piped to, process that and write the result to stdout, otherwise run normally. [22:34] creationix: jashkenas: let me know if you figure this one out, then I can make a command line replacement for `haml` [22:34] jashkenas: creationix: uh oh -- was hoping you'd have the answer. [22:34] orlandov: i thought there was a way to tell if you were talking to a tty [22:35] Tim_Smart: jashkenas: I made a simple webworker library if you want to have a look [22:35] jashkenas: looks like this thread never got answered:http://groups.google.com/group/nodejs/browse_thread/thread/a2db4fd4d55ca34b/f1229669da01387f?lnk=gst&q=stdin#f1229669da01387f [22:35] jashkenas: Tim_Smart: I will, thanks. [22:35] Tim_Smart: http://gist.github.com/297155 [22:36] Tim_Smart: hopefully the API hasn't changed >.< [22:36] jashkenas: Tim: listening on stdin isn't the problem -- it's how to detect that you should be listening in the first place without having to use a special flag. [22:37] jashkenas: --stdin is alright as a last resort, but it would be better without. [22:39] creationix: I see what you mean [22:39] jashkenas: if you open stdin and no one ends up writing to it -- you'll never exit, unless you use a timer, which seems far too hacky. [22:40] aguynamedben has joined the channel [22:41] creationix: process.env doesn't seem to have anything useful [22:44] jashkenas: we [22:44] jashkenas: we've got isatty() in the C++ code, but it's not exposed to JS. [22:45] jashkenas: Oh well, --stdin for now. [22:47] CIA-77: node: 03Karl Guertin 07master * r9ad7539 10/ src/node.js : Add (unused) callback parameter to fs.readFile, fs.writeFile - http://bit.ly/bOTrdh [22:54] hassox has joined the channel [22:54] unomi has joined the channel [22:54] creationix has joined the channel [22:54] stepheneb has joined the channel [22:54] alex-desktop has joined the channel [22:54] chakrit has joined the channel [22:54] pjb3 has joined the channel [22:55] creationix: that's strange, I just saw 100 people (not everyone) leave the chatroom at once and then come back all at once, does that mean my internet it flaking out? [22:55] jashkenas: It's a net split for your internet connection. [22:56] jashkenas: http://en.wikipedia.org/wiki/Netsplit [22:57] creationix: cool, never seen that one before [22:58] ollie has joined the channel [22:59] ryah_away: jashkenas: now i answered it [22:59] jashkenas: ryah_away: thanks [23:00] ryah_away: jashkenas: i'm probably going to split stdio into three object, stderr, stdin, stdout [23:00] ryah_away: all implementing the stream interface [23:00] jashkenas: that sounds like a wise decision. [23:00] ryah_away: and i'll add an extra 'istty()' method to each [23:01] creationix: I can't wait for the stream interface, it will be great [23:01] jashkenas: ryah_away: your example script works great -- I'm a little confused why the Node process is exiting, but I guess it's because its stdio is being closed from outside by the pipe. [23:02] sudoer has joined the channel [23:02] ryah_away: jashkenas: yeah [23:02] ryah_away: jashkenas: there is nothing else to listen for [23:09] jashkenas: ryah_away: Is listening for null over the 'data' event the preferred way to detect the end of the input (as in your example)? Or is it better to listen for 'close' ? [23:10] alexiskander has joined the channel [23:11] Tim_Smart: Hmm riak is giving me a headache [23:12] jcrosby has joined the channel [23:13] JimBastard: whats up with Riak Tim_Smart [23:13] JimBastard: are you trying to use node-persistance btw ? [23:13] Tim_Smart: nope [23:14] Tim_Smart: The official python riak client atm [23:14] Tim_Smart: Just testing riak [23:14] JimBastard: what i dont get is how do you interact between node and riak [23:14] JimBastard: is there a JS library? [23:14] Tim_Smart: Simple HTTP calls [23:14] Tim_Smart: yes there is also a library [23:14] JimBastard: so you gotta build the wrapper? [23:14] JimBastard: you got a link for the JS lib? [23:14] RayMorgan_ has joined the channel [23:14] JimBastard: id really like to have some "magic" persistance [23:14] Tim_Smart: but it uses promises at this stage, but it isn't very complex [23:15] JimBastard: so you can just tell a JS object to persist [23:15] JimBastard: and if you perform setters on it, it will update [23:15] JimBastard: not sure if there is even an elegant way to do that [23:16] Tim_Smart: JimBastard: http://github.com/orlandov/node-riak [23:16] dekz has joined the channel [23:17] orlandov: caveat executor: i'm still learning the ins and outs of riak myself :) [23:18] JimBastard: hey i was about to say just yell at orlandov lol [23:18] JimBastard: whats up pimping [23:18] JimBastard: Tim_Smart: i think http://github.com/creationix/node-persistence might be the best option at this point [23:18] orlandov: heh :) [23:19] JimBastard: most of the stuff ive seen from creationix has been pretty solid [23:19] creationix: that one is gathering some dust at the moment though [23:19] JimBastard: you got something else brewing? [23:19] creationix: no, just too many projects [23:20] JimBastard: i feel that [23:20] creationix: as soon as I finish my webdav module, I was going to tie it into node-persistence drivers [23:20] creationix: but if anyone wants to use node-persistence, I can update it for latest node [23:20] JimBastard: i'd like to help you on some of these projects but im not sure how much i could do [23:21] JimBastard: how hard would it be to update node-persistance? [23:21] creationix: shouldn't be too hard [23:21] creationix: most the api changes are simple string replaces [23:22] JimBastard: Tim_Smart and I are working on this little node project right now [23:22] JimBastard: we gotta figure out some data persistance but its kinda in Tim's court right now [23:22] Tim_Smart: We need persistence, yesterday! [23:22] JimBastard: i think we should use creationix 's lib [23:22] creationix: what size of data are you expecting [23:22] JimBastard: and tie it to memory , then to mongo [23:22] JimBastard: v 0.1 is gonna be less then 10k records [23:22] JimBastard: really basic shit [23:22] JimBastard: right now its running in memory [23:23] creationix: would sqlite be enough [23:23] JimBastard: i would think so yes [23:23] JimBastard: for now [23:23] JimBastard: but i dont want to handcuff myself you know [23:23] Tim_Smart: creationix: User credentials , simple json structures [23:23] Tim_Smart: but will need to scale to large numbers [23:23] creationix: my sqlite driver is pretty solid, but you could also just use an in-memory object that writes to the disk occasionally [23:24] Tim_Smart: Hmm mongodb is probably a decent choice for now [23:24] JimBastard: Tim_Smart: you wanna try setting up node-persitance? i think i could hack away at the object mapper api a little [23:25] creationix: I would love someone to port the mongo driver to my driver api [23:25] kriszyp: JimBastard: have you tried perstore for persistence? [23:25] JimBastard: negative [23:25] creationix: try it out, looks neat [23:25] kriszyp: that's another option [23:25] JimBastard: i heard the author of perstore is a real dick head [23:25] JimBastard: naah im just kidding :-p [23:25] kriszyp: I haven't had a chance to try out node-persistence yet, but creationix code does look good [23:26] kriszyp: :) [23:26] creationix: I think the only code of real of value in node-persistence is the sqlite wrapper and maybe the pure-js postgres driver [23:26] creationix: the rest of it is very alpha [23:26] kriszyp: cool, those things definitely do have value [23:26] creationix: kriszyp: thanks [23:26] JimBastard: so in perstore can you hook into a database yet? [23:26] JimBastard: or is it just in memory? [23:27] kriszyp: well, perstore is a persistence layer and set of object store interface (based on the w3c indexed db api) implementations. [23:28] kriszyp: I originally created some for rhino, haven't done as much in node, unfortunately, but I would like to, so node-persistence may be further along [23:28] kriszyp: I started on a mongo wrapper for one of the mongo drivers.. [23:28] JimBastard: i understand, that makes sense [23:28] kriszyp: which db are you going to use? [23:28] creationix: maybe port my drivers to perstore? [23:28] kriszyp: yeah, that would be cool [23:28] Tim_Smart: mongodb is probably the best option at this stage [23:28] kriszyp: I'd love to use your sqlite and postgre stuff [23:28] creationix: I've lost interest in writing an ORM [23:28] kriszyp: heh :) [23:29] creationix: drivers yes, ORM, no [23:29] kriszyp: JimBastard: what db are you planning on using? [23:29] JimBastard: nothing is planned really, currently evaluating [23:29] JimBastard: i like mongo [23:29] kriszyp: ok :) [23:29] kriszyp: so nosql probably? [23:29] JimBastard: now im doing a combo of inmemory and flat-file json [23:29] JimBastard: defintely OODBMS [23:29] kriszyp: k [23:30] creationix: kriszyp: how does perstore fit with nosql backends? [23:30] kriszyp: yeah, that is what it is geared towards [23:30] JimBastard: im assuming you have to write an interface [23:30] kriszyp: with kind of way to wrap sql dbs if you must [23:30] JimBastard: from the perstore layer to the db [23:30] kriszyp: yeah, if no else has written one yet ;) [23:30] kriszyp: but the interface is farily simple... [23:31] JimBastard: creationix: whats up with querying in node-persitance [23:31] creationix: what do you mean? [23:31] kriszyp: here is my rough start on a mongodb store: http://github.com/kriszyp/perstore/blob/master/engines/node/lib/store/mongodb.js [23:32] JimBastard: maybe im misunderstanding, if i need to query against my dg [23:32] JimBastard: db [23:32] JimBastard: like searching for a specific value in an object [23:32] JimBastard: or a range or something [23:32] kriszyp: one the ideas with perstore is you can start with json-file based storage for dev and then move to mongo or something and plug in a different storage endpoint... I think creationix is doing the same thing in node-persistence [23:32] creationix: yep [23:33] JimBastard: yeah [23:33] gf3 has joined the channel [23:33] creationix: my driver api is fairly high-level, it's probably usable directly without an orm layer [23:33] kriszyp: right [23:33] jcrosby has joined the channel [23:33] jashkenas: kriszyp: are triangles the distinctive shape of Node code? [23:33] jashkenas: http://github.com/kriszyp/pintura/blob/master/lib/pintura.js [23:34] JimBastard: so what you guys recommend to get some data persisting easily and modularly with the ability to do some basic search [23:34] jashkenas: it's like architecture. [23:34] kriszyp: triangles, heh [23:34] JimBastard: awww isnt that acute [23:34] creationix: JimBastard, use the json backend from node-persistence [23:36] Tim_Smart: http://github.com/orlandov/node-mongodb [23:36] creationix: or that one [23:36] creationix: http://github.com/creationix/node-persistence/blob/master/lib/persistence/memory.js [23:36] Tim_Smart: orlandov: Is your mongodb working with latest node? [23:36] kriszyp: in reality, our APIs aren't that much different, creationix [23:37] creationix: that's good to hear [23:37] creationix: JimBastard: Here are persistence queries http://github.com/creationix/node-persistence/blob/3b4c1cc3eac560eade57117144d5227f0e2e5d04/test/memory/test-store-find.js [23:37] JimBastard: thanks, peeping [23:38] orlandov: Tim_Smart: it should be.... [23:38] JimBastard: so thats not jsonQuery like http://docs.persvr.org/documentation/jsonquery uses [23:38] creationix: no, never heard of that [23:38] JimBastard: i did always kinda hate jsonQuery [23:38] JimBastard: its not that great [23:38] creationix: I just made something up that worked for me [23:38] orlandov: Tim_Smart: though since the native driver showed up i'd suggest people use that instead... its much more full featured and i'm not really using mongodb seriously [23:38] JimBastard: as xQuery kinda sucked to start with [23:40] creationix: orlandov: which driver is that? [23:40] JimBastard: Tim_Smart: I'm thinking we should use node-persitance for now with whatever db we can get working [23:41] JimBastard: the api seems pretty simple, opposed to dealing with jsonquery [23:41] orlandov: creationix: http://github.com/christkv/node-mongodb-native [23:41] Tim_Smart: ok [23:42] JimBastard: creationix: would it be too much of a pain to update persistance to work with 1.29 tonight? [23:42] kriszyp: fwiw, perstore doesn't use the jsonquery format from persevere (1.0) [23:42] JimBastard: ohh [23:42] kriszyp: it was too URL-unfriendly [23:43] creationix: JimBastard: I've got to get back to work, let me know if you decide on using it and I'll update the code tonight [23:43] JimBastard: i think we have a decision if Tim_Smart concurs [23:43] Tim_Smart: node-persistence? [23:43] JimBastard: yeah [23:43] Tim_Smart: sure [23:44] JimBastard: so yeah i'll be online later creationix , if you could update that would be great. if not i might try to do it myself [23:44] JimBastard: ;-) [23:44] creationix: alright [23:52] dnolen_ has joined the channel [23:57] mattly has joined the channel [23:57] kriskowal_ has joined the channel [23:58] kriszyp_ has joined the channel