Blog
Thoughts on backend architecture, cloud infrastructure, and engineering leadership.
Architecting AI Applications for Production
A threat-model-first walkthrough of shipping LLM-backed features — prompt injection defenses, multi-provider failover, structured output, cost control, and the concurrency traps that melt AI services in production.
Zero Trust Security for Microservices
Service-mesh zero trust, in practice: SPIFFE identities, mTLS by default, Istio and Linkerd policy at the sidecar, network policies underneath, and the places where you still need app-level authorization.
Real-Time Data Pipelines with TypeScript and Kafka
How I build type-safe, event-driven data pipelines using TypeScript and KafkaJS -- from schema validation to dead letter queues to exactly-once processing.
Optimizing Go for High-Throughput Systems
Memory management, concurrency patterns, and profiling techniques that took my Go services from adequate to high-performance. Practical optimization, not premature optimization.
Resilient Microservices in Go
Circuit breakers, bulkheads, retries, timeouts, and degradation — the fault-tolerance patterns that keep distributed Go systems alive when dependencies fail.
Authentication Patterns for Distributed Systems
A threat-model-first walkthrough of JWT, OAuth2/OIDC, refresh rotation, and zero trust auth for Go services — with the mistakes that actually burn people in production.
Custom Kubernetes Controllers in Go
Building Go controllers with controller-runtime to automate cluster operations — reconcile semantics, CRDs, watches, and the failure modes that actually burn production clusters.
High-Performance ETL Pipelines in Go
A failure-model-first walkthrough of streaming ETL in Go — bounded concurrency, backpressure, context cancellation, poison records, and the mistakes that blow up memory under real load.
Authorization Patterns for Go Microservices
Authorization in a service mesh — RBAC, ABAC, policy engines, SPIFFE service identity, and deny-by-default patterns for Go microservices without the panics and silent bypasses.
Migrating Monoliths to Microservices with Go
An opinionated migration framework for strangling a Go monolith — threat model, dependency analysis, strangler-fig routing, database-per-service, and when not to migrate at all.
AI-Assisted Backend Development with Go and TypeScript
An honest assessment of AI coding assistants for Go and TypeScript backend work — where they save real time, where they fall short, and how to integrate them without losing your edge.
TypeScript at Scale
Managing large TypeScript codebases without drowning in complexity — modular architecture, state management, and type system patterns that actually work.