One of the many headaches resulting from a recent change of laptops was a semi-forced abandonment of Radio Userland as my blogging platform. I’d been considering the move for some time (Scobleizer‘s experience helped): while i owe a debt of gratitude to Radio as my introduction to blogging three and a half years ago, the problems had been mounting. Radio is cool because it bundles together a bunch of different features into a desktop application: you get a server, a scripting language, an RSS reader, and lots more. But it’s quirky (probably for the same reason), it was always a major effort to change or fix something, and the software’s looking increasingly, well, shabby compared with other alternatives. Back when i first started blogging, i spent an inordinate amount of time (some of it enjoyable) tweaking my site’s appearance, incorporating new features, etc. Now i’ve got plenty of other ways to waste time, and i just want to write.
Since i had let my subscription lapse, moving to a new laptop meant either pay up or say goodbye. Tacking this change on top of several others (more about that in a later post) made it especially painful, which explains three solid weeks of blogging silence.

Deciding where to go next was almost a foregone conclusion: WordPress was one of several client-side installations available on my hosting service, and looking at this very helpful comparison chart made it pretty clear. The main selling points for me were things like the right cost (free), rich but user-friendly template creation, painless syndication, categories, and a strong user user community (i’m looking for low-hassle). Comments were a key thing that just didn’t work anymore with Userland: they were slow to access, i couldn’t get notifications (so people would leave comments i’d never know about), and comment spam was winning hands-down: i’m hoping to do better with WP. The ability to import from other platforms turned out to be a major plus too, though it wasn’t one of my criteria.

I’m plagued by the Geek’s Law of Difficulty in Hindsight: objects in the rear view mirror appear much harder than they did when you were approaching them. Basic installation was a piece of cake, but i guess i’m pretty picky about the cosmetics (something i spent waay too much time on with my Radio blog). I started out with the Tiga theme, and spent a little time trying the built-in controls for modifying its appearance (the Tigarator 🙂 ), but eventually broke down and just modified the stylesheet directly. However, at least there was a stylesheet (i had to create my own for my Userland blog), and it’s very clearly organized. I still have a few tweaks to make to the presentation, but i’m mostly there.

Then there was importing old posts, something i hadn’t even considered (i figured i’d just leave them where they were, in their former Userland glory). Here i found two guides that were useful, though they didn’t cover it all. This wiki entry laid out one set of details for importing from Radio’s RSS feeds, but it started out with several requirements i didn’t meet, and got more complex from there. Instead, i took this road, which involved exporting from Radio to a MovableType format, then importing from that into WordPress. The big advantage here is that the export process produces one big text file in a structured format: so you can do search-and-replace, or even scripting on it, and incrementally build toward the right outcome.

There were several gotchas:

  • When i previously moved my Radio blog off their hosting onto another host, i must have missed updating a few links: these were easily replaced with a text editor
  • Way too many posts wound up without titles (i suspect a bug in the Exporter), and if i had three posts in a row without titles, the last preceding title got used for all four. So i had to go through and add titles by hand (but since i had a text file, i could do so directly, despite the tedium).
  • For some reason newlines in the MovableType HTML got turned into extra blank lines in WordPress (as though they had been a
    ): that seems like a clear mistake in interpreting the data on the importation. So i had to remove all the newlines in sequences like “>[newline]<".
  • Radio macros were quite a bit trickier, and i had a number of them that i used for ESV references, pericope references, and so forth. As an example, i had a macro called pericopeRef that took an ID argument, and generated the URL for the relevant pericope in the Composite Gospel: <%pericopeRef("020")%> would generate http://www.semanticbible.com/cgi/2004/11/Pericope.020.xml. Unfortunately, the Exporter doesn’t expand these macros, and since the arguments can vary, there isn’t a simple way to do search-and-replace. I wound up writing a little Perl script to do macro expansion: i’d be glad to share it if you’re interested.

One thing that didn’t make it, though, were comments: as the previous post noted, there isn’t any easy way to bring them over. I’m sorry to not bring them along, but since they weren’t working all that well, and there’s a big pile of spam there, it seemed an acceptable loss. You can still find them on legacy posts by mapping from the WordPress format to the old format. For example, a recent post on xpound.org (which drew a comment by Josh, who runs the site) had the following URLs:

So if you drop the title of the post and preceding slash off the WP version, and tack on “.html”, you’ll find the old version, which links in the comment. (note you have to start from the permalink for the WP version)
ALso, posts with multiple categories got turned into category composites: instead of “reading” and “character”, these got a category of “reading; character”. Fortunately there were only a few of these, and i just went back in WordPress and fixed them by hand.
Lots more work than i anticipated, but now i’m (mostly) moved into WordPress citizenship, i’m hoping it will all be worth it!