[05:52] nodelog has joined the channel [05:54] zab: hmm openssl is deprecated on the particular OS I'm on [05:55] zab: gives me ~900 warnings whenever i build node [05:55] Aria: ! [05:55] Aria: All of openssl is? Free software zealotry at work? [05:56] AAA_awright: Can you speak the name of particular OS? [05:56] zab: fruit company [05:58] joshthecoder has joined the channel [05:58] ryah: openssl is deprecated on osx.. uh [05:58] zab: lion... [05:58] Aria: Oh dear. [05:58] ryah: define "deprecated" ? [05:59] siculars: hmm... no openssl? that could be a ... problem [05:59] mikegerwitz: zab: in favor of what? :s [05:59] SubStack: o_O [05:59] zab: just checking headers now.. [05:59] ryah: seeing as All Software depends on openssl, i suspect your definition of 'deprecated' to not match the common definition [06:00] jimt has joined the channel [06:00] brianloveswords has joined the channel [06:00] AAA_awright: fruit company? [06:01] Andi__: In German you call it Saftladen [06:02] zab: 2667 [06:02] zab: try again: /usr/include/openssl [300:0]$ grep -Rns 'DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER' . | wc -l [06:03] zab: gives me 2667 [06:03] mrsrikanth has joined the channel [06:03] Aria: Ambitious, Apple! [06:03] dominic_ has joined the channel [06:04] zpao has joined the channel [06:05] JaMeSiTeGeN: Debuggables webserver is debuggable based on lighttpd? [06:05] jimt has joined the channel [06:05] pcardune has joined the channel [06:06] dsn has joined the channel [06:07] JaMeSiTeGeN: ryah: Just wondering, is node a set of api functions for v8 and the dom api being with the browser? [06:07] mikegerwitz: zab: Is it just your version of OpenSSL, possibly? I do not use a mac, so I'm unsure how they structure their updates [06:07] AAA_awright: JaMeSiTeGeN: What about the DOM? [06:07] JaMeSiTeGeN: in other words if v8 just the javascript or has it got DOM built in [06:07] Aria: Well, Lion is prerelease now. Might change. But ... that sounds a bit like Apple's style. [06:07] zab: mikegerwitz: this is a clean install. I'm using the shipping openssl. [06:07] Aria: "Go away code we don't like. You can't use it." [06:07] mikegerwitz: zab: Oh. Huh. Well they have some balls, then! [06:08] JaMeSiTeGeN: People does the following command seem more nicer? [06:09] JaMeSiTeGeN: v8jsengine --browser-usage ... js ... code .. [06:09] JaMeSiTeGeN: and [06:09] JaMeSiTeGeN: v8jsengine --server-usage ./node.js.code [06:09] JaMeSiTeGeN: v8 should be split into puprouces [06:10] AAA_awright: JaMeSiTeGeN: v8 is only the ECMAScript specification and maybe a few other things, but there's absolutely no DOM that's additional APIs on top of ECMAScript/Javascript defined by the W3C, ECMAScript is of course defined by ECMA International. [06:10] JaMeSiTeGeN: and cover javascript for all uses without dom and the server APIs [06:10] Aria: To get a DOM, you have to use phantom-js or jsdom. jsdom if you want Node [06:11] AAA_awright: Node.js is sort of misleading Javascript implies a DOM on top of ECMAScript [06:11] shaver: hardly [06:11] samcday: I completely disagree [06:11] AAA_awright: Or should I say "Node.js" the word [06:12] JaMeSiTeGeN: What I am getting at is, is the v8 JS engine a command-line tool? one that you can pass a variable for APIs and a file to run with those api functions [06:12] shaver: javascript shipped in the server within months of shipping in the browser [06:12] shaver: before ECMA had taken any interest in it (by years) [06:12] AAA_awright: JaMeSiTeGeN: Maybe you should read the V8 documentation? [06:12] samcday: ^^^^ [06:13] JaMeSiTeGeN: link? [06:13] samcday: ... [06:13] samcday: http://www.google.com/ [06:13] shaver: lmgtfy.com [06:13] AAA_awright: ^^^ [06:13] Aria: v8 the library can be compiled with a tiny wrapper to get the 'v8' commandline tool, or a larger wrapper called 'node' [06:13] JaMeSiTeGeN: humm how about a link to the v8 engine? [06:13] JaMeSiTeGeN: doc [06:13] samcday: http://www.google.com/ [06:13] shaver: have you tried looking for it? [06:13] JaMeSiTeGeN: Aria: Thanks, that clears it up a little [06:13] samcday: Speaking of stupid questions, I have one myself. Anyone know a reliable way to wrap an Array from V8? [06:14] AAA_awright: http://lmgtfy.com/?q=V8+documentation [06:14] Aria: Or a HUGE wrapper and GUI library called Chrome ;-) [06:14] JaMeSiTeGeN: so node is just using v8 with its own Js functions/APIs [06:14] samcday: And by wrap an Array I mean create an Object that is instanceof Array, and still acts like an array proper. [06:14] AAA_awright: It defines functions for Javascript yes [06:14] mikegerwitz: JaMeSiTeGeN: essentailly [06:15] shaver: samcday: ES5 doesn't provide a way to do that, really [06:15] samcday: *sadface* [06:15] samcday: I'm talking from C++ though [06:15] shaver: oh [06:15] samcday: Like, I created an ObjectTemplate and set prototype to be a new instance of Array [06:15] shaver: instanceof Array should be possible with the right prototype chain [06:15] samcday: But length doesn't increment properly [06:15] shaver: yeah, you'll need to add all that stuff directly to your class [06:16] samcday: Kinda defeats the purpose then [06:16] shaver: likely [06:16] JaMeSiTeGeN: I say v8 should have its own node-like plugin like v8-server and v8-browser and maybe even v8-application that would come in handy for writing gui apps that are fully cross platform as its not compiled. (source-code) [06:16] samcday: JaMeSiTeGeN: You mean Qt? [06:17] Utkarsh_ has joined the channel [06:17] samcday: Or GTK+/ [06:17] samcday: Or Swing? [06:17] Aria: 0r [06:17] Aria: or Cocoa. [06:17] shaver: you'll forgive me, JaMeSiTeGeN, if I take your "should" with a grain of salt, given that you couldn't even find its documentation without the assistance of several people :-) [06:17] samcday: lmao [06:17] samcday: The man has a point. [06:17] samcday: s/man/shaver [06:17] JaMeSiTeGeN: samcday: What I mean is javascript is crossplatform, and you should be able to code whole programs in javascript [06:17] shaver: you can [06:17] shaver: they're called web apps [06:17] samcday: JaMeSiTeGeN: It's called a web browser [06:17] mikegerwitz: you guys are brutal. Give him a break. [06:18] JaMeSiTeGeN: samcday: I mean programs not web-apps [06:18] Aria: The only problem is that there are no cross-platform UI libraries that aren't deeply limited. [06:18] JaMeSiTeGeN: more powerfull access to the file system and opengl [06:18] Aria: The UI libraries ARE the platform. [06:18] samcday: Fair call JaMeSiTeGeN, but you shoukld know [06:18] samcday: Both those things exist in HTML5 [06:18] shaver: like webgl and the DOM File API [06:18] bwlang has left the channel [06:19] samcday: WebGL, and Local File support. [06:19] samcday: Damnit shaver [06:19] JaMeSiTeGeN: humm, well html5 does remove many limmits but humm, good point [06:19] shaver: like, try https://mozillademos.org/demos/remixingreality/demo.html in a recent chrome or Firefox beta [06:19] samcday: (or IE9) [06:19] shaver: nope [06:19] samcday: Oh, did I say something? [06:19] samcday: >_> [06:20] shaver: some day, some day [06:20] JaMeSiTeGeN: but what I am getting at is a program like what you can get if you write it in c and python, etc a gui that works with the window manager [06:21] samcday: JaMeSiTeGeN: What it boils down to is, V8 is a Javascript virtual machine (in very simple terms). It is simply an engine that compiles javascript code to machine code and executes it. [06:21] samcday: What you're essentially saying right now is: "Woudln't it be nice if the JVM had a GUI library that allowed cross platform applications?" [06:22] JaMeSiTeGeN: Okay, so the whole idea of v8 is more or less a VM, then does that not mean that it can be exploited to run an OS written in js? [06:22] shaver: it could be [06:22] Aria: Sure [06:22] Aria: If you WANT that [06:22] Andi__: isn't there something like phonegap for normal OS? [06:22] samcday: You'd have to rewrite alot of V8 for that to happen, but yeah [06:22] JaMeSiTeGeN: Cool, :) [06:22] shaver: but it's like saying "I have GCC, what do I have to do to get GNOME?" [06:23] samcday: lol [06:23] JaMeSiTeGeN: Humm, one opengl-canvas and javascript, easy OS, I would start off with a bash like system to start off, anyone want to help?? :) [06:23] samcday: o.O [06:23] JaMeSiTeGeN: it would be quite fun and fast [06:23] Aria: Reinvent WebOS ;-) [06:24] samcday: Now all you need is a few thousand peopel to re-implement drivers in native userland javascript [06:24] samcday: Which would be interesting :p [06:24] JaMeSiTeGeN: Okay how long does it take to boot into a v8 js command line, somewhat like node alown with no file? [06:24] Aria: Not very long. [06:24] oninoshiko: a couple minutes... if that [06:24] shaver: once the operating system is booted? [06:24] oninoshiko: I did this last night [06:24] shaver: milliseconds [06:25] oninoshiko: (for the first time) [06:25] samcday: I love the optimism in this channel [06:25] JaMeSiTeGeN: What I mean is if you make v8 the kernel what long would it take to boot? [06:25] JaMeSiTeGeN: so not linux or bsd. [06:25] samcday: It's why I stick around [06:25] Aria: Depends. How long does your hardware take to initialize? [06:25] JaMeSiTeGeN: lol :) Ok [06:25] JaMeSiTeGeN: so somewhat instand [06:26] shaver: you could probably have it at the prompt within 200ms from when the hardware jumped to the OS instruction [06:26] JaMeSiTeGeN: instant* [06:26] Aria: Sounds right. You'd need to get it into core first, that'd be the worst of it. [06:26] JaMeSiTeGeN: shaver: Humm, instant boot. :) [06:26] mikegerwitz: JaMeSiTeGeN: I'm not sure v8 is qualified to act as a kernel. It's be easier to boot using a Linux, BSD, etc kernel then just run node. [06:26] samcday: JaMeSiTeGeN: You mean Chrome OS? [06:26] shaver: you might want to look at... dammit, samcday [06:27] samcday: WIN! [06:27] Aria: Yeah, you'd have to write drivers. Or integrate v8 into kernel mode linux ;-) [06:27] oninoshiko: instant boot isn't hard. forth has been able to do it forever [06:27] samcday: Did anyone else read that article about how Linux boots faster after a crash than it does normally? [06:27] Aria: Yeah, it's doing things right after that that are hard. [06:27] samcday: Journalling filesystems ftw [06:27] Aria: Yeah. [06:27] samcday: JaMeSiTeGeN, since you're allergic to Google: http://www.google.com/chromeos/ [06:28] jimt_ has joined the channel [06:28] Aria: Anyway. [06:28] oninoshiko: : goes bak to plying with node too [06:28] oninoshiko: back, playing [06:29] samcday: On a serious note, would anyone be interested in helping me finish writing bindings to libgit2? [06:30] JaMeSiTeGeN: chromos is linux, I want jsOS, no linux just pure JS [06:30] Aria: Good luck with that. [06:30] Aria: Have fun writing device drivers. [06:30] samcday: troll imo [06:30] oninoshiko: the wheel not round enough? [06:30] DTrejo has joined the channel [06:31] JaMeSiTeGeN: Power on, BIOS, JS drivers loading, JS-LOGIN-prompt, JS-commandline [06:31] JaMeSiTeGeN: oninoshiko: Nope [06:31] seivan has joined the channel [06:32] shaver: see also: http://twitter.com/#!/DEVOPS_BORAT/status/40169495523758080 [06:32] dominic_ has joined the channel [06:32] JaMeSiTeGeN: <10M ISO :p [06:33] oninoshiko: from what I understand, v8 depends on services provided by the OS, you would have to provide that. [06:33] shaver: yes, it likes to have things like malloc and file operations [06:33] JaMeSiTeGeN: Humm, compiled v8 with those dependencys included [06:33] JaMeSiTeGeN: ?? [06:34] samcday: Why are we still entertaining this lunacy lol [06:34] shaver: memory management is a little different in ring 0 [06:34] mikegerwitz: JaMeSiTeGeN: doesn't quite work like that : / [06:34] JaMeSiTeGeN: :( [06:34] oninoshiko: colorforth boots off less then 1m. it can be done, but you are still stuck writing drivers. [06:34] JaMeSiTeGeN: mikegerwitz: I can pull the required drivers from the linux kernel and rewrite it in js, if only js knew how to use it :?? [06:35] Aria: Don't forget rewriting v8 in javascript ;-) [06:35] samcday: Self hosting V8 [06:35] samcday: *froths at the mouth* [06:35] Andi__: JaMeSiTeGeN: of course, all async I/O [06:36] JaMeSiTeGeN: humm, good point, but I have rewritten perl in perl it only took many attempts :p [06:36] Andi__: And sh to js compiling [06:36] jesusabdullah: sh to js? [06:36] Aria: We could leave sh behind. [06:36] mikegerwitz: JaMeSiTeGeN: There'd be no point in rewriting the drivers in JS. It'd still have to be compiled to machine code in order to run; those cannot be interpreted by v8 because the drivers must be loaded prior to v8. [06:37] shaver: they could be AOT compiled by v8 [06:37] Andi__: As bonus feature, to make transition more convenient [06:37] shaver: like the snapshots they already do [06:37] JaMeSiTeGeN: simple listen on stdin and output on stdout and one large switch :p [06:37] DTrejo: css transitions? [06:37] bastilian_ has joined the channel [06:37] shaver: (system libraries, etc.) [06:37] jesusabdullah: Are youg guys talking about making js machines? [06:37] JaMeSiTeGeN: css, why not just opengl? [06:37] shaver: JaMeSiTeGeN: your perl-in-perl project is interesting; where can I learn more? [06:38] ngs has joined the channel [06:38] samcday: I think I like the sound of JaMeSiTeGeN's idea though. Imagine a world of BASH powered by CSS transitions. [06:38] shaver: writing the GL drivers in JS will be a publishable result, I think [06:38] Andi__: CSS to OpenGL compiling [06:38] oninoshiko: there isn't a stdin and stdout without a the kernel. [06:38] Andi__: I mean other way round [06:38] JaMeSiTeGeN: shaver: Humm, I don't know how to say this but I just installed lmde over my previous install and lost what I had, it was quite good, but the regExp was brocken [06:38] hornairs has joined the channel [06:39] shaver: oh, I'm sorry to hear that [06:39] shaver: you must have been crushed :-( [06:39] shaver: no backups, eh? [06:40] samcday: www.dropbox.com [06:40] shaver: github.com [06:40] okuryu has joined the channel [06:40] samcday: imagebucket.com [06:40] shaver: yourmom.com [06:40] samcday: HIPS sourcecode! [06:40] shaver: (/upload) [06:40] samcday: That, too [06:40] samcday: I'm scared to click that link [06:40] samcday: Yeah ok, I clicked it. It's just a linkfarm landing page. [06:41] JaMeSiTeGeN: It was not that big, it was quite easy, but it was a pain to build, when you want syntax changes, (Write the code in the prev syntax, compile it, rewrite it again in that syntax, compile again, and Test, on fail revert to prev version :p) [06:41] samcday: Somewhat disappointed I didn't see shaver's mother there ... ;( [06:42] JaMeSiTeGeN: shaver: ^^ my last post.. [06:42] JaMeSiTeGeN: shaver: It was not that big, it was quite easy, but it was a pain to build, when you want syntax changes, (Write the code in the prev syntax, compile it, rewrite it again in that syntax, compile again, and Test, on fail revert to prev version :p) [06:43] JaMeSiTeGeN: That worked :) [06:43] shaver: what did you generate from the compiler? [06:44] JaMeSiTeGeN: I used the compiled c compiler to compile the original perl to a commandline, and then extended it to compile its self :) Quite painful but does work :) [06:44] JaMeSiTeGeN: does -> did [06:44] JaMeSiTeGeN: lost the lot [06:45] Aria: Good with code. Bad with computers. [06:46] seivan: So ehm. using express, anyway to skip renderers and use json directly? [06:46] Aria: seivan: req and res inherit from the node http stuff. Just use it. [06:47] JaMeSiTeGeN: And the only reason I don't have backups is I acdently sent the last tarball of it to the drive directly and not to the files, so somewhat the same output of `cat perl-in-perl.tgz > /dev/sdd` and That device drowned in the washing machain :( [06:47] JaMeSiTeGeN: shaver: ^^ [06:47] shaver: I'm glad this channel is logged [06:47] JaMeSiTeGeN: why? [06:47] shaver: otherwise I'm going to remember this conversation tomorrow morning and wonder if I had accidentally put acid in my burrito [06:47] samcday: mmm ... burrito [06:48] jakehow has joined the channel [06:48] JaMeSiTeGeN: lol [06:48] JaMeSiTeGeN: why? [06:48] mekazu has joined the channel [06:48] oninoshiko: mmm... Lysergic Acid Diethylamide [06:49] farhadi has joined the channel [06:49] JaMeSiTeGeN: Humm, I want linux-in-(js-in-js) [06:49] JaMeSiTeGeN: Humm :) [06:49] JaMeSiTeGeN: with bash built in :) [06:49] mekazu has joined the channel [06:49] JaMeSiTeGeN: well bash-like [06:50] JaMeSiTeGeN: shaver: ^^ [06:50] JaMeSiTeGeN: Anyone want to attempt to write js in js and then try to re-write linux in that js [06:50] JaMeSiTeGeN: ?? [06:50] samcday: You is trollin'. [06:51] hueniverse has joined the channel [06:51] shaver: the closest thing to JS-in-JS is narcissus, AFAIK [06:51] jesusabdullah: That sounds like a terrible idea. [06:51] shaver: which works fine for language experiments [06:51] jesusabdullah: Then again, idk nothin' [06:53] jimt has joined the channel [06:53] JaMeSiTeGeN: samcday: Nope, just want a challange :) [06:53] shaver: git codin'! [06:54] JaMeSiTeGeN: Nah, I will have to back it up too often :p [06:54] abraham has joined the channel [06:54] mikegerwitz: http://en.wikipedia.org/wiki/Source_lines_of_code#Example [06:54] JaMeSiTeGeN: does github have every commit backed up? [06:54] mikegerwitz: just sayin'.. [06:55] Aria: Every git repo has all the history unless you try otherwise. [06:55] dgathright has joined the channel [06:55] JaMeSiTeGeN: humm :) [06:55] samcday: This is really distracting, I'm not gonna get anything done today ;O [06:55] mattikus has joined the channel [06:56] JaMeSiTeGeN: Anyone want to work with me make js-in-js and then linux-with-built-in-bash-written-in-that-js? [06:56] JaMeSiTeGeN: DIE propitiatory drivers!!! [06:57] samcday: mikegerwitz, that is pretty awesome, love how it puts Linux open-source effort in perspective with Windows [06:57] Aria: JaMeSiTeGeN: Get coreboot working first. [06:57] JaMeSiTeGeN: DIE NON-FREE SOFTWARE/FIRMWARE/DRIVERS!!! [06:57] JaMeSiTeGeN: coreboot? brb [06:57] JaMeSiTeGeN: dratz not in pidgin, no /google command [06:58] mikegerwitz: JaMeSiTeGeN: I think you're drastically underestimating the scope of your proposal [06:59] hueniverse: Anyone knows why http/s changed to force all outgoing headers to lowercase? any reason? [06:59] jimt_ has joined the channel [06:59] JaMeSiTeGeN: Oh I know what It is and I'm nowthinking about coreboot in JS :) humm, how many years would all this take ? 5-9? [06:59] Aria: JaMeSiTeGeN: How many people've you got? [07:00] mikegerwitz: ._. [07:00] JaMeSiTeGeN: me and anyone who wants to help? anyone? [07:00] mjr_ has joined the channel [07:00] samcday: jesus lol [07:00] flippyhead has joined the channel [07:00] ivan has joined the channel [07:00] zab: JaMeSiTeGeN: you need the LoseThos guy [07:01] JaMeSiTeGeN: zab?? [07:01] zab: http://losethos.com/ [07:01] zab: (tongue in cheek) [07:01] kal-EL_ has joined the channel [07:02] samcday: zab: LOL [07:02] samcday: That's fantastic [07:02] extrastring has joined the channel [07:02] mikegerwitz: zab: nice. [07:03] McMAGIC-- has joined the channel [07:04] zab: this thread is hilarious: http://www.reddit.com/r/programming/comments/e5d8e/demo_video_of_new_operating_system/ [07:04] zab: but props to the guy, he has major cojones. [07:06] zab: that could be you one day JaMeSiTeGeN [07:07] csanz has joined the channel [07:07] JaMeSiTeGeN: painful os :) [07:07] EyePulp has joined the channel [07:09] losing has joined the channel [07:09] mjr_: WTF is that video [07:09] mjr_: Not a joke? [07:09] samsonjs has joined the channel [07:10] zab: mjr_: http://www.losethos.com/code.html [07:10] dominic_ has joined the channel [07:10] mjr_: Umm [07:10] mjr_: 7 years? [07:11] zab: read the top of the page, it's only a portion of the codebase [07:11] samcday: Honestly, I kinda just cried reading that reddit post and watching the Youtube video [07:11] mikegerwitz: mjr_: I'm still distracted by the voice, personally. Once I get past that, I'll get to considering the OS [07:11] samcday: First time I've ever seen a schizophrenic programmer [07:11] samcday: "... My favourite quote was him saying that God had told him to use only 640x480x16 mode. ... " [07:11] mjr_: Yeah, with a different voice, I could almost believe that this was a serious work [07:11] mjr_: But also the constant ANSI animations [07:12] mikegerwitz: mjr_: lol [07:12] mjr_: It's like, a BBS door or something. [07:12] shaver: could do your windowing system with TheDraw [07:12] Utkarsh has joined the channel [07:12] samcday: Did you guys read the dude's retort on reddit? [07:13] samcday: About 8 comments in, the post from "TrivialSolutions" [07:13] mekazu has joined the channel [07:14] mjr_: woah [07:14] mjr_: That, plus the fact that he wrote a progressive compiler, is fucked [07:14] samcday: You know it's actually fascinating. How can someone so mentally unstable be able to write something so coherent>? [07:15] samcday: As much as that OS is pretty /facepalm worthy, he did write his own compiler from scratch, along with everything else ... [07:15] MikhX has joined the channel [07:18] samcday: Same guy: http://www.youtube.com/watch?v=9i0pMO697Zk [07:18] mikegerwitz: samcday: sob I just spit water on my keyboard [07:18] mjr_: Oh man [07:19] mjr_: It has 3337 views also [07:19] Utkarsh_ has joined the channel [07:19] mikegerwitz: I like the upper window [07:20] DTrejo: hi mjr_ , how's life? [07:20] mjr_: Hey DTrejo, just got into Oakland. [07:20] samcday: mikegerwitz, my sides hurt so much right now [07:20] DTrejo: mjr_: cool, from vacation? [07:20] DTrejo: (I'd guess not) [07:21] mjr_: Nope, I moved to Kauai. I'm just back to spend some time in the office and clean out my house. [07:21] DTrejo: ! [07:21] DTrejo: forever vacation at work? [07:21] mjr_: I still work, but now I work from a really great place. [07:21] mjr_: I probably work more there than I did in SF, because people never walk by my office and ask me questions. [07:22] mikegerwitz: samcday: Oh come on all over my notes too ._. [07:22] samcday: Did you read the lyrics? [07:22] samcday: Powerful stuff. [07:23] mikegerwitz: heh [07:23] DTrejo: mjr_: I bet the weather is great. are you guys opening an office there? [07:24] mjr_: I opened my office there. I don't think we'll have any more remote employees though. [07:24] mjr_: You can always ask. :) [07:24] mjr_: We are hiring a fulltime node person in our SF office. [07:24] seivan: res.send( Lol : 2) [07:24] seivan: will that become json itself or do I need to add a content type? [07:25] mjr_: res.send(JSON.stringify({Lol: 2}); [07:25] tmpvar has joined the channel [07:25] Sunny has joined the channel [07:26] flippyhead has joined the channel [07:26] softdrink has joined the channel [07:26] DTrejo: yeah, I have connections to college students since I'm in college, so I wish you luck the the fulltime person [07:27] DTrejo: you can send our the job offer brown CS students for 150, I think [07:27] samcday: Oh man. A node.js dayjob... /drool [07:27] DTrejo: *out [07:27] samcday: Wish I lived in the States where miracles like that actually happen [07:27] mjr_: I figure there's gotta be somebody looking to do node fulltime in SF. [07:28] DTrejo: there's a couple good javascripters here. yeah, you're better going for someone who's known around here / the node community [07:28] Sunny: Hi, I need help in building node.js on windows...I tried to compile and got the error could not configure cxx compiler...Can anyone help me resolve this [07:28] SubStack: most of them are already up to something however! [07:29] mjr_: It's true. Most people in SF tech already have a job. [07:29] mikegerwitz: Sunny: At work we use http://node-js.prcn.co.cc/ for our Windows boxes that we haven't yet had the luxury of getting rid of [07:30] mjr_: But there aren't a lot of full-time node jobs yet. [07:31] seivan_ has joined the channel [07:31] DTrejo: mjr_: I helped organize a college student hackathon last month: I think 8 of the 20 projects involved node [07:31] seivan_: samcday: Dude [07:31] seivan_: We might need node people soon [07:31] seivan_: Right now I am doing it, but I am really a ruby/Cocoa person [07:31] DTrejo: and at least two of them used socket.io [07:31] Sunny: so is this stable? [07:31] seivan_: Soo.. writing SQL/Mongo queries in Javascript [07:31] seivan_: Painful? [07:31] seivan_: All our persistent backend with node has been with redis [07:32] seivan_: But we might want geospactial queries for location stuff soon [07:32] mjr_: DTrejo: that's cool [07:32] samcday: seivan_: Hmmm? Where? Why? When? How? [07:32] seivan_: samcday: I will let you know here :) [07:32] mikegerwitz: Sunny: We've only used it on our dev boxes. Production runs a GNU/Linux system. So, I cannot speak strongly for it, but it has never crashed on us [07:32] seivan_: We also need Android devs [07:32] dnolen has joined the channel [07:33] mjr_: seivan: you could also use couchdb and geocouch for that. It's a pretty natural fit for node. [07:33] mjr_: seivan: what's your company? [07:33] samcday: seivan_: Cool :) [07:34] Sunny: mikegerwizt: and to run this do i have to unistall cygwin first? [07:34] brianmario has joined the channel [07:35] mikegerwitz: Sunny: I do not believe so. We had cygwin installed prior. I was not responsible for the installation, so I'm not 100% sure, but I'm fairly certain you'll be fine. [07:35] JaMeSiTeGeN: So does anyone want to help write js in js? or linux in js? [07:35] DTrejo: ambitious project [07:36] DJazz has joined the channel [07:36] Sunny: mikegerwitz: alrights cool thanks lots for the guid man [07:36] Sunny: guide* [07:36] mikegerwitz: Sunny: We did notice one issue [07:36] JaMeSiTeGeN: DTrejo: What exactly are you implying? [07:36] mikegerwitz: Sunny: DNS resolution must use /etc/resolv.conf. It does not use windows' DNS settings [07:36] mikegerwitz: Sunny: So you'll have to create one. [07:37] seivan_: hmm using express for building an API (overkill?) but ehm, my params is empty for post requests? [07:37] JaMeSiTeGeN: Sunny: mikegerwitz What are you two talking about? [07:38] shaver: ok, g'night [07:38] DTrejo: always follow the windows install instructions carefully [07:38] mikegerwitz: JaMeSiTeGeN: the unfortunate circumstance of having to run node under Windows [07:38] Sunny: Jamsitegen: I am having problems in compiling node.js using cygwin on windows [07:38] JaMeSiTeGeN: its only: 18:38:20 [07:38] JaMeSiTeGeN: not night :p [07:38] samcday: Farewell! [07:38] DTrejo: night samcday [07:39] JaMeSiTeGeN: ahh, I see, that would of not of not came to my mind, I ran `self.remove("Microsoft")` a while ago [07:39] tfe_ has joined the channel [07:39] mikegerwitz: Sunny: Just use caution with that :) I can't speak for it 100%, but it's hopefully a way to at least get node running and allow you to fall back on compiling yourself if needed [07:39] JaMeSiTeGeN: what is cygwin? is it like linuxemu? [07:40] JaMeSiTeGeN: like how we linux people may have dosemu? [07:40] flippyhead has joined the channel [07:40] JaMeSiTeGeN: I guess it is linux like feel on windows [07:40] mikegerwitz: JaMeSiTeGeN: employer mandates Windows PCs for developers, so we're sol in that :) I'm the only developer that runs a GNU/Linux VM [07:41] seivan_: ehm [07:41] seivan_: Does anyone know how to do a POST for express? [07:41] seivan_: my params are emtpy [07:41] jimt has joined the channel [07:41] JaMeSiTeGeN: Humm, I am the only one at my school that runs LMDE or any debian based system :) A friend runs fedora [07:42] dewey_ has joined the channel [07:42] Sunny has left the channel [07:43] Croms has joined the channel [07:43] binspace_ has joined the channel [07:43] JaMeSiTeGeN: now thats quite sad [07:44] seivan_: gah [07:44] seivan_: How does one do a POSt request with express? [07:44] seivan_: app.post .... [07:44] seivan_: my params is empty [07:45] seivan_: curl -i -H "Accept: application/json" -X POST -d "lat=232.333" http://localhost:3009/user/create [07:45] seivan_: body is undefined [07:46] DTrejo: seivan_: sorry I can't help, I haven't used express [07:46] abraham has joined the channel [07:46] JaMeSiTeGeN: seivan_: ajax is friendly :p and in nodejs why not just use http or net? [07:47] seivan_: Because I want to a build an APi quickly [07:47] seivan_: And have a clean syntax [07:47] JaMeSiTeGeN: humm, not quite sure about http but net you can [07:47] JaMeSiTeGeN: use php :) [07:47] mjr_: express is the most popular way to do this, for usre [07:47] JaMeSiTeGeN: kk [07:47] seivan_: LOL [07:47] mjr_: But apparently everybody here, including me, just does it in raw node. [07:47] seivan_: fuck php, I would do python or ruby [07:48] JaMeSiTeGeN: how about bash :) its easy and fast [07:48] seivan_: Well basically i can do the post request, but my parameters/post body is empty [07:48] JaMeSiTeGeN: or g++ compiled c [07:48] seivan_: Any ideas? [07:48] jesusabdullah: I like express! [07:48] SubStack: likewise! [07:48] jesusabdullah: I've used the shit out of express [07:48] jesusabdullah: well, not really [07:48] jesusabdullah: but I used it once! and it's *very* good. [07:48] Croms has joined the channel [07:48] seivan_: Ok [07:48] jesusabdullah: Did you guys see the plotting thing I made? [07:48] JaMeSiTeGeN: All abord the nodejs express we are leaving at exactly 900 [07:49] seivan_: jesusabdullah: seriously.. I just asked for epress.js help [07:49] seivan_: express* [07:49] jesusabdullah: orly? [07:49] jesusabdullah: What about? [07:49] seivan_: So how would one do a Post request with curl to a app.post(....) and have the params/body shown? [07:49] theNodeExpress: All abord! [07:49] seivan_: my req.params and req.body is empty [07:49] jesusabdullah: weird :/ [07:49] jesusabdullah: Sounds more like a curl question than a post question [07:50] seivan_: curl -i -H "Accept: application/json" -X POST -d "lat=232.333" http://localhost:3009/user/create [07:50] seivan_: That works with rails [07:50] jesusabdullah: SubStack: Any ideas? ^^ [07:50] jesusabdullah: I've only used GET [07:50] jesusabdullah: tbhirlimo [07:50] mikegerwitz: $ man bash | grep -A1 BUGS [07:50] mikegerwitz: fast as can be [07:50] jesusabdullah: -A1? [07:50] jesusabdullah: Grep...WITH STEAK SAUCE BITCH [07:50] mikegerwitz: lol [07:51] seivan_: ehm so? [07:51] mjr_: Is this why I hear people talking about "body decoder" in re express? [07:51] SubStack: u it just changed [07:51] SubStack: *um [07:51] seivan_: ??? [07:51] SubStack: from bodyDecoder to something else... [07:51] jesusabdullah: orly? [07:51] samsonjs has joined the channel [07:51] jesusabdullah: I used the decoder once or twice [07:51] seivan_: Man express.js doc suck balls [07:51] SubStack: server.use(express.bodyParser()) [07:51] jesusabdullah: ooh [07:51] SubStack: that will let you do req.body [07:52] SubStack: and req.params mayhap [07:52] jesusabdullah: seivan_: I have to admit, I thought that once or twice myself [07:52] seivan_: SubStack: why isn't that standard on as default? [07:52] DTrejo: seivan_: https://github.com/visionmedia/express/blob/master/examples/form/app.js [07:52] DTrejo: I think the examples should be more prominent in the docs [07:52] SubStack: because requests have to wait to read all the post data in that case [07:53] SubStack: usually you can do req.on('data', fn) and req.on('end', fn) [07:53] DTrejo: seivan_: actually thats not helpful, nvm [07:53] SubStack: to read post data asynchronously [07:53] jimt_ has joined the channel [07:53] SubStack: in case there is a lot of post data [07:53] SubStack: so you can do partial responses before then [07:53] mjr_: I had a lot of fun writing my own web framework. [07:53] mjr_: I highly recommend it. [07:53] seivan_: TypeError: Object # has no method 'bodyParser' [07:54] seivan_: mjr_: One day I will to, loads of focus on documentation [07:54] DTrejo: seivan_: https://github.com/visionmedia/express/blob/master/examples/multipart/app.js [07:54] seivan_: This is retard, some douchebag writes his framework, no docs and people use it because there isn o better tone [07:54] mjr_: sounds like a market opportunity. [07:54] mjr_: tj is here a lot, and he's really nice [07:54] mjr_: Doesn't care much for docs though. [07:55] raidfive has joined the channel [07:55] gazumps has joined the channel [07:55] jesusabdullah: I'm sure, if someone wrote his docs, he would be grateful and take a pull req [07:55] jesusabdullah: Not saying he shouldn't doc and that you should [07:55] jesusabdullah: Just saying [07:55] jesusabdullah: :v [07:55] seivan_: TypeError: Object # has no method 'bodyParser' [07:55] seivan_: app.use(express.bodyParser()) [07:55] seivan_: I got express and I got an app [07:55] seivan_: seriously... wtf [07:55] seivan_: holwachyck [07:56] DTrejo: seivan_: that's why I never used express — docs [07:56] seivan_: DTrejo: Seriously [07:56] seivan_: It's really shitty [07:56] DTrejo: next opportunity though, I'll try it and see what happens [07:56] mjr_: node web frameworks are like control flow libraries. You might as well just do it yourself until a clear and obvious winner emerges. [07:56] vnguyen has joined the channel [07:57] DTrejo: mjr_: agree. this is what marak taught me hehe [07:57] seivan_: I hate the fact that express.js and other of tjholochyck libraries got so much attention [07:57] seivan_: They are shit [07:57] seivan_: The docs.. are shit [07:57] jesusabdullah: They're really good libraries [07:57] mjr_: Yeah, node is really new. [07:57] seivan_: This how "rockstars" are born, the make libraries, with semi-good codebase and shitty docs and people use it, their "reps" go up, they can claim higher pay [07:57] DTrejo: I have this inefficient thing of my own that runs files through jsdom for templating heh. and serves static files with node-static [07:58] seivan_: express.js is actually quite shitty [07:58] jesusabdullah: How? [07:58] seivan_: Baiscally 50% of the docs are "commercials" for his other libraries, like templating [07:58] jesusabdullah: I mean, I understand "not so good docs" [07:58] jesusabdullah: but what about the lib itself? [07:58] seivan_: jesusabdullah: It doesn't provide a way to structure the application, it doesn't give you a good foundation [07:58] jesusabdullah: You can have a stellar library with no documentation [07:58] seivan_: I should NOT have to do app.use(express.bodyParser()) to get fucking posting to work [07:58] chapel: lol [07:58] seivan_: also, it does NOT EVEN WORK [07:58] jesusabdullah: But is that the point? [07:58] jesusabdullah: Well, it worked for ME [07:58] chapel: seivan_: Im sorry but you are talking out of your ass [07:59] seivan_: Oh really? [07:59] seivan_: I COPIED [07:59] jesusabdullah: Not to say that it always works all the time [07:59] seivan_: from the DOCS [07:59] jesusabdullah: SHITTY DOCS DOES NOT MEAN SHITTY LIBRARY [07:59] chapel: it is more like node itself that it doesn't tell you how you should structure your app [07:59] Aria: ... You did use the version that matches the docs, right? [07:59] Aria: Not pre-2.0 with 1.0 docs, right? [07:59] seivan_: when was the last release? [07:59] mjr_: Folks, can't we all just get along? [08:00] chapel: if you want shit to be done for you, goto rails or django [08:00] seivan_: I got 1.0.7 [08:00] seivan_: I don't want shit to be done for me [08:00] seivan_: I want shit to fucking work [08:00] jesusabdullah: and structuring your app isn't express's goal. It's SUPPOSED to be lightweight and basically just give you some frosting for gluing your sweet-ass gingerbread house together [08:00] seivan_: jesusabdullah: Yeah and it fails with that [08:00] seivan_: woo [08:00] wadey has joined the channel [08:00] jesusabdullah: Not give you a house to frost shit to [08:00] mjr_: I just cooked some sweet potato fries, seivan_, would you like some? [08:00] chapel: no doubt [08:00] seivan_: mjr_: I would :( [08:00] chapel: user error [08:01] seivan_: Now; [08:01] seivan_: Error: Each layer must have a route and a handle function [08:01] seivan_: at Server. [08:01] mjr_: must reboot [08:01] seivan_: http://groups.google.com/group/express-js/browse_thread/thread/61b59ad42f891d27?fwc=1 [08:02] dubbe has joined the channel [08:02] dubbe: Hello all! [08:03] abraham has joined the channel [08:04] mjr_ has joined the channel [08:05] seivan_: ok [08:05] seivan_: it was 1.0.7 was broken [08:05] seivan_: 1.0.8 works [08:05] DTrejo: seivan_: if you want to roll your own thing, you can see the basics here: https://github.com/DTrejo/nodaphone/blob/master/nodaphone.js [08:06] DTrejo: although that isn't for the latest version of node.. [08:06] nbjbj has joined the channel [08:06] DTrejo: so ignore me [08:06] nbjbj: bjbjmbl'nnk [08:06] nbjbj: jvvj [08:08] extrastring has joined the channel [08:09] mbrochh has joined the channel [08:09] mbrochh has joined the channel [08:10] thalll has joined the channel [08:12] dewey_: does someone know of a smart way to check if an image is inside an image? [08:14] mjr_: A smart way? You mean, other than just looking at it? [08:16] dewey_: funny, no [08:17] Spion_ has joined the channel [08:19] DTrejo: dewey_: $("img").has("img") [08:20] liquidproof has joined the channel [08:21] timmywil has joined the channel [08:21] seivan_: Hmmm [08:21] seivan_: Most Set calls (redis) does not require a callback? [08:21] seivan_: Will it be asynchronous? [08:22] altamic has joined the channel [08:22] altamic has joined the channel [08:23] Druid_ has joined the channel [08:23] DJazz has left the channel [08:23] mjr_: nothing REQUIRES a callback, and they'll all be async. [08:24] dubbe: is there any webbhosts that runs node.js? [08:24] mjr_: You can do redis get's with no callback also. [08:25] mjr_: dubbe: I recommend no.de, request access. It's the best way to host node. [08:26] dubbe: mjr_: thank you, i will check it out! [08:26] mjr_: otherwise, there are a number of others that are vying for node hosting dominance. no.de is the place to be though, if you can get in. [08:28] katspaugh has joined the channel [08:29] jesusabdullah: Is there a way to get SMS messages from outside the cell networks? [08:29] seivan_: Hmm [08:29] seivan_: How to return json instead of html? [08:29] seivan_: res.send JSON.stringify({user_id : user_id}); [08:29] seivan_: just change the content type? [08:29] jesusabdullah: Sounds reasonable enough. [08:31] yozgrahame has joined the channel [08:32] jimt has joined the channel [08:34] msucan has joined the channel [08:35] tmpvar has joined the channel [08:35] soulofpeace has joined the channel [08:35] Aria: Yeah. [08:37] Apes has joined the channel [08:45] dubbe has joined the channel [08:49] ph^ has joined the channel [08:55] incon has joined the channel [08:55] SamuraiJack has joined the channel [08:56] Croms has joined the channel [08:59] ximo has joined the channel [08:59] jimt_ has joined the channel [09:00] mekazu: what happened to require.async() ? [09:01] loob2 has joined the channel [09:02] mekazu: it's documented in http://visionmedia.github.com/masteringnode/book.html [09:02] adambeynon has joined the channel [09:03] loob2 has left the channel [09:03] nivoc has joined the channel [09:03] SubStack: mekazu: probably nobody ever used it so it went away [09:04] mekazu: fair enough [09:04] thalll has joined the channel [09:05] reid has joined the channel [09:07] vnguyen_ has joined the channel [09:07] jimt has joined the channel [09:08] CrypticSwarm has joined the channel [09:09] andrewfff has joined the channel [09:12] saikat has joined the channel [09:12] rkioski has joined the channel [09:15] hoodoos: hello guys! is there any variable that tells node's version? [09:18] bastilian: hoodoos: see http://nodejs.org/docs/v0.4.2/api/all.html#process.version [09:19] mhausenblas has joined the channel [09:20] hoodoos: thnx was looking on wrong page [09:24] forzan has joined the channel [09:25] poppiez has joined the channel [09:30] breccan has joined the channel [09:32] paul_k has joined the channel [09:33] gozala has joined the channel [09:33] pt_tr has joined the channel [09:38] mlncn has joined the channel [09:41] mgodinho has joined the channel [09:48] justis has joined the channel [09:49] unomi has joined the channel [09:50] tahu has joined the channel [09:50] Utkarsh has joined the channel [09:51] dewey_: does someone know a way to get a color value of a certain pixel of an image @ local disk [09:51] viirya has joined the channel [09:51] dewey_: there are no native bindings to imagemagick/graphicsmagick yet [09:51] augustl: dewey_: you would need to be able to parse the various formats [09:51] dewey_: command line tool doesn't expose that kind of information yet (I think) [09:52] lep has joined the channel [09:53] kwatch has joined the channel [09:55] dve has joined the channel [09:56] mscdex: someone posted a link to an imagemagick binding the other day [09:56] mscdex: it's not on the modules page though... [09:57] dve has joined the channel [09:58] hellp has joined the channel [09:58] dve: Any node.js utility modules that contain a dictionary class/ [09:58] dve: ? [09:58] kwatch: question: how to load non-npm library? for example: load('myutil.js') or so. [09:58] SubStack: hashish! [09:58] augustl: very few node modules contains classes ;) [09:59] augustl: kwatch: require [09:59] [AD]Turbo has joined the channel [09:59] SubStack: dve: what specifically are you looking for? [09:59] kwatch: augustl: is 'require()' available for non-npm package? [09:59] jesusabdullah: Yeah [09:59] jesusabdullah: require() is a part of node itself [09:59] dve: SubStack: just a simple key value dict [09:59] Utkarsh_ has joined the channel [09:59] dve: key = string [09:59] augustl: kwatch: http://nodejs.org/docs/v0.4.2/api/modules.html [10:00] dve: value = object [10:00] jesusabdullah: All npm does is make sure that the files are in places require is willing to look [10:00] pascalopitz has joined the channel [10:00] pascalopitz: morning [10:00] SubStack: dve: javascript already has those [10:00] mscdex: dve: normal javascript objects do that [10:00] mscdex: :D [10:00] augustl: kwatch: especially the "Loading from `node_modules` Folders" section [10:00] dve: what? [10:00] kwatch: thank you all! [10:00] dve: !? [10:00] SubStack: js: var h = {}; h.x = 5; h [10:00] gbot2: SubStack: {x:5} [10:00] SubStack: js: var h = { a : 1, b : 2 }; h.b ++; h [10:00] gbot2: SubStack: {a:1,b:3} [10:00] mscdex: js: var h = {}; h['foo'] = 5; h [10:00] gbot2: mscdex: {foo:5} [10:00] mscdex: ^ [10:00] jesusabdullah: js: h.x = 5; h['x'] [10:00] gbot2: jesusabdullah: Error: ReferenceError: h is not defined [10:00] floby has joined the channel [10:00] jesusabdullah: js: h = {}; h.x = 5; h['x'] [10:01] gbot2: jesusabdullah: 5 [10:01] jesusabdullah: woo [10:01] dve: hmm but I also want to find values based on keys [10:01] jesusabdullah: js: h = {}; h.x = 5; h.keys() [10:01] gbot2: jesusabdullah: Error: TypeError: h.keys is not a function [10:01] jesusabdullah: js: h = {}; h.x = 5; h.keys [10:01] gbot2: jesusabdullah: undefined [10:01] jesusabdullah: huh [10:01] augustl: dve: which part of h['x'] does not do that? [10:01] jesusabdullah: I thought there was a keys method [10:01] Wizek_ has joined the channel [10:01] mscdex: jesusabdullah: Object.keys() [10:01] jesusabdullah: orite [10:02] SubStack: js: var h = { a : 1, b : 2 }; Object.keys(h).filter(function (key) { return h[key] < 2 }) [10:02] gbot2: SubStack: ["a"] [10:02] jesusabdullah: js: h = {a: 3}; Object.keys(h) [10:02] gbot2: jesusabdullah: ["a"] [10:02] SubStack: or hashish lets you do Hash.filter(obj, fn) and Hash(obj).filter(fn) [10:02] jesusabdullah: dve: Check out substizzy's "hashish" library. It makes hash manipulations all sexylike [10:03] nivoc has joined the channel [10:04] dve: SubStack & jesusabdullah: thanks, will check it out... when I say dictionary my brain is slightly skewed by years of C# programming [10:04] mikeal has joined the channel [10:05] jesusabdullah: I never c#'ed [10:05] augustl: javascript, nom [10:05] augustl: dictionaries = objects = everything [10:05] jesusabdullah: though I looked for some stuff in C that would do things like that [10:05] jesusabdullah: or, like, python dicts [10:05] dewey_: mscdex: maybe this one? https://github.com/ncb000gt/merlin [10:05] jesusabdullah: was more what I expected [10:05] mscdex: dewey_: ah yeah that was it [10:07] augustl: are there openssl bindings for commonjs/node yet? [10:07] mscdex: besides crypto? [10:08] augustl: yeah [10:08] augustl: x509 stuff etc [10:08] SubStack: augustl: what do you need to bind to? [10:08] SubStack: it's easy enough to bind to libssl using node-ffi [10:08] augustl: looking that up, thanks [10:09] dewey_: SWEET: convert image.jpeg txt:- will output all the x/y + colors [10:09] dewey_: YESSS [10:09] Utkarsh__ has joined the channel [10:09] dewey_: stdout and I've got what I want.. yeehaa [10:09] augustl: SubStack: cool stuff, tnx [10:11] dve: SubStack: so if im using conn.stream.socketio.request.headers in dnode, is it going to fall down on some types of socket.io transport? [10:12] abraham has joined the channel [10:14] jetienne has joined the channel [10:15] FireFly has joined the channel [10:15] Utkarsh_ has joined the channel [10:18] liar has joined the channel [10:19] SubStack: dve: I'm not certain but it's possible [10:20] dve: k [10:20] jetienne: hi [10:21] pau|c has joined the channel [10:21] skm has joined the channel [10:22] dve: I thought FF4 supported websockets!? [10:23] tc77 has joined the channel [10:24] pau|c_ has joined the channel [10:25] jetienne: dve: they have been disabled since a flaw has been found in the protocol [10:25] jetienne: dve: with socket.io you can have flash socket tho. longer to establish the connection. but same ping latency [10:26] dve: really! any links to info on the flaw? [10:26] jetienne: https://hacks.mozilla.org/2010/12/websockets-disabled-in-firefox-4/ moz announce [10:26] Utkarsh__ has joined the channel [10:27] jetienne: dve: google left websocket as this flaw has not yet been exploited in the field [10:27] dve: ooooh interesting.. I wondered why the websoocket spec had suddenly changed so much! [10:27] jetienne: safari too [10:28] dve: sigh back to xhr long polling then! [10:29] jetienne: no [10:29] jetienne: dve: what do you wanna do with websocket ? [10:29] jetienne: dve: it is quite likely you got better alternative than manual long polling [10:29] dve: jetienne... im using socket.io so its ok [10:30] jetienne: ok [10:30] jetienne: flash socket are much better than long pooling from a latency pov [10:30] dve: my little pet project looks a shit load better with websockets though :) [10:30] herbySk has joined the channel [10:32] dve: hmmm although socket.io seems to be skipping over the flashsocket option [10:33] insin has joined the channel [10:36] jetienne: dve: which browser ? [10:36] jetienne: dve: oh look at the debug trace, i bet it try to get the .swf but dont get it [10:37] dve: jetienne: FF4, no its finding the swf file [10:37] dguttman has joined the channel [10:37] dve: but still doing xhr-multipart [10:38] jetienne: https://github.com/LearnBoost/Socket.IO/blob/master/socket.io.js#L790 <- dve this is the order in which it tries [10:39] jetienne: dve: on easywebsocket, i spent several hours to get the config of flash socket right [10:39] dominic_ has joined the channel [10:39] dve: jetienne: true, but I have overridden that [10:39] jetienne: ok [10:39] jetienne: this explains it :) [10:40] dve: :) if i cut it down to just flashsocket.. it bombs out big time in all browsers [10:41] jetienne: flash socket is what giveme the lowest ping on firefox [10:44] dve: jetienne: did you have to run the server under sudo? [10:44] dve: for flashsocket to work? [10:45] jetienne: dve: nope [10:45] jetienne: dve: i had to use some Insecure.swf [10:45] dominic_ has joined the channel [10:45] jetienne: dve: but seriously flash security ... [10:46] abraham has joined the channel [10:46] jetienne: https://github.com/jeromeetienne/EasyWebsocket/blob/master/node/easyWebSocket-node.js#L53 <- the line in the node version of easywebsocket.org [10:48] jetienne: http://easywebsocket.org/contrib/monitor/ go there with ff4 to see it working [10:48] dve: jetienne: haha.. from what I understand the flash policy server must be running on port 843 [10:48] dve: which requires root [10:49] micheil has joined the channel [10:49] beawesomeinstead has joined the channel [10:49] beawesomeinstead has joined the channel [10:49] nook has joined the channel [10:49] jetienne: dve: it works without adobe vision of security :) [10:50] jetienne: dve: like which is the vulnerability they try to protect against by requiring 843 ? [10:50] dve: haha [10:50] jetienne: anybody can bind 843 [10:50] dve: port 843 just provides the policy... you run your socket on whatevr port you want [10:51] jetienne: root for port < 1024 is from the old days when we got actual users and actual admin [10:51] unomi has joined the channel [10:51] jetienne: so it is protecting against attackers who cant be root. so cant rent a server... [10:52] jetienne: this is the protection offered by 843 [10:52] nivoc has joined the channel [10:52] mscdex: you can serve the flash policy over the original port (usually 80) [10:53] jetienne: oh and i forget, the attacker MUST NOT have a desktop on the internet too :) [10:53] mscdex: also [10:53] jetienne: aka 843 is a bug in flash in my book [10:55] jetienne: ok back to html game :) [10:55] dve: mscdex: I dont think you can in the very latest version [10:55] dve: only 843 [10:55] mscdex: latest version of what? [10:56] dve: flash player [10:56] mscdex: it works for me... [10:57] gozala has joined the channel [11:00] jetienne: dve: which ping do you get by long polling [11:01] dve: jetienne: on my localhost?? [11:01] dve: pretty fast! [11:01] dve: :) [11:02] pdelgallego has joined the channel [11:04] jetienne: dve: well i like numbers :) [11:05] masahiroh has joined the channel [11:05] fly-away has joined the channel [11:05] jetienne: not so much since im doing physics in game tho :( [11:05] dve: jetienne: ~6ms [11:05] stephank has joined the channel [11:06] jetienne: dve: ok [11:06] eventi has joined the channel [11:06] dve: jetienne: Im going to ignore FF for now... having to much fun with websockets & dnode [11:06] ph^ has joined the channel [11:07] rbranson has joined the channel [11:07] dominic_ has joined the channel [11:08] jetienne: dve: yep, more fun. and socket.io will automatically use websocket when ff reenable them [11:09] mscdex: unless the cookie is set [11:09] mscdex: to use something else [11:09] mscdex: :p [11:10] jetienne: else remember=false :) [11:10] jetienne: ok silly math are blocking me [11:11] mscdex: async math! [11:12] jetienne: :) [11:12] incon: trying to run some example code to get started [11:12] incon: TypeError: Object # has no method 'close' [11:12] SubStack: ACTION wonders what happened to staticProvider [11:13] SubStack: aha, just `static` now [11:14] mscdex: incon: if you want to use 'close', you have to do it on the socket/connection itself [11:14] mscdex: otherwise use .end() [11:16] dve: Does anyone actually use Opera?! [11:16] incon: using 0.4.2 what's the best place to find sample code and docs? [11:16] dve: incon: http://nodejs.org/docs/v0.4.2/api/all.html [11:18] d0k has joined the channel [11:18] incon: That's the api... looking for example sites to see how it all comes together [11:18] jetienne: dve: many mobile [11:19] jetienne: incon: http://howtonode.org [11:19] xla has joined the channel [11:19] jetienne: http://visionmedia.github.com/masteringnode/ [11:20] KrooniX: Hello [11:20] KrooniX: Is there any easy way to make an https GET request? [11:20] mhausenblas has joined the channel [11:21] jetienne: mikael request is likely the easiest [11:21] dve: KrooniX: var https = require('https'); [11:21] dve: https.request [11:21] KrooniX: ah [11:21] KrooniX: thanks [11:21] jetienne: https://github.com/mikeal/request [11:22] jetienne: KrooniX: be aware that https.request is only establishing the connection, more or less [11:22] jetienne: no http redirect and co [11:23] KrooniX: jetienne: It is just an API request, so there should be no problem. [11:24] jetienne: ok [11:24] dve: jetienne: but you wouldnt chooose to use opera on your desktop? I dont know of anyone that does [11:25] jetienne: dve: some do. but clearly not a lot [11:26] KrooniX: I, surprisingly enough, actually have some friends who use Opera on the desktop. [11:26] pascalopitz: dve: I never really gave it a chance ... [11:26] jetienne: and opera mobile is doing a proxy to reduce the data size to the mobile [11:27] pascalopitz: isn't opera mobile going to be blown out of the water with greater dominance of android/iphone? [11:27] dve: So what do you folks use? Chrome? FF? [11:27] dve: IE? [11:27] pascalopitz: I use safari most of the time ... used to be FF, but it's too slooooooow [11:27] dve: which debugger do yo prefer Firebug or Chrome Developer tools [11:27] jetienne: chrome. ff4 is back in the game for speed. but still too many toolbar for my taste [11:27] pascalopitz: on OSX anyway [11:28] pascalopitz: plus the dev tools of webkit really have come on a lot [11:28] jetienne: current chrome dev tools are in bad shape. frequent crash. unable to report 404 [11:28] KrooniX: Chrome, OSX [11:28] pascalopitz: now nearly as good as firebug [11:28] dve: definitly, thats what finally made me switch from FF [11:28] pascalopitz: haven't even looked at IE in ages [11:28] jetienne: chrome stable doesnt support console.assert(false) :) [11:29] pascalopitz: urghs [11:29] dominic_ has joined the channel [11:29] skohorn has joined the channel [11:29] pascalopitz: chrome view source sucks [11:29] pascalopitz: big time [11:29] dve: google is taking over my life... ಠ_ಠ [11:29] dve: The elements browser in chrome is good though [11:29] pascalopitz: mobile browsers ... I totally love the one on my n900 [11:29] jetienne: i complain about chrome but this is the one i use :) except when debugging 404 [11:30] jetienne: about mobile and debugging, anybody tried jsconsole.com ? it is supposed to be real helpfull [11:30] dominic_ has joined the channel [11:30] dve: nope heard the name though [11:31] pascalopitz: nope ... haven't done any mobile stuff so far [11:31] jetienne: pascalopitz: are you french ? wild guess from the name [11:31] pascalopitz: I just wonder how long mobile will be different to web [11:32] pascalopitz: no, I am german actually ... my mom is "swiss romande" [11:32] jetienne: pascalopitz: ah ok. so not living in france i guess :) [11:32] pascalopitz: London [11:32] dominic_ has joined the channel [11:33] pascalopitz: not for much longer though [11:33] jetienne: paris here. i try to have a community of people around js in paris [11:33] jetienne: pascalopitz: where do you go after tha [11:33] jetienne: t [11:33] pascalopitz: well, I am applying for a partner visa to Australia [11:33] pascalopitz: my wife to be is from there [11:33] dve: congrats [11:33] pascalopitz: wonder if there are any JS/PHP jobs downthat end [11:34] dve: yup [11:34] jetienne: sidney [11:34] pascalopitz: she's a .net dev [11:34] dve: I worked as a contractor in Oz for 6 months [11:34] pascalopitz: no, adelaide is the elected city [11:34] pascalopitz: not so rosy there [11:34] dve: easy money. great working environment [11:34] pascalopitz: ha! I like easy money ... a lot! [11:35] dve: oh and nice weather too :) [11:35] pascalopitz: contracting market in London is strong, still [11:35] pascalopitz: surprisingly [11:35] pascalopitz: was looking for a new gig, and had like 40 calls in a week [11:35] pascalopitz: PHP work though [11:35] pascalopitz: noone wanted my node skillz :( [11:36] pascalopitz: I am itching to build something proper with it [11:36] jetienne: i did php for a year... would be hard to make me go back :) [11:36] pascalopitz: well, it's the main item on my CV in years ... and it pays OK [11:36] jetienne: pascalopitz: i do understand [11:37] pascalopitz: I prefer JS stuff ... never got caught in the rails frenzy etc ... [11:37] jetienne: rails pays well too [11:37] pascalopitz: yeah, I just never got involved ... had to work on PHP stuff ... that's how it goes [11:37] jetienne: node maybe too new. perhaps doing some frontend js meanwhile. [11:37] pascalopitz: have done that for a while ... but prefer backend work [11:38] pascalopitz: I like full lifecycle [11:38] pascalopitz: :) [11:39] jetienne: i will do several small web games to see how it goes [11:39] pascalopitz: in the end, all that stuff is the same anyway ... learning a new language isn't THAT hard when you need it [11:39] jetienne: some hollydays before looking for new gigs :) [11:39] pascalopitz: :) [11:39] jetienne: pascalopitz: yep but this is boring to relearn all the names [11:39] pascalopitz: totally ... just JS is really liberating [11:39] jetienne: pascalopitz: python/rails/php/js are all the same... just the name change [11:40] jetienne: excatly. now i can do c++ and js... and forget my python/ruby/php ): [11:40] pascalopitz: never touched C++ [11:40] jetienne: did 350kline of C++ :) [11:40] skampler has joined the channel [11:40] jetienne: skipped perl tho. prout od it :) [11:40] pascalopitz: tried a but of objective C once, but gave up [11:40] pascalopitz: maybe what I wanted to do was too hard [11:41] jetienne: c++ is the hardest language to learn [11:41] pascalopitz: wanted to build a screen recorder [11:41] pascalopitz: not C? [11:41] jetienne: nah C is super simple compared to c++ [11:41] jetienne: you can learn C in a month [11:41] Utkarsh has joined the channel [11:41] jetienne: after 6months c++ you are like a teenager [11:41] pascalopitz: right ... but the concepts of memory allocation, pointers etc is what throws people, no? [11:41] jetienne: after 2years you are mature being :) [11:42] jetienne: pascalopitz: yep but all in C [11:42] jetienne: c++ is WAY more complex [11:42] pascalopitz: sounds like a bad idea then [11:42] pascalopitz: kiss [11:42] pascalopitz: keep it simple stupid [11:42] pascalopitz: :) [11:43] jetienne: ub.com/jeromeetienne/neoip/blob/master/src/neoip_netutils/gen_id/neoip_gen_id.hpp#L37 <- this is valid c++ :) [11:43] jetienne: https://github.com/jeromeetienne/neoip/blob/master/src/neoip_netutils/gen_id/neoip_gen_id.hpp#L37 [11:44] swistak has joined the channel [11:44] pascalopitz: urghs ... it's fugly [11:44] jetienne: it is :) [11:45] jetienne: dont go if you dont need it [11:45] pascalopitz: nah, I'll avoid [11:45] [AD]Turbo: jetienne, c++ (keeping away templates) is not that diffucult to learn [11:45] pascalopitz: where's the benefit over let's say objective C? [11:45] [AD]Turbo: time to eat something here, cya later :) [11:48] jetienne: pascalopitz: objective C is apple only [11:48] jetienne: pascalopitz: c++ is better than objective C [11:48] pascalopitz: surely there's a linux compiler? [11:49] jetienne: objective C has been designed as such, because in early90's c++ compiler were crap [11:49] jetienne: pascalopitz: i think gcc support it [11:49] pascalopitz: k [11:50] beawesomeinstead has joined the channel [11:50] jetienne: pascalopitz: yes it does [11:50] beawesomeinstead has left the channel [11:50] pascalopitz: so one is just missing all the window libs etc [11:50] pascalopitz: cocoa, carbon etc ... which makes in interesting in the first place [11:50] jetienne: pascalopitz: yep. and on mac cocoa is important [11:50] dominic_ has joined the channel [11:50] jetienne: exactly [11:51] swistak has joined the channel [11:51] jetienne: there is a company trying to get cocoa in js :) [11:51] pascalopitz: ah, onjective-j? [11:51] pascalopitz: I have seen that [11:51] pascalopitz: ACTION is just getting used to cofee script [11:52] jetienne: http://cappuccino.org/ [11:52] pascalopitz: ACTION thinks objective-J is a step too far [11:52] jetienne: pascalopitz: why not plain js ? [11:52] pascalopitz: just wanted to try it out [11:52] jetienne: ok [11:52] pascalopitz: pretty neat actually [11:53] pascalopitz: if you do "coffee -w -c file" [11:53] pascalopitz: you never have to worry about it [11:53] jetienne: no issue while debugging ? when you see the compiled version ? [11:53] pascalopitz: well, a quick look into the compiled file and you know what's up [11:53] jetienne: ok [11:54] pascalopitz: it doesn't mess things up like the closure compiler [11:54] pascalopitz: it's pretty inuitive, really [11:54] pascalopitz: and I think it gives you language features like extend [11:54] slaskis has joined the channel [11:55] pascalopitz: haven't tried that yet, though [11:55] pascalopitz: here's the little tryout: [11:55] pascalopitz: https://github.com/pascalopitz/genstatic [11:55] jetienne: maybe i should give it a chance... but the idea of my code in a custom language... i need a very strong case :) [11:56] incon: https://github.com/joyent/node/wiki/modules#ws-ajax Alot of modules that do that same thing? What do I pick will one end up in core? [11:56] pascalopitz: check npm [11:56] pascalopitz: I think that's probably the most supported ones [11:57] jetienne: incon: none will end up in core. [11:57] pascalopitz: exactly, I don't think modules will go into core [11:57] jetienne: incon: what do you wanna do with it. we will give you advices [11:58] incon: multi player board game [11:58] pascalopitz: so you need browser push? [11:58] pascalopitz: got for socket-IO [11:58] jetienne: incon: socket.io is for you. websocket, with fallback if not supported in the browser [11:59] pascalopitz: probably THE reason for people to look at node in the first place [11:59] jetienne: incon: doc is sparse but it is used a lot. easier to get help [11:59] pascalopitz: pretty straight forward to use anyway [12:06] pascalopitz: god, how did I live before github? [12:07] Fullmoon has joined the channel [12:08] minibikini has joined the channel [12:09] jetienne: yep they changed things for me too :) [12:10] jetienne: http://calendaraboutnothing.com/ [12:11] jetienne: this one is good when you work at home... to automonitor yourself automatically on github [12:12] bastilian has joined the channel [12:14] pascalopitz: well, I normally wouldn't spend so much time in front of a box outside work ... but I am bored ... can't do any sports [12:14] jtsnow has joined the channel [12:14] pascalopitz: normally I'd be out and about [12:14] pascalopitz: it's no fun with crutches [12:15] eventi: anyone here using coffeescript with express.js [12:15] eventi: ? [12:15] mlncn has joined the channel [12:15] eventi: jetienne: 2 days of 102 fever... I know I owe you an email, sry bout that [12:16] Max-Might has joined the channel [12:16] dominic_ has joined the channel [12:17] Gruni has joined the channel [12:17] pascalopitz: eventi: coffeescript for express sounds like a good plan actually [12:17] rbranson has joined the channel [12:17] eventi: up until you try to use middleware [12:17] eventi: :( [12:17] eventi: really simple thing not working [12:18] jetienne: eventi: cool. no sweat [12:19] pascalopitz: eventi: why is that? it should compile down ok? [12:19] pascalopitz: maybe you have to remove the safety wrapper [12:19] eventi: hmmm [12:19] pascalopitz: try -b [12:20] pascalopitz: otherwise it'll be inside (function{})(this); [12:20] eventi: I have a pastie - http://pastie.org/1632479 [12:20] eventi: but that could be it [12:22] pascalopitz: is it the return statement? [12:22] pascalopitz: for authenticate [12:22] eventi: ugh - that's not it [12:22] pascalopitz: you should put a null below that user.load block [12:23] pascalopitz: otherwise the middleware will return the user.load [12:23] pascalopitz: is that apossibility? [12:24] bartt has joined the channel [12:24] pascalopitz: not sure [12:24] eventi: hmm [12:25] ntr0py has joined the channel [12:25] eventi: ok I tihnk you're on to something - what i did troubleshooting was type the js, then type the coffee and -c and that looks like the only diff [12:25] eventi: sry that was kinda rambling [12:27] pascalopitz: the return statements were what threw me yesterday when I used coffee for the first time [12:28] SamuraiJack_ has joined the channel [12:29] eventi: so yeah - didn't i help you a bit then ? [12:29] eventi: lol [12:29] eventi: with the -c and -w stuff? [12:29] pascalopitz: yeah [12:29] pascalopitz: LOL [12:30] pascalopitz: ACTION has a short memory [12:31] eventi: anyway - i think that's it - since next() is called in the async User.load [12:31] eventi: ACTION does too :) [12:32] eventi: gonna strip it down to those two functions, and play a bit - thanks, just returning null doesn't do it [12:32] pascalopitz: hmm, was a guess [12:33] pascalopitz: I haven;'t figured how to NOT return anything in coffee script [12:33] eventi: yeah - i don't think it's possibl [12:33] jetienne: return undefined ? [12:33] jetienne: js always returns something at the end of a function [12:33] eventi: but not returning anything is the same as returning "bunny rabbit" and ignoring it [12:33] jan____ has joined the channel [12:33] jetienne: ah ok [12:35] pascalopitz: well, I know, but it's still a line or a keyword more in JS [12:35] pascalopitz: :/ [12:36] minibikini_ has joined the channel [12:39] katspaugh has left the channel [12:40] Sorella has joined the channel [12:43] gozala has joined the channel [12:43] pascalopitz: yeah, the return statement doesn't make a difference [12:44] Utkarsh_ has joined the channel [12:44] eventi: hey is there a diff between "auth = function" and "function auth" bc coffee generates the later [12:44] eventi: *latter [12:45] DJazz has joined the channel [12:45] pascalopitz: shouldn;t be [12:46] pascalopitz: function foo() {} [12:46] pascalopitz: is the same like [12:46] pascalopitz: var foo = function(){} [12:46] pascalopitz: not sure what happens when you do [12:47] pascalopitz: var foo = x; if(1) { function foo() {} }; [12:48] eventi: i'm wrapping the auth middleware in a a module and just requiring it - should work [12:49] pascalopitz: where's the difference? [12:49] eventi: yeah - that works [12:50] jetienne: we need the bot back [12:50] pascalopitz: ok, I'll be afk for a bit [12:50] pascalopitz: shave and coffee time [12:50] eventi: ACTION wonders where to open the issue [12:51] pascalopitz: cya in a bit [12:51] eventi: coffee - good idea [12:51] jetienne: > var foo = 42; foo = function() {}; console.log(foo); [12:51] jetienne: [Function] [12:51] jetienne: > var foo = 42; function foo() {}; console.log(foo); [12:51] jetienne: 42 [12:51] jetienne: my understanding of js is still shallow, i have no clue why :) [12:51] ph^ has joined the channel [12:51] eventi: why your understanding is shallow? [12:52] eventi: lol [12:52] dubbe has joined the channel [12:52] jetienne: eventi: because i should know :) [12:52] eventi: or why that did what it did ? - I think everyones understanding is shallow [12:52] eventi: lol [12:52] jetienne: very zen :) [12:52] eventi: ACTION claps with one hand [12:53] eventi: and goes to get coffee [12:53] jetienne: eventi: hehe, you know that i can actually clap one hand :) [12:53] jetienne: eventi: im a darbouka player, so it bring a lot of muscle in the hand [12:53] jetienne: it was so fun that i could actually clap one hand. "hey im enlighted now" :) [12:54] jetienne: ok back to code [12:54] eventi: ACTION googles darbouka [12:54] jetienne: http://www.youtube.com/watch?v=9u4CsJb8xqs see the top hand [12:54] eventi: jetienne: nice - [12:54] jetienne: the top hand is super muscle :) [12:55] ph^ has joined the channel [12:56] gJ|Alex has joined the channel [12:56] jetienne: he is better than me, needless to say :) [12:56] bastilian has joined the channel [12:56] eventi: shiiiiiii - after 30 yrs of typing, i wonder if i can do that [12:56] micheil has joined the channel [12:56] malkomalko has joined the channel [12:59] jetienne: so, to be englighted, play darbouka [13:00] samcday: Can anyone suggest a good way to document a C++ node addon? [13:01] samcday: Like, any tools I could adapt or exploit to serve up auto documentation of classes/methods I expose to node from C++ [13:01] eventi: jetienne: i think i just may - got to the 5:00 mark of that vid and seriously started trancing [13:01] jetienne: http://www.devcomments.com/A-newbie-tutorial-for-creating-nodejs-plugins-in-C-at1003980.htm [13:01] jetienne: eventi: nice [13:02] jetienne: samcday: you got the code, and just want to auto export the doc ? that is it ? [13:02] samcday: Correct. [13:02] eventi: wonder if i can learn that and stay married [13:02] jetienne: samcday: i dont think such thing exist. [13:02] dominic_ has joined the channel [13:02] samcday: Was worried that was the case lol [13:02] jetienne: eventi: ask her if she like belly dancing :) [13:03] eventi: lol [13:03] jetienne: eventi: because darbouka is made for the dancers [13:03] eventi: right [13:03] jetienne: samcday: how much doc you got ? [13:03] eventi: k - must code before the kids wake up [13:03] eventi: jetienne: thanks again [13:03] samcday: What do you mean? Right now I have none. I just finished up writing an initial version of Node bindings to libgit2. [13:04] samcday: And I wanna document the sucker, there's about 9 classes I need to document [13:04] jetienne: samcday: if too much, you will have to play between doxigen and export that in jsdoc [13:04] jetienne: eventi: my pleasure [13:04] samcday: Meh I'll just do it manually :P [13:04] jetienne: samcday: ok :) [13:05] Utkarsh has joined the channel [13:06] bastilian has joined the channel [13:06] steffkes has joined the channel [13:07] nivoc has joined the channel [13:08] nivoc has joined the channel [13:09] malkomalko: has anybody gotten connect-auth to work with expresso 2.0.0beta/connect 1.0.x? [13:10] nivoc has joined the channel [13:12] razvandimescu has joined the channel [13:12] unomi has joined the channel [13:14] dubbe has joined the channel [13:16] insin: is it a bad idea to depend on a child process' stdout to feed you data in complete lines? [13:17] insin: The library I'm looking at is writing lines of JSON to stdout, then attempting to split on linebreaks and parse the JSON from the buffer when a child process' data event fires. I'm seeing some failures due to JSON texts not being complete [13:18] markwubben has joined the channel [13:21] soulofpeace has joined the channel [13:21] swistak has joined the channel [13:21] hij1nx has joined the channel [13:25] saschagehlich has joined the channel [13:25] saschagehlich: hey there - has the bug with the multiple set-cookie headers on a clientresponse been fixed yet? [13:26] ttpva has joined the channel [13:26] dylang has joined the channel [13:29] saschagehlich_ has joined the channel [13:29] Gigwatt has joined the channel [13:32] Gigwatt: Heya guys [13:33] mnbvasd has joined the channel [13:34] insin: hrm, must be a problem with jscoverage, doesn't happen when I disable it [13:36] kawaz_air has joined the channel [13:36] eventi: ok now i've go t another problem - if i wrote a lib in coffee script, how can I require it from js? [13:38] sveimac has joined the channel [13:39] GipsyKing has joined the channel [13:40] GipsyKing: Hello [13:42] GipsyKing: I'm trying to build node on cygwin and git is crashing on checkout with an error that's not documented in the wiki's troubleshooting section [13:42] altamic has joined the channel [13:42] altamic has joined the channel [13:42] GipsyKing: "could not load C:\WINDOWS\system32\winmm.dll" [13:43] minibikini has joined the channel [13:43] Ond has joined the channel [13:44] ph^ has joined the channel [13:44] insin: sounds like bigger things are afoot, but you could curl -O http://nodejs.org/dist/node-v0.4.2.tar.gz instead just to get going [13:45] GipsyKing: i'll try that, thanks [13:47] pascalopitz: eventi: do you compile it while you code it? [13:47] pascalopitz: or do you compile it to JS in runtime? [13:48] eventi: oh sry - anwser was in stackoverflow - [13:48] pascalopitz: ah, what was the answer? [13:48] pascalopitz: ACTION is interested [13:48] eventi: just require('coffee-script') first, then require('./mylib.coffee') [13:49] tc77 has joined the channel [13:49] pascalopitz: ah ... [13:49] pascalopitz: interesting [13:49] pascalopitz: so no need to compile stuff down with -w? [13:50] pascalopitz: sounds great! [13:50] Muon has joined the channel [13:50] Muon has joined the channel [13:50] eventi: -c!!! [13:50] eventi: lol [13:51] pascalopitz: yes ... but the way I do it is just start to code with -c -w -o ./lib ./src [13:51] heavysixer has joined the channel [13:51] pascalopitz: and like that you always have everything in JS anyway [13:51] eventi: but compile with -c... not compile with -w :) [13:51] pascalopitz: I know [13:51] pascalopitz: but -w watches it [13:51] pascalopitz: I know, I know ... wind me up already! [13:52] eventi: lol [13:52] eventi: ACTION back to code [13:55] heavysixer has joined the channel [13:55] AnimaSana has joined the channel [13:56] adambeynon has joined the channel [13:56] AnimaSana: i am trying to use node-inspector version 0.1.6 [13:57] AnimaSana: but no luck, I run node --debug hello_node.js and then node-inspector [13:57] sveimac has joined the channel [13:58] AnimaSana: and then it shows visit http://0.0.0.0:8080/debug?port=5858 to start debugging, but when I go there I get an error: ECONNREFUSED [13:58] devrim has joined the channel [13:58] heavysixer has joined the channel [14:00] heavysixer has joined the channel [14:00] eventi: AnimaSana: looks like you left something else running [14:00] AnimaSana: I just rebooted my system [14:01] eventi: ok, you win [14:01] pascalopitz: LOL [14:01] AnimaSana: even if I win, this thing still doesn't work [14:01] pascalopitz: is 5858 the right port? [14:02] eventi: ACTION trying [14:03] GipsyKing: insin: I could build fine from the tarball, thanks you :) [14:03] dve: AnimaSana: aree u running node-inspector deamonized? [14:03] AnimaSana: pascalopitz: debugger listening on port 5858 [14:03] AnimaSana: dve: no I just run /usr/local/bin/node-inspector [14:03] eventi: ECONNREFUSED should be from nothing listening on that port, so probabaly it's not [14:04] dve: try running $ node-inspector & [14:04] pascalopitz: and your node app is running? [14:04] dve: and then run node --debug app.js [14:05] jashkenas has joined the channel [14:06] seivan_: Hmm.. we need to group geolocations data, we are using a library that uses a k-means cluster algorithm. Now, this is a REALLY expensive hit. And takes loads of times. Now any sugguestions on this (other then putting it on delayed jobs)? I mean can we outsource the "calculations" to amazon somehow and have a server farm do it for us? [14:06] AnimaSana: eventi: you are right the app was not running... maybe I should get some sleep :P [14:06] eventi: bah [14:06] eventi: lol - sleep sometimes help [14:07] AnimaSana: ok so now when I visit http://0.0.0.0:8080/debug?port=5858 I get a nice search box and nothing else [14:07] pascalopitz: scripts tab [14:07] pascalopitz: click on that [14:07] tahu has joined the channel [14:08] AnimaSana: pascalopitz: no tabs, just the search box, the tabs where visible before when I was seeing the error, but not now [14:08] atiti: sup yall [14:08] eventi: chrome? or ff? [14:08] pascalopitz: reload? [14:08] xandrews has joined the channel [14:08] pascalopitz: you ned webkit for this [14:08] dubbe: what database do you usually use with node.js? [14:08] AnimaSana: eventi: chrome [14:08] pascalopitz: dubbe: There's bindings for many [14:08] eventi: yeah - i think it may work with firebug as well, but i'm using chrome [14:08] pascalopitz: dubbe: I like redis [14:09] eventi: ACTION scratches [14:09] AphelionZ has joined the channel [14:09] eventi: dubbe: redis [14:09] eventi: and couch is kinda driverless [14:09] dubbe: pascalopitz: eventi: hmmm...never heard of... gotta try. i've looked att couch now [14:09] eventi: key value store [14:09] eventi: but hella fast [14:09] pascalopitz: runs in ram [14:10] pascalopitz: mostly [14:10] dubbe: intresting [14:10] pascalopitz: and syncs back to disk [14:10] eventi: redis.set(key,value) [14:10] eventi: done [14:10] pascalopitz: it has nice atomic operations [14:10] seivan_: What is the best mongoDB driver for node? [14:10] pascalopitz: like list id instersect [14:10] __tosh has joined the channel [14:10] dubbe: it looks simple... gotta read some about it [14:10] AnimaSana: what do you use for debugging node? (I am hoping there is something else besides the inspector, that I manage to get it right :P) [14:11] jashkenas has joined the channel [14:11] eventi: console.puts - but I'm an old perl hacker [14:11] pascalopitz: dubbe: well worth it ... it also has pub/sub stuff, that works well with node / comet [14:11] pdelgallego has joined the channel [14:11] eventi: i mean log [14:11] tiemonster has joined the channel [14:11] pascalopitz: eventi: LOL [14:11] dubbe: pascalopitz: nice... [14:11] eventi: debuggers make you weak [14:11] eventi: ACTION ducks and runs [14:12] AnimaSana: yes console.log seems easier to use :P [14:12] AnimaSana: i definitely feel week after spending 3 hours to understand why the hell node-inspector doesn't work [14:12] pascalopitz: dubbe: also, redis is very well supported by the looks of it ... I follow the main guy on twitter, and he churns out improvements [14:12] eventi: i wrap it in a DEBUG function so I can :%s/DEBUG/\/\/DEBUG/ later [14:12] thalll has joined the channel [14:12] seivan_: So guys [14:12] seivan_: Best MongoDB package? [14:12] seivan_: module* [14:12] eventi: lol [14:13] pascalopitz: seivan_: haven't use mongo [14:13] dubbe: pascalopitz: it definitly sounds like somthing to look into [14:13] eventi: mongolian something if your used to the mongo> cli [14:13] pascalopitz: dubbe: http://redis.io/commands [14:13] eventi: guy is active here, name escapes me [14:13] dubbe: pascalopitz: yes, i saw... they had some interactive tutorial as well [14:14] pascalopitz: dubbe: the main thing is probably http://redis.io/commands/sort [14:14] AnimaSana: christkv? [14:14] eventi: I admin mongodb for work, but hardly code with it [14:14] pascalopitz: dubbe: it's a bit like join on ID lists [14:14] dubbe: pascalopitz: ah, great... [14:14] pascalopitz: dubbe: hashes are good as well [14:14] eventi: incr FTW [14:14] seivan_: ehm [14:14] seivan_: So what module for MongoDB eventi? [14:14] eventi: and zsets... [14:15] dubbe: looks like there is a lot of things to read [14:15] eventi: npm ls mongo [14:15] eventi: it's in there - something mongolain [14:15] AnimaSana: seivan_: i think mongodb is the most used one from christkv [14:15] eventi: deps what you're looking for [14:15] pascalopitz: I like redis cuz it's so low level ... if you know your data, you can avoid a lot of hassle [14:15] tiemonster: mongoose [14:15] seivan_: eventi: A lot of geospatial stuff [14:15] seivan_: if it has an arm for it, better [14:15] eventi: but christkv works for 10gen and is a baddass... [14:16] eventi: or wait [14:16] tiemonster: if you're building a document-driven application, I highly recommend Mongoose [14:17] eventi: mongolain was the one I was thinking of - [14:17] AnimaSana: eventi: so you think mongolian is better than mongodb? [14:17] rfay has joined the channel [14:18] tmzt_: er, mongoos? [14:19] edude03 has joined the channel [14:19] eventi: AnimaSana: I'm a sysadmin for a company that uses mongo (heavily) and they use the one 10gen wrote - I don't use it as a coder [14:19] tmzt_: eventi: is there a good place explaining how to do queries with mongo? [14:19] xandrews has joined the channel [14:20] eventi: guys - seriously going to shut up abt mongo now [14:20] AnimaSana: there are many tutorials on the web, mongo has a big community and an irc channel [14:20] eventi: google for explanation of mongo queries [14:20] eventi: AnimaSana++ - great community [14:21] tmzt_: yeah I just saw your other answer, sorry [14:23] eventi: ACTION now has to go figure out how to get Polly Pockets dress on - that's my weekend job [14:24] kristsk has joined the channel [14:24] jimt_ has joined the channel [14:24] AnimaSana: eventi: dos that involve software? :P [14:24] eventi: as a sysadmin I can tell you - index anything you might query on, table scans SUCK and get thee to a replica set ASAP [14:24] eventi: AnimaSana: unforunately no [14:25] eventi: my 3 yr old is a tough client too [14:25] AnimaSana: eventi: it must be more fun then :) [14:26] rtomayko has joined the channel [14:26] eventi: AnimaSana: sometimes [14:26] eventi: tantrums-- hugs++ [14:28] eventi: ok - i might be dumb... but thhis middleware thing seems to make a lot of assumptions I'm not getting [14:29] AnimaSana: event: my bad with node-inspector was that the app was running on the same port as the inspector (8080) [14:29] eventi: oh - so I win [14:29] eventi: after all [14:29] eventi: beers[eventi]++ [14:30] pascalopitz: eventi: what assumptions? [14:31] jimt has joined the channel [14:31] eventi: pascalopitz: that I want a big fucking HOLD EVERYTHING error thrown when a dude gets his password wrong [14:31] eventi: instead of handling it in the route [14:31] pascalopitz: yes ... I C ... [14:31] pascalopitz: let me look at examples of what I have used [14:32] AnimaSana: eventi: you win, next time I should thing better of how stuff works before trying to make them work! [14:32] eventi: but since it took me 2 frigging days to get the coffeescript/express thing working... [14:32] heavysixer has joined the channel [14:33] eventi: lol - i'm just messing, but seriously - i tell my wife all the time you should just always listen to me [14:33] eventi: saves time [14:33] gozala has joined the channel [14:33] eventi: AnimaSana: What's the fun in that [14:34] AnimaSana: eventi: a white box is funnier than a black box to me... I want to take a hammer and smash the black box usually :P [14:34] lukus has joined the channel [14:34] AnimaSana: eventi: ok not so white, maybe gray [14:34] eventi: ACTION is now a fairy princess wand repairman [14:35] eventi: yeah - i used to work with a guy who would thoroughly grok every aspect of something before opening a shell [14:35] kristsk: better solid black than white with smell. [14:36] eventi: weird dude, i don't think i could do it [14:36] eventi: too impatient [14:37] eventi: i was setting req.authorized = my user object [14:37] eventi: which i think is more flexible for me [14:38] eventi: inside the middleware [14:38] bastilian_ has joined the channel [14:42] tiemonster has left the channel [14:43] AnimaSana: can someone explain why the requestListener function passed in the web server object runs twice? (when I enter the url in the browser) [14:44] kristsk: browser asks also for favicon ? [14:46] AnimaSana: kristk: I see only one request in the Chrome Developer Tools, Network tab [14:46] AnimaSana: kristsk: how about Transfer-Encoding:chunked ? [14:46] edude03 has joined the channel [14:47] pascalopitz has left the channel [14:47] strimpel_: yeah if you're listening to the data event, it might be fired more than once [14:47] AnimaSana: strimpel_: the requestListener listens to the request event [14:48] strimpel_: request is an object not an event if im not wrong [14:48] strimpel_: which i coiuld definitely be since im a noob [14:48] AnimaSana: strimpel_: I do a console.log in the requestListener and it runs twice, but it runs once when I use telnet, GET / HTTP/1.1 [14:49] d0k has joined the channel [14:49] AnimaSana: strimpel_: from the node.js documention: The requestListener is a function which is automatically added to the 'request' event. [14:49] strimpel_: ill shut up then as i clearly have no clue [14:49] dominic_ has joined the channel [14:49] stalled has joined the channel [14:52] mike5w3c has joined the channel [14:52] kristsk: chunkyness only relates to responses no requests [14:54] AnimaSana: kristk: does that make sense? https://gist.github.com/856410 [14:55] AnimaSana: kristk: a get from chrome logs twice, a get from telnet logs once and a get from firefox logs twice the first time and once on next page reloads.... [14:55] seivan has joined the channel [14:56] kristsk: try dumping req object and look whats there [14:56] kristsk: i have a strong suspiction that it is the favicon [14:56] pascalopitz has joined the channel [14:56] strimpel_: i think chrome is requesting your favicon.ico [14:56] pascalopitz: hey, does anyone in here run node on a cpanel/whm VPS? [14:57] strimpel_: thus making 2 requests [14:57] jimt_ has joined the channel [15:00] AnimaSana: yes it is the favicon, req.url /favicon.ico the second time [15:00] AnimaSana: thanks [15:00] kristsk: woot [15:01] perlmonkey2 has joined the channel [15:01] statique has joined the channel [15:02] strimpel_: de nada [15:02] atiti has joined the channel [15:02] insin: argh, why does qunit have to use child processes and stdout :/ Do streams automatically flush when a certain amount of data is written? Seeing consistent failures at the same point due to partially written JSON [15:03] ssssssssd has joined the channel [15:03] skampler has joined the channel [15:03] kristsk: insin: yea they are flushed whenevr kernel thinks it is apropriata [15:04] xandrews has joined the channel [15:04] stagas has joined the channel [15:05] mhausenblas has joined the channel [15:05] insin: at this stage my tests fail on Ubuntu and work on Cygwin :) [15:05] kristsk: there prolly is some sneaky lib for this kind of thing [15:06] eventi: well - I'm doing Ubuntu 60-80 hrs a week [15:06] eventi: Debian before thta [15:06] eventi: *that - I'll hook you up [15:07] strimpel_: yes insin everything flushes when it wants in my limited experience [15:08] strimpel_: you have to check manually if the buffer is complete [15:08] jetienne: (anybody with a markdown to html tool ?) [15:08] jimt has joined the channel [15:08] nivoc has joined the channel [15:10] lep: pandoc [15:10] lep: not in js though [15:11] jetienne: pandoc -s README -o example7.rtf i like the api tho [15:12] daveluke has joined the channel [15:13] c4milo1 has joined the channel [15:13] jimt_ has joined the channel [15:14] jetienne: lep: i like the tools. any skin not too ugly ? [15:14] wilmoore has joined the channel [15:15] rfay has joined the channel [15:16] lep: sorry, i dont have on [15:16] lep: e [15:17] jetienne: lep: thanks for the tool tho :) [15:17] lep: oh np :> [15:17] AphelionZ has joined the channel [15:18] AphelionZ: Anybody here have experience using http://sodajs.com without connecting to the Sauce client? I'm having some trouble trying to get a local instance of Selenium RC to work [15:18] Evet has joined the channel [15:18] Evet has joined the channel [15:19] nivoc has joined the channel [15:20] beawesomeinstead has joined the channel [15:20] beawesomeinstead has joined the channel [15:20] stalled has joined the channel [15:21] Druid_ has joined the channel [15:23] niklasfi has joined the channel [15:27] __tosh has joined the channel [15:28] Sebmaster has joined the channel [15:31] Pie has joined the channel [15:33] markc has joined the channel [15:33] maushu has joined the channel [15:34] malkomalko has joined the channel [15:35] niklasfi: has anyone here used haml-js? [15:35] asdfsafdsa: there you go (: [15:35] jeromegn: I used the original haml extensively [15:36] zzak: use jade instead [15:36] Max-Might has left the channel [15:36] jeromegn: the new one is especially nifty [15:36] msch has joined the channel [15:37] Hello71 has joined the channel [15:37] Hello71 has joined the channel [15:37] niklasfi: could you guys have a look at https://gist.github.com/856445 ? to me the woking version seems to be a total mess ... is there any way to improve on it? [15:38] charlenopires has joined the channel [15:38] insin: glad it's just a fork I'm learning firthand about processes in. The commit log is a joke :) [15:40] adam- has joined the channel [15:40] insin: thank goodness for npm link [15:41] jimt has joined the channel [15:44] skampler has joined the channel [15:46] jimt_ has joined the channel [15:49] asdfsafdsa: it does look messy [15:50] niklasfi: asdfsadfsa: yes. is there anything i can do about it? [15:52] asdfsafdsa: try using a template engine like jade [15:52] aabt has joined the channel [15:53] xla has joined the channel [15:53] jimt has joined the channel [15:58] jimt_ has joined the channel [16:00] zemanel has joined the channel [16:01] dthompson has joined the channel [16:01] mbrochh has joined the channel [16:01] mbrochh has joined the channel [16:03] flippyhead has joined the channel [16:04] daveluke has joined the channel [16:05] Nietecht has joined the channel [16:07] daveluke_ has joined the channel [16:11] Bonuspunkt: anyone tried to build node with mingw? [16:11] cognominal has joined the channel [16:12] tk has joined the channel [16:16] skohorn has joined the channel [16:17] sangpire has joined the channel [16:21] jakehow has joined the channel [16:21] dnolen has joined the channel [16:22] erabuj has joined the channel [16:22] eventi has joined the channel [16:22] bentruyman has joined the channel [16:33] Country has joined the channel [16:33] nook has joined the channel [16:34] zzak has joined the channel [16:34] zzak has joined the channel [16:40] Dark_Sun has joined the channel [16:40] Dark_Sun: hello there [16:41] atiti has joined the channel [16:41] Dark_Sun: i've got a big problem. since i upgraded to 0.4.2 i cant make a connection lasting more then 2 requests. what the hell has changed ? [16:44] Sebmaster: Dark_Sun: The http API has changed [16:44] Sebmaster: depends on which version you upgraded from ofc [16:45] Dark_Sun: well [16:45] Dark_Sun: i was running the 0.3.2 [16:46] Dark_Sun: now i can just handle two requests on the same connection, i mean on the 3rd one the server close the client connection [16:46] dominic_ has joined the channel [16:46] borgling has joined the channel [16:46] Dark_Sun: is there a way to solve? [16:48] kristsk: does it crash or just exit? [16:50] Dark_Sun: the client receive a Connection closed by foreign host. [16:50] Dark_Sun: and the server fires a request.connection close event [16:51] [[zzz]] has joined the channel [16:51] atiti has joined the channel [16:52] themiddleman_itv has joined the channel [16:53] dylang has joined the channel [16:53] dominic_ has joined the channel [16:53] mhausenblas has joined the channel [16:56] chmod has joined the channel [16:57] Remoun has joined the channel [16:57] maushu: Need some code refactoring here. [16:57] marcello3d has joined the channel [16:58] Dark_Sun: i just dont know what to do [16:58] maushu: Mixing websockets, sandboxing and database code is a bad idea. [16:59] muk_mb has joined the channel [17:00] stride: not if you're writing databased websocketcode with sandboxsupport. owait [17:01] tanepiper: "Khronos is also today announcing the formation of the WebCL™ working group to explore defining a JavaScript binding to the Khronos OpenCL™ standard for heterogeneous parallel computing. WebCL creates the potential to harness GPU and multi-core CPU parallel processing from a Web browser" [17:01] tanepiper: :o [17:01] Ori_P has joined the channel [17:02] nmtmason has joined the channel [17:02] wav1 has joined the channel [17:06] jetienne: fire! [17:06] Sebmaster: niiiice [17:06] Sebmaster: webcl gonna be awesum [17:07] dguttman has joined the channel [17:07] jetienne: setti at home for those whom the home is a browser <- is that even english ? [17:08] hobs: not really but I can parse it [17:08] Sebmaster: hmm, it will be boinc for chromium [17:08] hobs: seti at home for those whose home is the browser [17:08] jetienne: hobs: thanks. are you a native speaker ? [17:08] hobs: yep [17:10] brianc has joined the channel [17:10] robotarmy has joined the channel [17:12] heavysixer has joined the channel [17:13] ringomanatee has joined the channel [17:13] heavysixer has joined the channel [17:15] narf_: is there any module which handles multipart request building besides isaacs/multipart-js? i'm a little bit scared by the 'completely-broken' disclaimer ;) [17:16] jetienne: narf_: have you looked at mikael request ? i dunno if it does [17:16] tanepiper: narf_: Mikeal's request lib [17:17] narf_: mhh which is where? [17:17] narf_: cant google it ;) [17:17] narf_: ahh [17:17] jetienne: multipart - (experimental) array of objects which contains their own headers and body attribute. Sends multipart/related request. See example below. <- from https://github.com/mikeal/request [17:17] narf_: https://github.com/mikeal/node-utils i guess [17:17] jetienne: narf_: the old link, pointing to the one i gave you [17:17] narf_: haha yup, thanks :) [17:18] brianloveswords has joined the channel [17:18] narf_: y, I guess that'll do fine. I need to test some file uploads [17:19] heavysixer_ has joined the channel [17:20] mynyml has joined the channel [17:21] pascalopitz: formidable handles multipart uploads [17:21] herbySk has joined the channel [17:21] pascalopitz: at least that's what I used [17:22] mynyml: is the order events are added to the event loop guaranteed to be the same they are executed in? [17:22] pascalopitz: https://github.com/felixge/node-formidable [17:22] Druide_ has joined the channel [17:22] mbl has joined the channel [17:23] gozala has joined the channel [17:24] asimismo has joined the channel [17:24] narf_: pascalopitz: I use formidable to parse them. But I need to build requests ;) [17:25] pascalopitz: ah, sorry ... too many windows open to read properly .... [17:25] pascalopitz: ACTION is a lazy git [17:25] tmzt_: how did I miss this? http://feedproxy.google.com/~r/Phoronix/~3/CDW-gE8xF_8/vr.php [17:25] sh1mmer has joined the channel [17:26] jtsnow has joined the channel [17:26] dubbe has joined the channel [17:27] dubbe: Hello... i installed connect-auth and it broke express. I guess it has to do with express 1 not working with connect 1. Should i downgrade connect or try to install node 0.5.0 and express 2? [17:27] ringomanatee: Go V8 [17:27] heavysixer_ has joined the channel [17:28] herbySk has joined the channel [17:29] arnorhs_ has joined the channel [17:32] Sebmaster: a single javascript engine support by all browsers and supported by all vendors would be nice [17:32] hornairs has joined the channel [17:32] Sebmaster: instead of 4 major ones, which differ that much [17:34] mikegerwitz: Sebmaster: I like the competition. It improves quality of the various engines. I'd rather have each engine conform strictly to the specification. I think they're getting onto the right track. [17:34] Ond: Which express are you using dubbe? [17:34] pascalopitz: mikegerwitz++ [17:35] dubbe: Ond: how can i check? [17:35] Ond: npm ls installed [17:35] Ond: Should give you the version [17:35] msch_ has joined the channel [17:36] Ond: | grep express [17:36] dubbe: express@2.0.0beta [17:36] Ond: Ding ding ding [17:36] dubbe: ah... i see [17:36] Ond: MIght want to downgrade [17:36] Ond: I couldn't get beta working myself [17:36] dubbe: i didn't think it installed the beta but the latest stable [17:36] asdfsafdsa: whats new in beta? [17:36] Ond: I assumed the same [17:36] msch_ has joined the channel [17:37] Ond: By the way it might not let you install the previous express on any node version other than 0.4.2 [17:37] tosh has joined the channel [17:37] timmywil has joined the channel [17:37] dubbe: looks like it doesnt allow me to install on node 0.4.0 [17:38] Ond: Though common sense would incline you to think otherwise [17:38] Ond: Install... the previous express? [17:38] dubbe: yeah, that worked... strange [17:39] dubbe: But then I got the "Cannot read property 'prototype' of undefined... [17:39] Ond: Beats me [17:39] dubbe: Me too :) [17:40] dubbe: gonna try and downgrade node to 0.3.x [17:42] Ond: "any node version other than 0.4.2 " and by that I meant any version over 0.4.0 [17:42] dominic_ has joined the channel [17:43] dubbe: ah... think i had 0.4.1 so i am going to try 0.4.0 first then [17:43] niklasfi has left the channel [17:43] dubbe: have to experiment with diffrent node, express and connect-versions until i find three that match :) [17:44] asdfsafdsa: is there a database that lets me have recursive objects? [17:44] marcello3d: what are the most popular test frameworks for node.js? [17:44] marcello3d: slash what do you guys like most? [17:45] Ond: What I did, dubbe, is I uninstalled the beta express then cloned the previous express (1.0.8) repository from github, then linked it via npm [17:46] Ond: And... this time it didn't give me any versioning errors [17:46] Ond: Which it shouldn't because it works just fine and dandy. [17:46] galaxywatcher has joined the channel [17:46] dubbe: i think i've got something going here... node 0.4.0, express 1.0.7 and just downgraded connect to 0.5.10 [17:46] Ond: 1.0.8 express should work with the latest connect [17:47] Ond: And with the latest node [17:47] Ond: But npm will refuse 1.0.8 express unless you clone from github or specify some parameter to install that I'm unaware of [17:47] Ond: (on the latest node that is) [17:49] dubbe: how do i link it in with npm? [17:49] Ond: npm link [17:49] dubbe: ah [17:49] Ond: And specify the directory [17:51] Ond: Though you can probably just give npm a link to the github repository and it'd handle the rest, not sure [17:51] Ond: And I'm not sure if doing that will avert the versioning errors [17:51] Ond: But I know that the method I described works [17:51] Ond: (and it shouldn't, but thankfully it does) [17:52] dubbe: yeah, i just need it to work. have an assignment due next week [17:52] Ond: I hear ya [17:53] dubbe: it worked as a charm until i tried to install connect-auth [17:53] Ond: Does connect-auth have some features that connect doesn't have by default [17:53] Ond: Allow me to investigate [17:54] ringomanatee: ACTION is about to blow through node 0.4.0 and express [17:54] hobs: hey ond [17:54] ringomanatee: ACTION fully expects it to blow [17:54] arnorhs_ has joined the channel [17:54] heavysixer has joined the channel [17:55] Ond: I'm pretty sure you can just use connect middleware instead, dubbe [17:55] Ond: Hey hobs [17:55] dominic_ has joined the channel [17:55] Ond: Are you THE hobs from you would know where? [17:55] hobs: yep [17:55] hobs: I figured youd be as well [17:55] dubbe: ah, gotta get this to work first :) [17:55] Ond: I didn't know that you had interest in node. We should chat [17:55] hobs: yeah its pretty cool [17:55] heavysixer_ has joined the channel [17:55] dominic_ has joined the channel [17:56] hobs: just started wading into it the last few days reading watching node tutes with pedro [17:56] hobs: I think I am going to use it to try and write a custom tcp server for a friends game [17:56] Ond: Don't know who pedro is but cool. I've been working with it for a few months so if you want to talk about anything say the word [17:56] Ond: Zok's getting into it too :) [17:57] hobs: I will! http://nodetuts.com/index.html [17:57] hobs: (for pedro) [17:57] Ond: Ah [17:57] heavysixer__ has joined the channel [17:57] ryanfitz has joined the channel [17:57] heavysixer___ has joined the channel [17:58] Sebmaster has joined the channel [17:59] maushu: pedro teixeira? [17:59] hobs: yes [17:59] [[zz]] has joined the channel [18:03] dubbe: I got everything working... node 0.4.1 express 1.0.7 and connect 0.5.10 [18:03] NuckingFuts has joined the channel [18:03] dubbe: it works and I am happy... not gonna try and meddle with any other versions [18:03] Ond: Cool [18:03] wav1 has joined the channel [18:03] nico103 has joined the channel [18:03] Hello71 has joined the channel [18:03] Hello71 has joined the channel [18:03] dubbe: After the project is done, i will try and upgrade [18:04] pascalopitz has joined the channel [18:05] markstory has joined the channel [18:06] NuckingFuts: LMAO I know somebody who's trying to port their Ruby dAmn bot to Node.js [18:06] wav1 has left the channel [18:06] NuckingFuts: I may have competition now XD [18:06] NuckingFuts: And we may have yet another convert 8D [18:06] Aikar: irc bot? [18:06] msch has joined the channel [18:06] Aikar: quite a few irc bots already [18:07] NuckingFuts: Aikar: Not IRC [18:07] NuckingFuts: dAmn, as in deviantART Message Network [18:07] Aikar: oh [18:07] Aikar: dont use acronyms noone knows :p [18:07] NuckingFuts: It's deviantART's chats. Pretty big bot developer community there [18:07] NuckingFuts: Aikar: I figured people would say 'dAmn doesn't sound like IRC to me' [18:08] Aikar: i thought you was using it as an expression of feelings towards their bot! [18:08] NuckingFuts: lol [18:08] NuckingFuts: Aikar: Nah, my bot is better. It's in Node.js already [18:08] heavysixer has joined the channel [18:08] NuckingFuts: Plus I'm fluent-er in JS than they are :P [18:09] NuckingFuts: So I know the common pitfalls with scope and such. [18:09] NuckingFuts: They showed me their core, and I sorta snickered and said to myself "man, there's so much potential for scope issues right here" [18:11] NuckingFuts: So, I think I'm receiving "phantom fin packets" [18:12] isaacs has joined the channel [18:13] dominic_ has joined the channel [18:13] mtn360 has joined the channel [18:13] mrlase: Having trouble setting session data - http://pastebin.com/gRCnATMt - keep getting a typeerror when trying to set session data... [18:13] patcito has joined the channel [18:14] NuckingFuts: Is there some way to get the raw data for the last, like, 5 minutes of socket activity? [18:15] NuckingFuts: I wanna figure out why my socket keeps dying on me, and I think some clues will probably show up in the past 5 minutes :V: [18:16] marcello3d: NuckingFuts: how old are you? [18:17] NuckingFuts: marcello3d: Why? [18:17] __tosh has joined the channel [18:17] marcello3d: just curious :) [18:17] marcello3d: if I had to guess, 15 +/- 2 [18:17] NuckingFuts: marcello3d: 15 + 2 [18:17] NuckingFuts: ;-) [18:17] asdfsafdsa: lol he does sound a little young [18:18] eventi has joined the channel [18:18] ringomanatee: ACTION is curious - where does he rate? [18:18] davidascher has joined the channel [18:18] mikegerwitz: marcello3d: You should work at one of those amusement park stands that guess your age/weight/etc. :) heh [18:18] marcello3d: mikegerwitz: no thanks ;D [18:18] NuckingFuts: mikegerwitz: To be fair, he was pretty far off, it was his margin of error that saved him lol [18:18] ringomanatee: Yes but make sure to stick '(emotional)' on the front to save money [18:18] heavysixer_ has joined the channel [18:18] atiti has joined the channel [18:19] NuckingFuts: ringomanatee: Call it web 2.0, toss in some buzzwords 8B [18:19] marcello3d: ringomanatee: I haven't seen you talk enough to say [18:19] mtn360: Any crypto guys here? I'm searching for an equivalent to "aespipe -O" for crypto.createDecipher , so I can set the IV offset. I'm implementing in-stream decoding with "content-range" support! Is this be possible without patching the crypto.cc/crypto.js stuff? Maybe using the undocumented crypto.createDecipheriv ? [18:19] rfay has joined the channel [18:19] otaku_coder has joined the channel [18:20] mikegerwitz: mtn360: I use crypto.createDecipheriv to set the IV and it works well [18:20] mikegerwitz: mtn360: Though Ryan did mention that the API may change in the short future, so keep an eye out [18:20] asdfsafdsa: when i read IV i think of pokemon [18:20] NuckingFuts: mikegerwitz: The API for crypto? [18:20] NuckingFuts: Or API in general? [18:20] mikegerwitz: NuckingFuts: I believe that's what he was implying, yes [18:21] mikegerwitz: crypto [18:21] mtn360: mikegerwitz: awesome, how to compute the iv? [18:21] NuckingFuts: Okay, had me scared for a moment. [18:21] dgathright has joined the channel [18:21] tfe_ has joined the channel [18:21] mikegerwitz: mtn360: I haven't used aespipe. Does it compute the IV for you. i.e....do you need the IV to be computed to decrypt something with a computed IV? [18:22] davidc_ has joined the channel [18:22] mikegerwitz: mtn360: Otherwise you just generate a random one [18:22] mikegerwitz: mtn360: Then store it for deciphering [18:22] __tosh has joined the channel [18:23] KRBssa has joined the channel [18:23] mtn360: mtn360: encoding is done using native openssl. decoding with crypto.createDecipher which works fine if i want to read the file from the beginning ;-) but when i want to support content-range's, i need to define the offset from the encrypted data stream to succesfully decrypt it. [18:23] otaku_coder: hi, just updated to express v2.0.0beta and now experiencing the following error when using partials http://pastebin.com/qWL9wYKj any ideas? [18:25] mtn360: the encrypted data is not read from the beginning in that case… when content-range is 1300-*, i have to read the file from byte 1024… to successfully decode things, i need to specify the iv offset.. in aespipe the equivalent is set option -O to do so [18:25] heavysixer has joined the channel [18:25] mikegerwitz: mtn360: Oh, I see what you're saying. Interesting. I've never tried that before. Whether or not that will actually work depends on what block cipher you're using. For example, AES-CBC (the popular/more secure one) XORs with the previous block, making what you're trying to do impossible [18:26] Yuffster has joined the channel [18:26] mikegerwitz: mtn360: AES-EBC is insecure, but maybe it'll work..? :S But I woudln't recommend: http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation [18:26] Stan____ has joined the channel [18:26] mikegerwitz: mtn360: You're able to do it successfully with aespipe? [18:26] mtn360: it works great on the shell with AES-CBC :-) [18:26] mtn360: yes, with openssl [18:26] mtn360: aespipe also uses openssl [18:27] mtn360: it works well with aespipe :-) [18:27] n00dles has joined the channel [18:27] mrlase: otaku_coder, how many of those error messages are you getting? Do they repeat? [18:27] heavysixer_ has joined the channel [18:27] mikegerwitz: mtn360: I should have considered my statement before stating it then. That does make sense. [18:27] hij1nx has joined the channel [18:28] mikegerwitz: mtn360: I'm honestly not sure. You'll have to look into how aespipe works : / [18:28] mikegerwitz: mtn360: I misinterpreted your original question [18:28] nivoc has joined the channel [18:28] mtn360: mikegerwitz: how to you compute the iv you give to crypto.CreateDecipheriv ? [18:28] Me1000 has joined the channel [18:29] mikegerwitz: mtn360: Our implementation doesn't require us to compute the value. I know OpenSSL calculates it from the salt and the given password, but in our implementation we use the IV similar to the salt, so it's unnecessary. It's a randomly generated IV. [18:29] mikegerwitz: mtn360: So are you asking how OpenSSL computes the IV? [18:30] otaku_coder: mrlase: yes they do, fill up my console [18:30] mtn360: mikegerwitz: nope, how you do this when you want to use crypto.CreateDecipheriv, which requires the iv as an input argument [18:30] mtn360: mikegerwitz: yeah, we recognized you're not using salt [18:30] mtn360: mikegerwitz: [18:31] mrlase: otaku_coder, I ran into the same problem. There's a bug open about this on github right now, tj said something about the error was being handled recursively. Are you passing any variables to the partial? [18:31] ringomanatee: where is the "qs" module/package? [18:31] mtn360: we can already decode stuff we crypted with openssl on the console with nodejs [18:31] heavysixer_ has joined the channel [18:31] dnolen has joined the channel [18:31] otaku_coder: mrlase: I am passing variables to the view, but just a simple string, much like the example docs [18:32] heavysixer has joined the channel [18:32] mikegerwitz: mtn360: By "this", if you mean reading block N, we do not. I misinterpreted your original question :) [18:32] dve_ has joined the channel [18:32] ringomanatee: tjholowaychuk: ping [18:33] mtn360: mikegerwitz: hm, ok :-) [18:33] n00dles has left the channel [18:33] heavysixer_ has joined the channel [18:34] themiddleman_itv has joined the channel [18:34] _rain has joined the channel [18:34] losing has joined the channel [18:34] mtn360: mikegerwitz: i still think we still just talk about cross purposes :-) [18:34] marcello3d: is there an easy way to test markdown? [18:35] marcello3d: aha http://daringfireball.net/projects/markdown/dingus [18:35] otaku_coder: mrlase: issue upvoted, thanks for the headsup [18:35] asimismo has joined the channel [18:36] mikegerwitz: mtn360: Hmm? [18:36] warz has joined the channel [18:37] mikegerwitz: mtn360: So you do not pass any IV at all to aespipe? [18:37] mtn360: mikegerwitz: nope, just an offset [18:37] mikegerwitz: mtn360: What format is the encrypted data in? Does it contain a salt (OpenSSL-style), or must you provide a key? [18:38] mtn360: mikegerwitz: "aespipe -O sectornumber : Set IV offset in 512 byte units. Default is zero. Data is encrypted in 512 byte CBC chains…" [18:38] mtn360: mikegerwitz: no salt, just the key [18:40] _rain has joined the channel [18:40] Stan____ has left the channel [18:40] rfay has joined the channel [18:40] mikegerwitz: mtn360: http://www.rfc-ref.org/RFC-TEXTS/3826/chapter3.html [18:40] mikegerwitz: mtn360: Section 3.1.2.1 describes how the IV is calculated... [18:41] mikegerwitz: mtn360: I'm unsure if this will help or not, but I do not have experience with calcuating IVs in the manner you're attempting [18:41] perezd has joined the channel [18:41] timmywil has joined the channel [18:43] dwww has joined the channel [18:45] mtn360: mikegerwitz: just to let you know what the use case is : our user uploads are getting encrypted and send to s3, basically using command line stuff… but when a user wants to GET a attachment, we proxy the request to s3 (including the s3 header signing stuff) and decrypt every chunk we get from s3 and send it to the client… works great already, but when the user requests a specific byte range, we have to do some extra work here ;-) [18:45] mtn360: mikegerwitz: thanks, I'm looking into it ;-) [18:45] foo-bar_ has joined the channel [18:45] mikegerwitz: mtn360: Ah, makes sense [18:45] mikegerwitz: mtn360: In the end it may be easier just to grab the aespipe source and see what it's doing [18:46] mtn360: mikegerwitz: thats what we are doing right now :-) will keep you posted... [18:46] eventi has joined the channel [18:47] mikegerwitz: mtn360: Yeah, if you let me know what you find that'd be great. I'm rather interested [18:47] johnmclear has joined the channel [18:48] johnmclear: This isn't for me personally so please don't flame me... What is the status of running NodeJS on windows without Cygwin? Is there any plan to support NodeJS natively in Microsoft Windows? Sorry and thanks :) [18:48] stagas has joined the channel [18:49] heavysixer_ has joined the channel [18:49] tmpvar has joined the channel [18:50] mlncn has joined the channel [18:52] luc1k has joined the channel [18:52] SamuraiJack__ has joined the channel [18:52] BrianTheCoder has joined the channel [18:52] Evet_ has joined the channel [18:54] aguynamedben has joined the channel [18:54] jeromegn: anybody using duostack here? having trouble with express :S [18:58] thalll has joined the channel [18:58] tfe_: jeromegn: i'm from duostack. do you want to troubleshoot over in #duostack? [18:58] Croms has joined the channel [18:58] Apes has joined the channel [19:01] Remoun has joined the channel [19:05] Croms has joined the channel [19:06] DJazz has left the channel [19:07] __tosh has joined the channel [19:07] gozala has joined the channel [19:08] tk has joined the channel [19:13] mikeal has joined the channel [19:13] mattikus has joined the channel [19:13] msch has joined the channel [19:14] Sebmaster has joined the channel [19:15] markstory has joined the channel [19:18] isaacs has joined the channel [19:18] lazukars has joined the channel [19:19] lazukars: Anyone know of a good and up-to-date router module? [19:21] blueadept2 has joined the channel [19:22] daveluke has joined the channel [19:22] dve_: connect? [19:22] dve_: express [19:26] tim_smart has joined the channel [19:27] tim_smart has left the channel [19:27] johnmclear: This isn't for me personally so please don't flame me... What is the status of running NodeJS on windows without Cygwin? Is there any plan to support NodeJS natively in Microsoft Windows? Sorry and thanks [19:27] daveluke_ has joined the channel [19:28] hooman has joined the channel [19:28] Sebmaster: no plans for native support afaik [19:28] dominic_ has joined the channel [19:29] harth has joined the channel [19:29] hooman: Please all speak [19:31] hooman: Good girls speak [19:31] marienz: ACTION raises another eyebrow [19:32] johnmclear: Great :) [19:32] johnmclear: At least I have that answer [19:32] johnmclear has left the channel [19:32] marienz: hrm [19:32] mackry has joined the channel [19:32] hooman has left the channel [19:34] anno^da has joined the channel [19:35] brianloveswords has joined the channel [19:35] anno^da: Hello. Does someone of you have a no.de account and can tell me how to manage the dependencies my app has? (I don't like to npm install my dependencies manually) [19:36] isaacs: anno^da: at this time, you can either log in and npm install them (which you said you don't like to do, I'm sorry) or bundle them in your app's node_modules directory [19:36] anno^da: isaacs: Ah ok find I just read through the wiki :-). [19:36] dominic_ has joined the channel [19:36] AphelionZ has joined the channel [19:37] hoodoos has joined the channel [19:37] eventi: isaacs: can npm do that step for you? bundling something into node_modules? [19:37] markwubben has joined the channel [19:37] anno^da: isaacs: Is there something planed for the future that makes such dependency management possible? [19:37] eventi: beer! [19:37] isaacs: eventi: sure. npm bundle install blah [19:37] isaacs: anno^da: yes. [19:37] asdfsafdsa: does no.de let you ssh? [19:37] isaacs: asdfsafdsa: yes. [19:37] hoodoos: hello, ppl. does 0.4.2 has a really great speed advantage over 0.2.5 e.g.? it's just amazing, just want a proof [19:37] isaacs: asdfsafdsa: no root, though. [19:38] asdfsafdsa: sweet [19:38] isaacs: no sudo [19:38] AphelionZ has left the channel [19:38] fly-away has joined the channel [19:38] jashkenas has joined the channel [19:39] anno^da: isaacs: so bundling would be the way to go at the moment for testing some things on my node machine [19:39] isaacs: anno^da: sure. or log in and do `npm install`. [19:39] isaacs: anno^da: if you bundle andpush, you have to add the node_modules folder to your git repo [19:40] isaacs: anno^da: bundling will be WAY slicker in npm 1.0. that's what install will do by default. [19:40] anno^da: isaacs: ah I'm sorry I misunderstood your answer above. :-) [19:40] eventi: thx isaacs [19:40] stagas: isaacs: I think I found the strangiest bug. 'npm set logfd 3' won't let you set logfd to 1, 2 again and breaks npm, and the only fix is to 'npm set logfd 5' or edit .npmrc and remove the line. wtf? :) [19:41] anno^da: isaacs: Ah thats fine. So with npm 1.0 we will have all the dependencies included in the app directory automatically. [19:41] sstephenson: isaacs: how will bundle-by-default work with packages that install binaries? [19:41] isaacs: stagas: yeah, why are you changing the log file descriptor to a fd that doesn't exist. [19:41] isaacs: ? [19:41] isaacs: stagas: btw, this is neat: npm ls installed --outfd 3 --logfd 4 3>&1 4>installed.log [19:41] isaacs: stagas: since then bash will open up those file descriptors and point them at streams [19:42] stagas: isaacs: I wanted to change how verbose the log is I guess it's not the right cmd? [19:42] dve: i am wanting to build a module that polls an web-based API and emits events on new item or item changed... are there any existing modules, or what would be a good atrting point? [19:42] isaacs: stagas: nonono [19:42] isaacs: stagas: you want loglevel, not logfd [19:42] isaacs: fd = "file descriptor" [19:42] isaacs: stagas: loglevel = (silent, win, error, warn, info, verbose, silly) [19:43] tc77 has joined the channel [19:43] daveluke has joined the channel [19:43] isaacs: stagas: also, -s is a shorthand for --loglevel=silent, -d = --loglevel=info, -dd = loglevel=verbose, -ddd = loglevel=silly [19:44] stagas: isaacs: thanks, is there a --help for config options? [19:44] hoodoos: isaacs, is 0.4.2 is REALLY faster then 0.2.5? [19:44] isaacs: stagas: npm help config [19:45] isaacs: stagas: the plan for the future is for the default to be "warn", and then dump the "silly" output to a file on failure and tell you to send the file to me. [19:46] isaacs: hoodoos: depends on what you're doing [19:46] isaacs: hoodoos: i'd be very surprised if 0.4.2 is *slower* in any relevant way, since we're all nuts about speed, and it's got way more development behind it. [19:46] isaacs: hoodoos: but really, you gotta run your benchmarks for what you'er doing. i can't honestly tell you that i know it's faster for all things, because i haven't tested all things [19:47] hoodoos: isaacs, well, we ran same code on 0.2.5 and 0.4.2 and 0.4.2 was like 4 times faster [19:47] isaacs: hoodoos: then i don't think you need me to convince you of anythign :) [19:47] hoodoos: i just can't believe it :) [19:47] hoodoos: nice news) [19:47] isaacs: hoodoos: believe it! [19:48] isaacs: hoodoos: if you profile your code in both places, you might be able to find out where the bottlenecks were. [19:48] isaacs: hoodoos: no.de has some slick real-time dtrace heat-map graphing stuff now. could be handy. [19:48] hoodoos: isaacs, what is no.de? debug? [19:48] isaacs: hoodoos: it's a website where you can host your node programs. [19:49] hoodoos: domain name is awesome [19:49] isaacs: hoodoos: you should email sh1mmer and tell him that you'd like to write up a little comparison and show how node got 4x faster and how joyent's tools helped you figure that out. [19:49] hoodoos: :) [19:49] heavysixer has joined the channel [19:49] isaacs: hoodoos: i bet he'd be able to find an IP address for you in exchange for the good press :) [19:50] mlncn has joined the channel [19:51] hoodoos: we're starting our project in production in like 2 next weeks, it's written in node completely [19:52] stagas: I want a node p2p module [19:53] stagas: encrypted and unstructured [19:54] micheil has joined the channel [19:54] NuckingFuts: I've been on he fence for a while on whether to use 'function foo(){}' or 'var foo = function(){}' - while I can see the pros and cons, I'm not sure which I ought to use :/ [19:55] asdfsafdsa: the second one [19:55] micheil: you can do both, NuckingFuts, var foo = function foo() {} [19:55] kriszyp has joined the channel [19:55] NuckingFuts: And then, since I'm in another function, should I do this.foo or var foo? [19:55] NuckingFuts: I use the ol' closure method of object definition [19:55] micheil: you'll only have this.foo if foo is added as a property to `this` scope [19:56] micheil: just doing function foo(){} in bar() won't give you this.foo / bar.foo [19:56] NuckingFuts: Well, I'm gonna use a closure with a returned object for this [19:56] micheil: var's in functions tend to be more private, where as instance variables (this.*) tend to be more public [19:57] NuckingFuts: What's the best way for keeping private and public variables, anyways? [19:57] zzak: use a closure [19:57] NuckingFuts: Because I'm dealing with 3rd-party addons accessing the object, with private information handled internally [19:58] NuckingFuts: zzak: So that is the best way? [19:58] zzak: yeh i like to prefix them with underscores too [19:58] asdfsafdsa: wow i've literally never had to have private variables in javascript objects [19:58] vuliev has joined the channel [19:58] NuckingFuts: zzak: Same here :P [19:58] DrStrange has joined the channel [19:58] micheil: NuckingFuts: to be honest, there's no such thing as private and public variables in JS [19:59] clevrmunke has joined the channel [19:59] NuckingFuts: micheil: Aye, but a closure should enable me to emulate that [19:59] dominic__ has joined the channel [19:59] csanz has joined the channel [19:59] NuckingFuts: If something needs to be private, I just don't include it in the return object [20:00] mikeal has joined the channel [20:00] mmattozzi: coming from a java background, using a language without privates is so liberating [20:01] Aikar: that phrase could be so misread [20:01] Aikar: cause node def has a package [20:01] NuckingFuts: Aikar: I facepalm-loled [20:01] dve: hahaha [20:02] mmattozzi: or what's that c++ line … a friend can just a friend's privates [20:02] mmattozzi: can touch [20:02] jimt has joined the channel [20:02] Aikar: i think a friend can only touch your protected things :p [20:03] asdfsafdsa: yeah i hate java now [20:03] mmattozzi: but yeah, the node exports/package stuff does keep your code from turning into total chaos [20:03] mmattozzi: it's a good balance [20:03] NuckingFuts: Who doesn't hate java? [20:03] mmattozzi: well, the jvm is great [20:04] Aikar: at using memory [20:04] asdfsafdsa: lol [20:04] zzak: ACTION eats cookies [20:04] NuckingFuts: Aikar: hear hear [20:05] Aikar: if you want an app to use alot of memory setup a loop to constantly do new Buffer(1024*1024); and store them all in an array [20:05] dve: i am wanting to build a module that polls an web-based API and emits events on new item or item changed... are there any existing modules, or what would be a good starting point? [20:06] Aikar: dve: EventEmitter, http [20:06] Aikar: return an EventEmitter, setup a timer to poll the API, and monitor data, when it finds change, emit event [20:07] dve: Aikar: but i may want 3 or 4 of these running in parallel [20:07] Aikar: no problem [20:07] Aikar: welcome to the async world of node :) [20:07] Kryckan has joined the channel [20:07] jimt has joined the channel [20:07] dve: when you say setup a timer, do you mean just using setTimeout? [20:07] Aikar: the question is do you want them all to emit on the same emitter, or each have their own emitter [20:07] Aikar: setInterval [20:08] Aikar: setTimeout shouldnt be used for repeated events [20:09] dve: no I think each instantiation should have its own emitter [20:09] Aikar: then do module.exports = function (APIUrl) { var emitter = new EventEmitter; setInterval(someFnToCheckApi); return emitter; } [20:09] Stan____ has joined the channel [20:10] Aikar: then in the function you passed to someFntoCheckApi do it as a closure that does emitter.emit('blah') [20:10] Stan____ has left the channel [20:10] Aikar: then var apiwatcher = require('yourmodule'); apiwatcher('http://foo.com').on('event, fn); apiwatcher('http://bar.com').on('event', fn); [20:10] malkomalko has joined the channel [20:11] dve: Aikar: ok that makes sense.. but does the set interval not lock stuff up? [20:11] Aikar: nope [20:11] Aikar: setInterval is simply a repeating version of setTimeout [20:11] heavysixer has joined the channel [20:12] Aikar: nothing in node 'locks up' [20:12] Aikar: var myinterval = setInterval(function() { console.log('foo'); }, 1000); [20:12] Aikar: will print foo every 1s [20:12] Aikar: then clearInterval(myinterval); to stop it [20:13] jimt has joined the channel [20:13] dve: Aikar: thanks, will go experiment! [20:13] Aikar: dve: node was created for the sole purpose of developing in a pure non blocking environment [20:13] atiti has joined the channel [20:14] heavysixer has joined the channel [20:14] Aikar: EVERYTHING is designed to not block (with exception to calls on fs and such where you specifically tell it to block with "Sync") [20:14] Aikar: if your not familiar with event driven async programming style, do a bit of research on the subject first [20:14] anno^da: has someone managed to install qunit on a no.de smartmachine? [20:14] Aikar: its very different than traditional languages like PHP [20:15] micheil: Aikar: s/languages/platforms [20:15] Aikar: semantics ;p [20:15] micheil: :P [20:15] mmattozzi: is PHP a platform or a shit storm? [20:15] Aikar: both [20:15] Aikar: ACTION is a PHP developer [20:15] NuckingFuts: its a shit platform [20:15] NuckingFuts: But still quite useful [20:15] micheil: ACTION was never a PHP developer, but did do a fair bit of it back in the day.. [20:16] Aikar: PHP dev for the day job that pays bills, Node Dev for personal projects and future financial security ;) [20:16] tiemonster has joined the channel [20:16] mmattozzi: php always does seem to have that function you're looking for [20:16] micheil: oh. man; I just used "back in the day...", I feel old >_> [20:16] asdfsafdsa: why doesn't node have curl? [20:16] insin: and always right there in the global scope! [20:16] NuckingFuts: Ya know what'd be cool? If EventEmitters could have events grouped, like if I bound 'foo.bar#abc', it'd respond if I fired the event 'foo', 'foo.bar', or directly accessed it by the name ('#abc') [20:17] insin: ACTION smirks [20:17] mmattozzi: heh [20:17] Aikar: thats why php is popular, so much is built into the lang, the only problem is the lang is a freaking disoganized inconsistent mess with mediocre performance [20:17] tiemonster: I know I can bring packages into the current namespace using require(). Is there a way to go the other way around - to expose an API for use inside of a package? [20:17] NuckingFuts: Aikar: Not to mention the shoddy object-oriented stuff lol [20:17] Spion__ has joined the channel [20:17] mmattozzi: node was smart to get npm up and organized so quickly… then its base api can stay clean [20:17] Aikar: NuckingFuts: its not that bad.. im biased from being a PHP dev but i like its class system. I just hate they used such a freaking lame namespace operator [20:17] KRBssa has joined the channel [20:18] Aikar: the DEFINITION of :: makes it a perfect namespace operator, even if it is already used. it works fine in C++ for both puposes! [20:18] insin: and :: and -> [20:18] NuckingFuts: Aikar: They just kinda threw it together though. I mean, it works fine, it's just kinda... shoddy? Like they just sorta shoved it in as an afterthought. Probably because it *was* thrown in as an afterthought. [20:19] NuckingFuts: mmattozzi: I think isaacs is to thank for that, not so much node itself :P [20:19] insin: I've never NOT got the feeling that it's sigils are only there because they found it too hard to write a parser without them [20:19] mmattozzi: well isaacs is pretty right with ry, right? [20:19] mmattozzi: tight [20:19] Aikar: NuckingFuts: properly using PHP5 OO can be a clean codebase. I started developing a game server in PHP (... im way more experienced than a typical PHP dev... I know a few tricks and it was way out of the ordinary how I wrote it :P), and i was quite fond of the OO codebase I was making [20:19] insin: s/it's/its/ [20:20] NuckingFuts: mmattozzi: Yeah, I hear they're like Bert and Ernie lol [20:20] Aikar: the autoloader concept was also quite nice [20:20] mmattozzi: ha the bert and ernie of non-blocking code [20:20] aho has joined the channel [20:20] insin: hey Bert [20:21] Aikar: new Weapons_PlasmaBeams_SingleShot loading lib/classes/Weapons/PlasmaBeams/SingleShot.php is a nice style [20:21] NuckingFuts: Aikar: PHP is a beautiful language, it's just... Rather slow, relative to things like NodeJS [20:21] Aikar: NuckingFuts: yep is why i moved to node [20:21] NuckingFuts: Aikar: Still faster than Ruby, in general though XD [20:21] micheil: hm... [20:21] Aikar: http://aikar.co/2010/12/29/developing-mmo-game-servers-in-php-javascript/ ive got an article about my experiences there [20:22] Aikar: i actually get a few hits from google every week on that article [20:22] Sebmaster has joined the channel [20:22] asdfsafdsa: ive never use ruby [20:22] sveimac has joined the channel [20:22] tiemonster: ACTION checks to make sure he's in the right channel [20:22] micheil_mbp has joined the channel [20:23] atiti has joined the channel [20:23] asdfsafdsa: ruby sounds like everything node.js is anyway [20:23] Aikar: rubys not async is it? so no its not lol [20:24] asdfsafdsa: and it's slower [20:24] tiemonster: anyone? CommonJS implementation in Node.js? [20:24] johans_ has joined the channel [20:25] mlncn has joined the channel [20:25] perezd has joined the channel [20:25] Aikar: tiemonster: ? [20:26] NuckingFuts: Ruby is also gheeeeeeey, unlike NodeJS [20:26] tiemonster: I know I can bring packages into the current namespace using require(). Is there a way to go the other way around - to expose an API for use inside of a package? [20:26] Aikar: there are no namespaces in node [20:26] tiemonster: like an imports object? [20:26] Aikar: you want a keyword avail EVERYWHERE? [20:26] tiemonster: eh, yes there is [20:26] tiemonster: no - I want to explicitly pass namespace to the module [20:26] jtsnow has joined the channel [20:26] tiemonster: so I don't have to re-require() them in each modeule [20:27] tiemonster: *module [20:27] Aikar: like i said, there is no namespaces, you cant do that w/o alot of hackery [20:27] Aikar: the only way to expose a variable to other modules is to put it in global [20:27] Aikar: which is then in EVERY module [20:27] tiemonster: namespace == symbol table [20:27] Aikar: theres only 1 table [20:27] Aikar: your apps [20:27] Aikar: require.cache [20:28] tiemonster: hmm [20:28] Aikar: each module is cached [20:28] matschaffer has joined the channel [20:28] roger_ has joined the channel [20:28] Aikar: if you do require('foo') it returns w/e the foo module exported [20:28] tiemonster: what about arrays and objects? [20:28] Aikar: any module that needs to use foo has to do the require line and give a reference to it in its own scope [20:28] Aikar: w/e the value of module.exports is when your module returns, is what the require() command returns [20:28] Aikar: objects = references in js [20:29] Aikar: so if module.exports = [1,2,3,4]; [20:29] tiemonster: So say I'm using an object like a hash table [20:29] Aikar: then var x = require('x') [20:29] tiemonster: configuration, for instance [20:29] Aikar: x will have the array [1,2,3,4] [20:29] Aikar: and if you x.pop(); [20:29] Aikar: every module that required x also got popped [20:29] tiemonster: how do I make that available in the modules I require() [20:29] tiemonster: ? [20:29] Aikar: put it in node_modules folder, or give relative path [20:30] Aikar: app/node_modules/config [20:30] Aikar: then require('config/myconfig.js'); [20:30] Aikar: or you can modify require.paths to inject your own path [20:31] Aikar: or.... and people will be opposed to this [20:31] tiemonster: what about some data structure I want all modules to have access to? [20:31] ngw has joined the channel [20:31] Aikar: on your apps init, do global.config = require('./config/blah.js'); [20:31] Aikar: then all modules can do config.xxx [20:31] Aikar: put it in global [20:31] jimt_ has joined the channel [20:31] Aikar: but note, w/e module assigns it to global wont have a var named for it yet, so use this sytnax: [20:31] boaz has joined the channel [20:31] tiemonster: ah - that's a global object like window in the browser? [20:32] Aikar: var config = global.config = require('./config'); [20:32] Aikar: yes [20:32] Aikar: global === window in node sense [20:32] tiemonster: ok [20:32] tiemonster: hmm [20:32] Aikar: just the term window makes no sense in node; ) [20:32] tiemonster: right [20:32] Aikar: do that line before requiring any module... [20:33] tiemonster: makes sense [20:33] Aikar: as if you require('foo') then modify global, foo wont have the global [20:33] tiemonster: right [20:33] tiemonster: global before imports [20:33] Aikar: yep [20:33] Aikar: so your apps initiator, load all globals, then load the rest of app [20:34] tiemonster: I'm trying to create a plugin architecture, and there are some things that I want to expose to all of the plugins [20:34] Aikar: node.js is really a very different environment than most other languages.. you have to think very differently to accomplish your goals [20:34] Aikar: get all the java paradigms out of your head ;) [20:35] insin: it's just... lovely for the experienced JavaScripter [20:35] asdfsafdsa: sometimes i wonder how async it is [20:35] insin: :wub: [20:35] tiemonster: wow - it for real puts it in the global namespace [20:35] tiemonster: global.test can be accessed with just test [20:35] asdfsafdsa: like with var a = 1; var b = 2; which one executes first? [20:35] Aikar: tiemonster: its kinda tricky [20:35] insin: erm [20:35] tiemonster: Aikar: I program primarily in javascript these days [20:36] mackry has joined the channel [20:36] tiemonster: it's probably better to declare one global, and attach everything to that [20:36] Aikar: its global because the node module loader populates a modules context with w/e is in the global var on load [20:36] sveimac has joined the channel [20:36] Aikar: tiemonster: that can be true [20:36] Aikar: itll be safer to have 1 global [20:36] pHcF has joined the channel [20:36] micheil: hmm... [20:37] insin: there, node-qunit can now be used to painlessly reuse tests originally written for the browser version [20:37] micheil: I'm needing a decent database to use with node, any recommendations? [20:37] asdfsafdsa: me too micheil [20:37] Aikar: micheil: i havent really worked with it yet but ive done a bit of research for that question for my own stuff, and im really sold on mongo [20:37] Nexxy has joined the channel [20:38] micheil: Aikar: true, mongo's pretty good, but I'm not sure on it. [20:38] zzak: postgres [20:38] Aikar: im looking to great a foundation that provides easy horizontal scaling, and mongo provides that [20:38] Aikar: create* [20:38] Kryckan has left the channel [20:39] _sri has joined the channel [20:40] Aikar: i intend to release the foundation im going to be building to open source. but not sure how i wanna handle licensing. considering having a commercial license (so its free for free apps, and for profit companys have to buy a license) [20:40] gozala has joined the channel [20:40] NuckingFuts: I hear Redis is a wonderful storage system? [20:41] insin: yes, for certain tyoes of data it's just perfect [20:41] NuckingFuts: I haven't much used it myself, but I've heard nothing but rave reviews. [20:41] Aikar: isnt redis a more plain k/v store? [20:41] NuckingFuts: Aikar: It seems much more than that to me [20:41] insin: it has some fundamental datatypes too [20:41] Aikar: oh right it does have querying doesnt it [20:42] NuckingFuts: It seems like it's got some interesting things, at the very least [20:42] insin: not really [20:42] NuckingFuts: I would love to see an SQL-style thing for objects. [20:42] Aikar: NuckingFuts: you mean like mongo, minus the SQL language interface for querying ;)? [20:43] NuckingFuts: Aikar: More for variables in JS [20:43] insin: a set theory-style thing for non-sets? [20:43] insin: ACTION stares [20:43] Aikar: oh so a lib that can walk objects to find data? [20:43] mmattozzi: NuckingFuts: you mean like an ORM? [20:43] johans_ has left the channel [20:44] mmattozzi: somebody must be cooking something like that up… but it's a big undertaking [20:44] NuckingFuts: I'd want to be able to do like '[{'name':'foo'},{'name':'bar'}].query('SELECT * WHERE name LIKE foo');' [20:44] Aikar: i think he means like foo = {bar:{baz:[{foo:{name:'john'}}]}}; then var result = query(foo, 'name=john') [20:45] Aikar: yea [20:45] jacobolus has joined the channel [20:45] NuckingFuts: So I could use SQL-style queries on an array of objects [20:45] NuckingFuts: Selecting based on values [20:46] insin: http://www.mongodb.org/display/DOCS/Querying [20:46] NuckingFuts: The main benefit I can see of an object-style querying system is the ability to use objects for columns. [20:46] Aikar: yeah mongo really provides great querying support, just minus the SQL syntax :P [20:46] Aikar: and being able to query into nested objects [20:47] NuckingFuts: Aikar: So it's a database system that can accept nested objects? [20:47] Aikar: yes [20:47] Aikar: its a db system of javascript objects [20:48] tiemonster: well, it has sets, which allows you to define Many-to-Many relationships [20:48] tiemonster: Aikar: not exactly true [20:48] Aikar: authors table : {id:3232, user: 'aikar', comments: [{title:'hi', msg: 'welcome to node!'}]} [20:48] tiemonster: MongoDB is a document storage system, not an object-oriented database [20:48] Aikar: users table* [20:48] jetienne_ has joined the channel [20:48] Aikar: tiemonster: i meant as in document == object [20:49] Aikar: its data set is exactly as you expect a javascript object to look really [20:49] tiemonster: there are object-oriented databases for Node.js which use MapReduce for querying [20:49] tiemonster: document != object [20:49] Aikar: it can be... [20:49] Aikar: or a string or a # [20:49] tiemonster: you won't get the behavior you're probably expecting from that [20:50] Aikar: {id:3232, user: 'aikar', comments: [{title:'hi', msg: 'welcome to node!'}]} [20:50] clevrmunke: http://try.mongodb.org/ [20:50] Aikar: thats a valid document [20:50] Aikar: thats also a javascript object [20:50] tiemonster: documented-oriented databases are great when not all documents with have all fields populated [20:50] tiemonster: they also allow for easy schema changes and migrations [20:51] tiemonster: if you're doing lots of aggregation and nested querying, a traditional relational database will provide better performance [20:51] clevrmunke: yeah, mongodb and couchdb are nice. for a comparison check out http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis [20:51] tiemonster: there are async adapters for MySQL, Postgresql, and Oracle, I believe [20:51] tiemonster: redis is awesome for unstructured data [20:51] tiemonster: crazy fast [20:51] tiemonster: each have their place [20:52] tiemonster: but it's like comparing apples to monkeys [20:52] heavysixer has joined the channel [20:53] Aikar: some people eat monkeys... [20:55] clevrmunke: has anyone tried http://blog.nodejitsu.com/micro-templates-are-dead yet? [20:55] insin: redis is amazing for real time/tracking stuff. You lose the icky feeling you got when you did that stuff in a relational DB (set views = views + 1!) and it goes like the clappers [20:56] edude03 has joined the channel [20:57] atiti has joined the channel [20:57] tiemonster: Aikar: ROFL. got me. [20:57] insin: clevrmunke: nope, but it reminds me of quertyemplates, albeit with a less horrible syntax [20:57] tiemonster: POLL: camel case for underscores for method names? [20:57] tiemonster: *or [20:57] mhausenblas has joined the channel [20:57] insin: in JS? camel [20:57] tiemonster: really? [20:57] mikegerwitz: tiemonster: camelCase for method [20:58] tiemonster: for method names? [20:58] micheil: good damn is npm slow at the moment [20:58] NuckingFuts: I just picked up MongoDB, I hafta try this shit. [20:58] tiemonster: I have always done camel case for class names and underscores for method names [20:58] jesusabdullah: Yeah, camelCase for pretty much everything in javascript [20:58] tiemonster: NuckingFuts: get mongoose for the ORM [20:59] clevrmunke: i 2nd mongoose [20:59] wav1 has joined the channel [20:59] insin: doesn't it look jarring w hen you're makinguse of all the camelCase in the std lib? [20:59] Aikar: i hate underscore anything [21:00] Aikar: _ is not as quick to hit as an uppercase letter is! [21:00] mikegerwitz: Aikar: CONST_VALS? [21:00] insin: methinks you're doing some premature optimisation there ;) [21:01] Aikar: when you program for a profession, your doing either _ or camelcase like every few seconds. thats alot of savings ;) [21:01] micheil_mbp has joined the channel [21:01] insin: have you measured? it's the first rule ;) [21:02] NuckingFuts: Hmm... Schemas? These look like constructors 8D [21:02] NuckingFuts: Well, similar [21:02] NuckingFuts: That could make my life sooooo much easier when making my chat server! [21:03] NuckingFuts: So, how do I make Mongo's server run? [21:03] Aikar: insin: I have a unique typing style, I don't do homerow. I can do camel case w/o moving my hands/fingers more than their normal movement. underscore requires a longer move to hit :P [21:03] heavysixer has joined the channel [21:03] NuckingFuts: mongod just disappears after a second :/ [21:03] mikegerwitz: Aikar: I'm not sure typing one extra char (underscore) is going to slow a developer down unless they type with two fingers...which, don't get me wrong, I've seen plenty of ._. [21:03] NuckingFuts: There any way to install MongoDB as a Windows Service? [21:03] mikegerwitz: Aikar: If you're just doing it because that's your style, that's fine. [21:03] mikegerwitz: Aikar: can't argue with that. [21:04] Aikar: mikegerwitz: I type with 2 fingers :P its just a different style you have to be use to.. and not change keyboards >_> [21:04] ceej has joined the channel [21:04] dominic__ has joined the channel [21:05] Aikar: since it requires being use to the spacing of each keys to know how far to move fingers to land on right key [21:05] Aikar: laptops kill the hell out of me ;( [21:05] xandrews has joined the channel [21:05] clevrmunke: NuckingFuts: did you create /data/db? [21:06] Aikar: well i guess you could consider me 4 fingers? lol left thumb on space bar, right pinky/ring on right shift key, pointers on D/K sides [21:06] micheil has joined the channel [21:06] vuliev: Has Geddy (the framework) stopped being maintained? [21:06] Aikar: I type faster than most people I know [21:06] clevrmunke: vuliev: i think express has more mindshare than geddy [21:07] Yuffster has joined the channel [21:07] mikegerwitz: Aikar: heh, fair enough [21:08] Astro has joined the channel [21:08] softdrink has joined the channel [21:08] tiemonster: I program in at least 5 languages every day. I have to compromise on coding standards between them all. [21:09] vuliev: clevrmunke: Yeah, I was wondering about that. Express it is, then. Thanks. :) [21:09] NuckingFuts: clevrmunke: I thought it meant .\data\db, so that's how I slipped up :P [21:09] NuckingFuts: I got it running tho yay [21:09] mikegerwitz: tiemonster: I agree. I'd never use camelCase in a language like C that has everything else in snake_case [21:09] tiemonster: express is Node.js approved for now [21:09] clevrmunke: if ur on windows than put it in C: [21:10] tiemonster: mikegerwitz: and if I'm switching back and forth between two languages, it's js and C++ [21:10] Aikar: tiemonster: heh, I just write CSS in my own syntax cause the way they do it on UX is fucking horrible (everything on 1 line.... so the file is selectors straight down...) [21:10] marcello3d has joined the channel [21:10] tiemonster: they have yaml to css compilers now ;-) [21:10] mikegerwitz: tiemonster: And then you have formatting standards for each project...heh [21:10] mikegerwitz: tiemonster: (fi they're not your own) [21:11] tiemonster: yeah - it's a lot to juggle [21:11] tiemonster: I've embraced the inevitable - I'll always be juggling [21:11] tiemonster: I keep all my docs handy [21:11] ryanfitz has joined the channel [21:11] mikegerwitz: tiemonster: yep.. [21:11] dve: are json.parse and strinify built into node? [21:11] tiemonster: and I constantly use js in c++ and vice versa. ugh. [21:11] tiemonster: dve: yes [21:11] dve: swewet [21:11] tiemonster: yep [21:12] Aikar: dve: built into V8 [21:12] tiemonster: well, yeah [21:12] tiemonster: free functionality [21:12] Aikar: most modern features youll find in node [21:12] Aikar: except js 1.7/1.8 stuff, with a few exceptions [21:12] Aikar: sadly V8 is not up to date on mozillas latest js stuff ;( [21:13] marcello3d: is there a way to make a generic getter/setter on node.js? [21:13] mikegerwitz: Aikar: Are mozilla's changes you're referring to non-standard? [21:13] Aikar: mikegerwitz: i dont know [21:14] marcello3d: like, you have object foo, and when I say foo.bar, it calls my_generic_getter("bar"), or foo.bar = bah calls my_generic_setter("bar", bah) [21:14] Aikar: marcello3d: for methods there is something in the spec but i dont think node has it [21:14] mikegerwitz: marcello3d: not that I'm aware of, no. [21:14] Aikar: `g node.js javascript 1.8 [21:14] gbot2: JavaScript - Wikipedia, the free encyclopedia - http://en.wikipedia.org/wiki/JavaScript [21:14] Aikar: `g node.js V8 features javascript 1.8 [21:14] gbot2: JavaScript - Wikipedia, the free encyclopedia - http://en.wikipedia.org/wiki/JavaScript [21:14] Aikar: failbot [21:15] marcello3d: `g node.js V8 features javascript 1.8 -wikipedia [21:15] gbot2: japh(r) by Chris Strom: No Joy for Cucumber on V8 - http://japhr.blogspot.com/2010/06/no-joy-for-cucumber-on-v8.html [21:15] marcello3d: cucumber? D: [21:15] Aikar: guess just have to go find it on the wiki [21:15] mikegerwitz: Aikar: Yeah, I wish v8 would implement __noSuchMethod__ [21:16] Aikar: https://github.com/joyent/node/wiki/ECMA-5-Mozilla-Features-Implemented-in-V8 [21:16] mikegerwitz: Aikar: The problem is, it's non-standard and not portable. [21:16] Aikar: could do so many nice things with it if we had __call and __get like in php :( [21:16] tiemonster: standards++ [21:16] Aikar: thats why you 'make it a standard!' [21:16] mikegerwitz: Aikar: Definately. I miss those. But I want them in ECMAScript first. [21:17] marcello3d: hmm, __defineGetter__ is not standard [21:17] zilt has joined the channel [21:17] marcello3d: makes sense I guess [21:17] Aikar: we already have getters and setters, just need to expand it a little bit to have a 'catch all' getter [21:17] tiemonster: well if anyone thinks this looks like fun and wants to help out, please do: https://github.com/tiemonster/monitor.js [21:17] tiemonster: I'm off for now, though [21:18] mrlase has joined the channel [21:18] marcello3d: I guess Object.defineProperty is the standard way? [21:18] Aikar: yea [21:18] mikegerwitz: This is my largest issue atm: http://code.google.com/p/v8/issues/detail?id=919 ...anxiously awaiting [21:18] micheil has joined the channel [21:18] marcello3d: mikegerwitz: why? [21:19] sleeplessinc has joined the channel [21:19] mikegerwitz: marcello3d: v8's lacking "use strict". It needs it. [21:20] gozala has joined the channel [21:20] marcello3d: oh, for the browser? [21:20] mikegerwitz: John Resig had a nice blog post about strict mode: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/ [21:21] marcello3d: yea, I know what it is [21:21] mikegerwitz: marcello3d: Well, for the browser would be nice, but I mainly want it for node. If node's used to develop large applications, it's a requirement in my mind [21:22] dgathright has joined the channel [21:23] marcello3d: right [21:25] eyesUnclouded has joined the channel [21:26] Apes: Has anyone here gotten npm working with checkinstall? [21:27] masahiroh has joined the channel [21:28] Apes: I keep getting a seg fault during build [21:28] blueadept has joined the channel [21:28] farhadi has joined the channel [21:29] farhadi has left the channel [21:30] erabuj has joined the channel [21:30] clevrmunke: node.js and web sockets...recommended lib on github? [21:31] Aikar: clevrmunke: look at socket.io [21:31] Aikar: clevrmunke: https://github.com/joyent/node/wiki/modules [21:32] erabuj_ has joined the channel [21:32] NuckingFuts: Is there any way to split my code into multiple files that I could call on and execute all in the same scope, like what would happen if I used a series of