Office Vermin (No, not that guy who sits next to you)

Today we had a visit from a good friend. Our friendly neighborhood office chipmunk (or squirrel). I'm pretty sure this is the guy who used to poop on my desk, before I got my handy-dandy office. He's probably usually a night time guy, but this morning, he was out and about digging our cubes.

Office Chipmunk

We tried to catch him. He was fast.

Office Chipmunk

A couple of hours later, he showed up in a neighboring office, hanging out in a hat that was on the floor.

Office Chipmunk

That lead to a mad chase into another office, where we cornered him, successfully coaxed him into a trash can, and freed him outdoors into the wild.

He was promptly eaten by a lion

He didn't really get eaten. Later word was that he tried to get back into the building to hang out with us.

Don't Dump!

Just a quickie while I gather thoughts for a longer post

Don't Dump!

Selling Stuff

I need to rid myself of some extraneous electronics. I'm going to throw them up on ebay, I think, but if someone comes across this and wants to buy something, let me know (my email is over there --->).

I'm going to sell:

  • an XBox, a couple of controllers, and some games (mostly sports games)
  • a Dell Axim x3i PDA (running Windows Mobile 2003, with wireless access and even a fold-up keyboard)
  • a less than 9 month old Motorola Q with box and manuals and cable and pretty much everything

If you want something, drop me a note here, on email, or on Twitter.

iPhone!

iPhone

My iPhone is coming! My iPhone is coming!

phpBB is a Piece of Feces and May Be the Bane of My Existance

I haven't been posting very much recently because I've sadly been working my tail off. I very much enjoy what I do, but there are just weeks (months ... years ...) where it's just a non-stop grind to get everything done. Recently, it's been working on launching a new VPS platform, but that was interrupted by a breakdown of our customer MySQL infrastructure.

Our setup is a bit different than most. Since we don't run a typical box-by-box web hosting architecture, we don't simply have a thousand boxes with each one running Apache and MySQL. Instead, we have a really robust pooled architecture for everything except MySQL, which just isn't something that's very poolable. For MySQL, we've got some big boxes with a bunch of memory and some fast disks that handle our MySQL load. But, slowly over time, performance had degraded.

When you'd hop onto a box and look at the transactions per second or number of queries, nothing looked terribly out of the ordinary. Yet the load would be huge, and performance would be pretty bad. Our team brought up some new boxes, shuffled customers between them to even the load out, moved our backup processing onto the hot spare replicated boxes (to reduce even more load on the disks) and things were better.

But they weren't better enough. (I know, awesome English, eh?)

We started just watching the processlist, looking for the culprit. And after about 5 minutes, it was obvious.

Motherfrakking phpBB spam.

phpBB is written in a really shitty way. Not the forum part, necessarily, which works when it's not being exploited. But the search part is awful. For every word in every post (unless you've got a smart list of words to ignore), it throws entries in some big tables so that when you search for "foobar", it can tell you every post that contains that work. That's a fine design for a small board with a tiny amount of traffic. But as your board grows, even legitimately, that table can become hundreds of thousands of rows long (or more!) and inserts and selects can become extremely slow.

It's ten times worse when the only thing putting content into is spammers who are just flooding it with huge wordlists multiple times per second. Now, all of a sudden, you've got this single board showing up in your processlist five times, with each entry running for 30, 40, 50 seconds. One of those boards can cause some extra load on a server.

When you've got ten or twenty, it can bring the server to a halt. Literally. I popped onto a server where the load was near 10. I turned off 40 phpBB boards getting spammed. The load dropped to less than 1 and stayed there.

After some quick thinking, we identified a bunch of boards that were getting spammed and turned them off. One of our engineers built a brilliant little monitoring script that can identify phpBB boards in the processlist and shut them off if they show up at a high enough frequency with those awful queries (you know then when you see them, believe me). All told, we've turned off maybe 12k boards in the past 2 weeks, and haven't heard a single complaint.

Why? Because these boards were setup by users who then forgot about them. And there they sat, for months or years, collecting spam, draining resources. Basic negligence on the part of users caused a huge server load, which then caused those same customers to call in and complain.

It feels like we've got this mostly under control, except for the user side. We need to figure out a way to get people to realize that the things they install on their site can be exploited and lead to security issues (on their site), performance issues (for everyone), and can suck up the resources they pay for.

But yeah, it sucks when you work about an 80 hour week because people forget about their phpBB install, and the folks who wrote phpBB decided that they'd build the most stupidly designed search setup of all time.

So, when on April 8th my Twitter looked like this:
php is feces

now you know why.

Umm, Firefox ... maybe it's still cookie dough?

I installed Firefox 3 Beta 5. I've been running the Firefox 3 Beta for a while now, and it's been pretty solid. Well, it was less happy today. To paraphrase an episode of Buffy, it might not be fully-baked yet; it may still be cookie dough.

crash

5 crashes in 3 hours. Maybe I should go back to Safari ...

Upgrading to WordPress 2.5

I figured I'd log what I did when I upgraded my blog to WordPress 2.5.

First, I disabled some plugins I figured I wouldn't necessarily need post-upgrade. The two I disabled were Kramer, which grabs Technorati links back to the blog (newly built into the WordPress dashboard) and SpotMilk, a customized dashboard (which I wasn't even sure would work).

Then I upgraded.

So far, so good.

Poking around the settings, I decided to turn on the global Gravatar usage, rather than using the Gravatar plugin. That's a great idea, except my theme doesn't come with Gravatar support, so I'll need to use the built in functions.

Then my MacBook crashed for the second time today (I think it's Twitterrific, but we'll see). Awesomely, MarsEdit earned its keep by having autosaved my work. So back to it.

After poking around, I got the built-in functionality to work, but since it returns an entire image tag, and not just the URL to the avatar image, it's actually less useful to me than the plugin is. I turned the plugin back on. Good enough.

Next, I noticed the Mowser plugin had a new version. Perfect chance to try the new built-in plugin updating. Clicked the link and that was pretty much it -- the plugin was up-to-date. Nifty. You can see the Mowser-fied version of my site here. Not perfect, but pretty good work from a one ... two person company.

Took this as the opportunity to clean up my plugins page. Gone are the aforementioned Kramer and SpotMilk, along with the Hello Dolly and WP-flv plugin I'd installed a while ago.

Now, I wanted to turn some of my hard-coded plugin links into widget usage, to make switching themes easier. I started adding widgets to my left sidebar, expecting that I'd need to go disable them in the code. Nope! Nice, it must use a different bit of sidebar code when you use widgets. Very cool. This allows me to dump a couple more plugins (MyNetflix and a Last.fm one).

Also, turn off WP-Cache when you're testing, or you'll be annoyed out of your mind.

One missing widget: I was previously using the Google Shared Items widget, but now I'll just use the RSS feed for it. Let's see how that looks ... ugly. But, good enough for now. Maybe there's a WordPress widget for it. Wow, I'm digging the widgets. They make my life a whole lot easier. I should have tried this a long time ago. Even added a little About Me text widget.

Turning WP-Cache back on.

Finally, testing to see if MarsEdit can still post ... huzzah! Success. And with that, I'm done.