Writing
Grouped by the problem you bring. Newest first within each.
Securing AI agents
For teams wiring LLMs and agents into real systems and asking what could go wrong.
Putting AI on the Blue Team: Where Claude, Codex, and Gemini Actually Earn Their Keep in Defence
03/10/2026
Frontier AI assistants are marketed as security multipliers. Some of that is real. Here's where they genuinely help a defender today, how to choose between them, and the guardrails that keep your defender from becoming your incident.
When the Pentester Is the Model: What the OpenAI and Hugging Face Breach Confirms
23/07/2026
A cyber-capability evaluation escaped its sandbox and breached a real company. It is not a new attack so much as a live proof of three things this blog keeps arguing: the lethal trifecta, machine identity, and ungoverned agents.
Threat-Modelling Your First MCP Server: STRIDE for the Agent Era
03/07/2026
MCP servers hand an AI agent real tools and real access. Here's how to run a classic STRIDE threat model over one before you wire it to anything that matters.
The Lethal Trifecta: Setting Secure AI Baselines for Organisations
01/09/2025
Simon Willison’s ‘lethal trifecta’ and how to turn it into an enterprise baseline.
Identity for people, machines, and agents
For IAM and platform owners whose user list now includes service accounts and AI.
Your Org Is Hiring Workers You Can't See: An Identity Playbook for AI Agents
14/08/2026
AI agents now open pull requests, answer tickets, and touch production data. And most orgs can't list them, let alone govern them. Here's a practical playbook: inventory, identity, least privilege, observation, and a kill switch.
Machine Identity Is the New Perimeter
17/06/2026
Human logins are well defended. The unguarded door now is the service account, the API key, and the AI agent. A baseline for treating non-human identities as first-class.
Governing AI Agents: When the User Isn't a Person Anymore
08/06/2026
Agentic AI breaks the assumption that every action traces back to a human. Here's a baseline for giving agents identity, scope, and accountability.
Threats, vulnerabilities, and triage
For defenders deciding what to patch, block, or worry about first.
Surviving the Flood: DDoS, Bots, and the Art of Telling Machines from Humans
26/10/2026
Most of the internet's traffic isn't people. Here's how denial-of-service actually works, how defenders sort bots from humans without punishing real users, and why AI agents are about to make the question much harder.
Stop Patching by CVSS Alone: A Three-Signal Triage Formula That Fits on a Sticky Note
26/09/2026
CVSS tells you how bad a vulnerability could be, EPSS tells you how likely exploitation is, and KEV tells you it's already happening. Used together, they turn the CVE firehose into a defensible patch queue.
CVE, CVSS, EPSS, KEV: The Vulnerability Alphabet, Finally Explained
20/08/2026
Four acronyms run the entire vulnerability world: one names the problem, one scores its severity, one predicts exploitation, one confirms it. Untangle them once and every security headline suddenly makes sense.
The Blog Watches the Watchers: Building a Threat-Intel Page With No Servers
26/07/2026
I wanted a live security-feeds page (CISA KEV, fresh CVEs, AI security research) on a static blog with no backend. Here's how it works, and why the hardest part was trusting nothing.
Paste Once, Lose Everything: What ClickLock Teaches About Trusting Your Own Terminal
21/07/2026
A new macOS stealer doesn't exploit a bug: it exploits a habit. ClickLock coerces victims into typing their own password by making the Mac unusable until they comply. Here's the anatomy, and why the scariest attacks need no exploit at all.
Regulation and compliance
For small teams facing MAS TRM, PCI DSS, and data-protection asks without a compliance department.
MAS TRM Without a Compliance Department: What the Guidelines Actually Ask of a Small Team
18/10/2026
Singapore's MAS Technology Risk Management guidelines read like they were written for banks with committees. Underneath the governance language is a checklist a ten-person team can genuinely run.
A DLP Baseline for Small Teams: Stopping Leaks Without a SOC
12/07/2026
Data-loss prevention is usually sold as enterprise tooling. Here's a pragmatic baseline a small team can actually run, built on classification, identity, and a few high-leverage controls.
PCI DSS 4.0, Part 2: How the 12 Requirements Ladder Up to 6 Goals
13/06/2026
A practitioner's map of PCI DSS 4.0: the 6 control objectives, the 12 requirements beneath them, and how to read the standard as a security model rather than a checklist.
Learning Log: PCI DSS 4.0 Fundamentals
07/09/2025
Notes from my deep dive into PCI DSS 4.0 fundamentals, with a plan for my next stage of study.
Building and shipping
Product and engineering notes from things I have built and run.
Secure by Default on Cloudflare Pages: Headers, WAF & Analytics Without a Server
09/08/2026
A static site has no backend to harden, but it still has a security posture. Here's the secure-by-default baseline I run on this blog: response headers, edge WAF, and privacy-friendly analytics.
I Made Claude Bet the World Cup (With Fake Money), and It Taught Better Risk Lessons Than Most Security Training
15/07/2026
Before the 2026 semifinals, I asked Claude for calibrated predictions and a stake-sizing plan. The AI's most rational recommendation? Barely bet at all. Here's what a football tournament teaches about probability, calibration, and the scams riding the hype.
Building Sakinah: An App for the Hardest Moment
08/06/2026
I built Sakinah to help Muslim families in Singapore through the hours after a death. The decisions I'm surest about weren't features: they were the things I chose not to build, hold, or collect.