Skip to content
Blog & Insights

Thoughts onengineering & code.

Deep dives into backend architecture, system design patterns, and the tools I use to build scalable, production-grade software.

10 posts

  • Claude Code
  • AI
  • Developer Tools
8 min read

How I Actually Use Claude Code as a Backend Engineer

CLAUDE.md, plan mode, subagents, hooks and skills. The Claude Code setup and habits that turned an AI coding tool from a clever autocomplete into a collaborator I trust with real changes.

  1. 7 min read

    Clean Code Without the Dogma

    Clean code isn't about tiny functions or zero comments. It's about making the next change cheap. The habits I actually keep from the clean code canon, and the ones I quietly dropped.

    • Clean Code
    • Best Practices
    • Software Engineering
  2. 8 min read

    Hexagonal Architecture in Go, Without the Ceremony

    Ports and adapters keep business logic independent of databases and frameworks. Here's a practical, idiomatic way to apply it in Go: small interfaces, defined where they're used, and no enterprise folder maze.

    • Architecture
    • Go
    • Design Patterns
  3. 7 min read

    Idempotency Keys and the Transactional Outbox

    Networks retry, clients double-click and message brokers redeliver. Two patterns, idempotency keys and the transactional outbox, make a system behave correctly anyway.

    • System Design
    • Architecture
    • PostgreSQL
  4. 8 min read

    Designing a Rate Limiter: From One Server to a Fleet

    Fixed windows, sliding windows and token buckets, then taking the design from one process to many with Redis and a Lua script. A practical look at one of the most common system design questions.

    • System Design
    • Go
    • Redis
  5. 6 min read

    Bounded Concurrency in Go: Worker Pools, Semaphores and errgroup

    Spawning a goroutine per item is easy until you have 50,000 items and a database that allows 100 connections. Three ways to cap concurrency in Go, and how I choose between them.

    • Go
    • Concurrency
    • Performance
  6. 7 min read

    Error Handling in Go: What Actually Works in Production

    Wrapping, errors.Is, errors.As, sentinel errors, custom types and errors.Join. A practical guide to Go errors that stay useful from the database layer all the way to the HTTP response.

    • Go
    • Backend
    • Best Practices
  7. 7 min read

    Go's context Package, Done Right

    Cancellation, deadlines and request-scoped values in Go look simple until a goroutine leaks in production. Here's how I use context.Context without shooting myself in the foot.

    • Go
    • Backend
    • Concurrency
  8. 3 min read

    Building Scalable Microservices: Lessons from Production

    Real-world patterns and pitfalls I've encountered while architecting distributed systems that handle millions of requests daily.

    • Architecture
    • Microservices
    • Go
  9. 4 min read

    Why Go Is My Go-To for Backend Development

    From goroutines to the standard library — exploring why Go has become my preferred language for building production backend systems.

    • Go
    • Backend
    • Performance