2024

February 19 Getting Kubernetes Metadata on Linux Nodes

2023

September 3 How I Manage My Finances with hledger and Python
June 9 Leaked Build Arguments in Multi-stage Docker Builds via Build Attestations
February 13 Adding a Review Checklist to GitHub PRs
January 18 Setting Up a Personal ActivityPub Microblog

2022

November 8 How to Browse Twitter at College
September 13 Hacking ZAP - ZAP Extender Scripts
August 7 SICP Exercises 1.16 - 1.19
August 3 Peeling Back The Onion
April 13 Test Your APIs For Spring4Shell With Levo.ai
March 8 ZAPCon 2022 Presentation Resources

2021

December 14 Log4Shell Detection with ZAP
August 30 Soaring Through the Stars as an Astra-Naut
August 23 Out-of-band Application Security Testing with OWASP ZAP
July 11 ZAP OAST: Basic Design Decisions
June 25 Levelling Up ZAP with OAST
January 5 SICP Exercises 1.11 - 1.15

2020

November 30 Hot-swappable Jekyll Themes
November 12 The Grand SCHEME of Things
October 9 The Mechanics of Slender Structures
October 8 Life and Meaning
October 5 CTE TechWeekend CTF 2020
September 8 Topological Spaces
August 28 Introducing the GraphQL Add-on for ZAP
July 29 GraphQL Query Generator - 2
July 10 GraphQL Query Generator - 1
July 9 Adventures in Measure Theory - 5
July 6 Adventures in Measure Theory - 4
July 4 Adventures in Measure Theory - 3
July 3 Adventures in Measure Theory - 2
July 1 Adventures in Measure Theory - 1
June 23 Solving Cryptography Problems - 5
June 22 Solving Cryptography Problems - 4
June 21 Solving Cryptography Problems - 3
June 20 Solving Cryptography Problems - 2
June 19 Solving Cryptography Problems - 1
June 14 Maths is Fiction
June 3 Baby Steps
May 28 Beginning My Security Journey

2019

December 7 Digital Detox
July 14 Notes - Gradient Descent
June 27 Hold-ups - Gradient Descent
June 6 Handwritten Digit Classifier
June 5 Anime or Cartoon?

2018

February 14 I Found a Bug!

2016

February 6 The Sieve of Eratosthenes
February 2 The Number Guessing Game