Below are the five most recent posts in my weblog. You can also see a chronological list of all posts, dating back to 1999.

I stumbled across this rather nicely-formatted blog by Alex Beal and thought I'd share it. It's a particular kind of minimalist style that I like, because it puts the content first. It reminds me of Mark Pilgrim's old blog.

I can't remember which post in particular I came across first, but the one that I thought I would share was this remarkably detailed personal research project on tracking mood.

That would have been the end of it, but I then stumbled across this great review of "Type Driven Development with Idris", a book by Edwin Brady. I bought this book during the Christmas break but I haven't had much of a chance to deep dive into it yet.


Example of a degraded DVD-R

Example of a degraded DVD-R

Moiré-like degredation on a commercial CD-ROM

Moiré-like degredation on a commercial CD-ROM

From the late 1990s until relatively recently, I used to archive digital material onto CD-Rs, and later DVD-Rs. I've got about half a dozen spindles of hundreds of home-made discs with all sorts of stuff on them. A project to import them to a more future-proof storage location is long overdue. If you are in a similar position, consider a project like this as soon as possible: based on my experiences it might already be too late for some of them. The adjacent pictures were created with the ddrescueview software and show both a degraded home-made DVD-R and a degraded commercially pressed CD-ROM. I came across both as I embarked on this project.

The process can be divided into roughly five stages:

  1. Gather the discs & preparation
  2. Initial import of the discs
  3. Figuring out disc contents
  4. Retrying damaged/degraded discs
  5. Organising the extracted files

If you are importing a lot of discs, the stages can run like a pipeline, where you perform steps 3 onwards for some images whilst you are beginning stage 2 for others.

I'll be writing in more depth about each step separately. To start, here's the preparatory step.

Preparation (gather the discs)

Fetch all the discs you want to read together into one place.

I had some in jewel cases and others on the spindles that the blank discs come on. I had some at my house, some in boxes at my parents house and more at work. I decided to consolidate most of the discs down onto the spindles and throw away most of the jewel cases. If you suspect a particular disc as having particularly valuable data on it, you may wish to leave it in a jewel case. You might also want to hang onto one or two empty jewel cases, if there's a chance you'll happen upon a disc you want to give to someone else.

discs in progress
a pile of CDs and DVDs

I dedicated an initially-empty spindle as the "done" spindle, opting to keep the imported discs, at least until the import process was complete. I also kept a second "needs attention" spindle for discs that couldn't be read successfully straight away. I labelled both using a label-maker.

Don't trust disc labels: If in doubt, put the disc in your "to image" pile. Don't throw a disc out on the basis of the label alone. I had a bad habit of topping up a disc which was mostly for one thing with other data if there was space left over. Mistakes can also be made, and I had plenty of unlabelled discs anyway.

You're going to need a computer with sufficient storage space upon which to store the disc images, metadata and/or the data within them, once you start organising it. You're also going to need an optical drive to read them. If you haven't yet got a system in place for reliably storing your data and managing backups, it would be worth sorting that out first before embarking on a project like this.

I attached a USB drive to my NAS and did the importing and storing directly onto it.

Finally, this is going to take time. In the best case, discs read quickly and reliably, and the time is spent simply inserting them and ejecting them. In the worst case, you might have troublesome discs that you really want to attempt to read everything from, which can take a great deal of (unattended) time.

Next up is the initial import stage. I'll try to get my notes on that transformed into the next blog post soon.


just TODO it UI

Recently, I wished to use a trivially-simple TODO-list application whilst working on a project. I had a look through what was available to me in the "GNOME Software" application and was surprised to find nothing suitable. In particular I just wanted to capture a list of actions that I could tick off; I didn't want anything more sophisticated than that (and indeed, more sophistication would mean a learning curve I couldn't afford at the time). I then remembered that I'd written one myself, twelve years ago. So I found the old code, dusted it off, made some small adjustments so it would work on modern systems and published it.

At the time that I wrote it, I found (at least) one other similar piece of software called "Tasks" which used Evolution's TODO-list as the back-end data store. I can no longer find any trace of this software, and the old web host ( has disappeared.

My tool is called Just TODO It and it does very little. If that's what you want, great! You can reach the source via that prior link or jump straight to GitHub:


I've been thoroughly enjoying the Jason Scott Talks His Way Out Of It Podcast by Jason Scott (of the Internet Archive and Archive Team, amongst other things) and perhaps you will too.

Scott started this podcast and a corresponding Patreon/LibrePay/Ko-Fi/Paypal/etc funding stream in order to help him get out of debt. He's candid about getting in and out of debt within the podcast itself; but he also talks about his work at The Internet Archive, the history of Bulletin-Board Systems, Archive Team, and many other topics. He's a good speaker and it's well worth your time. Consider supporting him too!

This reminds me that I am overdue writing an update on my own archiving activities over the last few years. Stay tuned…


For a few years now I have been working on-and-off on a personal project to import data from a large collection of home-made CD-Rs and DVD-Rs. I've started writing up my notes, experiences and advice for performing a project like this; but they aren't yet in a particularly legible state.

As part of this work I wrote some software called "BadISO" which takes a possibly-corrupted or incomplete optical disc image (specifically ISO9660) and combined with a GNU ddrescue map (or log) file, tells you which files within the image are intact, and which are not. The idea is you have tried to import a disc using ddrescue and some areas of the disc have not read successfully. The ddrescue map file tells you which areas in byte terms, but not what files that corresponds to. BadISO plugs that gap.

Here's some example output:

$ badiso my_files.iso
✔ ./joes/
✗ ./joes/ban.gif
✔ ./joes/
✔ ./joes/
✗ ./joes/graphhack.txt

BadISO was (and really, is) a hacky proof of concept written in Python. I have ambitions to re-write it properly (in either Idris or Haskell) but I'm not going to get around to it in the near future, and in the meantime at least one other person has found this useful. So I'm publishing it in its current state.

BadISO currently requires GNU xorriso.

You can grab it from


Older posts are available on the all posts page.