Shiny New Toy

Spurred to action by a fit of insomnia, I decided to replace the software I use to host my blog, photo gallery and other bits of my digital persona. After two weeks of restless nights, you see the results before your eyes. My homepage is no longer a blog; it is now the world’s most underutilized CMS. Victory is mine!

If I had any loyal readers, they would agree that I don’t post much content on my home page. I don’t have much to say, I don’t get much traffic, and my needs vis a vis blogging software are few. But since I began fiddling with Rails and RIA development, I have been afflicted by the need to engineer away my software and replace it with homebrew Web 2.0 crap. I have two excuses for this behavior:

  1. I’m teaching myself new tech
  2. I’m engaging in entrepreneurship by creating valuable intellectual property

Actually, I’m a raving loony and I can’t help myself; writing code is my OCD tic, the digital equivalent of uncontrollable hand-washing. But I digress. About the blog…

Since 2005 I’ve used a PHP application called Geeklog that has served me well for the most part. One month ago, a manic desire overtook me: my stable, cheesy, easy-to-use homepage had to go! I had to replace it with it something faster, stronger, better.

Naturally, my new homepage was going to be a Ruby On Rails web app. It would be RESTful, dynamic, and Web 2.0. If would sport AJAX, JSON, Flash, Silverlight, and other technologies whose names sound like designer drugs. My homepage would live in the cloud. Distributed and infinitely scalable, its transcendental, gossamer beauty would make the gods weep! But first, I had to do some research.

Where to Host?

After dithering for a week, I settled on renting a virtual private server from the boys at Slicehost. Attractive prices and a comprehensive, well-written FAQ drew me in, but what really hooked me was the community. Slicehost maintains a wiki with hundreds of user-written sysadmin and coding recipes, all customized for use on Slicehost.

Finally, the Slicehost system itself is a distributed Rails app; knowing this gives me the warm and fuzzies. My precious bits are in the hands of kindred spirits!

How to Deploy?

The clear winner in the RoR deployment space is Capistrano . This is not a point-and-click tool; its sparse documentation and cryptic naming conventions mean that it’s not for the faint of heart. But, if you’re a command-line kind of guy, using Capistrano with a VM staging and deployment regimen is far and away the cleanest, easiest way to achieve deployment nirvana. After hacking on my app, I deploy it to my staging VM with just one simple command. If I screw something up, I just revert the VM state to its known-good snapshot and try again!

Since my production host is also virtualized, I have the luxury of taking The Ultimate Mulligan if something ever goes south during a deployment. Before I deploy, I make a snapshot of my entire live system: its hard disk, memory, kernel, applications and data. I’m never more than a single mouse click away from that known-good state.

What Blog to Use?

They say every Rails acolyte should write his own blog software as a rite of passage. Since my first Rails project was a double-entry accounting system and money management solution with built-in graphing, I decided that I was exempt from running that gauntlet.

If everyone steals from everyone else, then theft is indistinguishable from donation; hence open source. I scoured the Web for promising work to steal, and quickly stumbled across Radiant CMS. With its active development community and Rails philosophy of a lean core product with extensions for the fancy stuff, Radiant is as ideologically pure as the driven snow; right up my alley!

Astounding Conclusion

After three weeks of research and on-and-off work, you can see what I have wrought: a blog very much like my old blog, but with virtually no features, and without my beautiful photo gallery. I will add these things over time, sometimes stealing other peoples’ code that I think I can integrate into my fiefdom, sometimes whittling code out of aether.

I’m content with the afterglow of a good coding project, but I can’t help but feel a twinge of regret at losing Geeklog’s many features. I miss my photo gallery, my polls, and my user comments, even though the only comments ever posted were ads for Viagra or porn. More than anything else, I miss the comfort and safety of point-and-click. I miss the ease of mind that comes with using a static, pre-packaged application that someone else wrote. If something blows up with one of those PHP web apps, you know who to blame.

It strikes me that when I reinvented my homepage this time, my decision had little to do with which app had the slickest skins, the most plugins or the easiest install process. Unlike in previous years, I wasn’t looking for the quick fix. This time, with every choice I made, I was guided by principle and by the need to create software using the language and tools that I want to use. I chose software and services made by people who quot;get the picture" regarding open source, clean design and community-driven development. My blog project was really a solution in search of a problem. It was tremendous fun, and I wouldn’t have done it any other way.