Skip to main content

Writing

Blog

Notes on architecture, data modelling, caching, security and the engineering practice that keeps systems maintainable.

Abstract diagram of write paths converging on a single cache invalidation point
Redis and Performance7 min read

Cache Invalidation Is a Write-Path Problem

Most stale-cache bugs are not caching bugs. They are write paths that forgot they had readers. Here is how to make invalidation structural instead of remembered.

Read the article

6 articles

Redis and Performance7 min read

Cache Invalidation Is a Write-Path Problem

Most stale-cache bugs are not caching bugs. They are write paths that forgot they had readers. Here is how to make invalidation structural instead of remembered.

  • Architecture
  • Caching
  • Performance
PostgreSQL8 min read

Put Your Invariants in the Database

Application-layer validation protects the request path you thought of. Database constraints protect every path, including the import script written at 2am eighteen months from now.

  • Data Modelling
  • PostgreSQL
  • Migrations
Software Architecture9 min read

Designing REST Contracts That Survive Change

A versioned base path is not a versioning strategy. What actually determines whether an API can evolve is the shape of its responses and the discipline of never widening a promise you cannot keep.

  • Architecture
  • Spring Boot
Angular8 min read

Standalone Angular Without the Rewrite

Standalone components removed a layer of ceremony from Angular. They also removed the structure that was holding some codebases together. Here is what to keep.

  • Angular
  • Performance
Enterprise Modernization9 min read

Modernising a System You Cannot Switch Off

Institutional platforms do not get rewrite windows. The constraint is not technical difficulty — it is that the system must keep working every single day while you change it underneath.

  • Architecture
  • Migrations
  • Leadership
Spring Boot10 min read

Securing a Spring Boot Admin API

Hiding a button is not authorization. A walk through the controls that actually protect an admin API: stateless JWT, method-level roles, rate limiting and the mistakes that survive code review.

  • Security
  • Spring Boot
6 articles found.