When I first created this blog, I used an open source content management system named Mambo to hold all the articles. Mambo is a free package, reasonably easy to learn, and certainly powerful enough. However, I began to have issues with it on two of my other web sites and decided it was time to look at others. One of my co-workers told me about Movable Type, another free open source package, and I decided to give it a look.
As it turns out, Movable Type needed certain services (specifically, the use of Perl CGIs) that weren't part of my hosting account on any of the three sites I ran with Mambo. I upgraded to the "next level" of hosting, and gained an additional feature - the ability to point all of my domain names at a single account with my provider.
After giving Movable Type a try for a while, I decided to take the plunge and migrate all my sites over to it. The problem was, the two sites didn't have any common formats for exchanging my data. I had to fire up the old text editor and create my own. I wrote a simple PHP program to dump the articles, with a thought to doing some kind of copy/paste arrangement. When I figured out how long that was going to take me, I abandoned the idea. Instead, I decided to try to use the "Import" feature of Movable Type. I looked up the documentation online and create a sample article in the Movable Type editor. I exported that article to get a look at the file format. It looked pretty straightforward.
After studying the PHP code I had written and the Movable Type documentation, I created a PHP program to dump all the content from the old system into the Movable Type format in a text file on my PC. I fed the output into Movable Type and it claimed that everything imported successfully. Unfortunately, when I went to look at my content, there was nothing there.
Finally, I realized that Movable Type is primarily a Linux-based system. Text files on Windows and text files on Linux/UNIX have a different way of indicating the end of a line of text. Since my file was coming from a Windows PC going into a Linux system, the Linux system was having trouble interpreting where the lines of the file were indicated. I found a free program called "EOL Converter" that changed the file into Linux/UNIX format. I imported that, and Movable Type was much happier. This time it actually showed me the names of the articles it was importing. I thought that would be the end of it. I was wrong.
Unfortunately, when I looked at all those articles I'd imported into the system, everything was there except for the body text of the article (i.e., the part you're reading right now). I compared an article I'd exported from Movable Type earlier with one that I'd output from Mambo. Going over it line by line, space by space, I finally found a minor difference. At the beginning and end of the article body, you're supposed to have 4 dashes, to help Movable Type know where your article really ends. I apparently had a mix of 4 and 5 dashes in the output I generated from Mambo. I changed it to 4, per the documentation. That didn't work. I changed it to 5, and it did.
At this point I could import articles from the old system, but I realized that just pulling the HTML over wasn't enough. The old articles had references to graphics files that weren't on the new system. I had to do a huge "find and replace" job over the Mambo output to correct these broken graphic references. I also realized that the links to other articles on my site would be broken as well. That, I was going to have to handle manually because the old content system referenced articles by a number, while the new one uses names.
All told, I probably invested 20-30 hours getting the content from my old systems to the new one. The most visible thing I'll gain from this is a cost savings. I had been paying $4-7 a month to host each of my four sites, totaling around $20-24 a month. The new $6.99 a month account will host all four sites (and more), saving me $13-17 a month in hosting costs. I also gain some consistency, in that all my sites are hosted on a single server with a single content management system. That should make it more efficient to work with.
I've also gained another benefit. I wrote a Visual Basic 6 program that allows me to input articles like this one and output them in Movable Type input format in a text file. That text file can later be imported into Movable Type and the articles posted automatically for me. Using that program, I'll be able to blog anywhere I have a computer (it can run off a USB memory stick)... even if I don't have Internet access. Later, when I'm back online, I can just upload the file and the articles go online.
Well, I'm about to head off to the Gen Con Indy 2008 game convention in Indianapolis. You may, or may not, read more from me over the next few days. Rest assured there will be words and probably pictures when I get back!