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.

EmpRoster v1: Lessons Learned

23/08/2025

What worked, what broke, and what I’d change before v2.