[00:00] ossareh has joined the channel [00:00] naturalethic: i presume its converting to cstring, but not paying attention to the source string length [00:01] naturalethic: utf-8 encoding [00:01] masahiroh has joined the channel [00:01] mikew3c_ has joined the channel [00:01] mikeal: what is the status of email clients in node? [00:03] mikeal: there are 3 parsers I see that are all by people i don't recognize [00:03] paulrobinson has joined the channel [00:03] ianward has joined the channel [00:03] davidascher has joined the channel [00:04] mikeal: and the code doesn't look great [00:04] mikeal: *sigh* [00:06] roberthahn has joined the channel [00:07] isaacs: mikeal: i think you know what you must now do. [00:08] mikeal: yu [00:08] mikeal: er yup [00:08] ryah: bnoordhuis: can you please review: https://gist.github.com/720883 [00:08] mikeal: i actually wish i had time to write a proper SMTP client and server as well [00:08] mikeal: but i don't need them at the moment so I probably wont [00:09] isaacs: mikeal: this would be awesome: var m = require("mail").createMessage({to, from, cc, bcc, title}) ; fs.createReadStream(someFile).pipe(m) [00:10] isaacs: and then... [00:10] isaacs: m.addAttachment({mime, filename, etc}) would be another writestream [00:11] mikeal: more than anything, i need a parser [00:11] paulrobinson_ has joined the channel [00:11] ryah: bnoordhuis: nope - that break sigint-infinite-loop [00:11] mikeal: after that I'll write a generator [00:11] yonkeltron has joined the channel [00:11] yonkeltron: any debian users feel like helping me confirm a bug before i got reporting it? [00:11] ryah: bnoordhuis: it can't wait until it gets back to the event loop. [00:12] herbySk has joined the channel [00:12] bnoordhuis: ryah: you mean that it won't allow you to ^c out of a while(1) loop? [00:12] ryah: yeah [00:13] isaacs: ircretary: tell mikeal: with that, i could maybe build some kind of "npm password-reset" command. [00:13] ircretary: isaacs: I'll be sure to tell mikeal: [00:14] TooTallNate has joined the channel [00:14] webr3: FastGraph = require('http://openjs.net/api/core.js#FastGraph'); // universal require works anywhere, couple with http cacheing for server side - useful or not? /me likes [00:15] bnoordhuis: ryah: dirty hack: write to pipe and set a sig_atomic_t flag [00:15] ryah: bnoordhuis: i think i'll just disable raw mode and _exit() [00:15] bnoordhuis: ryah: on the second ^c simply call _exit() [00:15] bnoordhuis: that's what the flag is for btw [00:16] bnoordhuis: ryah: big disadvantage that no cleanup handlers are run, some libraries don't take kindly to that [00:16] ryah: *shrug* [00:16] ryah: libraries that can't handle being killed are not good libraries [00:17] bnoordhuis: oh, young whippersnapper [00:17] patricka_ has joined the channel [00:17] davidc_ has joined the channel [00:17] isaacs has joined the channel [00:19] EGreg_ has joined the channel [00:19] bnoordhuis: ryah: if you want, i'll see if i can come up with a workable solution tomorrow [00:19] CIA-54: node: 03Ryan Dahl 07master * r3fceb49 10/ (4 files): Style - http://bit.ly/hf9XN1 [00:19] CIA-54: node: 03Ryan Dahl 07master * r711196c 10/ src/node.cc : [00:19] CIA-54: node: Don't call exit() from the signal handler [00:19] CIA-54: node: Fixes issue #457 - http://bit.ly/fYlRxA [00:20] nbqx has joined the channel [00:20] bnoordhuis: that's also a way to say no [00:20] wijaa has joined the channel [00:20] ryah: i think we should be exiting really fast after getting a sigint [00:21] bnoordhuis: why the rush? [00:22] strmpnk has joined the channel [00:22] ryah: i hate waiting for things to exit [00:22] altamic has joined the channel [00:23] isaacs: bnoordhuis: ryah feels every last tick of the processor. [00:24] muk_mb: is there something similar to capistrano for node.js yet? [00:24] bnoordhuis: hah, try enterprise java development for a while [00:24] bnoordhuis: you'll either develop a sense of zen or go mad in the process [00:25] mraleph has joined the channel [00:25] mraleph has left the channel [00:26] tjholowaychuk: muk_mb: you can do the same things pretty easily with shell scripts [00:26] tjholowaychuk: cap kinda sucks IMO [00:26] tjholowaychuk: ive had far more luck with sh scripts anyway [00:27] caligula has joined the channel [00:30] muk_mb: yeah? I maintained 6 rails servers at my old job, cap worked great for us [00:31] tjholowaychuk: muk_mb: ah, well if you are experienced with it just use cap, there is no need for a node specific one [00:31] tjholowaychuk: I have heard of people using it with php/drupal etc [00:31] muk_mb: oh true, silly me [00:31] tjholowaychuk: :D [00:32] caligula: anyone know if its possible to handle econnrefused from net.createconnection? [00:32] caligula: e.g. to wait a few secs then try connecting again? [00:33] caligula: looks like i cant listen to the error event soon enough [00:33] twoism has joined the channel [00:34] davidascher has joined the channel [00:36] ryah: caligula: hm.. [00:36] ryah: caligula: got a test? [00:36] ryah: you should be able to setup a on('error') listener before the connect() [00:36] gkatsev has joined the channel [00:36] ryah: oh - maybe not.. hm [00:36] subsume has joined the channel [00:36] ryah: maybe we need to stick that all in a next tick [00:37] subsume: I'm trying the node.js chat app but its giving me a lot of long poll errors. I'm not sure I understand them. I'm seeing 502s errors in my console [00:38] vnguyen: can i use npm to package a command line util? [00:38] ben_alman has joined the channel [00:38] caligula: ryah: if i do just conn=net.creatConnection(1234) and nothing is listening on 1234 [00:38] caligula: ryah: then ill immediately get the exn [00:40] caligula: ryah: by next tick do u mean that the actual connect happens when my code stops (like after adding an error listener) and node.js runs its stuff? [00:41] jamescarr has joined the channel [00:41] itissid has joined the channel [00:41] jamescarr: isaacs, is there someway to "uninstall everything" ? [00:42] indutny has joined the channel [00:42] isaacs: jamescarr: npm ls installed --noreg | grep -v 'npm@' | npm uninstall ; npm uninstall npm [00:42] isaacs: oh wait, just a sec, no [00:42] itissid: Why has Gmail Comet has not been replaced by a lighter websockets based app? [00:42] jamescarr: yeah [00:42] jamescarr: I dont want to uninstall npm :) [00:42] jamescarr: just all the packages [00:42] indutny: ryah: hi! you've asked to remind you about my event-prop patch [00:42] isaacs: jamescarr: npm ls installed --noreg | grep -v 'npm@' | awk '{print $1}' | xargs npm uninstall [00:43] jamescarr: oh you unix madman you [00:43] indutny: hi folks! :) [00:43] ryah: caligula: https://gist.github.com/720920 [00:43] ryah: caligula: seems okay [00:43] breccan has joined the channel [00:44] Durl_ has joined the channel [00:45] jamescarr: isaacs, hmmm... has something changed with bundle? [00:45] aconbere has joined the channel [00:45] isaacs: jamescarr: yes. a lot. [00:45] indutny: ryah: have you seen my message ? :) [00:45] jamescarr: npm bundle ./vendor is not downloading dependencies :( [00:45] isaacs: jamescarr: it was experimental. now it's proper. [00:45] isaacs: jamescarr: please read through `npm help bundle`. it works differently now. [00:45] ryah: indutny: yes - will reply in a bit [00:45] isaacs: jamescarr: it's better. it'll hurt for a minute. but it's worth it. [00:45] indutny: ok, np, just to be sure [00:45] jamescarr: isaacs, ah I see [00:46] isaacs: jamescarr: some things had to be changed to be able to treat bundled deps as first-class citizens. [00:47] jamescarr: you're right [00:47] jamescarr: it's much better [00:47] jamescarr: thanks man [00:47] ryah: down to 30 unread mails in nodejs-dev [00:47] ryah: *whew* [00:48] isaacs has joined the channel [00:48] aconbere: ryah: cool, I can work with no !!, as long as you mention that in the pull request comments. [00:48] aconbere: Then I can appropriately update my own ideas of clever to match yours :) [00:48] hornairs has joined the channel [00:50] jamescarr: doh [00:50] jamescarr: does no.de still allow signups? [00:50] subsume: Is there a way to make a longPoll request without having the progress bar spin? [00:50] MattDiPasquale has joined the channel [00:52] jwl: how do I post a body in a request on node.js? [00:52] jwl: i know how to set the headers but not the body [00:52] thebigbad: jwl: request.write [00:52] jwl: okay thanks [00:53] c4milo has joined the channel [00:53] isaacs: jwl: response.write("hello"); response.write("world"); response.end("done now, this string is optional") [00:53] thebigbad: subsume: are you using a "script tag that spits out more and more js" for your longpoll hack? [00:53] isaacs: jwl: or: fs.createReadStream("some-file").pipe(response) [00:53] caligula: ryah: thanks for the code sample, it works for me as a script [00:53] caligula: ryah: but not in the repl, which is where i was testing [00:54] caligula: ryah: will try in my script [00:54] jwl: isaacs: aight! [00:54] subsume: thebigbad I don't think so. Forgive me I'm using a snippet I found and I'm groping my way through it. [00:54] subsume: Its a common chat script: https://github.com/ry/node_chat/blob/master/client.js [00:54] jwl: isaacs: so if i use settimeout with response.write that is like streaming to the browser? [00:54] thebigbad: subsume: no worries. the reason I ask is that async xhrs should block (prevent the page from thinking it was done loading) [00:55] thebigbad: *shouldn't block [00:55] pengwynn_ has joined the channel [00:55] thebigbad: which leaves the other kind of longPoll hack [00:55] subsume: thebigbad I thought so too. AFAIK its just using async calls. [00:55] yonkeltron: tjholowaychuk: thanks for your input on that connect bug i reported this evening. looks like you were right and node on debian squeeze might not be using the right version of libv8. i have filed a debian bug and am awaiting the confirmation email as we speak. [00:55] subsume: thebigbad and yet onload it just spins and spins and spins. all works fine. the spinning annoys me though. [00:56] tjholowaychuk: yonkeltron: no problem, someone else had that issue last week I think [00:56] tjholowaychuk: im just not sure how exactly, I figured node always used the ./deps/v8 one [00:56] pengwynn__ has joined the channel [00:56] tjholowaychuk: if not maybe it should [00:57] thebigbad: subsume: are you seeing a lot of 'long poll error. trying again...' [00:57] yonkeltron: tjholowaychuk: yeah, i think the debian kids might have just tried to get too cute [00:57] subsume: thebigbad yes. =( [00:57] subsume: thebigbad I looked and the console seems to be experiencing some 502 errors. [00:57] thebigbad: it's set to wait 10 seconds before retrying. did you take that setTimeout out? [00:58] yonkeltron: tjholowaychuk: since the release freeze is underway, they might choose just to remove node from squeeze rather than recompile it properly. [00:58] isaacs: jwl: yes. [00:58] tjholowaychuk: yonkeltron: what is squeeze? [00:58] isaacs: jwl: you can do anything at all, now or later, but it's your responsibility to make sure that .end() is eventually called. [00:58] yonkeltron: tjholowaychuk: oh, debian squeeze [00:58] subsume: thebigbad this is where my understanding breaks down. should I remove the setTimeout? [00:58] isaacs: jwl: the .pipe() (or sys.pump()) will do that for you if you pipe a readstream into it [00:59] thebigbad: subsume: no, it's good--it should keep the xhrs from churning a lot [00:59] tjholowaychuk: yonkeltron: oh its the code name haha gotcha [00:59] jamescarr: does no.de still allow signups? I just shifted through my emails and found the invite :) [00:59] subsume: thebigbad i didn't remove it. I only removed the actual presentation of the message... haha. [01:00] thebigbad: subsume: I don't see anything that would cause spinning there, sorry [01:00] subsume: let me paste my modifications. they should be minor however. [01:00] yonkeltron: tjholowaychuk: sorry. anyway, thanks again and i'm attaching the bug number to the github issue. [01:00] indutny: ryah: brb, 1 hour later. [01:00] tjholowaychuk: yonkeltron: no problem, the other issue was debian as well so that will be good to get cleared up [01:01] dnolen has joined the channel [01:01] subsume: thebigbad here's my usage of the script http://dpaste.com/281330/ and here's my modification, but I didn't really change much http://dpaste.com/281329/ [01:02] yonkeltron: tjholowaychuk: it'd be a shame to have a new version of debian ship with a broken-ass node. alright, have a good one. [01:03] jwl: isaacs: okay [01:05] subsume: thebigbad the console says /recv/ is the culprit [01:05] subsume: but this should have all happened async (!) [01:06] ryah: caligula: let me know if you can modify that script to fail [01:06] thebigbad: subsume: I agree. it looks like more than one place calls longPoll, so I'm trying to see if that could get out of control [01:06] Wyverald has joined the channel [01:06] jherdman has joined the channel [01:07] thebigbad: that GET in send should be freaking out the server [01:07] subsume: thebigbad which paste? [01:07] thebigbad: nvm, the second arg gets turned into query string params [01:08] CIA-54: node: 03Evan Larkin 07master * rbc02d47 10/ lib/fs.js : [01:08] CIA-54: node: Fix variable leak. [01:08] CIA-54: node: Fixes issue 461 - http://bit.ly/fhYTo3 [01:08] CIA-54: node: 03Travis Swicegood 07master * r86727b1 10/ lib/child_process.js : [01:08] CIA-54: node: fix a typo in comment [01:08] CIA-54: node: fixes issue 464 - http://bit.ly/fVVfYU [01:08] subsume: thebigbad i am actually noticing a few requests at the same time...... [01:09] tjholowaychuk: does writeHead() freak if the status is a numeric string? [01:09] tjholowaychuk: likewise with header field values as Buffers? [01:10] pengwynn has joined the channel [01:10] jimt has joined the channel [01:11] thebigbad: subsume: if the server is returning something jquery thinks is a success immediately when you request, then the xhrs will happen a lot [01:11] subsume: thebigbad which call, the first paste? [01:11] thebigbad: I'd suggest logging the status code and data you get back [01:11] thebigbad: http://dpaste.com/281329/ [01:12] subsume: thebigbad ok, in the longPoll function? [01:12] devinus has joined the channel [01:12] tjholowaychuk: ah nope its fine nvm [01:12] thebigbad: in the success handler of the ajax call in longPoll [01:13] sekimura has joined the channel [01:13] subsume: thebigbad do you happen to know the namespace for the status code? [01:15] ryah: does anyone want to debug this https://github.com/ry/node/issues/issue/465/ [01:15] ryah: i don't want to [01:16] isaacs: ryah: can you click the "edit" link and put ` ticks around the regexp? [01:16] isaacs: it's getting markdownified [01:16] isaacs: oh, nvm, there's a code sample [01:16] jimt_ has joined the channel [01:16] thebigbad: subsume: third arg of sucess is the xhr, is should have a .status [01:17] ryah: isaacs: done [01:17] matt_c has joined the channel [01:18] kenbolton has joined the channel [01:18] isaacs has joined the channel [01:19] jwl: i have in a file this code "module.exports.hello = function() {...} " how do i in the same file reference to hello() [01:19] Dreamer3 has joined the channel [01:19] jwl: thought this.hello() would work but it didnt [01:20] necrodearia has joined the channel [01:21] caligula: ryah: i cant get it fail as a script [01:21] caligula: ryah: only in the repl when createconnection is on its own line does it fail immediately, which is what i was running into [01:22] paulrobinson has joined the channel [01:22] jwl: anyone [01:22] caligula: ryah: i tried ur code in my script and it appears to be working nicely [01:23] ryah: caligula: okay [01:24] bruse has joined the channel [01:25] caligula: ryah: thx for the help [01:26] ryah: np [01:27] jchris has joined the channel [01:29] sprout has joined the channel [01:30] yonkeltron has left the channel [01:30] webr3 has joined the channel [01:31] c4milo has joined the channel [01:31] warz has joined the channel [01:32] rcy has joined the channel [01:38] CIA-54: node: 03Jeremy Martin 07master * r144b2a5 10/ (lib/events.js test/simple/test-event-emitter-num-args.js): Fix number of args emitted by EventEmitter during "fast case" (lte 3 args) - http://bit.ly/g51kCQ [01:38] CIA-54: node: 03Ryan Dahl 07master * r1dbbaa7 10/ test/simple/test-net-connect-handle-econnrefused.js : Add test to show ECONNREFUSED works - http://bit.ly/hZR0Tk [01:38] CIA-54: node: 03Jeremy Martin 07v0.2 * r3bb61a9 10/ (lib/events.js test/simple/test-event-emitter-num-args.js): Fix number of args emitted by EventEmitter during "fast case" (lte 3 args) - http://bit.ly/gHNgOl [01:41] zentoooo has joined the channel [01:41] anddd has joined the channel [01:42] davidc_ has joined the channel [01:42] pedrobelo has joined the channel [01:43] elijah-mbp has joined the channel [01:46] matt_c has joined the channel [01:48] isaacs has joined the channel [01:51] necrodearia has joined the channel [01:53] jamescarr has joined the channel [01:57] eml-mobile has joined the channel [01:57] eml-mobile has left the channel [01:58] polotek has joined the channel [01:58] mikeal has joined the channel [01:59] alexfner has joined the channel [01:59] jamescarr_ has joined the channel [02:01] CIA-54: node: 03Travis Swicegood 07master * re514f57 10/ lib/child_process.js : [02:01] CIA-54: node: Remove cruft that dealt with env parameter [02:01] CIA-54: node: Originally added in commit 078a48a9, this code dealt with an optional [02:01] CIA-54: node: env parameter that was passed to `exec`. The parameter was removed, but [02:01] CIA-54: node: this code was left. As it serves no purpose, removing it. - http://bit.ly/hbkKQC [02:01] CIA-54: node: 03Travis Swicegood 07master * r22cf5a2 10/ lib/child_process.js : [02:01] CIA-54: node: Simplify execution from "big if statement" [02:01] CIA-54: node: This code is functionally equivalent, but in a simpler form. Now new [02:02] jherdman has joined the channel [02:03] cardona507 has joined the channel [02:06] indutny has joined the channel [02:06] indutny: i'm back [02:07] indutny: ryah: any news ? :) [02:07] bradleymeck has joined the channel [02:11] necrodearia has joined the channel [02:11] eee_c has joined the channel [02:12] gkatsev has joined the channel [02:13] ryah: indutny: sorry. will reply tomorrow - the return value isn't what we agreed on [02:13] ryah: i thought it was going to be number of listeners it hit [02:13] indutny: ryah: we've discussed it with isaacs [02:13] isaacs: ryah: that doesn't quite work. [02:13] indutny: ryah: problem is if we returning number of listeners called - we can't actually know, was propagation stopped or not [02:14] indutny: for example, last of listeners can return 'false' and stop propagation [02:14] indutny: but count of listeners called will be equal to total listeners count [02:14] isaacs: ryah: that is, it doesn't give you the information necessary for almost any use case. what you really want to know is: a) were there side effects ornot, and b) wsa the event cancelled by someone [02:14] ryah: is that necessary for the 'ugprade' use case? [02:14] indutny: yes [02:14] indutny: but not only [02:15] indutny: this can be useful in many user projects [02:15] indutny: i suppose [02:16] subsume: thebigone so apparently a continuous XHR will cause the page to keep loading [02:17] CIA-54: node: 03Michael W 07master * r645c3b3 10/ (lib/timers.js test/pummel/test-timers.js): [02:17] CIA-54: node: Fixed: clearTimeouts calling multiple times [02:17] CIA-54: node: When clearTimeouts was called on a timer multiple times, it would break the [02:17] CIA-54: node: doubly-linked list along with future timeouts. This patch fixes that. - http://bit.ly/g6OiN8 [02:17] technoweenie has joined the channel [02:18] Wyverald: I wish javascript had continuations [02:19] isaacs has joined the channel [02:20] pengwynn has joined the channel [02:21] waqas: ACTION is writing some continuation based Lua at the moment [02:21] Dreamer3 has joined the channel [02:22] robmason_ has joined the channel [02:25] naturalethic: does node/v8 cache regex literals? [02:27] jashkenas: I think it does... [02:27] jashkenas: last time I benchmarked. [02:28] sivy: are there any OS libs in node? like, for searching the OS path, etc? [02:29] naturalethic: sivy: yeah check the docs for 'fs' and 'path' modules [02:29] naturalethic: sivy: and process.env [02:29] sivy: naturalethic: ah, process.env will help [02:29] rbranson: naturalethic: it's still going to involve a check against the cache, a variable will be faster [02:29] jamescarr: hey, can I get some quick feedback? developing a node.js training course :) [02:30] indutny: yep you can :) [02:30] jashkenas: rbranson: I'm not so sure -- you should benchmark it. [02:30] naturalethic: rbranson: thx [02:30] rbranson: not by a lot though :) [02:30] alek_br has joined the channel [02:30] naturalethic: yeah, avoiding the compile is enough [02:30] whyme has joined the channel [02:31] jamescarr: one sec [02:31] jamescarr: pushing the initial lessson structure :) [02:32] davidc_ has joined the channel [02:33] indutny: http://jsperf.com/regexp [02:33] indutny: looks like inline variant is faster [02:33] indutny: I think it caching and also [02:33] indutny: lookup to the scope costs much time [02:33] m0rganic has joined the channel [02:34] jashkenas: there you have it. [02:34] jashkenas: cached is faster in safari. [02:34] indutny: haha :) [02:34] indutny: so safari is not caching regexp [02:34] naturalethic: invert those -- safari is caching internally [02:37] rchavik has joined the channel [02:37] naturalethic: ah chrome 9 has it [02:37] indutny: so v8 has it too [02:37] naturalethic: cool [02:38] jamescarr: okay, so here's a rough draft of a proposed course I'm thinking of doing [02:38] jamescarr: https://github.com/jamescarr/nodejs-training [02:38] jamescarr: I'll probably rename "basics" [02:38] jamescarr: basics will cover stuff like console, process, ecmascript5, JSON, etc [02:40] indutny: jamescarr: I see only blank md files [02:40] evanmeagher has joined the channel [02:41] roberthahn: jamescarr: who's the course for exactly? what level of knowledge is assumed? [02:42] jamescarr: indutny, duh... it's just an initial structure :) [02:42] jamescarr: roberthahn, noobs [02:42] indutny: hahaha :) [02:42] jamescarr: roberthahn, I'll probably break "the basics" up [02:42] indutny: so what should I see? [02:42] sprout has joined the channel [02:42] indutny: :) [02:42] jamescarr: indutny, nothing till I finish putting the course together [02:42] roberthahn: so… you'll teach people what functions are, for loops etc? [02:43] jamescarr: I'm going to kind of assume that, but will do a quick refresher [02:43] mbrochh has joined the channel [02:43] jamescarr: it'll be geared towards people who have been programming [02:43] jamescarr: and are just new to node [02:45] jwl has joined the channel [02:46] roberthahn: alright. Not sure if this is a 'basic' topic or not, but i think you'll want to spend a bit of time walking through callback-style programming in general (the events chapter seems too specialized) [02:48] roberthahn: need to log out now. jamescarr: good luck on developing the course! I can see it being quite valuable! [02:48] roberthahn: goodnight! [02:48] vnguyen has joined the channel [02:49] isaacs has joined the channel [02:50] warz has joined the channel [02:51] meso has joined the channel [02:56] warz: hi all. im brand new to nodejs. is nodejs intended to run as its own web server, or can it run behind nginx for example? [02:56] banjiewen has joined the channel [02:56] indutny: it can be running behind nginx [02:56] indutny: but only if you not using websockets [02:56] hassox has joined the channel [02:56] indutny: nginx doesn't support them [02:56] indutny: for now [02:56] warz: ah ok. i wanted to toy with websockets, so i guess that's out. [02:57] whyme: warz: HAProxy could be a TCP load balancer in front of node [02:57] dark: jamescarr, you should highlight styles / patterns that you consider effective. i'm using ruby with sinatra, and i'm thinking in switching to node.js and express. but i don't know what is proper javascript style, how to structure the code, and so on. also a good guide to javascript pitfalls (there seems to be a lot) would be nice [02:57] evanmeagher has joined the channel [02:57] warz: ah yes. ive only read about haproxy. perhaps ill finally have a reason to try it out. [02:58] dark: but i'm sure that other tutorials focus on this, so you can skip some of it and maybe link to them.. [02:59] jamescarr: dark, eh, I'd probably teach what is in Javascript Patterns [02:59] jamescarr: but it's debatable stuff [02:59] jamescarr: most people say it's good form to use semi-colons [02:59] jamescarr: I always omit them [02:59] dark: why? [02:59] dark: i think that semicolon-happy languages look a bit heavy [02:59] jamescarr: the argument is that it causes less headaches [03:00] naturalethic: dark: http://jashkenas.github.com/coffee-script/ [03:00] dark: i would like to have a clean syntax, like ruby. or.. haskell. i saw some javascript code and it didn't looked very clean [03:00] jamescarr: it's just a matter of opinion though, like isaacs comma first convention :) [03:00] dark: naturalethic, yeah, i was thinking about it too. but is it feature complete? [03:00] naturalethic: i do all my node.js in coffeescript, it will be feature complete on dec 25 [03:00] isaacs: jamescarr: you know, all the args against semicolons are actually arguments against linefeeds. [03:00] jashkenas: dark: feature-complete, yes -- completely complete, not yet. [03:00] isaacs: that's why i say, no linebreaks in JS [03:01] dark: i was also thinking about compiling to javascript from haskell or ocaml :P but this would not make me to learn js [03:01] isaacs: "but waaaaahhh it's too hard to read, waaaa" crybabies! configure your editor to display ; as a crlf!! [03:01] dark: isaacs, hahaha hahaha [03:01] jamescarr: naturalethic, why do you use only coffeescript? [03:01] isaacs: linebreaks are simply not safe in js, and no one can figure out how to use them properly. they shoudl be removed fromthe language. [03:02] evanmeagher has joined the channel [03:02] naturalethic: jamescarr: why not? ... it's beautiful [03:02] rchavik has joined the channel [03:02] dark: naturalethic, a gift from santa claus, huh? [03:02] naturalethic: dark: heh i dunno, jashkenas runs the show [03:03] dark: oh interesting =) i'm already using little languages like haml and sass [03:03] indutny: brackets are much more dangerous [03:03] indutny: than ; [03:03] dark: will switch to node.js only with jade [03:03] jamescarr: you know, in my tutorial I tell people there are no installers for node.js and they must compile it from sources [03:03] jamescarr: is it possible I am incorrect? [03:03] indutny: no [03:03] indutny: you're liar [03:03] indutny: :D [03:04] jamescarr: checking to see if anyone released binaries [03:04] dark: jamescarr, i saw some unofficial [03:04] jamescarr: the only thing I can think of is the debian package, but even then I'd urge people to just compile from source [03:04] indutny: nvm [03:04] jamescarr: indutny, yes, we need nvm... rvm for node :) [03:04] jamescarr: Node Version Manager [03:04] indutny: https://github.com/creationix/nvm [03:04] jamescarr: oh hahahahah [03:05] matt_c_ has joined the channel [03:05] naturalethic: jamescarr: and especially with node, the terse syntax for function declarations makes nesting look *much* nicer [03:05] whyme: jamescarr: and https://github.com/isaacs/nave [03:05] dark: jamescarr, someone had a problem compiling on windows, i searched for node.js binary installer windows on google, sent a link saying it's probably unofficial, but he used it and it worked and all [03:05] jamescarr: dark, send me that link [03:05] jamescarr: out of curiosity [03:06] dark: http://node-js.prcn.co.cc/ [03:06] indutny: they are useless [03:06] dark: why useless? [03:06] indutny: you can't use npm packages [03:06] indutny: without cygwin [03:06] indutny: folders problems [03:06] dark: uhm [03:06] evanmeagher has joined the channel [03:08] robotarmy_: what is the linebreak problem? [03:09] dark: does some framework have this supplant function http://stackoverflow.com/questions/1408289/best-way-to-do-variable-interpolation-in-javascript ? [03:09] dark: robotarmy_, probably has to do with some grammar ambiguity [03:09] jashkenas: dark: coffeescript has string interpolation, since we're on the subject... [03:09] mikeal has joined the channel [03:09] jashkenas: also for heredocs. [03:10] dark: jashkenas, :)) [03:10] dark: I searched this supplant at jquery and some other frameworks and haven't found [03:10] jashkenas: previously for regexes as well, but those were replaced by extended regexes: http://jashkenas.github.com/coffee-script/#regexes [03:11] bartt has joined the channel [03:11] jashkenas: dark: that SO question does have an implementation you can use for supplant though. [03:11] dark: i think that Go (ken thompson / google) also has this algorithm for inserting semicolons, they like it, but it must have some kind of corner case [03:12] dark: jashkenas, yes, I was wondering, why no framework I can find has it [03:12] dguttman_ has joined the channel [03:12] dark: small and useful [03:12] jashkenas: because it needs to be supported at the language level to be nicest. ES Harmony is considering adding it. [03:13] jashkenas: http://wiki.ecmascript.org/doku.php?id=strawman:string_interpolation&s=interpolation [03:13] dark: why? (in which case would it not be nice without this support/) [03:13] jashkenas: Because you have to pass your string and variables to a function, and doing that makes it awkward. [03:14] dark: I thought that frameworks like jquery was meant to, among other things, somehow fix javascript shortcomings (in the spirit of http://javascript.crockford.com/remedial.html ) [03:16] langworthy has joined the channel [03:16] dark: (x) -> x * x is a nice syntax [03:18] yozlet has joined the channel [03:19] SubStack: I like to give semicolons their own line just to make semicolon deletionists cringe [03:19] isaacs has joined the channel [03:20] SubStack: actually to give balance to long function chains [03:20] SubStack: semicolons can be like a closing brace or an 'end' [03:20] SubStack: it feels off in python or haskell when blocks just... end [03:21] dark: at haskell community there is a strange habit for lining semicolons _before_ each statement from the second on, instead of after each statement [03:21] SubStack: yeah I don't do that [03:21] SubStack: when I write haskell [03:21] SubStack: my haskell looks pretty similar to my javascript actually [03:21] SubStack: and vice-versa [03:22] SubStack: but anyways, terminal block tokens are nice because they give you metered indentation steps [03:22] dark: metered? [03:22] SubStack: regular [03:23] SubStack: versus discontinuous indentation leaps [03:24] digitaltoad has joined the channel [03:24] dark: if the language is expression-based, semicolons lose the point [03:24] isaacs: dark: semicolons are the only reliable way to delineate expressions in javascript. [03:24] isaacs: you simply cannot rely on linebreaks. [03:24] isaacs: no one can figure them out. [03:25] isaacs: no linebreaks. just configure your editor to make your code pretty if that's an issue for you for some reason. [03:25] isaacs: or lay on the ; key until it wraps to the next line. [03:25] SubStack: oh these are good tips, writing them down [03:25] jwl: how many here are using couchdb? [03:26] dark: isaacs, i would prefer to have an emacs mode for inserting \n after ; [03:26] dark: instead of making it _display_ the linebreaks but not actually insert it [03:26] mscdex: yay sending and receiving of IMs be workin' :-D [03:27] ossareh has joined the channel [03:27] MattDiPasquale has joined the channel [03:28] polotek has joined the channel [03:28] kenbolton has joined the channel [03:28] markh has joined the channel [03:28] markh has joined the channel [03:29] isaacs: dark: no, that is just a surefire way to make really really hard to debug problems. [03:29] isaacs: you'll spend HOURS tracking down the effects of just ONE stray linebreak. [03:29] isaacs: not safe. [03:29] isaacs: and if you have a computer inserting linebreaks, holy moly, it's hard enough getting HUMANS to understand how those arcane and impossible ASI rules work. [03:30] dark: ? [03:30] isaacs: seriously. [03:30] dark: a line break after an ; can change the meaning of the program? [03:30] isaacs: just use semicolons. linebreaks can't be trusted. [03:30] isaacs: YOU NEVER EVER KNOW WITH LINEBREAKS THEYRE THAT IMPOSSIBLE AND BUGGY!! [03:30] dark: õ.o [03:30] isaacs: i mean, just look at what happen when you put a linebreak between a "return" and the return value! [03:31] dark: well it will return with no value, right? [03:31] isaacs: HOW CAN ANYONE POSSIBLYUNDSERTAND THAT!!!????!!?!???? [03:31] sepehr has joined the channel [03:31] isaacs: ok, i'm done for now. [03:31] isaacs: :) [03:31] dark: (will it?) [03:31] meck has joined the channel [03:31] isaacs: yah, it will [03:31] isaacs: \n terminates a return statement [03:31] mbrochh has joined the channel [03:31] mbrochh has joined the channel [03:31] dark: what's the big deal? it seems logical o.o [03:31] jamescarr: hehehehe [03:32] dark: if it didn't returned, ; would be totally required [03:32] isaacs: ACTION is reducing ad absurdems [03:32] dark: i mean if it didn't terminate [03:32] naturalethic: mscdex: so you working on oscar? [03:32] dark: isaacs, but anyway are you saying that \n sometimes will not terminate the statement? [03:32] isaacs: dark: no, ; would still not be requiring. [03:32] isaacs: *required [03:32] mscdex: naturalethic: yep! :> [03:32] isaacs: dark: yes. foo\n(bar) [03:32] isaacs: that's a function call [03:33] isaacs: foo\n[bar] is a property lookup [03:33] dark: õ.o [03:33] isaacs: foo\n+bar is addition [03:33] dark: but, can a statement start with [ or ( or +? [03:33] isaacs: dark: sure. [1,2,3].forEach(print) [03:33] dark: is foo(\nbar) a function call? [03:33] isaacs: dark: in those cases, i advocate starting the line with a ; to be ambiguous [03:33] isaacs: dark: yes [03:34] yozlet has joined the channel [03:34] isaacs: the line is continued past a \n in a few specific cases. [03:34] dark: õ.o [03:34] isaacs: s/ambiguous/unambiguous/ [03:34] isaacs: ok, time to bike home. i'm clearly spent for today [03:34] dark: to bike home? nice =) [03:35] dandean has joined the channel [03:38] shirro has joined the channel [03:38] airhorns has joined the channel [03:38] deepthawtz has joined the channel [03:40] Dreamer3 has joined the channel [03:40] Spion_ has joined the channel [03:45] yozlet has joined the channel [03:45] AAA_awright_ has joined the channel [03:48] twoism has joined the channel [03:49] naturalethic: ryah: Buffer.copy defaults to sourceStart = 0, but this is undocumented, figure I can count on this for the future? Also, why not default targetStart = 0 [03:50] c4milo has left the channel [03:50] yozlet has joined the channel [03:53] CIA-54: node: 03Ryan Dahl 07master * ra326eeb 10/ wscript : Put tools/ into PYTHON_PATH - http://bit.ly/gQTboF [03:53] CIA-54: node: 03Ryan Dahl 07master * r6d7242b 10/ (doc/api/buffers.markdown lib/buffer.js): Document defaults for buffer.copy() - http://bit.ly/fMFJ0I [03:53] ryah: naturalethic: --^ [03:53] indutny: ryah: so what do you think about event prop ? ;) [03:54] ryah: indutny: i dont know. i am reluctant to change that api [03:54] ryah: i need to spend some time thinking about it [03:55] naturalethic: ryah: k, how about defaulting targetStart = 0 ? [03:56] saikat has joined the channel [03:56] ryah: naturalethic: i guess. this doesn't seem like the sort of thing i'd want to rely on defaults for [03:56] ryah: since target might be smaller [03:57] ryah: what happens anyway - if you try to write off the end? [03:57] ryah: it throws, i gues [03:57] naturalethic: well, "a.copy b" seems like a clear way to copy everything from one to another at the beginning [03:57] naturalethic: it guards the bounds [03:57] banjiewen has joined the channel [03:59] sprout has joined the channel [03:59] polotek: kickass [03:59] CIA-54: node: 03Ryan Dahl 07master * raed0ba3 10/ (doc/api/buffers.markdown lib/buffer.js): buffer.copy targetStart defaults to 0 - http://bit.ly/e2rRqc [03:59] polotek: 60% off at o'reilly books. just saved like $50 [03:59] naturalethic: ryah: :) [04:00] indutny: polotek: ? [04:00] indutny: really? [04:00] indutny: how can I get it? [04:00] polotek: cyber mondy, coupon code [04:00] polotek: http://oreilly.com/ [04:00] polotek: monday* [04:00] indutny: eh... [04:01] indutny: I'll got my VISA card only at evening [04:01] indutny: so it will be a Tuesday at NY [04:02] googol has joined the channel [04:03] luke` has joined the channel [04:06] sudoer has joined the channel [04:10] ooooPssss has joined the channel [04:14] jherdman has joined the channel [04:18] hassox has joined the channel [04:19] noahcampbell has joined the channel [04:22] richcollins has joined the channel [04:23] alexfner has joined the channel [04:24] pedrobelo has joined the channel [04:25] aconbere has joined the channel [04:28] m3nt0r^aw has joined the channel [04:29] isaacs has joined the channel [04:32] slloyd has joined the channel [04:37] hornairs has joined the channel [04:39] luke` has joined the channel [04:39] nolkyan has joined the channel [04:39] jakehow has joined the channel [04:40] kriszyp_ has joined the channel [04:42] MikhX has joined the channel [04:43] jesusabdullah: Any ajax.org people in here? [04:44] jesusabdullah: If so, harass rikarends to release the ajax.org graphing library! >:O [04:44] SubStack: Yes. Do want. [04:44] jesusabdullah: YOU COULD HAVE CREDIT ON AN ACADEMIC POSTER DAMMIT [04:45] jesusabdullah: Also, have it be known that venture capitalists ALWAYS hit up the American Geophysical Union's biannual meetings! [04:45] indutny: jesusabdullah: what's up man? [04:45] polotek: :\ [04:45] jesusabdullah: That plotting library [04:46] polotek: I really want to like o3-xml [04:46] jesusabdullah: I need it bad [04:46] polotek: but it's pretty crashy [04:46] jesusabdullah: polotek: Oh yeah? [04:46] warz: can somebody tell me if this is visible to the world? its just the socket.io chat example on my home server: http://schematico.com:8000/chat.html [04:46] polotek: yeah, I'm running it through some of the memory tests I have for libxmljs [04:47] polotek: hasn't made it through one yet [04:47] polotek: their lib is all weird and abstract though [04:47] polotek: could just be their osx binary is busted [04:47] polotek: should try it somewhere else [04:47] jesusabdullah: polotek: Reminds me---I had some issues with your twitter lib a few months back. You know anything about that? Or would I have to dig it up and try to be more specific? [04:47] indutny: warz: it's working [04:48] jesusabdullah: That it is! [04:48] dioxide: warz: yep [04:48] polotek: jesusabdullah: I only recently started working evented-twitter again [04:48] jesusabdullah: I see [04:48] polotek: not surprised you had issues [04:48] jesusabdullah: Yeah, it looked like it had gotten stale [04:48] jesusabdullah: :) [04:48] polotek: submit them and I will fix [04:48] jesusabdullah: Alright [04:48] jesusabdullah: It won't be until january probably [04:48] SubStack: jesusabdullah: just write it as a rowbit plugin, then it can crash as often as it pleases [04:48] jesusabdullah: cause I'm being pwned by my thesis [04:49] jesusabdullah: SubStack: It wouldn't even start [04:49] SubStack: oh pesky [04:49] jesusabdullah: Yeah, def. Like I said though, I don't remember what the exact issues were [04:49] jesusabdullah: It would need a rewrite *anyway* [04:50] warz: neat :) [04:50] jesusabdullah: My lulzbot plugin, I mean [04:50] indutny: warz: why you had killed it [04:50] indutny: ? [04:50] indutny: :) [04:50] indutny: oh [04:50] indutny: guys [04:50] indutny: can you test one thing for me? [04:50] indutny: http://github.com/donnerjack13589/light.tracker [04:50] warz: i just wanted to see if it worked. [04:51] benburkert has joined the channel [04:51] jesusabdullah: Yeah browser, you SEND that request [04:51] jesusabdullah: oh, a tracker eh? [04:51] indutny: yeah [04:51] indutny: light torrent tracker [04:52] jesusabdullah: Sorry, gotta go [04:52] indutny: np [04:53] isaacs_ has joined the channel [04:53] meatmanek has joined the channel [04:54] isaacs1 has joined the channel [04:55] justin has joined the channel [04:55] evanmeagher: isaacs/isaacs1: is emailing patches like i have been ok with you? [04:55] jamescarr: doh [04:55] isaacs: evanmeagher: sure. [04:55] evanmeagher: isaacs: I have a few more and wanted to ask before mailing. [04:55] isaacs: evanmeagher: it's a bit easier if you just rebase in my master and push to github and let me know about it [04:56] evanmeagher: ah ok [04:56] evanmeagher: i'll do that, one sec [04:56] isaacs: doesn't have to be a full on pull req [04:56] aconbere: https://github.com/ry/node/blob/master/src/node.js#L141 [04:56] evanmeagher: isaacs: https://github.com/evnm/npm/commits/em-compl [04:56] aconbere: anyone ever untangled that function [04:56] aconbere: ? [04:57] aconbere: lots of weirdness in there [04:57] isaacs: aconbere: sure, i reviewed it [04:57] evanmeagher: isaacs: the registry.get timeout you added is great :) [04:57] isaacs: i forget who wrote it, but there was a lot of discussion about [04:57] aconbere: isaacs: is the second value of inDir ever used? [04:57] Aria: That's not so weird... [04:57] isaacs: evanmeagher: kewl :) it's gonna conflict with what i just did on master, sadly :( [04:58] jamescarr: my examples of using apply always seem complicated for noobs [04:58] aconbere: isaacs: also, is ext ever anything except {}? since extensions is defined above that function as being {}? [04:58] aconbere: err ext = [] [04:58] evanmeagher: isaacs: what is? [04:58] isaacs: aconbere: ext ends up being [".js", ".node"] in the normal case. [04:59] isaacs: evanmeagher: the em-compl branch [04:59] aconbere: isaacs: it's kind of strange that depends on a closed over variable that's populated later :-/ [04:59] isaacs: evanmeagher: the timeout thing is gonna conflict with the "nofollow" param that i added so that you can unpublish redirect urls [05:00] isaacs: aconbere: https://github.com/ry/node/blob/master/src/node.js#L341-350 [05:00] aconbere: isaacs: also, since traverser just gets called in a tight loop, why is there a benefit to using a generator here? [05:01] isaacs: aconbere: more readable code. [05:01] isaacs: aconbere: i know that might sound funny, since you're complaining that it's needlessly complicated, but you didn't see it before :) [05:02] aconbere: hahaha [05:02] aconbere: no worries, I'm just poking and proding [05:02] aconbere: better to ask and hear the reasoning the first time around [05:02] aconbere: than to head out blindly down the first failed path [05:02] aconbere: :-P [05:02] hassox has joined the channel [05:02] isaacs: hehe, exactly [05:03] evanmeagher: isaacs: it would be a bit messy, but can we not have both? (nofollow and timeout args for reg.get) [05:03] isaacs: evanmeagher: oh, that's how it's gonna be. it'll be a not-very-hard conflict to resolve. [05:04] evanmeagher: isaacs: right, just making sure [05:04] kenbolton has joined the channel [05:04] isaacs: i'm thinking i might enhance that timeout thing, too. maybe it should try to refresh the cache in the background, just return with the cached data right away [05:05] davidascher has joined the channel [05:06] isaacs: evanmeagher: it'd be worth thinking out how to handle a few edge cases in the completion. like, should `npm install connect` add a space, or an @-sign? [05:06] isaacs: connect is a bad example.. [05:06] isaacs: npm install sax [05:06] evanmeagher: isaacs: yeah, that would make sense for commands that require versions [05:07] isaacs: well, `npm install sax@` is the same as `npm install sax` [05:07] aconbere: Oh! [05:07] aconbere: inDir gets shifted [05:08] aconbere: so if you pass through on generation and it doesn't get reset [05:08] aconbere: the second function gets shifted [05:08] aconbere: but only until you run out of inDir functions [05:08] aconbere: :-/ [05:09] indutny: isaacs: try "npm install uninstall" [05:09] isaacs: aconbere: so, the idea is that require(x) will try: x, x.js, x.node, x...., x/index.js, x/index.node, x/index.... [05:09] evanmeagher: isaacs: it seems to me that `npm activate` would be a better candidate for that kind of @-completion [05:09] evanmeagher: since @ is required [05:10] aconbere: isaacs: yeah I was just writing down all the cases : [05:10] aconbere: :) [05:10] aconbere: function index (ext) { [05:10] aconbere: return path.join(dir, id, 'index' + ext); [05:10] aconbere: } [05:10] aconbere: awww crap [05:10] isaacs: indutny: that should come with a warning!! [05:10] aconbere: sorry, accidentally pasted [05:11] indutny: isaacs: in a next release, ok ? ) [05:11] indutny: :) [05:11] isaacs: sure :) [05:12] indutny: usefull thing, btw [05:12] indutny: ;) [05:13] AAA_awright has joined the channel [05:13] ossareh has joined the channel [05:13] isaacs: indutny: { "scripts" : {"preinstall":"read -p 'this will uninstall all your npm packages, are you sure? Type y to continue' SURE; if [ \"x$SURE\" != \"xy\" ]; then exit 1; fi" || [05:13] isaacs: s/||/}}/ [05:13] nooder has joined the channel [05:14] Anti-X: that's ot [05:14] Anti-X: hot [05:15] Anti-X: bash porn [05:15] whyme has joined the channel [05:15] indutny: isaacs: is ...fi" an end? [05:15] Anti-X: endif [05:15] isaacs: indutny: yeah [05:15] Aria: Ayep! [05:15] indutny: ok [05:15] isaacs: indutny: oh, this is not good.. [05:15] isaacs: indutny: you're doing npm.commands.list before npm.load() [05:16] indutny: brb, 5 minutes [05:17] EGreg_: hey guys [05:17] isaacs1 has joined the channel [05:17] EGreg_: quick q abotu memoization [05:18] EGreg_: when I do require('foo'); [05:18] EGreg_: and I do var haha in foo.js [05:18] indutny: what's npm.load(..) syntax [05:18] indutny: just a callback ? [05:18] indutny: function(err) {...} [05:18] EGreg_: is there only one (private) instance of haha [05:18] isaacs: indutny: it's in the npm readme, or cli.js [05:18] micheil: npm.load(conf, function) [05:18] EGreg_: even if I require('foo') 100 times? [05:18] indutny: one moment [05:18] EGreg_: even 102 times? [05:18] micheil: or npm.load(function) [05:18] isaacs: EGreg_: that's right [05:19] EGreg_: what about the module variable [05:19] EGreg_: module.exports [05:19] EGreg_: it is always different instance? [05:19] EGreg_: in other words how to do memoization properly? [05:19] EGreg_: exports.haha = haha ? [05:19] EGreg_: no, right? [05:19] EGreg_: module.exports = haha [05:19] EGreg_: that is correct? [05:19] EGreg_: I want to return the same function / object every time [05:20] whyme: EGreg_: no worry, it'd be singleton [05:20] EGreg_: module.exports = function () { ... } // also created only once? [05:20] EGreg_: whyme: can you explain plz [05:20] Aria: Yes, it's cached. [05:20] EGreg_: what is cached? [05:21] isaacs: EGreg: the function is defined once. doing require() returns the same function that was defined the first time. [05:21] isaacs: EGreg: of course, then you can CALL the function as many times as you want. [05:22] EGreg_: isaacs: oh I see [05:22] EGreg_: so the module is only loaded once! [05:22] EGreg_: the js in it is only executed once! [05:22] EGreg_: but if I call require('foo') 100 times what happens [05:22] isaacs: you get the same function 100 times [05:22] EGreg_: the js file is evaled only once and the resulting object is cached - right? [05:22] EGreg_: okay got it. [05:23] Fenda has joined the channel [05:24] sudoer has joined the channel [05:24] mjr_ has joined the channel [05:24] isaacs: it's like this: function foo () {} ; for (var i = 0; i < 1000; i ++) bar = foo [05:24] isaacs: you could increase the 1000 to 10000000 and you'd still only have one foo [05:24] indutny: isaacs: can I ask npm to not put messages to stdout [05:24] indutny: ? [05:24] isaacs: indutny: sure. --outfd 0 [05:24] isaacs: indutny: or set the outfd in the conf [05:25] isaacs: indutny: you should read `npm help config` if you're going to use npm programmatically [05:25] Fenda: node and socket:io with socket.send({foo: bar}); from client works on firefox/chrome but throws an invalid message error on the server on IE. I suppose a JSON issue? [05:26] isaacs: indutny: npm.load({outfd:0}, function (er) { your stuff goes here. }) [05:27] indutny: doesn't work for me [05:27] indutny: hm... [05:27] isaacs: indutny: pull req in 2 minutes. [05:28] indutny: should I create it ? :) [05:28] isaacs: nono, coming to you.. [05:28] isaacs: . [05:28] indutny: :) [05:29] deepthawtz has joined the channel [05:29] jamescarr: wondering if arguments.callee is worth mentioning when teaching people javascript [05:29] indutny: isaacs: check out new version [05:29] indutny: 0.0.2 [05:30] isaacs: indutny: what's up with the ^M chars? you on windows or something? [05:31] indutny: yep, I'm on windows [05:31] indutny: where are them? [05:31] indutny: in uninstall.js? [05:31] isaacs: in package.json [05:31] isaacs: the forthcoming pull req will correct it [05:31] indutny: hm... I don't see any ^M chars [05:32] isaacs: vim sees them :) [05:32] indutny: haha :) [05:32] isaacs: vim sees ALL [05:32] indutny: most of time I use gedit [05:32] indutny: anyway [05:32] isaacs: oh, in uninstall.js, to. all OVER the place [05:32] indutny: fck [05:32] indutny: :( [05:33] guybrush: jamescarr, Crockford doesn't like it http://www.crockford.com/javascript/recommend.html [05:34] indutny: isaacs: i've pushed new commit [05:34] indutny: probably , fixed? [05:34] jamescarr: guybrush, boo hoo... who elected Crockford god of javascript? :) [05:35] guybrush: not me, for sure (!) - just wanted to mention :p [05:35] jamescarr: I'll have to look though, he usually has good reasons for recommending against using somehting in js [05:35] guybrush: in fact that is the only argument i have found against arguments.callee so far [05:35] whyme: ES5 deprecated arguments.callee [05:36] agnat has joined the channel [05:36] jamescarr: cool, I'll drop it [05:36] mjr_: Wow, what would happen if they accepted his recommendation to drop semicolon insertion? [05:36] guybrush: hihi [05:37] guybrush: ye wow [05:37] justin: is there another way to unbind anonymous functions from event handlers? [05:37] dgathright has joined the channel [05:37] polotek: justin: unless you drop all event handlers then no [05:37] polotek: you have to provide the original function to removeListener [05:38] justin: that's what i thought… i guess i've just never seen the harm in arguments.callee [05:38] micheil: or, you can hack the emitter to find it [05:38] whyme: source.on('type', function Self(){this.removeListener('type', Self)}) [05:38] micheil: every event emitter stores it's events in a _events property, iirc. [05:38] whyme: might be working [05:38] micheil: just use ee.once [05:38] micheil: http://nodejs.org/docs/v0.3.1/api/events.html#emitter.once [05:39] indutny: micheil: is it true only for 0.3.1 ? [05:39] micheil: not sure [05:39] micheil: bbl. [05:39] Aria: Yeah, not in 0.2.x [05:39] Aria: (at least 0.2.3, when I tried last) [05:40] indutny: i'll checkout 0.2.5 [05:40] indutny: brb [05:41] cafesofie has joined the channel [05:42] banjiewen has joined the channel [05:42] Ond has joined the channel [05:44] jamescarr: heh, not bad so far [05:44] jamescarr: https://github.com/jamescarr/nodejs-training/tree/master/lesson2-basics/ecmascript5 [05:46] jamescarr: I wonder if I should mention that you can have named callbacks [05:46] jamescarr: like fs.readFile('foo.txt', function read(contents){ [05:47] isaacs: indutny: https://github.com/isaacs/node.uninstall/commits [05:47] jamescarr: nah [05:47] isaacs: indutny: it looks like you'd already fixed the ^M's, mostly, so that commit log is now a little incorrect [05:47] markh has left the channel [05:47] indutny: isaacs: thanks [05:48] indutny: i'll merge this [05:48] markh has joined the channel [05:48] isaacs1 has joined the channel [05:48] meatmanek has joined the channel [05:49] yozlet has joined the channel [05:50] braddunbar has joined the channel [05:52] indutny: isaacs: i've pushed to github [05:52] ossareh has joined the channel [05:53] indutny: if it's ok - I'll push it to npm, ok? [05:53] isaacs: indutny: sure, don't need my permission :) [05:53] indutny: haha, ok [05:54] indutny: i'm updating npm right now [05:54] isaacs: kewl [05:55] Druide has joined the channel [05:55] ooooPssss has joined the channel [05:57] indutny: yeah! [05:57] indutny: it's on npm repo [05:58] arrty_ has joined the channel [06:01] mikew3c_ has joined the channel [06:04] isaacs has joined the channel [06:07] cjmFloating has joined the channel [06:07] erlnoob has joined the channel [06:15] shirro has joined the channel [06:15] shirro has joined the channel [06:22] sepehr has joined the channel [06:23] jakehow has joined the channel [06:24] nolkyan has joined the channel [06:24] ooooPssss has joined the channel [06:25] MikhX has joined the channel [06:25] themiddleman has joined the channel [06:26] rcy has joined the channel [06:29] AAA_awright_ has joined the channel [06:30] jamescarr: fuck [06:30] justin has left the channel [06:30] jamescarr: I kept refactoring thinking my tests were passing... [06:30] jamescarr: turns out that the old version I installed via npm was getting required [06:30] deltasquare4 has joined the channel [06:31] fangel has joined the channel [06:31] isaacs: jamescarr: d'oh [06:32] isaacs: jamescarr: you know, you can set your test script in your package.json, and then `npm link` the working dir, and run `npm test my-thing` to run them [06:32] jamescarr: yeah, discovered that recently ;) [06:33] matjas has joined the channel [06:33] indutny has joined the channel [06:34] galaxywatcher_ has joined the channel [06:38] cafesofie has joined the channel [06:38] aurynn has joined the channel [06:38] isaacs has joined the channel [06:39] meso has joined the channel [06:40] brianmario has joined the channel [06:44] peutetre has joined the channel [06:45] meso has joined the channel [06:49] waqas has left the channel [06:50] viirya has joined the channel [06:55] isaacs_ has joined the channel [06:55] mikeal has joined the channel [07:00] yozlet has joined the channel [07:03] braddunbar has joined the channel [07:04] zeekay has joined the channel [07:05] mscdex: anyone else see google translate beatboxing? [07:05] mscdex: http://bit.ly/fWrcM7 [07:07] mjr_: Neat [07:07] mjr_: you can add in "bsch" to the text for more bass. [07:08] mscdex: heh [07:08] micheil: hmm.. what's the best C/C++ compiler? [07:08] luke` has joined the channel [07:08] micheil: I was under an assumption that clang was it, but it seems to not be found by node's v0.2 branch ./configure [07:08] mscdex: gcc of course! [07:08] mscdex: :p [07:09] isaacs1 has joined the channel [07:10] derren13 has joined the channel [07:10] micheil: mscdex: for reals? [07:10] mscdex: well, i've never had any issues with it [07:10] Anti-X: g++ [07:10] v8bot: Anti-X has given a beer to g. g now has 1 beers. [07:10] mjr_: heh [07:10] Anti-X: yeah relevant [07:10] mjr_: cheers, g [07:10] Anti-X: fuck off v8 [07:11] micheil: hmm.. [07:11] mjr_: clang is the "best", if you have it, and it happens to work for you. [07:11] naturalethic: g++ [07:11] v8bot: g is getting too many beers. Don't let g get drunk! [07:11] micheil: don't do an apt-cache search for g++ :D [07:11] mscdex: hah [07:11] indutny: g-- [07:11] v8bot: indutny has taken a beer from g. g now has 0 beers. [07:12] micheil: g++ [07:12] v8bot: g is getting too many beers. Don't let g get drunk! [07:12] mscdex: _announcer-- [07:12] v8bot: mscdex has taken a beer from _announcer. _announcer now has -1 beers. [07:12] micheil: lol. [07:12] mscdex: negative beers :O [07:12] indutny: micheil+=1 [07:12] nsolsen has joined the channel [07:12] indutny: fck [07:12] indutny: :( [07:12] indutny: micheil++ [07:12] v8bot: indutny has given a beer to micheil. micheil now has 2 beers. [07:12] indutny: arrgh [07:12] Anti-X: why would he get a beer [07:12] Anti-X: he's almost a minor [07:13] micheil: hmm.. what was it for openssl on ubuntu? libssl-dev & openssl, right? [07:13] slaskis has joined the channel [07:13] mscdex: yep [07:13] WaterCooled has joined the channel [07:13] micheil: Anti-X: actually, I'm past being a minor by about 2 months. [07:14] Anti-X: that's why i said almost [07:14] micheil: hmm.. [07:14] mscdex: sounds kinda benjamin button-y to me [07:14] EyePulp has joined the channel [07:14] Anti-X: backwardsy? [07:14] micheil: this doesn't look right: https://gist.github.com/1b22be4e2ac2eb361c97 [07:15] mscdex: looks fine to me [07:15] swistak has joined the channel [07:15] micheil: look at the first check for openssl [07:15] micheil: line 12 [07:15] mscdex: yep [07:15] fly-away has joined the channel [07:16] micheil: so, what, ubuntu always show's that as "not found" [07:16] mscdex: node's wscript uses several methods for looking for openssl [07:16] micheil: right [07:16] Anti-X: i get openssl not found a lot [07:16] Anti-X: it still works [07:16] Anti-X: so [07:16] Anti-X: it only really gets bitchy when libssl-dev isn't installed [07:17] Anti-X: Checking for openssl : not found [07:17] Anti-X: Checking for header openssl/crypto.h : yes [07:17] Anti-X: heh [07:17] WaterCooled has joined the channel [07:17] mscdex: that "not found" line will only say "found" if you're using that one method for managing libraries [07:18] mscdex: i can't think of the name off the top of my head [07:19] mscdex: but ubuntu and debian i don't think have that installed by default, but centos and such use it out of the box for finding libraries [07:19] Anti-X: wget? [07:19] mscdex: no, it's some kind of "package" system [07:19] amerine has joined the channel [07:19] mscdex: not a package manager [07:20] mscdex: i'd have to look it up heh [07:20] Anti-X: what, like rpm? [07:21] mscdex: pkg-config! [07:21] mscdex: i knew i'd remember it sooner or later [07:25] deoxxa: mscdex: your nick reminds me of simpler times [07:26] mscdex: like BBSes? [07:26] indutny has joined the channel [07:26] mscdex: :> [07:26] deoxxa: mscdex /D:OAKCDROM [07:26] deoxxa: surprised i still remember that :P [07:26] mscdex: ACTION /D:IDECD0001 [07:27] deoxxa: as if you wouldn't use the OAK driver [07:27] deoxxa: come on, man [07:27] indutny: msxcdex++ [07:27] v8bot: indutny has given a beer to msxcdex. msxcdex now has 1 beers. [07:27] mscdex: :S [07:27] mscdex: i think indutny has had one too many ;-) [07:27] indutny: indutny-- [07:27] v8bot: indutny: Don't cheat! You can't give a beer to yourself. [07:28] mscdex: ha fail [07:28] V1 has joined the channel [07:28] mscdex: v8: about [07:28] v8bot: mscdex: ReferenceError: about is not defined [07:28] mscdex: er [07:28] mscdex: v8 about [07:28] v8bot: mscdex: v8 is no longer supported (except in PM). Try v8: or v8> [07:28] Anti-X: it's not a browser [07:29] mbrochh has joined the channel [07:29] mscdex: i forget how to do actual commands [07:29] mscdex: v8bot: about [07:29] v8bot: mscdex: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [07:29] Anti-X: it's js code [07:29] mscdex: there it is [07:29] mscdex: `v about [07:29] v8bot: mscdex: v8bot is an IRC bot written entirely in Javascript using Google's v8 Javascript engine and Node.js. Credits: eisd, Tim_Smart, gf3, MizardX, inimino. Join us at #v8bot ! [07:29] mscdex: that's who you can blame [07:29] mscdex: :p [07:29] Anti-X: let's kill them in their sleep [07:30] Anti-X: for not making it possible to take away a beer from yourself! [07:34] petercooper has joined the channel [07:36] jpld has joined the channel [07:36] mscdex: i wish there was a more efficient way of resizing a buffer [07:36] mscdex: :/ [07:37] jamescarr has joined the channel [07:39] agnat has joined the channel [07:40] derren13 has joined the channel [07:41] margle has joined the channel [07:42] isaacs1 has joined the channel [07:43] micheil: mscdex: it could surely be done with a meta-buffer [07:43] micheil: sort of like the fast-buffers [07:43] mscdex: anything has got to be better than having to create an entirely new buffer [07:43] ph^ has joined the channel [07:43] micheil: yeah, I think I know how this can work. [07:44] micheil: but you'd have to use Object.create and some ES5 foo [07:45] pifantastic has joined the channel [07:46] mikeal has joined the channel [07:46] dguttman has joined the channel [07:50] sivy has joined the channel [07:51] CIA-54: node: 03Bert Belder 07master * r5ea2a61 10/ src/platform_win32.cc : win: Duplicate platform_cygwin.cc into platform_win32.cc (+8 more commits...) - http://bit.ly/dXVmVY [07:51] SamuraiJack has joined the channel [07:54] naturalethic: can anyone who knows javascript numbers help me refine this warning: [07:54] naturalethic: # 64-bit integer coding only supported reliably up to somewhere around (+/-) 2^53 [07:57] erlnoob has joined the channel [07:57] Anti-X has joined the channel [08:00] robmason has joined the channel [08:00] JojoBoss has joined the channel [08:00] naturalethic: Number.MAX_VALUE and MIN_VALUE [08:00] comster: naturalethic, are you referring to twitter ids? I'd be curious to hear more too [08:00] naturalethic: haha [08:05] breccan_ has joined the channel [08:09] lstrojny has joined the channel [08:11] mAritz has joined the channel [08:13] isaacs1 has joined the channel [08:13] virtuo_ has joined the channel [08:14] AAA_awright has joined the channel [08:17] __florian has joined the channel [08:18] micheil: v8: ["a", "c", "d"].sort() [08:18] v8bot: micheil: ["a", "c", "d"] [08:18] micheil: k [08:21] naturalethic: v8: 'micheil'.split('').sort() [08:21] v8bot: naturalethic: ["c", "e", "h", "i", "i", "l", "m"] [08:21] micheil: hmm, what's the fastest hash method? [08:22] whyme: micheil: a customized toString()? [08:22] micheil: hmm.. not quite what I'm thinking. [08:24] fangel has joined the channel [08:27] Pilate: micheil: looks like the answer is 'murmurhash' [08:29] ivanfi has joined the channel [08:32] ph^ has joined the channel [08:35] [AD]Turbo has joined the channel [08:35] cafesofie has joined the channel [08:35] [AD]Turbo: yo all [08:35] ph^ has joined the channel [08:35] EGreg_ has joined the channel [08:35] EGreg_: hey question [08:35] EGreg_: what if require doesn't find the file [08:36] EGreg_: can I put a try around it? [08:36] EGreg_: because fs.exists is asynchronous - don't know of a synchronous version [08:36] whyme: EGreg_: require() works synchronously [08:36] EGreg_: yes [08:36] EGreg_: what if it doesn't find the file [08:37] EGreg_: can I put try around it? [08:37] whyme: EGreg_: just repl it. [08:37] indutny: v8: (1).toFixed(20) [08:37] v8bot: indutny: "1.00000000000000000000" [08:37] EGreg_: yay [08:37] teemow has joined the channel [08:37] EGreg_: it works [08:38] EGreg_: I am making a framework for Node.js [08:38] EGreg_: called Node on Pie [08:38] EGreg_: what u think? [08:38] EGreg_: it's a bit jquery-ish [08:39] naturalethic: what's it for [08:39] indutny: I'm making a framework too [08:39] indutny: :) [08:39] indutny: fully-modular [08:39] indutny: hooks [08:39] indutny: hooks=callbacks [08:39] indutny: etc [08:39] indutny: shared context [08:39] whyme: I'm making one too [08:39] indutny: anybody interested? [08:39] indutny: whyme++ [08:39] v8bot: indutny has given a beer to whyme. whyme now has 1 beers. [08:40] whyme: unit test framework [08:40] whyme: indutny++ [08:40] v8bot: whyme has given a beer to indutny. indutny now has 1 beers. [08:40] indutny: yeah! [08:40] indutny: thank you [08:40] whyme: xd [08:40] naturalethic: indutny-- [08:40] v8bot: indutny is getting too many beers. Don't let indutny get drunk! [08:40] Druide_ has joined the channel [08:41] mikew3c: I'm making a framework for easily creating other frameworks [08:41] EGreg_: thats awesome [08:41] EGreg_: but why have hooks [08:41] EGreg_: when u have events [08:41] mscdex: i'm making a framework to destroy all other frameworks [08:41] mscdex: THERE CAN BE ONLY ONE [08:41] indutny: mscdex-- [08:41] v8bot: indutny has taken a beer from mscdex. mscdex now has -1 beers. [08:41] mscdex: i will call it highlander.js [08:41] EGreg_: u're making the un-frameowkr! [08:42] indutny: EGreg_: i'm thinking about events [08:42] indutny: hm.... [08:42] indutny: may be, may be [08:42] paupau has joined the channel [08:42] mscdex: or i could call it: badassmotha4000.js [08:42] mscdex: and the subtitle would be "twice as fast as your ass" [08:43] adambeynon has joined the channel [08:43] isaacs1 has joined the channel [08:44] paupau: So is there any real difference between sending strings over a stream with setEncoding('utf8') versus using a default stream and doing stream.write(str, 'utf8') and incomingData.toString('utf8') on all IO? [08:45] indutny: no [08:45] ph^ has joined the channel [08:45] paupau: Elementary, my dear Watson! [08:46] micheil: where was that stuff on process.hostname? [08:46] indutny: is it implemented? [08:47] micheil: I dunno, but I could be needing it soon. [08:47] samh__ has joined the channel [08:49] matjas has joined the channel [08:49] micheil: hmm, interesting, in repl, .exit doesn't kill the node process. [08:50] micheil: I'm thinking it certainly should. [09:02] alexfner: I made Canvas+iPad+WebSockets+Node.js http://www.youtube.com/watch?v=tY5hOzyYn3w using https://github.com/miksago/node-websocket-server for help with the sockets, check it out! [09:02] micheil: oh, neat. [09:03] micheil: Thanks for using my library, any problems with it? [09:05] Druide_ has joined the channel [09:06] alexfner: not thus far [09:06] alexfner: I wasn't sure if it was you, so now I can say thanks [09:06] alexfner: I don't know how well node will scale though [09:06] indutny: micheil++ [09:06] v8bot: indutny has given a beer to micheil. micheil now has 3 beers. [09:07] micheil: alexfner: well, depends, I've gotten some pretty good results on it [09:07] micheil: alexfner: I do have ideas for a mesh-network of nodes, but that's a fair way off still [09:07] alexfner: micheil: hundreds of concurrent users? Thousands? :/ [09:08] alexfner: micheil: that would certainly be interesting, but I figure that the way node is now, I'll have to eventually ditch it for something more scalable, in the future [09:08] micheil: alexfner: I don't have figures off the top of my head, but the main thing I tested for with high speed connect/disconnect cycles [09:08] micheil: also, there are tools like spark which allow you to scale a node process across multiple CPU's [09:09] meso has joined the channel [09:09] micheil: although, in all honesty, the current browser implemented websocket protocol isn't the fastest it could be [09:10] micheil: draft-03 is much faster for parsing, as you don't have to read over every byte in a message [09:10] micheil: just the headers, then you can extract the message with something like a substr [09:10] alexfner: this is something I know virtually nothing about, care to explain at a basic level? [09:10] ntelford has joined the channel [09:10] micheil: as for max users, I think some guy was getting up near 2000-16000 clients [09:11] alexfner: I mean, I don't know how WebSockets are implemented, I just know how to use them [09:11] micheil: okay, currently websocket messages are sent in the format of: [09:11] micheil: 0xFFmesage...0x00 [09:11] micheil: or 0x00message...0xFF [09:11] micheil: I can't remember which atm [09:11] micheil: but anyway, in order to pass a stream of that, you need to read every byte after a 0x00 or 0xFF until you find either 0xFF or 0x00 [09:12] micheil: which makes it slow-ish [09:12] indutny: 0x00 at start [09:12] indutny: 0xFF at end [09:12] erlnoob: how do you use partials in expressjs? [09:12] micheil: the newer versions use proper headers at the start, which specify the message length [09:12] indutny: really? [09:12] erlnoob: e.g, partial('footer'); <-- now where do I put that? [09:12] indutny: can you post a link? [09:12] micheil: so, now it's like: bunch of binary data + message [09:12] erlnoob: in the template? [09:12] alexfner: micheil: ah I see [09:12] indutny: erlnoob-- [09:12] v8bot: indutny has taken a beer from erlnoob. erlnoob now has -1 beers. [09:12] micheil: there's no ending token, just a message length [09:13] alexfner: micheil: where can one read the detailed specs for things like websockets? [09:13] micheil: which makes it far faster and more reliable to use [09:13] alexfner: and by one, I mean me [09:13] micheil: on the IETF's site [09:13] micheil: current browser version: [09:13] micheil: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00 [09:13] micheil: latest version: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-03 [09:13] micheil: bbl. dinner. [09:14] naturalethic: alexfner: love the idea, the color mixer is awesome [09:14] dguttman has joined the channel [09:15] alexfner: naturalethic: thanks so much [09:16] alexfner: naturalethic: I really want to implement CMYK color, but as far as I can tell this isn't something built into canvas [09:16] alexfner: why you would call something canvas and then not let it support the way "canvas" pigments would actually mix is confusing to me [09:16] naturalethic: alexfner: there's probably some library you could rip for converting between cmyk and rgb [09:17] alexfner: I haven't found anything [09:17] naturalethic: alexfner: quick search revealed http://www.javascripter.net/faq/rgb2cmyk.htm [09:17] alexfner: I've been studying a lot of color theory and I could do it myself [09:17] alexfner: sure sure [09:18] alexfner: it's just not that simple [09:18] alexfner: imagine a 40x40 canvas [09:18] naturalethic: yeah i see where you're going [09:18] alexfner: in order to mix colors that would normally mix rgb, you have to get the current color of every pixel in the canvas [09:18] alexfner: then take that and convert all the values to cmyk [09:18] herbySk has joined the channel [09:18] alexfner: add a cmyk color to them in the correct positions [09:19] alexfner: then return the entire array to rgb [09:19] alexfner: and redraw it onto the canvas [09:19] naturalethic: yeah [09:19] alexfner: and so it is very slow [09:19] slaskis has joined the channel [09:19] alexfner: certainly you can do quite the optimization [09:20] naturalethic: you may have to go native [09:20] alexfner: but on the iPad every time I was reading the canvas color values into a pixel array it would hang for a moment [09:20] alexfner: yeah perhaps [09:20] alexfner: I might just not, and let it be rgb [09:20] naturalethic: the drawing was pretty laggy too [09:20] alexfner: it's a wee bit slow [09:21] alexfner: but that could be due to a number of things [09:21] alexfner: it's not very optimized right yet [09:21] alexfner: and I could use tricks to hide and slowness [09:21] alexfner: any* [09:21] naturalethic: but as a basic concept, that idea is great, and would work well where the same app on a desktop wouldn't be interesting [09:21] alexfner: I just wanted to enter it in a school competition so I hurried to get all that implemented [09:22] alexfner: thanks so much :) [09:22] herbySk74 has joined the channel [09:22] naturalethic: its a good demo, interested to see where you take it [09:22] tisba has joined the channel [09:23] alexfner: I hope I didn't sound defensive. I am really interested in talking about it with others and hearing their ideas [09:24] naturalethic: nope :) [09:26] naturalethic: alexfner: i might like to collaborate with you on it when you get to that point, i'm gonna pm you my email [09:26] naturalethic: or at least be a sounding board, been wanting to get involved with an ipad proj [09:27] naturalethic: cool [09:28] alexfner: if you've got experience building scalable back end architectures, LET'S DO THIS!?! ;p [09:29] Blink7_ has joined the channel [09:29] naturalethic: i'm no genius but i've been around a bit [09:29] ewdafa has joined the channel [09:30] MikhX has joined the channel [09:31] alexfner: that's something I have very little experience in [09:31] alexfner: so anything more than virtually none is more than me [09:31] spetrea has joined the channel [09:34] altamic has joined the channel [09:35] naturalethic: your demo is running local net i assume? [09:35] naturalethic: between your 'lab top' and your ipad :) [09:36] alexfner: no, I have a VPH running node [09:36] alexfner: across the interwebs [09:36] zinger has joined the channel [09:36] delapouite has joined the channel [09:37] naturalethic: nice, well that looked pretty quick [09:38] naturalethic: mind if i see your node code? [09:39] isaacs1 has joined the channel [09:39] alexfner: in teh future\ [09:39] alexfner: I am going to sleep [09:39] alexfner: 4:40am :/ [09:39] alexfner: good night everyone [09:39] naturalethic: k catch you later [09:40] SethX: hah, thanks #node.js :) finally got google to index my ajax based site through a custom node-written application :) [09:42] caolanm has joined the channel [09:42] indutny: congrats [09:44] AAA_awright_ has joined the channel [09:44] TomY has joined the channel [09:47] V1: But google can already index ajax based sites ;) [09:47] indutny: yeah, just use #!/url [09:48] sth: I doubt google indexes anything passed # [09:48] V1: It does, Google it [09:49] indutny: http://code.google.com/intl/ru-RU/web/ajaxcrawling/docs/getting-started.html [09:49] V1: http://code.google.com/web/ajaxcrawling/docs/getting-started.html [09:49] tisba_ has joined the channel [09:52] doffm: V1: Thanks for that. I never knew. [09:52] V1: yw [09:52] indutny: V1: sorry [09:52] indutny: :) [09:53] V1: indutny: Мой русский не так хорошо [09:53] V1: ;D [09:53] masahiroh has joined the channel [09:54] indutny: V1: Google translate? :) [09:54] V1: :$ [09:54] naturalethic: was it something about his mother? [09:54] indutny: hahaha [09:54] indutny: naturalethic++ [09:54] v8bot: indutny has given a beer to naturalethic. naturalethic now has 1 beers. [09:54] indutny: no [09:54] indutny: He said that his russian is bad [09:55] V1: I can talk a bit Russian (I'm having lessons atm ) but writing it is harder [09:56] naturalethic: this character looks like a pain to write by hand: Ж [09:56] mscdex: an hourglass! [09:56] indutny: hahaha [09:56] indutny: :) [09:57] indutny: Й [09:57] mscdex: we used to have a translator bot in here [09:57] mscdex: and _announcer translates non-english tweets too still i think [09:57] altamic has joined the channel [09:57] V1: We also had announcer here.. he seems to be gone aswell [09:57] mscdex: blame maushu! :p [09:58] indutny: i can write translation bot [09:58] AAA_awright: doffm: And use history.pushstate if that function exists, on top of that [09:58] mscdex: kidding. he says that _announcer crashes because twitter does strange things sometimes [09:58] mscdex: ACTION shrug [09:59] AAA_awright: probablt just add onclick="if(history.pushstate){history.pushstate('','',this.href.substr(2));return false;}" [09:59] AAA_awright: er, window.history.pushstate [09:59] indutny: use sammy.js [10:01] slaskis: when using vows, can't i use it's assert methods in an helper method which is outside of the describe? [10:02] whyme: slaskis: yep [10:02] slaskis: hmm, must be something else that's wrong then [10:04] lmorchard has joined the channel [10:06] whyme: slaskis: um, looks like I gave a quick wrong answer [10:06] whyme: slaskis: just repled and failed :( [10:07] slaskis: whyme: do you get throw new assert.AssertionError({ as well? [10:07] slaskis: and Cannot call method 'match' of undefined [10:08] slaskis: i've done a simple http request method which i want to assert the status code in but it seems to fail when i add those assertions [10:08] whyme: slaskis: ye I got the same error message [10:08] ivanfi has joined the channel [10:08] whyme: slaskis: but there's nothing strange in vows' source [10:09] jimt_ has joined the channel [10:10] slaskis: whyme: maybe it's in the standard assert module? [10:11] slaskis: (not that it would make any sense) [10:11] whyme: slaskis: https://github.com/cloudhead/vows/blob/master/lib/assert/error.js [10:11] whyme: slaskis: they monkey patched AssertionError.prototype.toString [10:12] slaskis: aha, so it's the stack that's not found [10:14] whyme: whyme-- [10:14] v8bot: whyme: Don't cheat! You can't give a beer to yourself. [10:14] whyme: hmm.. [10:15] slaskis: haha [10:15] naturalethic: v8bot is drunk [10:15] caolanm: ACTION didn't realise v8bot was handing out beers [10:15] slaskis: hmm, so how can i get around this, besides setting those assertions in every vow [10:15] slaskis: v8bot++ [10:15] v8bot: slaskis has given a beer to v8bot. v8bot now has 7 beers. [10:15] slaskis: i'll make him drunk [10:15] caolanm: caolanm++ [10:15] v8bot: caolanm: Don't cheat! You can't give a beer to yourself. [10:16] caolan2: caolanm++ [10:16] v8bot: caolan2 has given a beer to caolanm. caolanm now has 1 beers. [10:16] caolanm: ;) [10:16] slaskis: hacked! [10:17] whyme: also hack with AssertionError.prototype.toString()? [10:17] simme has joined the channel [10:17] aliem has joined the channel [10:17] whyme: if (!this.stack) return; else oldMethod.apply(this, arguments) [10:17] paupau: So net.Stream... [10:18] paupau: raw TCP right? [10:18] slaskis: whyme: haha, monkey patching the monkey patch? [10:18] paupau: or does it send Buffer lengths or something? [10:18] whyme: slaskis: :) [10:19] paupau: aw well, sleepin time [10:20] mikedeboer has joined the channel [10:21] altamic has joined the channel [10:21] stagas has joined the channel [10:21] isaacs has joined the channel [10:23] nooder has joined the channel [10:32] cjmFloating has joined the channel [10:40] stagas has joined the channel [10:44] davidc_ has joined the channel [10:47] erlnoob: just a rant, but if you make a template language, make sure to just output an empty string when something's undefined OR put out an informative error message. [10:51] isaacs has joined the channel [10:53] jetienne has joined the channel [10:55] pietern has joined the channel [10:58] mikedeboer has joined the channel [11:05] InsDel has joined the channel [11:05] mauritslamers has joined the channel [11:06] mauritslamers: hi all, small question: Trying to get v8 options passed on to v8, but it doesn't seem to work and I cannot find any examples... [11:07] mauritslamers: when I try 'node --stack_trace_on_abort=true myServer.js' I get 'Error: illegal value for flag --stack_trace_on_abort=true of type bool'... anyone an idea? [11:09] altamic has joined the channel [11:13] bahamas has joined the channel [11:15] zomgbie has joined the channel [11:15] zorzar_ has joined the channel [11:22] isaacs has joined the channel [11:22] yumike has joined the channel [11:25] Anti-X has joined the channel [11:26] hellp has joined the channel [11:30] micheil: mauritslamers: yeah, that doesn't work the best at the moment [11:31] nsolsen has joined the channel [11:33] jetienne: mauritslamers: naively, did you try other value ? like 0, 1, yes, no [11:33] jetienne: 99 42 [11:34] aubergine has joined the channel [11:35] fermion has joined the channel [11:37] mauritslamers: micheil: I tried... the only thing that seems to work is to omit any value... it seems to toggle the v8 setting [11:37] herbySk has joined the channel [11:38] micheil: mauritslamers: we were rewriting it, but we hit a roadblock and haven't decided on a way forward yet (to my knowledge, ryah can correct me if I'm wrong) [11:38] cafesofie has joined the channel [11:39] polyrhythmic has joined the channel [11:42] sandymahalo has joined the channel [11:46] mriley has joined the channel [11:46] flashingpumpkin has joined the channel [11:49] cognominal has joined the channel [11:52] isaacs has joined the channel [11:54] altamic has joined the channel [11:54] kriszyp has joined the channel [12:05] mauritslamers: micheil: np, my main issue is actually that when a type error occurs, no file or line number info is shown, which makes finding the offending function a bit hard :) [12:05] micheil: hmm, okay [12:05] iszak has joined the channel [12:05] iszak has joined the channel [12:05] micheil: hmm.. mraleph isn't about.. [12:05] mauritslamers: so I was hoping some v8 trace setting would be helping me :) [12:06] micheil: what's the error you're getting? [12:06] mauritslamers: type error: undefined is not a function [12:06] micheil: no, the full error, there'd have to be more [12:07] aubergine has joined the channel [12:07] micheil: paste it in a gist.github.com [12:07] mauritslamers: micheil: there is nothing more... [12:07] mauritslamers: that is the issue here.. [12:07] micheil: there'd have to be. [12:08] micheil: paste the full output to your shell from the time you started the node process to when it returned you to your shell [12:08] mauritslamers: it doesn't crash node [12:08] micheil: okay [12:08] micheil: are you able to share the code? [12:08] mauritslamers: absolutely [12:08] mauritslamers: micheil: http://github.com/mauritslamers/Thoth [12:09] lstrojny has joined the channel [12:09] micheil: hmm... [12:09] mauritslamers: my problem here is that the call from the client traverses through the app and it hits an undefined function somehwere [12:09] micheil: what's the shell output the line before the undefined is not a function [12:09] mauritslamers: but I have no clue where [12:10] mauritslamers: the shells output is just messages from my app... [12:10] mikew3c has joined the channel [12:10] mauritslamers: and a spurious TypeError: undefined is not a function [12:10] micheil: and what code are you running? [12:11] koning_robot has joined the channel [12:11] micheil: v8: var a; a(); [12:11] v8bot: micheil: TypeError: Property 'a' of object # is not a function [12:12] micheil: because that is a seriously big project by the looks [12:13] micheil: mauritslamers: so, what was the last message before your app outputs that undefined is not a function? [12:13] dnolen has joined the channel [12:15] altamic has joined the channel [12:15] d0k has joined the channel [12:15] [[zz]] has joined the channel [12:16] mauritslamers: micheil: it is a message that the connection closes after a POST... which is a message from the XHR server side client [12:17] mauritslamers: the only thing that code does is end the response [12:17] micheil: is there a callback near it? [12:18] mauritslamers: no... [12:19] mauritslamers: that is why I really want to know where node encounters that error [12:19] mauritslamers: it is just very hard to find... [12:23] isaacs has joined the channel [12:29] Nohryb has joined the channel [12:35] whyme has joined the channel [12:35] b_erb has joined the channel [12:36] liar has joined the channel [12:38] pHcF has joined the channel [12:38] pHcF: hey [12:38] b_erb: can i depend on node's lib/freelist.js which is not part of the public api or should i copy it into my own code? [12:39] rkieffer has joined the channel [12:42] stride: iirc that's just not documented as part of the public api right now [12:44] stride: http://static.brandedcode.com/node-doc/freelist.html yeah, it's integrated in this draft for the new docs so you should be okay [12:44] micheil: uhh.. [12:44] micheil: ryah didn't want it documented. [12:44] stride: uh, hmkay :/ [12:44] micheil: it's not public api, I thought it was. [12:45] micheil: also, it's not that big to clone in to your own project, but there are better ways to do it. [12:45] micheil: try mikeal's pool library, for instance [12:50] voodootikigod has joined the channel [12:50] micheil: hey voodootikigod [12:50] voodootikigod: he micheil [12:50] voodootikigod: whats up [12:50] micheil: oh, working on some api libraries, it's fun but slow work because the apis are pretty much undocumented. [12:51] micheil: voodootikigod: also, I hear you found someone younger then me? :P [12:51] voodootikigod: yups [12:51] voodootikigod: actually re gets credit for that [12:51] voodootikigod: rey [12:51] micheil: good stuffs, but it's makin' me feel old now. :P [12:52] voodootikigod: hahhaha [12:52] voodootikigod: at some point i want to ge tyou on as well [12:54] micheil: oh, okay, yeah, we've put the noded on hold for a few months [12:54] micheil: just because the mixdowns and stuff were taking too long for us to get accurate information out [12:55] voodootikigod: ea [12:55] voodootikigod: mixdown time sucks [12:55] voodootikigod: then you have show notes [12:55] voodootikigod: then someone bitches about ogg support [12:55] micheil: yeah, the first one was 12 hours. [12:55] voodootikigod: then bitches about full transcript [12:55] voodootikigod: and its lik ewf [12:55] voodootikigod: like wtf [12:55] micheil: yah [12:56] MattJ has joined the channel [12:56] mauritslamers: micheil: found the issue causing the type error... don't know yet how to solve it, but found the spot :) [12:56] mauritslamers: thanks for helping out :) [12:56] micheil: no worries [12:56] micheil: there wasn't much I could do though [12:57] mauritslamers: no, but willingness to help is very valuable :) [13:01] b_erb: do one of you guys know when a TCP socket is created when creating an http client request? during http.createClient() or client.request()? [13:02] micheil: client.request I think. [13:03] micheil: actually, createClient creates the TCP socket [13:04] micheil: and then on client.request, if disconnected, it reconnects the tcp socket [13:04] b_erb: micheil: ok thanks [13:05] slaskis has joined the channel [13:06] jashkenas has joined the channel [13:06] jashkenas has left the channel [13:08] stride: ryah: setImplmentationMethods is missing an "e" in net.js (if you care about typos) [13:09] micheil: lol. That sounds really like an abstract issue [13:09] micheil: stride is in your codes runnin them through a spell checkerrrr... [13:10] sclaflin has joined the channel [13:10] stride: I'm not that bored.. ;) I was just looking where the socket http client uses is actually initialized :) [13:10] bradleymeck1 has joined the channel [13:11] zimbatm has joined the channel [13:12] stride: (plus, setImpl sounds way to Java for node ;)) [13:13] micheil: oh, right [13:16] Fullmoon has joined the channel [13:20] kjeldahl has joined the channel [13:20] bradleymeck1 has joined the channel [13:21] leepa has joined the channel [13:22] isaacs has joined the channel [13:22] dnolen has joined the channel [13:24] alek_br has joined the channel [13:26] aubergine has joined the channel [13:29] Wizek has joined the channel [13:29] Wizek: hi [13:30] Wizek: How do I set varying level JSON, when multiple levels are undefined? [13:30] Wizek: I have strings like this: "product-manufacturer-name", and a value assigned. That means, I have to set obj.product.manufacturer.name to a particular value [13:31] Wizek: but, obj.product is undefined, not to speak about obj.product.manufacturer [13:31] Wizek: I've come up with this solution, but it doesn't seem to work every time: https://gist.github.com/721671 [13:32] stride: do you want it to just create the missing parts? [13:33] Wizek: stride: Yea, create them, and then assign a specific value [13:34] matclayton has joined the channel [13:39] pietern has joined the channel [13:40] hellp has joined the channel [13:41] nooder: . [13:41] arpegius has joined the channel [13:42] karboh has joined the channel [13:43] stride: hm. that didn't work.. I'll put it in a new gist.. sorry [13:44] stride: https://gist.github.com/721694 test this one, it should do what you want [13:46] Wizek: stride: testing [13:47] danoyoung has joined the channel [13:47] nooder: can someone recommend async library? :( [13:47] stride: oh, I just realized, the special case where the root object is undefined isn't handled in my version if that's a problem for your scenario [13:48] stride: nooder: for control flow? Step is pretty popular [13:48] kawaz_home has joined the channel [13:48] nooder: stride, i want to get result from async db query [13:48] stride: nooder: ok, and where's the problem? [13:49] nooder: problem is that code is not waiting for results [13:49] nooder: main loop [13:50] whyme: nooder: this is how nodejs works [13:50] nsolsen has joined the channel [13:50] stride: nooder: it shouldn't be necessary to wait, you just don't do anything else until you hit the callback with the db result [13:50] nooder: yep. it callbacks to another function [13:50] nooder: which checkes result [13:50] stride: nooder: you should check out the control flow articles on howtonode.org [13:50] nooder: oh thx [13:51] stride: Wizek: any luck? :) [13:53] malkomalko has joined the channel [13:53] nooder: problem is that i have 2 different loops which are calling same function [13:53] Jonasbn_ has joined the channel [13:53] nooder: so chaining makes me crazy :( [13:54] MattDiPasquale has joined the channel [13:55] chrischris has joined the channel [13:56] vineyard has joined the channel [13:56] davidsklar has joined the channel [13:56] danzajdband has joined the channel [13:57] losing has joined the channel [13:59] paulrobinson has joined the channel [13:59] Wizek: stride: Hmm, yea. It works, thanks! :) Now I need a deleter with the same flavor, that won't leave empty objects around if a key-value pair is deleted at the end of a nested chain [14:00] Wizek: stride: How do I check for empty objects? [14:00] stride: Wizek: do you want it to delete it or set it to null? [14:01] Wizek: stride: delete it [14:01] stride: Wizek: uh, not sure, count the properties or something, .length might bring strange results [14:02] christophsturm has joined the channel [14:02] Wizek: stride: nope, there is no .length of objects [14:02] nooder: can someone fix logic for me? i'm migrationg from syn client to async http://pastebin.com/Mr0guvkF [14:04] ysynopsis has joined the channel [14:07] danzajdband has left the channel [14:09] Wizek: stride: How effective do you think JSON.stringify(obj) == '{}' vould be? [14:10] whyme: Wizek: try Object.keys({}).length === 0 [14:11] Alex3000 has joined the channel [14:11] virtuo_ has joined the channel [14:12] stride: yeah, that's def. better :) [14:12] bahamas has joined the channel [14:14] masahiroh has joined the channel [14:14] Wizek: ty whyme [14:15] whyme: Wizek: yw [14:20] isaacs has joined the channel [14:21] skampler has joined the channel [14:22] tisba has joined the channel [14:23] christophsturm: I tried to force npm to reinstall my bundle, but now it's not doing anything: https://gist.github.com/cdc30113a04e6469a1cf [14:25] ben_alman has joined the channel [14:25] trotter has joined the channel [14:25] bradleymeck1 has joined the channel [14:25] bnoordhuis has joined the channel [14:26] bnoordhuis: pquerna: you at the keyboard? [14:26] [AD]Turbo has joined the channel [14:28] mikedeboer has joined the channel [14:29] delapouite has joined the channel [14:30] bradleymeck1 has left the channel [14:30] matclayton has left the channel [14:31] davidwalsh has joined the channel [14:34] rchavik has joined the channel [14:34] killfill has joined the channel [14:35] frankieshakes has joined the channel [14:36] KeyboardWarrior has joined the channel [14:37] stride: gosh, why are java web frameworks so terribly big, weird and full of buzzwords? [14:37] KeyboardWarrior: Is there an Apache module if I want to run node.js from Apache rather than its own web server? [14:37] jherdman has joined the channel [14:37] Ond: Mina isn't so bad is it [14:38] Ond: Not a module, keyboardwarrior [14:38] Ond: You should be able to do that without one [14:38] Ond: I'm running node.js behind nginx [14:39] cferris has joined the channel [14:39] drudge: you can proxy requests through apache with mod_proxy (ProxyPass) but depending on what you're doing it isn't a great idea [14:40] KeyboardWarrior: Can you use V8 as CGI? [14:40] AAA_awright: v8: false-1 [14:40] v8bot: AAA_awright: -1 [14:40] AAA_awright: Eh I guess that makes sense [14:40] AAA_awright: v8: true-1 [14:40] v8bot: AAA_awright: 0 [14:41] baoist has joined the channel [14:42] AAA_awright: KeyboardWarrior: No, but you can do even better, use it as an HTTP server [14:42] KeyboardWarrior: v8 cgi is just really slow [14:42] KeyboardWarrior: Like so: http://four.livejournal.com/1018997.html [14:42] AAA_awright: Use a reverse proxy, Nginx can handle those like it's nothing (except for static files which it does even better) [14:44] AAA_awright: Plus a reverse proxy isn't threaded so you can have your entire architecture be evented :D [14:44] AAA_awright: (I think?) [14:46] bnoordhuis: stride: enterprise java is awesome, job security for life! [14:46] bnoordhuis: what are you trying to do? [14:48] AAA_awright: Argh tracking parallel events is hard [14:48] mohiam_ has joined the channel [14:48] AAA_awright: One or two too many variables to simultaneously program for ~:( [14:50] stride: bnoordhuis: getting job security for life.. ;) [14:51] isaacs has joined the channel [14:51] baoist: Has anyone used YUI3 and received the error: Cannot read property 'Y' of undefined? [14:52] Wes- has joined the channel [14:52] tisba_ has joined the channel [14:53] sonnym has joined the channel [14:54] bentruyman_ has joined the channel [14:54] fangel has joined the channel [14:54] tisba_ has joined the channel [14:56] ntelford has joined the channel [14:59] liori has left the channel [15:02] alek_br has joined the channel [15:03] hunter_loftis has joined the channel [15:04] figital has joined the channel [15:05] tisba_ has joined the channel [15:07] pHcF_ has joined the channel [15:07] confoocious has joined the channel [15:07] confoocious has joined the channel [15:11] m0rganic has joined the channel [15:12] wattz: Morning [15:13] hunter_loftis: mornin' [15:14] wattz: any C++/node/v8 devs in here [15:14] mscdex: are you kidding, we're all node devs! :-D [15:15] wattz: haha [15:15] wattz: sup mscdex [15:15] wattz: hey, if i have an internal C++ method that returns a ThrowException [15:15] wattz: how do i use it in C++ land to print it using the ReportException method (like in node) [15:16] leepa: what do you mean by 'returns' [15:16] leepa: do you mean... 'throws' [15:16] Anti-X: just look at some of the other built ins [15:16] wattz: returns the v8::ThrowException [15:16] wattz: in a C++ method that's not exposed to js [15:21] isaacs has joined the channel [15:22] mjr_ has joined the channel [15:24] mraleph has joined the channel [15:24] BillyBreen has joined the channel [15:24] danoyoung has joined the channel [15:25] skohorn has joined the channel [15:27] wdperson has joined the channel [15:28] danzajdband has joined the channel [15:28] danzajdband has left the channel [15:29] softdrink has joined the channel [15:30] AAA_awright: Argh I feel stupid [15:30] AAA_awright: v8: false++ // seriously needs to throw an Error [15:30] v8bot: AAA_awright: ReferenceError: Invalid left-hand side expression in postfix operation [15:30] AAA_awright: v8: false++; // seriously needs to throw an Error [15:30] v8bot: AAA_awright: ReferenceError: Invalid left-hand side expression in postfix operation [15:30] AAA_awright: Cuss you v8bot [15:31] AAA_awright: v8: var a=false; a++ // seriously needs to throw an Error [15:31] v8bot: AAA_awright: 0 [15:31] AAA_awright: Wait zero? [15:31] tisba has joined the channel [15:32] kriszyp has joined the channel [15:32] ceej has joined the channel [15:32] paulrobinson_ has joined the channel [15:32] AAA_awright: Oh I guess so [15:32] AAA_awright: v8: var a=false; ++a [15:32] v8bot: AAA_awright: 1 [15:34] unomi has joined the channel [15:34] unomi has joined the channel [15:34] jamund has joined the channel [15:35] femtoo has joined the channel [15:36] altamic_ has joined the channel [15:37] tmitchell has joined the channel [15:38] tmitchell48 has joined the channel [15:39] troymg has joined the channel [15:40] matt_c has joined the channel [15:41] tmitchell48: /msg nickserv register [15:42] booths has joined the channel [15:42] sivy: i don't suppose V8 added a grep method to Array [15:42] troymg has left the channel [15:42] micheil: grep? [15:43] micheil: V8 follows the ECMA262 5th Edition specification [15:44] tamerami has joined the channel [15:44] stride: sivy: .filter might suit your needs [15:45] sivy: stride: ah [15:45] sivy: that'd work too [15:46] markwubben has joined the channel [15:50] bnoordhuis: wattz: ThrowException() doesn't actually return anything (well, Undefined()), it schedules the exception to be thrown [15:50] aheckmann has joined the channel [15:50] wattz: gotcha [15:50] wattz: thanx for the reply [15:51] wattz: fixing my "Invalid C char string" stuff now [15:51] wattz: and thanx to you, i can return the exception [15:51] bnoordhuis: cool, glad to have been of help [15:52] wattz: Invalid C String conversion [15:52] wattz: YAY! [15:52] wattz: ... [15:52] wattz: -_- [15:54] Spion_ has joined the channel [15:55] hunter_loftis: Anybody worked with mongoose? I'm getting some weird behavior with Models [15:56] bnoordhuis: v8: var x = 42; f = function() { console.log(x); }; f(); x = 1337; f(); [15:56] v8bot: bnoordhuis: CONSOLE: [42, 1337], OUTPUT: undefined [15:56] phidelta has joined the channel [15:56] jchris has joined the channel [15:56] phidelta: Hi Kami, I notices nodul.es is offline. Do you need help? [15:57] cloudhead has joined the channel [15:59] wattz: http://pastie.org/1335584 [15:59] wattz: anyone see whyt Invalid C String conversion is happening here [15:59] pt_tr has joined the channel [15:59] wattz: http://pastie.org/1335584 [15:59] wattz: updated [16:00] micheil_mbp has joined the channel [16:00] bnoordhuis: wattz: what type is handler? [16:01] wattz: TryCatch [16:01] micheil has joined the channel [16:01] pagameba has joined the channel [16:01] losing has joined the channel [16:01] robotarmy has joined the channel [16:02] wattz: all Im doing is returning: [16:02] delapouite has joined the channel [16:02] EyePulp has joined the channel [16:03] wattz: v8::ThrowException(v8::Exception:Error(String::New("Unable to load"))) [16:03] v8bot: wattz: SyntaxError: Unexpected token : [16:03] wattz: ::Error [16:03] beawesomeinstead has joined the channel [16:04] bnoordhuis: wattz: it's probably because handler->Exception() doesn't return a string object [16:04] wattz: heh, borrowed from V8 examples [16:05] dgathright has joined the channel [16:05] bnoordhuis: from the google code site? i think most of those examples are outdated [16:06] wattz: http://pastie.org/1335606 [16:06] wattz: full method [16:06] isaacs has joined the channel [16:06] mraleph: bnoordhuis: Utf8Value does ToString conversion so it should be fine [16:07] omni5cience has joined the channel [16:07] paulrobinson has joined the channel [16:07] mraleph: wattz: are you sure that ToString(exception) is not an empty string? Utf8Value::operator* returns NULL for empty string AFAIK [16:07] wattz: it's not compile time errors either, only when i run the js [16:08] bnoordhuis: mraleph: does that work on Exception objects? [16:08] cronopio has joined the channel [16:08] mraleph: bnoordhuis: everything should have toString :-) [16:08] bnoordhuis: i mean a meaningful implementation [16:09] mraleph: Error has meaninful toString, not sure about the others though. [16:09] wattz: mraleph: you are right exception is null/empty. [16:09] cronopio: Hi everyone. Im doing tests with nodestream, Im running the todo example and have one problem [16:09] wattz: that's weird because i throw exception with error type and string::new [16:10] wattz: my throw is just a macro [16:10] wattz: #define THROW_EXCEPTION(type, reason) v8::ThrowException(v8::Exception::type(String::New(reason))) [16:10] cronopio: Holly crab, it seem the mongo conection fail :( [16:11] benburkert has joined the channel [16:11] paulrobinson_ has joined the channel [16:11] confoocious has joined the channel [16:12] mraleph: wattz: are you sure that TryCatch catched something? [16:13] wattz: mraleph: can i shoot you a quick /msg? [16:13] mraleph: sure [16:13] wattz: as this is not directly related to node, but is js/v8? [16:13] dmcquay has joined the channel [16:13] bnoordhuis: wattz: from node.cc [16:13] bnoordhuis: Local er = try_catch.Exception(); [16:13] bnoordhuis: String::Utf8Value msg(!er->IsObject() ? er->ToString() [16:13] bnoordhuis: : er->ToObject()->Get(String::New("message"))->ToString()); [16:14] wattz: ahh [16:15] norviller has joined the channel [16:15] tj_ has joined the channel [16:16] mraleph: v8: try { throw new Error("foo"); } catch (e) { e.toString() } [16:16] v8bot: mraleph: "Error: foo" [16:17] baoist has joined the channel [16:17] kenbolton has joined the channel [16:17] mraleph: bnoordhuis: I think that code just tries to avoid unnecessary prefix being inserted by Error.prototype.toString [16:18] mraleph: v8: Error.prototype.toString === Object.prototype.toString [16:18] v8bot: mraleph: false [16:18] mraleph: v8: Error.prototype.toString.toString() [16:18] v8bot: mraleph: "function toString() { [native code] }" [16:18] joshpeek has left the channel [16:19] joshpeek has joined the channel [16:19] bnoordhuis: mraleph: i read it as being able to catch plain objects too [16:20] bnoordhuis: v8: throw ((new Object()).message = "yo momma is so fat") [16:20] v8bot: bnoordhuis: undefined: undefined [16:20] bnoordhuis: thought you'd say that [16:21] Rixius has joined the channel [16:21] hoodoos has joined the channel [16:21] hoodoos: hello everybody. anybody used node-syslog? [16:22] hoodoos: and syslog as logging system for webapp at all :) [16:23] jakehow has joined the channel [16:23] bnoordhuis: hoodoos: no to the former, yes to the latter [16:23] dgathright has joined the channel [16:24] rkieffer has joined the channel [16:24] hoodoos: bnoordhuis, i want to took advantage of syslog's distributed infrastucture.. [16:24] mscdex: v8: process.memoryUsage() [16:24] v8bot: mscdex: ReferenceError: process is not defined [16:24] mscdex: ! [16:25] stride: hoodoos: to send them to a remote syslog receiver? [16:26] hoodoos: yep [16:27] tilgovi has joined the channel [16:27] jpld has joined the channel [16:27] jpld has joined the channel [16:27] bnoordhuis: hoodoos: what's stopping you? [16:28] dgathright_ has joined the channel [16:28] mookai has joined the channel [16:28] ehaas has joined the channel [16:30] frodenius: v8bot: (function(){return Object.getOwnPropertyNames(this)}).call(null) [16:30] v8bot: frodenius: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [16:30] frodenius: v8bot: (function(){return Object.getOwnPropertyNames(this)}).call(null) [16:30] v8bot: frodenius: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [16:30] frodenius: mwwww [16:30] frodenius: damn you xchat [16:30] dguttman has joined the channel [16:32] Aikar: been no commits to master since 0.3.1 release? [16:32] Aikar: err nvm [16:32] Aikar: sorry was on someones fork which was very little diff in url from official [16:32] jchris has joined the channel [16:32] webben has joined the channel [16:33] warz has joined the channel [16:33] frodenius: v8: (function(){return Object.getOwnPropertyNames(this)}).call(null) [16:33] v8bot: frodenius: ["TypeError", "decodeURI", "print", "parseFloat", "Number", "URIError", "encodeURIComponent", "RangeError", "ReferenceError", "RegExp", "Array", "isNaN", "console", "Date", "Infinity", "Boolean", "Error", "NaN", "execScript", "String", "Function", "Math", "undefined", "encodeURI", "escape", "unescape", "decodeURIComponent", "EvalError", "SyntaxError", "Object", "eval", "parseInt", "JSON", "isFinit [Output truncated...] [16:33] frodenius: urm [16:33] nolkyan has joined the channel [16:34] davglass has joined the channel [16:35] webben has joined the channel [16:36] dylang has joined the channel [16:36] isaacs has joined the channel [16:36] isaacs_ has joined the channel [16:36] baoist has joined the channel [16:39] joemccann has joined the channel [16:40] webben has joined the channel [16:40] springmeyer has joined the channel [16:41] Yuffster has joined the channel [16:42] webben has joined the channel [16:43] sivy: huh [16:43] sivy: fs.realpath doesn't expand "~" ? [16:45] sivy: ryah: is there any way to get node to expand ~ in paths? [16:45] sivy: or is the OS level just not there? [16:46] cardona507 has joined the channel [16:46] tjholowaychuk: sivy: I dont think we will have any shell expansion type stuff [16:47] codehero has joined the channel [16:47] frodenius: sivy⸭ process.env.HOME [16:47] sivy: frodenius / tjholowaychuk: ok, so i need to expand ~ to process.env.HOME myself then, I'm guessing? [16:48] tjholowaychuk: yeah, just do process.env.HOME + '/whatever' [16:48] tjholowaychuk: or path.join() [16:49] codehero: hi tj, I have a quick question about soda.js [16:49] codehero: how would I use getText to grab data from a [16:49] codehero: ? [16:49] frodenius: yea, if you won't get around ~, you can just replace it yoursel [16:49] frodenius: f [16:49] sivy: tjholowaychuk: (actually, i'm implementing a function to search the process.env.PATH for an installed binary, so I'll be replacing ~ in PATH entries) [16:49] tjholowaychuk: codehero: you cant use regular identifiers? ex: 'css=my .super-cool span' ? [16:50] erlnoob has joined the channel [16:50] tjholowaychuk: sorry i guess 'locators' is the term [16:50] tjholowaychuk: im no selenium pro [16:50] codehero: I have an ID for the span [16:50] codehero: "ctl_00_xxxx" [16:50] codehero: am using that for the locator [16:50] webben has joined the channel [16:50] tjholowaychuk: codehero: 'css=#ctl_00_xxxx' or for ids just 'ctl_00_xxxx' should work fine [16:51] codehero: so my nested callback also looks like this: [16:51] codehero: browser.getText("ctl00_chMain_lblDateFrom",function(text){...}) [16:51] codehero: is that correct? [16:51] tjholowaychuk: hmm yeah looks fine [16:51] tjholowaychuk: i rarely use the get* stuff, mostly just the assertions [16:51] frodenius: sivy⸭ my process.env.PATH doesn't even have ~ in it [16:51] tjholowaychuk: but they should be fine [16:51] sivy: frodenius: mine does. :-) [16:52] codehero: hmm keep getting null values for text and I am sure my IDs are correct [16:52] phidelta: If anyone cares, I brought up a mirror for http://nodul.es at http://jspn.org while nodul.es is down. I just miss it too much ;) [16:52] tjholowaychuk: codehero: I cant recall, its been a little while but the first arg might be an error (or null) [16:53] webben has joined the channel [16:53] tjholowaychuk: so just console.log(arguments) [16:53] codehero: ah k [16:53] sprout has joined the channel [16:54] kkaefer has joined the channel [16:54] kkaefer has joined the channel [16:54] codehero: tj you are correct, first callback param is err [16:54] tjholowaychuk: codehero: ah :) [16:55] codehero: so in the example for google, getTitle does not have an err param though [16:55] codehero: just the title [16:55] codehero: does that one work differently? [16:55] webben has joined the channel [16:55] tjholowaychuk: I cant remember [16:55] tjholowaychuk: hm [16:56] daniellindsley has joined the channel [16:57] webben has joined the channel [16:58] codehero: anyway, thanks for the help [16:58] tjholowaychuk: np [16:58] ooooPssss has joined the channel [16:59] jetienne has joined the channel [17:00] webben has joined the channel [17:00] ph^ has joined the channel [17:02] webben has joined the channel [17:05] webben has joined the channel [17:05] Ori_P has joined the channel [17:05] dandean has joined the channel [17:06] isaacs1 has joined the channel [17:07] webben has joined the channel [17:08] hoodoos has joined the channel [17:08] altamic has joined the channel [17:08] DoNaLd` has joined the channel [17:09] webben has joined the channel [17:10] phidelta has left the channel [17:10] springmeyer has joined the channel [17:11] slloyd has joined the channel [17:13] BrianTheCoder has joined the channel [17:14] jherdman_ has joined the channel [17:14] bartt has joined the channel [17:15] unomi has joined the channel [17:17] kstt has joined the channel [17:18] kstt: hello [17:18] aconbere has joined the channel [17:18] kstt: can node.js keep state across requests, and what concurrency paradigm does it offer ? [17:18] aurynn: can python keep state across requests? [17:19] cronopio: Im playing with most basic example of nodestream, but i have this error => https://gist.github.com/721998 [17:19] oal has joined the channel [17:19] cronopio: The error appear in the second connections [17:20] kstt: aurynn: python is node an evented web server as far as I know, and probably offers some concurrency mechanism through mutex, although I have never tried. [17:20] frodenius: kstt⸭ ofc it can, there is no concurrency but os process concurrency [17:20] aurynn: kstt, node isn't a web server. [17:20] frodenius: it can be [17:20] aurynn: It's a programming environment that you can write web servers in. [17:21] aurynn: Even with my poor grammar. [17:21] mjr_: node can certainly keep state across requests [17:21] aurynn: kstt, but, yes, the frameworks for web serving can handle state persistence. [17:21] mjr_: Because there are no threads, you don't even need to worry about locking. [17:22] evanmeagher has joined the channel [17:22] SubStack: I like how node doesn't make it insane to carry around state between requests [17:22] SubStack: you can just use plain old variables like all other forms of programming [17:23] saikat has joined the channel [17:23] MikhX has joined the channel [17:24] kstt: mjr_: can't a handler be pre-empted at some point ? [17:24] mjr_: nope [17:24] mjr_: There is only one thread, and each event handler runs to completion. [17:24] jpick has joined the channel [17:24] kstt: how can it fairly distribute load then ? [17:24] mjr_: That is the bug and the feature of node [17:24] aconbere: I assume it's possible to run only sections of the node test suite, but I'm not entirely sure how. Anyone know? [17:25] aurynn: kstt, you run more than one worker. [17:25] aurynn: At which point, you have to care about state transfer and such [17:25] frodenius: kstt⸭ you can have multiple node processes which each share a socket, then the kernel distributes laod [17:26] isaacs: evanmeagher: hey, dude, completion is looking hot. [17:26] aurynn: is there a shared memory implementation for node yet? [17:26] evanmeagher: isaacs: :) [17:26] kstt: frodenius: uh ? [17:26] evanmeagher: isaacs: i'm looking over your ls branch now [17:26] isaacs: i'm gonna radically refactor ls to make it both easier to use for completion, as well as better for programmatic use. [17:26] agnat has joined the channel [17:26] isaacs: evanmeagher: any branch that says "snapshot" is basically me just rsyncing to my work computer. [17:26] isaacs: don't read too much into that [17:26] kstt: I have to read more on node.js [17:27] jherdman has joined the channel [17:27] isaacs: that branch will die today [17:27] frodenius: kstt⸭ https://github.com/kriszyp/multi-node [17:27] evanmeagher: isaacs: heh, gotcha [17:27] evanmeagher: isaacs: thanks for the comment on my blog, btw [17:27] evanmeagher: isaacs: i'll look into the session stuff at some point [17:27] isaacs: i realized that i was basically going to have to re-build ls inside ls.completion, and that's really dumb. [17:28] kstt: mmh, I'm just using node.js code that proxy to http server. I have a single node process, and two client connected to it. [17:28] kstt: two concurrent requests [17:28] isaacs: it'd be cool if ls.completion = ls [17:28] cronopio: anyone can help me, about my problem with nodestream?? [17:28] evanmeagher: isaacs: yeah, like how `cache ls` basically completes to itself [17:29] isaacs: yeah, it seems like the cache completion stuff isn't quite working as i'd expect. [17:29] isaacs: cache clean and cache ls should look at what's actually in teh .cache folde.r [17:29] isaacs: it looks in teh code like it's doing that, but it doesn't seem to work quite right for me. haven't dug into it [17:29] isaacs: ok, gotta run. [17:30] lo3 has joined the channel [17:30] lo3 has left the channel [17:32] jchris has joined the channel [17:33] altamic has joined the channel [17:37] isaacs has joined the channel [17:37] msekimura has joined the channel [17:37] noahcampbell has joined the channel [17:38] softdrink: thanks to node, any blocking function call (in any language) annoys me to no end. [17:39] cronopio: :'( I can't play with nodestream :'( [17:39] hornbeck has joined the channel [17:39] tjholowaychuk: softdrink: haha seems awkward hey [17:40] tjholowaychuk: im always like "woah... I used to do this... wtf" [17:40] softdrink: tjholowaychuk: scary isn't it? on the other hand, i love when that happens [17:40] WaterCooled has joined the channel [17:40] softdrink: like when i used to use tables for page layout [17:40] softdrink: then saw the light [17:41] leepa: and then realise you still have to do it for html e-mails [17:41] leepa: the going back is painful [17:41] softdrink: hehe [17:41] leepa: html attributes what!? [17:41] softdrink: i really should invoice microsoft for antidepressants. [17:43] sprout has joined the channel [17:44] evanmeagher: isaacs: added completion for cache ls: https://github.com/evnm/npm/commit/12e3cee0ed7c88f9349bd84de72b950aa26deb64 [17:44] daniellindsley has left the channel [17:45] brianmario has joined the channel [17:45] teemow has joined the channel [17:45] micheil: tjholowaychuk: was nodestream yours or mine? cronopio [17:46] cronopio: micheil: someone finally reads :) [17:46] tjholowaychuk: micheil: what ? lol [17:46] micheil: cronopio: hey.. don't be like that.. [17:47] cronopio: micheil: this is the error message => https://gist.github.com/721998 [17:47] tjholowaychuk: guillermo wrote it [17:47] micheil: actually, nodestream was rauchg [17:47] micheil: I wrote node-eventstream :D [17:47] cronopio: :P [17:47] tjholowaychuk: ohhh :p [17:48] micheil: cronopio: I'd have no idea. [17:48] cronopio: micheil: thks to try! :P [17:48] cronopio: tjholowaychuk: you have not played with nodestream??? [17:49] jherdman_ has joined the channel [17:49] tjholowaychuk: cronopio: nope [17:49] tjholowaychuk: just the demo [17:50] cronopio: tjholowaychuk: thks anyway! [17:50] rkieffer has joined the channel [17:53] mookai has joined the channel [17:53] ph^ has joined the channel [17:53] dguttman has joined the channel [17:54] gf3 has joined the channel [17:55] unomi has joined the channel [17:59] yozlet has joined the channel [18:00] altamic has joined the channel [18:00] robmason has joined the channel [18:00] bnoordhuis has joined the channel [18:02] svnlto has joined the channel [18:02] mikew3c_ has joined the channel [18:03] deepthawtz has joined the channel [18:04] zz_raja has joined the channel [18:05] cognominal has joined the channel [18:06] ezmobius has joined the channel [18:07] Gruni has joined the channel [18:08] ysynopsis has joined the channel [18:09] steffkes has joined the channel [18:11] tlrobinson has joined the channel [18:13] qFox has joined the channel [18:13] derencius has joined the channel [18:15] yozlet has joined the channel [18:16] danzajdband has joined the channel [18:16] danzajdband has left the channel [18:20] meatmanek has joined the channel [18:22] rkieffer has joined the channel [18:24] Nova has joined the channel [18:25] Nova: Yo guys, anyone here familiar with socket.io? I want to disable the output from that module (The one with: 30 nov 19:22:00 - socket.io ready bla bla) [18:26] stephank has joined the channel [18:27] novadesu: Oke I don't know if you guys received my previous message, IRC was nagging about my name being registered already, I'll repeat it [18:27] novadesu: Yo guys, anyone here familiar with socket.io? I want to disable the output from that module (The one with: 30 nov 19:22:00 - socket.io ready bla bla) [18:28] isaacs has joined the channel [18:29] dgathright has joined the channel [18:30] richcollins has joined the channel [18:30] tmitchell48 has joined the channel [18:31] msekimura has joined the channel [18:31] AAA_awright: Anyone have any experience with HTTP authentication? I'm trying to allow a user to only authenticate to the server if they want to... It looks like the browsers aren't passing WWW-Authenticate for all requests to the server even though the RFC says they "should" [18:32] rkieffer has joined the channel [18:32] jakehow has joined the channel [18:33] stride: most only pass it if they hit it together with a 4** status code iirc [18:33] bnoordhuis: AAA_awright: http basic or digest? [18:33] AAA_awright: Digest... does it matter? [18:33] bnoordhuis: well, i know basic better [18:34] AAA_awright: It happens with Basic too (I think) [18:34] AAA_awright: But let's try basic (I'll be using SSL anyways) [18:34] jherdman has joined the channel [18:34] bnoordhuis: i think most if not all browsers send the authentication header for /path and /path/sub/dir [18:35] derren13 has joined the channel [18:35] MikhX has joined the channel [18:35] AAA_awright: Passing domain="/" doesn't do anything (for Digest... there doesn't appear to be a Basic equivalant) [18:36] AAA_awright: "A client SHOULD assume that all paths at or deeper than the depth of the last symbolic element in the path field of the Request-URI also are within the protection space specified by the Basic realm value of the current challenge." *blink* That's for Basic [18:36] bnoordhuis: actually, ff seems to send it for the entire domain [18:40] flashingpumpkin has left the channel [18:41] unomi has joined the channel [18:41] unomi has joined the channel [18:41] V1 has joined the channel [18:41] unomi_ has joined the channel [18:44] rbranson: npm needs stats... my narcissism demands it [18:45] unomi has joined the channel [18:45] unomi has joined the channel [18:45] naturalethic has joined the channel [18:50] creationix has joined the channel [18:50] creationix: ryah, heh, I just noticed a typo in my http api proposal where I have HTTP/1.2 [18:50] creationix: here I go inventing new protocols [18:51] langworthy has joined the channel [18:52] ryah: :) [18:54] MikhX has joined the channel [18:55] CIA-54: node: 03Ryan Dahl 07master * rdb98d6e 10/ src/node_crypto.cc : Remove assert in verify_peer; add comments - http://bit.ly/fKXsJG [18:56] hassox has joined the channel [18:56] jpld has joined the channel [18:56] stephank has joined the channel [18:58] richcollins: Anyone see this before a crash? [18:58] richcollins: (libev) select: Invalid argument [18:59] ryah: richcollins: maybe too many FDs? [18:59] ryah: which OS? [18:59] richcollins: ryah: OS X [18:59] ryah: really? [18:59] richcollins: I set ulimit -n 8192 [18:59] ryah: an old version of OSX [18:59] ryah: richcollins: select can only handle 1024 [19:00] richcollins: probably snow leopard but maybe leopard [19:00] richcollins: let me check ... [19:00] rbranson: only reason it would return EINVAL is for fds > FD_SETSIZE [19:01] rbranson: well [19:01] richcollins: yeah its 10.5.8 [19:01] rbranson: or the time limit was invalid, but I doubt that's happening [19:01] jbergstroem has joined the channel [19:01] richcollins: ryah: Ah I might be going over that. This is a webcrawler. It might have more than 1k open at once [19:01] richcollins: although it probably shouldn't unless I have a bug [19:01] richcollins: easy to check [19:02] richcollins: and throttle if needed [19:02] ryah: richcollins: if you use 10.6 you get kqueue [19:02] ryah: which can handle more [19:02] rbranson: does 10.5 really not have kqueue? [19:02] crodas has joined the channel [19:02] richcollins: ryah: I should probably just move it onto a linux box [19:02] ryah: it's buggy [19:02] rbranson: ah [19:02] ryah: richcollins: yes [19:02] richcollins: Running it from a mac mini :-P [19:02] femtooo has joined the channel [19:03] jpick has joined the channel [19:03] rbranson: Linux will run on a mini :) [19:03] skampler: rbranson: 'strace node x' can be useful for that type of debugging, if you have strace [19:03] ryah: rbranson: https://github.com/ry/node/blob/db98d6e4e0c9e7adc4f2a4c335bf3b2df30b4b89/src/node.cc#L1884-1885 [19:04] rbranson: skampler: if I was on OS X, I would just use instruments :) [19:05] fly_ has joined the channel [19:05] CIA-54: node: 03Ryan Dahl 07master * r81afb54 10/ src/node.cc : Fix comment - http://bit.ly/fYLyih [19:05] postwait has joined the channel [19:06] postwait: I'm using node-amqp and I'm having trouble seeing how to catch a server-side force closed on the client side. [19:06] kjeldahl has joined the channel [19:07] kjeldahl has joined the channel [19:08] davidascher has joined the channel [19:08] mikedeboer has joined the channel [19:09] cafesofie has joined the channel [19:09] rkieffer has joined the channel [19:10] hornbeck has joined the channel [19:10] rkieffer has joined the channel [19:10] ircretary has joined the channel [19:11] vnguyen has joined the channel [19:17] robmason has joined the channel [19:17] strmpnk has joined the channel [19:17] InsDel has joined the channel [19:20] CIA-54: node: 03Ryan Dahl 07master * r7018849 10/ (src/node.js lib/console.js): Lazy load console object - http://bit.ly/hjSFH3 [19:21] slaskis has joined the channel [19:23] teemow has joined the channel [19:23] BrianTheCoder has joined the channel [19:26] EvanR-work has joined the channel [19:26] naturalethic has joined the channel [19:27] codehero has left the channel [19:29] isaacs has joined the channel [19:29] davglass has joined the channel [19:29] hassox has joined the channel [19:30] ircretary has joined the channel [19:30] ircretary has joined the channel [19:31] micheil: ryah: using defineGetter there is kinda hot. [19:31] ircretary has joined the channel [19:32] aubergine has joined the channel [19:32] losing_ has joined the channel [19:36] ircretary has joined the channel [19:37] xla has joined the channel [19:37] phidelta has joined the channel [19:38] rudebwoy has joined the channel [19:38] CIA-54: node: 03Ryan Dahl 07master * r486c74e 10/ src/node_crypto.cc : [19:38] CIA-54: node: Revert "Default to TLSv1" [19:38] CIA-54: node: This reverts commit 97970b05fe37c0a0313c5e0cb2f13be9e15199a3. - http://bit.ly/fNHFW1 [19:38] CIA-54: node: 03Ryan Dahl 07master * r7286b79 10/ (68 files in 14 dirs): Upgrade V8 to 2.5.9.1 - http://bit.ly/gQGMqS [19:39] ircretary has joined the channel [19:39] jameshome_ has joined the channel [19:39] ircretary has joined the channel [19:40] ircretary has joined the channel [19:40] zomgbie has joined the channel [19:41] ircretary has joined the channel [19:42] ircretary has joined the channel [19:42] ircretary has joined the channel [19:43] ircretary has joined the channel [19:43] ircretary has joined the channel [19:46] cjmFloating has joined the channel [19:48] dberlinger has joined the channel [19:50] hassox has joined the channel [19:52] sclaflin has left the channel [19:54] CIA-54: node: 03Ryan Dahl 07master * re15e214 10/ test/simple/test-child-process-cwd.js : [19:54] CIA-54: node: Fix test-child-process-cwd.js on Joyent servers [19:54] CIA-54: node: It's symlinked to /usr/bin so this test fails. - http://bit.ly/fcJQ7y [19:54] mikeal has joined the channel [19:56] amerine has joined the channel [19:58] ircretary has joined the channel [19:58] arrty has joined the channel [19:59] isaacs has joined the channel [19:59] msilverman2 has joined the channel [19:59] isaacs: ircretary: show [19:59] msilverman2: hi guys, I have a weird thing happening right now.. [20:00] msilverman2: 0.2.4 node.. on mac, and on debian [20:00] msilverman2: the exec command looks like it's acting differently.. I think it's having a problem with escaping escape characters [20:00] ircretary has joined the channel [20:00] msilverman2: works like a charm on my mac, but seems to blow up in debian and produce some nasty things [20:00] msilverman2: has anyone heard of something like this before? [20:01] pietern: ryah: I'm creating a Buffer on 0.3 in c++, but console.log says it's actually a slowbuffer [20:01] drudge has joined the channel [20:01] ircretary has joined the channel [20:01] pietern: can I create a fast buffer straight from c++? [20:02] norviller has joined the channel [20:02] ircretary has joined the channel [20:02] V1: Is there a reason why the console.dir requires the util module on each call: https://github.com/ry/node/commit/70188499b072e2b205e2079fe093e781163bbd67#L0R49 ? Seems rather wasteful to me [20:02] tjholowaychuk: pietern: I have that same issue with node_canvas [20:02] tjholowaychuk: stuck with "slow buffers" [20:03] pedrobelo has joined the channel [20:03] drudge: anyone know a module for odbc or mssql in node? [20:03] boaz_ has joined the channel [20:03] ircretary has joined the channel [20:03] wink_: drudge: i have one half implemented [20:04] drudge: is it public? [20:04] hassox has joined the channel [20:04] wink_: i know thats not helpful, but if its useful to someone else i'll finish it [20:04] drudge: i don't mind helping, if it's public :) [20:05] isaacs: V1: it's not so bad. it's a native module, and already parsed, and it's an arity=1 function being called with one arg. [20:05] mjr_: isaacs: so why not just require util once at the top then? [20:05] V1: Indeed [20:05] isaacs: ACTION shrug [20:05] mjr_: Is there some overhead for those programs that don't need util? [20:05] wink_: it's not at the moment, it's a generic c++ odbc class, it'd just need node bindings and some nonblockiness (which is not that bad with libodbc) [20:05] isaacs: probably to keep the startup time down [20:06] vineyard has joined the channel [20:06] wink_: if you can wait a few days, i'll throw it up on github and we can finish it [20:06] isaacs: but you could do something like `var util` at the top, and then in the function: util = util || require("util") [20:06] pietern: tjholowaychuk: looks like the "fast" buffers are slices of one larger fast buffer [20:06] tjholowaychuk: pietern: yup [20:06] pietern: so there is less alloc/dealloc [20:06] mjr_: that is what makes them "fast" :) [20:06] drudge: sounds good wink_, hit me up when you have it online [20:06] sclaflin has joined the channel [20:06] wink_: drudge: do you have a github acct? [20:06] pietern: mjr_: tjholowaychuk : now I get it... ;) [20:07] drudge: wink_: drudge is my account [20:07] stagas has joined the channel [20:07] pietern: mjr_: the problem is creating a fast buffer would require a jump from c++ to js, seeing the fast buffers are implemented in js [20:07] pietern: the question is if this is still faster than creating a slow buffer every time [20:07] aubergine has joined the channel [20:07] mjr_: yeah, I think for your case it isn't that bad to create a new "slow" buffer. [20:07] mjr_: Since you are already in C++ [20:08] pietern: right [20:08] Gruni has joined the channel [20:08] wink_: drudge: just sent you a message on github so i'd have your account [20:08] pietern: sticking with the slow buffers it is [20:08] mjr_: pietern: yeah, I think this is also not a very common case, so I don't think it is worth optimizing much. [20:08] mjr_: pietern: I think most people will choose strings. [20:08] wink_: i've got to spend the next day or 2 finishing something else up then i should have some time to spend on it [20:08] drudge: cool, followed [20:08] hornairs has joined the channel [20:08] wink_: but i dont think it'd take more than a few hours to take the class i have and bind it up [20:09] tapwater has joined the channel [20:11] wink_: just to give you an idea, libodbc provides an api that is almost 1:1 identical to libpq (postgres)...the only real difference is libodbc requires a few extra allocations that libpq hides from you [20:11] wink_: but other than that, it'd bind up almost identically [20:12] maushu has joined the channel [20:13] ossareh has joined the channel [20:14] Jonasbn_ has joined the channel [20:18] phidelta has joined the channel [20:20] msekimur_ has joined the channel [20:20] hunter_loftis: I'm using mongoose 1.0 to interface with MongoDB, but it's breaking when different modules connect to different databases. For example, after mongoose.connect('localhost/dbA'), mongoose.connect('localhost/dbB') doesn't do anything. [20:23] TooTallNate has joined the channel [20:24] TooTallNate: Does anyone know a good way to diagnose memory leaks in Node server scripts? [20:25] bentruyman has joined the channel [20:25] russell_h has joined the channel [20:26] stagas: yay my new site is up http://hwknd.com :) [20:28] cafesofie has joined the channel [20:29] frankieshakes has left the channel [20:29] isaacs has joined the channel [20:30] isaqual_ has joined the channel [20:31] nsolsen has joined the channel [20:34] programble has joined the channel [20:34] programble has joined the channel [20:34] skampler has joined the channel [20:35] sh1m has joined the channel [20:37] Druid_ has joined the channel [20:39] shirro has joined the channel [20:39] shirro has joined the channel [20:41] digitalsanctum has joined the channel [20:43] pedrobelo has joined the channel [20:44] bingomanatee_ has joined the channel [20:45] elijah-mbp has joined the channel [20:46] wattz: Is it possible to add a function to an object (not an objectTemplate) in C++/v8 land? [20:49] sepi has left the channel [20:51] losing has joined the channel [20:52] hunter_loftis: In something like app.get('/', some_function), if some_function is in another file, is there a way for it get to access to "app" via req, res, or some global? [20:52] tjholowaychuk: hunter_loftis: req.app [20:52] tjholowaychuk: they each have reference to each other [20:52] tjholowaychuk: res.req for example [20:52] hunter_loftis: awesome, thanks, figured that had to be in there [20:52] tjholowaychuk: which helps with some apis [20:54] davglass_ has joined the channel [20:54] swistak has joined the channel [20:55] yozlet has joined the channel [20:56] matjas has joined the channel [20:57] pagameba: wattz yes it is :) [20:58] felixge has joined the channel [20:58] felixge has joined the channel [20:58] mr_daniel has joined the channel [20:58] felixge: ryah: ping [20:59] losing has joined the channel [21:00] isaacs has joined the channel [21:01] matjas_ has joined the channel [21:01] joemccann_ has joined the channel [21:03] tomtaylor has left the channel [21:05] ryah: felixge: yo [21:05] felixge: ryah: I'm still interested in making it easy to stub modules (including the internal ones) for unit testing [21:06] felixge: But I don't really want to do the require hijack thing for two reasons [21:06] steffkes: may it be possible to access the response-object inside process.on('uncaughtException',function(error){ [21:06] steffkes: }); ? i actually see how ... if :/ [21:06] felixge: a) It's more complex than it seems on the surface [21:06] liar has joined the channel [21:06] matjas has joined the channel [21:06] felixge: b) I don't have any need / use case for it - I'd not be the right person to design it [21:07] noahcampbell has joined the channel [21:07] bentruyman has joined the channel [21:07] felixge: So I'm wondering if you would also consider a simple patch that would "merely" introduce an additional cache that is always looked at first [21:07] felixge: either that or merging the internal module cache with module.cache [21:08] themiddleman has joined the channel [21:08] ryah: sure [21:08] rauchg_ has joined the channel [21:08] matjas__ has joined the channel [21:10] felixge: ryah: do you have a preference for the implementation? Otherwise I'll just propose a patch that I think will work nicely. I'm fine if the API is marked as experimental and maybe changes again as long as the basic ability to pre-populate answers for require() remains [21:11] steffkes: or may the response object already be gone at this point? :/ [21:11] ryah: felixge: something experimental works. [21:11] ryah: require.userCache or something [21:11] creationix: steffkes: no, normally there is no way to get at it [21:11] felixge: ryah: sounds good [21:11] creationix: there is a thread about this on the mailing list [21:12] steffkes: creationix, the idea was to create something like a global catch .. for every possible error to avoid exiting the node proccess .. perhaps i should do it not like this? *g [21:12] felixge: steffkes: short answer: No there is no (reliable) way to get the reference to the request that caused an exception [21:12] creationix: steffkes: the global uncaughtException event will do that [21:13] creationix: there is just no way to get at the http client [21:13] felixge: steffkes: at this point the wise thing is to keep a reference to all unanswered requests and reply to them with a 500 error on uncaught exception, then kill your process [21:13] steffkes: hm okay .. but, given the fact that i can catch the error this way .. the client will receive some sort of timeout, because i'll be not able to send any response, right? [21:13] creationix: sure [21:14] hellp has joined the channel [21:14] steffkes: and how? when there is no response-object available? perhaps i misunderstood sth? [21:14] felixge: steffkes: you mean me? [21:15] steffkes: felixge, that reply was meant for creationix's "sure" .. but is also valid for your suggestion ;> keep a reference? [21:15] steffkes: responding with http 500 will be fine :> [21:15] felixge: steffkes: basically you would register all req/res objects in an array that is reachable from within your uncaught exception [21:16] creationix: steffkes: the problem is you don't which of the requests caused the error, so you either ignore the exception and let it time-out or close all connections with a 500 [21:16] steffkes: aahh well .. kinda easy -.- thx felixge [21:16] felixge: steffkes: but again: You can not know which request caused the internal error, you need to shut them all down [21:16] booths has joined the channel [21:16] creationix: hopefully we can figure a way around this issue [21:16] creationix: maybe the event source stuff ryah is working on [21:17] steffkes: creationix, felixge, that will be okay .. thx for the hints :) [21:17] hassox has joined the channel [21:18] ph^ has joined the channel [21:19] hornbeck has joined the channel [21:19] bahamas has joined the channel [21:19] aconbere has joined the channel [21:20] strmpnk has joined the channel [21:22] creationix has left the channel [21:23] bentruyman has joined the channel [21:23] bingomanatee_: I'm having issues with node-mongodb-native choking in examples [21:23] unomi has joined the channel [21:24] bingomanatee_: http://snipt.org/olloo/ [21:24] cardona507 has joined the channel [21:24] bingomanatee_: never reaches cursor. [21:24] MikhX has joined the channel [21:25] losing_ has joined the channel [21:25] BrianTheCoder has joined the channel [21:25] isaqual_ has joined the channel [21:30] isaacs has joined the channel [21:30] TooTallNate: So does anyone know a good way to diagnose memory leaks in Node server scripts? [21:31] joemccann has joined the channel [21:32] strmpnk has joined the channel [21:32] stagas: TooTallNate: I know a bad way :) I comment away stuff I think they might be leaking until I spot it [21:33] TooTallNate: stagas: Ya, but the leak on my server is only really apparent after running for a day or two, so commenting out and restarting the server will take forever [21:34] tanepiper has joined the channel [21:36] zemanel has joined the channel [21:36] doffm: Does anyone know the best way to do 'cleanup' work in vows. I've read through the stuff at vowsjs.org, but can't find something specific to cleaning up a text context or suite. [21:37] elijah-mbp has joined the channel [21:38] Nohryb: TooTallNate: $ heap node ( man heap ) [21:38] evanmeagher has joined the channel [21:39] stagas: I must be having like 99% bounce rate at hwknd.com does the front page suck that big? [21:39] Omni5cience_ has joined the channel [21:39] stagas: it needs some content but I wouldn't jump to add other people's stuff by myself [21:39] joemccann has left the channel [21:40] stagas: that would be cheating :) [21:41] TooTallNate: Nohryb: I can't find a 'heap' on Ubuntu. Know a package I need to install? [21:41] siculars_ has joined the channel [21:41] KyleXY has joined the channel [21:42] mjr_: TooTallNate: I think V8 has some sort of heap profiler, but I'm not sure how to get at it from node. [21:42] uvacav has joined the channel [21:43] msilverman2: aheckmann: you around? I was wondering if you could explain what this little baby was: child_process.exec timeout fix (Aaron Heckmann) [21:43] uvacav: anyone know what JSON parser node.js uses? [21:43] hornbeck has joined the channel [21:43] msilverman2: we're seeing really weird things happening with exec on our debian box.. some weird issue where it's not completing commands, but it works fine on macosx boxes [21:44] benburkert has joined the channel [21:44] tjholowaychuk: uvacav: the one that v8 supplies [21:44] aheckmann: msilverman2: the childprocess would timeout but still wait for the command to complete [21:44] aheckmann: msilverman2: now it doesn't [21:45] msilverman2: ok, doesn't seem like our issue [21:45] msilverman2: thanks [21:45] aheckmann: anytime [21:46] uvacav: tjholowaychuk: oh, that makes sense. ugh, its crashing on JSON that a bunch of validators say is fine [21:48] booths: I keep getting this error "Software caused connection abort" when using https://github.com/felixge/node-mysql... I'm not sure what it is, I figured it was something from trying to make too many connections, but I check connected status before trying to connect... [21:48] faust45 has joined the channel [21:48] TooTallNate: mjr_: ya that looks like it might require some compile flags with V8, and some function calls in node core. I can't believe nobody has looked into this yet! [21:48] felixge: booths: I have no idea what error that is [21:49] felixge: booths: can you paste the error output? [21:49] spetrea_ has joined the channel [21:49] nsolsen has joined the channel [21:49] mjr_: TooTallNate: seems like people on the list have been talking about this in someone's project. It'd be worth checking. [21:49] faust45: how i can fetch duration from mp3 file node-id3 lib can help me? [21:50] booths: felixge: Stactrakce is node.js:772 -> IOWatcher.callback net:454 -> Stream._readImpl net:304 [21:50] booths: That's it [21:50] felixge: booths: that's not the full output, is it? [21:51] felixge: booths: either way, you are saying you connect multiple times? [21:51] felixge: booths: do you use a new client for each connection? [21:51] booths: That's the full stack trace, the msg says "Error: ECONNABORTED, Software caused connection abort" [21:51] KyleXY: errr, are there any prebuilt packages for Debian, I know, you may say it is simple to compile it but my issue is limited ram, meh. [21:51] booths: No I was, so I was checking client.connected before trying to connect [21:51] wattz: Handle myobj = Object::New(); myobj->Set(String::New("testing", FunctionTemplate::New(someMethod)); [21:51] booths: I have moments where I [21:51] wattz: can that not be done, as Func Template doesn't like being a value? [21:52] wattz: wow, i forgot ->GetFunction... [21:52] booths: I'm writing 10-15 times per second, and sometimes 15 seconds of nothing, so I was doing a setTimeout to client.end() after 5 seconds, and just clearing/restarting the timeout w/ each call [21:52] wattz: -_- [21:52] ossareh_ has joined the channel [21:54] felixge: booths: client.end() is async, you must not call connect() until client.end() has reported success [21:55] felixge: booths: but there could also be a problem with re-using the client object. I would simply recommend to create a new client for each connection [21:55] felixge: booths: or even better, just keep the connection open for as a long as you may need it [21:56] booths: felixge: Well it's an application that runs 24/7, but like I said, there's moments of lulls [21:56] Nohryb has joined the channel [21:56] booths: I'm not sure if there's any harm in maintaining a connection indefinitely. [21:56] felixge: booths: I don't think there is any harm. We're doing it with transloadit.com and it works nicely [21:57] bpadalino has joined the channel [21:57] booths: felixge: Alright, I'll do that then. Do you do any sort of checking to ensure the connection is still alive, or does the module do that automatically? [21:57] Nohryb_ has joined the channel [21:57] KyleXY: felixge: "Try without risk - the first $5 are free " Oh nice, [21:57] Nohryb_ has joined the channel [21:57] felixge: booths: the module does it [21:58] felixge: KyleXY: :) [21:58] Nohryb has joined the channel [21:58] booths: felixge: thanks man. [21:58] felixge: KyleXY: Drug dealers have shown this method to work ;) [21:59] KyleXY: felixge: Too bad I am only interested in trying, heh [21:59] felixge: KyleXY sure. We'll still hope you come back for more : ) [22:00] KyleXY: Lol nice, "Credit Card for more free money" [22:00] KyleXY: That works a bunch I bet too [22:00] felixge: KyleXY: it does work indeed : ) [22:00] isaacs has joined the channel [22:00] pagameba has joined the channel [22:01] KyleXY: Too bad I am a minor, which shocks many people, and don't have a debit or credit card :p. [22:02] felixge: KyleXY: If you have a cool project and need free credit to pull it off - just ping us : ) [22:02] pedrobelo has joined the channel [22:02] felixge: * free credits [22:03] KyleXY: Thanks for the offer man, I will keep that in mind if I have anything crazy I plan to do [22:05] KyleXY: 5 dollars can go quite far .-. [22:05] shirro has joined the channel [22:05] shirro has joined the channel [22:05] TooTallNate: mjr_: ahh, node-profiler and node-inspector look promising! [22:05] akahn has joined the channel [22:05] ossareh has joined the channel [22:06] pagameba: getting TypeError: Converting ciruclar structure to JSON - but util.inspect works ... any ideas? I'm pretty sure there are no circular references [22:07] wink_: inspect has a default depth i believe [22:07] SubStack: rauchg_: in SF I see! [22:07] ossareh__ has joined the channel [22:08] wink_: pagameba: you almost surely have a circular reference in your object, change your util.inspect(xxx) call to util.inspect(xxx, null) [22:08] wink_: and see what happens [22:08] wink_: inspect will likely croak as well [22:08] pagameba: wink_ checking [22:09] cronopio: Im using express, how to pass variable to layout.jade when render any view??? [22:09] pagameba: wink_ you are almost surely right! [22:09] wink_: there's a first time for everything ;D [22:10] wink_: now hopefully inspect printed enough for you to figure out where it is or does it just die? :p [22:10] KyleXY: Oh how I wish I had to ability to design. [22:11] tjholowaychuk: cronopio: anything you pass via { locals: { ... }} should be available as well [22:12] tjholowaychuk: cronopio: or do you mean literally to ALL views? [22:12] SubStack: yes I think that would be useful too [22:13] SubStack: because if you use a variable in your layout template, you need to pass it in via locals every single time [22:13] SubStack: repetition sucks [22:13] cronopio: tjholowaychuk: nop, the variable show in layout only :( [22:13] tjholowaychuk: you can use the "helpers" [22:13] tjholowaychuk: which are really just locals [22:13] tjholowaychuk: available at all times [22:13] cronopio: tjholowaychuk: oohhhh great!!!! [22:13] SubStack: I want locals scoped over routes [22:14] SubStack: ACTION might write some middleware for that [22:14] tjholowaychuk: http://expressjs.com/guide.html#app-helpers-obj- [22:14] hornbeck has joined the channel [22:14] pagameba: wink_ yes it did, I have a timeout property that is set to the result of setTimeout() - previously this didn't break JSON.stringify, now it does I guess [22:14] tjholowaychuk: something I will be adding soon is progressive locals, something like req.local('name', val) [22:14] SubStack: tjholowaychuk: it'd be super great if helpers had access to req and res [22:14] SubStack: then you could session : req.session [22:15] tjholowaychuk: SubStack: the "dynamic helpers" do [22:15] SubStack: oh really! [22:15] tjholowaychuk: http://expressjs.com/guide.html#app-dynamicHelpers-obj- [22:15] tjholowaychuk: yup [22:15] pagameba: wondering if I can use some new fancy ECMAScript 5 property thing to 'hide' the timeout :) [22:15] tjholowaychuk: that is how they differ [22:15] tjholowaychuk: .helpers() are static, and .dynamicHelpers() are per req/res [22:15] tjholowaychuk: not the greatest name, but I couldnt think of anything better [22:15] SubStack: { { locals : {} } } is kind of annoying too. Is there any shortcut to just set the locals in .render()? [22:16] tjholowaychuk: that is gone in HEAD [22:16] tjholowaychuk: its just render('foo', { my: 'local' }) [22:16] SubStack: ah excellent [22:16] tjholowaychuk: but it was a breaking change, and really awkward to handle both [22:17] kawaz_work has joined the channel [22:19] novadesu: Anyone familiar with socket.io here? [22:20] tjholowaychuk: fuck lol stupid commonjs crap, this jison thing is being useless [22:22] joshthecoder: tjholowaychuk: I kind of like peg.js [22:22] tjholowaychuk: joshthecoder: I will check it out [22:22] tjholowaychuk: just need something quick and dirty [22:22] Nohryb has left the channel [22:23] tjholowaychuk: ive used leg lots with c so if it is similar then that is cool [22:23] joshthecoder: they have this neat online generator which is neat to play with: http://pegjs.majda.cz/online [22:23] tjholowaychuk: well peg/leeg [22:24] joshthecoder: but be warned it sometimes crashes, so backup your grammar when using it :) [22:24] joshthecoder: yeah it's pretty much the same syntax as the C version of peg/leg [22:25] bingomanatee_: wattz - you are technically in javascript land; you add a function to an objects prototype. However a function can be added to an object instance as well. var f = new Foo(); f.save = function(){ do stuff }; [22:25] tjholowaychuk: joshthecoder:cool [22:25] cronopio: tjholowaychuk: Thanks so much!!! you are awesome!! [22:25] bingomanatee_: Keep in mind that this is kind of an antipattern. while you CAN do this is not exactly best practices. you should be able to encapsulate the function into an adaptife function of sorts. [22:27] chrischris has joined the channel [22:30] AsO3 has joined the channel [22:31] isaacs has joined the channel [22:34] admc has joined the channel [22:35] msekimura has joined the channel [22:36] cafesofie has joined the channel [22:38] markh has joined the channel [22:38] markh has joined the channel [22:40] Yuffster has joined the channel [22:41] chrelad has joined the channel [22:43] pHcF has joined the channel [22:46] msilverman2: what's the best way to determine when the buffer is done writing with .write? [22:47] felixge: msilverman2: buffer.write() is sync, it's done when the line has executed ;) [22:47] msilverman2: or do you know it's done when you enter the callback? [22:47] msilverman2: fs.write [22:47] msilverman2: not buffer.write [22:47] felixge: msilverman2: ah, in that case use the callback [22:47] msilverman2: that's what I figured, it seems like inside the callback to fs.write, that I can't write out another file [22:48] felixge: msilverman2: you should. If not it's a bug or a misunderstanding about the api on your end [22:48] sepehr has joined the channel [22:48] felixge: msilverman2: you may be better off using the fs.WriteStream class [22:48] svnlto has joined the channel [22:49] felixge: at least that provides a nice abstraction around opening, writing and closing a file [22:49] isaacs: evanmeagher: https://github.com/isaacs/npm/commit/ceb31e5a2970951bc8496ac839d67347d096a44a Check this out. holy crap it's so handy [22:49] stepheneb has joined the channel [22:49] Wes- has joined the channel [22:49] booths has joined the channel [22:49] isaacs: you don't even have to actually press "enter" to find out most of the things you want to know from npm ls. just keep hitting tab [22:50] evanmeagher: oh wow that's awesome [22:50] evanmeagher: :) [22:50] mikeal has joined the channel [22:50] felixge: ACTION gn8 [22:53] evanmeagher: isaacs: what commands should be excluded from bundle? [22:54] evanmeagher: isaacs: bundle, init, help, completion... [22:54] isaacs: evanmeagher: there's a list in lib/bundle.js, i think [22:54] isaacs: L36-38 [22:54] evanmeagher: oh wow, i didn't look 20 lines down. thanks. [22:54] isaacs: oh, but bundle aren't on that list. derp [22:54] isaacs: go ahead and add any more than seem dumb. [22:54] evanmeagher: i'll add it [22:55] isaacs: kewl [22:55] robmason_ has joined the channel [22:55] isaacs: build probably [22:55] isaacs: also [22:58] evanmeagher_ has joined the channel [22:58] sonnym has joined the channel [23:01] norviller has joined the channel [23:01] isaacs has joined the channel [23:04] novadesu: How do I get the content of an url? Like example.com/test/?a=1 would return ... [23:05] isaacs: evanmeagher: can you rebase on my latest em-compl branch? [23:05] evanmeagher: yeah [23:05] isaacs: thanks [23:05] evanmeagher: just finished bundle, so 1 sec and i'll push [23:06] isaacs: kk [23:06] isaacs: evanmeagher: +1 on keeping the cache completion stuff in lib/cache.js [23:06] isaacs: evanmeagher: though that file does have a ton of crap. it might be worth splitting up someday, but not for this. [23:06] evanmeagher: isaacs: it's at least something to keep in mind [23:07] evanmeagher: but yeah, not pertinent atm [23:07] isaacs: the 0.3.x branch will be focused on cutting npm into pieces and making it pluggable, and then probably it'll be done. [23:07] evanmeagher: cool [23:07] evanmeagher: isaacs: btw, i think there's a bug in ls [23:07] isaacs: novadesu: require("http").cat(url, function (er, data) { ... }) i believe [23:07] isaacs: evanmeagher: orly? [23:07] evanmeagher: if i go `npm ls =evan`, it completes to "==evan" [23:08] evanmeagher: WAIT [23:08] evanmeagher: nvm i haven't rebased yet lol [23:08] isaacs: ah, kewl [23:08] isaacs: evanmeagher: i had to manually strip "=" from the list of word completion chars, so you may need to re-source npm-completion.sh [23:08] isaacs: evanmeagher: that's whati was getting wiht @ for that same reason [23:09] evanmeagher: isaacs: ah, that's probably it [23:09] mauritslamers has joined the channel [23:10] sepehr has joined the channel [23:10] novadesu: isaacs++ [23:10] v8bot: novadesu has given a beer to isaacs. isaacs now has 7 beers. [23:11] KyleXY: lol [23:12] dioxide: ircd in node.js. this should be fun [23:13] KyleXY: dioxide: Already has been done, just not in node.js, heh. [23:13] isaacs: i thought someone wrote an irc server in node already, wasn't that one of ryan's demos? [23:14] KyleXY: Other JS engines, shouldn't be any harder on node.js. [23:14] isaacs: and ofcourse, there's like 3 different IRC clients [23:14] isaacs: ircretary runs on node [23:14] ircretary: isaacs: I'm not sure what to do with that command. Ask for help in PM and I'll tell you what I can do. [23:14] isaacs: ircretary: Hello [23:14] ircretary: isaacs: Hello :) [23:14] isaacs: ircretary: what time is it? [23:14] ircretary: isaacs: It's 2010-11-30T23:14:33.700Z by my watch, sir. [23:14] KyleXY: That is a ircbot, not an ircd :p [23:14] dioxide: KyleXY: obviously, since i just grabbed it [23:15] isaacs: yeah, but there's an irc server floating around somewhere, i'm sure. [23:15] dioxide: there are several [23:15] dioxide: i didnt mean im writing one from scratch, just wanted to fork it and see how bad i can screw it up [23:16] isaacs: ahh, ok [23:16] KyleXY: I bet you it is listed on the github wiki page heh [23:16] KyleXY: https://github.com/ry/node/wiki [23:16] dioxide: thats where i found it [23:16] dioxide: ryans is a fork off someone elses code [23:16] rauchg_ has joined the channel [23:16] evanmeagher: isaacs: https://github.com/evnm/npm/commits/em-compl [23:16] KyleXY: A chunk searching "ircd" didn't return anything [23:17] KyleXY: there are clients though heh [23:17] KyleXY: Lots of them [23:17] KyleXY: .-. [23:19] KyleXY: makes me curious.. [23:20] ysynopsis has joined the channel [23:20] KyleXY: noatta.ch is pretty cool, heh [23:22] rkieffer has joined the channel [23:23] broofa has joined the channel [23:23] danzajdband has joined the channel [23:24] danzajdband has left the channel [23:26] robmason_ has joined the channel [23:31] isaacs has joined the channel [23:32] sepehr has left the channel [23:38] dipser has joined the channel [23:39] mif86 has joined the channel [23:42] rwaldron_ has joined the channel [23:43] rwaldron_ has joined the channel [23:43] [[zz]] has joined the channel [23:45] ajpiano has joined the channel [23:51] Spion__ has joined the channel [23:52] rchavik has joined the channel [23:52] rchavik has joined the channel [23:52] jcodyl1 has left the channel [23:53] hoodoos has joined the channel [23:54] jwl has joined the channel [23:54] cafesofie has joined the channel [23:55] petercooper has left the channel [23:55] elijah-mbp has joined the channel [23:56] charlenopires has joined the channel [23:58] cafesofie has joined the channel [23:59] sepehr has joined the channel [23:59] jchris has joined the channel