[00:01] ashb: what's the project? [00:02] Connorhd_: a mongodb driver for node [00:02] ashb: ah [00:04] Connorhd_: hopefully someone better than me will write one soon ;) [00:04] ashb: i cheated and just bound the c++ driver in a non-async manner [00:05] Connorhd_: oh, are you sharing that code? [00:06] ashb: its on github, but its of 0 use to node :) [00:06] ashb: http://github.com/ashb/mongodb-flusspferd/ [00:06] Connorhd_: ahh [00:06] Connorhd_: heretic �_� [00:06] ashb: yeah :D [00:08] JimBastard: fuck a database [00:08] JimBastard: ive got an application scope [00:08] JimBastard: lol [00:10] JimBastard: are there any good duck typing solutions for JS? [00:11] Connorhd_: JimBastard, sounds scalable :P [00:12] JimBastard: Connorhd_ im gonna do some tests for like 100,000 users and see what happens [00:12] JimBastard: i might even get balmer peak drunk and write a search algo [00:12] JimBastard: just to see what apache ab says about it [00:12] ashb: if you are just storing sessions like that its probably reasonable [00:12] JimBastard: really just application state data [00:12] JimBastard: the whole state of the app [00:12] JimBastard: like a freeze frame [00:18] bryanl has joined the channel [01:03] binary42 has joined the channel [01:08] micheil has joined the channel [01:20] eddanger has joined the channel [01:23] eddanger has joined the channel [01:50] emehrkay__ has joined the channel [01:57] emehrkay__: anyone here? [01:57] jamiew: ACTION is str8 chillin [01:57] isaacs has joined the channel [01:57] jamiew: just noticed the github redesign -- http://github.com/ry/node_chat [01:58] Booster has joined the channel [01:58] emehrkay__: any advice on getting started with node? [02:05] inimino: emehrkay__: 1) get it installed, write 'hello world' 2) ... 3) total world domination [02:05] emehrkay__: ha, im there [02:06] emehrkay__: Im just used to php/apache and am very curious [02:06] emehrkay__: im looking through picard's source right now [02:06] inimino: PHP and Apache are more mature [02:07] inimino: well, Apache is more mature [02:07] inimino: JavaScript is older than PHP not to mention better designed [02:08] emehrkay__: so node is a stand-alone server right [02:08] jamiew: have you ever used any php "accelerators"? or fast-cgi? [02:09] emehrkay__: nah [02:09] inimino: emehrkay__: it's some code that you can use to write servers [02:10] voodootikigod has joined the channel [02:13] emehrkay__: how should i go about creating a website with node [02:14] inimino: write a server that serves some pages when HTTP requests come in [02:14] inimino: the rest ... is up to you :) [02:15] emehrkay__: and writing a server is as simple as the hello world example? [02:15] Pilate: =) [02:15] emehrkay__: nice [02:15] emehrkay__: I love js, learned a lot from the mootools guys, should be able to whip somehting up pretty quickly [02:17] inimino: :) [02:22] micheil has joined the channel [02:35] tlrobinson1 has joined the channel [02:40] binary42 has joined the channel [02:41] Booster has joined the channel [02:44] isaacs: emehrkay__: i'm working on spinning node into something a little bit more robust. some other folks are playing with that sort of direction as well. [02:44] isaacs: mine is http://github.com/isaacs/simple-node-server [02:45] isaacs: there's also some jsgi stuff happening: http://github.com/isaacs/simple-node-server is pretty interesting [02:45] sudoer has joined the channel [02:46] emehrkay__: that is the same link [02:46] inimino: heh [02:46] isaacs: hahaha, cmd-C fail: http://github.com/kriszyp/jsgi-node/ [02:49] emehrkay__: interesting. I am still getting a grasp on how node works and I am still trying to figure out how to structure my app. this is exciting though [02:51] emehrkay__: the simplicity of your fileserver code is why i love js [03:11] eddanger has joined the channel [03:13] emehrkay__: is require() the only way to include a file? [03:16] inimino: emehrkay__: it's not exactly including, nor is it exactly a file, it's a module [03:16] inimino: emehrkay__: another alternative is to just read the file yourself and eval() it [03:17] emehrkay__: how would i go about reading it in? [03:17] inimino: see the posix module [03:18] emehrkay__: thanks [03:27] binary42 has joined the channel [03:32] isaacs: arg. all the ejs parsers break in so many so very trivial ways. [03:35] inimino: ejs? [03:36] isaacs: yeah, ya know, like the erb-style hello <%="world"%> thingie [03:37] isaacs: resig wrote like a 20-line parser and put it in a book, and people trust him too much, so they're going live with it. [03:37] inimino: no idea [03:37] isaacs: but like, if a misplaced linebreak can fubar your template system, it's not robust. [03:38] isaacs: it was a clever proof of concept, but that's all it was supposed to be, i think [03:50] Booster has joined the channel [03:55] jed has joined the channel [03:58] jed has left the channel [04:08] eddanger has joined the channel [04:30] voodootikigod_ has joined the channel [04:32] inimino: who wrote the path module that's in node now? [04:32] inimino: isaacs: was it you? [04:32] isaacs: inimino: i've tinkered around with it, yeah [04:32] isaacs: whats up? [04:33] isaacs: found a bg? [04:33] isaacs: *bug [04:33] inimino: I just remembered you writing one and wondered if this was it [04:33] inimino: there might be an issue or two [04:33] isaacs: awesome. got a test case? [04:34] inimino: not yet, I'm just reading the code so far [04:38] isaacs: cool. [04:38] isaacs: any feedback would be welcome, of course. [04:40] inimino: isaacs: what's normalize() supposed to with absolute paths? [04:40] isaacs: leave them absolute [04:41] isaacs: node> require("path").normalize("/foo/bar/baz") [04:41] isaacs: "/foo/bar/baz" [04:41] isaacs: node> require("path").normalize("/foo/bar/baz/../asdf") [04:41] isaacs: "/foo/bar/asdf" [04:41] inimino: "/../foo/bar/baz" ? [04:42] isaacs: hm. that seems odd. [04:42] isaacs: it'll turn that to "foo/bar/baz" because the "" will get popped off [04:42] isaacs: seems to me it should leave it on. [04:42] inimino: it should be normalized to /foo/bar/baz IMO [04:42] isaacs: well... see, this is a weird case. [04:42] isaacs: because you might want to append that onto something else. [04:42] isaacs: normalize ≠ "make absolute" [04:43] isaacs: uri.resolve will do that [04:43] isaacs: path.normalize should probably leave it as "/../foo/bar/baz" [04:43] jasonwang has joined the channel [04:44] isaacs: otoh, if you do something like require("/../foo/bar/baz") then it's effectively the same as "/foo/bar/baz" anyway [04:44] isaacs: since it's resolved against the current module path in that case. [04:44] isaacs: yeah, that's a bug. [04:45] jasonwang: hey all, i was just wondering, does node.js not support post or is my code wrong (if i change the form submit method to get, it works, but if changed to post, it outputs errors along the lines of "native runtime.js:392 throw %MakeTypeError('called_non_callable', [typeof a]); [04:45] isaacs: jasonwang: what's your code? (pastie or gist plz) [04:46] isaacs: nodejs definitely does support post. [04:46] jasonwang: mmm, a sec, let me extract the relevant bit, perhaps that will enlighten me to what is wrong [04:48] jtoy has joined the channel [04:49] n8o has joined the channel [04:51] isaacs: nice, i just got an ejs parser that doesn't bork the line numbers when you throw an error, and doesn't choke on stuff like "%>" [04:51] inimino: isaacs: FWIW Python agrees: [04:51] inimino: >>> from os.path import * [04:51] inimino: >>> normpath("/../foo/bar") [04:51] inimino: '/foo/bar' [04:51] inimino: (but >>> normpath("../foo/bar") [04:51] inimino: '../foo/bar' [04:51] isaacs: hm. that is a strong argument in favor of normalizing from /../foo to /foo [04:52] jed has joined the channel [04:52] isaacs: in any event, normalizing from /../foo to ../foo is dead wrong [04:52] jed: does anyone know why the request.uri doesn't use the uri module? [04:52] isaacs: jed: haven't gotten around to it yet [04:53] jed: isaacs: ah, cool. many thanks. [04:53] isaacs: inimino: can you add some tests for that use case and then either fix them or just send me a pull req with the test case and i'll look at it when i get to it? [04:53] isaacs: jed: also, i'd like to put that past the mailing list and ryah_away in particular to see what the feelings are about it. [04:53] jed: isaacs: what are the possible concerns? it's too heavy? [04:53] isaacs: it's a change that is somewhat a matter of taste, and it touches a lot of stuff. [04:54] isaacs: maybe no one will care, but i could see the argument to have the default request.uri be as vanilla and bland as possible, and use the uri module for more advanced cases. [04:54] isaacs: imo, it'd be better of request.uri didn't do much of anything. [04:54] jed: isaacs: ah, i see. [04:54] isaacs: like, query string parsing (which is broken anyhow) [04:54] jed: isaacs: seems that the consistency would be a bigger win. [04:55] jed: isaacs: (imho) [04:55] isaacs: sure [04:55] jed: isaacs: it's really just one regex and a loop... seems like it wouldn't be that big of a deal. [04:56] mikeal has joined the channel [04:56] isaacs: jed: that's trye [04:56] isaacs: i don't think it'll be a long bikeshedding session. [04:57] jed: isaacs: (the loop isn't even optimized... it checks length when it doesn't need to.) [04:57] isaacs: jed: true that [04:57] inimino: jed: some people want it to do more, like PHP's "foo[]" auto-array magic, etc [04:57] jed: isaacs: yeah, that stuff makes me queasy. [04:58] jed: isaacs: i think a good compromise is to make sure each member is a string. [04:58] inimino: ACTION really feels this kind of stuff belongs in a module [04:58] jed: isaacs: if people want to get fancy with objects, that's when they can bring it in themselves. [04:58] isaacs: inimino: i have a querystring commonjs module that can do that [04:58] isaacs: but request.uri should be pretty bland [04:58] isaacs: imo [04:58] inimino: agreed [04:58] isaacs: leave the querystring as a raw string [04:58] jed: yeah, i'm with you both. [04:59] jed: i would even do away with request.params. [04:59] jed: and use the uri module instead. [04:59] isaacs: there are cases where that stuff is handy, and i dont' think it'd be terrible to include the functionality in nodejs's lib, but applying it every time would be bad. [04:59] jed: net complexity change == 0 [04:59] inimino: yes [04:59] isaacs: jed: pitch it! [04:59] jed: on list? [04:59] isaacs: i'll +1 the shit out of that message. [04:59] jed: ha ha. [04:59] isaacs: yes, please. [05:00] jed: okay, i'll send a message to the list. [05:00] isaacs: thanks! [05:00] jed: one more thing. [05:00] jed: why isn't the uri lib a class? [05:00] isaacs: because javascript isn't java? [05:00] inimino: because JavaScript doesn't have classes [05:00] isaacs: ;P [05:00] jed: okay, wiseguy. [05:00] jed: seems like a constructor + a toString method would be much clearer. [05:00] isaacs: you mean, why doesn't it expose a constructor that you can use to create little baby URI objects? [05:01] jed: right. [05:01] isaacs: cuz all it'd be doing under the hood is a parse() call anyhow. [05:01] isaacs: why bother with the prototype chain? [05:01] jed: because you can toString it anywhere. [05:01] isaacs: it *would* be ncie to have a toString on the obj [05:01] inimino: ugh [05:01] isaacs: but that doesn't require classes. [05:01] inimino: because JavaScript isn't Java :) [05:01] jed: well, you know what i mean. [05:02] jed: you'd have an object with 3 methods: toString, and the two methods for relativizing. [05:02] inimino: I'm not a big fan of implicit type conversions, hence not of .toString either [05:02] jed: inimino: you chose a heck of a language to not like that stuff ;P [05:03] isaacs: jed: you can already get that with the "url" member [05:03] jed: well, no harm in adding it to the module, is there? [05:03] inimino: but you already have uri.full or whatever it is, right? [05:03] isaacs: i suggest that you add a "fancy-uri" module that does that [05:03] jed: people can use the php-ish functions or the constructor. [05:03] isaacs: (add to your own stuff, not to node) [05:04] jed: what do you mean, uri-full? [05:04] jed: one thing about having a URI object is that people can add fancy-schmancy query string parsing and all that with a simple prototype method. [05:04] isaacs: jed: you have the "url" member. myURI = require("uri").parse("http://example.com/foo/bar?baz#quux"); myURI.toString = function () { return this.url } [05:04] isaacs: there ya go [05:04] inimino: I mean there is already a property that has the full URI as a string on it [05:04] isaacs: inimino: it's "url" [05:05] jed: isaacs: yeah. basically the 0th item in the match. [05:05] inimino: surely it's not actually called "url" is it? [05:05] inimino: gah [05:05] inimino: anyway, yes [05:05] jed: oh, but it is. [05:05] isaacs: inimino: yeah. wrong, i know [05:05] isaacs: uri.url [05:05] isaacs: it's semantically horrendous [05:05] inimino: yeah, that's ... horrid [05:05] jed: toString would obviate the need for that, fyi. [05:06] jed: just as window.location.toString() == window.location.href [05:06] isaacs: jed: go for it. write it. add it to your applicatin. [05:06] jed: how about i just rewrite the uri module separately? [05:06] isaacs: jed: if it still passes all the tests, i don't care too much about it. [05:06] jed: isaacs: cool. [05:07] isaacs: ACTION is not sentimental about his code [05:07] isaacs: make test [05:10] inimino: I don't care too much either but I consider the .toString thing ugly [05:10] isaacs: the fact that there's no way (yet) in v8 to make it not iterable feels wrong to me [05:11] isaacs: inimino: also, btw, i stole that uri.url thing from narwhal, and i'm pretty sure kriskowal stole it from somewhere else. [05:11] inimino: hehe [05:13] isaacs: so... what's the best way to do an ejs parser, you think? [05:13] isaacs: i mean, i've got the parser, and it just takes a print function as an arg [05:13] isaacs: is it better to have it just return a string, or do callbacks? [05:14] jed: isaacs: you could avoid making the choice by making the callback optional, i guess. [05:14] isaacs: well, i mean, the parser compiles it to a javascript function. [05:15] isaacs: and the function takes a "print" function as an argument [05:15] jed: isaacs: i see. this would replace "push" in the resig approach? [05:15] isaacs: yeah [05:15] isaacs: also, i'm ditching the with (obj) bit [05:15] jed: isaacs: the question is what you'd then return? [05:16] isaacs: that's just wonky [05:16] jed: isaacs: so it's async? [05:16] isaacs: jed: well, that depends on what you mean by that. [05:16] jed: isaacs: or you're doing it that way to avoid buffering the result? [05:16] isaacs: yeah [05:17] isaacs: it buffers the parsed template, of course. [05:17] jed: isaacs: i see. [05:17] isaacs: not much way to get around that bit [05:17] jed: isaacs: well, if it were async, it'd be cool to return a promise when the it's done. [05:17] isaacs: but the result looks like: function parsed_my_template_ejs (print) { print("foo") } [05:18] isaacs: then you can pass that function whatever you want. [05:18] isaacs: if you pass it process.stdio.write, then it is async [05:18] isaacs: if you pass it writeError, then it's not [05:18] scudco has joined the channel [05:18] jed: isaacs: oh, so it only calls that function once with the whole result string? [05:19] isaacs: jed: no, it calls it as many times as you have html blocks or <%= "foo" %> things [05:19] jed: isaacs: sorry. that's what i thought you meant. [05:19] isaacs: jed: http://github.com/isaacs/node-playground/blob/master/ejs.js [05:20] isaacs: just a big scary state machine, converting almost-js into js [05:21] inimino: ACTION finds it neither big nor scary and is a little disappointed [05:23] jed: isaacs: hmm. i guess the return value is just a bonus then? [05:23] isaacs: inimino: true, it's not very big [05:24] isaacs: the fact that it's not a big conversion makes it easier [05:24] isaacs: i mean, i didn't do it in 7 lines, so i guess i'm not a ninja. [05:24] isaacs: i'll have to settle for code that works. [05:25] jed: well, the fact that you used the "-- >" idiom gives you decent cred with me. [05:25] jed: first time i've seen that in the wilds of javascript. [05:25] inimino: isaacs: I emailed you a little patch for the things I changed while I was reading through [05:25] isaacs: kewl [05:25] inimino: isaacs: I didn't fix any bugs, however [05:25] isaacs: hehe [05:26] inimino: just style stuff [05:26] inimino: (the indentation there is a little odd but I left it as is) [05:28] isaacs has joined the channel [05:28] inimino: jed: I just happened to write "-->" a few days ago :-) [05:28] inimino: s+=x;l2=s.length+1;while(l2-->l)tbl[l2]=[];l=s.length [05:28] inimino: hehe [05:28] jed: inimino: it's a clever trick. [05:31] inimino: it is [05:32] jed: i'm abusing the ~ unary operator in the next version of (fab) [05:33] isaacs: i like it. it's like you're sending the var to the value [05:33] isaacs: "you. go over there, to zero" [05:33] jed: ha ha. [05:33] jed: i was thinking as x approaches y. [05:33] isaacs: sure, that too [05:33] isaacs: but only if it's greater than [05:33] isaacs: while (n --> 0) takes a long time if n < 0 already [05:35] inimino: a really long time [05:36] jed: yeah, at least until it wraps around. [05:36] inimino: they don't wrap around [05:37] inimino: in JavaScript you just get stuck at -Infinity [05:37] inimino: well, while (n --> 0) would just not run at all [05:38] jed: inimino: interesting, i didn't know that. [05:39] isaacs has joined the channel [05:39] inimino: if n = Infinity, while (n --> 0) would run forever [05:39] isaacs: true that [05:40] inimino: then you could write while ( ~~n--> 0 ) instead :-) [05:41] mikeal has joined the channel [05:42] isaacs: oh, don't you actually get stuck long before Inifinity? [05:43] isaacs: at some point around 10^17 or so, you get past the point where +=1 changes the value at all. [05:44] isaacs: n = 1.23456789e+28; (n === n + 1) [05:44] isaacs: javascript is bad at math. [05:45] inimino: going up, yeah [05:45] isaacs: n = 1.23456789e+28; (n === n - 1) [05:45] isaacs: either way [05:45] isaacs: you can't get to infinity by adding 1 [05:46] isaacs: there's some deep wisdom there. [05:47] alex-desktop: positive infinity is any number in the world, plus positive infinity. it's recursive. [05:49] inimino: so you can get there, if you start from there [05:49] inimino: Deep Thoughts [05:52] isaacs: infinity is also about 1.8e+308 [05:55] isaacs: 1.79769313486232e+308 to be a little more exact [05:55] isaacs: (at least, in my v8)( [06:01] jed: isNaN( Infinity - Infinity ) // => true [06:06] scudco has joined the channel [06:13] jcrosby has joined the channel [06:14] micheil has joined the channel [06:58] jed has left the channel [07:22] jamiew: huh. anyone played around with this dbslayer adapter? http://github.com/Guille/node.dbslayer.js/ [07:26] jamiew: looks kind of interesting. nice way to get plugged into mysql quickly [07:36] scudco has joined the channel [08:36] qFox has joined the channel [08:49] isaacs: i like dbslayer cuz its name is SO metal [09:12] felixge has joined the channel [09:56] Biscuits has joined the channel [10:25] caolanm has joined the channel [10:27] caolanm: is it possible to find out the module/file which called the current function? or find out the actual path of a module? [10:27] caolanm: hmm, that's probably not clear [10:28] caolanm: but essentially I want to reference files in a module packaged as a dir, and I want to do that relative to the module's dir not the cwd [10:41] isaacs: caolanm: yes. you can look at the __filename variable. [10:41] isaacs: or you can do require("../relative/module") [10:41] isaacs: that's always relative to the current module, not necessarily the cwd [10:42] isaacs: the emerging pattern seems to be to have a single entry point, then require() modules in using relative paths. [10:46] caolanm: hi isaacs. what if I want to know the module that called a function within another module? __filename is always the file which contains the code checking __filename [10:47] caolanm: so, module A calls foo() in module B [10:47] caolanm: how can B find out that A called foo()? [10:47] isaacs: a.js: require("b").foo(); [10:47] isaacs: b.js: exports.foo = function () { ... } [10:47] isaacs: and you want b.foo() to know that it's being called from within a? [10:47] caolanm: yes [10:47] caolanm: exactly ;) [10:48] isaacs: well, it's kludgey, but you could use a stack trace. [10:48] isaacs: poke around in (new Error()).stack [10:48] isaacs: var stack = (new Error("trace")).stack.split("\n") [10:48] caolanm: that sounds interesting, I'll do that... but I'm getting the feeling this is just down to bad design ;) [10:49] caolanm: I'll try and think of a better way to do it [10:49] isaacs: yeah [10:49] caolanm: still, good to know how to do these things [10:49] isaacs: absolutely [10:49] isaacs: when something is really exceptionally wrong, the stack trace is a great help [10:49] isaacs: always throw proper error objects ^_^ [10:50] isaacs: caolanm: what are you trying to do that requires you to know what file called a given function? that smells a little like improper code intimacy. [10:51] caolanm: ever used plone? [10:51] caolanm: I work with it every day, and I think its rubbing off on me :( [10:55] isaacs: no, what's plone? [11:06] caolanm: its a CMS [11:07] isaacs: ah [11:32] spoob has joined the channel [11:41] DamZ has joined the channel [11:51] felixge has joined the channel [12:09] hornbeck has joined the channel [12:34] un0mi has joined the channel [12:43] cloudhead has joined the channel [13:15] alex-desktop has joined the channel [13:38] bryanl has joined the channel [14:00] soveran has joined the channel [14:12] spoob has joined the channel [14:12] kriszyp has joined the channel [14:17] micheil has joined the channel [14:54] JoePeck has joined the channel [14:56] davidsklar has joined the channel [14:59] Booster has joined the channel [14:59] bry has joined the channel [15:00] botanicus_ has joined the channel [15:01] charlenopires has joined the channel [15:03] micheil has joined the channel [15:05] micheil has joined the channel [15:14] hornbeck has joined the channel [15:17] jcrosby has joined the channel [15:24] pjb3 has joined the channel [15:28] felixge has joined the channel [15:30] n8o has joined the channel [15:30] alexiskander has joined the channel [16:09] binary42 has joined the channel [16:21] voodootikigod has joined the channel [16:29] jbowman has joined the channel [16:38] taf2_ has joined the channel [16:39] voodootikigod_ has joined the channel [16:42] voodootikigod__ has joined the channel [16:46] botanicus_ has joined the channel [16:48] JoePeck has joined the channel [16:58] charlenopires has joined the channel [17:14] RayMorgan has joined the channel [17:19] jamiew has joined the channel [17:26] scudco has joined the channel [17:32] aguynamedben has joined the channel [17:35] ryah: hello [17:36] davidsklar: hi! [17:37] qFox has joined the channel [17:37] Connorhd_: hi [17:41] eddanger has joined the channel [17:42] ryah: i think we need ncurses and readline bindings :) [17:43] mikeal has joined the channel [17:46] davidsklar: would make for a pleasantly snazzy repl amongst other things. [17:48] jamiew has joined the channel [17:54] malte has joined the channel [17:58] qFox has joined the channel [18:04] felixge: ryah: heya [18:04] felixge: ryah: you in the bay area now? [18:06] RayMorgan_ has joined the channel [18:08] aguynamedben has joined the channel [18:09] ryah: felixge: san diego [18:10] felixge: ryah: how is being back in the states? [18:10] felixge: ryah: you moved there, right? [18:12] mediacoder: now ryah finally gots migrationshintergrund in the states, too :-9 [18:13] felixge: mediacoder: : ) [18:13] mediacoder: iirc that was his fav. german word :-) [18:15] ryah: felixge: http://s3.amazonaws.com/four.livejournal/20091228/event_loop_killer_fix.diff [18:15] ryah: mediacoder: :) [18:15] felixge: ryah: damn, you just runied my plans to run errands, will try *now* [18:15] felixge: ACTION puts on head phones to ignore furious gf [18:18] felixge: ryah: ok, tried it. This may have reduced the symptons a bit (hard to tell as I stdev is very high), but the event loop still freezes [18:19] felixge: mostly within a few sec, sometimes a bit longer [18:19] ryah: felixge: use /dev/zero instead of /dev/random [18:20] ryah: just to make sure it's not your computer calculating random numbers which causes the freeze [18:20] felixge: ryah: nope, same with /dev/zero [18:20] ryah: hm okay [18:22] felixge: ryah_away: thanks for looking into this, I'll be around to test more diffs :) [18:26] bryanl has joined the channel [18:28] sudoer has joined the channel [18:33] elliottcable: o7 all [18:33] elliottcable: what is up? [18:33] elliottcable: go paw [18:33] elliottcable: oops [18:43] malte: hey all [18:52] jasonwang has joined the channel [18:53] jcrosby has joined the channel [19:10] RayMorgan has joined the channel [19:10] alexiskander has joined the channel [19:26] felixge_ has joined the channel [19:44] aguynamedben has joined the channel [20:18] felixge has joined the channel [20:50] sudoer: dont use mysql, use postgresql [21:02] cadorn has joined the channel [21:04] bryanl has joined the channel [21:22] jcrosby has joined the channel [21:32] botanicus_ has joined the channel [21:32] unomi has joined the channel [21:34] micheil has joined the channel [21:45] felixge: does anybody here have any experience with libeio ? [21:48] isaacs has joined the channel [21:50] grantmichaels has joined the channel [21:55] stephenlb has joined the channel [22:14] sudoer has joined the channel [22:21] richtaur has joined the channel [22:36] RayMorgan_ has joined the channel [22:49] DamZ has joined the channel