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
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.
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
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
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
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
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
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 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
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
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

