Brenton Cleeland

Default Apps (2023) — November 26, 2023

HN500 Updates — October 28, 2023

Introduction to the OWASP Top 10 (at GoodHuman 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