Everything is an X
Analysis and examples of the popular high-level pattern of making all the things in your system conform to a common interface.
Test smarter, not harder
Tips for winning the automated testing battle.
Announcement: Django Views - The Right Way
Announcement of my guide to writing Django Views.
Please stop trying to blacklist ‘blacklist’
Keyword-only arguments in Python
Keyword-only arguments are a feature that has been around since Python 3.0 but I've not seen them used much. This post explores the how and why.
Why I'm leaving Elm
Why I can't use Elm, and can't recommend it to others.
Double-checked locking with Django ORM
How to implement the classic double-checked locking pattern with Django ORM/PostgreSQL.
50 reasons why Christians should take climate change seriously
Pylint false positives
Some analysis on the false positive rate when using Pylint on a codebase.
6 digit OTP for Two Factor Auth (2FA) is brute-forceable in 3 days
OTP/TOTP for two factor auth (2FA/MFA) is very easy to misunderstand and implement insecurely
A Look at Python, Parameterized
How to replace 6+ design patterns with one concept in Python
Two experiences with Elm
A failed attempt, a success, and some things to watch out for.
The Elimination Fallacy
X is bad. So we should eliminate X, right?
WordPress 4.7.2 post mortem
Some lessons from the recent WordPress vulnerability
Django admin tips Twitter account
Follow @djangoadmintips for curated tips about the Django admin
The very minimum you need to know about words
A post about linguistics, and the word fallacies you need to avoid.
Avoid Django's GenericForeignKey
Why Django's GenericForeignKey is (usually) a bad idea
Dynamically generated Django admin actions
How to use ModelAdmin.get_actions with dynamically generated list of actions
A simple password-less, email-only login system
A simple password-less login system to consider for some use cases, with Django code.