The Null Device
It's my birthday today, but you, dear readers, get the presents. Or, at least, one present: a shiny new version of The Null Device.
Whilst the site looks the same on the surface, it has a few immediately visible enhancements. The first one is tags; that's right, The Null Device has marched boldly into 2003. Blog posts are now tagged (well, the more recent ones are), and can be viewed by tags. (Currently about 15% of posts are tagged; this number will expand in the future. There are more than 8,000 posts in the database, and I don't have a week to spend on tagging them all in one go.) The user comments page is also updated, with new AJAXilicious posting action. There will be more visible improvements later, made possible by the new blog code. Not to mention more stability (the database shouldn't fall over as often as it did with the old code; well, let's hope).
That's right; this familiar-looking blog now runs on new software. As of a few minutes ago, the old system (a bunch of Python Server Pages scripts) was retired, and replaced by the new system (a WSGI web application written in Python, for what it's worth). The data storage system has changed as well; up until now, blog posts were stored as text files in directories, as they had been ever since this was a CGI script written in Perl, in the late 1990s (has it really been that long?). From now on, everything is stored in a SQL database, using a fairly sophisticated data structure. (In short: all items — posts, comments, even the blog itself (and there is provision for multiple blogs) — are nodes in a tree, with other tables linked to them by their IDs, as well as auxilliary data such as tags.) Using a SQL database enables things like tags (which would be a lot more work if posts were stored in a directory tree), as well as other things.
This has been the culmination of over a year's work. Or, to be more precise, over a year's coding, putting the code aside due to lack of time, picking it up again, shelving it and writing a new version after having a better idea, and so on. (Which is why all posts from 2006 or so onward have tags; I started giving them tags before there was code to do anything with them.) The pace picked up over Christmas, with the code being brought up to scratch, and the process was completed this weekend. Anyway, enjoy.