Blog
type object ‘MyModel’ has no attribute ‘DoesNotExist’ •
03 May 2023
TIL not all model attributes are created equally
django
python
til
Origins of “The Rule of Three” •
30 Jan 2023
Investigating a piece of software folklore
programming history
Better Python mock assertions •
25 Sep 2022
Avoiding tortured assertions when mocking
python
testing
Python mocks should always have a spec •
31 Jul 2022
Except when they shouldn’t!
python
testing
Learning about Python performance optimisation •
27 Jun 2022
Adventures in making my code faster
performance
python
highway-code-diff •
11 Apr 2022
How I keep up-to-date with changes to the UK Highway Code
python
Removing errors from Datadog traces •
05 Feb 2022
How to ensure your application monitoring ignores a specific error
datadog
django
python
Django database couldn’t be flushed •
12 Jan 2022
A strange error in an unrelated part of my test suite
django
postgres
python
wth
Identifying gaps in your knowledge •
14 Sep 2021
How do you figure out what you don’t know?
professional development
Cassini Traceback •
29 Nov 2019
My entry for NaNoGenMo 2019 imagines how a machine might tell the story of another machine (contains flashing images)
nanogenmo
python
B9 Indifference •
13 Nov 2017
My entry for NaNoGenMo 2017 generates Star Trek TNG scripts!
nanogenmo
python
Captain’s Log •
30 Nov 2016
My entry for NaNoGenMo 2016 generates an arbitrary number of words of luckless captains and their endeavours
nanogenmo
python
An RSS feed is available .