Blog
Analysing email headers with Python: a hands-on CSIRT lab
Every phishing email that lands in someone's inbox leaves a paper trail.
CloudTrail: your AWS audit log foundation
AWS gives you an enormous amount of power over infrastructure — and without audit logging, you have...
The Maths Behind the Machine Without the Notation
My notes from working through the mathematical intuition behind how ML models learn. I skipped forma...
Python for AI - First Steps with Data
My notes from getting comfortable with the Python data stack. The goal wasn't to memorise the API su...
What Is AI, Really? Notes on Getting the Vocabulary Straight
These are my notes from working through the fundamentals of AI cleaned up enough to be readable, bu...
Node.js Fundamentals
Definition: Node.js is a JavaScript runtime built on Chrome's V8 engine that allows you to run Java...
AWS S3 Security Lab 3: The Credentialed User
This is the third lab in the AWS S3 Security series. It focuses on the most secure pattern: granting...
Building My First Pwnagotchi: A Beginner's Journey into Wireless Security
Pwnagotchi is an AI-powered device inspired by the 1990s Tamagotchi digital pet. However, instead of...
Why Understanding Threat Intelligence is Key to Cyber Security
In our increasingly connected world, cybersecurity is no longer just about firewalls and antivirus s...
AWS S3 Security Lab: Exploiting and Fixing Bucket Misconfigurations
These are my notes from an AWS S3 Security Lab that simulates a common cloud misconfiguration. The l...