An Opinionated Approach to Tox
Automate all of your Python project's tasks with a succinct tox.ini file.
Managing Your Project's Virtualenvs with Tox
A comprehensive beginner's introduction to Tox.
Unattended Upgrades on Ubuntu
How to configure an Ubuntu server to automatically keep itself up to date and send you email notifications.
Python Unit Testing
A series of Python unit testing tutorials covering pytest, factory_boy, mock, and unit vs integrated tests.
How to make code reviews a more pleasant and empowering experience for everyone involved.
Pyblosxom on Ubuntu with Gunicorn & Nginx
How to set up a Pyblosxom blog on Ubuntu using the Gunicorn WSGI server and Nginx web server.
How to encrypt the contents of a git repo with git-crypt.
Background Tasks as Simple Web Services
The design of the broken link checker API for CKAN.
A Broken Link Checker Plugin for CKAN
Check your CKAN site for broken links and produce a report.
Functional Core, Imperative Shell
How to write very testable code using the functional core, imperative shell technique.
The Network as the Database
Store work-in-progress user data in the network, instead of in your database.
The Open Knowledge Data Packager
An open source web app for creating and publishing tabular data packages.
A Mozilla Persona Plugin for CKAN
Login to CKAN sites without creating an account, using Mozilla Persona.
A story authoring application for children, developed for my PhD thesis.
Screencasts for the MSc course Introduction to Java Programming: 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.
Computer game characters that follow, chase, flee, and avoid obstacles and collisions. Also PandaZUI, a zoomable user-interface framework.
A little JSON to CSV converter.
Check websites for broken links.
A web app for making tabular data packages.
Login to CKAN sites using Mozilla Persona.
Very easy incremental snapshot backups.
A fast note-taking app for the UNIX terminal.
Website for Forest, a free arts and events space masquerading as a vegetarian café.
Website for Ottawa No Sweat Coalition.
Website for Infoseed hacklab.
My DWM config.
A computer game character that navigates complex 3D environments (Quake III levels), created for my undergraduate dissertation.