Blog
Systems architecture
Not tutorials: design decisions, their trade-offs, and what I learned applying them in production.
Diagram
Anatomy of this site: Astro, S3 and CloudFront for next to nothingThe full diagram of a static site on AWS: what each piece does, what was ruled out and what it costs.
· 6 min
Opinion
Backend in the age of AI agentsIf your clients become agents, your APIs are your product. What changes in design, limits and observability.
· 5 min
Diagram
Anatomy of a serverless SaaS on AWSThe architecture of Build the Drop: bulk syncing between marketplaces with functions, queues and a small budget.
· 6 min
Opinion
Technical debt is a product decisionCutting technical debt by 80% wasn't a technical project: it was a conversation about priorities.
· 5 min
Diagram
Designing a payment system that never charges twiceIdempotency, states and reconciliation: the diagram of a checkout flow with several providers.
· 6 min
Case study
Real-time stock across e-commerce, ERP and physical storesAnonymised case study: syncing inventory across three systems that never agreed on who was in charge.
· 5 min
Decisions & trade-offs
Modular monolith before microservicesMicroservices solve organisational problems, not code problems. When to split a system and when not to.
· 5 min
Case study
Cutting response time by 90% without rewriting the serviceAnonymised case study: finding the bottleneck on a platform serving more than 2M requests a month.
· 5 min
Decisions & trade-offs
Readstore vs synchronous calls between servicesWhen keeping a local copy of another service's data pays off, and what it costs in consistency.
· 5 min
Coming up
What I’m writing, in the order it will come out.
Diagram
Layered caching: browser, CDN, Redis and database
Each cache layer solves a different problem and adds a new way to serve stale data. The full map.
Decisions & trade-offs
Queues, retries and dead letter queues
When to retry, when to give up, and what to do with messages that will never work.
Case study
Goodbye AWS keys in GitHub Actions: OIDC
A real case on this very site: replacing the pipeline's access keys with short-lived OIDC credentials.
Opinion
Observability for small teams
You don't need a full observability platform. You need to know three things before your users do.
Decisions & trade-offs
Multi-tenancy in a small SaaS
Shared database, schema per customer or isolated account: what to pick when you're a single developer.
Opinion
What graphic design taught me about architecture
I started out designing posters and websites. Hierarchy, white space and constraints: what I carried from design to backend.