Web Hosting Lessons I Learned This Week

At work we're wrapping up the development/stabilization of a new platform rollout. All sorts of planning went into it. Much smarter people than me figured out really clever ways of moving data around, and ensuring that all of the servers would be running the same code, would stay in sync, and the platform would be rock solid.

That was the theory, at least. It should have worked. Except for two things:

1) Microsoft FrontPage sucks.
2) Macromedia ColdFusion sucks.

The vast majority of web hosting customer use FrontPage. It's unfortunate, but Microsoft made it easy and cheap for people to build web pages, so now you have to support it. If it was just the WYSIWYG editor, it wouldn't be a big deal. People would build pages, upload them through FrontPage, and all would be well with the world.

But that's not how FrontPage works. FrontPage uses these server side things called extensions to keep track of the state of files, so that it only needs to upload ones that have changed. It lets you synchronize your local files with the server, getting the latest versions on both. It does stuff weird stuff with templates and themes, where it tries to guess what you want/need, and will *actually change your code* if it things something has changed.

Why did this make my life miserable? Well, it turns out that installing the FrontPage Extensions into someone's web directory is problematic. It doesn't always work right. Sometimes, the extensions doesn't get installed at all. Sometimes certain files are missing, leading to the code change situation described above.

In the end, the most reliable solution seems to be to always install the FrontPage Extensions locally. That seems to alleviate most of the issues. However, when you're working with a shared platform, that's not the optimal solution. You don't want to have to spawn off operations to run on separate boxes, especially when the datastore in the background is a central share. Alas, that seems to be the remedy to the installation issue.

Worse yet, there's not really a solution to the issue with FrontPage changing code. One of our tools brings over the user's files, installs FrontPage, and (in theory) that's it. The user is all setup.

Except ... FrontPage sometimes times out when calculating the file statuses (remember that from earlier). So FrontPage then just changes a bunch of files and things get all broken. All a user would need to do is reupload the files, and that fixes things, but still, it's not an optimum thing for the user.

All that is just FrontPage.

Why does ColdFusion suck? Because it runs as an ISAPI filter. When it stops working, it brings down *every single person on the server*, whether they use ColdFusion or not.

That's simply a broken way to implement a product.

Those two things contributed to a long week. The upshot is that the hours spent now are likely to save many more hours down the road.

My Nifty List Last.fm Profile

So, I use Last.fm to aggregate what I listen to in iTunes and on my iPod. It does some cool stuff like telling you what you've listened to the most overall (The New Pornographers, Fountains of Wayne, Harvey Danger), in the last week (The Arcade Fire - Neighborhood #3 (Power Out)), etc. It's pretty cool.

I don't log in all that much, since I've got an iTunes plugin that automagically updates it. You can generally see the results over on the right hand side of this page, or by directly visiting my profile.

I quickly logged in when I got home from work, just to see if anything new was happening on last.fm, and lo! I see my little profile synopsis:

My Last.fm Profile

Check out that number of songs listened to. Nifty.

I rock.

If Only I Had a Foot Rest

My work chair is setup so the arm rests fit just below the height of my desk. This way, I can lean back in my chair, put my feet on my cube walls, and slide my chair in real close to my desk. If I'm sitting normally, my arms generally rest on the desk anyway, so this works out perfectly.

Of course, there's one exception. I just wedged the fingers of my right hand between my arm rest and my desk, while simultaneously sliding my chair in. This resulted in a significant amount of pain, a couple of purple fingers, and my having to type using less than the normal amount of dexterity.

I think I will survive, but it sucks. If I had a foot rest, this never would have happened, since I wouldn't be trying to put my feet on my cube walls. I suppose it wouldn't have happened if I wasn't a complete fidget who needed to be contorted into odd sitting positions (like my current one leg tucked up underneath the other position).

Anyway ... ouch.

Moving a MySQL Based Message Board

. . . is a huge pain in the ass. A little over a month ago, we decided to move the Blair Wasdin Project (Red Sox/General Baseball) and Chair Chuckers (Celtics/General Basketball) message boards from the old crappy web host they were on to a newer, better web host.

The basics of this are easy:

  1. Move web files
  2. Move databases
  3. Repoint DNS

Simple enough.

And the first step--moving the web files--is easy. FTP down from old, FTP up to new. Easy.
The last step is also trivially easy.

That leaves ...

Step 2. It's a complete bitch. Since most shared web hosts don't give you access to the MySQL server, you can't just go grab the database file and move it. You have to move the actual contents of the DB through SQL insert statements. Create tables and fields, insert data; rinse; repeat. There are some tools to make it easier, bundling the jobs up into a big batch text file, but on a message board with thousands of posts, these files become quite large. Uploading generally causes the remote web server to time out. So you have to break the file up into smaller chunks.

It's just tedious.

I'm sure there's a better way, but I was lazy and this was the best I could figure. In the end, it worked. It just took a long time, and during the time you're moving data, new data is getting inserted. So, short of turning off the board for a period of time, you're simply fighting a losing battle.

Why am I writing about this? Mostly so that I'll remember how to do this if it comes up again. Partially to remind me to think about (and Google) a better way of doing this, should the need arise. And a little bit just to vent about an annoying process and think about a way to improve this situation for shared web hosting customers (which is my job).

My Review of the Nintendo DS

Over the last couple of days I've mentioned my acquisition of a Nintendo DS, and a couple of games for it (Mario Kart, Animal Crossing). The DS is a pretty nifty device, a little bigger than I expected, with two pretty bright, detailed screens. The ones in the store don't do the screens justice, as they've been pawed and scratched to crap. It's plastic, but feels very strong and rugged. In fact, I dropped mine today and it's no worse for the wear (I'm a complete spaz).

Visually, playing a game like Mario Kart rocks. The top screen is the game screen, and it's graphics look to be N64 quality. There's no issues with speed or smearing or blockiness; everything looks great. The bottom screen is more than just a novelty gimmick, as it serves as a map/radar, and is absolutely invaluable. Once you play with it, it's nearly impossible to play without it.

I've got a little bit of issue with the size of the controls. I've got tiny hands, but even my hands cramp up using the tiny directional pad and buttons. Still, the controls are tight and responsive, and I'm able to play for an hour or so before I really need to take a break. The size of the directional pad is probably the one thing I would love to change on the DS.

There's only really one gimmicky thing on Mario Kart. In Battle Mode, when playing the traditional Balloon Battle, you actually need to blow up your extra balloons by blowing into the microphone. It's a little ridiculous, but does add a little bit of strategy to the game.

Animal Crossing doesn't have any of the niggling control issues Mario Kart does, as you simply don't have to use your hands as constantly. It's a more leisurely game, looks just like it's Gamecube counterpart, but with a slight curve to the world, which is a bit interesting. The touch screen control helps immensely when trying to write letters, move lots of items, or even just wander around. Animal Crossing is like Nintendo DS crack.

I haven't even touched on the wireless aspect of the DS. First, setup was a breeze, once I worked out a quick setting change I had to make on my fairly old D-Link wireless router. (Amusingly, this change also made the wireless connection to my TiVo significantly more stable, so kudos to Nintendo for that, too). There's room to store 3 different wireless setups, which means I can store my home setup, my work setup, and then use the 3rd to just grab whatever the local access point is. Once you connect, it just works. Mario Kart allows you to race people from around the world, and, again, it just works. Animal Crossing does the same, allowing you to connect to other towns. For this feature, or to race against folks you know in MK, you need a friend code, which I'm thinking basically is just a hash of some constants (the MAC address?) that Nintendo uses to find people who've connected to their network. Enter the code, and you can race against someone, or visit their Animal Crossing town. No charge, and it all works pretty smoothly.

I'd love if Nintendo would add a web browser, and I'm waiting for someone to come out with a media player adapter that accepts SD cards. The Nintendo DS would make a perfect device for a trip: browse the web (across both screens!) in the airport, then watch a movie (video top screen, controls bottom screen) on the flight. Considering companies released such add-ons for the Gameboy Advance, I've no doubt they'll be coming for the DS.

Animal Crossing - FOUND

Thanks to the wonderful Best Buy in Dedham, I am now the proud owner of Animal Crossing for the DS. Happy New Year. I'm off to go do some menial tasks to try and make money to pay off my house, while watching some football.

And yeah, I drove the 30 minutes to Dedham just to get this stupid game.

One Last Thing ...

This site is now officially the first search result for my name, which rocks my socks.

Fun Shows in January

Usually once or twice a month I take a look at the upcoming shows in the Boston area that I want to try to go to. I just took a look at January, and it looks alright.

January 5th - Kay Hanley at TT the Bear's
January 20th - Taxpayer at The Paradise
January 21st - Evan Dando at The Paradise Lounge
January 25th - Colin Meloy (of The Decemberists) at The Paradise
January 27th - OK Go at The Paradise
January 27th - Dear Leader at TT the Bear's
January 28th - Dear Leader at TT the Bear's

I'll definitely be at at least one of the Dear Leader shows, and probably Kay Hanley. I'd love to see Colin Meloy. So, for those of you who want to get me a late Christmas gift, well, now you've got no excuses.

Screw XBox 360

All I keep hearing about is the XBox 360 and how great it is and how hard it is to find.

Well you know what? I don't care. All I wanted post-Christmas was to sit on my couch playing Animal Crossing on a new Nintendo DS. I took my Christmas loot and giftcards and drove all over creation looking for the Mario Kart DS Bundle and Animal Crossing. Finally, at about the 15th store, I found a Mario Kart Bundle in stock.

10 stores later, still no Animal Crossing. The game is sold out everywhere. And don't give me the "it's for kiddies" crap -- everytime I walk into a store and ask if they've got it, I can tell I'm about the 50th adult to walk in that day looking for it. Everyone wants it. It's like Nintendo-brand crack. It's as hard to find as the XBox 360.

So, I'm placing a bounty on Animal Crossing. If you find it at a store, buy it, and I'll pay you back plus take you to a Red Sox game this year. Maybe even the Yankees.

In the meantime, I'm going to keep playing Mario Kart.

Happy Holidays, yo

Whatever your holiday, or even if it's just Sunday for you, hope it was good.

Keep waging that good war on Christmas.