The Null Device

Meet the (new, improved) 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.

There are 19 comments on "Meet the (new, improved) Null Device":

Posted by: acb Mon Jan 7 02:37:09 2008

And comments work...

Posted by: snufkin Mon Jan 7 05:00:06 2008

Happy Birthday acb! Your post made me realise that I must have been reading for over 5 years now. The irregular updates were always an asset - only writing when there was something genuinely interesting rather than to fill copy, and with a level of analysis so sadly missing from most blogs. Unmissable as a Londoner. I look forward to the next five years!

Posted by: dj Mon Jan 7 05:08:32 2008

Happy Birthday, and nice work!

Posted by: gusset Mon Jan 7 09:47:57 2008

Happy Birthday!

Posted by: Michael S. Mon Jan 7 10:40:13 2008

Yahoo's term extraction API at does a decent job at tagging content. (Better than nothing.)

Posted by: acb Mon Jan 7 10:54:23 2008

Thanks for that; I'll look into it. Though my choice of tags is perhaps a little idiosyncratic.

Another option I thought of (and dismissed) was one of those "offshore personal assistant" services in India, which are meant to be very useful for anything that doesn't require physical presence.

Posted by: Greg Mon Jan 7 13:45:44 2008

I'm interested to know more about your tags. You're doing it "manually" ja? Is there a finite number of tags, or do you make it up as you go along? The tag list on the front page where some have a bigger font - is the font size automatic? Are they better than just letting Google search all the words? Sorry if these are dumb questions - it's late here. I've not really looked into tags, or even used them on Flickr.

Posted by: acb Mon Jan 7 16:31:45 2008

I'm tagging things manually. Tags are freeform text, and I make them up as I go along. They're quicker than searching, and allow, for example, you to see all the recent articles about, say, psychology or Japan or indiepop or what have you in one page. The font size and darkness in the tag view are proportional to the frequency of the tag in the database ("culture" is the most common one).

Posted by: acb Mon Jan 7 16:47:15 2008

I should add that, while I make up tags as I go along, I try to maintain consistency, i.e., to use the same tag for the same category/concept. So far I do this by running SQL queries in a shell and seeing what's already there. Were this a polished product, it'd probably have a suggestion/autocompletion interface, like

Posted by: threeze Tue Jan 8 00:19:27 2008

Minor complaint that probably only affects me: no longer re-directs to I just get a "Sorry, but we were unable to find the page in question." message.

Posted by: lemonadeboy Tue Jan 8 00:38:10 2008

Hope you had a nice Birthday :D

Posted by: acb Tue Jan 8 01:52:29 2008

threeze: the issue is fixed now.

Posted by: acb Tue Jan 8 02:21:44 2008

Btw, the issue of the CAPTCHAs not appearing properly should be fixed now. (It had to do with mod_wsgi and subprocesses, for what it's worth.) If this comment appears, that means that it works correctly.

Posted by: datakid Tue Jan 8 02:25:06 2008

HB dude. Be good now. Have a g+t for us.

Posted by: Peter Tue Jan 8 03:40:42 2008

Congrats on the new blog software! Looking good. And... HAPPY BIRTHDAY!

Posted by: Peter Tue Jan 8 03:41:37 2008

And *highly* AJAX-alicious

Posted by: Niall Tue Jan 8 08:53:42 2008

Happy birthday! This is the best blog going.

Posted by: Jim Fri Jan 11 10:22:40 2008

Nice work, Andrew, and happy birthday! Did the same thing myself a little while ago but in PHP, cos I always like to back a dying horse, but couldn't resist a complete redesign. Mine still needs more work, though, but yours looks pretty much settled.

Posted by: mark Tue Jan 15 14:19:34 2008

Happy birthday, Andrew!

Like snufkin, I'm trying to work out how long I've been reading this 'blog now. It must be at least five years, too (found through Graham). Crikey.

Good to see you're trying new things!

Want to say something? Do so here.

Post pseudonymously

Display name:
To prove that you are not a bot, please enter the text in the image into the field below it.

Your Comment:

Please keep comments on topic and to the point. Inappropriate comments may be deleted.

Note that markup is stripped from comments; URLs will be automatically converted into links.