June 08, 2022
Flakey tests in a large Python/Django codebase

A list of test anti-patterns that lead to flakiness.

June 13, 2019
Vim text-objects for Python development

The nouns of your Vim thought stream.

March 18, 2019
Beware of changing the 'related name' of a Django model field

It can generate unnecessary database operations.

October 16, 2017
Using a custom Sentry client

A Sentry tip from the Octopus Energy tech blog.

October 04, 2017
Why your Django models are fat

A tongue-in-cheek list.

May 05, 2016
Django, ELB health checks and continuous delivery

A post on the Octopus Energy tech blog

January 21, 2016
Testing for missing migrations in Django

A post on the new Octopus Energy tech blog

January 31, 2015
Avoiding clashing Django migrations

A simple Travis test to avoid frustration

October 22, 2014
Integrating Django application metrics into Zabbix

A simple how-to for feeding Django metrics into Zabbix

June 18, 2014
Continuously rebuild your project

Using CI to avoid pain for new team members

May 01, 2014
The road to Oscar 1.0

A plan for 2014

January 16, 2014
Command-line tips for effective release announcements

Git tips for writing release notes

October 04, 2013
June 12, 2013
A deferred logging file handler for Django

Using a setting to control where file logs go

June 01, 2013
Conditional logic in Django forms

Radio buttons can be tamed

April 22, 2013
Disable database access when writing unit tests in Django

A decorator for the testing puritan

February 19, 2013
Altering Postgres table columns with South

Using ‘USING’ to cast correctly

September 09, 2012
September 02, 2012
Cacheback - asynchronous cache refreshing for Django

A simple caching library that uses Celery to refresh stage cache items

July 19, 2012
Use models for uploads

Using models for audit and clarity

July 06, 2012
Vim macros for adding i18n support to Django templates

Using macros to automate the boring stuff

June 16, 2012
A data migration for every Django project

No more embarrassing emails from

May 05, 2012
Django, Nginx, WSGI and encoded slashes

Encoded slashes have a hard time getting through to Django

April 12, 2012
Embedding HTML in Django messages

Using ’extra_tags’ to flag up HTML-safe messages

March 21, 2012
How to reload Django's URL config

A rare sighting of the ‘reload’ function in the wild

March 13, 2012
Validating international postcodes in Django

Using dynamic imports to leverage Django’s localflavor

March 03, 2012
Confoo 2012 presentations

Two talks from the Python stream

March 01, 2012
Testing HTTPS handling in Django

Spoofing a HTTPS request using the Django test client

February 25, 2012
Prefer data migrations to initial data

South provides a better way

January 06, 2012

Yet another RST blog

August 16, 2011
Console logging to STDOUT in Django

Undocumented option required to avoid STDERR

August 11, 2011