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.

    3

  • 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. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. AI, , 5 min read

    Why I am learning AI agents

    Less about the hype, more about a specific kind of repetitive work I would like a program to take off my hands.

    • Agents
  10. AI, , 7 min read

    Vibe coding lessons

    A month of letting an assistant write most of the first draft: where it saved hours, and where it cost me a weekend.

    • AI-assisted development
  11. Snippet, , 2 min read

    Retry with jitter

    • Java
    • Resilience

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