[00:03] JimBastard: lol xer0xM [00:03] JimBastard: wut [00:03] JimBastard: ExtJS is a corporation ? [00:04] JimBastard: http://www.extjs.com/ [00:04] blowery: yeah [00:04] blowery: licensing was very very weird for a while. not sure he resolved it. [00:04] raz has joined the channel [00:04] JimBastard: also dojo sucks, just ask phiggins [00:05] blowery: http://icanhascheezburger.files.wordpress.com/2010/05/funny-pictures-cat-smacks-cat.jpg [00:08] dji_ has joined the channel [00:11] kixxauth has joined the channel [00:13] xer0xM: Yeah, I get weirded out that ExtJS is a corporation [00:15] blowery: http://ajaxian.com/archives/ext-js-and-the-fun-with-open-source-licenses was the big hubbub [00:15] punytan has joined the channel [00:16] smtlaissezfaire has joined the channel [00:16] xer0xM: Thanks for the link Blowery [00:17] __sebs_: i hate writing docs [00:18] fictorial: __sebs_: Funny enough, I am obsessed with OmniGraffle. It's not docs so much as architecture designs. I cannot think straight until I visualize it. [00:18] __sebs_: ;) [00:18] __sebs_: i dont get sourcecode in the github wiki [00:19] __sebs_: the highlighting of code there is a big riddle to me [00:19] fictorial: their wiki is strange that it doesn't use Github flavored markdown [00:21] ryah: fictorial: it's such good software, i agree [00:21] ryah: indeed, probably the only macintosh program i don't passionately hate [00:21] jetienne: the google group is moderated, or is it just me ? [00:22] ryah: jetienne: it's moderated [00:22] softdrink has joined the channel [00:22] fictorial: ryah: yeah, they're really a bunch of a**holes for charging $50 for the iPad version though :) But yeah, it's amazing. [00:22] ryah: jetienne: but just to remove spam - not to filter actual humans [00:22] jetienne: ryah: ok [00:23] xer0xM: fictorial: totally, their prices suck [00:23] fictorial: Google Groups has gotten a lot of spam in the past year it seems. Why doesn't google just use Amazon Mechanical Turk to have random people filter it out? [00:23] xer0xM: but their apps don't [00:23] fictorial: Yeah, e.g. OmniFocus too. Great, but $$$ [00:24] ryah: fictorial: google has great spam filtering on gmail [00:24] ryah: fictorial: it's really crazy that they don't apply it to groups [00:24] fictorial: I assumed they were! Weird, do you know for sure that they do not? That's strange if so. [00:24] rauchg has joined the channel [00:25] xer0xM: ryah: yeah, google's really disjointed sometimes [00:25] ryah: i dont know [00:25] ryah: but the spam on groups is very high [00:25] fictorial: too busy acquiring small companies! [00:25] fictorial: (hint hint if you're watching Big Brother Google!) [00:25] xer0xM: I'd like Buzz,Gmail,GoogleReader integration to be nicely integrated [00:26] ryah: 1500 members on the mailing list [00:26] ryah: party? [00:26] blowery: cake? [00:26] xer0xM: blow! [00:27] xer0xM: coke? [00:27] fictorial: Heh, Google has tried to hire me 3 times. The first time I was very interested. It went very well. Then they saw my 2nd year undergraduate transcript when I "went rogue". 4.0 other than 1 semester when I freaked out. They showed me the door. The other 2 times it seemed they changed their minds, but I said no. So, they should just acquire Fictorial now I think. That logic works right? Hehe (no). [00:28] blowery: fictorial: hey! i did that too! (the going rogue 2nd year) [00:28] fictorial: I had a very strict high school. I learned to party. It was fun. Then I picked a major (CompSci) and got to work. [00:29] blowery: that's almost exactly my story from 10K feet [00:29] blowery: IOE, not CompSci, but yeah [00:29] blowery: ah good times [00:29] fictorial: I find it weird that Google cares so much about ancient history. That was literally 14 years ago! Anywho... [00:29] blowery: google hiring seems crazy [00:30] jetienne: fictorial: what was the motivation to say no ? [00:30] blowery: 96? [00:30] blowery: if so, same year i did it [00:30] fictorial: jetienne: probably stupid pride at that point to be honest. [00:30] ryah: evidence of disfunction [00:30] blowery: creeping me out now. [00:31] fictorial: blowery: yes, indeed actually. [00:31] blowery: you didn't go to umich did you? [00:31] xer0xM: Google's hiring seems bonky ... I read this guys interview story .. http://t-machine.org/index.php/2010/04/09/rejected-by-and-rejecting-google/ [00:33] xer0xM: Google sent the guy between back to back interviews without a break for food or anything. He's a cranky grouch [00:33] fictorial: blowery: yes! wtf [00:33] fictorial: no, I'm just kidding. [00:33] ryah: jetienne: is that benchmark page node? [00:33] fictorial: I went to SUNY [00:33] jedschmidt has joined the channel [00:33] blowery: :P [00:33] jetienne: ryah: hue ? [00:34] ryah: jetienne: http://edv.sakura.ne.jp/msgpack/mp/benchmark/benchmark.html ? [00:34] jetienne: ryah: i think you are confusing me with somebody else... i dunno this page [00:34] ryah: ok nm [00:38] xer0xM has left the channel [00:42] jwm: google = the enemy [00:43] jwm: awesome enemy though :) [00:44] liucougar has joined the channel [00:47] fictorial has left the channel [00:48] morganallen has joined the channel [00:52] kodisha has joined the channel [01:01] foobarfighter has joined the channel [01:01] chewbranca has joined the channel [01:03] adamholt has joined the channel [01:04] keyvan has joined the channel [01:29] JimBastard has joined the channel [01:29] JimBastard: hrmmm whats the easiest way to parse a CSS document into memory ? [01:29] JimBastard: i just wanna enumerate the whole file and get some nested JSON back [01:29] JimBastard: that would look kinda like http://maraksquires.com/json_stylesheets/ [01:29] JimBastard: i gotta port like all these old style sheets [01:30] inimino: I haven't seen anybody working on CSS parsers, JimBastard [01:30] maushu: JimBastard, so, how is your idea going oh my evil entrepreneur enemy? [01:31] maushu: There is that ruby based one turn something into css. [01:31] maushu: Can't remember the name. [01:31] visnup: maushu: sass? [01:31] maushu: Thats the one. [01:32] visnup: http://sass-lang.com/ [01:34] smtlaissezfaire: JimBastard: I had started one a long time ago in treetop, but never got around to finishing it. It still has a long way to go, and I'll probably never work on it again. [01:35] smtlaissezfaire: There's got to be one out there, though - I don't know about one for javascript, specifically. At worst, there's probably one written in C that will you give you an AST, which you could write out with JSON. [01:35] smtlaissezfaire: All the more reason for a parser-generator like gazelle. [01:37] smtlaissezfaire: Now that someone has a package for google protocol buffer support for node, I might give writing a gazelle/node bridge a shot. Too bad gazelle is still young. [01:39] JimBastard: maushu: my designers, are better then yours. i could teach you, but i'd have to charge [01:40] JimBastard: www.nofavorite.com [01:40] maushu: My designers is me. [01:40] maushu: Thoing. [01:40] JimBastard: :p [01:41] JimBastard: smtlaissezfaire: hrmmm [01:41] maushu: I already have the main page, login page and user page designed. [01:41] maushu: The main page is a master piece. [01:41] maushu: Not because of the design itself mind you. [01:41] dji has joined the channel [01:41] maushu: It's pure genious. I was drunk when I got the idea, obviously. [01:43] JimBastard: im getting drunk now [01:43] maushu: GOOD LUCK. [01:44] maushu: I need to redesign my logo though, I lost the original high resolution file. [01:45] visnup: now I'm jealous. I should break out some whiskey. [01:45] tmpvar has joined the channel [01:51] kodisha has joined the channel [01:53] boxagox has joined the channel [01:55] Tim_Smart has joined the channel [01:57] tmpvar: hello [01:57] tmpvar: ryah, you around? [01:57] mikeal has joined the channel [01:58] thejustinwalsh has joined the channel [02:01] pkrumins has joined the channel [02:02] mikeal: wow [02:02] mikeal: the Denver airport is HUGE! [02:02] mikeal: still not big enough to have anything decent to eat tho [02:02] tmpvar: mikeal, lol where are you headed/ [02:02] tmpvar: ? [02:03] mikeal: austin [02:03] mikeal: txjs! [02:03] tmpvar: oh, word [02:03] tmpvar: next year, i keep saying lol [02:05] mikeal: i don't know how I'm going to be able to stand [02:05] fictorial: tmpvar: any luck on the opengl stuff? [02:05] mikeal: i just spent a week in Portland at open source bridge [02:05] tmpvar: fictorial, I'm rolling on it, digging around looking for examples and such [02:05] fictorial: cool [02:05] tmpvar: mikeal, how was that? [02:05] mikeal: really good [02:06] tmpvar: cool [02:08] mikeal1 has joined the channel [02:09] tmpvar: mikeal, you using bongo? [02:09] tmpvar: or whatever that wifi provider is. [02:09] mikeal1: fuckin denver airport "free" wireles is trying to insert adds in to my CouchDB Futon page [02:09] mikeal1: fucking up all my couchdb [02:09] tmpvar: haha [02:09] mikeal1: so i tethered my iPhone :) [02:09] tmpvar: pwnt [02:10] tmpvar: because att 3g is like lightning ;) [02:10] mikeal1: when not in NY and SF it's just fine :) [02:10] thejustinwalsh: mikeal1: There is a mexican food joint in DIA that is kinda tasty :) [02:10] siculars has joined the channel [02:11] mikeal1: is that the one in the corner? [02:11] tmpvar: woah, denver's airport is international? [02:11] mikeal1: it was kinda scary [02:11] tmpvar: crazy. [02:11] thejustinwalsh: yeah it is on a corner [02:11] mikeal1: and when mexican food is bad it hurts [02:11] thejustinwalsh: scary often equals tasty [02:11] mikeal1: so i stayed away, did some bagel sandwich thing [02:11] tmpvar: mikeal, how long is your next flight? like 40 minutes? [02:11] mikeal1: it was greasy, i have no idea how [02:12] mikeal1: it's turkey, bagel and vegetables, how is it greasy? [02:12] mikeal1: no, way longer [02:12] tmpvar: from denver to texas? crazy [02:13] mikeal1: 2 hours and 14 minutes [02:13] tmpvar: oh wow [02:13] mikeal1: yeah, especially since i just spent 2 hours on a flight from Portland [02:14] tmpvar: yeah, thats a bad layover :/ [02:14] danfo has joined the channel [02:14] thejustinwalsh: newb time, does setTimeout schedule an event in the event loop, thus freeing up your connection? I see it in hello world sample, and thats how i read it... :) [02:14] tmpvar: thejustinwalsh, "free up your connection?" ? [02:15] danfo: thejustinwalsh: that's how I read it too - because the next lines continue to run [02:15] thejustinwalsh: tmpvar: ability to except new connections... http.createServer [02:15] tmpvar: setTimeout is asynchronous so yes [02:15] mikeal1: setTimeout puts the function in to the event loop [02:15] tmpvar: if you put a while(1) {} in there, then it would stop serving im guessing [02:16] thejustinwalsh: cool beans. I looked at the example before i went to work, and i think it clicked like an hour ago. [02:16] mikeal1: nope [02:16] mikeal1: it would crash :) [02:16] tmpvar: oh man [02:16] tmpvar: now i have to try [02:17] mikeal1: i've accidentally done infinite loops a few times [02:17] mikeal1: v8 seems to have a smart recursion depth limit [02:17] mikeal1: also [02:17] mikeal1: you can't really get it to "stop accepting connections" [02:17] mikeal1: the kernel will wait for a response for a while [02:17] tmpvar: good point [02:18] tmpvar: ok, so it doesnt crash [02:18] tmpvar: just never responds [02:18] morganallen has joined the channel [02:18] mikeal1: i think what will happen is that the socket code in node won't return an accept message and the client will just time it out [02:19] tmpvar: thats a possibility [02:19] tmpvar: its interesting that it doesnt bog down on a while() [02:19] thejustinwalsh: I tried it and my client is still spinning, and the server is still running [02:19] tmpvar: yeah [02:20] ryah: don't do infinite loops :) [02:20] mikeal1: hrm…. i've definitely seen it kill my stupid infinite loop before [02:20] tmpvar: heh heh [02:20] mikeal1: stop trying to break the nodes! [02:21] tmpvar: fail fast! [02:21] ryah: we should have two modes [02:21] ryah: fail fast [02:21] ryah: --ff [02:21] mikeal1: someone asked about how many connections a single process can really handle [02:21] ryah: and keep on truckin' [02:21] ryah: --kot [02:21] tmpvar: ryah, haha [02:21] tmpvar: ryah, i'll bet that --ff is faster ;) [02:22] mikeal1: and i said something like "computers are fast dude. we forget that because we've just been raping moores long building more abstractions" [02:22] mikeal1: s/long/law [02:22] mikeal1: i can't type [02:22] thejustinwalsh: does setTimeout(function, 0) execute immediately, making it non asynchronous? [02:22] ryah: thejustinwalsh: no [02:22] mikeal1: in Firefox, yes [02:22] mikeal1: maybe in Safari [02:22] mikeal1: but not in node [02:22] tmpvar: wha? [02:22] ryah: oh really? [02:22] thejustinwalsh: in as2 it does as well... [02:23] ryah: should node match that behavior? [02:23] mikeal1: yeah, that want to make it look faster [02:23] mikeal1: i think it's actually something like anything under 50ms [02:23] ryah: i think a lot of people are using setTimeout(f, 0) as nextTick [02:23] mikeal1: cause that's how long it's going to take to JIT it and stick it in the event loop anyway [02:23] mikeal1: that doesn't work in Firefox [02:23] punytan has left the channel [02:23] mikeal1: the only thing you can do is get the main thread and call nextTick() on it [02:24] mikeal1: in the Mozilla test tools you have to do it all the time [02:24] mde: Depends on if you need the same code to run browser-side. [02:24] mikeal1: and you can use it to fake a sleep() call [02:24] tmpvar: this is not async? http://gist.github.com/426230 [02:24] mde: Just do the standard capabilities-check. [02:24] ryah: tmpvar: in node it is [02:25] ryah: tmpvar: apparently in firefox it isn't [02:25] mikeal1: tmpvar: sys.puts doesn't flush immediately [02:25] mikeal1: use sys.debug [02:25] ryah: it'll be the same result [02:25] tmpvar: ah, i must have read that backwards [02:25] mde: Doesn't it finish running anything in the current function first? [02:26] ryah: mde: everything in the current function will be excuted before the setTimeout, yes [02:26] mde: That was on that laundry-list of edge cases the YUI compressor dude threw at me. [02:26] mde: Right, okay, yeah. [02:26] tmpvar: ryah, could you explain to me what ObjectWrap is? [02:26] ryah: im working on cool shit right now [02:26] ryah: i can't wait to push it [02:26] tmpvar: nice [02:27] mikeal1: ryah: sneak peaks! [02:27] ryah: mikeal1: nah - that'll give away the fun :) [02:27] mikeal1: it'll be like a trailer for a really good movie :) [02:27] ryah: tmpvar: c++ object <-> js object binding [02:28] ryah: mde: http://github.com/ry/node/blob/55d73521891c5dbc9e7bd697b386e00620eac1df/test/simple/test-next-tick-ordering.js [02:29] mde: Ah, interesting. :) [02:29] mikeal1: the more i use them the more i like nodes unittests [02:29] mikeal1: simple, clear, no test framework boiler [02:30] mde: We really need something that runs easily in the browsers too. [02:30] mde: I don't want to write tests two different ways. [02:30] smtlaissezfaire: JimBastard: That didn't take you long (http://github.com/Marak/css_to_json) [02:30] JimBastard: yeah gonna try to use less [02:30] JimBastard: working on other things too, like dinner and mvc2 on xbox [02:30] JimBastard: >.< [02:30] mikeal1: my tests won't run in the browser [02:31] mikeal1: so i don't care [02:31] smtlaissezfaire: JimBastard: So LESS actually gives you an AST? [02:31] tmpvar: some of us care! [02:31] JimBastard: less is like magic because cloudhead wrote it [02:31] tmpvar: spawn a webserver in the browser.. that will be the day [02:31] mde: mikeal1: You care to the extent that you want to make things better for the community. :) [02:32] smtlaissezfaire: JimBastard: Guess so - http://github.com/Marak/css_to_json/blob/master/less.js/lib/less/parser.js [02:32] mikeal1: mde: most node code isn't going to run in the browser [02:32] mde: Sure, but some significant portion of it will. [02:32] mikeal1: i'm more interested right now in making it as easy as possible to write those tests [02:32] JimBastard: lol beer spill [02:32] mikeal1: but you go ahead and fix the harder problem, you're welcome to it :) [02:32] mde: Haha [02:32] MattJ: mde: most node code isn't going to run in the browser [02:33] mikeal1: you should steal resig's api [02:33] mde: I'm hoping aconbere has fixed it. [02:33] MattJ: Ooh, I like a good challenge... [02:33] mikeal1: i actually really like it [02:33] mikeal1: the implementation is terrible last time i checked tho [02:33] mikeal1: it's *really* browser dependent [02:33] mde: Bare min is removing V8-specific stuff. [02:33] mikeal1: like, the framework code updates the results html directly and there's not a good way to decouple it [02:34] mikeal1: the unittests won't work anywhere else [02:34] mikeal1: because they end when the process terminates [02:34] smtlaissezfaire: JimBastard: So did he write that 800 line js parser by hand? I guess the ruby package must have similar code. I wonder how he's keeping the two parsers in sync. [02:34] mikeal1: the "framework" is literally the node bin [02:34] mde: He said he had them running in both places. [02:35] mde: And I suggested he use lazy function definition for whatever conditional forking, so it doesn't slow execution down. [02:37] mikeal1: only 2200 twitters about osbridge [02:37] mikeal1: that's surprising [02:37] mikeal1: GoogleIO has over 40K [02:38] mikeal1: oh man [02:38] mikeal1: mde: have you seen titanium [02:38] mikeal1: ? [02:38] mde: I've heard people talking about it, haven't really looked at it. [02:38] mikeal1: http://www.appcelerator.com/ [02:39] mde: Yahoo was going to use it to re-do all their Messenger stuff. [02:39] mikeal1: max ogden wrote a google maps app for iPhone and Android in like 50 lines of javascript [02:39] mikeal1: it just shows his face whereever his last GPS point was posted [02:39] softdrink has joined the channel [02:39] mikeal1: which is hilarious because he has a HUGE BEARD [02:39] mde: Is Titanium legal under the iPhone TOS? [02:40] mde: Heheh [02:40] mikeal1: they can't tell [02:40] mikeal1: it compiles to obj-c [02:40] mikeal1: and doesn't have any crazy shim crap like adobe does [02:40] mde: Seems like a bit of gray area, yeah. [02:41] mikeal1: like, you get a full obj-c project out of it [02:42] thejustinwalsh: yup, and if you run javascript through a webview it's legal too. [02:42] mikeal1: yeah, that sucks tho [02:42] mikeal1: i use that for Gmail [02:42] mikeal1: because iPhone Mail is terrible [02:42] mikeal1: but it's not super fun [02:42] MattJ: What if you run language X using a VM written in Javascript through a webview? :) [02:43] mikeal1: steve jobs eats your face off [02:43] thejustinwalsh: MattJ: Golden! haha [02:43] MattJ: Aww, is that all? [02:44] mikeal1: i love how on southwest everyone has to line up in the order of the number they got on their ticket, but there is *still* like 10 people who line up 20 minutes early [02:46] thejustinwalsh: mikeal1: Thats my favorite part too. Gotta get that spot in line! [02:48] tmpvar: ryah, alright, ObjectWrap is pretty clever ;) [02:56] JimBastard has joined the channel [02:57] adamholt has joined the channel [02:59] paul_irish has joined the channel [03:00] liucougar has joined the channel [03:03] dgathright has joined the channel [03:12] aho has joined the channel [03:14] sh1mmer has joined the channel [03:16] mjijackson has joined the channel [03:19] sh1mmer has joined the channel [03:19] SamuraiJack has joined the channel [03:21] airportyh has joined the channel [03:23] joshholt_ has joined the channel [03:25] visnup has joined the channel [03:30] smtlaissezfaire has joined the channel [03:32] charlesjolley_ has joined the channel [03:33] charlesjolley- has joined the channel [03:34] robrighter has joined the channel [03:35] stepheneb has joined the channel [03:48] cloudhead: isaacs: you there? [03:50] nicolaerusan has joined the channel [03:51] tmpvar: whats up cloudhead [03:51] cloudhead: tmpvar: got an issue with npm [03:52] cloudhead: seems like the bin/ files aren't linked to the same relative path when installing [03:52] cloudhead: so doing a require from a bin will fail [03:54] joshholt_ has joined the channel [03:57] tmpvar: oh, weird [04:00] tmpvar: cloudhead, what package are you having problems with? [04:01] derferman has joined the channel [04:01] shahbaz has joined the channel [04:03] shahbaz: when exactly is the timeout event triggered? is when the tcp connection is idle for outgoing, incoming or both traffic? [04:03] cloudhead: tmpvar: a local one [04:03] cloudhead: tmpvar: how am I supposed to require a library file from the bin? [04:03] o_o_ has joined the channel [04:04] cloudhead: tmpvar: it works when I run the bin from the folder, but not the installed version [04:04] tmpvar: cloudhead, looking at http://wiki.commonjs.org/wiki/Packages/1.0 you should be able to add the bin directory to the 'directories' section [04:04] tmpvar: i *think* that will work [04:05] tmpvar: shahbaz, i think its only for outgoing [04:07] visnup has joined the channel [04:07] shahbaz: tmpvar, what if I want to be notified if I haven't been sent any traffic for a while, is there another event? [04:08] tmpvar: shahbaz, with tcp you are either connected or not [04:08] tmpvar: it handles all the handshaking, so you'd get a timeout/end if the connection dropped [04:08] tmpvar: im trying to confirm [04:09] shahbaz: tmpvar, i'm actually interested in getting notified i my server hasn't sent traffic or hasn't received traffic (both, seperately) [04:09] shahbaz: because my protocol requires heartbeats [04:09] tmpvar: makes sense [04:10] tmpvar: so you run 2 timers? im not sure "timeout" exists as an event [04:10] shahbaz: tmpvar, oh, i didn't realize i could user timers :) [04:10] tmpvar: O_o [04:11] tmpvar: well, that is also interesting [04:11] tmpvar: do you have sample code? [04:11] stagas has joined the channel [04:12] shahbaz: i see i can do a setInterval...I think this will work! [04:12] tmpvar: 1 timer for your heartbeat [04:12] tmpvar: but honestly, tcp should handle the rest [04:13] tmpvar: if the other end drops, it should send you an "end" event [04:13] tmpvar: i believe [04:13] chewbranca has joined the channel [04:13] shahbaz: tmpvar, yeah, i'm just trying to flesh out the heartbeat part of my code...this protocol sits above TCP and has certain requirements [04:14] shahbaz: I'll try it out, thanks tmpvar! [04:15] cloudhead: tmpvar: doesn't seem like adding ./bin to 'directories' works [04:15] pitrpen has joined the channel [04:15] tmpvar: cloudhead, damn [04:15] cloudhead: I have this in my bin: require.paths.unshift(path.join(__dirname, '..', 'lib')); [04:15] cloudhead: I suspect that's what isn't working properly when installed [04:16] cloudhead: cause __dirname is /usr/local/bin [04:16] tmpvar: wtf [04:16] tmpvar: thats interesting [04:16] tmpvar: /usr/lib [04:16] tmpvar: why? [04:16] tmpvar: OH [04:16] tmpvar: slow. [04:16] cloudhead: : > [04:17] tmpvar: i dont think that is the case actually, but i could be wrong. [04:17] cloudhead: in the repo, __dirname is /bin, so that equates to /lib [04:17] tmpvar: __dirname should be the dir of the currently executing file, no? [04:17] cloudhead: but when installed, it becomes /usr/local/lib [04:17] cloudhead: yes [04:18] cloudhead: it returns '/usr/local/bin' when installed [04:18] gwoo_ has joined the channel [04:19] cloudhead: it should be symlinked instead [04:19] tmpvar: yeah [04:19] wilmoore has joined the channel [04:20] tmpvar: interesting, I wish i could test this to help [04:20] tmpvar: im blindly stabbing :/ [04:20] cloudhead: I can push something to the registry [04:20] cloudhead: which fails [04:20] cloudhead: : ) [04:20] cloudhead: or um wait [04:20] tmpvar: heh [04:21] cloudhead: http://github.com/cloudhead/vows [04:21] cloudhead: if you clone that and npm install . [04:21] cloudhead: then try to run `vows` [04:21] cloudhead: it'll fail saying it can't find a module [04:22] cloudhead: hmm one way I could make it work is to require the module from node_libraries [04:22] cloudhead: if I just do require('vows'), when in the repo, it'll get the local one, and when in /usr/local/bin, it'll get the installed one [04:24] tmpvar: yeah, that seems logical [04:24] tekky has joined the channel [04:25] cloudhead: although hmm, how am I going to require('vows/reporters/dot-matrix') [04:25] tmpvar: blarg, apparently I have/haven't installed npm on here lol [04:26] cloudhead: lol [04:26] tmpvar: there we go [04:26] tmpvar: root install's are "interesting" [04:27] cloudhead: hehe [04:27] tmpvar: so vows is supposed to get pushed into my /usr/local/bin? [04:28] cloudhead: yea [04:28] tmpvar: eek. [04:28] cloudhead: when you npm install . [04:28] tmpvar: yeah, i did [04:28] cloudhead: yeh `which vows` [04:29] cloudhead: and yea, it's the actual file [04:29] tmpvar: is that really necessary? would ~/bin/ work? [04:29] tmpvar: heh [04:29] cloudhead: I prefer /usr/local/bin personally [04:30] tmpvar: ok, in either case.. i doubt it works [04:32] cloudhead: yea hm [04:32] cloudhead: maybe if I got the full path of the required module [04:32] cloudhead: and added that [04:32] cloudhead: to require.paths [04:33] cloudhead: not sure how to do that [04:33] cloudhead: or if it's even possible [04:33] tmpvar: from inside the module? [04:33] cloudhead: from outside [04:33] cloudhead: like [04:33] tmpvar: you could search the require.paths heh [04:33] cloudhead: from bin/vows, get the full path of require('vows') [04:33] cloudhead: hmm [04:34] tmpvar: hrm [04:35] tmpvar: to be honest, it doesnt look like it respects the bin dir at all [04:35] tmpvar: simply looks for a ./lib [04:35] tmpvar: symlinks that [04:35] tmpvar: and washes hands [04:36] tmpvar: honestly, i wouldnt mind if it touched my PATH var, as long as i didnt have to sudo npm install [04:36] tmpvar: which is probably what is going to have to happen in your case [04:37] cloudhead: I chowned /usr/local to myself [04:37] tmpvar: heh [04:37] tmpvar: i didnt ;) [04:37] tmpvar: anyhow, i have to run.. good luck man. I think a good place to start is why other directories are not symlinked [04:39] nsm has joined the channel [04:47] xer0x has joined the channel [04:48] xer0x: oooh, so tj's extjs isn't the UI framework extjs.... [04:50] cloudhead: xer0x: no : ) [04:51] xer0x: cloudhead: i was mighty confused for a bit [04:51] wilmoore_ has joined the channel [04:55] keyvan has joined the channel [05:00] paul_irish has joined the channel [05:00] nicolaerusan has left the channel [05:04] sudoer has joined the channel [05:06] charlesjolley_ has joined the channel [05:06] jwm: I'm going to start naming my projects after already existing projects [05:06] jwm: first one will be the OS/2 editor [05:06] jwm: next the HTML calculator [05:07] jwm: finally finish off with a Windows speller checker [05:07] jwm: and my Android web server project [05:08] jwm: which is a web server that doesn't run on Android of course, in fact we'll make it require something like Amiga to run [05:09] jwm: Amiga being my virtual machine project that is really a reproduced limited x86 architecture [05:10] fictorial: jwm: haha [05:10] fictorial: I like the HTML calculator [05:11] jwm: reverse polish ftw [05:11] fictorial: make sure you redo existing things slightly differently while you are at it, get everyone excited, and boom, lock-in. very m$ft. [05:12] jwm: yeah except microsoft does that without getting people excited [05:12] fictorial: yeah it was a stretch [05:12] jwm: just the inevitable feeling corporate will mandate it because they paid off your IT guy with free bumper stickers and a night club lap dance [05:13] stagas: amiga rulez [05:14] fictorial: I think Amiga was dead before most people in this channel were born :) [05:14] stagas: too bad for them :) no swos [05:15] jwm: that's why I reclaim their name for my wysiwyg node core dump utility [05:16] fictorial: hehe [05:18] creationix has joined the channel [05:25] charlesjolley_ has joined the channel [05:32] mikeal has joined the channel [05:38] punytan has joined the channel [05:48] dgathright has joined the channel [05:51] gerad has joined the channel [05:51] linuxsable has joined the channel [06:13] edspencer has joined the channel [06:23] gerad has joined the channel [06:23] smtlaissezfaire has joined the channel [06:33] sh1mmer has joined the channel [06:36] stepheneb has joined the channel [06:38] stevendavie has joined the channel [06:46] qFox has joined the channel [06:50] ewdafa has joined the channel [06:56] jetienne_ has joined the channel [06:57] jetienne_: JSON.parse(' {};'); <- this hangs in node-repl... in fact parsing any non json text just hangs [06:57] kodisha_ has joined the channel [06:58] mikeal has joined the channel [07:01] micheil: good point jetienne [07:03] Aria has joined the channel [07:05] ly- has joined the channel [07:14] ajpiano has joined the channel [07:15] visnup has joined the channel [07:21] rictic has joined the channel [07:29] stagas has joined the channel [07:52] TommyM has joined the channel [07:52] sh1m has joined the channel [07:52] danfo has joined the channel [08:08] danfo has joined the channel [08:09] smtlaissezfaire has joined the channel [08:10] herbySk has joined the channel [08:14] Elfix has joined the channel [08:14] saimon has joined the channel [08:15] admc: anyone have a simple file server implementation I can use? [08:16] pdelgallego has joined the channel [08:19] SteveDekorte has joined the channel [08:21] sveisvei: admc: Check wiki under "Static file servers":http://wiki.github.com/ry/node/modules [08:31] admc: awesome [08:34] MattJ has joined the channel [08:43] stagas: I'm confused with all this async thing. should I use events, process.nextTick, childprocess or what. I understand Step and similar are just a way of waiting for functions to callback to proceed to the next step, but how do I actually make a function run in async. e.g a function that generates a random string. just wrap it in process.nextTick is enough? what if it was more complex / cpu... [08:43] stagas: ...consuming how do I prevent block? [08:53] saturn7 has joined the channel [08:56] saimon has joined the channel [08:58] derbumi has joined the channel [08:59] danfo has joined the channel [09:01] dridge has joined the channel [09:10] dridge_ has joined the channel [09:23] stalled has joined the channel [09:29] hassox has joined the channel [09:53] saturn7 has joined the channel [10:00] dabreaka has joined the channel [10:01] kixxauth has joined the channel [10:09] herbySk has joined the channel [10:34] aconran_ has joined the channel [10:42] keyvan has joined the channel [10:55] mitkok has joined the channel [10:59] danfo has joined the channel [11:01] morganallen has joined the channel [11:01] hellp has joined the channel [11:04] xla has joined the channel [11:16] rnewson has joined the channel [11:22] Guest41017 has joined the channel [11:23] Guest41017: does someone here know where scons calls gcc? [11:24] rnewson has joined the channel [11:24] rnewson has joined the channel [11:39] dridge has joined the channel [11:42] FSX has joined the channel [11:47] jedschmidt has joined the channel [11:57] javajunky has joined the channel [12:00] javajunky has left the channel [12:02] hassox has joined the channel [12:04] kodisha has joined the channel [12:05] stepheneb has joined the channel [12:14] voodootikigod has joined the channel [12:20] derbumi has joined the channel [12:32] mikeal has joined the channel [12:36] devtime has joined the channel [12:39] arnaudsj has joined the channel [12:50] steadicat has joined the channel [13:11] dridge has joined the channel [13:16] rnewson has joined the channel [13:18] sveisvei has joined the channel [13:21] mjijackson has joined the channel [13:28] creationix has joined the channel [13:30] sh1mmer has joined the channel [13:34] jetienne has joined the channel [13:44] dridge has joined the channel [13:45] sh1mmer has joined the channel [13:47] jetienne: q. how can i report a bug in nodejs ? [13:51] sveisvei: jetienne: mailing list might be good place to start :) [13:51] jetienne: ok [13:52] sveisvei: or http://github.com/ry/node/issues [13:53] paul_irish has joined the channel [14:01] thejustinwalsh has joined the channel [14:02] sh1mmer has joined the channel [14:02] hassox_ has joined the channel [14:05] Aria has joined the channel [14:08] devinus_ has joined the channel [14:11] rolfb has joined the channel [14:12] jetienne: ok the bug is a 0.1.92 but not in a 0.1.97 [14:14] sh1m has joined the channel [14:14] jetienne: http://pastebin.com/atyjkita <- for history. on 0.1.92, "error" signal is notified twice. but not on 0.1.97 [14:14] maushu has joined the channel [14:15] maushu: Hmmm, I don't want to use jQuery on the server-side. [14:16] jetienne: jquery is mainly about dom anyway, no ? i mean how usefull jquery is on the server [14:16] mape: jetienne: I use it for scraping and it is lovely [14:16] maushu: ... [14:16] maushu: Sorry, I meant on the *client*-side. [14:17] sh1m has joined the channel [14:17] jetienne: mape: good point [14:17] maushu: Damn server is eating mah mind! [14:17] maushu: Using jQuery on the server-side is just silly. [14:18] maushu: Silly, silly, silly. [14:18] maushu: ACTION pokes mape. [14:18] tekky has joined the channel [14:20] maushu: mape, you don't need to use the whole jquery for that. [14:20] maushu: I'm trying to remember the name of what jQuery uses to parse the DOM. [14:20] mape: sizzle? [14:20] micheil: yeah [14:20] micheil: ACTION helped with the logo on that.. so can't forget it. [14:20] mape: Why not use it all? [14:21] maushu: Yeah. [14:21] ajpiano has joined the channel [14:21] maushu: micheil, that is a silly logo. [14:21] micheil: ACTION is actually going to write his own library for his apps. [14:21] micheil: maushu: ooh.. why? [14:21] micheil: flaming arrow? [14:21] maushu: ACTION facepalms. [14:21] jetienne: he want to pick a fight, any fight :) [14:22] maushu: jetienne, that response was silly. [14:22] micheil: yeah, I bite everytime. [14:22] maushu: Anyways, I'm going to try uize. [14:23] maushu: It seems more programmer oriented than jquery (that seems more designer oriented). [14:23] mape: mootools? [14:23] mape: maushu: At least UIZE had a nice site, if it was featured in a photoshop tutorial from 1999 [14:24] maushu: has? [14:24] maushu: *had [14:24] mape: Indeed [14:24] maushu: It's still nice. Just not so web 2.0. [14:24] maushu: Which is a GOOD thing. [14:24] maushu: There is a point where there is too much web 2.0 [14:26] maushu: ...god dammit, I don't know. ;_; [14:33] wilmoore has joined the channel [14:34] sveisvei: mape: Yeah, the UIZE site is crap... popups, terrible terrible confusing structure [14:35] sveisvei: mape: Did you attend swdc btw? [14:35] sveisvei: Just wondering how it was... [14:35] hassox has joined the channel [14:36] mape: Nope, wanted to go but couldn't [14:42] mape: Wondering if they are going to release videos from it [14:43] paul_irish has joined the channel [14:46] voodootikigod_ has joined the channel [14:46] herbySk has joined the channel [14:53] aho has joined the channel [14:55] ly- has joined the channel [14:57] nsm has joined the channel [15:01] sh1mmer has joined the channel [15:03] sveisvei has joined the channel [15:10] richcollins has joined the channel [15:16] stevendavie has joined the channel [15:16] rictic has joined the channel [15:16] stepheneb_ has joined the channel [15:22] creationix has joined the channel [15:25] sh1mmer has joined the channel [15:28] tomh- has joined the channel [15:29] tomh-: hey, is there a way to edit app files without needing to restart node? [15:31] stepheneb has joined the channel [15:34] tekky has joined the channel [15:35] jetienne: tomh-: what you could do is restart node automatically everytime the source is changed [15:36] jetienne: tomh-: i dunno/dont think reloading source is ok without restarting node [15:38] dridge has joined the channel [15:40] thejustinwalsh: Couldn't you use fs.watchFile, then anytime the file changes run eval on your source? Or something like that? [15:41] jetienne: thejustinwalsh: in theory i guess this is possible, but i doubt it doesnt have some ugly corner cases [15:41] jetienne: thejustinwalsh: i dunno for sure, just guessing [15:42] thejustinwalsh: I was thinking about setting something up like that, except my main source wouldn't reload, just child scripts... Build an architecture around reloading [15:43] thejustinwalsh: My guess is that if you only use it for development, and never in production. You might be good. [15:43] tomh-: jetienne: yeah i guess, i think with the express framework there is dev mode support [15:43] jetienne: yep the first one which did it was rails, according to my knowledge. This is quite nice [15:44] jetienne: another one doing it is a css compiler, sass [15:45] jetienne: and sproutcore.... ok a lot of people are doing it. [15:47] tk has joined the channel [15:47] maushu: thejustinwalsh, code polution. [15:48] Aria has joined the channel [15:52] richcollins has joined the channel [15:52] thejustinwalsh: maushu: You would have to be smart about how you reload, i.e. remove all your listeners, etc, then reload. [15:52] thejustinwalsh: maushu: What other concerns are there? [15:53] JimBastard has joined the channel [15:53] maushu: Code gremlins. [15:53] JimBastard: man getting rid of my cellphone and facebook account might have been the smartest thing i've ever done [15:58] sh1mmer has joined the channel [15:59] micheil: hmm.. do you think it'd be an idea to be able to upgrade a standard http server to websockets? [16:00] micheil: like.. var server = http.createServer(...) [16:00] micheil: server.addWebsockets(); [16:00] micheil: /cc ryah [16:02] mape: http://vimeo.com/12316916 [16:02] mape: SWDC 2010 NodeJS Talk by Tim Caswell featuring Connect [16:04] maushu: micheil, socket.io does something similar. [16:05] hpoydar has joined the channel [16:05] micheil: mape: just watching that, good talk [16:05] hpoydar: ping JimBastard [16:05] micheil: maushu: ah, okay, I'll have to lok [16:05] JimBastard: sup hpoydar [16:05] JimBastard: good to see you in here [16:05] maushu: micheil, basically you create a server and then you do io.list(server); Thats all. [16:05] micheil: maushu: currently node-websocket-server just makes you create a server specific for websockets (but can handle standard http) [16:05] hpoydar: tx ... just node noobin it [16:06] JimBastard: huzaaaah [16:06] maushu: micheil, yeah, that is why I don't use it. [16:06] JimBastard: let me know if you have any questions hpoydar, i might be able to help [16:06] JimBastard: im still a node noob too, but i know the ecosystem kinda well [16:07] hpoydar: JimBastard: tx. got node installed instantly via homebrew ... now just trying to get npm installed [16:07] JimBastard: should be really straight forward [16:08] JimBastard: isaacs has a bunch of install docs [16:08] JimBastard: hes on vacation this week though >.< [16:09] hpoydar: JimBastard: yeah looks that way but hit a snag with node versions ... thinking I should roll back node install and use nvm to sort it out ... nvm pretty stable? [16:09] JimBastard: whats the issue hpoydar are you using HEAD? [16:09] JimBastard: whats your current node version [16:10] JimBastard: node -v [16:10] hpoydar: 0.1.94 [16:10] JimBastard: yeah homebrew fail [16:10] hpoydar: figured smuch [16:10] JimBastard: you should install node from the github perhaps [16:10] thejustinwalsh: building from source is dirt easy btw [16:10] JimBastard: im not sure whats up with maintaining homebrew [16:10] JimBastard: i dont know who handles that [16:11] creationix has joined the channel [16:11] JimBastard: but hpoydar i would avoid NVM unless you have a very specific purpose [16:11] JimBastard: you should just get HEAD and i bet NPM will work for you [16:11] JimBastard: there are uses for NVM obviously, im not sure of the stability. its probaly okay [16:12] hpoydar: installing from source now. (brew is usually very reliable) [16:13] tk has joined the channel [16:13] JimBastard: i mean node versions change at the rate most programmers take showers, every 2-3 days. #bastardfacts [16:14] pgriess has joined the channel [16:14] hpoydar: just saw some posts that made it seem like nvm makes life easier, in particular with installing various npm packages [16:14] JimBastard: possibly, that makes sense [16:15] JimBastard: i havent run into the need for it yet [16:15] hpoydar: good to know tx [16:16] hassox_ has joined the channel [16:17] maushu: I'm abstracting sockets and listeners. I think I'm onto something here. [16:20] mitkok has joined the channel [16:23] wilmoore has joined the channel [16:23] stevendavie has joined the channel [16:24] creationix: I love nvm [16:24] Aria has joined the channel [16:24] creationix: (disclaimer, I wrote it ;)) [16:26] mape: creationix: nice talk :) [16:26] creationix: mape: thanks [16:26] creationix: about to give another on something similair [16:27] mape: creationix: Looking at perhaps making a assets manager for Connect, if I wrap my head around it. [16:27] mape: Ie minifications/concat for css/js [16:28] creationix: mape, sounds great [16:28] creationix: I've got the gzip and cache-manifest examples [16:30] mape: jup [16:35] sudoer has joined the channel [16:35] siculars has joined the channel [16:35] maushu: cache-manifest? I played around with that. [16:36] creationix: cache-manifest is awesome, it's a great start for making offline capable apps [16:39] maushu: creationix, I'm trying to find a way to know if the user is online or not. [16:39] maushu: The only way I see is by actually checking with an ajax request. [16:39] maushu: Since navigator.onLine doesn't work so well. [16:40] Aria: No? Works when I used it. [16:40] creationix: maushu: I think there are some js apis that the browser provides [16:40] creationix: I haven't read all the new html specs yet, so I'm not sure [16:41] mape: Aria: that you know of? ;) [16:41] thejustinwalsh: Does anyone know of a good site for javascript function / object reference? [16:41] Aria: Hehe. I banged it relatively hard, and it was 100% reliable for me in Safari and in Mozilla. [16:41] thejustinwalsh: I have the ecma pdf open, but it's not easy to lookup quickly [16:41] Aria: Except in the situations where 'offline' was ambiguous in the first place. [16:41] stevendavie has joined the channel [16:42] stevendavie has joined the channel [16:42] b_erb has joined the channel [16:43] jbrantly: thejustinwalsh: https://developer.mozilla.org/en/JavaScript [16:43] sudoer has joined the channel [16:44] JimBastard: hey creationix , whats up with the liscence on Connect. it seems not cool [16:44] thejustinwalsh: jbrantly: thank you [16:44] creationix: it's MIT right? [16:44] JimBastard: is it? [16:44] creationix: should be [16:44] JimBastard: hrmmmm [16:44] JimBastard: ill re-read [16:44] creationix: © 2010 Ext JS MIT [16:45] JimBastard: yeah, someone was complaining to me it wasnt. i just sent them a message [16:45] creationix: yeah, tj's latest commit puts it in the readme too [16:45] JimBastard: lol [16:45] JimBastard: good stuff then! [16:46] JimBastard: :-D [16:46] tk has joined the channel [16:50] hartley231 has joined the channel [16:51] wilmoore has joined the channel [16:52] maushu: Ext JS? [16:53] maushu: I thought it couldn't be used commercially. [16:55] jbrantly: maushu: it's not the standard ExtJS license [16:55] jbrantly: ExtJS is releasing Connect under the MIT license [16:55] maushu: Ah. [16:56] saikat has joined the channel [16:57] creationix has joined the channel [16:58] creationix: maushu: it's not extjs, it's a node framework they payed me to make [16:58] maushu: ...and I still doesn't know what it does. [16:59] mape: maushu: Tried reading? [16:59] maushu: Yeap. [16:59] maushu: It's middleware and I'm like "wut". [16:59] micheil: maushu: watched the talk? [17:00] maushu: Ah, that might be it. [17:00] micheil: it's almost a saner (fab) [17:01] qnt4b has joined the channel [17:01] tk has joined the channel [17:02] maushu: Oh, after finding this multitouch thingy in the Connect rep I remembered something. [17:02] maushu: I wonder if iphone/ipod (and so on) work well with cache-manifest. [17:03] hartley231: micheil: I pinged you on twitter this week about trying to hook node-websocket-server up to my nodejs twitter userstream code [17:03] micheil: oh, hey [17:03] micheil: didn't I reply with telling you to email me? [17:03] creationix: maushu: yep, works great [17:03] hartley231: yes - or to join in here [17:03] micheil: that too [17:03] micheil: okay, so what was the problem? [17:04] Yuffster has joined the channel [17:04] maushu: creationix, great. [17:04] hartley231: I connect to the twitter stream with var twitter = http.createClient(80, "chirpstream.twitter.com"), request = twitter.request("GET", "/2b/user.json", headers); [17:05] micheil: mmm [17:05] hartley231: I then have a listener for responses [17:05] hartley231: request.addListener('response', function (response) { [17:05] micheil: yeah [17:06] hartley231: and then for specific tweets [17:06] hartley231: response.addListener("data", function (chunk) { [17:06] micheil: I'm sure there's actually a twitter library for node.. [17:06] JimBastard: yeah theres a bunch [17:06] hartley231: It is in that function that I need to send the chunk to node-websocket-server [17:07] JimBastard: i keep getting domain not found errors from cradle >.< [17:07] JimBastard: dammit [17:07] micheil: okay, so, server.broadcast("message"); [17:07] hartley231: I'm using a modified version of some of the twitter libraries [17:07] micheil: hartley231: would send that out to each client [17:08] micheil: so, you could do: server.broadcast(JSON.stringify({tweet: "blah blah, blah"})); [17:08] micheil: note, that my websocket-server doesn't yet do draft76 [17:09] micheil: it's on my todo list to do [17:09] micheil: but I've been busy on my startup, so I haven't gotten it done yet [17:10] hartley231: OK - it is the draft76 part that is preventing it from working. The latest Chrome dev channel changed as I'm sure you know [17:10] hartley231: cool [17:10] hartley231: Thanks [17:11] maushu: draft76 is silly. [17:18] micheil: not really [17:18] micheil: it's a lot more secure, which is a good thing [17:18] micheil: hartley231: try using stable chrome [17:19] micheil: hartley231: if you feel up to it, have a look at how the draft75 handshake is done, and write a patch for draft76, the boilerplate code is there for it [17:19] micheil: (mind's you, I'm extremely picky about spec compliance and stuff, so, yeah) [17:19] hartley231: will do. I don't think any of the node.js websocket libraries support draft76 yet. I'll have a go at the draft76 handshake and will let you know [17:20] creationix has joined the channel [17:20] micheil: only sockets.io, but it's a but of an overkill if you just want plain websockets [17:21] micheil: and only a certain fork of it, afaik [17:23] jedschmidt has joined the channel [17:32] herbySk has joined the channel [17:33] CIA-77 has joined the channel [17:34] maushu: hartley231, http://github.com/miksago/node-websocket-server [17:39] siculars has joined the channel [17:49] micheil: maushu: yeah, mine doesn't support draft76 yet, so doesn't work 100% [17:50] [[zz]] has joined the channel [17:57] hsuh has joined the channel [18:00] richcollins has joined the channel [18:04] pgriess has joined the channel [18:08] charlesjolley_ has joined the channel [18:10] cloudhead has joined the channel [18:11] smtlaissezfaire_ has joined the channel [18:12] derbumi has joined the channel [18:22] [[zz]] has joined the channel [18:24] thejustinwalsh: Hrm... Any good docs on serving video / mp3 files with nodejs? My browser yells it me when i try it now, not sure what i am doing wrong [18:26] devtime has joined the channel [18:27] thejustinwalsh: Do i need to handle some multipart sending, or something like that? Maybe a content header is missing? [18:28] Determinist has joined the channel [18:30] thejustinwalsh: Wait, looks like encoding [18:31] mape: Anyone happen to know of a minifier for CSS written in JS= [18:31] mape: *? [18:31] mde|afk: That's a good question -- I'd be interested in knowing that. [18:32] mde: Would love to have something like asset packer that can be run as a Jake task. [18:33] thejustinwalsh: yay encoding win! [18:33] mape: mde: That is what I'm doing right now [18:33] mape: Or well, asset manager for Connect [18:33] mape: http://mape.me:8081/static/js/minified.js [18:33] mape: seems to work ok [18:34] mde: Very nice. [18:34] mape: Doing the basic stuff now, and added some hooks so you can change the files before they are packed, right now I only do a replace on jQuery to mapeQuery [18:34] mde: You using the JS minifier? [18:34] mape: But you should be able to hook in LESS, SASS or whatever [18:34] mape: jsmin [18:35] mde: Okay, cool. Jake just runs arbitrary JS functions, so that should work great. [18:36] mde: So it'll do some sort of dev-vs.-prod package dealo? [18:36] mape: It does around 600req/sec now, and refreshes the cache when files update, so no need to restart to get the latest version of the file minified [18:36] mde: Geddy is almost as the point of needing that -- it packages up all the server-side model code for use on the client too. [18:36] mde: Oh, that's very nice. [18:36] steadicat has joined the channel [18:37] tk has joined the channel [18:38] mape: Hmm seems isaacs was the one that created the CSS minifier in YUI compressor [18:38] mape: Guess I should ask him when he gets back [18:39] mde: YUI compressor. You don't want to go using Java, do you? :) [18:39] mape: Nope, but I assume the css stripping is pretty easy [18:39] mape: unless you want to start shortening 0 0 0 0 into 0 and whatnot [18:40] mde: Right, I'm assuming that anything JS-based, right now, is just going to take the regex route. [18:40] mape: http://dimebrain.com/2008/03/a-better-css-mi.html [18:40] mde: My understanding of YUI compressor is that it uses the parsed representation to do the compression. [18:41] mjijackson has joined the channel [18:41] mde: Ah, right, so it does actual transformation of the CSS. [18:42] mde: I don't know of a pure-JS approach that can do that. [18:47] creationix has joined the channel [18:48] paul_irish has joined the channel [18:48] mattly has joined the channel [18:50] rnewson has joined the channel [18:51] MattJ has joined the channel [18:52] mape: seems like just a couple of lines of regex took care of most of it [18:53] mape: Hmm the hooks might be really nice, should be able to add vendor-prefixes and whatnot [18:53] mde: Yeah, the biggest danger with regex is brittleness. And depends on how much you're trying to squeeze it down. [18:53] mde: Probably good enough for most purposes. [18:54] mde: Having no Java dep is a win. [18:54] dji has joined the channel [18:54] hsuh has left the channel [18:59] javarants1 has left the channel [19:01] stepheneb has joined the channel [19:11] mape: mde: http://github.com/stoyan/yuicompressor/blob/master/ports/js/cssmin.js [19:11] mape: Seems to work like a charm [19:11] tk has joined the channel [19:12] hsuh has joined the channel [19:13] mde: Ah, right, he told me he was working on porting YUI compressor to JS. [19:13] mde: So he's got a CSS min too, nice. [19:13] ph^ has joined the channel [19:14] mde: This whole thing of managing code that deploys both server- and browser-side is going to be really interesting. [19:15] thejustinwalsh: connect looks spiffy! [19:17] tk has joined the channel [19:21] mape: http://gist.github.com/426918 [19:22] mape: That is how it looks right now, I have a feeling it is a little verbose.. But if it should be dynamic.. [19:27] DracoBlue has joined the channel [19:37] vnguyen has joined the channel [19:39] jherdman has joined the channel [19:40] markwubben has joined the channel [19:40] jlertle has joined the channel [19:51] mape: meh I want txjs live streaming :/ [19:51] micheil: track c is [19:51] micheil: http://www.ustream.tv/channel/txjs [19:51] mape: Doesn't work now? [19:51] mape: Or yeah.. lunch [19:55] mfeiri has joined the channel [19:58] jlertle_ has joined the channel [20:01] jlertle_ has joined the channel [20:02] devtime: Connect doesnt seem to target multiple-domain apps - that's a pity [20:05] devtime: e.g., node-paperboy can serve static files from multiple public dirs, but not Connect's static file provider [20:09] mape: devtime: Then create a middleware that does that? :) [20:11] mape: Anyone have an idea of how performance intensive watchFile is? And if there are any general reasons it triggers the callback twice? [20:13] derbumi has joined the channel [20:14] mde: mape: we're using watchFile in Geddy, but only in dev-mode. [20:15] mape: Right now I add a watch for every file used in the asset management, so if any of the files are changed the group it is in is regenerated [20:15] mde: Only time I've seen the callback trigger twice was because of my vim .swp files changing. :) [20:15] mape: hmm [20:16] mape: I am mounting the file through expandrive and using textmate, perhaps that is something wonky there [20:16] mde: Seemed really mysterious til I printed out what files were actually changing. [20:16] mape: Well it is the same file, only it fires twice [20:17] mape: guess I can do a setTimeout() clearTimeout but that seems dirty [20:19] mde: setTimeout is always dirty. But sometimes dirty is all you've got. [20:19] paul_irish has joined the channel [20:22] mape: http://www.ustream.tv/channel/txjs [20:22] mape: on track A now [20:41] creationix has joined the channel [20:42] smtlaissezfaire_: mape: who's presenting right now? What's the talk? [20:43] mape: Juriy Zaytsev: Dive into ECMAScript 5 [20:43] creationix: mape, where are you at? [20:44] mape: creationix: The asset manager plugin or in the world? [20:44] creationix: world [20:44] mape: Still stuck in Sweden [20:44] mape: but the assetsManager works well though [20:44] creationix: nice [20:44] mape: creationix: http://gist.github.com/426918 [20:45] mape: Not sure if it breaks the "ideas" of how the middleware should work but yeah. [20:45] mape: Not sure if I should use the routes middleware instead of creating a "new" one [20:46] creationix: I'm not sure either [20:46] creationix: still trying to find out the best way to do everything [20:46] mape: Hehe well at least I'm not alone then [20:47] dabreaka has joined the channel [20:47] creationix: feel free to give feedback as issues on the github for connect [20:47] creationix: or start a list of third-party stuff on the wiki [20:47] creationix: I'll be looking at the community feedback when I get back to work next week [20:47] mape: But it works well, minifies/concats files, you are able to manipulate the files so you can hook SASS into it and it does live regen of the cache when files are changed. 600req/sec as of now [20:47] creationix: not bad [20:48] creationix: and add the cache layer in front and it will fly [20:48] mape: It does have caching now [20:48] mape: It just serves the content out of cache[groupName].content [20:48] mape: so not really sure why it isn't faster, perhaps the since of the strings cached? [20:48] mape: *size [20:48] creationix: cache as buffers [20:49] creationix: but really you need the whole response as a single buffer [20:49] creationix: which the cache layer does [20:49] creationix: it's a short lived cache, about 100ms default [20:49] creationix: but makes synthetic benchmarks really fast [20:49] mape: Ah k, I'll take a look at that [20:49] creationix: and merges concurrent requests for the same resource [20:49] mape: Good reason to learn about buffers [20:49] creationix: yeah, strings suck for anyting more than a line or two [20:52] mape: Does the gzip middlewear lessen performance a lot? [20:52] mape: *ware [20:53] creationix: not too much [20:53] mape: But when using cached buffers the gzip would also be cached? [20:53] creationix: yep [20:53] creationix: alright, I'm about to present my talk [20:53] creationix has left the channel [20:53] mape: Good luck! [21:03] hellp has joined the channel [21:04] steadicat has joined the channel [21:05] cloudhead: anyone looked at Connect yet? [21:05] mape: Yup, writing asset management for it [21:06] cloudhead: hm [21:07] thejustinwalsh: staring at it right now, trying to decide, would it more performant to use connect, or roll my own with a specific purpose... [21:07] mde: Yeah, I'm going to see how much work it will be for Geddy to play nicely with it. [21:07] dgathright has joined the channel [21:07] cloudhead: not a fan of the api so far [21:07] cloudhead: but we'll see [21:08] mde: It will likely evolve. And they will want feedback on that kind of stuff. [21:08] Kiba has joined the channel [21:08] Kiba: hello [21:08] Kiba: http://gist.github.com/427000 [21:09] Kiba: Object # has no method 'getLimit' [21:09] Kiba: why? [21:10] Kiba: why it can't use this.GetLimit function? [21:11] Kiba: nvm [21:11] Kiba: I fixed it [21:11] Kiba: function () cause funky error [21:13] thejustinwalsh: I feel so grandpa, i have no idea what a websocket is :D [21:14] mde: "You kids get off my lawn with your WebSockets!" [21:20] thejustinwalsh: The specification is simple enough [21:24] liucougar has joined the channel [21:24] steadicat has joined the channel [21:25] pgriess has joined the channel [21:26] mape: nice, 4600 req/sec on the assets manager when using buffers instead [21:29] mape: hmm or not.. [21:31] robrighter has joined the channel [21:34] markwubben has joined the channel [21:35] SteveDekorte_ has joined the channel [21:36] rnewson has joined the channel [21:38] ph^ has joined the channel [21:49] pgriess has joined the channel [21:51] cheapRoc has joined the channel [21:58] rolfb has joined the channel [21:59] Aria has joined the channel [22:10] JimBastard has joined the channel [22:17] mape_ has joined the channel [22:21] mape has joined the channel [22:23] voodootikigod_ has joined the channel [22:32] rnewson has joined the channel [22:32] siculars has joined the channel [22:36] richcollins has joined the channel [22:39] derbumi has joined the channel [22:55] Determinist has joined the channel [23:06] paul_irish has joined the channel [23:07] SteveDekorte has joined the channel [23:29] creationix has joined the channel [23:33] raz has left the channel [23:36] danfo has joined the channel [23:37] xer0x has joined the channel [23:38] tmpvar has joined the channel [23:39] mattly has joined the channel [23:40] tk has joined the channel [23:48] rodrigo3n has joined the channel [23:48] rodrigo3n: hello everyone [23:48] rodrigo3n: i heard everybody talking about the awesomeness of node.js and I got interested [23:49] rodrigo3n: i have a doubt? To implement Node.js within a Rails application, do I have to use a specific gem? [23:50] rodrigo3n: or is it pure js? [23:50] maushu: ACTION facepalms. [23:50] maushu: rodrigo3n, it's a framework that runs javascript. [23:50] maushu: Not related to ruby. [23:51] thejustinwalsh: Hrm, playing with the connect lib, chrome doesn't want to believe the mim-type being sent from the static provider... :( [23:51] creationix has joined the channel [23:51] thejustinwalsh: Hrm, playing with the connect lib, chrome doesn't want to believe the mim-type being sent from the static provider... [23:51] maushu: thejustinwalsh, slap chrome around. [23:51] rodrigo3n: maushu, interesting [23:51] thejustinwalsh: Keep getting resource interpreted as document... when i try mp3's or swf's [23:52] thejustinwalsh: maushu: not sure slapping is going to help, maybe a good drop kick though [23:52] maushu: Are you sure the mime-type is correct? [23:52] thejustinwalsh: DEBUG: File: /flash/MiniTempest.swf Mime-Type: application/x-shockwave-flash [23:53] thejustinwalsh: That file results in a failed to load resource, then downloads it instead [23:53] rodrigo3n: maushu, so, in a [whatever-framework) application I should put my node.js files in the same place i put the ones for the site design (generaly /public/)? [23:53] smtlaissezfaire has joined the channel [23:53] thejustinwalsh: ahahah, nm [23:53] thejustinwalsh: fail [23:54] maushu: rodrigo3n, no, no no. [23:54] maushu: Node.js *runs* javascript files. [23:54] thejustinwalsh: just checked the Response Headers, and they are all goofy, must of borked something [23:54] maushu: Basically, you make applications in javascript. [23:54] rodrigo3n: hmmm [23:55] rodrigo3n: lets think in a hypothetical application like twitter [23:55] rodrigo3n: lets say i want the updates to come asynchronously [23:55] maushu: Oh, that reminds me. [23:55] rodrigo3n: the application itself is made with ruby/python/ lets say [23:56] _announcer has joined the channel [23:56] rodrigo3n: i'd have to put the nodejs server in a subdomain [23:56] maushu: !so-last [23:56] maushu: ... [23:56] rodrigo3n: and then link both? [23:56] maushu: ryah, your code broke announcer. >:| [23:57] [[zz]] has joined the channel [23:57] thejustinwalsh: Grrr... It's a warning but... Resource interpreted as document but transferred with MIME type application/x-shockwave-flash [23:58] maushu: rodrigo3n, in node.js you would make a program that would connect to twitter and then send the tweets to your ruby/python application. [23:58] thejustinwalsh: Oh and mp3's straight say Failed to load resource, then play hapily...? [23:59] thejustinwalsh: *happily [23:59] rodrigo3n: maushu, its getting clearer [23:59] maushu: rodrigo3n, if you want to have a website in node.js you would implement a http server.