Tuesday, 18 January, 2005

Content management revisited

Back in July, I started using CityDesk to create this Web site. Since then, I've converted all of my Random Notes entries to CityDesk . I've also either converted all of the other pages, or copied them directly into CityDesk as HTML files. I now manage the entire site in CityDesk, and I've deleted the old FrontPage site from my hard drive. (After backing it up, of course.)

After working with CityDesk for a little over six months, I give it mixed reviews. My impressions of the program itself are mostly favorable. It's easy to install, simple to use, and I'm able to create a new site very quickly. Template editing--especially that wonky CityScript language--is quirky, but easy enough despite its oddities. The program's user interface is okay, but certainly not up to the standards that Joel Spolsky (the owner of Fog Creek Software, and principle designer of CityDesk) espouses on his Web site. There are missing keyboard shortcuts, context menus lacking relevant options, features that are accessible only by the mouse, and minor bugs in the editor that drive me batty. Still, the interface is easy to use, mostly intuitive, the program works most of the time, and I've never lost any data.

I especially like that the database format is fully documented, making it possible for me to write programs that can modify articles or create new articles from information that's in the database. In particular, I'm working on a topic index, table of contents, and image index generator. I might not complete those projects, though, because . . .

My only real gripe with CityDesk isn't with the program at all, but rather with the publishing paradigm. CityDesk is an offline content management system. I create articles, store them in a local database, and then press a button to have CityDesk generate static HTML pages it then uploads to my Web site. This model has certain advantages, among them simplicity and an off-server backup of the content. It also serves the lowest common denominator: anybody who has FTP access to his Web server can publish content using CityDesk. CityDesk does these things very well--certainly better than any other reasonably priced Web site creation tool that I've seen.

There are some problems with the static model, though, and some of those problems increase as you add more content. The one I'm currently fighting is changing the style sheet or article template. If I change either of those files, CityDesk will re-generate every page that uses that template, and then upload every page to the Web server. That's the nature of static content. With well over 1,000 Random Notes entries, you might imagine that I'm a little reluctant to make any changes to the style sheet or template.  That's disappointing, because it would be nice to make seasonal or topical changes to the templates.

A related problem is the amount of file space all those pages take. Every Random Notes entry includes the HTML code to render the page heading and side panel on the page. That code takes approximately two kilobytes per page. Not a problem if you have just a few pages, but with over 1,000 pages on the site, I'm talking over two megabytes of wasted space. With 500 megabytes of disk space for my domain, I'm not too worried about a couple of megabytes (not when I post single pictures that take more than that), but it is a concern if I decide to create a template with more stuff on it. Every byte used in the template is multiplied by the number of articles posted.

Another problem of size is the time and local disk space it takes for CityDesk to generate the pages and determine what needs to be uploaded.  It currently takes almost two minutes for CityDesk to generate pages when I click on the Publish button.  CityDesk apparently re-generates every page into a temporary directory so that it can quickly upload any required pages once it connects to the server.  That's a worthwhile optimization, but the wait time will continue to increase as I add more content.

The static model also restricts what I can do with the site. Specifically, I can't post entries if I'm away from home, and I can't include comments, "track back," or other dynamic features that other Web sites and dedicated blog sites provide. A laptop would allow me to post entries when I was away, provided that I had it with me and access to an Internet connection. That presents some backup issues, but those are minor. I don't relish the idea of lugging a laptop around all the time, though. I like traveling light.

So I'm reconsidering my options and am again evaluating content management solutions for the Web site. The frontrunner at the moment is Mambo, which on the surface looks a lot like the PostNuke package that I evaluated last year, but appears to be more secure and easier to use. Whatever I decide to do, I'll either install it on my test server here at home first and learn to use it, or I'll put it on one of my other domains and drive it around a bit before trying to convert this Web site. Stay tuned.