Galactic Puzzle Hunt 2019: ReflectionApril 8 2019
A reflection on organizing a puzzle hunt team.
Python C Extension Module CorruptionJune 23 2018
In which a segfault in cPython is caused by an interesting interaction with shared modules on Linux.
Synchronized Music on micro:bitsFebruary 24 2018
How I made a mesh network of BBC microbits play music.
Finding Good Answers QuicklyOctober 8 2015
An introduction to Hufflepuff, a beam search library for Python.
Solving Problems BadlyOctober 3 2015
A story from the NCSS Challenge of how sometimes the simple, “terrible” option is best.
Introducing vipdfMarch 9 2014
A tool for PDF presentations with vi-inspired keybindings.
Python: WatMarch 8 2014
Some strange-at-first-glance Python code.
Introducing gst-launch-dynamicApril 5 2013
A tool which allows modifying GStreamer pipelines at runtime.
Blackmagic DeckLink, ConsoleKit and TTYsFebruary 19 2013
In which a statically-sized buffer is too small.
Shell startup scriptsFebruary 17 2013
A description of the startup behaviour of several shells, with an instructive diagram.