Here’s a list of some of my projects. You can find more on my GitHub account.

Sidecar (2024)

A plain-but-pretty blog theme with a little sidebar, for the static site generator Pelican.

Screenshot of Sidecar

Oatcake (2024)

My universal typography stylesheet.

Screenshot of Oatcake

ghp-pelican (2023)

A reusable workflow for deploying a Pelican site to GitHub Pages using GitHub Actions.

ghp-static (2023)

A GitHub Actions reusable workflow for deploying static files directly to GitHub Pages - no Jekyll or static site generator needed, just deploy a directory of HTML and other static files directly to your GitHub Pages site.

Find Me (2011)

An iPad game for children with autism. App store: pro version, free version. BBC news article, journal paper. JTRS made a good YouTube video that explains how the app worked.

Screenshot of the Find Me iPad app

Story Maps (2005–2011)

A story authoring application for children, developed for my PhD thesis.

Screenshot of Story Maps

CKAN (2011-2015)

I used to work for Open Knowledge as a core developer on the CKAN project. Some of my CKAN work:

Edinburgh University Java Screencasts (2008)

I used to work as a computer programming lecturer at Edinburgh University and created the online version of the Introduction to Java Programming course: 1. Objects and classes, 2. Understanding class definitions, 3. Object interaction, 4. Grouping objects, 5. More sophisticated behaviour, 6. Well-behaved objects, 7. Designing classes, 8. Improving structure with inheritance, 9. More about inheritance, 10. Further abstraction techniques, 11. Building graphical user interfaces.

PandaSteer (2006)

Computer game characters that follow, chase, flee, and avoid obstacles and collisions. Also PandaZUI, a zoomable user-interface framework.

Various command line tools and dotfiles I’ve developed over the years

Gedit Plugins (2019)

gedit-autoname and gedit-smart-autosave.


I sometimes make websites for people. Here’s a few examples: Forest (circa 2010, archived copy), a free arts and events space masquerading as a vegetarian cafĂ©; Infoseed (circa 2007, archived copy); Ottawa No Sweat Coalition (circa 2005, archived copy).

PyBlosxom (2005–2015)

My PyBlosxom plugins and themes: mtimecache, drafts, HTML5 theme, tumblelog, metadate, markdown, Vessel and Scribbish.

Navigating 3D Environments (2004, PDF)

A non-player character that navigates complex 3D environments (Quake III levels), created for my undergraduate dissertation.

Screenshot from my undergraduate dissertation