Before long every line of code that is used to run the On Perl blog will be publicly available here, but this is the first step in that direction: the data back-end. This site is actually more than a blog--to me anyway--it is also a chance to experiment, so in every reasonable way I've tried to create better and newer ways of doing things. I've made some decisions I soon regretted, and then, a little wiser, made improvements. When considering how I would handle the back-end I was somewhere between the almost obvious MySQL choice, and the seemingly more elegant, sleeker file-based choice of Bloxsom.

I really like sleek software, and I also like Bloxsom, at least philosophically. But the implementation lacks certain features I really wanted: namely, the ability to add as much arbitrary meta-data about each blog post as I wanted. For that I needed a more complex file format, like XML for blogs. After a short search I found it had already been invented: BlogML.

Now, to be clear, BlogML is somewhat misused here. It was not intended to be a permanent data storage format, but rather a format for serializing a blog to a simple file while transferring to another vender. But the fact is, it's nothing more than XML, so it can be used as a searchable data store as well; you wouldn't be reading these words if it couldn't, because all the On Perl blog posts are stored in BlogML format, including this one.

Whereas the strength of Bloxsom's data format is its simplicity, BlogML adds just a little bit more flexibility. In fact you can get as flexible, and thus as complex as you like, but then you'll need to write some equally complex software to read it. So that was really the first step to creating the On Perl website. After a few months of use and refinement, I'm pleased to announce that the Perl module Blog::BlogML::Reader is published and available for download from the CPAN repository.

For more information on the BlogML project I would recommend you visit the official web site and join in the discussion there.