Quick and easy Python concurrency — November 5, 2024
Default Apps (2023) — November 26, 2023
HN500 Updates — October 28, 2023
Introduction to the OWASP Top 10 (at a former employer in May 2023) — August 31, 2023
How I use Django's messages framework — August 30, 2023
Respectfully Requesting RSS Feeds with Python — August 21, 2023
Website Best Practices — August 15, 2023
Types of Testing You Should Care About: Static Application Security Testing — July 7, 2023
Step-by-step: Deploying Kanboard to a Debian 12 VPS — June 26, 2023
Types of Testing You Should Care About: Integration Testing — June 13, 2023
Types of Testing You Should Care About: Unit Testing — June 6, 2023
Getting eralchemy working on MacOS in 2023 — March 27, 2023
Embedding my current status.lol status on my homepage — January 31, 2023
An open source Python project CI pipeline — January 16, 2023
Deploying Django apps with Github Actions and Django Up — December 29, 2022
Jog to Tallangatta — November 8, 2022
Git branching strategy diagrams — October 29, 2022
Very Handy: screenshots.page for IPv6 testing — October 13, 2022
NetNewsWire is my Favourite iOS App — October 3, 2022
Deep Dive into JWTs — September 22, 2022
Run Randomly — July 31, 2022
News aggregators in the style of (what I remember as) Pop URLs — June 28, 2022
Six things I do every time I start a Django project — June 20, 2022
Level Two: JSON over HTTP — June 9, 2022
Using Environment Variables in a React App — May 29, 2022
TDD Practice: Time API with Django — May 20, 2022
Level One: JSON over HTTP — May 12, 2022
HTTP Status Codes — May 10, 2022
Footy Fixture (.txt) — April 4, 2022
Content-Security-Policy Survey (March 2022) — March 30, 2022
Unique domains from a HAR file [snippet] — November 19, 2021
Cool URIs don't change but dead links are my jam — November 1, 2021
Building brntn.me when another Github Repo changes using Github Actions — January 26, 2021
Learning Django URL Patterns by Example — October 13, 2017