[00:04] rauchg_ has joined the channel [00:08] jakehow has joined the channel [00:12] [[zz]] has joined the channel [00:16] shaver: hrm hrm [00:16] jhelwig has joined the channel [00:18] lachlanhardy has joined the channel [00:20] TomsB has joined the channel [00:27] MikhX has joined the channel [00:33] gerred has joined the channel [00:55] agilandfast has joined the channel [01:01] c4milo has joined the channel [01:07] niemeyer has joined the channel [01:09] derferman has joined the channel [01:10] saikat has joined the channel [01:12] saikat_ has joined the channel [01:16] Druide__: hm is socket.io the way to go for comet applications? [01:20] dannycoates has joined the channel [01:21] Anti-X: no, websockets and server messages is the way to go for comet apps. socket.io is the way to go for any app that needs a cross browser compatible message stream to or from the server, regardless of purpose [01:21] Anti-X: so yes [01:21] Anti-X: probably [01:23] Anti-X: but i wouldn't refer to it as comet or ajax anymore... it just acts as a regular socket (of course with underlying challenges, but you don't see those) [01:25] boaz_ has joined the channel [01:25] c4milo1 has joined the channel [01:26] c4milo has joined the channel [01:26] AAA_awright: Druide__: For socket applications, yes, very yes [01:27] Druide__: well, based on that alot are socket applications? [01:27] Druide__: e.g. i want to build a notification for my user in my community when a new mail arrives [01:27] Druide__: i think that's best done via sockets [01:28] Anti-X: for something that simple you should probably just use xhr long polling (comet), because socket.io does a lot of extra stuff that you probably don't need [01:30] Druide__: but also based on the socket.io library? [01:30] Anti-X: no just regular xhr [01:30] Anti-X: all you want is call a url and wait for stuff to come [01:30] Druide__: kinda jep [01:30] Anti-X: and when it comes, reconnect and wait for more [01:31] hsuh has joined the channel [01:31] Druide__: 1to1 user chat should also come etc. [01:31] Anti-X: that's more like socket.io stuff yeah [01:31] Druide__: so the overhead of socket.io is too big for something like that? [01:32] Druide__: i'm new to sockets stuff, i just think it makes sense to base on socket.io to graceful switch to real websockets when most browser got that implemented [01:32] Anti-X: socket.io does not provide you with a websocket interface [01:32] Anti-X: so it wouldn't be a graceful switch [01:32] Anti-X: you'd need to rewrite [01:32] Anti-X: probably [01:33] Anti-X: unless you'd wanna keep socket.io on top of websockets for everything [01:33] hsuh_ has joined the channel [01:34] Anti-X: i'm not against you using socket.io, i'm just wondering if your app really needs it (provided that your chat thing comes later) [01:34] Druide__: well [01:34] Druide__: notifications is the first test [01:34] Druide__: then 1:1 chat [01:34] Druide__: on-site messenger [01:34] Druide__: webchat [01:35] stepheneb has joined the channel [01:35] Druide__: feedupdates etc.pp. [01:35] c4milo1 has left the channel [01:36] Anti-X: well just try and use the chat example that comes with socket.io-node [01:36] Anti-X: you'll see how easy it is [01:36] Anti-X: and if you like it just use it [01:36] Anti-X: it's better to try it for yourself than have other people tell you [01:38] Druide__: trying that [01:40] kjftw has joined the channel [01:41] chapel has joined the channel [01:41] boaz_ has joined the channel [01:46] MikhX_ has joined the channel [01:47] LowValueTarget has joined the channel [01:47] LowValueTarget has left the channel [01:51] Druide__: Anti-X what i'm asking myself also how i can connect node.js with php (using authed sessions) [01:51] Druide__: any howtos to that? [01:51] Anti-X: you want node to call php as a client? [01:52] Anti-X: http.Client [01:53] Druide__: well, i want to make sure every user only gets his notifications [01:53] marshall_law has joined the channel [01:53] Druide__: i could create a uniqid which i store into the session which also will be the channel [01:53] Druide__: something like that [01:55] pkrumins: any ideas how to clean npm cache? [01:55] pkrumins: got tired of doing it by hand. [01:59] Anti-X: Druide__, generally i'd recommend you quit using php and just use node [01:59] Anti-X: it will save you a lot of grief [01:59] Druide__: for my whole community? :) [01:59] Anti-X: yeah [01:59] Druide__: hehe funny you :) [02:00] Anti-X: not kidding [02:00] Anti-X: i learned python, and felt dirty using php.. but i had to do it. then i learned what node could do, and i still feel dirty using php, and i've decided i'm not going to touch it anymore. [02:01] c4milo: ryah: ? [02:01] Gla has joined the channel [02:03] Druide__: well, a rewrite would take months [02:03] Anti-X: ahuh [02:03] Druide__: over 200k users [02:04] Anti-X: but isnt your user data stored in the database? [02:04] Druide__: a few servers [02:04] Druide__: database, memcache etc. [02:04] Astro: http://astro.no.de/ [02:04] Astro: I've got use for my coupon :) [02:04] Druide__: a .de domain :D [02:05] Anti-X: du.de [02:05] Astro: Druide__: it's joyent's domain [02:05] Astro: no.de was already used for the nodeko [02:06] Astro: http://chaosscript.no.de/ :) [02:06] Druide__: ah k [02:08] kjftw has joined the channel [02:08] jesusabdullah: I didn't see that entry :( [02:10] Druide__: hm using the chat demo [02:10] ryan[WIN]: anyone got a palm pre [02:11] Druide__: connections show up, but no text [02:11] halfhalo: question: is there any way to return the value of async.series? [02:12] jesusabdullah: No palm here [02:12] jesusabdullah: :( [02:21] paulwe has joined the channel [02:23] Druid_ has joined the channel [02:23] AAA_awright_ has joined the channel [02:23] josefrichter_ has joined the channel [02:23] kriszyp_ has joined the channel [02:23] disqk has joined the channel [02:23] nroot7 has joined the channel [02:24] mattly has joined the channel [02:24] confoocious has joined the channel [02:25] mikew3c has joined the channel [02:27] jarfhy has joined the channel [02:27] admc has joined the channel [02:28] admc_ has joined the channel [02:28] isaacs has joined the channel [02:30] prettyrobots has joined the channel [02:31] prettyrobots: isaacs: How do I trigger verbose mode in NPM? [02:31] isaacs: prettyrobots: npm config set loglevel verbose [02:31] isaacs: prettyrobots: or --loglevel verbose [02:31] isaacs: prettyrobots: npm help config <-- lots of info there [02:31] prettyrobots: And you also have silly? [02:31] isaacs: yep [02:31] isaacs: silly is SILLY! [02:31] prettyrobots: Thank you. [02:31] isaacs: like, lots and lots of whole objects being dumped out. [02:32] isaacs: pkrumins: npm cache clean [02:32] isaacs: Aria: thanks for the issues :) [02:33] pkrumins: isaacs: thank you! [02:33] pkrumins: isaacs: btw, any ideas how to make compilation process more verbose with waf-build? [02:33] isaacs: pkrumins: not sure [02:33] pkrumins: isaacs: i can't figure out a case where `npm install pksqlite` fails but `npm link .` in pksqlite dir succeeds. [02:33] isaacs: pkrumins: you have way more waf experience thani do [02:34] isaacs: oh, that's odd. [02:34] isaacs: what error are you getting? [02:34] pkrumins: it seems to be 64-bit architecture related, i am getting that the `libmpool` that the pksqlite links to is incompatible [02:34] pkrumins: but i only get it in `npm install pksqlite` case [02:34] pkrumins: just linking executes the same build script and it succeeds with the same directory! [02:34] pkrumins: sorry [02:35] pkrumins: emm [02:35] pkrumins: and it succeeds. [02:35] pkrumins: s/with the same directory!// [02:36] pkrumins: isaacs: succeeds - http://pastebin.com/z3ztcbjx [02:37] pkrumins: isaacs: fails - http://pastebin.com/c32enjuH [02:39] pkrumins: very puzzling. [02:39] c4milo: isaacs: do you know what does Ryan want with process.detach ? where is he thinking added it ? as part of child_process ? [02:43] isaacs: c4milo: no idea [02:43] isaacs: pkrumins: yeah, tha'ts super odd [02:43] pkrumins: isaacs: i wonder if it's the absolute path thing [02:43] isaacs: pkrumins: the only difference would be that the link/manual case is doing the install in $PWD vs in $root/.npm/sqlite/version/package [02:43] pkrumins: the only difference i can see is that ld specifies absolute path to libmpool.a [02:44] isaacs: hm. could be...? [02:44] isaacs: dunno? [02:44] pkrumins: isaacs: shouldn't be [02:44] powda has joined the channel [02:44] pkrumins: would be really weird if it would [02:44] isaacs: pkrumins: what if you copy the code to that location, cd there, and then run node-waf configure install there? [02:44] isaacs: what happens then? [02:44] pkrumins: isaacs: hmm, you mean to $root/.npm/sqlite/version/package [02:45] isaacs: pkrumins: yeah [02:45] pkrumins: isaacs: let's see [02:45] danielzilla has joined the channel [02:45] isaacs: or maybe if you make clean in the other place,it might fail the same way, so at least you'd have two things breaking the same? [02:46] pkrumins: isaacs: tried that, it always succeeds in $PWD [02:47] isaacs: pkrumins: super strange. [02:47] isaacs: ACTION shrugs [02:48] isaacs: pkrumins: both your and felixge's sqlites work fine foer me [02:48] pkrumins: yeah, it works fine on 32bit machine too [02:48] pkrumins: but this is happening on a 64bit one [02:48] isaacs: ah, right [02:48] isaacs: you said that [02:48] polotek: Aria: ping [02:49] pkrumins: yep [02:49] pkrumins: isaacs: right, so i copied the files over to $root/.npm/sqlite/version/package, ran `node-waf configure build` and it succeeded there [02:49] pkrumins: isaacs: got a question [02:50] isaacs: pkrumins: ... weird? [02:50] pkrumins: isaacs: how does npm know to run `node-waf configure` and build? [02:50] polotek: yay! more memory leaks! [02:50] pkrumins: isaacs: i just noticed pksqlite didn't have "scripts" section [02:51] pkrumins: isaacs: like my node-png has `"scripts": { "install": "node-waf configure build" }` [02:51] pkrumins: but this pksqlite doesn't [02:51] isaacs: the node-waf is implied if you have a wscript [02:51] pkrumins: ah, i see. [02:51] Aria: isaacs. Sure thing! [02:52] pkrumins: isaacs: and how npm calls the node-waf, does it chdir to package dir first? [02:52] Aria: pong, polotek [02:52] pkrumins: or it somehow specifies path in the arguments of node-waf? [02:52] isaacs: pkrumins: http://github.com/isaacs/npm/blob/master/lib/utils/read-json.js#L16-21 [02:53] isaacs: pkrumins: er, that is, http://github.com/isaacs/npm/blob/master/lib/utils/read-json.js#L103-109 [02:53] pkrumins: looking [02:53] polotek: Aria: I wanted to talk about your test suit for the html5 parser [02:53] polotek: where did you get all the test cases? [02:53] isaacs: pkrumins: so, what it does to run those scripts is here: http://github.com/isaacs/npm/blob/master/lib/utils/lifecycle.js [02:54] pkrumins: also looking [02:54] pkrumins: the preinstall looks fine [02:54] pkrumins: now lifecycle. [02:54] isaacs: pkrumins: cd to the directory, set up the env so that it inherits from process.env and adds all the "npm_*" things, and then execute the script [02:54] shaver: polotek: we have a pile of html5 parser tests in the Mozilla test suite, if you want to dig at them [02:55] isaacs: pkrumins: maybe there's an env that's confounding things? that's all i can think o [02:55] isaacs: f [02:55] Aria: polotek. They're from the ruby html5 library. [02:55] isaacs: pkrumins: but all the envs it adds are prefixed with npm_ so that'd be really odd [02:55] pkrumins: isaacs: i got some, like LDFLAGS and such. [02:55] pkrumins: but those are inherited, right? [02:55] pkrumins: should be, otherwise it would fail in $PWD. [02:55] polotek: I want to have a comprehensive test suite for libxmljs [02:56] polotek: right now I'm only concerned about xml [02:56] shaver: libxml2 likely has one [02:56] isaacs: pkrumins: yeah [02:56] polotek: shaver: yeah I'm looking into that [02:56] polotek: but any other sources would also be good [02:56] isaacs: pkrumins: http://github.com/isaacs/npm/blob/master/lib/utils/lifecycle.js#L80-110 [02:56] shaver: we probably have one too, as with expat [02:57] isaacs: pkrumins: that does the following: shallow-copy process.env, walk through all the object members adding npm_package_foo for package fields, and npm_config_foo for config settings [02:58] pkrumins: looks good. [02:59] isaacs: yeah... so... that's why i'm confused. [02:59] banjiewen has joined the channel [03:00] dipser_ has joined the channel [03:06] LFabien has joined the channel [03:07] kjftw has joined the channel [03:10] boaz_ has joined the channel [03:13] overra has joined the channel [03:17] hsuh has joined the channel [03:20] Yuffster has joined the channel [03:22] siculars has joined the channel [03:29] isaacs: hah. yui3-gallery@2010.09.15 [03:29] isaacs: i suppose YYYY.MM.DD *is* a technically valid semver [03:29] isaacs: just a very large one :) [03:32] pkrumins: isaacs: does `npm link .` only create symlinks? [03:32] pkrumins: somehow one file is getting lost [03:33] isaacs: pkrumins: it just creates a symlink for the "package" folder. [03:33] isaacs: pkrumins: but otherwise, it does a "normal" build. [03:33] Kami_ has joined the channel [03:33] isaacs: pkrumins: ie, linking the modules, dependents, etc [03:33] pkrumins: i see [03:39] shaver: OK, I've written this thing like 5 times now, this time for *sure* I have the scheduling semantics right [03:41] Aria: Oh, ew. I just discovered some serious HTML5-DOM impedance mismatch in Firefox 4 [03:41] powda has left the channel [03:42] shaver: tell me more [03:43] Aria: foo.innerHTML='
' [03:44] Aria: creates an attribute node that can't be copied programatically, since ; isn't a valid attribute name [03:44] shaver: interesting [03:45] shaver: attribute nodes are horrible anyway [03:45] shaver: but I will pass that on to our HTML5 parser dude [03:45] kentaur has joined the channel [03:48] Aria: Oh, totally. It's a corner of the DOM that is both horrible and gets no love. [03:48] Aria: Also, tmpvar's jsdom does exactly what Firefox does [03:49] shaver: it might be that it's what HTML5 requires [03:49] Aria: I'll have to go dig into the HTML5 DOM stuff [03:49] shaver: (our HTML5 parser was generated in large part from the code for the HTML5 validator) [03:51] Aria: (yeah. The spec allows ; as an attribute name) [03:51] Aria: (But the DOM ... might leave that undefined) [03:56] bradleymeck has joined the channel [03:56] Aria: It sure seems to leave it undefined [03:59] shaver: the DOM spec isn't nearly as carefully written as the HTML5 parsing spec, IMO [04:00] shaver: hrm [04:00] kjftw has joined the channel [04:00] Aria: Oh, for sure. [04:00] Aria: It's a lot of referring to prior documents sloppily [04:01] Aria: The parsing spec is all-new, all-careful. [04:01] bradleymeck: hehe [04:01] shaver: I wonder why node always has 611M VIRT as soon as I start it here [04:02] derferman has joined the channel [04:06] jacobolus has joined the channel [04:06] Yuffster has joined the channel [04:08] pkrumins: isaacs: very weird, for some reason I am getting a copy of directory that I `npm link .` [04:09] isaacs: pkrumins: well, it symlinks the "npm link"ed directory to {root}/.npm/name/version/package [04:09] ekidd has joined the channel [04:09] isaacs: pkrumins: name/version-1-LINK-{hash}/ actually [04:10] isaacs: pkrumins: that's also where it unpacks the tarball [04:10] pkrumins: oh hmm [04:10] isaacs: pkrumins: everything else is the same as with an installed package. [04:10] pkrumins: oh, here it is: package -> /home/zigzap/node-packages/node-pksqlite [04:11] pkrumins: i did `npm link .` in that directory [04:11] isaacs: right [04:11] cognominal has joined the channel [04:11] pkrumins: oh, but for some reason I also have `name/version/package` (without -LINK) [04:12] pkrumins: and that contains the copy of data [04:12] isaacs: pkrumins: right, because that's the regular "npm install"ed one [04:12] sechrist: rofl [04:12] sechrist: the settimeout was taken out of the example [04:12] pkrumins: isaacs, i thought i had uninstalled it [04:12] pkrumins: isaacs: let me run it fresh again [04:12] isaacs: pkrumins: apparently not? [04:12] pkrumins: i thought for some reson i was getting both [04:13] pkrumins: isaacs: verifying [04:13] isaacs: sechrist: yeah, it led to the popular misconception that node takes 2 seconds to serve up hello world [04:13] sechrist: ROFL [04:13] isaacs: sechrist: folks were like I THOT IT WAS FAST!!!! [04:13] isaacs: rather than explain, we just fixed the example. [04:14] sechrist: well a lot of people hearing the node buzz probably haven't worked with javascript [04:14] isaacs: at least twice, there were people in the mailing list like "why does it take 2 seconds to serve any requests?" "what code?" "the hello world example" "the one with the 2 second timeout in it?" "... oh yeah" [04:14] pkrumins: isaacs: you're right [04:14] sechrist: or they're script kiddie/newbies that can't read [04:14] pkrumins: isaacs: i apparently hadn't [04:14] Astro: don't make reading abilities a requirement for coding! [04:15] isaacs: Astro: exactly! [04:15] sechrist: I'm waiting to hear about people learning to program in node [04:15] sechrist: that'll be really cool [04:15] polotek: anybody know what kind of occurrence would set all properties of a C struct to -1 [04:15] isaacs: that's why the new hello world program is really fast. [04:15] polotek: including pointers [04:15] sechrist: poignant guide to node [04:15] Astro: polotek: 0xFF? [04:15] isaacs: sechrist: i dunno. i was thinking more like The Noders Handboox. [04:15] polotek: Astro: yeah [04:15] sechrist: well something to that effect [04:15] isaacs: sechrist: javascripts aren't poets, we're anarchists. [04:15] sechrist: anarchists HEHE [04:16] shaver: burn the state. [04:16] isaacs: s/x/k [04:16] polotek: Sorry I mean my struct properties are being set to -1 and I'm trying to figure out why [04:16] sechrist: setInterval(nukeSomething,1000); [04:16] sechrist: I learned to program in some weird obscure scripting language for a video game engine [04:17] sechrist: so I assume there will be 10-13 year olds learning to code in node [04:17] shaver: ACTION adored his 64 [04:18] Astro: everybody who learned with BASIC is doomed according to Djikstra [04:19] shaver: I'm pretty comfortable with being doomed [04:21] Aria: I actually learned on Basic. [04:21] Aria: But I also escaped early. [04:24] sechrist: I need to get moderately proficient in erlang [04:24] sechrist: I feel like I need to learn scala or erlang or something [04:26] isaacs: ACTION <-- doomed according to Djikstra [04:34] emmanueloga has joined the channel [04:35] silentrob has joined the channel [04:42] jsilver has joined the channel [04:45] emmanueloga has joined the channel [04:47] polotek has left the channel [04:47] derferman has joined the channel [04:49] ivong has joined the channel [04:52] Egbert9e9 has joined the channel [05:04] shaver: that's weird [05:04] shaver: I wonder why this file is corrupt [05:05] shaver: anyone see anything wrong with this httpClient response handler that wants to stream the data right to disk? [05:05] shaver: http://gist.github.com/598632 [05:07] MikhX has joined the channel [05:08] MikhX_ has joined the channel [05:09] amerine has joined the channel [05:10] amerine has joined the channel [05:11] jchris has joined the channel [05:19] josefrichter_ has joined the channel [05:23] sudoer has joined the channel [05:30] MikhX_ has joined the channel [05:34] prettyrobots has left the channel [05:36] ph^ has joined the channel [05:44] mikew3c has joined the channel [05:46] jtoy has joined the channel [05:46] ivong has joined the channel [05:54] path[l] has joined the channel [05:59] jtoy has joined the channel [06:03] GriffenJBS has joined the channel [06:07] derbumi has joined the channel [06:07] saikat has joined the channel [06:15] Aria: Yarg. V8's strings are so slow in places. [06:15] silentrob has joined the channel [06:16] hannesw has joined the channel [06:16] konobi: yup [06:18] mikew3c: Aria, konobi - slow in comparison to other JS engines? [06:18] Aria: Some, yes [06:19] matjas has joined the channel [06:19] mikew3c: to JSC? [06:19] Aria: And especially compared to Ruby and to C [06:19] temp01 has joined the channel [06:19] mikew3c: well yeah [06:19] bpot has joined the channel [06:19] Aria: Very slow to allocate. Very slow to slice [06:20] Anti-X: define slow [06:20] Anti-X: are you rewriting the world in js? [06:20] shaver: surprised it's slow to allocate, given their bump allocator [06:20] Aria: 15000ms to run my html5 test suite on this machine [06:20] Aria: And it's things like utf8slice that really kill it [06:21] konobi: utf8 is hard [06:21] konobi: well... unicode [06:22] Anti-X: variable length characters is hard [06:23] Aria: Not THAT hard [06:23] Anti-X: i bet utf16 would be a hoot and a half in comparison [06:23] dgathright has joined the channel [06:23] Aria: I just hate that it insists on storing things as wchars, rather than just exposing the API as if it did [06:23] Aria: I mean, I get that encodings are hard [06:24] Aria: Ruby broke it royally in 1.9 [06:24] auser has left the channel [06:24] Aria: But this is crazy, and seems to make things slower [06:24] shaver: Aria: does your test rely on a lot of node stuff? [06:24] shaver: Aria: or is it pretty much just straight JS? [06:24] Aria: It's all async, but EventEmitter's pretty easy to make go [06:25] shaver: mmm [06:25] shaver: have an URL for it? [06:25] Aria: http://github.com/aredridel/html5 [06:25] Aria: test.js is the entrypoint to the test suite [06:26] shaver: great, thanks [06:32] daglees has joined the channel [06:37] ph^ has joined the channel [06:39] ironyboy has joined the channel [06:41] cognominal has joined the channel [06:41] marshall_law has joined the channel [06:42] matjas has joined the channel [06:49] kjeldahl has joined the channel [06:49] overra has joined the channel [06:51] rnewson has joined the channel [06:51] rnewson has joined the channel [06:52] tobiassjosten has joined the channel [06:54] huyhong has joined the channel [06:54] amerine has joined the channel [06:55] huyhong has left the channel [06:56] saikat has joined the channel [07:00] kjftw has joined the channel [07:00] TomY has joined the channel [07:04] sudoer has joined the channel [07:05] sugardave has joined the channel [07:05] FuzzYspo0N has joined the channel [07:07] ivong has joined the channel [07:10] AAA_awright: Vows is awesome [07:10] AAA_awright: There I said it [07:12] adambeynon has joined the channel [07:12] jetienne has joined the channel [07:16] konobi: anyone having fun with the new no.de stuff? [07:17] FuzzYspo0N: such as? [07:17] FuzzYspo0N: no.de is always fun ^.^ [07:18] Nohryb has joined the channel [07:18] aubergine has joined the channel [07:19] sveimac has joined the channel [07:19] konobi: FuzzYspo0N: *shrug* just looking for feedback [07:19] FuzzYspo0N: konobi: i meant on anything specific? [07:20] zith_: i dont understand no.de :( [07:21] Aria: It's a hosting platform. [07:21] zith_: but how do i use it? [07:21] Aria: Simple, straightforward, focused [07:21] Aria: Sign up for an account, push code to it. [07:22] Aria: push a server.js [07:22] zith_: oh, never mind, worked better this time [07:22] zith_: last time i couldnt log in [07:22] zith_: to the smartmachine, that is [07:23] konobi: lots of people didn't use the correct username [07:23] konobi: or used the wrong key [07:24] konobi: once you push your changes, no.de will restart your process and manage it [07:24] FuzzYspo0N: oh oh i see. [07:24] FuzzYspo0N: i misread konobi. [07:24] Aria: Whoa. I think I may have found a way to speed up the html5 parser some. I'm not positive yet, but I think having a bunch of methods on an object, and changing properties must make V8 recalculate hidden classes or something ... and I was doing that for every state change [07:24] zith_: maybe i did too [07:24] konobi: if it exits after push, it'll rollback to the last working version [07:25] zith_: for some reason my ssh client just froze [07:25] zith_: maybe i wasnt patient enough [07:25] confoocious has joined the channel [07:26] FuzzYspo0N: haha, is the ssh key on the sign up page a deterrent for noobs [07:26] konobi: nope, it's really the right way to do it [07:26] FuzzYspo0N: :) [07:26] FuzzYspo0N: i was keen to try joyent so im glad its public now [07:26] konobi: encouraging good behaviour isn't a bad thing... just sometimes confusing =0) [07:27] zith_: how come ssh keys are the right way to do it? [07:27] konobi: well, feel free to drop us comments [07:27] Aria: zith_: have you ever seen what people pick as passwords? [07:28] konobi: dictionary attacks, etc. [07:28] Aria: (and how well they maintain them?) [07:28] zith_: i see [07:28] konobi: ssh keys bypass that effect and are essentially far more secure passwords [07:29] zith_: i just figure the chance of someone stealing my laptop is bigger than someone figuring out my password [07:29] zith_: but maybe that's why i use a key phrase [07:29] konobi: and developers aren't sysadmins, security specialists or the like [07:30] konobi: ACTION is from a computer security background... so just paranoid [07:30] FuzzYspo0N: konobi: is the api love thing returning "errors": "page not found" ? [07:30] Aria: ACTION runs an ISP and has dictionary attacks actually SUCCEED on a regular basis [07:31] konobi: FuzzYspo0N: you're probably not using a username/password [07:31] FuzzYspo0N: konobi: the secret is from my ssh key? [07:31] konobi: no, your joyent account [07:31] konobi: and make sure you use https://api.no.de [07:31] FuzzYspo0N: yea, i copy pasted [07:31] FuzzYspo0N: from the link [07:32] FuzzYspo0N: hmm, i still get page not found. [07:32] konobi: what command are you using? [07:33] FuzzYspo0N: curl -k https://api.no.de/. -X POST -u fuzzyspo0n:* [07:33] FuzzYspo0N: as suggested by the signup page. [07:33] konobi: try https://api.no.de/heart [07:33] Aria: ., not heart? [07:33] FuzzYspo0N: oh i see the heart disappeared [07:33] FuzzYspo0N: when i pasted >.> [07:34] FuzzYspo0N: "message": "Thanks for your interest, you are added to the queue" [07:34] FuzzYspo0N: cool [07:34] zith_: because no one copy and pastes with love [07:34] konobi: there you go [07:34] FuzzYspo0N: thanks konobi. [07:34] konobi: looks like your terminal has some issues with unicode characters [07:35] galaxywatcher has joined the channel [07:35] FuzzYspo0N: its just putty, so i guess so [07:35] Aria: Yeah, putty defaults to 8-bit only [07:35] nroot7 has joined the channel [07:35] Aria: Ngiht, all [07:35] FuzzYspo0N: yea, i changed it now [07:35] FuzzYspo0N: later [07:35] zith_: i hate that putty default. [07:43] TomsB has joined the channel [07:43] rikarends has joined the channel [07:48] sahazel has joined the channel [07:49] mbrochh has joined the channel [07:50] mbrochh has joined the channel [07:51] ooooPsss has joined the channel [07:58] nsm has joined the channel [08:01] Twelve-60 has joined the channel [08:02] javajunky has joined the channel [08:07] viktors has joined the channel [08:07] matjas has joined the channel [08:13] stalled has joined the channel [08:15] mbrochh]2 has joined the channel [08:18] dgathright has joined the channel [08:21] aubergine has joined the channel [08:22] delapouite has joined the channel [08:23] caolanm has joined the channel [08:26] path[l] has joined the channel [08:37] ntelford has joined the channel [08:39] SamuraiJack_ has joined the channel [08:40] jetienne: i would like a html5 LocalStorage api on node... is there something like this already ? [08:41] micheil: how so? [08:42] disq has joined the channel [08:42] konobi: jetienne: you could always write a wrapper around one of the data storage modules [08:43] q_no has joined the channel [08:43] micheil: jetienne: more information please. [08:43] micheil: i may have what you're looking for. [08:43] ivanfi has joined the channel [08:44] karboh has joined the channel [08:44] jetienne: micheil: ok suppose i got client code which use html5 localstorage. i would like to run it on the server in node. without modifying the code if possible [08:45] micheil: jetienne: can you Gist it? [08:45] jetienne: micheil: the code using localstorage ? euhh nope this is rather large. but the use is normal html5 calls [08:46] micheil: jetienne: I need an example [08:46] micheil: that's all. [08:47] jetienne: micheil: i dont understand. [08:48] jetienne: maybe im not clear...; no coffe yet :( going for it [08:48] micheil: I need an example of how you're using it; I've not done much with localStorage [08:48] micheil: but I think I know how to provide a solution [08:48] konobi: codebase.es/test/webstorage.html [08:56] herbySk has joined the channel [08:56] Throlkim has joined the channel [08:59] lachlanhardy has joined the channel [09:00] tk has joined the channel [09:02] aubergine has joined the channel [09:03] rnewson has joined the channel [09:03] xla has joined the channel [09:04] rnewson has joined the channel [09:05] micheil: digitalspaghetti: ping [09:07] slaskis has joined the channel [09:08] niemeyer has joined the channel [09:10] nsm has joined the channel [09:11] digitalspaghetti: micheil: hey [09:12] micheil: howdy [09:12] digitalspaghetti: btw i took the time to look at proper map/reduce stuff for my app on couchdb and you were right :D [09:12] micheil: digitalspaghetti: want to collaborate a bit? http://github.com/tanepiper/node-simplesmtp/blob/master/lib/simplesmtp.js [09:12] digitalspaghetti: hell of a lot easier to do stuff [09:12] micheil: digitalspaghetti: which app? [09:12] digitalspaghetti: commercial app i'm building [09:12] digitalspaghetti: a lot of heavy ExtJS stuff [09:13] micheil: digitalspaghetti: no, I just don't recall telling you anything about map/reduce [09:13] digitalspaghetti: by taking Django out, and sitting it on top of nodejs + couchdb, i'm able to allow ExtJS forms to dictate the data strcuture [09:14] digitalspaghetti: oh wait, your right [09:14] digitalspaghetti: it was mikeal [09:14] micheil: haha [09:14] digitalspaghetti: :D [09:14] micheil: whoops. [09:14] micheil: :P [09:14] micheil: micheil = miksago, 'member? [09:14] digitalspaghetti: what do you need with the simplesmtp stuff? [09:15] micheil: well, I was working on node-smtp-client [09:15] micheil: I'm going to do more work on it soon. [09:15] Gruni has joined the channel [09:15] micheil: So; I was wondering if you'd like to collaborate with me? [09:15] digitalspaghetti: tbh i don't have a lot of time just now, i'm pushed for deadlines on my work [09:15] micheil: ah, okay. [09:15] digitalspaghetti: maybe in a few weeks one we get these features pushed out [09:15] micheil: not to worry :) [09:19] konobi: micheil: http://github.com/wayfaringrob/nodevite [09:19] micheil: ? [09:19] konobi: smtp and mime stuff there [09:22] konobi: (with tests, etc.) [09:23] micheil: konobi: this is the revamping of a library that already exists :) [09:23] matjas has joined the channel [09:23] micheil: someone's already done a lot of work on a fork of a fork, but I'm going to be rewriting from clean slate [09:24] konobi: micheil: ah... wayfaringrob's a good bloke on the smtp/mime side [09:24] micheil: konobi: I've read the specs :) [09:25] micheil: studied them for three months last summer. [09:25] mikew3c has joined the channel [09:25] konobi: micheil: he's been writing smtp/mime inspection tools in c/c++/perl for the last 3 or so years [09:26] konobi: so yeah, good bloke... friend of mine [09:26] aliem has joined the channel [09:27] konobi: smtp is a pain... specs are fine... it's just dealing with all the different random implementations [09:28] konobi: and all the spamming bastards mean that you have to think outside the box when it comes to handling connections/throttling/etc [09:28] konobi: mkay... I'll shutup... I left that business for a reason [09:28] konobi: =0) [09:34] agnat has joined the channel [09:35] aubergine has joined the channel [09:38] virtuo has joined the channel [09:41] karboh: Anybody know of a http client with cookie support? [09:44] karboh: wouldn't it be reasonable to include it (optionally) in http.Client? [09:46] slaskis: karboh: isn't is already "supported" as it's a header in the response/request? [09:47] karboh: slaskis::-) well, yes there's a header, but it won't send the cookie when I make the next request from the same client [09:47] delapouite: karboh : use the Connect middleware [09:47] delapouite: http://github.com/senchalabs/connect [09:47] karboh: delapouite: I'm talking about a http client here, not a server [09:48] delapouite: oh sorry [09:48] delapouite: read your question too quickly [09:48] karboh: I'm writing a web crawler [09:49] karboh: when crawling sites behind authentication it would be nice to keep the cookies [09:51] karboh: is it just me or has the error reporting from node gotten worse? [09:52] stagas has joined the channel [09:52] Nohryb: Are the videos of this weekend's jsconf.eu @ Berlin online anywhere ? [09:52] karboh: lots of: "node.js: 63 throw e" [09:53] karboh: Nohryb: I think it'll take a while before the editing is done [09:53] AAA_awright has joined the channel [09:53] karboh: I have also looked for them : P [09:53] adambeynon has joined the channel [09:54] stride: took them a few weeks last time [09:54] Nohryb: ok. thanks. http://jsconfeu.blip.tv/ has yesteryear's :-/ [09:56] AAA_awright: I can't imagine cookie support in http.Client, but there should be a library for that, however... I would think [09:56] AAA_awright: Should be trivial to make if not [09:56] jetienne: http://www.channels.com/autosubscribe?feed_url=http://jsconfeu.blip.tv/rss <- this ui seems easier to get jsconf video [09:58] Nohryb: Which are those patterns to a "single stack world" ? [09:58] konobi: dannycoates: lo [09:59] mpoz2 has joined the channel [10:05] Nohryb: jetienne: thanks [10:06] lachlanhardy has joined the channel [10:09] berset has joined the channel [10:14] mape: Is there any way to get all keys in a redit db? [10:14] mape: .. redis [10:15] konobi: KEYS * ? [10:16] mape: k [10:17] konobi: KEYS '*' perhaps [10:22] Egbert9e9 has joined the channel [10:22] sechrist: so like how many redis drivers are there now? [10:23] sechrist: last week I saw like 3 people say they were working on new node redis clients [10:23] sechrist: >.< [10:25] hdon has joined the channel [10:25] stagas: dnode looks nice. anyone used it yet? [10:30] virtuo has joined the channel [10:32] micheil: konobi: I should rephrase what I'm building: node-smtp-client [10:32] micheil: the server's someone else. [10:38] sideshowcoder has joined the channel [10:40] stride: stagas: used it for IPC between two node processes once, really neat [10:41] stagas: stride: yeah that's what I had in mind too, but now I'm seeing it can really simplify client->server calls too [10:42] stride: who needed http client cookies? http://github.com/billywhizz/node-httpclient seems to support them / has the code for a nice implementation [10:42] stride: stagas: true, don't have a usecase for that but the socket.io integration seemed great as well [10:43] jacobolus has joined the channel [10:44] Egbert9e9 has joined the channel [10:47] stagas: it does events also. I'm gonna use it everywhere! :P [10:48] karboh: stride: thanks, I just did a crappy implementation of http client cookies myself, I'll have a look at node-httpclient instead [10:49] rnewson has joined the channel [10:50] ironfroggy_ has joined the channel [10:52] path[l] has joined the channel [10:53] admc: so I have a question about node.js - browser architecture [10:54] admc: if I make an ajax call from my web app, which calls a non blocking API [10:54] admc: what is the correct way to get that data back to the browser whenever the call returns? [10:55] ironfroggy_: you write to the response object, like any other request is handled. [10:55] ironfroggy_: and you end the response when you're done. [10:55] admc: interesting, it's going to take some time to get my brain around doing it this way :) [10:56] kennon has joined the channel [10:57] kennon: Howdy, anyone here who has used Node.xmlrpc-c ? [10:57] kennon: or who knows what event i should bind to on httpclient to get the full response data? like 'data' but not just a chunk, the entire response data ... [11:01] slaskis: kennon: you save the chunks into to a bit chunk and on "end" you have it all... [11:01] karboh: kennon: you just buffer the data yourself if you want to handle the whole response body [11:02] slaskis: *big [11:03] kennon: Thanks! I had just figured it out. node.xmlrpc-c works but it tries to do the xml parsing on the data event, which is crappy since at least with what I'm working on the xml comes in string chunks that aren't alone valid xml [11:05] fermion has joined the channel [11:05] stepheneb has joined the channel [11:07] TomsB has joined the channel [11:07] stagas has joined the channel [11:08] hassox has joined the channel [11:09] omarkj has joined the channel [11:12] zorzar has joined the channel [11:14] evanpro has joined the channel [11:20] ThePub has joined the channel [11:22] rauchg_ has joined the channel [11:23] ekidd has joined the channel [11:29] satori_ has joined the channel [11:33] galaxywatcher has joined the channel [11:42] wakawaka has joined the channel [11:45] DozyPieman has joined the channel [11:50] viktors: hi. I don't want to start a flamewar, but what's the current best ajax toolkit for displaying data which occasionally changes, and which doesn't support old browsers? [11:51] stagas: ? usually ppl want to support old browsers [11:51] stagas: jquery [11:51] viktors: it's only for intranet and iphone/ipad/android [11:51] Anti-X: i believe jquery supports iphopadroid [11:52] Anti-X: hey stagas have you had the chance to test out htmlaudio yet? [11:52] Anti-X: i believe you were one of the people in that discussion [11:54] stagas: Anti-X: yes it worked on a test page but I didn't work on my app. I have some kind of conflict rare bug that I'm too bored to trace [11:54] stagas: so I rolled back to flash :P [11:54] Anti-X: haha [11:54] Anti-X: way to resign [11:54] Anti-X: flash >_< [11:55] c4milo has joined the channel [11:55] JimBastard: does socket.io work on iphone? [11:56] Anti-X: yes [11:56] Anti-X: at least they claim it does [11:56] JimBastard: i was reading through the code the other day, are there no unit tests? [11:57] Anti-X: it would be rather difficult, seeing as no one machine supports all the transports, and emulating them would sort of defeat the purpose of actually testing them [11:57] Anti-X: since there are quirks related to each one that decides how socket.io should behave [11:57] Anti-X: and so on [11:58] Anti-X: also, unit testing isn't everything! [11:59] JimBastard: i guess you just run the demo and hope [12:00] mape: Anyone have experience with the redis modules for node? Are they reliable? [12:00] d0k has joined the channel [12:01] hdon: anyone know why ETIMEDOUT is throwing an exception in IOWatcher.callback ? [12:05] stagas: do you know a way to store an about 1 million entries ~1kb/each json array without running out of memory / crashing? [12:05] hdon: what's a JSON array? [12:05] hdon: do you mean an array serialized to JSON? [12:06] stagas: yeah ~1 million objects [12:06] disq: JimBastard: looks like it does [12:06] stagas: 1kb each [12:06] JimBastard: ? [12:06] JimBastard: stagas: isnt there a v8 limit there [12:07] stagas: don't know [12:08] disq: JimBastard: about iphone support in socket.io. it worked for me for my little app anyway, and they claim it works, so it works but i guess you should test your case [12:08] stagas: a redis list maybe? [12:08] JimBastard: http://code.google.com/p/v8/issues/detail?id=847 [12:08] JimBastard: stagas: yeah [12:08] satori_ has joined the channel [12:08] JimBastard: ry mentioned the ram limit in his jsconf talk [12:08] JimBastard: dunno if thats related [12:09] lachlanhardy has joined the channel [12:09] ntelford has joined the channel [12:11] femtoo has joined the channel [12:12] stagas: I wasn't going to load the whole json in memory and storing it afterwards.. it would be 1gig of ram if v8 uses 1 byte per 1 json char that is. I'm looking for a more elegant way :) [12:12] stagas: I'm pretty sure it'll crash if I try that [12:12] Anti-X: 1 million 1 kb objects would be just about 1 gig? [12:13] Anti-X: and why is it 1 kb per entry? [12:13] Anti-X: that's a lot [12:13] stagas: it has a lot of data. I want to clone a db from an unrestricted api :) [12:13] stagas: but I'm kind. I asked them for a tarball [12:13] stride: can't you just do it in chunks? [12:14] Anti-X: that --^ [12:14] stagas: stride: and what to do with the chunks? append them in a file? [12:14] Anti-X: put them in the db [12:16] stagas: that's what I was asking... I'll probably use a redis set or something [12:16] mtodd has joined the channel [12:16] stride: don't know, store them somewhere [12:17] stride: thought you needed the whole thing anyway because you said you'd "dump" it [12:17] stagas: thanks [12:19] sveimac has joined the channel [12:19] niemeyer has joined the channel [12:21] rauchg_ has joined the channel [12:24] kjeldahl_ has joined the channel [12:30] JimBastard: stagas: actually putting a million records into memory seems a bit far fetched [12:30] JimBastard: the use case for needing that i would think is kinda rare [12:30] JimBastard: there is a probaly a better solution that involves breaking the task down into smaller pieces [12:33] stagas: JimBastard: yeah I'm thinking since I'll be downloading it in pages anyway, I might as well parse the parts I need and store them in a db [12:33] EyePulp has joined the channel [12:38] stagas: the part that sucks is that I managed to build a scraper for their crappy rss data, just to realize today they had recently launched a json api. but that's cool now I can copy the whole db :P [12:38] JimBastard: lol [12:38] JimBastard: usually the best approach to email them first [12:39] JimBastard: "im going to scrape your site, wanna be friends?" [12:39] stagas: I asked for a tarball on their mailing list [12:39] JimBastard: "we can do this the easy way, or the multithreaded way" [12:39] stagas: lol [12:39] JimBastard: ive had people approach me to steal real estate listing many times [12:40] JimBastard: i usually tell them to gtfo [12:40] JimBastard: fucking brokers [12:40] kriszyp_ has joined the channel [12:40] JimBastard: had real estate listing sites approach me for anti scraping software too [12:40] JimBastard: thats a longer conversations, but usually ends in gtfo [12:42] JimBastard: fuuuuuuucckkkkkk [12:42] JimBastard: message: 'Parse Error', stack: 'Error: Parse Error\n at Client.ondata (http:899:22)\n at IOWatcher.callback (net:494:29)\n at node.js:764:9', bytesParsed: 1420 [12:42] JimBastard: WHHYYYYYYYY [12:49] dnolen has joined the channel [12:53] c4milo: Marak , did you sniff that traffic ? [12:53] JimBastard: c4milo: you mean the request that caused the bomb? [12:53] JimBastard: no [12:53] c4milo: yes [12:53] c4milo: do that [12:53] JimBastard: i suppose thats the next step [12:53] JimBastard: its just super annonying because it happens like < once a day [12:53] JimBastard: someone was starting to help me on the mailing list to understand how to send a malformed request, but im still not groking it [12:54] c4milo: sniff that traffic and then we are going to know what ass kick :P [12:54] JimBastard: i really want to have a way to reproduce this [12:54] JimBastard: its a lot of data [12:54] JimBastard: but yeah, its possible [12:54] c4milo: perhaps using node_pcap [12:54] c4milo: or wireshark [12:55] JimBastard: its like, 1 out of 20,000 requests [12:55] JimBastard: maybe more [12:55] c4milo: :s [12:55] JimBastard: i could output the whole req into the logs [12:55] JimBastard: and then just wait till it crashes again and backtrace [12:56] EyePulp has joined the channel [12:56] JimBastard: indexzero swears he has error handlers on all the http.Client's but i dont believe him [12:56] c4milo: ahaha [12:56] JimBastard: i gotta assume its either an uncaught error, or a bug in core [12:57] JimBastard: c4milo: you know about this? cat malformed-response.txt | nc -l localhost 8080 [12:57] c4milo: you have the requests in your logs ? you may use that with the http parser to see what happen, is another choice [12:57] JimBastard: can i just put anything inside that txt file to caus a parse error? [12:57] c4milo: yes [12:58] c4milo: oh wait [12:58] JimBastard: im gonna start up BM locally and try [12:58] stride: hmm, anybody tried a http fuzzer on the node implementation yet? [12:59] JimBastard: yeah.... [12:59] JimBastard: so like, the http parser should fail-fast... [13:00] JimBastard: but i still think maybe a very specific shaped packet is causing an issue [13:00] SamuraiJack_ has joined the channel [13:03] evanpro has joined the channel [13:04] JimBastard: aight, running locally now...trying fuubar request [13:06] JimBastard: hrmmm c4milo , i try running that line but it just hangs. do you have any clue? ive never tried to pipe stuff to nc before [13:07] c4milo: wireshark could be more useful [13:07] JimBastard: can wireshark send packets? [13:08] JimBastard: i thought it only inspected them [13:08] c4milo: nop [13:08] JimBastard: i need to send malformed requests [13:08] ekidd has joined the channel [13:08] c4milo: hum [13:08] JimBastard: maybe i could use node's tcp module and just bork what i .write [13:09] JimBastard: that cat | nc should work though? [13:09] c4milo: I think you can use node_pcap to inject malformed packets [13:09] c4milo: plus node's tcp [13:10] c4milo: but it takes time, I would try first with wireshark monitoring packets [13:10] rcy has joined the channel [13:11] c4milo: using the requests you have in your log [13:11] JimBastard: yeah, thats step 2 [13:11] JimBastard: step 1 is sending a malformed request and seeing if it bombs out [13:11] JimBastard: it should catch [13:12] JimBastard: that will confirm / deny that its a specifically formed request causing the bomb, or just a bad request [13:12] c4milo: step 1 is less complex for you that step2 ? [13:13] jherdman has joined the channel [13:14] mape: Bah WHY do JSON apis respond with HTML error pages [13:15] herbySk has joined the channel [13:16] c4milo: mape: because there are still people who don't know how design an API [13:16] JimBastard: c4milo: yeah, it will take days for 2 [13:16] JimBastard: and then i'll have to catch it more then once to confirm [13:16] mape: Figure yahoo should know how to make an api [13:17] c4milo: mape: ahaha, yeah, then that could be bing :P [13:18] stride: hmm, who did the session middleware implementation for connect? [13:18] mape: doesn't it state on github? [13:19] trotter has joined the channel [13:19] stride: meh, it probably does.. thanks :) [13:19] SamuraiJack__ has joined the channel [13:21] JimBastard: mape do you have any insight for my issue? im trying to trigger a parse error in http.Client, need an easy way to send a malformed http request. im totally noobing out on this [13:22] stride: JimBastard: what's wrong with netcat? do you know webscarab / burpsuite? [13:23] stride: although webscarab would be more suitable than burp for that purpose [13:23] JimBastard: stride: ive been trying to do cat foo.txt | nc -l localhost 9001 but it just hangs, it doesnt trigger http.Server to parse [13:23] JimBastard: i think i need to make foo.txt LOOK like an http request, but be slightly off [13:24] stride: yeah, maybe. and make sure linebreaks are correct I guess [13:25] JimBastard: its the contents of foo.txt, no idea what it should look like [13:25] stride: huh? does it contain a request or a response? [13:26] JimBastard: it contains junk txt [13:26] stride: ah, ok [13:30] jchris has joined the channel [13:34] christophsturm has joined the channel [13:36] saikat has joined the channel [13:36] davidsklar has joined the channel [13:41] hsuh has joined the channel [13:41] adambeynon has joined the channel [13:47] olegp has joined the channel [13:47] lachlanhardy has joined the channel [13:49] StM has joined the channel [13:49] mtodd has joined the channel [13:51] StM: What happens if 2 events at the same time modify the same global variable? [13:52] hannesw_ has joined the channel [13:52] zomgbie has joined the channel [13:53] zith_: does npm execute any of the npm package javascript when installing? [13:53] zith_: pre/post-hooks or anything? [13:55] nerdEd has joined the channel [13:56] c4milo: StM: that is not possible in nodejs [13:58] c4milo: StM: nodejs doesn't work with threads [13:58] thijsss has joined the channel [13:58] thijsss: Hi guys, does anyone have any experience with setting up socket.io? I've installed it through npm, but i can't seem to get the basic stuff working [14:00] delapouite: which browser ? [14:01] thijsss: delapouite: doesn't matter, it won't load socket.io.js on any client, i guess im doing something wrong at some point [14:01] StM: c4milo hmm ok, isnt that hurting the performance for longer running events? [14:01] omarkj: thijsss: Yes, I've been using it. Got any code to share? [14:01] aubergine has joined the channel [14:01] c4milo: StM: why ? [14:01] delapouite: to have it work with firefox 3.6, you must run the server with sudo, to have port 843 open [14:02] thijsss: omarkj: yeah, This is my server.js http://pastie.org/1184284 [14:02] StM: c4milo if a event takes for example 10 seconds, will that block all other events from running? Or switch he also in 1 thread between the different events for execution [14:03] c4milo: StM: nodejs does nonblocking IO, it scale much better that a thread driven server [14:03] thijsss: omarkj: oh, and in the chat.html it refers to: [14:03] delapouite: i also remember that i've had a problem using 127.0.0.1 instead of localhost or something like that [14:04] javajunky has joined the channel [14:04] StM: c4milo yea but i'm looking for it for a new project where it will have to handle a lot data once in the milion events or so, will that delay all other events too at that moment? As in, will it fully execute 1 event and then continue? [14:05] c4milo: StM: nop [14:05] omarkj: thijsss: Is your browser showing any errors at all ? [14:05] c4milo: StM: it's nonblocking [14:05] zith_: so why does it use port 843? [14:05] StM: yes its IO, but not the calculations [14:05] thijsss: no, firefox just shows me that socket.io.js did not return anything... as in, no 404.. I can give you the url im testing on if you want [14:05] c4milo: when an event is ready nodejs call its callback asyncronously [14:05] StM: yes but the execution will take long, not the IO [14:06] kgf: c4milo: I believe StM's point is what if the operations on the received data take a long time. I presume streaming and operating in chunks could help. [14:06] kgf: (assuming that's applicable) [14:06] omarkj: thijsss: That would be nice, you can pm it to me if that's more to your liking. [14:06] kgf: non-blocking I/O isn't a panacaea, it still can be crippled by long-running code, no? [14:06] StM: Its not important the the long task is fast :) If i can pause it its also fine [14:07] StM: But this is pure theoretical since i didnt build something yet, but i want to predict how it will work :) [14:07] kgf: StM: well, you could run it in spurts and defer with nextTick or setTimeout I guess... (newbie here, take with grain of salt) [14:07] StM: yes thats also a idea :) [14:07] kgf: StM: things may come together in your mind more once you start using the async patterns [14:07] c4milo: StM: oh, I understand now. You could do what kgf says or launch various nodejs processes as well [14:07] kgf: yeah... multi-node might be relevant to your interests [14:08] hsuh has joined the channel [14:08] kgf: http://github.com/kriszyp/multi-node [14:08] StM: hmm thanks :) [14:09] sonnym has joined the channel [14:15] ben_alman has joined the channel [14:18] ehaas has joined the channel [14:18] jakehow has joined the channel [14:19] bradleymeck has joined the channel [14:20] dylang has joined the channel [14:21] stagas has joined the channel [14:21] davidwalsh has joined the channel [14:23] JimBastard: c4milo: what you think of http://github.com/ry/node/blob/master/test/simple/test-http-malformed-request.js [14:23] JimBastard: i think that will do it [14:25] Yuffster has joined the channel [14:26] nefD has joined the channel [14:26] c4milo: well, I think that doesn't test all the cases, but as Ryan already points out in the test file. We need add more tests [14:28] c4milo: but [14:29] c4milo: this is TODO or the API already do it ? http://github.com/ry/node/blob/master/test/simple/test-http-malformed-request.js#L7 [14:29] loinclot_ has joined the channel [14:29] mape: I was thinking about the node docs, what do people think of a site that were there api docs, but instead of the text there are just tons and tons of tiny well documented samples relating to each and every part? [14:30] matt_c has joined the channel [14:30] nefD: mape: +1 [14:30] stride: matt_c: +1 for great examples but I don't like the "instead" part :) [14:30] c4milo: mape: that definitively would be more helpful [14:31] stride: I think a list with explanations on callback / function parameters and return values is critical for such a documentation [14:31] mape: stride: Well for the most part the comments would substitute the text [14:32] hansek__ has joined the channel [14:32] mape: At least that is how I would like it [14:32] mape: Stuff I can copy paste and fiddle with [14:32] pbradek has joined the channel [14:33] bradleymeck: testing anything that conforms to http1.0 and not http1.1 and setting http1.1 in the request would be a good way to start testing if we could cover those cases. [14:33] bradleymeck: mape spawn me a wiki doc site [14:33] ph^ has joined the channel [14:33] stride: don't care as long as values I can expect + special cases (if necessary) are documented in some way [14:33] mape: bradleymeck: Well, yeah. User submissions would be a part of it [14:34] stride: do we already have a node based wiki software? :> [14:34] mape: micheil: There? [14:34] streampunk has joined the channel [14:34] micheil: yup [14:34] bradleymeck: i do but i cant release it :( [14:34] mape: micheil: Mind reading 20 or so lines back? [14:35] micheil: hmm.. k [14:35] micheil: mape: I was thinking about the node docs, what do people think of a site that were there api docs, but instead of the text there are just tons and tons of tiny well documented samples relating to each and every part? [14:35] jpld has joined the channel [14:35] micheil: that? [14:35] micheil: mape: see my fork. I'm working on the documentation. [14:36] mape: micheil: Yeah [14:37] mape: micheil: Thinking of how perhaps it would be better to integrate it into the docs rather then making a separate site [14:37] mape: or if that would clutter stuff [14:37] hdon: anyone know why ETIMEDOUT is throwing an exception in IOWatcher.callback ? [14:37] hdon: i'm using 0.2.0 release [14:37] micheil: so, what I will be doing (in probably commit 3 or 4), will be working on the text ordering, wording / etc. [14:37] dipser: is it possible to start the browser with node (on osx) and maybe on the same tab? [14:37] micheil: mape: in commit 5 / 6, it'll be on examples. [14:37] hdon: when i attempt to connect to a host and the connection request times out, IOWatcher.callback throws an exception on ETIMEDOUT -- absolutely ridiculous! [14:38] mape: micheil: Though about how the examples will integrate? Inline them like they are now? [14:38] micheil: mape: no, there'll be a section [14:38] mape: With just examples? [14:38] micheil: each page is one of the modules (sort of) [14:38] JimBastard: updating node on production servers, this should be fun [14:39] micheil: and there'll be the API, then there'll be the Example / usage [14:39] micheil: so you would have a page on Streams [14:39] micheil: (for example.) [14:39] micheil: then on that, you'd have the API of methods & properties streams implement, and the Usage / Examples below that, then Related material below that [14:40] Nohryb has joined the channel [14:40] mape: k [14:40] micheil: so, essentially three sections to each page [14:40] virtuo has joined the channel [14:41] mape: Sounds good [14:42] micheil: so, essentially there's a lot of changes coming to the documentation. [14:42] mape: Jup, working with the new design or implementing it in the old one? [14:43] micheil: well, which new design. [14:43] paul_uk has joined the channel [14:43] micheil: because the one that is by rob seems to only be a proposal. [14:43] ollie has joined the channel [14:43] paul_uk: hi all, can i get npm help here? I've got npm installed and im trying to install express but i keep on getting "Failed unpacking the tarball." [14:44] micheil: feel free to ask [14:44] mape: micheil: Yeah that one [14:44] JimBastard: well that didnt work [14:44] micheil: otherwise, email the mailing list or the bug tracker [14:44] micheil: mape: probably not. [14:45] micheil: but it will be compatible. [14:45] mape: Neat [14:45] sudoer has joined the channel [14:45] micheil: have a look at my fork of node on github. [14:46] paul_uk: well specifically the error seems to be : Error: Failed tar "vxpf" "-" "--strip-components=1" "-C" "/usr/local/lib/node/.npm/express/1.0.0rc3/package" do i need to edit any files here to get this to pass thru? [14:46] micheil: it has details. [14:46] micheil: mape: I've already pushed commits 1 & 2 [14:46] fermion has joined the channel [14:46] micheil: paul_uk: best email the mailing list. [14:46] paul_uk: micheil, sure [14:47] mtodd has joined the channel [14:53] ajpiano has joined the channel [14:55] JimBastard: lol utf8Write is write now, good to know [14:55] viktors: hi. Is ext.js supposed to be compatible with node.js? I'm getting this message: TypeError: Object # has no method 'extend' [14:56] viktors: (this ext.js - http://github.com/visionmedia/ext.js ) [15:01] LFabien has joined the channel [15:05] jakehow has joined the channel [15:06] aheckmann has joined the channel [15:06] dmcquay has joined the channel [15:06] galaxywatcher: is there an asynchronous dns resolution tool I should be using with node? [15:07] ironfroggy_: I am seeing some articles referencing a multipart module that doesnt seem to actually exist, including links to missing docs on it. was such a module removed? [15:09] GriffenJBS: galaxywatcher: have you looked at the dns module? [15:09] JimBastard: ironfroggy_: it exists, it was taken out [15:09] JimBastard: of core [15:09] JimBastard: there is a build of it [15:09] matt_c: ironfroggy_: It used to be there but was removed. I think a few folks maintain it still. http://github.com/felixge/node-formidable/blob/master/lib/formidable/multipart_parser.js is the one I know of (and formidable is a higher-level wrapper that you might want to look at) [15:09] JimBastard: yeah, isaacs has one too, its on npm [15:11] paul______ has joined the channel [15:11] ironfroggy_: thanks [15:12] galaxywatcher: GriffenJBS: Do you have a pointer to it? [15:12] dipser: mongoose.load('./models'); does not work. is there a new one? [15:13] GriffenJBS: http://nodejs.org/api.html#dns-258 [15:15] mikeal has joined the channel [15:15] galaxywatcher: GriffenJBS: Thanks..looking into it now. [15:16] stepheneb has joined the channel [15:16] pengwynn has joined the channel [15:16] pbradek has joined the channel [15:19] softdrink has joined the channel [15:20] andykent has joined the channel [15:20] mikew3c_ has joined the channel [15:20] path[l] has joined the channel [15:22] ivanfi has left the channel [15:23] ysynopsis has joined the channel [15:26] dnolen has joined the channel [15:27] sahazel has joined the channel [15:27] tj has joined the channel [15:29] xla has joined the channel [15:33] mytrile has joined the channel [15:35] gerred has joined the channel [15:37] ntelford has joined the channel [15:40] sprout has joined the channel [15:40] hsuh has joined the channel [15:44] chakrit has joined the channel [15:47] c4milo has joined the channel [15:47] charlenopires has joined the channel [15:47] softdrink has joined the channel [15:50] silentrob has joined the channel [15:52] tjholowaychuk has joined the channel [15:55] stagas has joined the channel [15:56] stephank has joined the channel [15:57] steadicat has joined the channel [15:57] ajsie has joined the channel [15:58] paul______ has joined the channel [15:58] boboroshi has joined the channel [16:01] galaxywatcher_ has joined the channel [16:03] hsuh_ has joined the channel [16:09] rauchg_ has joined the channel [16:09] claudiu__ has joined the channel [16:12] devinus has joined the channel [16:13] silentrob has joined the channel [16:16] aubergine has joined the channel [16:18] halfhalo: ok, so apparently keys.nStore will no longer work for me with nstore 0.3.0... this makes me a sad panda [16:20] jchris has joined the channel [16:20] charlenopires has joined the channel [16:22] keturn has joined the channel [16:22] ryanfitz has joined the channel [16:25] zmbmartin: tjholowaychuk: how does get work in express. I have this --> http://gist.github.com/599296 get works but delete just puts me to a white blank screen no redirect or anything? [16:25] zmbmartin: tjholowaychuk: Sorry I meant how does del work. [16:25] robotarmy has joined the channel [16:25] tjholowaychuk: zmbmartin: do you have methodOverride()? if you cant actually -X DELETE [16:25] tjholowaychuk: then [16:25] robotarmy has joined the channel [16:26] tjholowaychuk: you need etc for a pseudo http method [16:26] zmbmartin: Yes I have express.methodOverride() [16:27] tjholowaychuk: what are you doing that *should* trigger the delete call? [16:28] antares_ has joined the channel [16:28] zmbmartin: tjholowaychuk: I am trying to delete from a link --> a(href='/users/' + user.id + '/destroy', data-confirm='Are you sure?') Delete User [16:28] JimBastard: hey tjholowaychuk , does jade working client-side yet? [16:28] JimBastard: /s/working/work [16:28] tjholowaychuk: JimBastard: there is an older port that works in the browser but not the most recent stuff [16:29] JimBastard: got ya. i think it would be really compelling to see jade + nodestream, but have it push JSON back and forth instead of HTML [16:29] JimBastard: and do the jade templating client-side [16:30] tjholowaychuk: someday perhaps :) [16:30] hsuh has joined the channel [16:31] JimBastard: i just hate sending html frags back and forth [16:32] Gla has joined the channel [16:32] tjholowaychuk: zmbmartin: I dont have a good solution for you for deleting via GET [16:32] zmbmartin: tjholowaychuk: I have it working if I use app.get I am trying to get app.del working [16:33] zmbmartin: tjholowaychuk: do you have an example of app.del somewhere? [16:33] nsm has joined the channel [16:33] tjholowaychuk: zmbmartin: dont think I do actually [16:33] tjholowaychuk: probably should [16:34] noahcampbell has joined the channel [16:35] zmbmartin: tjholowaychuk: I tried adding method='delete' to the link also? Still didn't work. [16:35] disq: i'm trying to achieve a modular structure in my client code (not actually a nodejs question, i'm using socketio to get updates back to the client) so that the socketio message handler can be some glue code that can dispatch messages to widget update functions and they update their display accordingly. is there an app that I can examine that does this? [16:35] tjholowaychuk: zmbmartin: nope that wont work [16:36] sprout has joined the channel [16:37] zmbmartin: tjholowaychuk: so can I not use del() with a link? [16:37] tjholowaychuk: not without some hackage nope [16:37] zmbmartin: tjholowaychuk: is it bad to do a get for DELETE? [16:37] slaskis: zmbmartin: why would you want to use get to delete? [16:38] zmbmartin: slaskis: I don't [16:38] zmbmartin: slaskis: but I can't get a normal link to work with del [16:38] slaskis: but a normal link is get only [16:39] slaskis: you could use some js to get it working [16:39] bpot has joined the channel [16:39] zmbmartin: I guess I am use to rails then. Does rails have some magic that turns it into a DELETE. I just add method="delete" and rails knows it is a DELETE req [16:40] aurynn: yes, [16:40] slaskis: generally i think it's a bad idea as spiders follow links so google would delete your stuff [16:40] aurynn: that's routing magic in Rails [16:40] siculars has joined the channel [16:40] slaskis: don't rails just use the same trick as connect? a POST with a _method=delete ? [16:41] micheil: tjholowaychuk: nodestream? tell me more :D [16:41] tjholowaychuk: I cant speak for rails but rack only alters the method via POST [16:42] DoNaLd`: all: exist some new, more secure technique like session or cookies, how to store some variables and values for logged users ? .. or still the best technique is create session ? [16:42] gbot2: DoNaLd`: spidermonkey: Error: SyntaxError: missing ; before statement: exist some new, more secure technique like session or cookies, how to store some variables and values for logged users ? .. or still the best technique is crea [16:42] tjholowaychuk: micheil: basically wicked awesome nearly transparent realtime templates :D [16:42] micheil: tjholowaychuk: any examples? eg, that page I was at before.. [16:42] tjholowaychuk: hmmm [16:42] micheil: actually. who was I talking to.. not you but someone else. [16:43] tjholowaychuk: he has this http://github.com/guille/jsconf-todo-demo [16:43] micheil: must've been g. [16:43] micheil: tjholowaychuk: I think this has just become very very handy [16:44] tjholowaychuk: yeah man, lots of potential [16:44] oberhamsi has joined the channel [16:44] micheil: tjholowaychuk: I'll tell you more soon. [16:44] tjholowaychuk: aight :D [16:45] tjholowaychuk: I want to add some more filter capabilities to jade soon though. for example I think another good transparent use-case [16:45] micheil: FFUUU. itunes replaced it's icon again. [16:45] micheil: tjholowaychuk: I want to do more on websocket / stream filter & splitting [16:45] tjholowaychuk: would be to aggregate/compress stylesheets (and/or js) transparently [16:45] tjholowaychuk: without modifying your template [16:46] tjholowaychuk: so someone could just pass in { filters: ['compress'] } or something [16:46] gwoo has joined the channel [16:47] qFox has joined the channel [16:49] isaacs has joined the channel [16:49] marshall_law has joined the channel [16:52] deepthawtz has joined the channel [16:52] dahankzter has joined the channel [16:53] zmbmartin: tjholowaychuk: sorry to go back to it. But I didn't see if you posted an example of the del. I can't seem to get it. I have relied of the rails magic too much I guess. [16:54] aurynn: _method="whatever" just need to be supported in the routing code. [16:55] tjholowaychuk: it is, just only via POST at the moment [16:55] ajsie has joined the channel [16:55] wink_ has joined the channel [16:56] dgathright has joined the channel [16:58] jarfhy has joined the channel [17:02] sahazel has joined the channel [17:02] sprout1 has joined the channel [17:03] ivong has joined the channel [17:05] wink_ has joined the channel [17:05] q_no has joined the channel [17:09] benv has joined the channel [17:11] kuya: does anyone know if cookies are sent along with socket.io whatever-transport? [17:11] virtuo has joined the channel [17:11] MikhX has joined the channel [17:11] zmbmartin: tjholowaychuk: are you going to add a pretty print (if that is what you call it) to jade for viewing source? [17:11] kuya: iv got to the point of needing some auth in my socket-io app and im not quite sure what i should/shouldnt be doing [17:11] tjholowaychuk: zmbmartin: I have a { pretty: true } option now [17:12] tjholowaychuk: its not amazingly pretty [17:12] tjholowaychuk: but helps [17:14] jesusabdullah: Cause it's FILTHAY! oooooh and GORGEOUS! [17:14] jesusabdullah: (right?) [17:15] xslasherx has joined the channel [17:16] sprout has joined the channel [17:17] c4milo1 has joined the channel [17:17] c4milo1 has joined the channel [17:17] rnewson has joined the channel [17:20] gf3 has joined the channel [17:20] BRMatt has joined the channel [17:21] gf3 has joined the channel [17:23] jarfhy has joined the channel [17:24] MikhX_ has joined the channel [17:25] virtuo has joined the channel [17:25] JimBastard: why is npm hating on me [17:25] JimBastard: hrmm [17:26] JimBastard: isaacs: Marak-Squiress-MacBook-Pro:bin maraksquires$ sudo npm install npm npm info it worked if it ends with ok npm info version 0.1.27-12 npm info fetch http://registry.npmjs.org/npm/-/npm@0.2.2.tgz npm ERR! Error installing npm@0.2.2 npm ERR! Error: Failed to create /usr/local/lib/node/.npm/.cache/npm/0.2.2/package.tgz: ENOENT, No such file or directory '/usr/local/lib/node/.npm/.cache/npm/0.2.2/package.tgz' npm ERR! at /u [17:26] JimBastard: clean install perhaps? [17:26] isaacs: JimBastard: giiissstt!! [17:26] JimBastard: on it [17:26] JimBastard: http://gist.github.com/599430 [17:26] JimBastard: after i tried to update [17:26] vnguyen has joined the channel [17:26] JimBastard: cant install packages either [17:26] isaacs: JimBastard: make clean install [17:26] isaacs: JimBastard: you updated node on the unstable branch [17:26] JimBastard: ahhh [17:26] isaacs: the constants got moved from process to require("constants") [17:27] JimBastard: makes sense [17:27] isaacs: so, if you open a file with process.O_CREAT, it won't create it [17:27] JimBastard: so i should clone npm repo? [17:27] nerdEd has joined the channel [17:27] isaacs: JimBastard: or just "npm rm npm" and then do the curl | sh thing [17:27] isaacs: JimBastard: whatever you prefer. [17:27] stepheneb_ has joined the channel [17:27] isaacs: or, actually, JUST doing the curl|sh thing would work [17:28] JimBastard: npm rm npm hates me [17:28] JimBastard: hrmmm [17:28] JimBastard: ill try that [17:28] isaacs: right, because you broke its node :) [17:28] jesusabdullah: isaacs: You gonna hack your roomba? Twitter says you're getting a roomba. [17:28] isaacs: that makes it cry. it's not about you personally. [17:28] isaacs: JimBastard: it's just sad, is all. [17:28] isaacs: jesusabdullah: i'll probably just let it clean my floors. [17:28] isaacs: jesusabdullah: and freak out my cats. [17:28] JimBastard: roomba? [17:29] jesusabdullah: Here I was hoping there'd be stuff out there for hacking the roomba with node.js! [17:29] jesusabdullah: Oh well [17:29] isaacs: heh [17:29] jesusabdullah: If I get a roomba I'm totally hacking it [17:29] JimBastard: ill make the nodejitsu server farm be a literal farm with a fence and a bunch of roombas [17:29] jesusabdullah: haha [17:29] jesusabdullah: YES [17:29] stepheneb_ has joined the channel [17:29] jesusabdullah: "we grow our servers to PERFECTION" [17:29] isaacs: hahaha [17:29] antares_ has joined the channel [17:29] jesusabdullah: "boop boop boop boop" [17:30] JimBastard: ACTION and the node factory. [17:30] jesusabdullah: Cruelty to processes! >:O [17:30] JimBastard: okay i think it worked.... [17:30] paul____ has joined the channel [17:31] kkaefer has joined the channel [17:33] pquerna: ACTION wants to write a blog post 'designing streaming apis' [17:33] zith_: isaacs: hi, are you around? [17:33] isaacs: zith_: yes [17:34] kkaefer has joined the channel [17:35] bradleymeck: mmm is there a minimal drag/drop implementation for browser side anyone knows of (nothing as large as a full js library) [17:35] zith_: isaacs: are there any plans to let npm install packages to a non-default directory? [17:36] zith_: so that i can run it as something other than root, even though i've installed it using "make install", with the default directories [17:36] agnat has joined the channel [17:36] jesusabdullah: zith_: .npmrc [17:37] rikarends has joined the channel [17:37] jesusabdullah: bradleymeck: Only one I really know of is part of jqueryui--probably not what you're interested in [17:37] eisd has joined the channel [17:38] bradleymeck: yea, seems a bit overkill for me just wanting to drag an image onto a textarea [17:38] bradleymeck: though it is interesting to note : dragging images etc prevents onmouseup from working in newer browsers :( [17:39] isaacs: zith_: npm config set root /some/other/path [17:39] isaacs: zith_: or edit the .npmrc or the etc/npmrc [17:40] isaacs: zith_: or npm dosomething --root /some/other/path [17:40] isaacs: zith_: or npm_config_root=/some/other/path npm dosomethign [17:40] zith_: thanks [17:40] isaacs: zith_: npm help config [17:42] prettyrobots has joined the channel [17:46] JimBastard: heh, http-proxy is awesome [17:46] JimBastard: lol [17:46] JimBastard: i totally just used it and it worked [17:47] streampunk: JimBastard: pat on the back? [17:47] gf3: inimino: Are you familiar with ruby? [17:48] JimBastard: streampunk: double pat [17:48] JimBastard: i was like, hrmm same origin policy [17:48] langworthy has joined the channel [17:48] JimBastard: crap gonna have to proxy requests for this to work [17:48] JimBastard: 2 lines later, wooot [17:48] skampler: mjr_ [17:49] skampler: pquerna: hey i think that blog post is needed [17:50] JimBastard: cast? [17:50] jesusabdullah: JimBastard: what was this for? Some ajaxery? [17:50] JimBastard: jesusabdullah: nodejitsu client application [17:50] JimBastard: aka, the website [17:50] JimBastard: its talking to broodmother via reverse proxy [17:51] pquerna: JimBastard: nah, on the design of streaming apis [17:51] pquerna: JimBastard: but yeah, I need to write about cast too :) [17:51] JimBastard: so we dont have to expose our master nodes to the internet [17:51] JimBastard: word [17:51] pbradek has joined the channel [17:51] pquerna: JimBastard: doing a talk at SURGE this week, will spend a few minutes on cast [17:51] JimBastard: yeah pquerna we've just about got broodmother done. had to refactor it to get unit tests [17:51] pquerna: (main talk is libcloud / api driven operations, but cast is worth a metion) [17:51] JimBastard: but its passing almost everything now [17:51] micheil: pquerna: article ping? [17:52] pquerna: not done, there was much drinking that happened instead. [17:52] jesusabdullah: hmm [17:52] skampler: pquerna: do you mean how to create an api that has pause, resume, end, write and all that? [17:52] micheil: pquerna: heh, no worries :) [17:52] dnolen has joined the channel [17:53] pquerna: skampler: no, in the more abstract sense; Pull vs Push designs, transofmrations, filters, ability for socket writing optimizations (writev, sendfile) [17:53] JimBastard: we can (in theory) start accepting http requests for an application, put them in a queue, provision a new server, bootstrap it with the requested app, start it up, and then serve the requests [17:53] JimBastard: but servers are kept running ahead of time obviously [17:53] shockie has joined the channel [17:54] pquerna: skampler: node.js is trying to figure it all out right now, but people have been designing these type of apis for 15+ years [17:54] rikarends has joined the channel [17:54] pquerna: skampler: everything that will be invented has been etc :) [17:55] stride: except vapor.js, that's totally new and awesome. [17:55] TheEnd2012 has joined the channel [17:55] dgathright has joined the channel [17:55] blowery: pquerna: but this time, it's async! [17:55] JimBastard: i wanted to install vapor.js but it actually wont work with my existing system [17:56] keturn: my require.paths is undefined, despite defining the NODE_PATH environment variable [18:02] skampler: pquerna: i use a streaming redis client in order to transform incoming data to the outgoing data directly without buffering it up or concatenating strings, is that what you mean by transformation? [18:02] inimino: gf3 ⋱ In passing, I've never used it seriously. [18:02] pquerna: skampler: no, more like things like http chunking, gzip, etc [18:02] keturn: oh, this is issue 303. okay. [18:02] sahazel has joined the channel [18:02] skampler: protocol stuff [18:03] pquerna: not always [18:03] gf3: inimino: I'm considering converting the Makefile (which seems to be broken for me, btw) to a Rakefile [18:03] gf3: inimino: to better manage tasks and clean it up a bit [18:03] paul____ has joined the channel [18:03] skampler: ok [18:04] HAITI has joined the channel [18:05] inimino: gf3 ⋱ which Makefile? [18:05] gf3: inimino: (for PanPG) [18:05] gf3: sorry [18:05] inimino: oh [18:06] inimino: Oh, I don't want a Ruby dependency for the build system. [18:06] gf3: okay [18:07] inimino: I don't use the Makefile either, though. I have some browser-based thing, but I do want there to be a CLI build system. [18:08] inimino: AzaToth wrote the Makefile, he's in #inimino. [18:11] rikarends has left the channel [18:13] hober has joined the channel [18:14] MikhX has joined the channel [18:14] Gruni has joined the channel [18:14] delapouite has joined the channel [18:20] sudoer has joined the channel [18:20] DozyPieman` has joined the channel [18:20] huyhong has joined the channel [18:22] franksvalli has joined the channel [18:22] franksvalli has left the channel [18:22] stepheneb has joined the channel [18:24] DozyPieman` has joined the channel [18:30] MikhX_ has joined the channel [18:34] keturn: node segfaults while I'm using ndb :( [18:34] hannesw has joined the channel [18:38] huyhong has left the channel [18:38] tapwater has joined the channel [18:43] grahamalot has joined the channel [18:43] paul____ has joined the channel [18:46] dnolen has joined the channel [18:48] Druide__ has joined the channel [18:49] sudoer has joined the channel [18:49] banjiewen has joined the channel [18:49] rnewson has joined the channel [18:49] deedubs has joined the channel [18:57] path[l] has joined the channel [19:00] cloudhead has joined the channel [19:00] rnewson has joined the channel [19:00] rnewson has joined the channel [19:00] stepheneb_ has joined the channel [19:02] muk_mb has joined the channel [19:04] aubergine has joined the channel [19:08] overra has joined the channel [19:11] Aria has joined the channel [19:20] dahankzter has joined the channel [19:22] xla has joined the channel [19:27] kjeldahl has joined the channel [19:32] prettyrobots: isaacs: http://gist.github.com/599621 [19:32] prettyrobots: Thought you might find that amusing. It is a debian/rules file. [19:32] prettyrobots: It is easy to create deb from NPM. [19:32] isaacs: interesting [19:33] prettyrobots: https://launchpad.net/~bigeasy/+archive/node-stack/+packages [19:33] isaacs: prettyrobots: again, one of those things i'm hoping that someone else picks up and runs with [19:33] prettyrobots: Of course, I have to ignore all the sudon't warnings. [19:33] isaacs: prettyrobots: suresure. [19:34] isaacs: prettyrobots: re: the sudo stuff, i really need to iron that all out. [19:34] prettyrobots: But, it's "fakeroot". [19:34] ajsie has joined the channel [19:34] isaacs: it's such a tricky problem. [19:34] prettyrobots: Its understandable. [19:34] isaacs: like, on the one hand, it's *hideously* unsafe to run unreviewed code as root. [19:34] isaacs: like, jsut WOW, so wildly bad. [19:34] prettyrobots: Yes. [19:34] isaacs: i'm the maintainer and owner of this domain, and *I* don't run it as root. that should really say something. [19:35] prettyrobots: Its understandable. And NPM is a toddler. You don't want someone writing some hair-wrending blog post about how NPM destroyed a system. [19:35] isaacs: exactly [19:35] prettyrobots: When it wasn't really NPM. [19:35] isaacs: or, if they do, i wanna be able to leave a comment like "wtf SHOULD i have done, besides yell at you constantly not to do this stupid thing you did!?" [19:36] prettyrobots: Right. [19:36] isaacs: otoh, if you do sudo even once, it breaks and is a really big pain to deal with [19:36] isaacs: so... there needs to be some ironing out there. [19:36] prettyrobots: Of course, you'll have some jackass come along and do it anyway, because he thinks he knows better. [19:36] prettyrobots: ACTION Bows. [19:36] isaacs: i mean, in reality, people do use sudo [19:36] isaacs: and i ought to make it easy for them not to, as well as yelling at them for it. [19:37] isaacs: like, right now, if you install npm with sudo, you have to sudo *everything*, even npm help [19:37] isaacs: and that's silly [19:37] prettyrobots: Well, the warnings are moot because they are all in the copious `debuild` stdout spews. I crank up NPM to verbose, so I can see the output when I run it at the Launchpad build farm. [19:38] isaacs: prettyrobots: if you like verbose, you should try "silly" [19:38] prettyrobots: I did. It was silly. [19:38] isaacs: it's like reading the source code, only noisier [19:38] prettyrobots: Hah. [19:38] prettyrobots: Here's some output for you... [19:38] prettyrobots: http://launchpadlibrarian.net/56559021/buildlog_ubuntu-lucid-i386.libxmljs_0.4.1-5_FULLYBUILT.txt.gz [19:39] jesusabdullah: There's a "silly" verbosity setting? Fun [19:39] prettyrobots: You can see a build here... [19:39] prettyrobots: https://launchpad.net/~bigeasy/+archive/node-stack/+build/1976384 [19:39] zith_: to be honsest, you shouldnt ever sudo from an account you run services on, at all [19:39] prettyrobots: So, yes. [19:39] isaacs: zith_: +1 [19:39] isaacs: zith_: on the no.de machines, you CANT run as root. [19:39] prettyrobots: zith_: That's curious. How to update packages? [19:40] zith_: login as root [19:40] prettyrobots: Oh, well, that's just six of one, half dozen the other. [19:40] isaacs: prettyrobots: as root, you set up a user account that has permission only to do very specific things. one of those things can be installing a package. [19:40] prettyrobots: With sudo you at least get a record of what was run in the syslog. [19:41] zith_: if the account you run sudo from gets compromised you're pretty fucked [19:41] zith_: might as well have been a root service that got compromised rather than a less priviledged one [19:42] prettyrobots: zith_: I don't do multi-tenant hosting. [19:42] isaacs: the future of computing is the appliance model, imo. root is for the datacenter admin. unless you're administrating data centers, or working on a local laptop or something, then you shouldn't have sudo [19:42] prettyrobots: zith_: I follow isaacs suggestion. An admin user that has sudo privileges. [19:42] isaacs: prettyrobots: no, that's not what i'm suggesting, actually [19:43] isaacs: prettyrobots: i'm suggesting you set up the packager such that sudo isn't necessary, and give someone access to it directly. [19:43] prettyrobots: Sure. [19:43] prettyrobots: as root, you set up a user account that has permission only to do very specific things. one of those things can be installing a package. [19:43] prettyrobots: That's what you said? [19:43] isaacs: yeah [19:43] isaacs: but "sudo" isn't something that user account should be able to do [19:44] isaacs: qv. npm, or the "pkgin" command on the no.de machines, or homebrew. [19:44] isaacs: package management should be done as a user [19:44] prettyrobots: isaacs: Are we having two conversations, one about general sudo usage in UNIX admin, and another about the npm sudo issues specifically? [19:45] isaacs: prettyrobots: i think they're kinda one in the same [19:45] prettyrobots: I'd be happy to let the former go and focus on the latter, but if they are the same. [19:45] ivong has joined the channel [19:45] prettyrobots: I mean, if you're talking about managing packages, like the libc (Linux) [19:45] prettyrobots: then you need to sudo to update them. [19:45] isaacs: prettyrobots: here's the thing, though: sudo dpkg is WAY WAY less dangerous than sudo npm [19:45] isaacs: it's still dumb. [19:46] prettyrobots: Okay. Cool. [19:46] isaacs: but at least debian main has some code review procedures and oversight. [19:46] isaacs: npm has *none* [19:46] zith_: with sudo dpkg you put your box in the hands of the debian (or ubuntu or whatever) release teams hands [19:46] isaacs: the oversight is: you need a username, and if someone tells me something is bad, i'll delete it. [19:46] zith_: with sudo npm you put it in isaacs and his underlings hands ;) [19:46] isaacs: ACTION has no underlings, really.. [19:46] prettyrobots: I'm interested to learn how I'm supposed to update libc without sudo? [19:47] pquerna: isaacs: as if debian actually does code review of the 15k packages; they use the same model really. [19:47] prettyrobots: And I'm not being a troll. The conversation is confusing me. [19:47] isaacs: pquerna: suresure [19:47] prettyrobots: isaacs: You're saying sudo dpkg -i is still dumb? [19:47] pquerna: yes, for lots of reasons [19:48] stephank: You can also be too paranoid. ;) [19:48] prettyrobots: Someone please give me ONE. [19:48] zith_: prettyrobots: the issue is that if an attacker gets access to your account, and you use sudo from it, he will get root [19:48] prettyrobots: Because I haven't heard any. [19:48] pquerna: what happens when your terrible application, some binary you built 4 years ago depends on an old version of something [19:48] pquerna: then you upgrade the os, and it doesn't work [19:48] pquerna: the whole inability to slot dependencies [19:49] isaacs: prettyrobots: 1) being a sudoer is dangerous. the fact is that there is really no way to do much of anything on a debian box without it, but that doesn't mean it's ok, that means it's a problem with debian. [19:49] stephank: A standard Debian or Ubuntu upgrade doesn't do that. Neither do RHEL upgrades [19:49] isaacs: prettyrobots: 2) dpkg's can run arbitrary scripts. [19:49] prettyrobots: Okay. [19:49] prettyrobots: I don't care enough to be that paranoid. [19:49] deedubs has left the channel [19:50] isaacs: (and i know you're not trolling, this is realy not a trivial topic) [19:50] stephank: isaacs: Perhaps there's no good other way to do /package management/, but everything else is jailed to a user account, including services. Besides, you've installed the distribution, it's already in the hands of Debian. [19:50] WALoeIII has joined the channel [19:50] isaacs: stephank: so, yeah, you're putting your machine in the hands of the debian crew. [19:50] prettyrobots: isaacs: Thank you. Just moderating the tone. [19:50] stephank: Even if they don't do code checks, they battle test packages. I think you can't trust yourself to make a stupid sudo mistake than them making a stupid packaging mistake. [19:51] prettyrobots: I mean, checking it, the tone, re. trolling. [19:51] isaacs: stephank: the fact that there *is* a debian crew means that dpkg is much safer to sudo than npm or rubygems [19:51] isaacs: prettyrobots: suresure [19:51] stephank: Yeah, I do install a lot of gems as root. Hmm... [19:51] prettyrobots: Yeah, I'd have to say that, if I can't trust the Ubuntu packages, then I don't have a business. [19:51] isaacs: and, the fact that you must sudo to update libc, or that you can only have one libc on a machine, just shows that there are still things that can be improved. [19:51] Nohryb has joined the channel [19:52] prettyrobots: I can't afford to do NSA level code review of my Linux kernel before I deploy it. [19:52] prettyrobots: Sorry. [19:52] isaacs: really, there's no reason why the techniques in npm's module loading schemes can't be applied to a C compiler's builds, imo. [19:52] prettyrobots: I'm happy with sudo dpkg -i. [19:52] stephank: I thought Linux never had the intention of a stable interface between kernel and libc? [19:53] pedrobelo has joined the channel [19:53] programble has joined the channel [19:54] prettyrobots: isaacs: The deb packaged NPM is very useful if you change the "root". [19:54] prettyrobots: root = /home/alan/.node_libraries [19:54] prettyrobots: Put that in ~/.npmrc [19:54] isaacs: yep [19:54] prettyrobots: And NPM at /usr does the right thing. [19:54] isaacs: i need to make the "i'm not root and have no permissions outside of $HOME" story a lot cleaner [19:54] isaacs: Aria's been leaning on me for that [19:54] isaacs: and i know it's not great, anyway [19:54] prettyrobots: So, it's not a total loss to install it form a deb package, you just can't use it to install further packages to /usr. [19:55] Aria: Hehe. [19:55] prettyrobots: Which is now how I want to use it, so I'm happy there. [19:55] prettyrobots: isaacs: It's great. [19:56] prettyrobots: I'm sure it could be greater, but NPM makes deb packaging easy. I can push these things to a Launchpad PPA and spin up Node.js on EC2 ready to serve. [19:57] isaacs: prettyrobots: so, i really want a way to be able to plug stuff into npm. [19:57] isaacs: prettyrobots: like, "npm install npm-deb", and then you'd be able to do "npm dpkg foo" [19:58] prettyrobots: I was talking with stephank about a package.json to deb script. [19:58] prettyrobots: And the deb script is basically that gist I showed you. It calls NPM. [19:58] prettyrobots: Here is the debian/rules for NPM itself. [19:59] pquerna: npn-deb + npm dpkg foo would be hot [20:00] pquerna: a bundler could use the same api :) [20:00] isaacs: prettyrobots: if you wanna make that work, and battle test it, and own the debian side, then i will cheer for you and work with you to fix the snags as you run into them [20:00] isaacs: pquerna: or you could just use npm bundle today ;) [20:00] prettyrobots: https://gist.github.com/6342a84690f7eaa8e8d6 [20:00] isaacs: pquerna: but yeah, i mean, if you look at the code, it's already very split out [20:00] derferman has joined the channel [20:01] prettyrobots: pquerna: https://launchpad.net/~bigeasy/+archive/node-stack [20:01] prettyrobots: isaacs: Can I write it in CoffeeScript? [20:01] isaacs: prettyrobots: if it doesn't live in npm itself, i'm cool with whatever [20:01] prettyrobots: Oh, great! [20:02] ngw has joined the channel [20:04] prettyrobots: Okay. So, it become a plugin and adheres to some NPM plugin API. [20:04] Kami_ has joined the channel [20:05] isaacs: prettyrobots: yeah, so, the snag is that that api doesn't exist yet [20:05] isaacs: prettyrobots: and making npm pluggable is very not trivial [20:05] prettyrobots: Sure, but in the mean time, I can create something that has its own cli. [20:05] isaacs: prettyrobots: sure, if you wanna [20:05] prettyrobots: We can look at where it would want to plug in. [20:06] isaacs: prettyrobots: i've got some ideas on that anyway [20:06] prettyrobots: I'll name it npm-dpkg with an eye toward the future. [20:06] isaacs: heh [20:06] prettyrobots: Hmm... [20:07] prettyrobots: I'm thinking, so you know, that it is a utility that helps to maintain a debian directory. [20:07] prettyrobots: Because you need to preserve a changelog somehow. [20:07] isaacs: prettyrobots: sure. i'd approach it from the pov of an experiment that you may have to tear down, rewrite, etc. [20:08] prettyrobots: Sure. Just noting that, it would have to spit out a few artifacts for source control. [20:08] blaines has joined the channel [20:08] prettyrobots: Or else its time for NPM to define additional artifacts. [20:09] prettyrobots: Say, a universal changelog that could be used for deb or other things. [20:09] prettyrobots: Anyway, my use case for NPM now is this; [20:09] prettyrobots: For native bindings, I package to deb. But, for indep packages, I want to be able to install in a per-web application library on my server. [20:10] prettyrobots: And NPM is great for this. [20:10] softdrink: dear internets: please support the PATCH http method soon. sincerely, me [20:10] stephenjudkins has joined the channel [20:10] isaacs: prettyrobots: sure. you can also do "npm bundle", and maybe someday in the future, that'll Just Work without changing any code. [20:11] prettyrobots: My reasoning is that anything with bindings needs to be tested and correct before you deploy it, but a web application probably has libraritized stuff that is developed along with the application. [20:11] prettyrobots: Okay. I'll look into npm bundle. [20:12] joncurra has joined the channel [20:12] joncurra: anyone see this issue when using socket.io ?: "Illegal transport "socket.io.js"" [20:15] EyePulp: joncurra: I've seen it, but I'll be darned if I remember the conditions [20:15] EyePulp: =\ [20:15] joncurra: i can post up what i've got so far =] [20:19] Me1000 has joined the channel [20:19] dpritchett has joined the channel [20:21] dpritchett: has anyone else seen the node REPL not line wrap properly in cygwin? [20:24] dpritchett: i'm using node 0.2.2 under mintty on XP [20:25] JimBastard: hrmm i wrote some tests [20:25] virtuo has joined the channel [20:25] JimBastard: and then when i tried to use the code it tested everything worked [20:25] JimBastard: interesting [20:25] dpritchett: hmm... looks fine in the default cygwin terminal but not in mintty [20:26] dpritchett: fails in rxvt too [20:26] joncurra: ok, tarball of socket.io failure is at http://drop.io/vllrm1m [20:27] joncurra: using node v0.2.2 [20:29] hdon: http://comments.gmane.org/gmane.comp.lang.javascript.nodejs/7523 [20:30] hdon: has this bug been fixed? [20:30] kgf: dpritchett: I might've noticed something like that in 0.2.0 as well. didn't think to try non-mintty [20:30] hdon: i am also an ubuntu 10.04 user [20:30] hdon: i'm using node 0.2.0 [20:30] dpritchett: thanks kgf. i can work around it for now [20:31] dpritchett: it looks like the output for the coffeescript repl has the same issue [20:31] dpritchett: it might be a wrapper around node-repl for all i know [20:31] franksvalli has joined the channel [20:34] dilvie: Here's a fun question. Is there a node module that will create a local cache of the geonames service? I want to use geonames to create a city / state autocomplete lookup for my application, but 1) I want it to be hosted on a trusted server, and 2) the geonames service frequently gets bogged down, which degrades the performance. A local cache would be much faster. [20:34] rcy has joined the channel [20:35] sschuermann has joined the channel [20:35] sschuermann: hia [20:35] MikhX has joined the channel [20:35] sschuermann: is there a recommended way to implement facebook auth with nodejs and/or expressjs [20:35] sschuermann: ? [20:36] dilvie: sschuermann: Check out http://github.com/ciaranj/node-oauth [20:36] dilvie: has some OAuth2 support that has been tested with Facebook. [20:36] dilvie: I haven't tried it yet, but I was planning to. =) [20:37] sschuermann: ah ok, it's worth investing 2 hrs in it? [20:37] EyePulp: what's the current favorite for node/mongodb modules? [20:37] sschuermann: (and get a working result) [20:37] sschuermann: ;) [20:37] Kami_ has joined the channel [20:39] mpoz2 has joined the channel [20:41] dilvie: sschuermann: That depends on how long it would take you to roll your own. [20:41] dilvie: sschuermann: and node auth comes with some other auth options built-in, so if you want to add more later, it might be a good starting point. [20:42] sschuermann: hmmm [20:42] dilvie: and the author hangs out in here, so support is good. =) [20:42] stepheneb has joined the channel [20:43] sschuermann: okay, so ill give it a shot, first with the twitter api ;) [20:43] sschuermann: i need to use twitter as auth source, to bad there is not a full example for old sacks like me [20:44] sschuermann: stupid questions inc [20:44] sschuermann: ;) [20:46] davidwalsh has joined the channel [20:48] sschuermann: http://howtonode.org/facebook-connect anyone is aware if that one works as well ? [20:48] sschuermann: it looks really exactly like what i need [20:48] dipser: mongoose.load('./models'); does not work. it seems to be deleted. how can i do that now? [20:48] c4milo has joined the channel [20:49] c4milo2 has joined the channel [20:49] dipser: EyePulp: i would say mongoose [20:52] EyePulp: dipser: cool - looking now (also looking at mongodb-native [20:52] EyePulp: ) [20:53] dipser: i like mongoose because i can work with it like with an json object [20:53] dipser: typecasting, namespacing and nested objects [20:53] ekidd has joined the channel [20:53] JimBastard: sschuermann: one way to find out! :-) [20:53] sschuermann: grml ;) [20:54] dipser: but i dont know how to put the models in another file :( [20:54] sschuermann: hell how i hate all this auth shit .... it turns every fun development into a nightmare and makes me shit bricks [20:54] sschuermann: i want my 1996 Interwebs mack [20:54] sschuermann: back [20:55] bradleymeck: at least you can talk to other sites [20:55] aurynn: Use Facebook for auth. [20:55] JimBastard: !warezserv [20:55] aurynn: :P [20:55] zigfrew has joined the channel [20:55] JimBastard: ohh wait, this isnt 1996 irc, sorry [20:56] EyePulp: heh [20:56] EyePulp: where's my eggdrop? [20:56] JimBastard: i just rolled some basic auth, was easy enough [20:56] JimBastard: EyePulp: i totally wanna make nodedrop, but i think the binary would be big [20:56] JimBastard: EyePulp: i made one for the browser that uses bookmarklet [20:56] JimBastard: its not really anything fancy [20:56] EyePulp: nice [20:57] codetonowhere has joined the channel [20:57] JimBastard: ACTION WinNukes EyePulp  [20:57] temp01 has joined the channel [20:58] aurynn: heh [20:58] EyePulp: haha - nice [20:58] aurynn: Winnuke [20:58] JimBastard: winnuke 24.169.*.* [20:58] JimBastard: take that cablevision [20:58] EyePulp: DCC THIS, mofo! [20:58] JimBastard: o wait [20:58] JimBastard: i forgot to netbus 24.168.*.* first [20:58] JimBastard: ahahaha [20:58] JimBastard: windows [20:58] JimBastard: i forgot to netbus 24.169.*.* first [20:58] JimBastard: oops [20:59] sschuermann: more old sacks around [20:59] sschuermann: geezers! [20:59] sschuermann: ;) [20:59] aurynn: Remind me that I've been on IRC for 15 years, why don't you? [20:59] jacobolus has joined the channel [20:59] JimBastard: :p [20:59] JimBastard: the best though was netwear [21:00] halfhalo: lol [21:00] JimBastard: http://www.jimbastard.com/Jim_deletes_the_tenth_grade.html [21:00] EyePulp: yeah... knocking around the CS labs on mosaic seems like a looong time ago. [21:00] JimBastard: see ya 10th grade [21:00] halfhalo: speaking or irc bots, I;'m finally getting a nice auth system in place for mine [21:00] JimBastard: netware! [21:00] JimBastard: we seem to have lost _announcer [21:00] JimBastard: _frankie: is running strong [21:00] JimBastard: maushu has been gone for a while [21:00] halfhalo: lol [21:01] halfhalo: As soon as I finish my palm-feed plugin im doing a twitter plugin [21:01] AAA_awright: Are there any Nodejs user groups? [21:01] wink_: AA? [21:01] AAA_awright: That would be something fun to start [21:01] halfhalo: since plugins are retardedly easy to write for my bot [21:01] aurynn: I'm going to be starting one where I live [21:02] davidc_ has joined the channel [21:02] halfhalo: plugin example: http://github.com/halfhalo/Node.js-IRC/blob/master/plugins/vendor/hello.js [21:02] AAA_awright: Where would that happen to be, may I ask? [21:02] technoweenie has joined the channel [21:02] Kami_ has joined the channel [21:03] sschuermann: ACTION gives more db to the headphone  [21:05] satori_ has joined the channel [21:10] aurynn: AAA_awright, Calgary, Alberta [21:10] jacobolus has joined the channel [21:11] abiraja has joined the channel [21:12] AAA_awright: aurynn: Do you have any clue how many interested people are in the area? [21:12] aurynn: not as yet [21:13] aurynn: My time is sopped up on other stuff atm, sadly [21:13] christophsturm has joined the channel [21:14] JohnnyL has joined the channel [21:15] JohnnyL: do you know if node.js has a sychronous agent based smp architecture available? [21:17] loincloth has joined the channel [21:20] loincloth has joined the channel [21:20] Kami_ has joined the channel [21:20] jacobolus has joined the channel [21:23] sschuermann: ACTION finds teh comment "Also, we need to install hashlib, a NodeJS library provided by mr Brainfucker:" very convincing [21:24] halfhalo: lol [21:26] derferman has joined the channel [21:26] rnewson has joined the channel [21:27] kjftw has joined the channel [21:28] Druide__: is there something like "curl" for node.js? [21:28] JimBastard: Druide__: yeah [21:29] JimBastard: Druide__: http://github.com/cloudhead/http-console [21:29] JimBastard: npm install http-console [21:29] mikew3c has joined the channel [21:29] JimBastard: http-console localhost [21:29] JimBastard: GET / [21:29] JimBastard: boom [21:29] ivong has left the channel [21:29] Druide__: oh cool [21:29] JimBastard: cloudhead rules [21:29] Druide__: need to fetch ads from my advertiser and alter them [21:29] rnewson has joined the channel [21:29] rnewson has joined the channel [21:29] JimBastard: Druide__: programmatically? [21:29] Druide__: they don't provide iframe tags.. just document.write [21:30] richcollins has joined the channel [21:30] JimBastard: http-console is like curl, its a CLI [21:30] Aria: Fun! [21:30] JimBastard: maybe you want to do scraping? [21:30] Aria: I was going to work on making document.write work with my html parser in jsdom this week, with any luck [21:30] Druide__: document.write sucks [21:30] Druide__: cause it blocks [21:30] Druide__: this is an example url: http://ads.quartermedia.de/jserver/acc_random=2323/SITE=METALFLIRT.DE/AREA=/AAMSZ=160x600 [21:31] Aria: ... why's it suck? You want to modify something all in RAM async? [21:31] Aria: It's not like the CPU would be idle... [21:31] Druide__: Aria document.write on clientside sucks [21:31] Druide__: :) [21:31] davidc_: is there a way to write a single header without an actual http code? [21:32] Aria: Hehe. I have no real problem with it anymore. [21:32] Druide__: cause? [21:32] davidc_: say I want to only set content-type independently [21:32] davidc_: response.writeHeader(false, {'Content-Type': 'application/html'}); or whatever. [21:32] ph^ has joined the channel [21:32] Druide__: Aria, the problem is i only get the document.write tags [21:32] Aria: Well yeah. That's where my work comes in ;-) [21:32] Druide__: what have you done? [21:33] Druide__: i tried document.write refactor functions [21:33] Druide__: but the problem is, ther could be another document.write inside a document.write or after [21:33] Aria: I'm working on the html5 parser, and integrating it into jsdom [21:34] Aria: This is more a jsdom thing, but it should be able to interpret document.write into DOM nodes after I'm done [21:34] Druide__: recursivly? [21:34] Aria: Sure. Why not? [21:34] Aria: get to a document.write ... do it. [21:34] Druide__: that would be the big boom for every site owner which uses 3rd party ads [21:34] Aria: Repeat as needed. [21:35] Aria: I just need to have the parser call a new instance of itself whenever it gets to a document.write, and connect document.write up to it. [21:35] Aria: It's gonna take a little hacking, but the individual pieces exist. [21:36] Aria: (Assuming you don't mind running the rest of the javascript in the code, too) [21:37] zith_: is document.write actually used a lot in real world? [21:37] Aria: Yes. [21:37] pquerna: hmm. is there something for js that can detect unused variables? (maybe with knowledge of exports.* in node?) [21:37] hober: Aria: thanks very much for your parser work; it's exceedingly useful. [21:37] Aria: Geek blogs don't count as the real world. [21:37] Aria: hober: I'm tryin'! I may have found a 1/3 speed improvement, too, last night. We'll see if it pans out. [21:37] hober: nice! [21:37] Druide__: zith_ mostly from advertisers [21:37] c4milo2: pquerna: I have been locking for the same without sucess [21:37] hober: I've implemented the HTML5 tokenizer [21:37] hober: ... in emacs lisp [21:38] Aria: Nice. [21:38] hober: hooking it up to the html5lib test suite now [21:38] Druide__: advertisers and publisher should use an open format [21:38] Aria: Just the tokenizer? (The HTML5 tokenizer should need feedback from the parser to work right) [21:38] Druide__: for ad handling [21:38] Aria: They do, Druide__. Javascript ;-) [21:38] Druide__: so everybody can deliver or request ads on a standard [21:38] Druide__: ahh Aria fuck it [21:38] hober: I'll eventually add the parser, or enough of a dummy parser to do the cdata/rcdata/script data/etc switching [21:38] pquerna: c4milo2: yeah, already use jslint + the google closure-linter, but they don't detect that specific thing. [21:39] Druide__: document.write a script source, which document writes an ifram, therin another document.write another script source [21:39] hober: but just the tokenizer is actually quite useful for writing some pretty cool major-mode features on top [21:39] Druide__: that sucks [21:39] c4milo2: pquerna: same here :) [21:39] zith_: Aria: i wouldnt know.. i dont follow web development blogs much :) [21:39] Aria: I'm impressed, hober. [21:39] zith_: Druide__: i see [21:40] Druide__: Aria: actually i know a company which uses node.js as adserver [21:40] Druide__: www.adcloud.de [21:40] Aria: I'm not surprised. [21:40] Aria: ad servers tend to be pretty progressive. [21:40] Aria: Ad consumers less so. [21:40] Aria: (I used to work for one.) [21:40] Druide__: my advertiser uses microsoft stuff [21:40] lachlanhardy has joined the channel [21:41] JohnnyL: so i guess no SMP for node.js? [21:41] Aria: JohnnyL: Better than that. It'll scale across networks. Use processes! [21:41] Aria: (Okay, so not neccesarily SMP -- more like NUMA with message passing.) [21:42] LFabien has joined the channel [21:42] Aria: Do you actually have a task, JohnnyL, that needs shared memory, and multiple threads of execution? [21:42] Druide__: JimBastard is http-console only usable as cli? [21:43] JimBastard: Druide__: yeah [21:43] Druide__: oh okay, i need it inside a script [21:43] JimBastard: Druide__: if you want to parse something using node after DOM ready you might have issues [21:43] JimBastard: Druide__: http://blog.nodejitsu.com/jsdom-jquery-in-5-lines-on-nodejs [21:43] JohnnyL: Aria, i am using SMP and don't want the other core to be idle for heavier tasks, like uploading/etc. [21:44] JimBastard: that will get you started, but i dont think its gonna solve your problems [21:44] Aria: ... How fast are you uploading?! [21:44] Aria: Are we talking gbps? [21:44] JohnnyL: Aria, depends on how many people use the server i suppose. I just want it to scale without having to rewrite it in another language later on. [21:45] Aria: Yeah. .. you are way prematurely optimizing. [21:45] Aria: (doubly so since you could just use multiple processes if you were ever CPU-bound... but dude, that's a network-bound task, not CPU-bound) [21:45] Aria: Druide__: http://github.com/aredridel/html5/blob/master/doc/jquery-example.js [21:46] Aria: If you're running on a 200mhz ARM, then yes, you might be CPU-bound for uploads. But uploads are so not a CPU heavy task. [21:47] JohnnyL: ah ok [21:47] Aria: You sound like you're used to a thread-heavy environment, where your CPUs live for task-switching. [21:47] jacobolus has joined the channel [21:47] JimBastard: Aria: neither of those are going to pick up on document write though? [21:47] Aria: Whereas with Node, it'll just round-robin on each available socket, letting the OS buffer a bit of data. You can pass some serious traffic without bumping the CPU that way. [21:48] Aria: JimBastard: Not yet, but I'm gonna wire that in REAL SOON now. [21:48] JimBastard: nice [21:48] Aria: (all the parts exist) [21:48] JimBastard: we've had a few people approach us for scraping [21:48] JimBastard: seems to be a common need [21:48] Aria: (just gotta make a document.write that calls the parser in jsdom, and make it actually run the scripts it parses) [21:48] Aria: I'm sure. [21:48] pquerna: ssl-- [21:48] v8bot: pquerna has taken a beer from ssl. ssl now has -1 beers. [21:48] JimBastard: well, you want to capture the whole ready event right [21:48] Aria: What I ported the parser for is a scraping proxy server. [21:49] Aria: (so I can basically run greasemonkey server-side.) [21:49] nroot7 has joined the channel [21:49] bradleymeck: is it evented? [21:49] aurynn: Is there a good auth lib yet? [21:49] JimBastard: aurynn: what kind of auth [21:49] bradleymeck: http://github.com/ciaranj/connect-auth covers quite a few [21:49] Aria: SASL? Web? [21:49] aurynn: for my webapp stuph [21:51] bradleymeck: aria does your parser have an evented interface? [21:51] Aria: Yes it does. [21:51] aurynn: oh, that's right. I should publish my uri router to github [21:53] Aria: bradleymeck: It takes either a string or an EventEmitter that emits data/end as input. [21:54] Aria: (so you can pump a file into it) [21:54] Druide__: JimBastard don't need the dom [21:54] bradleymeck: yea, looking at it now, been stuck with htmlparser for a while for some chunked stuff im doing but its slow and only spews out at end [21:54] Druide__: just the replied content from a simple GET request [21:54] JimBastard: Druide__: then use the request module [21:54] JimBastard: ? [21:55] Druide__: ok [21:55] Aria: Yeah. This builds a DOM as you go, though like anything that makes a DOM, you have to wait at least somewhat before you can start serializing. [21:55] Druide__: <- new to node.js [21:55] Aria: But you can at least stream INTO it. [21:55] JimBastard: its wonderful [21:55] JimBastard: welcome to the club [21:55] everton has joined the channel [21:55] JimBastard: :-D [21:55] Druide__: yeah [21:55] Druide__: after looking around [21:55] Aria: I'm working on making an evented output that can run in synch with the input, so as soon as the head is ~final, it can start serializing it. [21:55] Druide__: i wanted to use the http_nginx_push_module [21:55] Druide__: but it seems not that much supported [21:55] JimBastard: dunno that [21:56] Druide__: and it seems node.js is really what i need [21:56] bradleymeck: aria, i have a have a modified jsdom that has some basic DOM events, probably can just use that [21:56] Druide__: for chat later on my page [21:56] Druide__: instant notification of new mail and so on [21:56] Aria: neat, bradleymeck. Got a public repo? [21:56] bradleymeck: nope, got a work only repo :( [21:56] Aria: Aw. [21:57] Aria: (just be aware that HTML5 parsing isn't always linear. It goes back and reparents stuff if you screw up your HTML) [21:57] Druide__: JimBastard i'm just evaluating if i should use the socket.io module (websockets) or Faye module (bayeux protocol) [21:57] bradleymeck: ewww [21:57] bradleymeck: but script tags always run linear? [21:57] JimBastard: socket.io seems nice [21:58] Aria: I need to re-read that section of the spec, actually. I suspect not. [21:58] bradleymeck: ACTION goes off to read [21:58] Aria: (that said, there's certain cases where reparenting won't happen, and once elements other than head and body are closed, nothing gets inserted into them that's not by DOM manipulation) [21:58] Aria: (so you can use those as synch points to start emitting from) [21:59] tjholowaychuk: bradleymeck: i think there is an async attr now [21:59] tjholowaychuk: or something [22:00] Aria: There is [22:05] ekidd has joined the channel [22:05] keturn: I just published my app on npm, although it's a little weird because I think I'm publishing an app and not a module, but anyway [22:05] isaacs: keturn: sure, that's fine [22:05] Aria: Nothing wrong with that... [22:05] isaacs: keturn: arguably "npm" is an app, not a module, and it's published on there [22:05] Aria: (especially if an app has dependencies...) [22:06] keturn: npm seems to be having problems parsing the dependencies I gave it [22:06] isaacs: keturn: what's your thing? [22:06] keturn: isaacs: lintnode [22:06] isaacs: keturn: yeah, 0.2 is not a valid semver [22:07] isaacs: keturn: should be >= 0.2.0 or something [22:07] bradleymeck: aria, it seems it goes into linear fashion and the output just gets messed with after (ie if document.write("
") is fired it is put in place (but after script tag) and nested scripts act the same instead of doing recursion if im reading this right) @_@ they really should explain script nesting level better [22:07] isaacs: keturn: need 3 numbers [22:07] Aria: Submit comments~! [22:07] bradleymeck: oh and DOM mutation events do not fire from document.write [22:07] Aria: Oh, interesting. Jerks. [22:08] SubStack: ACTION is in Oakland! [22:08] bradleymeck: odd that it does fire from innerHTML [22:09] halfhalo: ACTION should publish his irc bot.... [22:10] ooooPsss: isaacs: is there a chance to know how many installs people did using npm? [22:11] isaacs: ooooPsss: i don't have that info [22:11] isaacs: ooooPsss: but people keep asking for it. maybe someday, i dunno [22:11] Aria: Counters++ [22:11] v8bot: Aria has given a beer to Counters. Counters now has 1 beers. [22:11] ooooPsss: ok isaacs ty [22:11] Aria: More specific tracking -- [22:11] keturn: isaacs: 0.2 isn't a valid semver, but it ought to be *comparable to" a valid semver. [22:12] isaacs: keturn: nope. it's garbage. [22:12] Aria: .oO(Is that 0.2.0? 0.0.2? 0.2.*?) [22:12] isaacs: keturn: ^ [22:12] isaacs: keturn: is 0.2.3 > 0.2? are they equal? [22:12] aurynn: isn't 0.2 == 0.2.null ? [22:13] isaacs: keturn: rather than even get *into* that discussion, I just say "not a valid semver, sorry" [22:13] sschuermann: express makes a pretty good browser game dev env btw ;) [22:13] isaacs: way easier that way [22:13] jchris has joined the channel [22:13] keturn: oh, is 0.2.* a valid thing? [22:13] isaacs: keturn: nope [22:13] Aria: Nope. [22:13] isaacs: :) [22:13] isaacs: keturn: just do >= 0.2.0 [22:13] isaacs: keturn: human to human, i think that's what you mean [22:13] _tableton has joined the channel [22:14] keturn: I'll give you that >= 0.2 isn't worth arguing over, but the closely related is "compatible with all 1.x version numbers" [22:14] isaacs: keturn: but abstracting that out for the robots, it's better to just be a little explicit, i think [22:14] isaacs: keturn: for that you can do ">=0.2.0 <0.3.0" [22:14] isaacs: keturn: the ranges get ANDed together [22:14] keturn: which you can almost write as ">=1.0.0 <2.0.0", but things like "2.0.0a3" sort to less than 2.0.0, right? [22:15] isaacs: keturn: yeah, 2.0.0a3 is <2.0.0 [22:15] isaacs: keturn: you could do ">=1.0.0 <=1.9999.9999" [22:16] richcollins has joined the channel [22:16] isaacs: keturn: if you can write up a clear argument for how it should work, with documentation, and thorough test cases, then i'll accept a patch [22:16] keturn: fair enough [22:16] isaacs: keturn: i'm not religious about it being a particular way, just religious about it being clear, documented, and test-covered. semver has to work 100%. when it doesn't, my life gets very annoying. [22:17] isaacs: and, honestly, the lazy thing for you is to just put a ".0" in your package.json [22:17] keturn: putting in .99999 just seems hacky. what if someone gets cute and decides their minor version number is 20100927? not enough nines! [22:17] isaacs: hehe [22:17] isaacs: keturn: you know, the yui3 gallery's version is a date [22:18] sschuermann: i can now say the example from howtonode is NOT working [22:18] isaacs: YYYY.MM.DD is a valid semver [22:19] keturn: If you only make backwards-incompatible changes on the new year. and you don't add any new features in the middle of a month. :) [22:19] 5EXABI04F has joined the channel [22:19] 20QAB2IJ5 has joined the channel [22:23] isaacs: well, yeah,it throws off the "sem" part of "semver" [22:23] isaacs: but no one really knows how that's supposed to work anyway [22:23] isaacs: the semantics are socially constructed [22:23] keturn: err. I thought that was the useful part. :-/ [22:23] isaacs: it's useful if you use it [22:23] isaacs: for all i care, it'd be better if version was just a single number. [22:23] isaacs: but we've been doing this dot-separated thing for a while now [22:25] sschuermann: ACTION curses everything fbauth related [22:25] keturn: when maintaining a library for a while, I found that as a developer, I wanted to use semver (although I'm not sure if we had the name "semver" for it at the time) [22:25] keturn: but there's actually a lot of public perception and marketing around version numbers [22:26] Aria: Quite. Thankfully, mostly compatible. [22:26] keturn: sschuermann: I noticed that there's a connect middleware for RPX [22:26] Aria: (Also, largely centered around "1.0.0" and "version matching version of thing I'm using") [22:27] sschuermann: the point is: i know checikenshit about connect [22:28] keturn: ditto. I just discovered connect today, when upgrading this thing that used express [22:29] keturn: I'm not really sure what express does now that there's connect.route, but I decided it wasn't worth worrying about, because there is a migration guide from the old version of express to the new version, which is mostly what I need to know. [22:30] tjholowaychuk: keturn: I moved the routing to connect because its useful for other frameworks as well [22:30] tjholowaychuk: it was not my intention to have people using connect directly though, it is not really meant for that [22:30] zith_: tjholowaychuk: the "log filter" link on http://tjholowaychuk.com/post/664516126/connect-middleware-for-nodejs is broken [22:30] zith_: dont know it's an issue [22:31] keturn: thankfully, there is package management, so the fact that I have a half-dozen dependencies doesn't drive me nuts [22:31] devinus: js/regex gods [22:31] devinus: can anybody improve on this: https://gist.github.com/18aa3ef46ef88b5bffde [22:32] devinus: ACTION has been inspired after reading (and not understanding) http://jmrware.com/articles/2010/jqueryregex/jQueryRegexes.html [22:33] kgf: I'm guessing splitting the leading/trailing dash regexps into separate ones might be faster, based on what I (only somewhat) recall reading when reading about generic trimming regexp approaches [22:34] c4milo has joined the channel [22:34] kgf: the first could be potentially shortened to [^\w\s-] if you don't mind the addition of _ to the mix [22:35] eisd: kgf: \w includes underscores [22:35] kgf: I know [22:35] kgf: that's my point [22:35] kgf: the original first regex didn't [22:35] eisd: Why would it? [22:35] isaacs: devinus: s.replace(/[^A-Za-z0-9-\s]+/g, ' ').trim().replace(/\s/g, '-') [22:35] eisd: The property name reads "_NON_ALPHANUMBERIC_RE" [22:35] kgf: depends on what he wants to do with it I guess [22:36] devinus: kgf: you mean doing that as an OR is slower than two separate runs? [22:36] Nietecht has joined the channel [22:36] kgf: eisd: well it's already got spaces and - in it :P [22:36] isaacs: oh, you actually want to *remove* non-alphanums. [22:36] eisd: kgf: heh [22:36] isaacs: well that's odd [22:36] isaacs: foo.bar turns into foobar rather than foo-bar [22:36] eisd: Yes, odd naming conventions there [22:36] boaz has joined the channel [22:37] eisd: If it's named non-alphanumeric, why include \s and -? [22:37] devinus: eisd: what would you call it? [22:37] jchris1 has joined the channel [22:37] hassox has joined the channel [22:37] eisd: I would put non-alphanumeric in one pattern e.g. [^A-Za-z\d] [22:37] eisd: Since it appears you have another pattern for matching \s and - [22:38] eisd: for leading and trailing dash, /^-+|-+$/g [22:38] ajsie_ has joined the channel [22:38] kgf: devinus: maybe tl;dr, but http://blog.stevenlevithan.com/archives/faster-trim-javascript [22:38] eisd: v8: "---foo.bar, this is what you're currently doing---".replace(/^-|-$/g, "") [22:38] v8bot: eisd: "--foo.bar, this is what you're currently doing--" [22:38] eisd: v8: "---foo.bar, this is what you want---".replace(/^-+|-+$/g, "") [22:38] v8bot: eisd: "foo.bar, this is what you want" [22:39] devinus: eisd: right but at that point there can only be one at the beginnning or end [22:39] devinus: not multiple [22:39] eisd: eh? [22:39] derferman has joined the channel [22:39] eisd: You only want to strip one from beginning and end? [22:39] devinus: eisd: there will only BE one, not multiple [22:39] devinus: because of the replace before it [22:40] eisd: oh [22:40] eisd: You can group the first and third into one expression [22:41] devinus: isaacs: right, e.g. "Don't tread on me" => "dont-tread-on-me" instead of "don-t tread on me" [22:41] devinus: "don-t-tread-on-me" i mean [22:41] JimBastard: dont thread on me [22:41] eisd: hehe [22:43] isaacs: devinus: hm. [22:43] sschuermann: do not read on me? ;) [22:44] dannycoates has joined the channel [22:45] davidc_ has joined the channel [22:47] richcollins has joined the channel [22:47] dannycoates: konobi: ping [22:55] sudoer has joined the channel [22:56] sam_: Does anyone have any idea why socket.writeable would return false no matter what? Even when the socket is in working order... [22:56] pedrobelo has joined the channel [22:57] bradleymeck: mmm connect's staticProvider apparently does not like blank files [22:58] rnewson: sam_: there was a writeable vs writable discussion on the mailing list. writeable is a doc typo, I think? [22:58] sam_: Okay, I'll try writable :) [22:58] SteveDekorte has joined the channel [22:59] sam_: Thank you :) [22:59] rnewson: yw. [23:00] sam_: rnewson: Still false [23:00] hpoydar has joined the channel [23:01] rnewson: :( [23:01] rauchg_ has joined the channel [23:03] jashkenas has joined the channel [23:03] gerred has joined the channel [23:04] sudoer has joined the channel [23:05] nerdEd has joined the channel [23:12] lhardy has joined the channel [23:14] tjholowaychuk has joined the channel [23:15] GriffenJBS_ has joined the channel [23:16] banjiewen has joined the channel [23:20] niko has joined the channel [23:24] necrodearia has joined the channel [23:25] jesusabdullah has joined the channel [23:26] nerdEd has joined the channel [23:26] jchris has joined the channel [23:28] Akufen has joined the channel [23:28] ryan[WIN] has joined the channel [23:28] DRMacIver has joined the channel [23:28] zum has joined the channel [23:28] FireFoxIXI has joined the channel [23:29] bradleymeck has left the channel [23:32] dgathright_ has joined the channel [23:34] EyePulp has joined the channel [23:34] FireFoxIXI has joined the channel [23:40] stepheneb has joined the channel [23:41] sprout has joined the channel [23:41] vilhonen has joined the channel [23:44] nerdEd has joined the channel [23:46] jchris has joined the channel [23:46] Nietecht has joined the channel [23:47] emmanueloga has joined the channel [23:48] [[zz]] has joined the channel [23:49] emmanueloga has joined the channel [23:51] sprout has joined the channel [23:53] emmanuel_oga has joined the channel [23:54] abiraja has joined the channel [23:54] aheckmann has joined the channel [23:55] nerdEd has joined the channel [23:57] alexb_ has joined the channel [23:58] Neura has joined the channel