[00:00] benburkert has joined the channel [00:00] piscisaureus: ryah: should be changed, then, because #include is already used for child_process_win32 and stdio_win32 [00:00] piscisaureus: ryah: but i'm playing with libev and it does that too [00:01] danielrmz has joined the channel [00:01] bingomanatee_: node-inspector is set to 0.3.0 or later; I'm under the impression that 0.3.0 is not stable yet - how (un)stable3 is it? [00:02] c4milo: bingomanatee: I think he meant in the master branch [00:02] bingomanatee_: thx [00:04] JusticeFries has joined the channel [00:06] tjholowaychuk has joined the channel [00:08] tekky has joined the channel [00:08] dida has joined the channel [00:09] matt_c has joined the channel [00:09] Aria: 0.3 is 'unstable' but works well most of the time. It's the new API, which is solidifying rapidly. [00:11] soniczen has joined the channel [00:11] ryah: bingomanatee_: if you're developing a new app i'd go with v0.3 [00:11] ryah: it will be v0.4 soon now [00:12] c4milo: ryah: how stable is v0.3 for long running apps? [00:13] squeek: Is there a clear and definitive set of guidelines for writing npm packages? I'm not just talking about package.json here, I'm talking about code/documentation guidelines, testing requirements, commenting etc. [00:13] isaacs: squeek: no. [00:13] isaacs: squeek: that's left up to your judgement and inclination. [00:13] Aria: "Make good code. Ship it." [00:14] Aria: "PS. Docs are nice." [00:14] isaacs: squeek: `npm help json` will tell you how to expose those docs and tests [00:14] squeek: Aria: "good" is a very, very subjective term. [00:14] und3f has joined the channel [00:14] isaacs: squeek: the subjectiveness is why npm doesn't seek to be an authority there. [00:14] squeek: right now I've sorta been winging by looking at other people's, but it's really, really inconsistent. [00:14] cafesofie has joined the channel [00:14] squeek: isaacs: you can have guideline without authority. collective agreement, it's called. [00:14] isaacs: squeek: i would maintain that it's inconsistent in all platforms, it's just that some hide that inconsistency from you. [00:14] isaacs: npm does not. [00:15] zomgbie has joined the channel [00:15] isaacs: collectives are very bad at agreeing [00:15] ryah: c4milo: the "unstable"-ness of v0.3 refers to API rather than perf [00:15] ryah: v0.3 performs better than v0.2 [00:15] squeek: I'd agree towards the inconsistency, but I find that at least with some guidelines, some best practices there you can at least strive towards something someone says it the best way, as opposed to making your own mind up and failing horribly. [00:15] saschagehlich has joined the channel [00:15] squeek: maybe I'm just too indecisive. [00:17] ryah: squeek: there isn't but we've been discussing this recently [00:17] c4milo: ryah: my main concern is predictable stability, I don't want node hangs unexpectedly without any logic reason. [00:17] ryah: i'd like to ratchet down what is considered a node module [00:17] aconbere: hmpf [00:18] aconbere: so I'm back to asking about running map reduce jobs via mongo-native :) [00:18] aconbere: seems a little wonky [00:18] lukegalea has joined the channel [00:18] soniczen: what is the flash() method used for? [00:18] squeek: the other thing I'd love to see is package testing across versions/os's, but I'm dreaming. [00:19] benburkert has joined the channel [00:19] ryah: c4milo: well - i think you can expect more predictablity from v0.2 since it doesnt change. [00:19] ryah: but we're not doing very wild stuff in v0.3 [00:19] ryah: mostly adding libraries [00:20] c4milo: ryah: cool, reasonable answer :) [00:20] isaacs: squeek: ok, how's this: put js files in "lib", executables in "bin", markdown documentation in "doc". write a package.json for it. add a test script that can be run from the command line, and put it in your scripts.test field in package.json [00:21] skm has joined the channel [00:21] isaacs: squeek: name your dependencies [00:21] ryah: squeek: and an index.js [00:21] ryah: :) [00:22] squeek: Could you do a nice favour and put this in documentation somewhere like a wiki page and not just my irc logfiles ;) [00:22] jchris has joined the channel [00:22] bingomanatee_: I installed a 2.6 build of node - if I want to "back up" and install a clean version of node (master) what should I do? [00:23] qnt4b has joined the channel [00:23] derferman has joined the channel [00:24] losing has joined the channel [00:26] bingomanatee_: also where is Master on the build version - is it 0.2.6, or 0.3.1? [00:28] stepheneb has joined the channel [00:33] isaacs: ryah: or a "main" module works just as good. [00:33] isaacs: ryah: lib/index.js will just get generated to point at it, then [00:34] rauchg_ has joined the channel [00:37] sprout has joined the channel [00:39] piscisaureus: ryah: nice :s [00:39] piscisaureus: D:\nodejs\node-src>node [00:39] piscisaureus: Not implemented: static Handle GetColumns(const Arguments& args) [00:39] piscisaureus: ←[0G> ←[0K←[0G←[2C [00:39] piscisaureus: ←[0G> ←[0K←[0G←[2Cconsole.log('hi'); [00:39] piscisaureus: hi [00:39] piscisaureus: ←[0G> ←[0K←[0G←[2C [00:40] saikat has joined the channel [00:40] richcollins has joined the channel [00:41] piscisaureus: ryah: no need to use coupling, just tell node that stdin is blocking, it will use a libeio thread to do reads :-) [00:41] piscisaureus: sorry about the thread wasted, tho. [00:42] benburkert has joined the channel [00:42] skm has joined the channel [00:45] SubStack: mikeal: I maked you a nodeconf proposal [00:45] mikeal: sweet [00:45] SubStack: if accepted, I promise there will be lots of illustrations [00:46] mikeal: haha [00:46] mikeal: awesome [00:46] shaver: when is nodeconf? [00:46] mikeal: May [00:46] mikeal: Mozilla should sponsor, and therefor get some free tickets :) [00:47] zentoooo has joined the channel [00:47] mikeal: shaver: http://www.nodeconf.com/ [00:49] derferman_ has joined the channel [00:49] piscisaureus: when is nodeconf.eu? [00:49] mikeal: not this year [00:50] aconbere: bah! [00:50] piscisaureus: sad [00:50] mikeal: running a good conference is hard [00:50] aconbere: ACTION grumbles about mongo-native's documentation [00:50] mikeal: there are 5 this year, 4 in the US and 1 in EU [00:50] mikeal: and that's all we can really do [00:50] mikeal: next year we can try for more [00:50] jimt has joined the channel [00:51] matt_c_ has joined the channel [00:51] piscisaureus: hmm maybe i should have a private party with felixge [00:51] mikeal: felixge will be at nodeconf [00:51] piscisaureus: `v beers felixge [00:51] v8bot: piscisaureus: felixge has 0 beers. [00:51] mikeal: or else i will hurt him physically [00:52] piscisaureus: mikeal: well then at least you would be in the EU [00:52] mikeal: i'll be at JSConf.eu [00:52] pkrumins: felixge is in europe [00:52] mikeal: felixge is in Berlin [00:52] mikeal: JSConf.eu is in Berlin :) [00:52] pkrumins: oh! [00:52] SubStack: how many talks do you expect for nodeconf? [00:53] piscisaureus: is jsconf.eu always in berlin? [00:53] pkrumins: september 25. [00:53] SubStack: pkrumins: sold out, looks like though! [00:53] SubStack: oh wait, hah 2010 [00:53] SubStack: silly years [00:53] pkrumins: oh years! [00:54] prettyrobots has joined the channel [00:54] pkrumins: i fell for that trap. [00:54] arlolra has joined the channel [00:56] jimt_ has joined the channel [00:56] dgathright has joined the channel [00:58] jamesarosen has joined the channel [00:58] mikeal: haha [00:58] mikeal: JSConf.eu is in the fall [00:59] mikeal: specific dates won't go out for a while [00:59] pkrumins: ok [00:59] mikeal: i don't know how many talks to expect [00:59] mikeal: i personally know like 10 people who will be submitting [01:00] mikeal: and depending on the number of talks we'll do 1 track or two track [01:02] jimt has joined the channel [01:07] lukegalea: hi all. I'm trying to write my first async spec using vows. [01:07] lukegalea: it's a very simple case: http://pastie.org/1435860 [01:08] lukegalea: but anything that is passed into the callback function is being interpreted as an error [01:08] stepheneb has joined the channel [01:08] lukegalea: ie. "An unexpected error was caught: (the results of console.dir on whatever I passed to the callback)" [01:08] lukegalea: I don't even have any assertions... [01:09] lukegalea: does anyone have any idea what's going on there? [01:09] kris_ has joined the channel [01:11] piscisaureus: ryah: alive? [01:11] ryah: piscisaureus: yes [01:11] piscisaureus: can you specify what the correct behaviour should be: [01:11] piscisaureus: node out.txt [01:12] ryah: without args? [01:12] piscisaureus: yeah [01:12] ryah: undefined [01:12] piscisaureus: ok [01:12] ryah: that is: whatever you want it to be [01:13] piscisaureus: that is: on windows it may be different than on posix? [01:13] tg has joined the channel [01:14] davidascher has joined the channel [01:15] davidascher has joined the channel [01:15] isaacs: ryah: please, oh please can we have node -bash: /usr/local/bin/node: No such file or directory [02:27] Chadams: the install was successful? [02:28] Liam_ has joined the channel [02:30] smtlaissezfaire has joined the channel [02:33] kanru has joined the channel [02:33] Chadams: actually node is now in my ~/local dir [02:34] Chadams: this isn;t good I can;t run it unless I'm in that folder [02:35] nonnikcam has joined the channel [02:35] cnus8n has joined the channel [02:37] Chadams: node will just not install right [02:37] bingomanatee_: Okay - I am having trouble figuring out the product for the HTML5 output - once you've parsed a block of HTML - how do you get at / navigate the nodes? [02:38] pengwynn has joined the channel [02:39] jakehow has joined the channel [02:39] pyrotechnick has joined the channel [02:39] overthemike has joined the channel [02:40] gabeh has joined the channel [02:40] pyrotechnick: ryah: turns out it wasn't a problem for 0.3.3 it was node-waf not doing a clean build [02:40] pyrotechnick: does anyone know how to do a clean build without deleting the build folder by hand? [02:41] c4milo: node-waf clean? [02:41] technowe_ has joined the channel [02:42] shimondoodkin has joined the channel [02:42] jchris has joined the channel [02:42] pyrotechnick: yeah i've been doing that [02:46] Chadams: so I fixed my issues installing node: I needed to add my path to ".bash_profile" NOT ".bashrc" [02:46] overthemike has left the channel [02:46] Chadams: I'm going to add a note about this in the gist... ugh [02:47] technoweenie has joined the channel [02:48] astoon has joined the channel [02:50] overthemike has joined the channel [02:50] overthemike has left the channel [02:51] piscisaureus: ryah: https://gist.github.com/768988 - improve path.resolve documentation, adds `cd` example as isaacs suggested [02:52] piscisaureus: don't forget [02:52] piscisaureus: I'm leaving, no windows repl today or tomorrow sadly [02:52] mgutz has joined the channel [02:52] smtlaissezfaire has joined the channel [02:54] omygawshkenas has joined the channel [02:55] mgutz: anyone how to do simple for-loop in coffeescript? for i in [0..files.length-1] goes into loop when files.length == 0 [02:57] chrischris has joined the channel [02:58] galaxywatcher has joined the channel [02:58] whyme has joined the channel [03:01] AAA_awright: I thought I could hack Javascript by setting undefined={}; and then object["a"]["b"]["etc"] would create the properties as needed, defaulting to {}... there isn't some similar hack to get that done is there? [03:02] johnnywengluu: is cloud9ide hosted version ready? [03:02] AAA_awright: There has to be some sane reason undefined is a variable and not a constant [03:02] SubStack: AAA_awright: you can use proxies [03:02] AAA_awright: SubStack: What's that? [03:02] SubStack: harmony proxies let you trap gets and sets on an object [03:03] AAA_awright: SubStack: Link? [03:03] AAA_awright: Is this a feature of ECMAScript? [03:03] SubStack: you can use them in node with the node-proxy module on npm [03:03] SubStack: it's not part of es5 [03:04] pyrotechnick1 has joined the channel [03:04] SubStack: (yet) [03:04] SubStack: at least, v8 doesn't have them out of the box yet [03:04] AAA_awright: SubStack: Can you get a link? [03:04] AAA_awright: I'm only finding HTTP proxies [03:05] SubStack: http://github.com/brickysam26/node-proxy [03:05] SubStack: oh bother, 404s [03:06] SubStack: https://github.com/isaacs/node-proxy [03:06] isaacs: yeah, i don't know what happened with brickysam26 [03:06] isaacs: he disappeared [03:06] SubStack: crazy! [03:06] isaacs: oh, no, he changed his name on github to samshull :) [03:06] isaacs: that's all [03:07] SubStack: AAA_awright: any how I use them in this module if you want an example: https://github.com/substack/node-permafrost/blob/master/index.js [03:07] SubStack: hah cool just noticed this explore command in npm [03:07] AAA_awright: Forked from https://github.com/samshull/node-proxy [03:08] isaacs: SubStack: oh, yeah, i should've mentioned explore and edit and docs [03:08] isaacs: those are cool commands [03:08] SubStack: how new are they? [03:08] AAA_awright: SubStack: Hah that's almost exactly what I've been looking for for something completely unrelated [03:09] Liam_: SubStack: isn't there a method for creating getters and setters built into v8? [03:09] SubStack: Liam_: there are a few ways [03:09] SubStack: you can use __define{Getter,Setter}__ or defineProperty [03:09] AAA_awright: Liam_: For specific properties, but not a catch-all [03:09] SubStack: yeah proxies are the only way to do catch-all type stuff [03:09] SubStack: otherwise you need to know the attribute names ahead of time [03:10] AAA_awright: I can't have object.(property) call function((property)) for instance, I can create a getter for a /specific/ property [03:10] Liam_: and there's Object.defineProperty() [03:10] kriskowal has joined the channel [03:10] Liam_: oh duh. you have that x.x [03:11] isaacs: SubStack: i dunno, really. i live in the next npm version, not the last. [03:11] SubStack: hah maybe for my node talk I could slip permafrost in at the end [03:11] softdrink: anyone handy with nginx configuration? [03:11] Yuffster_work has joined the channel [03:11] Liam_: softdrink: no but i've set up reverse proxies once or twice [03:12] piscm has joined the channel [03:12] piscm: ~ [03:13] SubStack: as an aside, proxies are the worst name ever [03:13] SubStack: for harmony proxies [03:13] pkrumins: how would you name them? [03:13] SubStack: thinking [03:14] pkrumins: | [03:14] pkrumins: / [03:14] pkrumins: - [03:14] pkrumins: \ [03:14] pkrumins: | [03:14] pkrumins: / [03:14] pkrumins: - [03:14] pkrumins: \ [03:14] pkrumins: | [03:14] pkrumins: / [03:14] pkrumins: - [03:14] SubStack: pkrumins: not in here [03:14] Liam_: pkrumins: that will do [03:14] pkrumins: that was his progres bar [03:14] pkrumins: i proxied it here [03:14] pkrumins: it still keeps going [03:14] softdrink: i'm just trying to get it to set the content-encoding and content-type for *.js.gz [03:17] herbySk has joined the channel [03:17] SubStack: call them hoxies [03:17] SubStack: short for harmony proxies [03:17] pkrumins: hoxies! [03:17] pkrumins: that name wont pass standard commitee [03:17] Hello71 has joined the channel [03:17] Hello71 has joined the channel [03:18] SubStack: tweeting anyway! [03:18] pkrumins: it's not official until tweeted [03:19] Liam_: If anyone's interested in node-to-node msg passing, i'm planning to write a simple module based on net.Streams which implements the packet format of the latest websocket protocol draft... [03:19] SubStack: http://twitter.com/#!/substack/status/23217083579891713 [03:19] pkrumins: it;s official guys! [03:19] pkrumins: hoxies! [03:20] SubStack: Liam_: why would you do that? [03:20] bartt has joined the channel [03:20] pyrotechnick1: wow [03:20] pyrotechnick1: proxies look awesome [03:21] pyrotechnick1: you can already emulate that though [03:21] Liam_: SubStack: I need binary msg passing [03:21] SubStack: Liam_: there are lots of modules that already do that [03:21] Liam_: oh, do tell... i hadn't found any [03:21] SubStack: like bson [03:22] yrashk: Liam_: js-to-js msg passing is already available in beam.js :) but that's not node.js :) [03:22] SubStack: also dnode! [03:22] SubStack: ACTION shameless plug [03:22] pkrumins: node-binary [03:23] Liam_: have seen dnode; rpc is a specific style [03:24] yrashk: Liam_ https://img.skitch.com/20101225-m374mjh1cnp7ifya2srkab4qpk.jpg [03:24] Liam_: and i need to pass non-js-object binary data [03:24] SubStack: oh wait, if you just want to send raw binary data why not just use plain old streams? [03:24] pyrotechnick1: SubStack: would dnode be fast enough for tealtime? [03:24] pyrotechnick1: like > 50 FPS [03:24] pyrotechnick1: between two nodes [03:24] SubStack: pyrotechnick1: what is a tealtime [03:24] pyrotechnick1: realtime* sorry [03:24] pyrotechnick1: with just a simple message [03:24] pyrotechnick1: maybe 50 bytes or so [03:24] pkrumins: it can do 10 billion a sec. [03:25] pyrotechnick1: what [03:25] SubStack: no it can't [03:25] pkrumins: why not! [03:25] pyrotechnick1: pkrumins: dont be a troll [03:25] pkrumins: haha ok [03:25] SubStack: because it does a JSON.parse [03:25] SubStack: and a JSON.stringify [03:25] pyrotechnick1: it's not helpful :p [03:25] pkrumins: oh. ok. [03:25] Liam_: i need a plain old stream with msg len prefixing [03:25] SubStack: and some other transforms [03:25] pkrumins: ok, i didnt remember that [03:25] SubStack: pyrotechnick1: I have some performance benchmarks someplace [03:25] pyrotechnick1: SubStack: do you have any numbers substack [03:25] pyrotechnick1: thanks mate [03:25] pyrotechnick1: i mean [03:25] pyrotechnick1: dont do it if you dont i can [03:26] pyrotechnick1: i just thought id check with you first [03:26] pyrotechnick1: we'll definitely use it between server client for some things [03:26] pyrotechnick1: but im wondering about server server [03:26] SubStack: oh this one only checks websocket rates [03:26] pyrotechnick1: because that stuff really needs to be 60FPS or so or it will fail [03:26] pyrotechnick1: between nodes [03:26] pyrotechnick1: or between server client? [03:26] pyrotechnick1: over the net or over local? [03:26] broofa has joined the channel [03:27] SubStack: well I think in either case your limiting factor will be the network [03:27] SubStack: but it might help that everything is async [03:27] softdrink: this no workie for me.. keeps 404-ing: http://pastebin.com/j8uEM05b [03:28] Liam_: so anyway yes, plain streams, but msgs are framed as in the latest websocket protocol draft [03:28] Liam_: and i was a lilttle surprised not to find that already written [03:29] SubStack: Liam_: I think somebody had a framing package on npm [03:30] ryah: Liam_: https://gist.github.com/760755 [03:30] c4milo: Liam_: my friend! [03:30] c4milo: hehehe [03:31] SubStack: Liam_: also this https://github.com/rbranson/twerk [03:32] Liam_: heya camilo [03:33] Twyndyllyngs has joined the channel [03:34] Liam_: SubStack: twerk only supports utf8 encoding acc to readme [03:34] omygawshkenas has joined the channel [03:34] SubStack: ah [03:35] MattDiPasquale has joined the channel [03:36] Liam_: ryah: thanks for the link. i'm not so much concerned with the data formatting as the basic framing and use of net.Stream [03:38] Liam_: i.e. putting framed msgs onto a stream and then reassembly on other end [03:39] markstory has joined the channel [03:40] Liam_: and it seems like the new websocket framing is a decent approach [03:40] SubStack: AAA_awright: success! [03:40] SubStack: it's holding at fps [03:40] SubStack: *at 50 fps [03:40] SubStack: scaling the number of clients now [03:40] Liam_: SubStack: dnode is? [03:40] SubStack: oh whoops, I mean pyrotechnick1 [03:40] AAA_awright: hah [03:41] SubStack: yep [03:41] AAA_awright: SubStack: Can I get a link anyways? [03:41] SubStack: yeah in a sec [03:41] SubStack: going to see how well it scales [03:41] baoist has joined the channel [03:41] AAA_awright: Related to http://substack.net/posts/85e1bd/DNode-Asynchronous-Remote-Method-Invocation-for-Node-js-and-the-Browser ? [03:42] smtlaissezfaire has joined the channel [03:42] SubStack: well, in that it uses dnode [03:42] softdrink: grrrrrr this just keeps 404ing :( :( [03:42] SubStack: this is just a performance test for pyrotechnick1 [03:42] cronopio: another nodejs day finish, :-) Today work great with faye, go sleep. Grettings to all!! [03:42] SubStack: but then I got pyrotechnick1 confused for you AAA_awright ! [03:42] SubStack: not sure why that happened [03:43] JusticeFries has joined the channel [03:43] ashleydev has joined the channel [03:44] ashleydev has joined the channel [03:47] SubStack: pyrotechnick1: ok I am running 10 clients on the same server and they're all going at 50 fps still [03:47] SubStack: this is just locally however [03:48] pyrotechnick1: SubStack: how much data [03:48] SubStack: very small amount [03:48] smtlaissezfaire has joined the channel [03:49] SubStack: pyrotechnick1: here you can run the tests yourself https://github.com/substack/dnode/tree/master/examples/perf [03:50] Liam_: SubStack: you can compute the max number of clients for a given host with a test of json.parse performance, i imagine [03:50] SubStack: Liam_: well dnode does some other transforms and bookkeeping [03:51] Liam_: probably a modest %age of the parse expense [03:51] Liam_: or stringify if the 50fps are outbound [03:51] alek_br has joined the channel [03:52] softdrink: fuuuu [03:54] stepheneb has joined the channel [03:54] pyrotechnick1: tyvm substack [03:54] pyrotechnick1: SubStack++ [03:54] v8bot: pyrotechnick1 has given a beer to SubStack. SubStack now has 3 beers. [03:55] bingomanatee_: Question - when I upgraded to node 0.3.3, the nature of body variables changed. [03:55] piscm has joined the channel [03:55] bingomanatee_: When I name a form field "foo[bar]" it used to create nested objects in the request object. Now it returns them as passed (strings with brackets). [03:56] bingomanatee_: Was this a design decision or is this just a wierd side effect of something? [03:58] tjholowaychuk has joined the channel [03:59] joshholt_ has joined the channel [04:02] meso_ has joined the channel [04:03] bart2 has joined the channel [04:06] NemesisD has joined the channel [04:07] NemesisD: anyone have any good ideas for playing with callback driven stuff in the REPL? i'm using a db library that only makes results available in the callback [04:07] Liam_: bingomanatee_: you mean the formatting of uploaded form data changed? [04:08] Liam_: if so i think that would be due to a module like formidable [04:08] dthompson has joined the channel [04:09] Liam_: NemesisD: > func(input, function(data) { console.log(sys.inspect(data)) }) ? [04:10] bingomanatee_: yes. [04:10] cnus8n has joined the channel [04:11] NemesisD: Liam_: i want to manipulate the data in the repl, printing and inspecting is not very productive [04:12] Liam_: bingomanatee_: i don't think node core massages body data... i could be wrong... [04:13] Liam_: NemesisD: var manipulatethis; func(input, function(data) { manipulatethis = data }) [04:13] bingomanatee_: well - when I had an "" in a form and posted, [04:14] bingomanatee_: before I got req.body.foo.bar: "submitted Value"; [04:14] bingomanatee_: now I get req.body['foo[bar]'] = "submitted value". [04:14] pyrotechnick1: it should be like that bingo [04:15] bingomanatee_: I actually like v. 1 but I just want to know if this is an upgrade side effect or a fluke. [04:16] derferman has joined the channel [04:16] Liam_: req.body? it's not documented in http.ServerRequest? [04:17] TheEmpath2 has joined the channel [04:18] noahcampbell has joined the channel [04:18] TheEmpath2: nodites [04:18] TheEmpath2: hail [04:19] mikew3c_ has joined the channel [04:21] saschagehlich___ has joined the channel [04:24] NemesisD: Liam_: for some reason that doesn't work, i verify the callback gets fired with a print statement but the variable stays undefined [04:25] Liam_: oh huh. try setting it to null? [04:25] jamescarr has joined the channel [04:26] jamescarr: heh... made a slick app with extjs on the frontend and node.js + express on the backend [04:26] Liam_: or try manipulte = {} ... { manipulate.data = data } [04:27] NemesisD: Liam_: ahh there we go [04:27] bingomanatee_ has joined the channel [04:27] Liam_: which one? [04:28] NemesisD: Liam_: the latter [04:28] Liam_: that sounds like a repl bug [04:28] Liam_: that the former doesn't work... [04:30] tjholowaychuk: bingomanatee_: req.body is an express thing [04:30] tjholowaychuk: well bodyDecoder [04:30] tjholowaychuk: but 0.3.x has a different querystring parser [04:32] jamescarr: tjholowaychuk, give it a few months and it will just be like RoR... [04:32] jamescarr: people will think express IS node.js [04:32] andrewfff has joined the channel [04:32] tjholowaychuk: pfft [04:32] tjholowaychuk: lol [04:32] tjholowaychuk: I wont feel right releasing 2.0 until connect gets a major overhaul [04:33] Liam_: NemesisD: when i try var x = null ... { x = data } it works for me [04:34] NemesisD: maybe its this darn backbone [04:35] jamescarr: tjholowaychuk, you work on Extjs for sencha? [04:35] jamescarr: or just pure node.js stuff? [04:35] tjholowaychuk: I dont work there anymore I left [04:36] tjholowaychuk: but nope I just worked on node related stuff [04:36] Liam_: NemesisD: i'm using 0.2.4 [04:36] Liam_: so if that doesn't work in 0.3 could be a bug... [04:37] tjholowaychuk: jamescarr: cool company, but I wanted to make a bigger impact on node with opensource stuff [04:38] tjholowaychuk: and be a larger part, of a smaller company [04:38] tjholowaychuk: plus the guys at learnboost are really rad [04:38] tjholowaychuk: to work with [04:38] jamescarr: ah [04:39] jamescarr: that's cool... lots of good stuff has come from LearnBoost [04:39] MikhX has joined the channel [04:40] tjholowaychuk: more good stuff coming from guillermo soon [04:40] tjholowaychuk: and ive got another project on the way [04:40] tjholowaychuk: I kinda want to talk about it and release it at nodeconf [04:40] bingomanatee_: okay - so the 0.3.x querystring parser is different - by design - and I can build towards it going forward? [04:40] tjholowaychuk: but that is to far away [04:41] bingomanatee_: tjholowaychuk ^ ^ [04:41] tjholowaychuk: bingomanatee_: I still want the same behavior for express where user[name] == { user: { name: }} [04:41] tjholowaychuk: but like ive mentioned I dont work on 0.3x [04:41] bingomanatee_: okay [04:42] overthemike has joined the channel [04:42] overthemike has left the channel [04:43] jamescarr: I really need to create some production apps in node ;) [04:43] tjholowaychuk: haha me too [04:43] jamescarr: I mean, visible stuff [04:43] jamescarr: I am giving 3 more presentations at conferences this year on it [04:43] tjholowaychuk: I have a few ideas but not tons of time [04:43] tjholowaychuk: nice [04:43] tjholowaychuk: wish I was good at speaking [04:44] jamescarr: and it's embarrassing to say I don't have my own prod apps out there :S [04:44] tjholowaychuk: haha :D [04:44] tjholowaychuk: I just feel like im losing touch a bit with building apps since its been quite a while [04:44] isaacs has joined the channel [04:45] SubStack: heh, releasing [04:45] SubStack: I throw up the code on github first before it works really [04:45] SubStack: and fix it as I go along [04:48] softdrink: ok i'm totally digging activejs [04:49] MattDiPasquale has joined the channel [04:51] tjholowaychuk: jamescarr: is it lame to talk about a specific module at a conf? [04:51] tjholowaychuk: ive only been to one conference :) [04:51] tjholowaychuk: good old canada [04:52] jamescarr: depends. I spent 90 minutes on express ;) [04:52] jamescarr: it was a half day workshop [04:52] SubStack: tjholowaychuk: the talk I submitted is all about dnode [04:52] shaver: tjholowaychuk: where in Canada are you? [04:52] tjholowaychuk: SubStack: ah ok cool :) [04:52] tjholowaychuk: shaver: Victoria [04:52] shaver: ah, nice [04:52] tjholowaychuk: SubStack: id like to see that, hopefully I will be out there [04:53] SubStack: sweet! [04:53] shaver: when is nodeconf? [04:53] tjholowaychuk: right after (before?) jsconf I think [04:53] tjholowaychuk: not sure if they are in a similar area [04:53] softdrink: may 5 [04:53] tjholowaychuk: may something [04:54] shaver: in oakland? [04:54] SubStack: portland [04:54] tjholowaychuk: damn, I was hoping they were close [04:54] pkrumins: wow, jsconf and nodeconf [04:54] pkrumins: right one after another [04:54] SubStack: yep! [04:54] pkrumins: so cool. [04:54] pkrumins: also [04:55] pkrumins: so pesky i wont be here [04:55] SubStack: also yep! [04:55] tjholowaychuk: my birthday is in may, so I better be there haha [04:55] SubStack: pkrumins: but maybe you can go to jsconf.eu [04:55] pkrumins: that's in september [04:55] pkrumins: < mikeal> JSConf.eu is in the fall [04:56] pkrumins: if we have money i'll go! [04:56] SubStack: ah yeah [04:56] yozgrahame has joined the channel [04:56] stepheneb has joined the channel [04:57] sechrist: tjholowaychuk: will tobi handle csrf token'd forms? [04:57] sechrist: and/or zombie, whichever [04:57] tjholowaychuk: neither AFAIK [04:58] sechrist: what [04:58] softdrink: i wish there was more info on nodeconf.com *ahem* [04:58] sechrist: so upon form submit, the fake browser isn't iterating through the form inputs, grabbing their values, and using them? [04:58] sechrist: wtfmate [04:58] sechrist: I must fork if this is the case [04:59] tjholowaychuk: i forget what i did [04:59] tjholowaychuk: let me take a look [05:00] tjholowaychuk: been to busy with this other project [05:01] tjholowaychuk: nvm should be fine i think [05:02] sechrist: yeah, hidden form elements should be retained by the emulated dom [05:02] sechrist: I'm assuming anyway [05:08] jakehow has joined the channel [05:10] norviller has joined the channel [05:11] NemesisD: gah node is being so weird [05:11] zorzar_ has joined the channel [05:12] NemesisD: if i require a file from one file thusly require('./lib/checkpt') and sys.inspect it, it looks normal, from a file in lib if i do require('./checkpt'), it imports an empty object... [05:12] NemesisD: is there some kind of caching cleverness going on here or something [05:13] sechrist: tjholowaychuk: is tobi only compatible with nodejs based servers, or can it handle full uris? [05:14] tjholowaychuk: sechrist: right now just node servers, but you can do new Browser(html) as well [05:14] tjholowaychuk: I didnt really see a use-case otherwise [05:14] sechrist: well I have one, and it's for a nagios script [05:14] tjholowaychuk: I guess to test sites with other languages n shit [05:14] sechrist: a nagios script to hit our production, staging, and dev clusters for webapp sanity [05:15] sechrist: lighter weight than selenium is required for that [05:15] sechrist: (zombie failed to install via npm, so I tried tobi first :) [05:15] tjholowaychuk: ah [05:15] sudoer has joined the channel [05:18] Liam_ has joined the channel [05:19] MattDiPasquale has joined the channel [05:20] NemesisD: i swear whenever i get any time to work on this project something silly like this comesu p [05:20] sechrist: I can't ever seem to get people's unit tests to work properly with node projects [05:20] sechrist: way too many people doing different testing suites [05:21] herbySk has joined the channel [05:22] tjholowaychuk: sechrist: tobi's are not working? [05:22] sechrist: nah,. zombie's [05:22] tjholowaychuk: oh [05:22] sechrist: actually I have no idea how to do unit tests on stuff installed with npm [05:22] sechrist: do I cd into the npm metadata folder? O.o [05:22] tjholowaychuk: dunno, they might .npmignore the tests too [05:22] tjholowaychuk: I do [05:23] sechrist: hm [05:23] ewdafa has joined the channel [05:23] sechrist: this is the first I've heard of "vows" [05:25] sechrist: ugh I think I have to move back to 0.2 to use zombie [05:26] tjholowaychuk: and coffeescript [05:26] sechrist: coffee is broken on 3? [05:26] tjholowaychuk: dunno [05:26] tjholowaychuk: i dont think so [05:27] NemesisD: can someone take a look at this simple case, could it possibly be a bug in node? http://pastie.org/1436357 [05:28] creationix has joined the channel [05:31] aurynn has joined the channel [05:32] langworthy has joined the channel [05:33] sechrist: and yes [05:33] sechrist: I went back to 0.2, cleared my npm out [05:33] sechrist: and zombie works [05:33] Liam_: NemesisD: well your require paths are diff [05:34] meso_ has joined the channel [05:34] NemesisD: Liam_: but relative to the file im in they point to the same path [05:34] NemesisD: riak_sync is in lib, so if i required './lib/checkpt' from there wouldn't it look in lib/lib/checkpt ? [05:37] Liam_: i should think, ya [05:37] sth has joined the channel [05:39] hdon has joined the channel [05:44] jpld has joined the channel [05:44] jpld has joined the channel [05:44] derferman has joined the channel [05:52] Aria has joined the channel [05:54] echosystm has left the channel [05:57] FMJag has joined the channel [05:58] comster has left the channel [06:00] masahiroh has joined the channel [06:01] malkomalko has joined the channel [06:03] hobodave has joined the channel [06:06] forzan has joined the channel [06:11] cafesofie has joined the channel [06:12] Ond has joined the channel [06:15] cnus8n has joined the channel [06:18] perezd has joined the channel [06:19] perezd: anyone around to answer an ultimate noob question [06:19] echosystm has joined the channel [06:19] echosystm: hi guys [06:19] perezd: heya [06:20] echosystm: in an application im working on, i need the ability to ssh into some servers and read out data [06:20] echosystm: does anyone know how i might achieve this in node.js? [06:21] echosystm: i imagine i have the choice of making some openssh bindings or somehow using system calls? [06:21] perezd: echosystm: not sure myself :( [06:25] Tim_Smart has joined the channel [06:26] echosystm: hmm, spawning child processes looks like it might be ok [06:26] perezd: yeah thats probably wise [06:28] amerine has joined the channel [06:28] echosystm: home time! [06:28] echosystm: ciao [06:31] fangel has joined the channel [06:31] m00kie has joined the channel [06:32] m00kie has left the channel [06:35] m00kie has joined the channel [06:36] shaver: no pure-JS implementation of protobuf, eh? [06:39] tjholowaychuk: shaver: that would be sweet [06:39] tjholowaychuk: there isnt one? [06:39] shaver: don't see one [06:39] tjholowaychuk: weird [06:39] tjholowaychuk: I wouldnt mine that [06:40] shaver: well, there's http://code.google.com/p/protobuf-js/ [06:40] jchris has joined the channel [06:41] smtlaissezfaire has joined the channel [06:42] sechrist has joined the channel [06:44] void_ has joined the channel [06:44] cwo has joined the channel [06:45] skm has joined the channel [06:45] m00kie has left the channel [06:51] mikeal has joined the channel [06:51] losing has joined the channel [06:51] mikedeboer has joined the channel [06:52] hassox has joined the channel [06:52] derren13 has joined the channel [06:53] overthemike has joined the channel [06:53] overthemike has left the channel [06:54] matjas has joined the channel [06:55] hdon has joined the channel [06:57] sinisa has joined the channel [06:58] sinisa: maybe somebody knows is it possible to conigure DNS entries with windows binaries... [06:59] Aria: As in configure the MS DNS server, or change nameservers? [07:00] pkrumins: they are in registry [07:00] sinisa: i got "could not contact DNS servers" [07:00] pkrumins: and there is a reg.exe program that comes with windows that you can use to mess with registry values from the command line [07:01] sinisa: i should change dns in registry so node will work? [07:02] pkrumins: umm [07:02] sinisa: there is no config file that node use on startup? [07:02] kriskowal: hey all, i'm making openpty bindings. i've got file descriptors for the master and slave. any ideas on how to promote these file descriptors to stream objects? [07:03] sinisa: also.. what should happen when i type node --help .. because happens nothing :) [07:03] sinisa: i got "..." [07:04] sinisa: i took bin's for win from here "http://node-js.prcn.co.cc" [07:04] amerine has joined the channel [07:04] sinisa: any other place? [07:05] sinisa: help? :) [07:06] sechrist: these nodejs headless browsers [07:06] sechrist: are magic [07:06] sechrist: magic [07:11] dida has joined the channel [07:19] dustinwhittle has joined the channel [07:21] opengeard has joined the channel [07:22] Ikaros has joined the channel [07:22] Ikaros: Hey, is this a good place to ask questions about nodejs? [07:23] pkrumins: absolutely [07:23] Aria: It's THE place for that. [07:23] Ikaros: hah, kk, I'm having some trouble with EventEmitters [07:23] Ikaros: var sys = require('sys'), [07:23] Ikaros: events = require('events'); [07:23] Ikaros: var Emission = module.exports = function () { [07:23] Ikaros: events.EventEmitter.call(this); [07:24] Ikaros: [07:24] Ikaros: this.cycles = 0; [07:24] Ikaros: }; [07:24] Ikaros: sys.inherits(Emission, events.EventEmitter); [07:24] Aria: Whoa, gist that next time! [07:24] Ikaros: Emission.prototype.cycle = function () { [07:24] Ikaros: this.emit('recycle', ++this.cycles); [07:24] Ikaros: [07:24] Ikaros: var self = this; [07:24] Ikaros: [07:24] Ikaros: setInterval(function() { [07:24] Ikaros: self.cycle(); [07:24] Ikaros: }, 0); [07:24] Ikaros: }; [07:24] Ikaros: hmm, thats kinda messy [07:24] Aria: You're being rate-limited by the server. It's gonna take a long time for that to finish appearing. [07:24] Ikaros: yea, sry, figured the formatting would be better [07:24] pkrumins: gist or pastebin [07:25] jpld has joined the channel [07:29] Ikaros: Ok, two files (truncated to include the important bits), emission.js (https://gist.github.com/769223) is imported by server.js (https://gist.github.com/769224) [07:30] Ikaros: And it just emits events repeatedly... the problem is that it never emits the first event (cycles always prints at 2, never starting at 1 as expected) [07:31] Aria: Well, you're calling yourself with no termination condition there. [07:31] Aria: Is that what you want? [07:32] Aria: And you're setting up your event handler after the first cycle has fired. [07:32] dthompson has joined the channel [07:34] dguttman has joined the channel [07:34] perezd: any idea why a console.log would fire twice inside of an http.createServer callback? [07:34] perezd: I am only hitting the server once... [07:34] jimt_ has joined the channel [07:35] whyme: perezd: via browser? [07:35] perezd: what is causing this...it seems like the callback gets triggered twice [07:35] perezd: chrome [07:36] whyme: perezd: ye, browser fetches /favicon.ico by default [07:36] perezd: oh shiz [07:36] perezd: good point [07:36] perezd: hah [07:36] perezd: I am too sleepy to code [07:36] perezd: evidently [07:36] Ikaros: @Aria Yea, no termination was laziness for testing, Ctrl+C works fine for now :) Added the listener after the first call still starts at 2. [07:37] Aria: Ikaros: What about if the cycle is after the listener? [07:39] Ikaros: Hmm, yea, just tried that as you said and it didn't work, but now it appears to be [07:40] Ikaros: Alright, well, it appears to be working consistently now. Changing the order makes sense. Thanks :) [07:41] micheil has joined the channel [07:42] Ikaros: Would there be any way I could move the first cycle() call inside of the Emission construct and still have it fire an event? [07:42] niklasfi has joined the channel [07:44] niklasfi: so i am watching a file with fs.watchFile()... but how do i find out if a file has been deleted so i can call fs.unwatch()? Does that become evident in the curr argument? [07:48] admc has joined the channel [07:49] Ikaros: I'm still learning node so I'm not sure this is the right way but you could try sys.puts(sys.inspect(curr)) and see if there is something useful there or path.exists inside the callback [07:54] niklasfi: ikaros: the only thing that 'changes' is that whenever i update a file the timestamps change. when it is moved, they don't :) [07:55] dguttman has joined the channel [07:55] Ikaros: I'm not sure about moving a file but if nlink === 0, I think that means its been deleted ("nlink: The number of hard links to this file have changed.") [07:56] niklasfi: ikaros... you are right [07:57] niklasfi: ikaros: nlink changes to 0 as well when the file is moved [07:57] pdelgallego has joined the channel [07:57] pdelgallego_ has joined the channel [07:58] Ikaros: yea, just noticed that [07:59] sechrist: SubStack: ping [08:00] niklasfi: is there a watchFolder as well? Or do i have to use a timer and do readdir periodically? [08:00] pkrumins: AGECHANGE! [08:00] sechrist: pkrumins: yo [08:00] sechrist: for browserling [08:00] pkrumins: yo [08:01] sechrist: do you think you'll ever be able to get the input latency much lower? [08:01] pkrumins: sechrist: where are you located? [08:01] Ikaros: @niklasfi I don't see a watchFolder/Path. timer+readdir or path.exists would seem to be the only way [08:01] sechrist: pkrumins: santa clara [08:02] pkrumins: i havent looked at how fast it is today [08:02] sechrist: it's around a second [08:02] pkrumins: but we reduced latency significantly last week [08:02] sechrist: between a hover or click [08:02] sechrist: sometimes 2-2.5 seconds [08:03] pkrumins: that's very high latency [08:03] pkrumins: we have a trick we'll try soon [08:03] pkrumins: that should get it down some more [08:03] sechrist: that's not "real" latency [08:03] sechrist: that's my interpretation of the timing [08:03] sechrist: my ping to that rackspace ip is 56.9 ms [08:04] pkrumins: actually i have a task in wedoist to measure what takes the most time [08:04] pkrumins: havent goten to it yet [08:04] pkrumins: sechrist: so as it's now, we have windows, then we have the api server (linux). so when you use it, you are on api server, it gets display from windows, encodes it to pngs [08:04] mikeal has joined the channel [08:05] pkrumins: sechrist: so the trick i want to try it, is make windows serve pngs or jepgs itself [08:05] sechrist: ah I see [08:05] pkrumins: that should make it faster [08:05] sechrist: if you're base64 encoding the png in node [08:05] sechrist: I found that to be damn slow for framebuffers [08:06] sechrist: (I've done some node stuff for transmitting frames over websockets like this) [08:06] sechrist: well not so much slow as it was cpu intensive I guess [08:06] sechrist: just the encoding of 30fps 720p from rgb to png took up one of my i7 cores [08:07] sechrist: though that may be attributed to string manipulation or whatever else [08:07] mraleph has joined the channel [08:08] pkrumins: we are base64 encoding the png in node, yes [08:08] pkrumins: but not in js, i wrote a C module for that ages ago. [08:08] pkrumins: well node,js eventually got its own base64 encoder [08:08] pkrumins: but months later. [08:08] sechrist: I think it's js implemented though [08:09] herbySk has joined the channel [08:09] sechrist: nope [08:09] sechrist: it's c [08:10] SamuraiJack has joined the channel [08:11] pkrumins: it is c. [08:12] pkrumins: sechrist: we use smart algorithms to minimize what gts encoded [08:12] pkrumins: i havent blogged about it, but if there are, let's say, 7 updates throughout the screen [08:12] dtrasbo has joined the channel [08:12] pkrumins: i find the bounding rect, set that image to transparent, and then put those 7 regions on top of it [08:12] pkrumins: send it to browser, and it overlays it on top of all other updates so far [08:13] pkrumins: this way it's awesomely efficient [08:13] sechrist: that's kind of near [08:13] sechrist: neat* [08:13] Blink7 has joined the channel [08:13] sechrist: probably the first algorithm for efficient framebuffers to canvas without a traditional video codec [08:13] sechrist: heh [08:14] yozgrahame has joined the channel [08:15] altamic has joined the channel [08:17] pkrumins: its open source btw [08:17] pkrumins: in node-png, the DynamicPngStack [08:17] pkrumins: you create a new dynamicpngstack, push updates to it, then encode the whole thing [08:17] fangel has joined the channel [08:18] pkrumins: it produces a png that is the size of bounding rect of all updates, with everything being transparent, except where the updates where pushed to. [08:18] pkrumins: i should blog about it [08:18] pkrumins: it's sweet. [08:18] pkrumins: 4 [08:24] sriley has joined the channel [08:28] Ikaros has left the channel [08:30] mikedeboer has joined the channel [08:30] Druid_ has joined the channel [08:31] AAA_awright_ has joined the channel [08:32] sveimac has joined the channel [08:33] derren13 has joined the channel [08:37] Gruni has joined the channel [08:42] felixge has joined the channel [08:42] felixge has joined the channel [08:42] masahiroh has joined the channel [08:42] alloc has joined the channel [08:42] elijah-mbp has joined the channel [08:44] MikhX has joined the channel [08:51] muhqu has joined the channel [08:54] ErikCorry has joined the channel [08:57] rphillips has joined the channel [08:58] ZiXon has joined the channel [08:58] ZiXon: im trying to build node but i get error: could not configure a cxx compiler! [08:58] ZiXon: i do have gcc [08:58] ZiXon: what is the problem? [08:59] ErikCorry: You have gcc but not g++ [08:59] ZiXon: what is the diff? [08:59] ErikCorry: One is a C compiler and also the name of the GNU Compiler Collection [09:00] ErikCorry: The other is a C++ compiler which happens to be part of the GNU Compiler Collection [09:00] ErikCorry: The collection is sometimes called GCC [09:00] ErikCorry: And the C compiler is also sometimes called gcc [09:00] ZiXon: didnt realize there is a diff [09:00] ZiXon: so gcc cant be used than to compile? [09:00] ErikCorry: No. [09:01] ZiXon: :/ [09:01] ErikCorry: But GCC can [09:01] ZiXon: lol [09:01] ErikCorry: You can probably get g++ from the same place you got gcc [09:01] al-maisan has left the channel [09:01] ErikCorry: They usually have all of GCC... [09:01] ZiXon: weird never had a box with just gcc [09:01] ZiXon: the thing is im not admin on that box [09:02] ErikCorry: Time to buy chocolate for the admin. [09:02] ErikCorry: Or install a precompiled node [09:03] ZiXon: i was looking for one [09:03] ZiXon: can only find windows binaries :/ [09:03] ZiXon: was looking at the buildbot but there you cant download artifacts? [09:03] derferman has joined the channel [09:04] sveimac_ has joined the channel [09:04] ZiXon: do you know where i can find bins? [09:05] Aron has joined the channel [09:08] virtuo has joined the channel [09:08] ErikCorry: http://www.google.com/images?q=vipp [09:09] ZiXon: :| [09:10] felixge: ErikCorry: looks like I'll have some time to work on that stand-alone node-mysql benchmark next week [09:12] ErikCorry: felixge: Great! [09:13] ErikCorry: Mr. Aleph and I am working on the GC. Early days yet though. So far we have made it slower and less stable :-) [09:13] kriskowal: what's the status of the "tty" module in 0.3.3? [09:15] statik has joined the channel [09:15] statik has joined the channel [09:17] felixge: ErikCorry: are you trying to reduce the time the GC will stop the world on a busy script? [09:17] ErikCorry: Yeah, that would be nice, wouldn't it? [09:18] felixge: ErikCorry: very much :) [09:18] felixge: ErikCorry: probably not an easy task so : ) [09:18] ErikCorry: Also a bigger max heap would be convenient. [09:18] ErikCorry: Let's see how it goesn. [09:18] ErikCorry: goes. [09:19] felixge: ErikCorry: one thing I really want to research is the possibility of having light-weight processes in node (something that can spawn and destroy in < 1 ms) [09:20] felixge: ErikCorry: But most stuff I looked at so far is too slow. I guess the best way to go will be namespace "file names" + using ryan's eventsource branch [09:20] felixge: *namespaced [09:20] ErikCorry: Startup time for V8 is about 3ms at the moment. [09:20] ErikCorry: Which is actually a regression. Used to be 2ms :-( [09:21] felixge: well, it's still impressive [09:21] felixge: what I'm aiming for is a way to respond to each request of a http server in isolation without decreasing req/sek by more than 10% [09:22] felixge: I think it will be very hard [09:22] ErikCorry: Crankshaft regressed it. Must look into that. [09:23] ErikCorry: felixge: How isolated does it have to be. In the browser we use contexts (when we don't use separate processes). [09:23] felixge: ErikCorry: If an exception is not caught, I want to be able to tell which "process" it came from [09:24] felixge: ErikCorry: I don't care too much about strict sandboxing [09:24] felixge: ErikCorry: my main problem right now is that node drops the stack whenever it goes into the event loop [09:24] ErikCorry: Doesn't sound like it need to be very isolated. [09:24] felixge: so exceptions inside a node callback are usually meaningless [09:25] felixge: no it doesn't, it just needs to be "traceable" :) [09:25] ErikCorry: You need to put a 'process' tracking ID on each callback. [09:25] ErikCorry: When you invoke the callback you set a global to the id. [09:25] ErikCorry: When a new callback is scheduled you attach the current global id to the callback request. [09:26] aklt has joined the channel [09:26] ErikCorry: Ryan has an idea he wants to record the stack trace when the callback is set up. [09:26] ErikCorry: Which is sort of orthogonal to what you are proposing. [09:26] felixge: yeah [09:26] ErikCorry: Both could give interesting information. [09:27] felixge: well, what I'm trying to do might have less of a performance impact [09:27] ErikCorry: That is probably true. [09:27] felixge: anyway, that's a good idea. But it will require tons of hacking in the node core, or a whole (annoying) abstraction layer in user land [09:28] felixge: not sure how ryan would feel about a patch for it, but I should bring it up [09:28] ErikCorry: Sounds like something for the core to me. [09:28] felixge: because right now you kind of have to kill your entire server after an uncaught exception, taking all current connections down with you [09:28] ErikCorry: That sucks. [09:28] jimt has joined the channel [09:29] felixge: yeah ... especially when you are running an uploading service where uploads can take 8 hours ++ :) [09:29] ErikCorry: :-( [09:29] femtoo has joined the channel [09:29] felixge: ErikCorry: well, in our case we could actually put each upload into it's own process [09:30] felixge: that's literally no overhead for us compared to the encoding and other things we do with the uploads [09:30] felixge: but I'm interested in a better solution for future generations :) [09:30] felixge: or scenarios where that overhead would not be acceptable [09:30] ErikCorry: I think contexts are the thing. [09:31] ErikCorry: The word context is unfortunately used for 4 or 5 different things in the V8 code base. [09:31] ErikCorry: The meaning depends on the context... [09:31] felixge: : ) [09:31] ErikCorry: Contexts correspond to iframes or tabs in the browser. [09:32] ErikCorry: (If Chrome has lots of memory it puts each tab in a different process but it doesn't have to do that. On a small machine the tabs share processes) [09:32] ErikCorry: (Or if you open one trillion tabs) [09:33] chapel: I was wondering why it did that [09:33] chapel: so thats why sometimes if one tab dies, it will take a few more [09:33] chapel: cause they are joined [09:33] felixge: ErikCorry: how long does it take to setup a context? [09:33] ErikCorry: The other reason why they can be joined is if you opened one tab from another tab using a JS script. [09:34] ErikCorry: Then they have to be joined because they can see each others' JS objects. [09:34] ErikCorry: Eg if you open Google Calendar from Gmail that always happens. [09:35] sveimac_ has joined the channel [09:35] ErikCorry: felixge: 185us [09:35] ErikCorry: On my hardware [09:35] ErikCorry: You get a new copy of all the intrinsics like Array etc. [09:36] ErikCorry: The repl loop used to use a new context for each line in node.js [09:36] felixge: ErikCorry: that's pretty good [09:36] ErikCorry: Not sure if it still doesn. [09:37] felixge: I'll have to play with contexts I guess : ) [09:37] TomY_ has joined the channel [09:38] ErikCorry: But felixge you have to be able to restart uploads anyway, right? [09:38] pdcawley` has joined the channel [09:38] ErikCorry: Most household DSL lines aren't stable enough for an 8 hour upload. [09:39] felixge: ErikCorry: we can restart uploads, yes. But we can't resume yet [09:39] ErikCorry: Or rather, resume... [09:39] ErikCorry: Yeah, that's what I meant! [09:39] jimt has joined the channel [09:39] felixge: ErikCorry: But I'm looking into the HTML5 File API stuff to build something on top [09:40] ErikCorry: Probably the APIs in the browser are the issue here. [09:40] felixge: ErikCorry: yes, it's a pretty hostile landscape :) [09:40] felixge: ErikCorry: doing cross-domain uploads doesn't exactly help either :) [09:42] ErikCorry: shit... [09:46] und3f has joined the channel [09:46] bzinger has joined the channel [09:47] felixge: ErikCorry: we'll be fine. The more annoying the problem, the easier it is to get people to pay for it : ) [09:47] felixge: (the solution that is) [09:48] ErikCorry: Well having tried several online photo stores and totally failed to get them to work I would agree that the upload problem is annoying.l [09:50] felixge: ErikCorry: yeah, and it doesn't get any better with video either : ) [09:53] dida: How do you get this client string on socket.io node? [09:53] dida: 7 Jan 17:10:05 - Client 2115639573894441 disconnected [09:54] dida: i mean the integer 211... [09:55] xla has joined the channel [09:57] sriley: client.sessionId [10:05] sveimac_ has joined the channel [10:06] jetienne has joined the channel [10:08] svnlto has joined the channel [10:09] MattJ has joined the channel [10:12] mraleph has joined the channel [10:13] femtoo has joined the channel [10:14] meso_ has joined the channel [10:15] hdon has joined the channel [10:17] d0k has joined the channel [10:18] SamuraiJack has joined the channel [10:24] cnus8n has joined the channel [10:28] mikew3c has joined the channel [10:28] dtrasbo has joined the channel [10:33] echosystm has joined the channel [10:35] und3f: Hello. Is there easy way to serve static files with nodejs? [10:36] echosystm: yes [10:36] und3f: echosystm, can you point me? I didn't found? [10:36] echosystm: are you using a framework? [10:37] jkreeftmeijer_ has joined the channel [10:37] und3f: oh, there is a framework [10:37] und3f: echosystm, thanks :P [10:37] echosystm: uh [10:37] echosystm: ok [10:38] echosystm: just so we are on the right page... [10:38] echosystm: https://github.com/senchalabs/connect [10:38] echosystm: https://github.com/visionmedia/express [10:38] echosystm: look into those [10:39] und3f: also can you suggest me console javascript tidy script? [10:39] echosystm: a what? [10:39] echosystm: whats a javascript tidy script [10:40] und3f: some thing like perltidy - script which indents and reformats javascript scripts [10:40] echosystm: i dont think such a thing exists [10:40] squeek: Isn't "perltidy" a bit of an oxymoron? [10:40] und3f: thanks [10:40] echosystm: node.js programmers aren't like perl programmers - they dont write crap code to start with :P [10:40] squeek: echosystm: oh, really? [10:41] echosystm: true story [10:41] echosystm: its a scientific fact [10:41] chapel: und3f: https://github.com/mishoo/UglifyJS [10:41] squeek: The fact you're trying to quantify a subjective matter as objective means you've put your head somewhere irresponsible to everyone else. [10:41] und3f: chapel, thanks [10:51] zemanel has joined the channel [10:51] sveimac has joined the channel [10:52] mafintosh has joined the channel [10:53] mafintosh: Hi guys. I was wondering if anyone could tell me the proper way to listen for timeouts/errors on http ServerRequests ? [10:55] dida: is there a socket.io client API reference somewhere? [10:57] dida: what types of data are supported when sending through socket.io? [10:57] hassox has joined the channel [11:04] matjas has joined the channel [11:05] kriskowal: dida: anything serializable as a string. only text goes over the wire. [11:06] kriskowal: but i just made a thing that'll let you manipulate remote objects over socket.io with an async api, it's q-comm in npm [11:07] shaver: websockets should be binary-safe, no? [11:08] dida: kriskowal: I can see the data object when i throw it out to console.log [11:09] dida: but i get undefined when append it to a jquery object [11:09] dida: http://jsbin.com/uniju4 [11:10] dida: see socket.on('message' ... part [11:10] isaqual has joined the channel [11:13] echosystm: whats the standard way to write exceptions in node.js? [11:14] chapel: errors? [11:15] chapel: v8: throw new "blah" [11:15] v8bot: chapel: TypeError: string is not a function [11:15] chapel: v8: throw new Error [11:15] v8bot: chapel: Error: [11:16] echosystm: ah, cool [11:16] echosystm: thanks [11:16] ErikCorry: v8: throw "blah" [11:16] v8bot: ErikCorry: undefined: undefined [11:16] broofa has joined the channel [11:16] chapel: v8: throw new Error "blah blah blah" [11:16] v8bot: chapel: SyntaxError: Unexpected string [11:16] chapel: bah [11:16] ErikCorry: I think that means it worked [11:16] echosystm: v8: throw new Error("lols"); [11:16] v8bot: echosystm: Error: lols [11:16] chapel: v8: throw new Error('blah blah blah') [11:16] v8bot: chapel: Error: blah blah blah [11:18] ErikCorry: (function() { try { throw "foo"; } catch (e) { return e; } })() [11:18] ErikCorry: v8bot: (function() { try { throw "foo"; } catch (e) { return e; } })() [11:18] v8bot: ErikCorry: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [11:18] ErikCorry: v8: (function() { try { throw "foo"; } catch (e) { return e; } })() [11:18] v8bot: ErikCorry: "foo" [11:18] ErikCorry: finally... [11:19] chapel: heh [11:19] chapel: v8: throw new {name: 'D'} [11:19] v8bot: chapel: TypeError: object is not a function [11:19] chapel: hmm [11:19] chapel: v8: throw {name: 'D'} [11:19] v8bot: chapel: D: undefined [11:19] chapel: v8: throw {name: 'D', content: 'blah'} [11:19] v8bot: chapel: D: undefined [11:19] chapel: I forget what the 2nd one is supposed to be [11:20] chapel: v8: throw {name: 'D', message: 'blah'} [11:20] v8bot: chapel: D: blah [11:20] chapel: there we go [11:21] mr_daniel has joined the channel [11:21] chapel: v8: var er = {name: 'blah', message: ''}; throw er.message('this is an error'); [11:21] v8bot: chapel: TypeError: Property 'message' of object # is not a function [11:21] chapel: hmm [11:22] chapel: yeah yeah [11:22] chapel: v8: var er = {name: 'blah', message: ''}; throw er [11:22] v8bot: chapel: blah: [11:22] chapel: v8: var er = {name: 'blah', message: ''}; throw er = 'blah'; [11:22] v8bot: chapel: undefined: undefined [11:22] chapel: heh [11:23] echosystm: so... [11:23] echosystm: actually, nevermind [11:24] qnt4b has joined the channel [11:24] echosystm: no, actually, do mind! [11:24] echosystm: i need to send an integer of 1 along TCP right [11:25] echosystm: internally, thats a 64bit js number [11:25] echosystm: how do i make sure it is treated as a normal 32bit integer? [11:25] markwubben has joined the channel [11:25] echosystm: convert it to chars? [11:25] echosystm: :/ [11:26] sveimac has joined the channel [11:27] sepehr has joined the channel [11:27] SamuraiJack has joined the channel [11:31] siong1987 has joined the channel [11:49] fermion has joined the channel [11:50] zomgbie has joined the channel [11:50] crohr has joined the channel [11:56] sveimac has joined the channel [11:57] sepehr has joined the channel [11:58] jimt has joined the channel [12:03] hellp has joined the channel [12:05] jimt_ has joined the channel [12:06] pgte has joined the channel [12:13] pietern has joined the channel [12:14] ErikCorry: Convert it to JSON. [12:16] dsirijus has joined the channel [12:19] ErikCorry: I think really the answer depends on who is at the other end of your TCP connection and what they are expecting and what integers other than 1 you want to send. [12:21] eee_c1 has joined the channel [12:22] charlenopires has joined the channel [12:22] Jonasbn_ has joined the channel [12:24] faure has joined the channel [12:26] sveimac has joined the channel [12:30] kawaz_home has joined the channel [12:33] cnus8n has joined the channel [12:34] fly-away has joined the channel [12:40] femtooo has joined the channel [12:41] adambeynon has joined the channel [12:53] saschagehlich___: https://github.com/LearnBoost/Socket.IO-node/issues#issue/83 vote that one up please! [12:53] alloc has joined the channel [12:56] Kryckan has joined the channel [12:57] sveimac_ has joined the channel [13:01] masahiroh has joined the channel [13:02] ryan[WIN] has joined the channel [13:03] lukegalea has joined the channel [13:08] piscm has joined the channel [13:08] kuya has joined the channel [13:10] charlenopires has joined the channel [13:14] paulrobinson has joined the channel [13:17] alek_br has joined the channel [13:20] herbySk has joined the channel [13:22] ashleydev has joined the channel [13:22] okuryu has joined the channel [13:25] eee_c has joined the channel [13:25] SamuraiJack_ has joined the channel [13:27] zemanel has joined the channel [13:27] sveimac has joined the channel [13:28] Wizek has joined the channel [13:33] aheckmann has joined the channel [13:38] arpegius has joined the channel [13:43] hornairs has joined the channel [13:44] ianward has joined the channel [13:48] perlmonkey2 has joined the channel [13:49] proppy has joined the channel [13:51] tob1 has joined the channel [13:56] proppy: as anyone tried zombie.js with node 3 ? [13:56] guid has joined the channel [13:56] proppy: it seems broken because of base64 modules using the old Buffer class [13:57] fumanchu182 has joined the channel [13:57] Aron has joined the channel [13:57] proppy: ah there is a pull request fixing it [13:57] proppy: https://github.com/pkrumins/node-base64/pull/2 [13:57] sveimac has joined the channel [13:58] Sembiance: morning noders :) [13:59] pdelgallego_ has joined the channel [13:59] pagameba has joined the channel [14:00] Chadams has joined the channel [14:00] Ari-Ugwu has joined the channel [14:01] Chadams: what is a good mature db to use with node? [14:01] broofa has joined the channel [14:01] pengwynn has joined the channel [14:02] isaqual has joined the channel [14:03] davidsklar has joined the channel [14:05] sivy has joined the channel [14:06] boaz has joined the channel [14:08] sechrist: another jony ive [14:08] sechrist: http://www.youtube.com/watch?v=UiQ0AnlfBu4&feature=player_embedded#! [14:08] sechrist: people need to stop copying jony ive [14:11] darthdeus has joined the channel [14:13] teddy_ has joined the channel [14:16] pdelgallego has joined the channel [14:17] teddy__ has joined the channel [14:17] hunterloftis has joined the channel [14:21] ph^ has joined the channel [14:22] amacleod has joined the channel [14:22] void_ has joined the channel [14:25] matclayton has joined the channel [14:26] chrischris has joined the channel [14:27] pagameba: I just can't get socket.io to work :( it should be so simple ... arggggh [14:28] sveimac has joined the channel [14:30] lukegalea has joined the channel [14:31] piscisaureus has joined the channel [14:32] roaet: pagameba: I'm having issues too [14:37] hornairs has joined the channel [14:37] saschagehlich has joined the channel [14:37] jdub has joined the channel [14:37] fumanchu182: So I just got asked to speak at my old university about what I am doing in life after getting a CS degree. I plan to showcase some stuff I have done with node.js and the non blocking i/o model. [14:37] fumanchu182: It should be fun to watch students drop jaws about what is possible with non blocking i/o. [14:38] tg has joined the channel [14:38] chapel: :) [14:38] chapel: wish I could see their reactions [14:40] kolor has joined the channel [14:42] qnt4b has joined the channel [14:43] previsuals has joined the channel [14:43] jdub: socket.io fans: is there a way to kick out a client connection (no auth cookie for instance) without the socket.io client trying fallbacks? [14:45] Throlkim has joined the channel [14:49] fumanchu182: jdub, client.disconnect(); [14:53] svnlto has joined the channel [14:54] chrischris has joined the channel [14:55] Huvet has joined the channel [14:55] svnlto has joined the channel [14:56] springify has joined the channel [14:56] chrischr_ has joined the channel [14:56] Huvet: do web workers run in parallel by default? or just async from the main process? [14:56] matt_c has joined the channel [14:56] Yuffster has joined the channel [14:57] pgte: Huvet: a different process, I believe [14:58] hornairs has joined the channel [15:00] craigbarnes has joined the channel [15:00] jdub: fumanchu182: there's no disconnect method, just send and broadcast [15:00] roaet: i hate github. Why is everyone using it? [15:00] roaet: can't they just make webpages with examples like the old days? [15:00] Huvet: pgte: which run i parallel? [15:00] craigbarnes: roaet: because it's awesome? [15:00] springif` has joined the channel [15:01] pgte: Huvet: yes [15:01] roaet: craigbarnes: sometimes they don't put links to working examples or demos and it makes me sad :( [15:01] fumanchu182: jdub "client = null;" does the trick [15:01] craigbarnes: roaet, it's nothing to do with GitHub though [15:01] craigbarnes: GitHub will even host your website for free now [15:01] jdub: fumanchu182: that just times out the connection (and is less explicit than client.request.connection.end()) [15:02] jdub: fumanchu182: both of which result in the client trying a fallback [15:02] craigbarnes: it's typical developer syndrome - all code, no docs and no design [15:02] jdub: there doesn't appear to be a way to disconnect with an explicit failure [15:02] fumanchu182: I see i thought it disconnected it for good. Hmm pass a message back to the client through send such as "disconnect" and have the browser disconnect. [15:02] jdub: fumanchu182: that's the workaround i'm using atm [15:03] fumanchu182: give me a second to go digging in the socket.io module and see if i can find anything [15:04] jdub: i have done so [15:04] fumanchu182: well i think it is time we collaborated and wrote some code for socket.io :) [15:05] jdub: and will probably write a patch [15:06] figital has joined the channel [15:07] davglass has joined the channel [15:07] Sembiance: roaet: you hate github? are you trolling? :) [15:08] stagas has joined the channel [15:08] gf3 has joined the channel [15:08] gf3 has joined the channel [15:10] dida has joined the channel [15:10] possibilities has joined the channel [15:12] faure: anyone here use mongodb-rest ? [15:13] pdelgallego__ has joined the channel [15:14] noahcampbell has joined the channel [15:14] jherdman has joined the channel [15:14] lupomontero has joined the channel [15:16] saschagehlich has left the channel [15:17] proppy: anyone here use zombie.js ? [15:18] jakehow has joined the channel [15:18] hornairs has joined the channel [15:21] masahiroh has joined the channel [15:23] AAA_awright_ has joined the channel [15:25] Druide_ has joined the channel [15:26] Huvet has left the channel [15:27] isaqual has joined the channel [15:27] possibilities has joined the channel [15:28] sgronblo has joined the channel [15:29] sgronblo: How many http requests is reasonable to have running at the same time? I was thinking of making a web crawler with node.js. [15:30] masahiro_ has joined the channel [15:30] jashkenas has joined the channel [15:31] BillyBreen has joined the channel [15:31] hansek has joined the channel [15:33] davidwalsh has joined the channel [15:33] jakehow has joined the channel [15:34] cnus8n has joined the channel [15:38] creationix has joined the channel [15:39] brianm has joined the channel [15:39] brianm has joined the channel [15:40] mif86 has joined the channel [15:42] losing has joined the channel [15:45] prettyrobots has joined the channel [15:47] IRONkyle has joined the channel [15:47] danoyoung has joined the channel [15:49] mape: sgronblo: might want to look at using workers [15:50] mape: depending on what you do when scraping [15:50] ron_frown has joined the channel [15:50] ron_frown: question... I'd like to have a "regisster" connected clients, so I can send message to specific connections.. so I create a new array [15:51] ron_frown: and pushed connections into it on connect [15:51] ron_frown: doesnt seem like "sockets" are usable once they get stored in an array [15:51] ron_frown: anyone recommend a way that I can do something along those lines? [15:53] chapel: using socket.io would it be possible to sync a bunch of users to listen to a song at the same time? [15:53] mape: chapel: I built this janky radio station using despotify, node and icecast [15:53] kris__ has joined the channel [15:53] ron_frown: based on my extremely limited experience, that seems like that should be relatively easy to do [15:54] chapel: well I was thinking more something like just initiating the play action in sync [15:54] chapel: seems like it wouldn't be that hard [15:54] aconbere has joined the channel [15:54] chapel: like maybe an web based chat room with a synced music playlist [15:56] mape: chapel: play html5 audio? [15:56] d_low has joined the channel [15:56] chapel: well html5 or flash [15:57] chapel: conceptually it should be a no brainer [15:57] nonnikcam has joined the channel [15:57] JusticeFries has joined the channel [15:57] softdrink has joined the channel [15:58] montylounge has joined the channel [15:58] ron_frown: nevermnd... my stuff was working [15:58] ron_frown: just bad js handling of messages [16:00] jtrally has joined the channel [16:02] Kami has joined the channel [16:05] jchris has joined the channel [16:05] sonnym has joined the channel [16:06] roaet: Sembiance: not trollin. just don't like it (yet) [16:09] wilken has joined the channel [16:11] herbySk has joined the channel [16:11] qnt4b has joined the channel [16:11] mikedeboer has joined the channel [16:13] hobodave has joined the channel [16:14] softdrink: they see me trollin'. they hatin'. [16:17] EyePulp has joined the channel [16:19] Thorn has joined the channel [16:19] springif` has joined the channel [16:20] dmcquay has joined the channel [16:20] mikew3c_ has joined the channel [16:21] pgte: [Announcement] Alfred, an in-process key-value store for node.js http://pgte.github.com/alfred/ [16:22] pgte: it's still early work, but I encourage you to take a peak [16:22] arpegius has joined the channel [16:23] pgte: Blog post here: http://metaduck.com/post/2637829753/introducing-alfred-a-node-js-in-process-key-value [16:24] robotarmy has joined the channel [16:25] stepheneb has joined the channel [16:27] stephank has joined the channel [16:27] charlenopires has joined the channel [16:29] binarypie has joined the channel [16:29] daniellindsley has joined the channel [16:29] tjholowaychuk has joined the channel [16:30] gJ|Alex has joined the channel [16:33] amirpc has joined the channel [16:34] jakehow has joined the channel [16:34] herbySk has joined the channel [16:35] dmcquay has joined the channel [16:35] roaet: mm [16:35] roaet: got socket.io working [16:35] amirpc: hey guys there's this design problem I keep encountering, I feel like there is an obvious pattern I should be using but I am not seeing it - I've just recently picked up js/node so I'm sure it's obvious - can someone look at this and tell me what I'm missing? http://pastebin.com/c222wE0u [16:36] arpegius_ has joined the channel [16:37] Astro has joined the channel [16:38] pgte: amirpc: you should not throw on line 9 [16:38] pgte: you shoud call callback with the error [16:38] amirpc: it's unit testing code [16:38] rwaldron has joined the channel [16:38] chapel: well the issue is the call back [16:38] pgte: amirpc: and call callback after line 14 [16:38] amirpc: the callback continues setting up the unit test environment [16:38] sprout has joined the channel [16:38] chapel: the for loop dies because the call back is called immediately [16:39] amirpc: if I call the callback inside the loop, won't it be called 3 times? [16:39] pgte: amirpc: not on line 19, which is executed immediately [16:39] chapel: yep [16:39] chapel: amirpc [16:39] montylounge has joined the channel [16:39] pgte: amirpc: you probably have to count [16:39] kris__ has joined the channel [16:39] amirpc: okay so that's what I've done in the past [16:39] chapel: you can do an if (i <= 2) callback(); [16:39] amirpc: yeah just if i == 2, yeah [16:40] amirpc: okay I thought there might be like some sort of scope-oriented way [16:40] chapel: well [16:40] chapel: why do you go through it 3 times? [16:41] amirpc: it's just a setup to a unit test, I'm putting 3 accounts into my db so I can test some accounting code [16:41] chapel: no way to do multiple at once? [16:41] chapel: not familiar with mongo or node+mongo [16:41] amirpc: definitely a way I can pass an array of queries to a mongodb insert [16:42] amirpc: this probably wasn't a good choice of code to ask on because it's pretty bad, I just finally got curious enough to ask about the design pattern. I was hoping there was some way to basically "close" a function, like in my head I imagined a 'finally' block with a call to the callback [16:43] chapel: yeah, your issue is the call back on 19 [16:43] pgte: amirpc: I think the right way to do this is a) to stop if there is an error b( only callback when all 3 insertOnes have returned [16:43] pgte: so you must keep count of the returned insertOnes [16:43] chapel: yeah [16:44] amirpc: cool, okay that's what I have been doing. But yeah you guys are def right that code is not structured well and doesn't even need to have a loop, and it's error model is dubious. [16:44] kuya: tjholowaychuk: hi - i looked at tobi. is there any reason why its so node orientated? couldnt it just be pointed at *any* server address? am i missing something or am i just missing writing the code? :) [16:45] tjholowaychuk: kuya: not really a specific reason, we could do automatic closing of the server after the requests are done etc [16:45] tjholowaychuk: but I ended up not doing that anyway [16:45] tjholowaychuk: so no :p [16:45] tjholowaychuk: no reason aside from me not needing that [16:45] amerine has joined the channel [16:45] tjholowaychuk: ill patch [16:46] kuya: it would help me sneak in more node stuff to work if i could use it like i want ;) [16:46] tjholowaychuk: ill just add support for createBrowser(port, host) as well [16:46] amirpc has joined the channel [16:46] kuya: that would be great [16:47] IRONkyle has joined the channel [16:49] pgte: amirpc: something like this would be better in my opinion: https://gist.github.com/769716 [16:49] chapel: amirpc: http://pastebin.com/n2pe7xZU that might work [16:50] chapel: heh, pgte I was thinking about that [16:50] pgte: chapel :) [16:50] amirpc: pgte: Awesome :) Yeah I am restructuring it to use a single insert statement, but the example is much appreciated. [16:52] meandi has joined the channel [16:52] jamund has joined the channel [16:53] wilken has joined the channel [16:54] kriszyp_ has joined the channel [16:55] craigbarnes has joined the channel [16:58] creationix has joined the channel [16:59] hobodave has joined the channel [17:00] gartenstuhl has joined the channel [17:01] ceej has joined the channel [17:03] josephhitchens has joined the channel [17:05] josephhitchens: recommendations for a basic smtp client anyone? I just need to fire out a confirmation email through smtp.gmail.com [17:06] ceej has left the channel [17:08] isaacs has joined the channel [17:08] tjholowaychuk: kuya: will have that in a minute [17:09] wink_: josephhitchens: not used it, but https://github.com/miksago/node-smtp-client may work? [17:09] kuya: tjholowaychuk: your the best [17:09] qnt4b: regarding the discussion above: https://groups.google.com/group/mdb-community-forum/browse_thread/thread/cf7f77b092a94712 [17:09] tjholowaychuk: just gotta find what is giving me ECONNREFUSED haha, I messed up the ports or something [17:09] qnt4b: (don't know why they didn't post it to the node list) [17:11] qnt4b: amirpc: ^ [17:11] sivy has joined the channel [17:12] amirpc: qnt4b: badass, thank you [17:12] tjholowaychuk: kuya: but for example one benefit of passing the server, is that we can defer requests until it is "listening" [17:12] tjholowaychuk: otherwise you have to do that yourself [17:12] qnt4b: it hits the pattern pgte and chapel were discussing [17:12] tjholowaychuk: since listen() is async [17:12] Max-Might has joined the channel [17:13] herbySk has joined the channel [17:13] kuya: tjholowaychuk: yea i can see why you did it but that doesnt help me just now for using it for something non node :) [17:13] tjholowaychuk: forsure [17:15] aconbere has joined the channel [17:15] tjholowaychuk: k found my bug [17:15] tjholowaychuk: whoop [17:16] trotter has joined the channel [17:18] tjholowaychuk: kuya: just releasing the new version [17:19] MikhX has joined the channel [17:19] tjholowaychuk: done, 0.1.0 [17:19] qnt4b: release-on-demand ;) [17:19] rsms has joined the channel [17:20] kuya: thanks tjholowaychuk! [17:20] kuya: looks perfect [17:20] tjholowaychuk: np [17:22] arpegius has joined the channel [17:22] aurynn has joined the channel [17:26] noahcampbell has joined the channel [17:29] briznad has joined the channel [17:30] davidascher has joined the channel [17:31] msekimura has joined the channel [17:31] void_ has joined the channel [17:31] eee_c has joined the channel [17:32] cronopio has joined the channel [17:33] wilken has joined the channel [17:34] yozgrahame has joined the channel [17:35] derren13 has joined the channel [17:37] djanowski has joined the channel [17:37] djanowski: anybody using zombie.js? does it support window.open? [17:37] x_or has joined the channel [17:38] matt_c has joined the channel [17:39] sprout has joined the channel [17:39] sugardave has joined the channel [17:40] ewdafa has joined the channel [17:41] bingomanatee_ has joined the channel [17:41] qFox has joined the channel [17:41] tob1 has joined the channel [17:43] EyePulp: ooh - did console.log() get updated to expand arguments even if there are multiple? [17:44] SubStack: v8: console.log(1,2,3) [17:44] v8bot: SubStack: CONSOLE: [1, 2, 3], OUTPUT: undefined [17:44] SubStack: oh well that is not helpful [17:44] Chadams: what is a good mature db to use with node? I'm looking at couchDB now. [17:45] shaver: couch, redis, mysql, the usual selection [17:45] SubStack: also mongo [17:45] crodas has joined the channel [17:45] nejucomo has joined the channel [17:45] squeek: mongo is also in good shape too. [17:45] dsirijus has joined the channel [17:45] SubStack: and postgres recently got some love [17:45] EyePulp: v8: console.log(1,'two',{'a':'b','foo':[9,8,7,6,5,4]}); [17:45] v8bot: EyePulp: CONSOLE: [1, "two", {"a": "b", "foo": [9, 8, 7, 6, 5, 4]}], OUTPUT: undefined [17:46] jtrally: I have preferred Mongo over Couch but its very app dependent [17:46] EyePulp: I've been using mongo pretty happily with the node-native driver and mongoose on top for some cleanliness [17:46] Chadams: looking at it now, seems like it's REST based like couch is. thats cool [17:46] squeek: node.js/PL anyone? [17:46] EyePulp: Chadams: may be determined a bit by what you want to do with the db [17:47] jtrally: Mongo is not REST based. it's drivers are native [17:47] jtrally: but interacting with it in the shell is javascript based [17:48] Chadams: actually your right, I see that now [17:48] Chadams: hm.. still looks interesting, thanks for the share [17:48] hosh_work has joined the channel [17:49] prettyrobots has joined the channel [17:50] maritz has joined the channel [17:51] maritz: mikedeboer: sorry to disturb you, but what was the cloud9 channel again? [17:51] bingomanatee_: Mongo is wonderful. esp. for JS devs since it has internal JS engines to work with. [17:51] nefD: maritz: #cloud9ide [17:52] maritz: thanks nefD [17:52] mikedeboer: nefD: you're right ;) cu there maritz [17:52] Gruni has joined the channel [17:52] bingomanatee_: And you are essentially working in JSON. [17:53] jtrally: BSON :) [17:53] bingomanatee_: Couch's main advantage is its intrinsic transactions which give you automatic archiving and insulation against race conditions. [17:53] Yuffster_work has joined the channel [17:54] bingomanatee_: Yes - but to a noSQL shopper BSON == JSON. [17:54] EyePulp: heh [17:55] bingomanatee_: Feel free to shove vendor specific terms down peoples throats before they've adopted a platform if you really think that will help them. [17:55] qnt4b: I dunno, Chadams specified "mature" dbs... [17:55] jtrally: Yeah in that case MySQL [17:55] technoweenie has joined the channel [17:55] altamic has joined the channel [17:55] shaver: craigslist and blizzard both use large redis servers in production [17:55] qnt4b: slash postgres [17:55] bingomanatee_: Couch is def. more Mature than MongodB. It is about as mature as SQL - its been around for years [17:56] Chadams: well I work with JSON a lot so I would prefer to keep with that [17:56] bingomanatee_: Craigslist is using Mongo as well. They presented at MongoSV [17:56] sudoer has joined the channel [17:56] Chadams: JSON & JavaScript [17:56] shaver: it's also is-it-mature-used-the-way-you-use-it [17:57] bingomanatee_: Maturity isn't about usefulness. Its about how easy it is to sell a particular platform in house. [17:57] qnt4b: I thought maturity was about knowledge, experience, and the wisdom to identify the right solution for the right problem, but bingo's probably right: it's all about marketing ;) [17:58] bingomanatee_: Nobody in my circle even wants to look at Node because they are mature successful professionals who've made (in one case) Billions of dollars selling mature software to companies like Live Nation, Cisco Systems and other large vendors. [17:58] aklt has joined the channel [17:59] aguynamedben has joined the channel [17:59] tjholowaychuk: bingomanatee_ haha, its like seo, selling nothing for hundreds of thousands [17:59] bingomanatee_: So as much as I hate to say it, until someone makes billions of dollars with Node and Mongo, or a billion dollar company publically usees either product, they don't exist to major decision makers. [18:00] bingomanatee_: pretty much. [18:00] bingomanatee_: Just because a product is Open Source doesn't mean it is invulnerable to marketplace realities. [18:00] tfe has joined the channel [18:01] jtrally: Maturity can be about usefulness. Oracle is a mature product for a transactional DB but they sell it as the almighty hammer for every persistence problem when there are use cases in which it certainly doesn't shine. [18:01] dguttman has joined the channel [18:01] bingomanatee_: Maturity is about stability and a proven legacy of use under real world conditions. [18:01] bingomanatee_: It has nothing to do with usefulness. Do you really think CTOs give a shit about how much fun a given platform is to code in? [18:01] jtrally: for a given use case, but not for all use cases [18:02] qnt4b: the good thing is node is hitched to the cloud, and these days "cloud" == money and (slowly) growing awareness within the enterprise [18:02] bingomanatee_: Do you think that anyone gave a shit about how "Useful" windows was when they forced it on the masses? Everyone knew Macs were more "Useful". What they didn't know was whether the Mac was going to make them money or be cost effective. [18:04] jtrally: Which is what I'm getting at... not how easy it is to code in [18:04] bingomanatee_: Fair enough [18:05] pyrotechnick1 has joined the channel [18:05] pyrotechnick1: hey lads [18:05] jtrally: They do when there $75/hr software engineers are on crap machines that take too long to build the code and don't have modern tools out of the box causing them to do menial tasks over and over again. [18:05] jtrally: :) [18:05] pyrotechnick1: how do u nickserve [18:05] pyrotechnick1: teach me [18:05] pyrotechnick1: so i dont have to google it [18:05] jtrally: http://tinyurl.com/35ycl3z [18:06] pyrotechnick1: jtrally: troll. [18:06] bingomanatee_: Unless you have "Manager" in your title you're still just a lego. [18:07] jtrally: Or your working for a startup that doesn't have that bloat yet... [18:07] jtrally: which is the environment you should be in if you are working with Node/Mongo/Couch [18:07] jtrally: or a very progressive enterprise [18:07] softdrink has joined the channel [18:08] pyrotechnick1: test [18:08] pyrotechnick1: test [18:09] pyrotechnick: test [18:09] pyrotechnick: nice [18:09] wilken has joined the channel [18:11] piscm has joined the channel [18:12] dsirijus has joined the channel [18:13] dsirijus has joined the channel [18:13] lupomontero has joined the channel [18:14] dsirijus has joined the channel [18:14] perlmonkey2 has joined the channel [18:16] dtrasbo has joined the channel [18:16] masahiroh has joined the channel [18:16] kuya_ has joined the channel [18:20] pyrotechnick: anyone interested in physics in node? [18:20] Vertice has joined the channel [18:20] pyrotechnick: bullet physics particularly? [18:21] jbpros has joined the channel [18:22] bingomanatee_: pyrotechnick: I don't think a lot of us really "get" why we would want physics on a server side platform. [18:23] pyrotechnick: because every other MMO does [18:23] tjholowaychuk: id imagine you have to [18:23] tjholowaychuk: to keep things in sync [18:23] pyrotechnick: it enforces integrity [18:23] pyrotechnick: and anti-cheat [18:24] pyrotechnick: you still do it on the client [18:24] pyrotechnick: but the server has the ultimate say [18:24] pyrotechnick: who'se interested in architecture alternate to http/databse? [18:24] pyrotechnick: pm me [18:25] bingomanatee_: aren't physics something you usually do on the client side and report back to the server? [18:25] pyrotechnick: tjholowaychuk: that's another effect of SS physics [18:25] pyrotechnick: but not the most important [18:25] tjholowaychuk: bingomanatee_: you cant trust the client [18:25] pyrotechnick: bingomanatee: yes, but u need anti-cheat [18:25] tjholowaychuk: for anything [18:25] pyrotechnick: which involves doing it all on the server [18:25] tjholowaychuk: the server should always keep the game in sync, client just does dumb guessing [18:25] pyrotechnick: tjholowaychuk: you 'get it' [18:25] hasenj has joined the channel [18:26] pyrotechnick: tjholowaychuk++ [18:26] v8bot: pyrotechnick has given a beer to tjholowaychuk. tjholowaychuk now has 7 beers. [18:26] tjholowaychuk: 7 beers? woot [18:26] tjholowaychuk: haha [18:26] djanowski has joined the channel [18:26] pyrotechnick: you're an addict... [18:26] pyrotechnick: slow down you fucking drunk [18:26] tjholowaychuk: hahaha [18:27] Me1000 has joined the channel [18:27] pyrotechnick: we have standards [18:27] pyrotechnick: we dont just sleep with every php'r that comes our way [18:27] pyrotechnick: only the magic_quotes_GPC = off ones [18:27] tilgovi has joined the channel [18:28] pyrotechnick: on that topic [18:28] pyrotechnick: jspp seems cool [18:28] mgutz: I'm porting over Ruby's FileUtils, Rake and Thor actions. Should I use names like 'rm' or more descriptive names like 'removeFile' [18:28] pyrotechnick: its definitely lowered the entry barrier [18:28] pyrotechnick: and brought a few more comrades on board to our projects [18:28] tjholowaychuk: boo thor [18:28] tjholowaychuk: boo rake [18:29] pyrotechnick: mgc: verbose all the way [18:29] pyrotechnick: make shortcuts later... [18:29] mgutz: there are useful functions in there though :) [18:29] pyrotechnick: mgutz: ^^^ [18:29] tjholowaychuk: make++ [18:29] v8bot: tjholowaychuk has given a beer to make. make now has 1 beers. [18:30] pyrotechnick: mgutz: everything should officially be verbose, and in full english [18:30] mgutz: makes sense [18:30] pyrotechnick: mgutz: make it easier when you're done / when people ask for it [18:30] siong1987 has joined the channel [18:30] pyrotechnick: mgutz: abbr, suck [18:31] pyrotechnick: nobody agrees on them so they're useless [18:31] pyrotechnick: they're an example of pre-emptive optimisation [18:32] lupomontero has joined the channel [18:32] nejucomo has joined the channel [18:32] mgutz: in this case, most of us know what rm, rmdir, mkdir_p, cp_r means [18:32] trotter has joined the channel [18:32] pyrotechnick: mgutz: right [18:32] pyrotechnick: depends what API you're targeting [18:32] pyrotechnick: something like a CLI, with shortcuts go nuts [18:33] pyrotechnick: if it's a library i disagree [18:33] maritz: hm, what does "ENOTFOUND, Domain name not found" mean? [18:33] mgutz: i'll do both as you suggest with aliases [18:33] djanowski has joined the channel [18:33] pyrotechnick: wats mkdir_p and cp_r anyway [18:33] AAA_awright has joined the channel [18:33] pyrotechnick: are you just too lazy to use flags? [18:33] pyrotechnick: it seems a bit anti-pragmatic [18:35] x_or has joined the channel [18:35] pyrotechnick: mgutz: there's a fine line between convenience and stupidity [18:35] pyrotechnick: i feel that crosses the line [18:35] jpick has joined the channel [18:35] mgutz: makeDirectory('dir', {recursive: true} == mkdir_p('dir') [18:35] eee_c has joined the channel [18:35] pyrotechnick: it seems like useless wrappers to me [18:35] pyrotechnick: seems a bit ruby [18:36] mgutz: makeDirectory('dir/sub/subsub', {recursive: true}) [18:36] pyrotechnick: i dont want to judge or seem arrogant [18:36] pyrotechnick: it just seems a bit like abstraction for nothing [18:36] losing has joined the channel [18:36] mgutz: it's SH [18:36] pyrotechnick: right [18:36] pyrotechnick: it's just alot of node code for something that shell can do natively with one flag [18:36] pyrotechnick: i dont know [18:37] pyrotechnick: that's just us [18:37] pyrotechnick: do whatever works [18:37] pifantastic has joined the channel [18:37] pyrotechnick: but it seems a bit airy fairy [18:37] bingomanatee_: The only plausable apologia is when your deploy platform is uncertain [18:37] pyrotechnick: right. [18:37] meandi has joined the channel [18:37] pyrotechnick: with node is not much of an issue [18:37] tjholowaychuk: '/clear [18:37] tjholowaychuk: FUCK [18:38] tjholowaychuk: haha [18:38] tjholowaychuk: fml [18:38] pyrotechnick: all supported platforms are POSIX compliant [18:38] bingomanatee_: But frankly I think anyone who leaves the Unix platform kind of deserves a little fail. [18:38] pyrotechnick: bingomanatee: amen. [18:38] EyePulp has joined the channel [18:38] pyrotechnick: bingomanatee_++ [18:38] v8bot: pyrotechnick has given a beer to bingomanatee_. bingomanatee_ now has 2 beers. [18:38] bingomanatee_: Like all those posers who think that Cygwin makes them developers . [18:38] pyrotechnick: i hope that they die in a fire [18:39] bingomanatee_: I hope they breed and multiply. [18:39] bingomanatee_: I love being above average. [18:39] pyrotechnick: the day node officially supports windows is a dark and terrible day IMO [18:39] AAA_awright_ has joined the channel [18:39] maritz: i'm developing under windows right now :( [18:39] bruse: there's a lot of money in windows development [18:39] pyrotechnick: hahaha [18:39] bingomanatee_: then you're a bad developer. [18:39] pyrotechnick: have fun with that. [18:39] maritz: (cloud9 on a linux server) [18:39] pyrotechnick: one day you'll see the light [18:39] pyrotechnick: until then [18:39] pyrotechnick: just have fun with that. [18:39] bingomanatee_: meritz: tell me - what in your opinion is worse - a false positive, or a false negative? [18:39] dgathright has joined the channel [18:40] bingomanatee_: its a trick question, [18:40] maritz: i'm not at home any my umts stick doesn't work under linux without some extreme kernel hacking. and i'm not that good with kernel module coding :( [18:40] bruse: maritz: it's ok [18:40] mgutz: geez, windows isn't that bad .. it's just not free for my startup :( [18:41] pyrotechnick: maritz: that does not make any sense [18:41] bruse: don't feed the troll [18:41] pyrotechnick: HAHAHA [18:41] pyrotechnick: windows is free [18:41] pyrotechnick: HAHAHA [18:41] pyrotechnick: oxymoron [18:41] bingomanatee_: ? [18:41] maritz: pyrotechnick: why doesn't that make sense? [18:41] perezd has joined the channel [18:41] strmpnk has joined the channel [18:41] pyrotechnick: maritz: "i'm not at home any my umts stick doesn't work under linux without some extreme kernel hacking. and i'm not that good with kernel module coding" [18:41] maritz: and the only things i'm running on windows for developing right now are putty, chrome and pidgin (for irc ;) ) [18:42] bingomanatee_: I think what boy child is getting at is that there is a difference between "It came with my laptop" and "its free" [18:42] pyrotechnick: read it back to yourself before you make yourself sound silly [18:42] maritz: blah? [18:42] pyrotechnick: oh god [18:42] pyrotechnick: just READ IT. [18:42] bruse: looks fine to me [18:42] jtrally: What's Windows? Is that thing you use to do testing that is installed in VMWare? [18:42] pyrotechnick: "any my" [18:43] pyrotechnick: are you retarded or just tired? [18:43] maritz: jesus... and [18:43] pyrotechnick: right [18:43] maritz: typo [18:43] pyrotechnick: right [18:43] pyrotechnick: so fix it [18:43] pyrotechnick: before you rage on and on [18:43] bruse: pyrotechnick: how old are you anyway? [18:43] pyrotechnick: im 8 [18:43] maritz: didn't see it on my 11" netbook from 1m away, sorry.... oO [18:43] pyrotechnick: my dad showed me node,js last night [18:43] maritz: i'm not the one who raged :D [18:43] matclayton has left the channel [18:44] pyrotechnick: i am professional node dev [18:44] pyrotechnick: i make paymeny gateway paypal 2.0 http cookie interface [18:44] mgutz: i'm one of the few who prefers windows, although i now use OS X. in windows, I can cycle through minimized windows with keyboard, cut/copy/pase files with keyboard, etc. OS X is too darn mousey [18:44] maritz: either way: anyone know what could cause "ENOTFOUND, Domain name not found"? [18:44] bingomanatee_: You can keyboard jump in MacOS : clover tab. [18:45] pyrotechnick: maritz: you have misunderstood the api of the sever API you're using [18:45] pyrotechnick: correct it [18:45] mgutz: cmd+tab does not cycle through minimized windows [18:45] bingomanatee_: I actually don't have an issue with the INTERFACE of Windows. It is stil for instance far superior to the INTERFACE of Ubuntu. [18:45] pyrotechnick: why not... [18:45] pyrotechnick: it does on mac... [18:45] mgutz: i'm on a mac [18:45] AAA_awright has joined the channel [18:45] maritz: pyrotechnick: if you don't have anything useful to say, just be quiet, please. (eat that troll) [18:45] pyrotechnick: mgutz: so you're keyboard is fucked [18:45] bingomanatee_: And actually in many ways the INTERFACE of a Win box is better than that of Macs [18:46] pyrotechnick: command tab indeed changes apps [18:46] mgutz: minimize chrome, then cmd+tab to chrome, chrome wil not maximize [18:46] maritz: seriously though: it's not my code that's causing the error. [18:46] Aikar: anyone able to help me with advice on npm install on debian? ive chowned and g+w the directories it advised so my user can install and even tried sudoing the .sh script, but i keep getting npm WARN bins installing to /tmp/npm.9644/package, outside PATH [18:46] bruse: maritz: i guess the hostname cant be resolved [18:46] bingomanatee_: I just find as a developer, having to figure out how to install apps under multiple platforms is a usless pain. [18:46] pdelgallego_ has joined the channel [18:46] alek_br has joined the channel [18:46] pyrotechnick: Aikar: pm me for the anwer [18:46] ossareh has joined the channel [18:46] pyrotechnick: i dont want to seem like troll [18:46] pyrotechnick: but i have the answer to all of your problems [18:46] nejucomo has joined the channel [18:46] Aikar: >_> [18:46] pyrotechnick: same with you mgutz [18:47] Aikar: that in itself is trolling [18:47] bingomanatee_: If I throw Node on my Ubuntu desktop, I can safely throw it on my cloud server. If I can't throw Node on my Ubuntu, I just saved a lot of time because I know I'll never be able to deploy it on the cloud. [18:47] pyrotechnick: just do it. [18:47] SubStack: Aikar: update your PATH then I suppose, or you can install into your home directory with ./configure --prefix=... [18:47] Aikar: SubStack: there is no configure for npm [18:47] bingomanatee_: For me 90% of my time is installing evaluating and deploying Linux apps to clouds. (professional time that is.) [18:47] Sami_ZzZ: fr¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa¨aaaaaaaaaaaaaaz1 [18:47] bingomanatee_: I can't justify the down time of exploring two different deployment paths. [18:48] Sami_ZzZ: z6 ~+´0oC) [18:48] pyrotechnick: Aikar: mgutz: http://www.virtualbox.org/ [18:48] pyrotechnick: do yourself a favour and leave windows [18:48] Sami_ZzZ: 4~aaaaaaqaaaaaaaaaaa)iqsawssaqqqaa [18:48] bingomanatee_: If for instance you are developing completely "inside a bubble" - be it node, LAMP or RoR then your platform is irrelavant. [18:48] pyrotechnick: you life will improve... [18:48] mgutz: i'm on a mac! read man [18:48] bingomanatee_: <-- noticed [18:48] aconbere has joined the channel [18:48] gkatsev: I'm on a horse. [18:48] pyrotechnick: well dont fail so hard at alt-tab [18:48] pyrotechnick: it's quite a simple task [18:48] svnlto has joined the channel [18:48] mgutz: it does not maximize windows dude [18:48] mgutz: when they are minimized [18:48] pyrotechnick: unless you've fucked the defaults [18:49] maritz: gkatsev: no you're not! [18:49] gkatsev: maritz: how would you know? [18:49] pyrotechnick: that's incorrect mgutz [18:49] maritz: i'm just calling your bluff. [18:49] pyrotechnick: it does maximise minimised windows [18:49] bingomanatee_: Most unix apps develop well on Macs. I've had issues on case sensitivity (false positives) but they aren't substantial [18:49] gkatsev: maritz: I have IRC on my phones [18:49] Aikar: pyrotechnick: stop trolling this channel [18:49] pyrotechnick: Aikar: eat a dick [18:49] bingomanatee_: <-- Thinks this is getting unproductive. [18:49] pyrotechnick: he wants to try and tell me [18:49] pyrotechnick: that alt-tab doesnt change windows [18:49] Sami_ZzZ: sorry for my garbage [18:49] maritz: gkatsev: still not very plausible that you'd chat in irc while sitting on a horse. [18:49] bingomanatee_: Nick, you may be right but you are being a chore. [18:50] pyrotechnick: i dont want people to be lied to [18:50] bingomanatee_: Really. [18:50] gkatsev: maritz: fine! [18:50] maritz: gkatsev: yeah! [18:50] pyrotechnick: i think he's being sponsored by windows to spread FUD [18:50] SubStack: Aikar: I'm fairly certain that npm installs into your home directory by default if you're not root [18:50] bingomanatee_: Are you high? [18:50] pyrotechnick: no [18:50] pyrotechnick: i just hate lies [18:50] bingomanatee_: Then get high. [18:50] pyrotechnick: and misinformation [18:51] psi0nik has joined the channel [18:51] pyrotechnick: its bad for *n*x and it's bad for node [18:51] pyrotechnick: no [18:51] gkatsev: mmm FUDge [18:51] bingomanatee_: Whatever state you are in its not helpful [18:51] pyrotechnick: just dont lie and misinform people [18:51] pyrotechnick: he [18:51] jtrally: bingomanatee_: you can turn off the case insensitivity. We got burned by that. Working local on mac is fine then deploy to a CI server and the build fails [18:51] pyrotechnick: is [18:51] pyrotechnick: just [18:51] pyrotechnick: simply [18:51] pyrotechnick: incorrect [18:51] bingomanatee_: Yeah . [18:51] bingomanatee_: I have tried to do that with volumes - it helps. [18:51] Aikar: SubStack: I have nothing in .node_libraries and ive tried running it as root but it still wouldnt install the /usr/local/bin file [18:51] langworthy has joined the channel [18:52] bingomanatee_: Esp. with Zend PHP autoloading - though there's dozens of similar scenarios that can screw you. [18:52] SubStack: Aikar: oh you are trying to install into /usr/local ? [18:52] Aikar: is ryan only one with ops here? [18:52] pyrotechnick: haha [18:52] Aikar: SubStack: yeah default install, got node in /usr/local/lib/node [18:52] pyrotechnick: ryah is god [18:52] pyrotechnick: he does no evil [18:52] pyrotechnick: try as you may [18:52] Aikar: yes, and god should ban you from this channel [18:52] Aikar: this isnt the first time ive seen you trolling [18:53] Aikar: probally the 3rd [18:53] pyrotechnick: Aikar: lies and misinformation should be banned from this channel [18:53] aklt has joined the channel [18:53] pyrotechnick: like someone saying command tab on mac doesnt change or maximise windows [18:53] mgutz: what? [18:53] pyrotechnick: which is a) completely off-topic and b) incorrect [18:53] mgutz: you're incorrect [18:53] Aikar: ok time to finally put first person on ignore so can actually get stuff discussed [18:53] mgutz: i'm on a mac [18:53] Aikar: everyone just put him on ignore [18:53] pyrotechnick: just try it mgutz [18:53] bingomanatee_: Dude those voices in your head are not there to help. Come back to the light. [18:54] mgutz: i have over and over [18:54] pyrotechnick: before you make a fool of yourself [18:54] mgutz: cmd+tab will switch apps [18:54] mgutz: it will not maximize them when they are minimized [18:54] pyrotechnick: mgutz: try harder [18:54] Aikar: SubStack: got node installed, and trying to get the typical npm install so npm script will be in /usr/local/bin/npm [18:54] pyrotechnick: mgutz: http://lemonodor.com/images/mccarthy-youre-doing-it-wrong-s.jpg [18:54] bruse: http://screenr.com/ [18:54] bruse: make a screencast of it [18:55] Aikar: but it acts like it cant write to the directories, which i even tried running with sudo sh and still no go [18:55] bruse: then maybe we can bury this discussion [18:55] Blink7 has joined the channel [18:55] kjeldahl has joined the channel [18:55] pyrotechnick: bruse: of maximising a minimised app? [18:55] Aikar: screen cast of text logs lol? [18:55] Aikar: seems a lil pointless :3 [18:55] pyrotechnick: that would require a video... [18:55] bingomanatee_: Pyro - you are really making Unix users look bad and childish. [18:55] mikeal has joined the channel [18:55] bruse: pyrotechnick: ... [18:56] under_: maybe everyone discussing alt / cmd tabbing should just do it once, right now. and not switch back [18:56] pyrotechnick: lol [18:56] bingomanatee_: You're talented. But you're not helping. [18:56] Aikar: just put him on ignore guys lol [18:56] pyrotechnick: do it [18:56] pyrotechnick: id rather retards not hear what i have to say [18:56] pyrotechnick: saves me the trouble of trying to correct them [18:56] bingomanatee_: Do you consider me retarted? [18:56] Aikar: hes trying to troll us. I ask for help on Debian and he tells me to stop using Windows... hes trolling [18:56] bruse: would you stop acting like a kid? [18:56] cronopio: under_: ++ [18:56] pyrotechnick: bingomanatee_: no [18:56] bruse: this isnt quakenet [18:56] pyrotechnick: i know [18:56] pyrotechnick: i just hate [18:56] bingomanatee_: Because my finger is hovering over the iggy stick. [18:56] roaet: meh. Where is that evl guy [18:56] pyrotechnick: mac bashing [18:57] pyrotechnick: over something so simple as command-tab [18:57] Sami_ZzZ has joined the channel [18:57] pyrotechnick: he's making mac out to be retarded [18:57] pyrotechnick: and it's wrong [18:57] pyrotechnick: and false [18:57] roaet: I've only seen him here once [18:57] Aikar: he came in like a week ago [18:57] Aikar: or 2 [18:57] Aikar: and started trolling then [18:57] bingomanatee_: Remember - I am putting hours into making this channel searchable. I want people to see Node developers in the best light, [18:57] bingomanatee_: This isn't it. [18:57] Aikar: this is like the 3rd time ive seen him do it [18:57] pyrotechnick: look guys [18:57] pyrotechnick: it's command tab [18:57] roaet: Aikar: he made the tadpole thing right? [18:57] pyrotechnick: it maximises windows [18:57] bruse: pyrotechnick: just drop it [18:57] bruse: no one cares [18:57] Aikar: i dunno. [18:58] pyrotechnick: pick your argument with mgutz [18:58] isaacs has joined the channel [18:58] pyrotechnick: not with the person who is trying to help [18:58] bruse: he hasnt even said anything in screens and screens of you whining [18:58] roaet: i like gnu screen [18:58] bruse: gnu screen is wonderful [18:58] roaet: i'd say it is the greatest thing since sliced bread [18:59] bruse: but i really only use it for persistant application sessions [18:59] wink_: mmm sliced bread [18:59] bruse: i never got into the whole "switching between screens with key commands" and all that [18:59] gkatsev: I recently switched to tmux [18:59] roaet: bruse: compile much? :D [18:59] bruse: just attaching and detatching [18:59] mjr_ has joined the channel [18:59] gkatsev: so much better [18:59] CIA-121: node: 03Ryan Dahl 07master * r2e76cd3 10/ (lib/tls.js test/simple/test-https-simple.js): [18:59] CIA-121: node: TLS: Forward errors to cleartext [18:59] CIA-121: node: But only after control has been inverted. - http://bit.ly/ehaOJt [18:59] bruse: not really [18:59] roaet: ah [18:59] bruse: i do use tabs in my gnome terminal though ;) [18:59] roaet: it's great when you have a good .screenrc, switch about is awwesome [19:00] bruse: at least i dont compile much on remote servers [19:00] bruse: and when i'm on my machine i can just use terminal tabs [19:00] roaet: i don't have a linux system with a windowing system :( [19:01] bruse: then screen is wonderful! [19:01] cronopio: roaet: awesome its just awesome! xD [19:01] ryah: ErikCorry, mraleph: is v8's svn down? [19:01] gkatsev: cronopio: I prefer xmonad :) [19:01] ryah: ~/src/v8 # svn up [19:01] ryah: svn: PROPFIND of '/svn/trunk': Could not read status line: Connection reset by peer (http://v8.googlecode.com) [19:01] mgutz: for the troll: http://www.macworld.com/article/152366/2010/06/commandtabminimizedwindows.html, that's what I currently do, which Windows does with a simple Alt+Tab [19:02] cronopio: gkatsev: i heard that many times [19:02] gkatsev: cronopio: have you tried it? [19:02] gkatsev: I mean, not to say that awesome isn't [19:02] roaet: Oh it's that guy, gkatsev [19:02] gkatsev: roaet: oh, it's you. [19:03] eee_c has joined the channel [19:03] roaet: gkatsev: so I got node.js and socket.io working. I appreciate the suggestion. [19:04] gkatsev: roaet: np [19:04] cronopio: gkatsev: not yet, im using an old laptop and now I use fluxbox. In my future desktop i will try that and others :P [19:04] gkatsev: ok [19:06] jimt has joined the channel [19:06] jpld has joined the channel [19:06] cronopio: gkatsev: i mean about xmonad [19:06] gkatsev: yeah [19:07] svens_ has joined the channel [19:09] stagas has joined the channel [19:12] mgutz: xmonad + gnome almost ideal. You can continue to use gnome panels, launchers and apps in tiling bliss. I think there is similar integration for flux. [19:12] under_: wow so now we're on window managers? [19:12] under_: lets go all out [19:12] mgutz: sorry [19:12] under_: emacs FTW! vim sucks! [19:13] under_: :) [19:13] josephhitchens: real men use use vim. [19:13] under_: blah [19:13] ryah: real men use ed [19:13] under_: real men use vi [19:13] under_: not vim [19:13] djanowski has joined the channel [19:14] gkatsev: no one uses vi anymore, not really. [19:14] josephhitchens: ryah: true enough [19:15] paulrobinson_ has joined the channel [19:17] mgutz: what RAM size for VPS to run node + postgres? 512MB enough? [19:17] cafesofie has joined the channel [19:18] pedrobelo has joined the channel [19:18] AAA_awright: mgutz: That's more than enough for Nodejs [19:18] AAA_awright: Not sure about the database [19:18] briznad has joined the channel [19:18] AAA_awright: It, of course, depends on what you are storing with it [19:19] mgutz: i don't expect much traffic, just need basics for a mom and pop website [19:19] evanmeagher has joined the channel [19:20] amerine has joined the channel [19:22] dgathright has joined the channel [19:22] aheckmann has joined the channel [19:23] AAA_awright: mgutz: My Node.js is taking about 2% of my 512MB and I think that stays roughly flat with the number of connections, I can saturate the Network connection before I ever use all the CPU or any significant memory [19:23] mgutz: which db? [19:23] justinlilly has left the channel [19:23] pagameba has joined the channel [19:23] AAA_awright: No database, I do have MySQL installed for other things [19:23] mgutz: awesome, thanks for info [19:23] AAA_awright: with PHP-FPM and Nginx [19:24] mgutz: do you run round-robin node processes? [19:24] mgutz: or just run 1 process for node [19:25] ashleydev has joined the channel [19:25] piscisaureus has joined the channel [19:26] AAA_awright: mgutz: I have it setup to load balance across 4 Node.js processes but right now I only have 1 of the 4 running [19:26] AAA_awright: For easier debugging and such [19:27] kris__: are you doing your load balancing in nginx? [19:27] AAA_awright: Memory isn't a problem and I can get more requests/second that way, but it's not necessary if I can saturate the network with a single one :p [19:27] badaxx has joined the channel [19:27] AAA_awright: KrisJordan: Yeah, also to serve static files [19:27] AAA_awright: And PHP stuffs [19:28] isaacs has joined the channel [19:28] KrisJordan: @awright - we use phpfpm/nginx too -- thinking of moving some processes to node - is the load balancing pretty easy to setup in nginx? just roundrobin against a list of ports? [19:30] KrisJordan: answer: http://wiki.nginx.org/HttpUpstreamModule [19:30] KrisJordan: cool [19:31] josephhitchens: can you clear an array by just setting .length to 0? or do you have to pull them all off? [19:31] void_ has joined the channel [19:32] derferman has joined the channel [19:32] bingomanatee_: why not just "foo = []"? [19:33] bingomanatee_: seems like you're looking harder than is necessary to solve your task. [19:33] aconbere has joined the channel [19:33] josephhitchens: a reference is held to it elsewhere. [19:34] tilgovi has joined the channel [19:34] AAA_awright: KrisJordan: Use AAA_awright... Yeah, it's a standard reverse proxy load balancing/caching configuration [19:36] wilken has joined the channel [19:36] aurynn: so what should I publish my pg driver under? :) [19:36] bingomanatee_: josephhitchens - I REPL tested your theory ad its sound - however I would do some testing to validate that both references stay in sync. [19:36] josephhitchens: cool, thnx. [19:37] thebigbad: aurynn: Tumbolia Public License [19:38] thebigbad: it'll be awesome [19:38] bingomanatee_: you do know that if you console node without any file parameter you can interactively test JS all you like right? [19:38] aurynn: I meant, name-wise. [19:38] sechrist has joined the channel [19:38] markwubben has joined the channel [19:38] charlenopires has joined the channel [19:39] derren13 has joined the channel [19:39] bingomanatee_: josephhitchens: just type "node" in your console and return [19:40] josephhitchens: that would have been less typing huh? sorry, just not thinking. [19:42] norviller has joined the channel [19:43] bingomanatee_: <-- thinks rarely, if ever [19:43] jimt_ has joined the channel [19:47] jchris has joined the channel [19:47] briznad has joined the channel [19:47] bingomanatee_: KrisJordan - there are three obvious load balancing models. [19:47] bingomanatee_: One is to use websockets both on the client and the server to distribute work between clients (webworkers even) and servers. [19:48] bingomanatee_: The other is to use a node based message queue and allow node clients to work off of it. [19:48] piscisaureus has joined the channel [19:49] bingomanatee_: The third and this is not node but - MongoDB allows you to distribute data between servers and balances the load with replication and sharding, and you can communicate to MongoDB with node. [19:49] deepthawtz has joined the channel [19:49] bingomanatee_: Other noSQL solutions may do this as well - I can only speak to MongoDB with authority. [19:49] kris_ has joined the channel [19:51] langworthy has joined the channel [19:51] lightharut has joined the channel [19:52] iFire` has joined the channel [19:52] riven` has joined the channel [19:52] SamuraiJack__ has joined the channel [19:52] lightharut: How can I connect to the MSSQL database from node.js? [19:52] bingomanatee_: SubStack, I believe, has native Node work queues, but Node also interoperates with traditional queues like AMQP. [19:52] bingomanatee_: And RabbitMQ. [19:52] bingomanatee_: Does this help? [19:54] MikhX has joined the channel [19:55] lightharut: I'm looking to connect to a database from Node.JS (implementation of Server-side javascript) and I arrived here. Anyone know where I should go for that? [19:55] SubStack: oh yeah I wrote a silly work queue thing I forgot [19:55] dthompson has joined the channel [19:55] aurynn: lightharut, which database? [19:55] lightharut: MSSQL [19:55] SubStack: this one: https://github.com/substack/node-waitlist [19:56] aurynn: lightharut, I don't know if anyone's written an MSSSQL driver. [19:56] aurynn: Given sufficient time, money, and a protocol reference, I could [19:56] SubStack: but I haven't put up a readme yet because I don't imagine many other people will need to do something this specific [19:56] lightharut: SubStack:thanks [19:56] dgathright has joined the channel [19:57] SamuraiJack has joined the channel [19:57] SubStack: lightharut: it's more of a resource acquisition system than a work queue [19:57] admc has joined the channel [19:57] mgutz: aurynn: are you using postgres node in production? [19:58] aurynn: mgutz, I'm building software around it/actively using it, so I'm grinding out most of the bugs. It's pretty stable at this point [19:58] isaacs has joined the channel [19:58] wink_: mgutz: i am [19:58] aurynn: My driver, that is. [19:58] psi0nik has left the channel [19:58] wink_: lightharut: i have a unixodbc binding [19:59] mgutz: i saw brainc's postgres work too .. not sure which one to use [19:59] wink_: its not 100% complete, but it'll query any odbc compliant db [19:59] muk_mb: so I just got my node smart machine on no.de, I have to setup nginx/apache right? [19:59] muk_mb: or is that magically done for me? [19:59] lightharut: is there any other database which has a good support by node.js? [19:59] aurynn: lightharut, mysql, postgres, couchdb, cassandra.. [19:59] wink_: lightharut: postgres, mysql [20:00] lightharut: can you give me the link to some sample that I can use? [20:00] mgutz: wink_: which postgres library are you using? [20:00] bingomanatee_: MongoDB -- [20:00] lightharut: for example for mysql. [20:00] nejucomo has joined the channel [20:00] aurynn: github.com/aurynn/postgres-js [20:00] bingomanatee_: JSON [20:00] wink_: mgutz: ryah's [20:00] jtrally: or require('fs') [20:00] bingomanatee_: CVS [20:00] maritz: anyone know what could cause "ENOTFOUND, Domain name not found"? [20:00] jtrally: simplest database [20:01] benburkert has joined the channel [20:01] jamesarosen has joined the channel [20:01] wink_: no offense meant towards aurynn, but the native js drivers are balls slow [20:01] charlenopires has joined the channel [20:01] bingomanatee_: I would put forth that PostGres and MongoDB are the "simplest" candidates in the repository family [20:01] wink_: i rewrote a mongo binding because the native mongo driver was horribly slow [20:01] aurynn: wink_, what sort of performance would you expect? [20:01] wink_: aurynn: from a js implementation, it's exactly what i'd expect [20:01] bingomanatee_: wink_: very interested. [20:01] aurynn: wink_, I'm able to push ~3000 q/s against postgres on a laptop, and I find that pretty reasonable [20:01] bingomanatee_: Which repo? [20:02] maritz: redis isn't that difficult either. [20:02] wink_: aurynn: how much data are you actually moving around? not just queries per sec [20:02] wink_: because a few mb result set from those queries is gonna kill that [20:02] wink_: i mean "select 1 from table", sure [20:02] aurynn: wink_, those were pretty simple tests, and it requires a pooling system no matter what. [20:03] bingomanatee_: Redis is supposedly the fastest repository out there. Mongo, and other NoSQL solutions are probably comparable, but the nature of Redis means that I very much doubt anyone will ever make a faster system. [20:03] wink_: not connection pooling [20:03] aurynn: Since a couple meg will collapse everything anyway [20:03] aurynn: s/everything/a single thread/ [20:03] wink_: runs a-ok for me :> [20:03] maritz has left the channel [20:04] aurynn: wink_, I'm moving it to strtok anyway, or that google thing to describe network messages [20:04] aurynn: so it's not doing that part in JS [20:04] aurynn: (which IS slow) [20:05] springmeyer has joined the channel [20:06] piscisaureus has joined the channel [20:06] mikeal: Redis is crazy fast [20:07] mikeal: Mongo claims to be faster because benchmarks are stupid [20:07] mikeal: real throughput, Mongo is much slower [20:07] aurynn: protocol buffers, that's it [20:07] aurynn: wink_, Something C-based for the major work of doing packet decode [20:08] wink_: aurynn: like i said, i wasnt being mean, it is what it is...the more work you do inside v8 (usually) the slower its going to be [20:08] w0rse has joined the channel [20:08] aurynn: wink_, I do get that. I want to get some large-resultset stuff to test performance [20:09] springif` has joined the channel [20:09] aurynn: and test grabbing small subsets of data from PG, as opposed to an entire multi-MB resultset. [20:09] wink_: mongo's protocol definitely sucks for large result sets [20:09] aurynn: (which you can do cleanly and easily on the protocol level) [20:09] muk_mb: oh there we go, I figured it out [20:10] wink_: they really fucked the pooch by limiting things to 4mb before you have to ask for me [20:10] mikeal: i don't see these use cases very often [20:10] wink_: er, more [20:10] mikeal: it's called paging [20:10] ryah: how do i get unix time in js? [20:10] wink_: Mike_L: sure and it's a waste when i dont need it [20:10] wink_: erm [20:11] wink_: if i know i need all 100mb of data, its just extra hoops to jump through to get it [20:11] mgutz: Is Redis/Mongo suitable for a small 512M RAM VPS? [20:11] mikeal: .getTime() [20:11] mikeal: ryah: ^^ [20:11] wink_: mgutz: yeah [20:11] mikeal: new Date().getTime() [20:11] ryah: thx [20:12] mikeal: mgutz: Redis has a VM mode that will only keep the keys in memory and the values on disc [20:12] bingomanatee_: mguz: can you provide more detail on your use case? [20:12] piscisaureus: ryah: is not unix time. it is unix time * 1000 [20:12] mikeal: that should be enough, depending on your use case [20:12] Aikar: http://registry.npmjs.org/npm/latest down for anyone else? [20:12] tjholowaychuk: ryah: Date.now() as well [20:12] mikeal: oh yeah, cause setTime() you have to do unixtime * 1000 [20:12] tjholowaychuk: in v8 [20:13] tonio has joined the channel [20:13] mgutz: i build small mom and pop sites. I am concerned about running NoSQL on small VPS since I use 32-bit OS for speed and less resource (per Linode). [20:14] mikeal: what kind of database are you looking for? [20:14] mikeal: CouchDB uses very little memory [20:14] mikeal: we run hundreds of instances on an ec2 instance [20:14] jpld has joined the channel [20:14] mgutz: database doesn't matter that much, no transactions. nosql is just gaining a lot of transaction and something like mongoose looks appealing [20:14] dandean has joined the channel [20:15] mgutz: transaction == traction [20:15] mikeal: the reason it's gaining traction is because the databases are designed around use cases rather than just being generic [20:15] [[zz]] has joined the channel [20:15] mikeal: so you should figure out your use case and see if it matches the target of a particular db [20:15] ossareh has joined the channel [20:15] TobiasFar has joined the channel [20:15] guybrush: mikeal: i wonder how is it possible to use node-modules in node.couchapp.js, since couchdb-js runs on spidermonkey [20:15] bingomanatee_: Keep in mind- while Redis and MongoDB both run in memory they do have disk storages that they use in tandem with their memory cache. [20:16] mikeal: you can use commonjs modules [20:16] mikeal: but not any node module [20:16] guybrush: mhh i guess i dont get the whole thing [20:16] mikeal: MongoDB's *will* corrupt [20:16] mikeal: Redis won't [20:16] bingomanatee_: so *wiil* sql [20:17] mikeal: umn, no [20:17] mikeal: Postgres is durable [20:17] bingomanatee_: anything electronic fails. [20:17] mikeal: half the MySQL backends are durable [20:17] bingomanatee_: Mongo presumes replication on production level systems. [20:17] mikeal: haha [20:17] mikeal: yeah, that's their crazy marketing [20:17] mikeal: that running 3 servers is the only solution for durability [20:17] bingomanatee_: There is a small chance that a single server will fail - its pretty impossible for multiple servers to fail at the same time. [20:18] wink_: couch won't until they find another bug eating people's data :> [20:18] bingomanatee_: I've caused MySQL to fail and get corrupt. [20:18] wink_: sorry low blow ;> [20:18] mikeal: technically, it didn't "lose" the data, it wrote it, it just didn't write the header, the fix for that bug recovered the data [20:18] bingomanatee_: I'm just saying - nobody who cares about data integrity in ANY system allows for a single point of failure. [20:18] mikeal: ok, here's how it works [20:18] mraleph1 has joined the channel [20:18] mikeal: if you use an append-only log [20:19] mikeal: you can't get caught mid-write cycle and corrupt the entire database [20:19] mikeal: or a section of the btree [20:19] mikeal: only the last write operation [20:19] bingomanatee_: A single physical server is a single point of failure. [20:19] mikeal: that's why Postgres, CouchDB, some MySQL backends, and Redis use append-only [20:19] blowery: what happens if i break into the server room with a squirt gun? [20:19] mikeal: MongoDB is just a mem-mapped file that occationally writes to disc [20:19] bingomanatee_: People managing real data worth real money always distribute transactions on redundant systems. Its not a marketing ploy by MongoDB - its just good practice. [20:19] mikeal: yeah, that' why you rsync the log :) [20:19] wink_: well come on now mikeal, it can absolutely fsync per write [20:20] mikeal: "slave" replication in CouchDB is literally a file copy [20:20] mikeal: you can do it at any time [20:20] bingomanatee_: Doesn't Redis have a physical storage system and therefore also write to log? I am not a Redis expert but are the systems truly that different? [20:20] mikeal: you can do multi-server replication with other databases, MongoDB didn't fuckign invent it [20:20] blowery: bingomanatee: having seen a lot of businesses in action, i wouldn't say always :D [20:20] mikeal: Redis writes to an append-only log, yes [20:20] technoweenie: what about people in real america managing real data for real mom and pop sites [20:20] mikeal: technoweenie: exactly [20:20] blowery: technoweenie: real americans don't need computers [20:21] mikeal: normal people don't run 3 production servers with failover [20:21] mikeal: hell, MongoHQ doesn't do it! [20:21] bingomanatee_: so - and I'm not trying to win an argument , I really wan tto know - what is the differences between Redis' approach to memory/physical storage and mongo's? [20:21] mikeal: it's very very different [20:21] dgathright has joined the channel [20:21] technoweenie: redis has 2 approaches: bgsave (fork and flush to disk) and append log [20:21] mikeal: so, MongoDB doens't keep all data in memory always [20:21] mikeal: they just takes writes in to memory and do some caching [20:21] jimt has joined the channel [20:22] mikeal: redis is ALL in memory with an append-only log for persistence between reboots [20:22] nejucomo has joined the channel [20:22] mikeal: MongoDB is not append-only, it writes in place and if it fails mid-write that section of the db is just corrupt [20:22] bingomanatee_: Thats a fair point. [20:22] bingomanatee_: CouchDB uses a similar append only strategy doesn't it? [20:23] mikeal: CouchDB is all append-only on-disc with no in memory cache [20:23] bingomanatee_: interesting [20:23] mikeal: it lets the kernel handle any fs caching [20:23] mikeal: some caching is coming in the next release [20:23] mikeal: i think 1.1 has a small cache for the inner-btree node offests [20:23] Ezku\: mikeal: redis is getting a new engine that reverses the situation with memory and persistence [20:24] SubStack: ACTION needs to port the browserling backend dbs to couchdb here eventually [20:24] mikeal: i'm skeptical about a lot of the Redis roadmap [20:24] bingomanatee_: So - and I'm thinking of the "clumsy janitor" scenario - if someone unplugs the server which model is more likely to lose more data - mongo or Redis? [20:24] mikeal: it's starting to drift away from their use case [20:24] bingomanatee_: I realise this is edge case but still. [20:24] bsdguru has joined the channel [20:24] mikeal: Mongo *will* [20:24] mikeal: if it's writing to disc, it will corrupt [20:24] bmizerany has joined the channel [20:24] SubStack: fortunately the 'models' are just dnode services so it should be super simple once I wrap my head around couch [20:25] mikeal: with Redis, you might lose the last write that is being fsync'd [20:25] djanowski: any zombie.js contributors? [20:25] mikeal: but it'll come right back up [20:25] mikeal: couchdb stores JSON [20:25] bingomanatee_: That is good to know. [20:25] mikeal: by key, with a revision [20:25] mikeal: it's uber simple [20:25] mikeal: views get a little tricky cause you have to learn some map/reduce [20:26] genbit has joined the channel [20:26] mikeal: but the datastore part couldn't be simpler [20:26] SubStack: key/value is pretty damn nice [20:26] bingomanatee_: Can you index by field in CouchDB? [20:26] gnrfan has joined the channel [20:26] bingomanatee_: or redis? [20:26] mikeal: you just write a map/reduce that indexed that filed [20:26] charlenopires has joined the channel [20:26] mikeal: map/reduce in CouchDB actually writes the index to disc and updates it on read [20:26] mikeal: so it's not run across the whole datastore on every read like Riak and Mongo [20:27] bingomanatee_: Thanks a lot. [20:27] technoweenie: different use cases [20:27] rburhum has joined the channel [20:27] technoweenie: though i wish riak had couchdb style map/reduce too [20:27] mikeal: Redis has datastructures that will help you do that kind of indexing, but if you're thinking about key indexing you're probably not thing in redis [20:27] bingomanatee_: I'm just getting into NoSQL so this kind of information is really useful to me. [20:27] mikeal: s/thing/thinking [20:27] mikeal: technoweenie: everyone does [20:27] Me1000 has joined the channel [20:27] mikeal: but, they just shipped full text indexing [20:27] mikeal: that is really nice [20:28] skampler: riak has full text indexing? [20:28] mikeal: and solves a lot of the complaints people had with only having map/reduce [20:28] mikeal: yup [20:28] mikeal: latest version [20:28] technoweenie: theres a separate riak search product that includes the riak k/v shit [20:28] tapwater has joined the channel [20:28] technoweenie: so if you just upgrade riak k/v you wont see it [20:28] mikeal: oh i see [20:28] isaacs has joined the channel [20:30] dtrasbo has joined the channel [20:30] mikeal: CouchDB has a lucene plugin for full text [20:30] mikeal: totally works but not as nice as the new Riak stuff [20:30] mikeal: but, CouchDB has badass Geo Spatial support [20:33] masahiroh has joined the channel [20:33] jtrally: so does Mongo [20:34] aconbere has joined the channel [20:34] mikeal: no, it doesn't [20:34] mikeal: it's a geohash [20:34] mikeal: you can't do much with it [20:34] mikeal: GeoCouch is a full rtree [20:34] bingomanatee_: Sure you can. The citizens of my flat world adore it and store all their location data with Mongo. [20:34] bingomanatee_: It helps keep them off the edges [20:34] jtrally: hah [20:35] mikeal: all you can store is point data [20:35] mikeal: and do box queries [20:35] mikeal: you can't store geometries [20:35] bingomanatee_: or radial queries. [20:35] mikeal: you can't search based on geometries [20:35] bingomanatee_: Of course its a "radial" query [20:35] dmcquay has joined the channel [20:35] jtrally: yeah the new version will support that. [20:35] mikeal: you should look at some of the stuff max ogden has done with geocouch [20:35] sveimac has joined the channel [20:35] djanowski has joined the channel [20:36] bingomanatee_: I know a guy whose whole business model is geodata - he presented to PHP meetup in SF. [20:36] mikeal: this is geocouch [20:36] mikeal: http://www.pdxapi.com/preview.html [20:36] bingomanatee_: I think if Geo was my space I'd just use a guy like that. [20:36] saikat has joined the channel [20:36] mikeal: the really cool stuff is working with line data [20:36] bingomanatee_: He stores polys and everything. [20:37] mikeal: honestly, if you're serious about geo [20:37] bingomanatee_: that is pretty sweet. [20:37] mikeal: you either use PostGIS or something proprietary [20:38] jchris has joined the channel [20:38] mikeal: GeoCouch is awesome but it's still playing cachtup to PostGIS in terms of featureset [20:38] bingomanatee_: I know for a fact that PDX has more cats than hes showing [20:38] lightharut has joined the channel [20:38] mikeal: hahaha [20:38] wilken has joined the channel [20:38] mikeal: i think that's a user contributed dataset of lost or found cats [20:38] SubStack: gis! I've done some of that. [20:38] mikeal: and it's kind of languished [20:39] saikat__ has joined the channel [20:39] mikeal: the food cart data is also user contributed but it's really up to date [20:39] hunterloftis has joined the channel [20:39] mikeal: looking at the food cart data makes me jelous [20:39] hunterloftis: File uploads: all into one /uploads folder or break into /uploads/userhash - thoughts, comments? [20:40] SubStack: hunterloftis: are filenames randomized when you store them? [20:40] hunterloftis: SubStack: yeah all files are a uuid, so we're not worried about collisions [20:41] SubStack: I guess it depends on if you already have nice metadata for the files then [20:41] hunterloftis: SubStack: Yeah the metadata isn't an issue, we can get all the information from our db [20:41] bingomanatee_: mikeal - what is the node API for couch like? [20:42] SubStack: well I vote usrhash anyway [20:43] SubStack: only because I don't like looking at too many files in the same directory [20:43] hunterloftis: SubStack: Yeah that's one of our considerations... but how often will we be looking at them? And it will be marginally easier to code without usrhashes [20:45] bingomanatee_: <--- looking forward to PORTLANDIA on IFC with Fred Armisen - "Its where young people go to retire!" [20:48] KrisJordan: is the 0.3.x branch 'unstable' as in API / runtime / all of the above [20:52] jbpros has joined the channel [20:54] amerine has joined the channel [20:54] bsdguru_ has joined the channel [20:55] ryah: KrisJordan: api [20:55] ryah: you should use it though, if you're developing a new app [20:55] KrisJordan: @ryah are there specific api's in 0.3 that are heavily volatile [20:55] bingomanatee_ has joined the channel [20:56] ryah: KrisJordan: tls, https, debugger api [20:56] KrisJordan: cool, thanks [20:57] nejucomo has joined the channel [20:57] pdelgallego__ has joined the channel [20:57] pdelgallego has joined the channel [20:57] pdelgallego_ has joined the channel [20:58] djanowski has joined the channel [20:58] pekim: The announcement for npm version 0.2.14 touted tab completion. I can't get any tab completion in npm. For example I type "npm upd" then TAB, expecting it to offer, or complete, to "npm update". But nothing. What am I missing? [20:58] possibilities has joined the channel [20:59] isaacs_ has joined the channel [20:59] Aikar: why do i get "npm ERR! Error: no package to load defaults from!" randomly on trying to uninstall stuff? [21:00] Aikar: google has no results on that error :/ [21:00] previsuals: whats the correct call do require socket.io? i've tried var io = require('socket.io') but i get undefined. [21:00] CIA-121: node: 03Mihai Călin Bazon 07master * r0853730 10/ src/node.js : realpath files during module load - http://bit.ly/hVkrqJ [21:01] nejucomo1 has joined the channel [21:01] ryah: pekim: you problem have to source some bash file... [21:01] ryah: s/problem/probably/ [21:01] ryah: isaacs--^ ? [21:01] Aikar: isaacs: any idea on my error? [21:01] previsuals: and i know i have socket.io installed [21:03] ryah: previsuals: that's the usual way [21:03] ryah: > require.resolve('socket.io') [21:03] ryah: '/home/ryan/local/node/lib/node/socket.io/index.js' [21:03] pdelgallego_ has joined the channel [21:03] previsuals: ryah: hrm… ok thx [21:04] broofa has joined the channel [21:04] hansek has joined the channel [21:07] matjas has joined the channel [21:07] cafesofie has joined the channel [21:08] previsuals has left the channel [21:08] montylounge has joined the channel [21:10] possibilities: Anyone know what the default admin password is on a no.de smartmachine? Docs imply I should know it but it's not in the email I received and it's not the same as my Joyent login. [21:10] pekim: ryah: Yes, now you mention sourcing, a search enabled me to find that it's npm-completion.sh that I need to source. Thanks. [21:11] vineyard has joined the channel [21:11] isaacs: Aikar: drop the npm-completion.sh into /usr/local/etc/bash_completion.d if you have it, or just source it in your .bashrc or whatever. [21:12] isaacs: possibilities: if you're having trouble ssh-ing in, contact support. [21:12] stephank: possibilities: I believe you always upload a public key? Do they even enable password login? [21:12] piscisaureus: ryah: https://gist.github.com/768988 - polish path.resolve docs a little, add "cd" example as proposed by isaac [21:12] isaacs: possibilities: you shouldn't need a password. [21:12] piscisaureus: If have already seen this, sorry to bug you again [21:12] possibilities: i can ssh into the node account, but not admin [21:12] possibilities: w/ key [21:12] isaacs: piscisaureus, ryah: I +1 that [21:12] isaacs: possibilities: you don't get admin rights on them. [21:12] isaacs: possibilities: just node@whatever.no.de [21:13] possibilities: ah, cool, ok, the docs refer to changing admin and root passwords [21:13] isaacs: possibilities: those are docs for "regular" smartos smartmachines [21:13] possibilities: ah, got it, thank you [21:13] isaacs: possibilities: the no.de machines are more like an appliance. the node@ user can do anything you need to do. which should basically just be starting a node program. [21:14] isaacs: possibilities: if you git push as that node user to node@hostname.no.de:repo, then it'll rebuild and restart the service. [21:14] piscm has joined the channel [21:15] possibilities: it determines how to start the app from package.json? [21:16] pekim: isaacs: Regarding npm completion. Thanks. It's working now. As a matter of interest where is this documented? I'm interested to know where I didn't look. [21:16] aconbere has joined the channel [21:16] peteatolia has joined the channel [21:16] ryah: isaacs: where do i find npm-completion.sh? [21:17] ryah: nm [21:18] isaacs: pekim: npm help completion [21:18] isaacs: oh, i guess that doens't actually tell you where it is, huh? [21:18] isaacs: how lame of me *^_^* [21:19] isaacs: oh, i guess it does mention that you can do `npm explore npm pwd` [21:19] pekim: Ah, yes, I see it now, in the many sections, when I do 'npm help'. [21:19] nejucomo has joined the channel [21:20] isaacs: pekim: i'm still not sure exactly how to go about making bash-completion scripts part of the installation [21:20] isaacs: pekim: i could just have it be yet another *root configuration param, but i don't know... seems hacky [21:21] isaacs: and i'm never sure if it should be /etc/bash_completion.d or /opt/local/etc/bash_completion.d or /usr/local/etc/... etc [21:21] pekim: isaacs: Could 'nave use' do the sourcing if it finds npm installed? That doesn't help the pure npm case though. [21:21] ryah: 1 ~/projects/node (master) # find /home/ryan/local/node/lib/node/npm | grep bash [21:21] isaacs: yeah, nave could be smart about that, i guess [21:21] ryah: 1 ~/projects/node (master) # [21:22] isaacs: find /home/ryan/local/node/lib/node/npm | grep npm_completion.sh [21:22] ryah: 1 ~/projects/node (master) # find /home/ryan/local/node/lib/node/npm | grep completion [21:22] ryah: 1 ~/projects/node (master) # [21:22] isaacs: ryah: oh, it's not in there. [21:22] isaacs: it's in lib/node/.npm/npm//package [21:22] isaacs: lib/node/npm is just the folder with the node modules. [21:22] ryah: suck that i have to source a particular version [21:23] isaacs: ryah: yeah, agreed. [21:23] isaacs: i don't have a good solution for that. i just drop the file directly into my bash_completion.d [21:23] isaacs: ryah: i guess i could list it as a bin or something [21:23] isaacs: then you could source /home/ryan/local/node/bin/npm_completion.sh [21:24] bartt has joined the channel [21:24] bingomanatee_: Hey how is Node at parsing XML at this point?' [21:24] ryah: bingomanatee_: not very good [21:24] bingomanatee_: sfraid of that. [21:24] ryah: unfortunately [21:24] bingomanatee_: Not many use cases eh? [21:25] kriskowal: what's the status of the tty module in 3.3? [21:25] ryah: kriskowal: fun extra [21:25] bingomanatee_: All those kids with their chumbys and their JSON, just don't get how we gen-Xers rolled. [21:25] ryah: kriskowal: :) [21:25] kriskowal: does it work? [21:25] bingomanatee_: WHERE'S MY PARADE? [21:25] trotter has joined the channel [21:25] ryah: kriskowal: yes [21:25] kriskowal: doesn't seem to be finished to me. [21:26] kriskowal: ah, okay. got a usage example somewhere? [21:26] kriskowal: (i have need of it) [21:26] jashkenas has joined the channel [21:26] kriskowal: was writing opentty bindings myself, ran into trouble. [21:27] ryah: kriskowal: https://gist.github.com/45252f475a63e8bffe21 [21:27] kriskowal: ah, i see. thanks [21:27] lukegalea has joined the channel [21:27] kriskowal: i'll get back to you when i have something kick-ass [21:27] hornairs has joined the channel [21:28] ryah: kriskowal: i hope you're making an html5 pty [21:28] kriskowal: i am [21:28] kriskowal: it's half done [21:28] ryah: sweet [21:28] ryah: how are you doing it? [21:28] ryah: i mean what are you using client side? [21:28] kriskowal: socket.io and i ported parts of the ajaxterm vt100 emulator. [21:29] ryah: you should handle window resizes [21:29] muhqu has joined the channel [21:29] kriskowal: i have it set up to do echoing on no.de and it works pretty well so far in chrome and ff4 [21:29] kriskowal: i already do :P [21:29] isaacs has joined the channel [21:29] ryah: oh, good [21:29] kriskowal: i'll need to feed them back into the tty though [21:29] kriskowal: which means i'll need an ioctl for winsize [21:29] ryah: yeah [21:30] ryah: i haven't got that far yet [21:30] ryah: but i have similar goals [21:30] RevoOf has joined the channel [21:31] balaa has joined the channel [21:31] RevoOf: hi. is creating a node smartmachine (with a coupon code) free on joyents servers? [21:32] KyleXY has joined the channel [21:32] Aikar: tjholowaychuk: why does the npm version of express do , router = require('connect/middleware/router'); when the website/sh install does require('connect').router? [21:32] davida has joined the channel [21:33] tjholowaychuk: Aikar: same thing [21:33] Aikar: oh hmm it exists on npm folder path [21:33] tjholowaychuk: but where does it do that? [21:33] tjholowaychuk: connect.router is just a shortcut [21:33] KyleXY has joined the channel [21:33] Aikar: i was trying to extract the contents of /active/package/ to be just /module/ but that blew up since /express/active/package/ does not have a middleware folder [21:34] pedrobelo has joined the channel [21:34] tjholowaychuk: hm [21:35] Aikar: want to put any modules installed through npm into my projects SVN, but symlinks arnt so friendly for SVN/windows so i wanted to extract the base plain library out [21:35] tjholowaychuk: ew svn [21:35] tjholowaychuk: lol [21:35] tjholowaychuk: cant help you there [21:36] Aikar: its my first week here, i dont think 'convert all your SVN servers to git' is a good first week request haha [21:36] tjholowaychuk: haha [21:36] tjholowaychuk: id do it [21:36] davidc_ has left the channel [21:36] Aikar: well i got same manager as last job so its not like id get fired for saying it, but he doesnt have any say in the matter either, id just get laughed at :p [21:37] pedrobelo has joined the channel [21:38] tjholowaychuk: i couldnt work with svn, i would just quit [21:38] mgutz: LOL [21:38] fumanchu182: tjholowaychuk, it is funny you mention that i know some people that wouldn't commit because it was svn [21:38] fumanchu182: they pretty much stalled the dev environment and were canned... [21:38] technoweenie: rockstars can just quit and find/make another job [21:39] tjholowaychuk: cvs is worse [21:39] fumanchu182: That's a pretty big statement right there... [21:39] technoweenie: i migrated a company from visual source safe to svn once, that was fun [21:39] tjholowaychuk: at least svn has that [21:39] nonnikcam has joined the channel [21:39] fumanchu182: I use HG, I find mercurial pretty damn cool. [21:39] fumanchu182: Integrates with Netbeans and terminal no problem. [21:39] KrisJordan: VSS was a pain [21:39] tjholowaychuk: i almost went with mercurial before git [21:39] fumanchu182: visual source safe? I didn't think anyone used that. [21:39] tjholowaychuk: github made me go with git actually [21:39] tjholowaychuk: glad I did [21:39] wink_: technoweenie: try starteam to svn, keeping commit history [21:40] wink_: ACTION shudders [21:40] KrisJordan: microsoft did [21:40] mgutz: i did the same technoweenie, they fought me tooth and nail to switch from sourcesafe to svn, i didn't even bother convinging them about git [21:40] fumanchu182: KrisJordan, yeah and look at them now :) [21:40] pedrobelo has joined the channel [21:40] technoweenie: mgutz: yea it was easy to convince them when vss blew up and we lost some data [21:40] KrisJordan: and team foundation server - also poor [21:41] fumanchu182: the only gripe i had with svn was the event hooks, could never get them to work right w/o having permission issues on any box i worked on... [21:41] mgutz: the only agreed after we purchased visualsvn or w/ever it was for Visual Studio [21:41] SubStack: just start using git anyway and then brew some hack up to push changes from your git server out to whatever svn or cvs thing people are using [21:41] mgutz: most MS developers can't do anything outside of Visual Studio [21:42] jpick has joined the channel [21:42] SubStack: I can't really do anything outside of a shell [21:42] mgutz: i thought git had an SVN facade? [21:43] tjholowaychuk: mgutz: i think so [21:43] tjholowaychuk: i havent used it [21:44] derferman has joined the channel [21:44] pekim: isaacs: I found "10 Cool Things You Probably Didn’t Realize npm Could Do" when I was searching for info about npm tab completion earlier. Just read it (all 13 cool things). Great post. I wish I'd come across it a little sooner. [21:44] isaacs: pekim: thanks [21:44] isaacs: pekim: i need a tech writer [21:45] isaacs: or maybe just compile the npm documentation into a book or something [21:45] hornairs has joined the channel [21:45] isaacs: maybe for 1.0.0 [21:47] SubStack: minions [21:47] pekim: isaacs: All the info seems to be there in the docs, it's just that when you start out with npm you don't realise all of what's there. It's the classic, you don't know what you don't know. [21:47] isaacs: right [21:47] isaacs: There's a special place in teh contributors list and changelog for anyone who wants to renovate the docs [21:48] Ond has joined the channel [21:49] springify has joined the channel [21:50] bentruyman has joined the channel [21:53] bingomanatee__ has joined the channel [21:55] jchris has joined the channel [21:57] nejucomo1 has joined the channel [21:57] thotypous has joined the channel [21:58] rafaelmartins has joined the channel [21:59] mgutz: is there a way to update file stats in node? specifically atime and mtime? [21:59] markwubben has joined the channel [21:59] Hello71 has joined the channel [21:59] isaacs has joined the channel [21:59] sechrist: touch? [22:00] sechrist: or do you mean with spoofed values? [22:00] mgutz: don't see touch in node api [22:00] dgathright has joined the channel [22:00] sechrist: I don't know if that syscall if bound -- but that's probably what you want [22:01] mgutz: im trying to write touch in my FileUtils library [22:01] mgutz: without exec [22:03] sechrist: unless there's some other way that I'm not aware of, you might just have to bind it in little C lib [22:03] sechrist: node has a ton of file system methods though -- I find it a little odd that touch isn't there already [22:04] benburkert has joined the channel [22:05] sudoer has joined the channel [22:09] fumanchu182: do all callbacks or closures in javascript use late binding? [22:10] sriley_ has joined the channel [22:10] dgathright has left the channel [22:11] AAA_awright: fumanchu182: Uh, ECMAScript/Javascript doesn't use classes or anything like that, what do you mean exactly? [22:11] overthemike has joined the channel [22:11] overthemike has left the channel [22:12] fumanchu182: AAA_awright, I was not aware of that, I was just reading something on php.net and I guess I blended the two languages together, now that I know that the question is moot. [22:13] aconbere has joined the channel [22:13] jbpros has joined the channel [22:14] AAA_awright: fumanchu182: I guess it would be equivalant to dynamic binding, but that's not really what it is, ECMAScript falls back onto calling another method if the given one doesn't have it defined, or something like that [22:14] AAA_awright: Get cozy with the ECMA spec and read up on prototypes [22:15] adambeynon has joined the channel [22:15] fumanchu182: Yeah I learned the difference from dynamic scoping vs lexical scoping thanks to node.js [22:15] sechrist: will any of that ecma harmony stuff be used? [22:15] fumanchu182: I am just psyched about this whole thing, it makes working with the web fun again. [22:16] sechrist: I mean part of javascript's power is that it's implemented everywhere [22:16] sechrist: adding stuff onto the spec kind of ruins it [22:16] sechrist: because it'll never work in browsers that people have to support [22:16] fumanchu182: have a good weekend people [22:16] fumanchu182: ! [22:16] springmeyer has joined the channel [22:17] sechrist: now -- coffeescript is a good exception because it compiles into ecmascript that is widely supported [22:17] jameshome has joined the channel [22:17] jameshome has left the channel [22:17] tjholowaychuk: sechrist: syntax-wise yeah [22:18] tjholowaychuk: we could use some other features though [22:18] tjholowaychuk: proxies n whatnot [22:18] jpick has joined the channel [22:18] CrypticSwarm has joined the channel [22:20] ossareh has joined the channel [22:20] mikew3c_ has joined the channel [22:22] sriley_ has joined the channel [22:24] benburkert has joined the channel [22:24] blueadept_work has joined the channel [22:24] EyePulp has joined the channel [22:25] tk has joined the channel [22:25] bartt has joined the channel [22:26] sechrist: tjholowaychuk: but you don't want a python-like problem [22:27] sechrist: where python 3 exists but nobody uses it [22:27] mdoan has joined the channel [22:27] tjholowaychuk: yeah [22:27] tjholowaychuk: some features can exist within v8 and still be helpful on the server though [22:27] tjholowaychuk: not everything HAS to run in the browser as well [22:27] sechrist: javascript might be the one language that outlines normal popular lifespan of programming languages [22:28] sechrist: outlives* [22:28] perlmonkey2 has joined the channel [22:29] mikeal has joined the channel [22:30] isaacs_ has joined the channel [22:31] matjas has joined the channel [22:31] x_or has joined the channel [22:32] sveimac has joined the channel [22:33] Kingdutch has joined the channel [22:33] Kingdutch: Woooh :D Another awesome channel on Freenode [22:33] Kingdutch: hi all [22:33] eee_c has joined the channel [22:34] bingomanatee_: question - I am trying to create a delayed action for a repo that takes a while to connect https://gist.github.com/770234 [22:35] bingomanatee_: will the function in the getInterval associate itself with the record being inserted via closures, or will this fail? [22:37] kriskowal: anyone on no.de know where to look to switch the node version for the node-service? [22:38] kriskowal: oh, config.json… [22:38] common has joined the channel [22:38] Yuffster_work has joined the channel [22:38] common: how to create arrays like struct foo { char bar[8]; }; with node-ffi? [22:39] common: while I can create a struct [22:39] common: I have not figured out yet how to create an array of a given type [22:40] Kingdutch: common, you tried char[8] bar? [22:40] sveimac has joined the channel [22:40] Kingdutch: As in the type is a character array of 8 chars (char[8]) named bar [22:41] common: actually not [22:41] common: let me check [22:42] common: does not work [22:42] common: size gets NaN [22:42] Kingdutch: Do you even need to specify a js type? [22:42] Kingdutch: I thought it was just [22:42] Kingdutch: var bar; [22:42] Kingdutch: bar[0] = 1 [22:42] Kingdutch: bar[5] = 2 [22:43] Kingdutch: size = 2 (key 0 and 5 are set) [22:43] Kingdutch: or something like that [22:43] common: http://p.carnivore.it/TOooeg [22:43] common: node-ffi [22:43] common: like ctypes for python [22:44] common: only difference so far, pythons ctypes can do arrays [22:44] Kingdutch: Never did python, I grew up with perl lol [22:44] zorzar_ has joined the channel [22:44] Kingdutch: Normal (As in browser) JS is just var bar = new Array(); [22:44] Kingdutch: But yeh, there, Array is a class/object [22:44] common: ffi is a wrapper [22:44] common: you define the structures and prototypes for functions [22:44] common: and call native api [22:45] Kingdutch: right yeh, just getting into node, haven't looked at ffi yet [22:45] bingomanatee_: Kingdutch - regardless of whether you HAVE to I would suggest that var bar = {} or var bar = [] is a little better self-documenation [22:45] ckundo has joined the channel [22:46] Kingdutch: bingomanatee_: I agree, but it was just as example [22:46] bingomanatee_: you are familiar with REPL no? [22:46] bingomanatee_: You can test these things by calling node at console without a file to process [22:46] Kingdutch: No [22:46] bingomanatee_: > node [22:46] bingomanatee_: and real time interact with JS till you're drained. [22:46] Kingdutch: Anyway common: In the examples I see arrays of values being passed in: [ "Value1" , "value2" ] [22:47] svens_ has joined the channel [22:47] Kingdutch: So I'm gonna put my finger on var arr = [ "Val1", "val2" ]; [22:47] Kingdutch: If your debugger says that's size NaN then your debugger doesn't like arrays? :X [22:47] stagas has joined the channel [22:47] bingomanatee_: BTW it failed that test - if you don't assign a variable a value its undefined even if you "var" it. [22:49] Kingdutch: anyway, nearing midnight, and I've got to get up at 7 AM (On a saturday -.-') So I'll auto-join tommorow :) [22:49] Kingdutch: Good night [22:49] common: Kingdutch look at the example code I pasted, and figure out you are completely wrong with all your assumptions yet [22:49] Kingdutch: common: Yeh, that example code doesn't make an ounce of sense to me, so so far for my JS knowledge I guess [22:51] jameshome has joined the channel [22:51] jameshome has joined the channel [22:52] riven has joined the channel [22:55] JusticeFries has joined the channel [22:55] MikhX has joined the channel [22:58] Gruni has joined the channel [22:58] seancribbs has joined the channel [22:59] bingomanatee_: night [23:00] isaacs has joined the channel [23:01] bartt1 has joined the channel [23:01] nejucomo has joined the channel [23:01] bartt2 has joined the channel [23:03] jameshome has joined the channel [23:04] bingomanatee_: so questiopn on setInterval [23:04] bingomanatee_: If you setInterval(function(){console.log(foo); }, 500) [23:04] bingomanatee_: will it remember the "foo" from your local context through closure [23:04] bingomanatee_: or will it look for foo only in the global context? [23:04] kriskowal: yes [23:04] EyePulp: anyone have a favorite method for node deployment? Our project includes a mixture of github & bitbucket repos in it. [23:05] kriskowal: bingomanatee_ it will look up foo in your scope chain every iteration. [23:05] bingomanatee_: so if you setInterval in the context of a function it will remember all the locals from that function even after the function call is done? [23:06] bingomanatee_: EyePulp: npm is pretty much the gold standard for node deployment isn't it? Normal people like me prob. use git tho :D [23:07] dgathright has joined the channel [23:07] jameshome has left the channel [23:08] EyePulp: bingomanatee: I thought npm was purely a centralized package manager for node modules. I can use it for some things, but I guess I'm thinking about broader issues, e.g. a scripted deployment solution to tie in everything, not just pulling individual modules. [23:09] airhorns has joined the channel [23:09] bingomanatee_: I'm not that qualified to answer TBH but I believe npm has a lot of hooks for scripts et all. [23:10] sudoer has joined the channel [23:10] isaacs: yes, npm has plenty of hooks [23:12] JimBastard has joined the channel [23:12] jashkenas has joined the channel [23:13] bingomanatee_: BTW for those curious - yes setInterval respects closure as in https://gist.github.com/770283 [23:13] bingomanatee_: npm is quite powerful. Too bad that as the name suggests it only works in the afternoon., [23:17] Hello71 has joined the channel [23:17] Hello71 has joined the channel [23:19] stagas has joined the channel [23:20] dida has joined the channel [23:22] saikat has joined the channel [23:23] bartt has joined the channel [23:23] sveimac has joined the channel [23:24] webr3 has joined the channel [23:25] JimBastard: bingomanatee_: is this thing on? [23:25] JimBastard: rough crowd [23:26] x_or has joined the channel [23:27] rauchg_ has joined the channel [23:27] echosystm has joined the channel [23:28] Tim_Smart has joined the channel [23:30] isaacs_ has joined the channel [23:32] isaacs: bingomanatee: BEST BURN EVER. [23:32] isaacs: lolz [23:35] kriskowal: happy friday. socket.io ascii starwars running with joyent http://kriskowal.no.de/ :D [23:37] cainus: so it's streaming? :) [23:37] kriskowal: it's a telnet connection to towel.blinkenlights.nl [23:37] kriskowal: proxied by node [23:37] kriskowal: with the new tty code [23:37] cainus: which just went down (for me anyway) [23:38] kriskowal: yeh [23:38] echosystm: it seems to have stopped at a new hope [23:38] blueadept has joined the channel [23:38] kriskowal: yeh, it does that. i got as far as the jawas once [23:38] tjholowaychuk: omg lol [23:38] cainus: heheh [23:38] kriskowal: socket.io drops the connection eventually [23:38] tjholowaychuk: who has time for this [23:38] tjholowaychuk: crazyness [23:38] kriskowal: gotta do graceful reconnection. won't be too hard. [23:39] kriskowal: just gotta have the server keep the tty around for "just a few more seconds…almost there…" [23:39] liar has joined the channel [23:39] cainus: it's http 1.1 or websockets from my browser? [23:39] kriskowal: depends on your browser. socket.io does the work. [23:39] cainus: ah neeto [23:39] kriskowal: if you've got a websocket, it uses it [23:40] kriskowal: then it falls back to xhr transfer-encoding chunked mime/multipart in an iframe hackery [23:40] cainus: impressive [23:40] kriskowal: that should probably all be hyphenated [23:41] cainus: anyone capable of giving some RESTful design advice? I've got jpeg resource that I want to have some meta-data with it... should I do that as two content-types of one resource, or two resources? [23:41] bartt has joined the channel [23:42] echosystm: you could send the meta-data back as headers [23:42] echosystm: x-yourmetadatanamehere [23:42] echosystm: or cookies [23:42] cainus: naw I want to be able to just get it instead of aalways needing to get a big binary [23:42] echosystm: ok, put it in the query then [23:43] cainus: I'm talking about responses, not requests [23:43] cainus: for retrieving the meta data [23:43] echosystm: .com/images/x.jpg?meta [23:43] tg has joined the channel [23:43] cainus: meta-data is autogenerated [23:45] echosystm: you've lost me [23:46] echosystm: are you saying you want to use the accept header to determine whether to send metadata or binary? [23:46] stepheneb has joined the channel [23:46] cainus: yeah... jpeg or the json meta-data [23:46] cainus: VS. two different resources [23:47] pekim: kriskowal: re Starwars - Sometimes it's hitting "Uncaught RangeError: Invalid array length" in terminal.js at line 23. [23:47] echosystm: i wouldnt do two different resources, it unnecessarily complicates your uri scheme [23:47] kriskowal: is that what it is? that's cool. [23:48] pekim: I just happened to look in Chrome's console. [23:48] cainus: echosystm: client needs to really watch accept headers that way though [23:48] echosystm: i guess using the accept header is ok, but i would prefer to use a query [23:48] kriskowal: oh, weird. that's in the window size metrics code. not the first place i'd look for athat. [23:49] cainus: hmm I think accept header would be the restful way [23:50] echosystm: true [23:51] echosystm: it is the more... correct method [23:51] djanowski_away: cainus, echosystm: not following the convo but http://www.gethifi.com/blog/browser-rest-http-accept-headers [23:51] pekim: kriskowal: The error occurs when the viewport is resized, for example when I open the developer tools. :-) [23:51] davidascher has joined the channel [23:52] pekim: So I open the developer tools to nose around in the code, and first thing that that does is cause an error. [23:52] pekim: That'll teach me to be nosey. [23:52] kriskowal: hah [23:53] kriskowal: what browser? [23:53] pekim: Chrome [23:53] jamesarosen has joined the channel [23:53] kriskowal: k. i'll try to reproduce. [23:54] cainus: echo, dj: thanks guys... I have to go meditate on it :) [23:58] broofa_ has joined the channel