This page contains source code and documentation for some of the programming projects on which I've worked.


A framebuffer clock for Linux on the Parrot DF3120 digital photo frame. The repurpose_linux website has a guide to installing Linux on it in the first place. I recommend using the filesystem image from Martin Hubáček's site, as this includes the chmod command (without which you won't be able to set the fbclock command to executable).

Currently, the clock digits must be PNG images in 16 bpp colour.


This is a Perl module for accessing Halifax Sharedealing accounts. Currently, you can log in to the online service, retrieve the details of your portfolios, and get the cash balances for any of the accounts that are managed from your login. I may add other features in the future - it should be possible to do anything that the online interface allows, even buying and selling shares.

This module is available on CPAN. The link below should take you to the download page and documentation for the latest version.

CIDR IP lister

This CGI script takes an address in CIDR notation (e.g and lists all the IP addresses in that block. Someone at work needed a tool to do it, so I wrote one. It won't do anything over a /16 in size, because I don't have the bandwidth for anything bigger (asking for a /16 will give you a page that's about a megabyte in size).

If you would like an improved version of this tool for the Unix/Linux command line, you can find it here on CPAN. This version has inline documentation and selectable options, and will let you specify any netblock size you like.


lognews is a program to collect Usenet articles from an NNTP server and log them to an SQL database. The SQL to create the database is also included in the package.

To make it work, you'll need Python, MySQL and MySQL-python installed. Any reasonably recent versions should work.

It is still a work in progress, and most certainly isn't suitable for production servers. At present, it lacks a front end, so you would need to write your own scripts in order to extract and display the data from the database. It's also too slow to keep up with a full Usenet feed, which is because of network latency (it needs to send lots of SQL queries and NNTP commands across the network, and waiting for the replies takes time). This second problem would probably go away if the NNTP server, database server and logging server were all on the same LAN (or all three services were running on the same machine), but it would be better to rewrite the program to perform fewer transactions over the network.

lognews is released under the GNU General Public License.

Everything else

Some other little bits and pieces, presented here for fun and possible-usefulness:

Back to: