Skip to content

All articles

Latest first
How I Stopped Getting Surprised by My Own Code

How I Stopped Getting Surprised by My Own Code

July 17, 2026 Software development

Explore first, document the plan, then build. This one shift stopped my code reviews from being full of surprises — and made every feature genuinely easier to trust.

Read article
Logging Is Infrastructure: What I Learned Wiring Pino Into a NestJS API

Logging Is Infrastructure: What I Learned Wiring Pino Into a NestJS API

July 15, 2026 Software development

Logging felt like a boring swap — console.log for pino. Instead it unlocked structured, traceable, secure production logs. Here's why AsyncLocalStorage, JSON, and request IDs change everything.

Read article
Event-Driven Queue Architecture in NestJS: A System Design Perspective

Event-Driven Queue Architecture in NestJS: A System Design Perspective

July 12, 2026 System design

Scalable NestJS backends live or die on how queue infrastructure is separated from domain logic. Here's the system design reasoning behind an event-driven BullMQ architecture that actually holds up.

Read article
LangGraph Subgraphs: What "Shared Channel Names" Actually Means

LangGraph Subgraphs: What "Shared Channel Names" Actually Means

June 24, 2026 How to

I was wiring up a LangGraph parent-subgraph today and couldn't figure out how data flows. Turns out it's simpler than the docs make it sound — matching key names is all it takes.

Read article
Field-Level Encryption With Searchable Blind Indexes: A Practical SOC2 Control Worth Understanding

Field-Level Encryption With Searchable Blind Indexes: A Practical SOC2 Control Worth Understanding

June 16, 2026 System design

Most security controls protect the perimeter. Field-level encryption protects the data itself. Using CipherSweet's blind index approach, you can encrypt sensitive columns at the application layer and...

Read article
Human Adoption Is a Design Requirement, Not a Post-Deployment Fix

Human Adoption Is a Design Requirement, Not a Post-Deployment Fix

June 5, 2026 System design

Most digital transformations don't fail at the architecture layer. They fail because the system never matched how people actually work. I've seen floor supervisors maintain secret Excel processes for...

Read article
Your Codebase Has Three Readers Now — and One of Them Is an AI Agent

Your Codebase Has Three Readers Now — and One of Them Is an AI Agent

May 9, 2026 Software development

AI agents are reading your codebase. The question is whether it's written for them.

Read article
Killed One Service and Nothing Should Break

Killed One Service and Nothing Should Break

May 7, 2026 System design

Speed is only an asset if your engineering culture can keep up. Learn why AI isn't DRY by default and how to manage the "junior developer" context gap before your technical debt spirals.

Read article
A/B Routing With Nginx: No Third-Party Tools Required

A/B Routing With Nginx: No Third-Party Tools Required

April 28, 2026 Software development

Nginx can handle A/B routing natively — no LaunchDarkly, no Optimizely, no SDK. Three directives and a cookie. Here's how it works.

Read article

Need help with system design or architecture?

I work with engineering teams on technical audits, architecture reviews, and scaling strategy. Let's discuss your challenges.

Let's talk