Example software development projects

These are a few representive examples of some of systems I developed whilst at the BBC (there were many others). I've chosen examples that I designed, implemented, skinned and documented myself, rather than those I designed and tasked someone else with implementation. In all cases components have unit tests and API documentation.

idstore - an anonymous web storage system

This is a web server storage mechanism I developed whilst at the BBC, providing access to a "locker" (a block of storage) with a "key" (a unique ID). By virtue of being minimal ("malloc for the web"), it's very versatile and has been put to a wide range of uses. It's well suited to web 2.0 clients such as AJAX or Flash which need some way to maintain state between sessions or for "send to a friend" or "group challenge" scenarios where 2 or more users need access to a private resource. It's also useful in combination with a personalisation system which can be used as a "key ring" to hold the pointers to the storage.

The system consists of:

Some of the services on bbc.co.uk built with this include:

Batch processing system

Whilst at the BBC, I developed a system for asynchronous batch processing. Its main features are:

The system consists of:

The system is used to manage publishing of content from a variety of sources to bbc.co.uk and mirror servers and for running QA processes over content. There are plans to use it for distributing other "heavy lifting" across machines (such as HTML email generation or processing of user-submitted images or AV content).

Wildfacts

This is an example of much more applied work, working closely with editorial staff and client-side developers to produce an end product. It's a small content management database to manage/publish a set of several hundred animal factfiles for the nature website. The output is here.

The system consists of:

The initial build involved collating data from a number of data sources (a defunct mysql database, and a number of excel spreadsheets). Some ad-hoc perl scripts were used to marshal the data into the new schema.