2009-12-09:
[0:19] <tlrobinson> http://blog.parkerfox.co.uk/2009/12/08/beans-rubygems-for-javascript/[0:27] <Dantman> Wes--, want to answer a non-commonjs related server setup thought question?[0:33] <Dantman> Tch[12:31] <ashb> hannesw__++[12:33] <ashb> most responses are going to be 'bamn heres a templated page in one go'[12:35] <ashb> saying that tho, isn't it possible to convert promise<->node-like API quite easily?[12:38] <hannesw__> ashb: it should be possible to implement JSGI/Promise on top of Node API[12:39] <hannesw__> of course it'll be less efficient than "pure" node[12:40] <hannesw__> and performance obviously rates very high on Ryan's priority list :)[12:40] <ashb> everyone needs to be able to write a facebook-level app clearly :)[14:36] <Wes--> Dantman: Shoot! :)[14:39] <Dantman> Wes--, I already got a alternate answer from crucially, but I suppose you can give another. The question back then was "Looking at DNS Hosts has been a pain. We're using Rackspace's DNS right now, but we want to move away from the one server there. Rackspace Cloud's DNS setup is junk (bad ui, and missing functionality). And everything I've looked at for dns hosting gives me an ugh feeling. Would it be a good idea to setup a dns server on one of our clo[14:39] <Dantman> ud servers and have backupdns provide secondary/backup servers off that?"[14:40] <Dantman> crucially suggested dynect which they use[14:40] <Wes--> Dantman: No, just setup a couple of geographically diverse nameservers on boxes you have already. DNS is really really really really cheap on bandwidth, CPU, disk, etc, etc, etc[14:41] <Wes--> And just run bind. It's easy, and you own it. Your domain name is your brand, you CANNOT leave it in the hands of others.[14:41] <Wes--> I learned this lesson a long time ago[14:41] <Wes--> Then I forgot it[14:41] <Wes--> Then some terrorists flew airplanes into builds my DNS servers were in and I was offline for days[14:41] <Wes--> s/builds/buildings/[14:41] <ashb> Dantman: so you actually work with Artur?[14:42] <Dantman> Wes--, we don't have any "boxes" we're 100% cloud. Our only dedicated machine is a really old one which is expensive and we're trying to eliminate it.[14:42] <Wes--> Dantman: you must have IP numbers and processes[14:42] <Wes--> that's all you need as far as "box" goes, provided one of those processes can be a name server[14:43] <Wes--> But you should have at least some of your servers separate from the production stuff[14:43] <Wes--> even if it's just a slave sitting in your basement[14:43] <Dantman> ashb, He's Wikia's sysadmin, not work with but I talk with him a fair bit. I'm a little connected to the tech team as a member of the Wikia community, as well back when I was in high school Wikia's head tech wanted to hire me. never went through though.[14:43] <ashb> ah[14:44] <Dantman> Wes--, All of rackspacecloud's servers seem to be in one geographic area currently. And we're trying to get rid of our AWS servers as well.[14:44] <Dantman> That's why I was thinking of backupdns[14:44] <ashb> i'm friends with his flatmate and have spent to long on their sofa[14:44] <ashb> xname.org[14:45] <Wes--> Dantman: Trust me. Linux box under your desk will make you happier in the long run, even it seems counter-intuitive. Sync the cloud servers from that, but list the cloud servers in the registrar info.[14:46] <Wes--> I will never, ever be caught again not owning my DNS servers[14:46] <Wes--> Or at least, my *Primary* servers[14:47] <Wes--> I have two in the office here, and use two of Q9's servers in Toronto. They're listed first in the registry info, but if they ever screw up and drop my zone, my servers will still be available.[14:47] <Dantman> Hmmm... DNS on narcissus (the /server/ in our office running nagios) running primary dns, atlantis (our new rackspacecloud server) running secondary, and backupdns running a remote dns?[14:47] <Wes--> Having the primary servers locally also means I just use bind host files for config[14:48] <Dantman> Not bind though personally... I'll probably setup powerDNS[14:48] <Wes--> Why not bind? It's the reference implementation, and frankly, I haven't had a single issue with it...been running it for production work for 12 years[14:48] * ashb does crazy stuff. like binding boost.asio under the 'event' module[14:48] <Wes--> Also, you only have one server in the cloud?[14:49] <Wes--> Hmm, backupDNS's prices look reasonable also[14:49] <Wes--> one in the cloud, backup dns, all syncing from a machine under your desk works[14:50] <Wes--> make sure you set the expiry long, I use two weeks. That way, if the box under your desk dies, you have two weeks to fix it.[14:50] <Wes--> My under-the-desk box actually died last week, it had been in server continously since June 1999[14:50] <Wes--> s/server/service/[14:50] <Wes--> Not bad for a white-box commodity PC[14:51] <Dantman> We have one old dedicated server running php4 for real old clients. mustapha is our live server on aws, voltaire is our dev server on aws. atlantis is the new rackspacecloud machine we're trying to migrate everything from mustapha to (mustapha has been screwing up lately, we've had to constantly reboot it to keep it working).[14:52] <Wes--> do you know why mustapha is malfunctioning?[14:52] <Wes--> frequent reboots are a big waving red flag to me[14:52] <Dantman> Something to do with mysql likely[14:52] <Dantman> I'll also be setting up a new dev server on rackspacecloud (mu)[14:54] <Dantman> I didn't setup mustapha or voltaire myself, and they have almost no monitoring or anything. They're fairly badly setup. We were planning on moving to rackspacecloud anyways, so we're taking advantage of this to move up the plans and setup a good clean new set of secure and monitored servers.[14:54] <Dantman> ^_^ atlantis' firewall now denys ssh from everywhere but the office[14:55] <Dantman> ((I have our VPN setup))[15:03] <Wes--> Dantman: I don't know how you are on custom monitoring tools (we write lots), but I am looking at starting to build some in gpsee; it has enough access to the system to allow that[15:04] <Wes--> Dantman: you should have a publically-accessible ssh from your office then[15:04] <Wes--> that way you can fix your server when it crashes and you're at a buddy's house[15:04] <Dantman> I'd be more interested in a new stats system[15:05] <Dantman> Don't worry, we have work-at-home fridays and sometimes I work at home other days of the week. So I'm prepared for that. That's what the VPN is for.[15:05] <Wes--> Dantman: web stats? I've been thinking of doing SMS stats in gpsee, myself -- stuffing them into a mysql database (we use rtg now anyhow) and graphing them with ...rgraph?[15:05] <Wes--> rgraph, yeah[15:06] <Wes--> rtg does almost enough for what I want, but its display is not flexible enough; I cant get all my graphs onto one screen[15:06] <ashb> Wes--: http://github.com/crucially/timesplicedb[15:06] <Dantman> Wes--, we haven't really needed any more than one live server so far. Eckhart Tolle's sites are by far the most high traffic of everything we have. Even with them we've been fine for the most part on one. And we're actually moving eckhart's primary site and store away completely to their own cloud sites (not cloud servers) account so our actual traffic load is going to end up down about 65%.[15:06] <ashb> might be of interest to you[15:07] <Wes--> ashb: it is, wow![15:08] <Wes--> Dantman: if you have applications running on those servers, you can learn things about them just by graphing how they interact with users, and can use that learning to spot localized breakage or perf difficulties before trouble reports roll in[15:09] <Wes--> even something as simple as aggregating http response codes on a timeseries can be helpful from a sysadmin POV[15:09] <Wes--> it means you start looking at lines and trends, rather than trying to spot troubles in logs[15:15] <Dantman> ^_^ I setup a script in Kommonwealth v3 to generate the source for a dot graph depicting the way site, page, and jit objects in the database are linked.[15:15] <Dantman> ;) JS of course[15:21] <Wes--> Dantman: awesome[15:21] <Wes--> Dantman: check this out: http://farm4.static.flickr.com/3610/3588049466_5624ea3510_o.png[15:21] <Wes--> that's from asa dottler's blog[15:22] <Dantman> Interesting[15:22] <Wes--> his conclusion was that ie8 is canabalizing mostly from ie7[15:22] <Wes--> but there is more interesting information than that in that graph. Can you spot it?[15:22] <Dantman> http://stats.wikimedia.org/wikimedia/squids/SquidReportClients.htm[15:22] <ashb> IE's share is dropping[15:23] <Wes--> yep, but that's not what's *really* interesting in there[15:23] <Dantman> IE6 still drops on weekends?[15:24] <Wes--> right -- conclusion?[15:24] <ashb> offices still are on ie6, home users are on 7 or 8[15:24] <Dantman> Mhmm[15:24] <Wes--> exactly - which is a conclusion I think is even more interesting than "ie8 canalibizes from ie7's browser share"[15:25] <Wes--> now look at the ie6 trend line[15:25] <Wes--> the big drops in trend match up with holidays[15:25] <Wes--> that's supporting evidence[15:25] <Dantman> Ack, 7:25[15:26] <Wes--> So, July 4th long weekend, labour day long weekend, american thanksgiving, christmas, easter, and whatever the americans celebrate instead of victoria day[15:26] <Wes--> And information like THAT is why I have always found it interesting to graph frequency data from logs[15:26] <Wes--> you never know what you're going to learn![15:27] <ashb> http://farm3.static.flickr.com/2531/4070873506_87ffcbf4d2_o.png[15:27] <Wes--> Now, if you had a screen showing browser share and ie6 tanked unexecpted -- right after a site upgrade.. you might want to revert and assume you've broken ie6 somehow. :)[15:27] <Dantman> There's something else to be careful of. M$'s bing search engine apparently seams to masquerade as IE6 in a way that most browser detection considers it IE6, and it does heavy hits.[15:28] <Dantman> It's fairly possible that M$ is artificially inflating the stats of how much IE6 is used[15:28] <Wes--> ashb: what am I looking at, the ad?[15:28] <ashb> the chrome lohgo[15:28] <ashb> logo[15:28] <Wes--> oh! WTF?[15:29] <Dantman> http://opengameart.org/forumtopic/dear-microsoft[15:30] <Dantman> Time to be off to the office[15:30] <Wes--> "how much" is trend-graph proof in all likelihood, anyhow[15:30] <Wes--> astroturfing more than likely either shows up as a noise floor or spikes[18:15] <ashb> deanlandolt: can't you compress gzip in chunkjs[18:15] <ashb> 0j[18:15] <ashb> you might have to buffer some[18:15] <ashb> but not all of it[18:16] <deanlandolt> ashb: sure, but how do you hook into the forEach-able?[18:16] <deanlandolt> you'd still have to wait for it all to be returned, right?[18:16] <ashb> if its [giant_chunk] yeah[18:16] <deanlandolt> what if it were [small_chunk_1,...]?[18:17] <ashb> then in that case its even more similar to the async case[18:17] <deanlandolt> hmm...let me look at the jack streaming stuff...[18:17] <ashb> forEach(wrapper.onChunk(writer, middleware))[18:17] <ashb> or some such[18:17] <ashb> except you know, not, but you get the idea[18:18] <deanlandolt> i was under the impression that without something like coop concurrency we wouldn't be able to do anything with response.body when returned as a forEach[18:18] <ashb> sure it wouldn't be concurrent, but it would still behaves the same to the middleware PoV[18:18] <ashb> which is the important thing, no?[18:19] <deanlandolt> well sure[18:19] <ashb> basically instead of passing the actually writer to the app middlware you pass[18:19] <deanlandolt> let me play a little[18:19] <ashb> function(chunk) { writer(mw.onChunk(chunk)); }[18:20] <deanlandolt> where does writer come from?[18:21] <ashb> hmmmm yes that is a bit more complex[18:21] * ashb fires up that async example again[18:21] <deanlandolt> :)[18:22] <ashb> also damn you. i was actually writing cool stuff[18:22] <deanlandolt> your example is effectively a response filter (at least that's what it is in my head)[18:22] <ashb> like setTimeout for Zest[18:22] <deanlandolt> well get back to it :)[18:25] <ashb> deanlandolt: http://pastie.org/735787[18:26] <deanlandolt> ashb: but again, where does writer come from?[18:26] <deanlandolt> oh...errr, never mind[18:26] <ashb> it gets passed in by the current JSGI proposal[18:28] <deanlandolt> ashb: hmm, okay, so what the hell...perhaps my proposal for progress events may be unnecessarily complex[18:28] <ashb> i think we need examples either way to actually compare them[18:28] <deanlandolt> agreed[18:28] <ashb> there have been lots of samples being thrown about[18:28] <deanlandolt> i'll write something up[18:28] <ashb> and i'm no longer sure which is the canonical example for each of the 2(?) forms[18:29] <deanlandolt> yeah[18:29] <deanlandolt> well, there are three promise proposals -- 2 from kris and 1 from me that combine the two, and then there's your proposal and hannes'[18:31] <ashb> my proposal is fairly to similar to what ryan is asking for i think[18:31] <ashb> at least in feel its very similar to the current node api[18:31] <deanlandolt> yeah, pretty close -- i consider it a response filter approach[18:31] <ashb> (unintentionally mind, but it is)[18:32] <deanlandolt> and it would work...it just seems so contrary to sync jsgi[18:32] <ashb> hmmmm yeah i can see what you mean about that.[18:32] <deanlandolt> and i can't for the life of me understand how to spec that[18:32] <ashb> they dont even feel remotely similar[18:32] <ashb> but none of the async approachs really do, do they?[18:32] <deanlandolt> well a promise returned instead of a response is pretty damn close[18:32] <deanlandolt> (and really easy to spec)[18:33] <ashb> hmmmm true[18:33] <deanlandolt> it may not be as elegant[18:33] <ashb> deanlandolt: so yeah - get onto those canonical eexampls :D[18:33] <deanlandolt> but i think we can turn one into the other with library[18:33] <deanlandolt> will do...get onto that setTimeout[18:33] <ashb> am[19:11] <Dantman> Wes-_, btw, it's actually highly possible that it's Eckhart's store's fault that mustapha is acting screwy. They're using magento for the store and magento shoves a pile of shit into the database. It's a 211MB db where 90% of that is junk[19:12] <Dantman> And it adds more junk each time someone visits a page
Logs by date :