Skip to content

Where the depth lives

Notes from building backend systems: what I designed, what broke, and the reasoning I wish I had written down the first time.

Topics

Four threads I keep pulling on

Not tutorials. Working notes: what I tried, what it cost, and what I would tell myself before starting.

  • AI

    Agents, LLMs, RAG and AI architecture — what I build, test and break.

    6

  • System Design

    Distributed systems, databases, messaging, caching and scaling.

    5

  • Code & Snippets

    Working references from Java, Spring, PostgreSQL, Kafka, Redis and Kubernetes.

    2

  • Architecture Lab

    Full write-ups from problem to trade-offs, with the diagrams to match.

    1

Latest

Recent engineering notes

Newest first. Some are finished thoughts, others are still moving.

  1. AI, , 6 min read

    I built an AI agent that makes our church's Sunday slides

    Every week the same few volunteers spent two hours or more chasing sermon slides, copying Bible verses and fixing line breaks. So I built them an agent that does it on Thursday evening, for about seven cents, and still lets a person say no.

    • Agents
    • AI
    • Building
  2. AI, , 6 min read

    Designing an AI agent that can't misquote the Bible

    How the Sunday slides agent proves it never changed a verse, why Claude only gets to propose design changes, and how the design pass went from 50 cents to 8 cents a build.

    • Agents
    • AI architecture
    • Python
    • +1 more
  3. System design, , 9 min read

    Idempotent consumers, without the ceremony

    What actually happens when the same message arrives twice, and the smallest set of changes that makes a consumer safe to retry.

    • Messaging
    • Kafka
    • PostgreSQL
  4. Architecture Lab, , 16 min read

    Designing a URL shortener

    The classic interview system, built small and measured: where the reads go, what the cache is for, and the one decision that made everything else easy.

    • Caching
    • Redis
    • PostgreSQL
    • +1 more
  5. Article, , 6 min read

    Indexes I added, then removed

    Three index changes that looked obvious in review and cost more than they saved once real traffic arrived.

    • Databases
    • PostgreSQL
  6. Snippet, , 4 min read

    A Bloom filter in forty lines of Java

    The smallest useful implementation, the two parameters that matter, and how wrong the false-positive rate gets when you guess them.

    • Java
    • Data structures
  7. System design, , 8 min read

    Sharding vs partitioning

    Two words used interchangeably in meetings, and the operational difference that makes them not the same thing at all.

    • Databases
    • Distributed systems
  8. System design, , 10 min read

    Redis caching: the invalidation I got wrong first

    Cache-aside looked simple until two writers raced. What I changed, and what I would measure before adding a cache next time.

    • Caching
    • Redis
  9. System design, , 11 min read

    RabbitMQ vs Kafka

    Not a benchmark. A comparison of the questions each one makes you answer: about ordering, replay, consumers and who owns the offset.

    • Messaging
    • Kafka
    • RabbitMQ
  10. Article, , 12 min read

    Java concurrency, the parts I keep relearning

    Executors, CompletableFuture and virtual threads — written down so I stop rediscovering the same three pitfalls.

    • Java
    • Concurrency

Next

Have a system worth arguing about?

I am always up for a conversation about architecture, trade-offs, or a bug that refuses to die.

Start a conversation